Upload files to "subfiles"
This commit is contained in:
parent
37f33f49ca
commit
cc433a5bbf
150
subfiles/comunic.py
Normal file
150
subfiles/comunic.py
Normal file
@ -0,0 +1,150 @@
|
||||
#communication stuff here
|
||||
|
||||
import requests
|
||||
import json
|
||||
from hashlib import sha256
|
||||
from . import helpers, savetools
|
||||
from websockets.sync.client import connect
|
||||
from subprocess import Popen, PIPE
|
||||
from sys import platform
|
||||
from os import listdir
|
||||
from os.path import isfile, join, exists
|
||||
from pathlib import Path
|
||||
import subprocess
|
||||
|
||||
|
||||
|
||||
def downloadLatestDll(self, filepath):
|
||||
x = requests.get('https://openwf.io/supplementals/client%20drop-in/meta')
|
||||
meta = json.loads(x.text)
|
||||
url = f"https://openwf.io/supplementals/client%20drop-in/{meta['version']}/dwmapi.dll"#
|
||||
content = requests.get(url, stream=True).content
|
||||
hashofdll = sha256()
|
||||
hashofdll.update(content)#
|
||||
if hashofdll.hexdigest() == meta['sha256']:
|
||||
with open(filepath + "dwmapi.dll", "wb") as out_file:
|
||||
out_file.write(content)
|
||||
helpers.messageBox(self=self,title="Bootstrapper Downloaded", message="Bootstrapper Downloaded!", type="info")
|
||||
else:
|
||||
helpers.messageBox(self=self,title="Unknown Error.", message="SpaceninGUI could not verify the hash of the Bootstrapper. Sorry :(", type="error")#
|
||||
|
||||
def getLatestVersions(self, cacheFile, value):
|
||||
ver = {
|
||||
"server" : (
|
||||
"no lol" #not finished update check for server, check back later :3
|
||||
),
|
||||
"client" : ""
|
||||
}
|
||||
#client code here
|
||||
x = requests.get('https://openwf.io/supplementals/client%20drop-in/meta')
|
||||
meta = json.loads(x.text)
|
||||
ver["client"] = meta['version']
|
||||
|
||||
try:
|
||||
oldVer = savetools.loadFile(self, cacheFile)["client"]
|
||||
except:
|
||||
with open('tempFile.json', 'w') as f:
|
||||
json.dump({
|
||||
"client":'notassigned',
|
||||
'server':'notassigned'
|
||||
},f,indent=2)
|
||||
|
||||
oldVer = savetools.loadFile(self, cacheFile)["client"]
|
||||
if oldVer == ver["client"]:
|
||||
client="Up To Date!"
|
||||
else:
|
||||
client="New Version " + ver["client"]
|
||||
server = "server Check Not Implemented"
|
||||
value[0].set("Latest Server Version: " + server)
|
||||
value[1].set("Latest Client Version: " + client)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def serverBackground(self, cd, logArea): # To my knowledge, running the server in the main thread would stall the gui, fuck that lol
|
||||
logmax = helpers.getLogMax()
|
||||
logarr=[]
|
||||
def mongo():
|
||||
sysctl = Popen(['systemctl', 'start', 'mongodb'])
|
||||
sysctl.wait()#
|
||||
def execute(cd):
|
||||
popen = Popen(['npm', 'run', 'dev'], stdin=PIPE, stdout=PIPE, universal_newlines=True, cwd=cd)
|
||||
for stdout_line in iter(popen.stdout.readline, ""):
|
||||
yield stdout_line
|
||||
popen.stdout.close()
|
||||
return_code = popen.wait()
|
||||
if return_code:
|
||||
raise subprocess.CalledProcessError(return_code)#
|
||||
if platform == "linux":
|
||||
helpers.messageBox(self, title="MongoDB", message="The mongodb server is required to start SNS\nYou will need to give sudo permission for this.", type="info")
|
||||
mongo()
|
||||
|
||||
for path in execute(cd):
|
||||
if len(logarr) < logmax:
|
||||
logarr.append(path)
|
||||
else:
|
||||
logarr.pop(0)
|
||||
logarr.append(path)
|
||||
if logArea:
|
||||
logArea.configure(state="normal")
|
||||
logArea.delete(1.0, "end")
|
||||
for element in logarr:
|
||||
pass
|
||||
logArea.configure(state="disabled")
|
||||
|
||||
def getClientResponse():
|
||||
try:
|
||||
with connect("ws://localhost:61558") as websocket:
|
||||
message = json.loads(websocket.recv())
|
||||
except:
|
||||
message=False
|
||||
return message
|
||||
|
||||
def checkForClient(clientpath):
|
||||
onlyfiles = [f for f in listdir(clientpath) if isfile(join(clientpath, f))]
|
||||
if "dwmapi.dll" in onlyfiles:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def runPluto(name, plutolist, conffile):
|
||||
openwfpath = helpers.getclientpath(conffile) + "/OpenWF/scripts/"
|
||||
onlyfiles = [f for f in listdir(openwfpath) if isfile(join(openwfpath, f))]
|
||||
if helpers.getclientresponse():
|
||||
running = []
|
||||
print(helpers.getclientresponse()["running_scripts"])
|
||||
if name in running:
|
||||
requests.get(url=("http://localhost:61558/stop_script?OpenWF/scripts/" + name))
|
||||
else:
|
||||
requests.get(url=("http://localhost:61558/start_script?OpenWF/scripts/" + name))
|
||||
|
||||
for script in helpers.getclientresponse()["running_scripts"]:
|
||||
running.append(script.removeprefix("OpenWF/scripts/"))#
|
||||
for file in onlyfiles:
|
||||
if file in running:
|
||||
if plutolist[file]: plutolist[file].set("Running")
|
||||
else:
|
||||
if plutolist[file]: plutolist[file].set("Not Running")
|
||||
|
||||
def getSnPath(file):
|
||||
if Path(file).is_file():
|
||||
with open(file) as f:
|
||||
d = json.load(f)
|
||||
return d["spaceninjapath"]
|
||||
else:
|
||||
return False
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
77
subfiles/helpers.py
Normal file
77
subfiles/helpers.py
Normal file
@ -0,0 +1,77 @@
|
||||
from CTkMessagebox import CTkMessagebox
|
||||
import threading
|
||||
from .savetools import loadFile
|
||||
|
||||
try:
|
||||
from os import startfile
|
||||
except:
|
||||
from os import system
|
||||
from sys import platform
|
||||
|
||||
def check():
|
||||
print("Save Good")
|
||||
|
||||
def removeChildren(frame):
|
||||
for element in frame.winfo_children():
|
||||
element.destroy()
|
||||
|
||||
def bgThread(func, args):
|
||||
th = threading.Thread(target=func, args=args)
|
||||
th.daemon = True
|
||||
th.start()
|
||||
|
||||
def openLocation(self, location):
|
||||
if platform == "linux":
|
||||
system('xdg-open "%s"' % location)
|
||||
elif platform == "windows":
|
||||
startfile(foldername)
|
||||
|
||||
|
||||
def messageBox(self, title, message, type): #type will be implemented at a later point when required
|
||||
CTkMessagebox(title=title, message=message)
|
||||
|
||||
def getLogMax(self, save):
|
||||
return loadFile(self, save)['maxlogsize'] #not entirely sure why I made this a seperate function but eh
|
||||
|
||||
def isNumber(data):
|
||||
if data == '':
|
||||
return True
|
||||
try:
|
||||
rv = int(data)
|
||||
except ValueError:
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
#Old Helper options, left here for future reference. Shitty code, but it works, and it may be useful in the future
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# def getlogmax():
|
||||
# file = 'sngconfig.json'
|
||||
# if Path(file).is_file():
|
||||
# with open(file) as f:
|
||||
# d = json.load(f)
|
||||
#
|
||||
# else:
|
||||
# return False
|
||||
|
||||
|
||||
|
||||
# def check4sn(configfile):
|
||||
# file = helpers.getsnpath(configfile) + "package.json"
|
||||
# if Path(file).is_file():
|
||||
# with open(file) as f:
|
||||
# d = json.load(f)
|
||||
# if (d["name"] == "wf-emulator"):
|
||||
# return True
|
||||
# else:
|
||||
# return False#
|
||||
|
||||
|
23
subfiles/install.py
Normal file
23
subfiles/install.py
Normal file
@ -0,0 +1,23 @@
|
||||
def check():
|
||||
print("install Good")
|
||||
|
||||
|
||||
def installFiles(self, clientpath, serverpath):
|
||||
#first install server
|
||||
self.installstep.set("Downloading Server Through Git")
|
||||
sysctl = Popen(['git', 'clone', 'https://openwf.io/SpaceNinjaServer.git', serverpath])
|
||||
self.installprog.set(1)
|
||||
sysctl.wait()
|
||||
self.installstep.set("Installing Server Requirements (via npm)")
|
||||
self.installprog.set(25)
|
||||
sysctl = Popen(["npm", '--prefix', f'{serverpath}', 'install'])
|
||||
sysctl.wait()
|
||||
self.installstep.set("Copying Config File")
|
||||
shutil.copy(serverpath + "/config.json.example", serverpath + "/config.json")
|
||||
self.installstep.set("Starting Bootstrapper Download")
|
||||
self.installprog.set(50)
|
||||
print("Server install worked. ")
|
||||
helpers.downloadlatestdll(clientpath)
|
||||
self.installprog.set(99)
|
||||
self.installstep.set("Install Complete!\nPress next then restart to get started!")
|
||||
|
22
subfiles/savetools.py
Normal file
22
subfiles/savetools.py
Normal file
@ -0,0 +1,22 @@
|
||||
import json
|
||||
|
||||
def check():
|
||||
print("Save Check Good")
|
||||
|
||||
# Yea I know this is pretty pointless in a seperate file but it's nice to have these things
|
||||
def loadFile(self, file1):
|
||||
with open(file1, "r") as file:
|
||||
|
||||
data = json.load(file)
|
||||
return data
|
||||
|
||||
#Data should be recived in [[data, position], [data, position]] format
|
||||
def saveFile(self, fileP, data):
|
||||
with open(fileP, 'r') as file:
|
||||
data = json.load(file)
|
||||
for subData in data:
|
||||
data[subData[1]] = subData[0]
|
||||
with open(fileP, 'w'):
|
||||
json.dump(file, indent=2)
|
||||
|
||||
|
12
subfiles/themes.py
Normal file
12
subfiles/themes.py
Normal file
@ -0,0 +1,12 @@
|
||||
def getThemes(self):
|
||||
themes = {
|
||||
"black_orange" : {
|
||||
"fg_color" : "#000000",
|
||||
"bg_color" : "#14213D",
|
||||
"bg_deep" : "#121e37",
|
||||
"border_color" : "#14213D",
|
||||
"highlight_color" : '#FCA311',
|
||||
"text_color" : ""
|
||||
}
|
||||
}
|
||||
return themes
|
Loading…
x
Reference in New Issue
Block a user