Updated frontend build & tests
This commit is contained in:
@@ -14,10 +14,10 @@ class BearerSession():
|
||||
def get(self, endpoint, json={}):
|
||||
return self.s.get(endpoint, json=json, headers=self.headers)
|
||||
|
||||
def setToken(self,token):
|
||||
def set_token(self,token):
|
||||
self.headers = {"Authorization": f"Bearer {token}"}
|
||||
|
||||
def unsetToken(self):
|
||||
def unset_token(self):
|
||||
self.headers = {}
|
||||
|
||||
class FiregexAPI:
|
||||
@@ -27,42 +27,32 @@ class FiregexAPI:
|
||||
|
||||
def login(self,password):
|
||||
req = self.s.post(f"{self.address}api/login", data=f"username=login&password={password}")
|
||||
print(req.text)
|
||||
try :
|
||||
self.s.setToken(req.json()["access_token"])
|
||||
self.s.set_token(req.json()["access_token"])
|
||||
return True
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
def logout(self):
|
||||
self.s.unsetToken()
|
||||
self.s.unset_token()
|
||||
return True
|
||||
|
||||
def change_password(self,password,expire):
|
||||
req = self.s.post(f"{self.address}api/change-password", json={"password":password, "expire":expire})
|
||||
try:
|
||||
self.s.setToken(req.json()["access_token"])
|
||||
self.s.set_token(req.json()["access_token"])
|
||||
return True
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
def create_service(self,service_name,service_port):
|
||||
req = self.s.post(f"{self.address}api/services/add" , json={"name":service_name,"port":service_port})
|
||||
return req.json()["status"] == "ok"
|
||||
def create_service(self,service_name,service_port, ipv6 = False):
|
||||
req = self.s.post(f"{self.address}api/services/add" , json={"name":service_name,"port":service_port, "ipv6": ipv6})
|
||||
return req.json()["service_id"] if req.json()["status"] == "ok" else None
|
||||
|
||||
def get_service_details(self,service_name):
|
||||
req = self.s.get(f"{self.address}api/services")
|
||||
service = None
|
||||
try:
|
||||
for service in req.json():
|
||||
if service["name"] == service_name:
|
||||
return service
|
||||
except Exception:
|
||||
pass
|
||||
return service
|
||||
|
||||
def get_service_status(self,service_id):
|
||||
def get_service(self,service_id):
|
||||
req = self.s.get(f"{self.address}api/service/{service_id}")
|
||||
return req.json()["status"]
|
||||
return req.json()
|
||||
|
||||
def get_service_regexes(self,service_id):
|
||||
req = self.s.get(f"{self.address}api/service/{service_id}/regexes")
|
||||
|
||||
@@ -50,7 +50,8 @@ else: puts(f"Test Failed: Coundl't change the password ✗", color=colors.red);
|
||||
|
||||
|
||||
#Create new Service
|
||||
if (firegex.create_service(args.service_name,args.service_port)):
|
||||
service = firegex.create_service(args.service_name,args.service_port)
|
||||
if service:
|
||||
puts(f"Sucessfully created service {args.service_name} with public port {args.service_port} ✔", color=colors.green)
|
||||
service_created = True
|
||||
else: puts(f"Test Failed: Couldn't create service ✗", color=colors.red); exit(1)
|
||||
@@ -58,22 +59,14 @@ else: puts(f"Test Failed: Couldn't create service ✗", color=colors.red); exit(
|
||||
#Delete the Service and exit
|
||||
def exit_test(status_code=0):
|
||||
if service_created:
|
||||
if(firegex.delete(service_id)):
|
||||
puts(f"Sucessfully delete service with id {service_id} ✔", color=colors.green)
|
||||
if(firegex.delete(service)):
|
||||
puts(f"Sucessfully delete service with id {service} ✔", color=colors.green)
|
||||
else:
|
||||
puts(f"Test Failed: Couldn't delete service ✗", color=colors.red); exit(1)
|
||||
sep()
|
||||
server.terminate()
|
||||
exit(status_code)
|
||||
|
||||
#Find the Service
|
||||
service = firegex.get_service_details(args.service_name)
|
||||
if (service):
|
||||
internal_port= service["internal_port"]
|
||||
service_id = service["id"]
|
||||
puts(f"Sucessfully received the internal port {internal_port} ✔", color=colors.green)
|
||||
else: puts(f"Test Failed: Coulnd't get the service internal port ✗", color=colors.red); exit_test(1)
|
||||
|
||||
#Start listener
|
||||
def startServer(port):
|
||||
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
@@ -86,11 +79,11 @@ def startServer(port):
|
||||
connection.send(buf)
|
||||
connection.close()
|
||||
|
||||
server = Process(target=startServer,args=[internal_port])
|
||||
server = Process(target=startServer,args=[args.service_port])
|
||||
server.start()
|
||||
|
||||
#Start firewall
|
||||
if(firegex.start(service_id)): puts(f"Sucessfully started service with id {service_id} ✔", color=colors.green)
|
||||
if(firegex.start(service)): puts(f"Sucessfully started service with id {service} ✔", color=colors.green)
|
||||
else: puts(f"Test Failed: Coulnd't start the service ✗", color=colors.red); exit_test(1)
|
||||
|
||||
#Hacky solution - wait a bit for the server to start
|
||||
@@ -113,7 +106,7 @@ else:
|
||||
#Add new regex
|
||||
secret = bytes(secrets.token_hex(16).encode())
|
||||
regex = base64.b64encode(secret).decode()
|
||||
if(firegex.add_regex(service_id,regex)): puts(f"Sucessfully added regex {secret} ✔", color=colors.green)
|
||||
if(firegex.add_regex(service,regex)): puts(f"Sucessfully added regex {secret} ✔", color=colors.green)
|
||||
else: puts(f"Test Failed: Coulnd't add the regex {secret} ✗", color=colors.red); exit_test(1)
|
||||
|
||||
#Check if regex is present in the service
|
||||
@@ -121,7 +114,7 @@ n_blocked = 0
|
||||
|
||||
def checkRegex(regex):
|
||||
global n_blocked
|
||||
for r in firegex.get_service_regexes(service_id):
|
||||
for r in firegex.get_service_regexes(service):
|
||||
if r["regex"] == regex:
|
||||
#Test the regex
|
||||
if not sendCheckData(secrets.token_bytes(200) + secret + secrets.token_bytes(200)):
|
||||
@@ -139,7 +132,7 @@ def checkRegex(regex):
|
||||
checkRegex(regex)
|
||||
|
||||
#Pause the proxy
|
||||
if(firegex.pause(service_id)): puts(f"Sucessfully paused service with id {service_id} ✔", color=colors.green)
|
||||
if(firegex.pause(service)): puts(f"Sucessfully paused service with id {service} ✔", color=colors.green)
|
||||
else: puts(f"Test Failed: Coulnd't pause the service ✗", color=colors.red); exit_test(1)
|
||||
|
||||
#Check if it's actually paused
|
||||
@@ -148,7 +141,7 @@ if sendCheckData(secrets.token_bytes(200) + secret + secrets.token_bytes(200)):
|
||||
else:
|
||||
puts(f"Test Failed: The request was blocked when it shouldn't have", color=colors.red)
|
||||
#Stop the proxy
|
||||
if(firegex.stop(service_id)): puts(f"Sucessfully stopped service with id {service_id} ✔", color=colors.green)
|
||||
if(firegex.stop(service)): puts(f"Sucessfully stopped service with id {service} ✔", color=colors.green)
|
||||
else: puts(f"Test Failed: Coulnd't stop the service ✗", color=colors.red); exit_test(1)
|
||||
|
||||
#Check if proxy is stopped and check if WAIT works
|
||||
@@ -169,9 +162,9 @@ bindingTest.start()
|
||||
sleep(1)
|
||||
|
||||
#Restart it
|
||||
if(firegex.pause(service_id)): puts(f"Sucessfully started in pause mode ✔", color=colors.green)
|
||||
if(firegex.pause(service)): puts(f"Sucessfully started in pause mode ✔", color=colors.green)
|
||||
else: puts(f"Test Failed: Coulnd't start the service ✗", color=colors.red); exit_test(1)
|
||||
if firegex.get_service_details(args.service_name)["status"] == "wait":
|
||||
if firegex.get_service(service)["status"] == "wait":
|
||||
puts(f"Service started in WAIT mode ✔", color=colors.green)
|
||||
else:
|
||||
puts(f"Service started but it's not WAIT mode ✗", color=colors.red); exit_test(1)
|
||||
@@ -179,7 +172,7 @@ else:
|
||||
bindingTest.join()
|
||||
sleep(1)
|
||||
#Check if service started in pause mode successfully
|
||||
if firegex.get_service_details(args.service_name)["status"] == "pause":
|
||||
if firegex.get_service(service)["status"] == "pause":
|
||||
puts(f"Service started in PAUSE mode ✔", color=colors.green)
|
||||
else:
|
||||
puts(f"Service is not in PAUSE mode ✗", color=colors.red); exit_test(1)
|
||||
@@ -190,14 +183,14 @@ else:
|
||||
puts(f"Test Failed: The request was blocked when it shouldn't have", color=colors.red)
|
||||
|
||||
#Restart it and check
|
||||
if(firegex.start(service_id)): puts(f"Sucessfully started service with id {service_id} ✔", color=colors.green)
|
||||
if(firegex.start(service)): puts(f"Sucessfully started service with id {service} ✔", color=colors.green)
|
||||
else: puts(f"Test Failed: Coulnd't start the service ✗", color=colors.red); exit_test(1)
|
||||
|
||||
checkRegex(regex)
|
||||
|
||||
#Delete the regex
|
||||
def removeRegex(regex):
|
||||
for r in firegex.get_service_regexes(service_id):
|
||||
for r in firegex.get_service_regexes(service):
|
||||
if r["regex"] == regex:
|
||||
if(firegex.delete_regex(r["id"])): puts(f"Sucessfully deleted regex ✔", color=colors.green)
|
||||
else: puts(f"Test Failed: Coulnd't deleted the regex ✗", color=colors.red); exit_test(1)
|
||||
|
||||
Reference in New Issue
Block a user