better management of registration with BunkerNet and fix syntax error in LinuxTest

This commit is contained in:
bunkerity 2022-08-10 12:19:03 +02:00
parent 3762c38741
commit 093d426bc9
No known key found for this signature in database
GPG Key ID: 3D80806F12602A7C
4 changed files with 39 additions and 22 deletions

View File

@ -32,6 +32,7 @@ try :
os.makedirs("/opt/bunkerweb/cache/bunkernet", exist_ok=True)
# Ask an ID if needed
bunkernet_id = None
if not os.path.isfile("/opt/bunkerweb/cache/bunkernet/instance.id") :
logger.log("BUNKERNET", "", "Registering instance on BunkerNet API ...")
ok, status, data = register()
@ -47,31 +48,47 @@ try :
elif data["result"] != "ok" :
logger.log("BUNKERNET", "", "Received error from BunkerNet API while sending register request : " + data["data"])
os._exit(1)
with open("/opt/bunkerweb/cache/bunkernet/instance.id", "w") as f :
f.write(data["data"])
bunkernet_id = data["data"]
logger.log("BUNKERNET", "", "Successfully registered on BunkerNet API with instance id " + get_id())
else :
with open("/opt/bunkerweb/cache/bunkernet/instance.id", "r") as f :
bunkernet_id = f.read()
logger.log("BUNKERNET", "", "Already registered on BunkerNet API with instance id " + get_id())
# Ping
logger.log("BUNKERNET", "", "Checking connectivity with BunkerNet API ...")
ok, status, data = ping()
if not ok :
logger.log("BUNKERNET", "", "Error while sending ping request to BunkerNet API : " + data)
os._exit(2)
elif status == 429 :
logger.log("BUNKERNET", "⚠️", "BunkerNet API is rate limiting us, trying again later...")
os._exit(0)
elif status == 401 :
logger.log("BUNKERNET", "⚠️", "Instance ID is not registered, removing it and retrying a register later...")
os.remove("/opt/bunkerweb/cache/bunkernet/instance.id")
os._exit(1)
elif data["result"] != "ok" :
logger.log("BUNKERNET", "", "Received error from BunkerNet API while sending ping request : " + data["data"] + ", removing instance ID")
os._exit(1)
logger.log("BUNKERNET", "", "Successfully checked connectivity with BunkerNet API")
bunkernet_ping = False
for i in range(0, 5) :
ok, status, data = ping(bunkernet_id)
retry = False
if not ok :
logger.log("BUNKERNET", "", "Error while sending ping request to BunkerNet API : " + data)
retry = True
elif status == 429 :
logger.log("BUNKERNET", "⚠️", "BunkerNet API is rate limiting us, trying again later...")
retry = True
elif status == 401 :
logger.log("BUNKERNET", "⚠️", "Instance ID is not registered, removing it and retrying a register later...")
os.remove("/opt/bunkerweb/cache/bunkernet/instance.id")
os._exit(2)
elif data["result"] != "ok" :
logger.log("BUNKERNET", "", "Received error from BunkerNet API while sending ping request : " + data["data"] + ", removing instance ID")
retry = True
if not retry :
bunkernet_ping = True
break
logger.log("BUNKERNET", "⚠️", "Waiting 1s and trying again ...")
os.sleep(1)
status = 1
if bunkernet_ping :
logger.log("BUNKERNET", "", "Connectivity with BunkerWeb is successful !")
status = 1
if not os.path.isfile("/opt/bunkerweb/cache/bunkernet/instance.id") :
with open("/opt/bunkerweb/cache/bunkernet/instance.id", "w") as f :
f.write(bunkernet_id)
else :
logger.log("BUNKERNET", "", "Connectivity with BunkerWeb failed ...")
status = 2
except :
status = 2

View File

@ -26,8 +26,8 @@ def request(method, url, _id=None) :
def register() :
return request("POST", "/register")
def ping() :
return request("GET", "/ping", _id=get_id())
def ping(_id=None) :
return request("GET", "/ping", _id=get_id() if _id is None else _id)
def data() :
return request("GET", "/db", _id=get_id())

View File

@ -34,7 +34,7 @@
{
"name": "bunkernet-data",
"file": "bunkernet-data.py",
"every": "hour",
"every": "day",
"reload": true
}
]

View File

@ -94,7 +94,7 @@ class LinuxTest(Test) :
proc = LinuxTest.docker_exec(self.__distro, "cd /opt/" + self._name + " && ./setup-linux.sh")
if proc.returncode != 0 :
raise(Exception("docker exec setup failed (test)"))
proc = LinuxTest.docker_exec(self.__distro, "cp /opt/" + self._name + "/variables.env /opt/bunkerweb") :
proc = LinuxTest.docker_exec(self.__distro, "cp /opt/" + self._name + "/variables.env /opt/bunkerweb")
if proc.returncode != 0 :
raise(Exception("docker exec cp variables.env failed (test)"))
proc = LinuxTest.docker_exec(self.__distro, "systemctl restart bunkerweb")