Skip to content

Commit

Permalink
Merge pull request #34 from alegarsan11/develop
Browse files Browse the repository at this point in the history
fix: save changes on deploy
  • Loading branch information
alegarsan11 committed May 28, 2024
2 parents bcc2b7a + eefa8f0 commit ad1ead1
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 12 deletions.
24 changes: 23 additions & 1 deletion nftables-frontend/api.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import os
import requests
import service

Expand Down Expand Up @@ -381,4 +382,25 @@ def delete_element_from_map_request(map_name, map_family, map_table, key, value)
if(response.json()[0] == 0):
return "Success"
else:
return "Error deleting element from map."
return "Error deleting element from map."

def reload_service():
response = requests.get('http://localhost:8000/service/reload_service')
if(response.json()["status"] == "success"):
return "Success"
else:
return "Error reloading service."

def save_service():
response = requests.get('http://localhost:8000/service/save_service')
if(response.json()["status"] == "success"):
return "Success"
else:
return "Error saving service."

def save_service_temp():
response = requests.get('http://localhost:8000/service/save_service_temp')
if(response.json()["status"] == "success"):
return "Success"
else:
return "Error saving service temp."
7 changes: 0 additions & 7 deletions nftables-frontend/service.py
Original file line number Diff line number Diff line change
Expand Up @@ -667,13 +667,6 @@ def check_set_or_map(name):
if _map:
return _map.type
return None

def save_changes_permanent():
os.system("sudo su")
os.system("sudo rm -f /etc/nftables.conf")
os.system("sudo nft list ruleset > /etc/nftables.conf")
os.system("sudo systemctl restart nftables")
delete_all_data_except_users()

def save_changes_on_file():
files = glob.glob("./temp_config/nftables_temp*.conf")
Expand Down
7 changes: 4 additions & 3 deletions nftables-frontend/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -618,10 +618,10 @@ def save_changes_post():
type_ = request.form.get('save')
if type_ != "" or type_ != None:
if type_ == 'config':
service.save_changes_permanent()
api.save_service()
flash('Changes saved successfully.')
elif type_ == 'file':
service.save_changes_on_file()
api.save_service_temp()
flash('Changes discarded successfully.')

return redirect('/')
Expand Down Expand Up @@ -663,7 +663,8 @@ def add_list_post():
@visualization_bp.route('/reload')
@login_required
def reload():
service.reload_service()
service.delete_all_data_except_users()
api.reload_service()
return redirect('/')

@visualization_bp.route('/rules/<rule_id>/edit_description')
Expand Down
3 changes: 2 additions & 1 deletion nftables-parser/main.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import hug
import tables, chains, rules, sets, maps
import tables, chains, rules, sets, maps, service

api = hug.API(__name__)
api.extend(tables, '/tables')
api.extend(chains, '/chains')
api.extend(rules, '/rules')
api.extend(sets, '/sets')
api.extend(maps, '/maps')
api.extend(service, '/service')
24 changes: 24 additions & 0 deletions nftables-parser/service.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import glob
import json
from nftables import Nftables
import sys, os
import hug

@hug.get('/reload_service')
def reload_service():
os.system("sudo systemctl restart nftables")
return {"status": "success"}

@hug.get('/save_service')
def save_service():
os.system("sudo rm -f /etc/nftables.conf")
os.system("sudo nft list ruleset > /etc/nftables.conf")
os.system("sudo systemctl restart nftables")
return {"status": "success"}

@hug.get('/save_service_temp')
def save_service_temp():
files = glob.glob("./temp_config/nftables_temp*.conf")
numbers = [int(f.replace("./temp_config/nftables_temp", "").replace(".conf", "")) for f in files]
highest_number = max(numbers) if numbers else 0
os.system(f"sudo nft list ruleset > ./temp_config/nftables_temp{highest_number + 1}.conf")

0 comments on commit ad1ead1

Please sign in to comment.