Skip to content
This repository has been archived by the owner on Nov 27, 2023. It is now read-only.

Commit

Permalink
Added check if Xauth token expired, generate new one.
Browse files Browse the repository at this point in the history
  • Loading branch information
ricky-davis committed Aug 13, 2020
1 parent 61a442f commit b79a27b
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 4 deletions.
2 changes: 1 addition & 1 deletion AstroLauncher.py
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ def __init__(self, astroPath, launcherINI="Launcher.ini", disable_auto_update=No
self.refresh_launcher_config()
if disable_auto_update is not None:
self.launcherConfig.DisableAutoUpdate = disable_auto_update
self.version = "v1.7.2"
self.version = "v1.7.3"
colsize = os.get_terminal_size().columns
if colsize >= 77:
vText = "Version " + self.version[1:]
Expand Down
29 changes: 26 additions & 3 deletions cogs/AstroDedicatedServer.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ def __init__(self, astroPath, launcher):
self.serverData = None
self.lastHeartbeat = None
self.LobbyID = None
self.lastXAuth = datetime.datetime.now()
self.serverGUID = self.settings.ServerGuid if self.settings.ServerGuid != '' else "REGISTER"
if self.launcher.launcherConfig.EnableAutoRestart:
self.syncRestartTime = self.launcher.launcherConfig.AutoRestartSyncTimestamp
Expand Down Expand Up @@ -361,15 +362,36 @@ def server_loop(self):
"Server was closed. Restarting..")
return self.launcher.start_server()

if self.lastXAuth is None or (datetime.datetime.now() - self.lastXAuth).total_seconds() > 3600:
self.launcher.headers['X-Authorization'] = AstroAPI.generate_XAUTH(
self.settings.ServerGuid)
self.lastXAuth = datetime.datetime.now()

if self.lastHeartbeat is None or (datetime.datetime.now() - self.lastHeartbeat).total_seconds() > 30:
hbServerName = {"customdata": {
"ServerName": self.settings.ServerName,
"ServerType": ("AstroLauncherEXE" if self.launcher.isExecutable else "AstroLauncherPy") + f" {self.launcher.version}",
"ServerPaks": self.pakList
}}
AstroAPI.heartbeat_server(
hbStatus = AstroAPI.heartbeat_server(
self.serverData, self.launcher.headers, {"serverName": json.dumps(hbServerName)})

hbTryCount = 0
while hbStatus['status'] == "Unauthorized":
hbTryCount += 1
self.launcher.headers['X-Authorization'] = AstroAPI.generate_XAUTH(
self.settings.ServerGuid)
self.lastXAuth = datetime.datetime.now()
hbStatus = AstroAPI.heartbeat_server(
self.serverData, self.launcher.headers, {"serverName": json.dumps(hbServerName)})
if hbTryCount > 3:
self.kill_server(
reason="Server was unable to heartbeat, restarting...",
save=True, killLauncher=False)
time.sleep(5)
return self.launcher.start_server()
time.sleep(5)

self.lastHeartbeat = datetime.datetime.now()

if self.launcher.webServer is not None:
Expand Down Expand Up @@ -448,7 +470,7 @@ def deregister_all_server(self):
return [x['LobbyID'] for x in servers_registered]
return []

def kill_server(self, reason, save=False):
def kill_server(self, reason, save=False, killLauncher=True):
AstroLogging.logPrint(f"Kill Server: {reason}")
try:
self.busy = "Kill"
Expand Down Expand Up @@ -480,6 +502,7 @@ def kill_server(self, reason, save=False):
pass
# Kill current process
try:
os.kill(os.getpid(), 9)
if killLauncher:
os.kill(os.getpid(), 9)
except:
pass

0 comments on commit b79a27b

Please sign in to comment.