mirror of
https://github.com/Astatin3/Polyboard.git
synced 2026-06-09 00:28:07 -06:00
"Finish" Working on backend
This commit is contained in:
+8
-6
@@ -26,12 +26,12 @@ export function authClient(rawClient) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.clidata = (data)=>{
|
this.clidata = (data)=>{
|
||||||
// const session = utils.getCookie('session')
|
const session = utils.getCookie('session')
|
||||||
// if(session != ''){
|
if(session != ''){
|
||||||
// this.rawClient.send('reauth', {
|
this.rawClient.send('reauth', {
|
||||||
// session: session
|
session: session
|
||||||
// })
|
})
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.loginSuccess = (data)=>{
|
this.loginSuccess = (data)=>{
|
||||||
@@ -45,7 +45,9 @@ export function authClient(rawClient) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.reauth = (data)=>{
|
this.reauth = (data)=>{
|
||||||
|
if(window.location.pathname == "/login"){
|
||||||
utils.popupSuccess('Connection', 'Successfully logged in!')
|
utils.popupSuccess('Connection', 'Successfully logged in!')
|
||||||
|
}
|
||||||
utils.iconauth()
|
utils.iconauth()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+21
-1
@@ -21,4 +21,24 @@ window.authClient = client
|
|||||||
window.authLogin = client.login
|
window.authLogin = client.login
|
||||||
window.sendAuth = client.send
|
window.sendAuth = client.send
|
||||||
window.sendRaw = rawClient.send
|
window.sendRaw = rawClient.send
|
||||||
window.addRawTypeListener = rawClient.addRawTypeListener
|
window.addListener = rawClient.addRawTypeListener
|
||||||
|
|
||||||
|
window.addListener('popupInfo', (data)=>{
|
||||||
|
window.utils.popupInfo(data.data.title, data.data.msg)
|
||||||
|
})
|
||||||
|
|
||||||
|
window.addListener('popupSuccess', (data)=>{
|
||||||
|
window.utils.popupSuccess(data.data.title, data.data.msg)
|
||||||
|
})
|
||||||
|
|
||||||
|
window.addListener('popupWarning', (data)=>{
|
||||||
|
window.utils.popupWarning(data.data.title, data.data.msg)
|
||||||
|
})
|
||||||
|
|
||||||
|
window.addListener('popupError', (data)=>{
|
||||||
|
window.utils.popupError(data.data.title, data.data.msg)
|
||||||
|
})
|
||||||
|
|
||||||
|
window.addListener('popupColor', (data)=>{
|
||||||
|
window.utils.addPopup(data.data.color, data.data.isDark, data.data.title, data.data.msg)
|
||||||
|
})
|
||||||
@@ -11,6 +11,7 @@ function getErrorDesc(error){
|
|||||||
case 'invalidLogin':
|
case 'invalidLogin':
|
||||||
return 'Invalid username or password'
|
return 'Invalid username or password'
|
||||||
case 'invalidLoginRequest':
|
case 'invalidLoginRequest':
|
||||||
|
utils.setCookie('session', '')
|
||||||
return 'Some part of the login request is invalid, please try again'
|
return 'Some part of the login request is invalid, please try again'
|
||||||
case 'prelogin':
|
case 'prelogin':
|
||||||
return 'You are already logged in'
|
return 'You are already logged in'
|
||||||
|
|||||||
@@ -202,6 +202,7 @@ li::marker {
|
|||||||
|
|
||||||
width: var(--popupBoxWidth);
|
width: var(--popupBoxWidth);
|
||||||
height: calc(100% - var(--topnavheight) - 10px);
|
height: calc(100% - var(--topnavheight) - 10px);
|
||||||
|
pointer-events:none;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
right: 20px;
|
right: 20px;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
@@ -224,6 +225,8 @@ li::marker {
|
|||||||
padding: 0;
|
padding: 0;
|
||||||
background-color: inherit;
|
background-color: inherit;
|
||||||
|
|
||||||
|
pointer-events:all;
|
||||||
|
|
||||||
left: 0;
|
left: 0;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
|
|||||||
+2
-1
@@ -64,7 +64,7 @@ export function iconauth() {
|
|||||||
|
|
||||||
// }
|
// }
|
||||||
|
|
||||||
function addPopup(bgcolor, isDark, title, content) {
|
export function addPopup(bgcolor, isDark, title, content) {
|
||||||
const elem = document.getElementById('popupBox')
|
const elem = document.getElementById('popupBox')
|
||||||
let header
|
let header
|
||||||
let textColor
|
let textColor
|
||||||
@@ -105,6 +105,7 @@ export function popupError(title, text){
|
|||||||
addPopup('#500000', true, title, text)
|
addPopup('#500000', true, title, text)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export function getUnixTime() {
|
export function getUnixTime() {
|
||||||
return (+ new Date())
|
return (+ new Date())
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ from sys import argv
|
|||||||
webserv = web.webserv()
|
webserv = web.webserv()
|
||||||
moduleMaster = modules.moduleMaster()
|
moduleMaster = modules.moduleMaster()
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
|
||||||
if not utils.pathExists('data'):
|
if not utils.pathExists('data'):
|
||||||
@@ -24,8 +25,9 @@ def main():
|
|||||||
if not utils.pathExists('data/selfsign.crt'):
|
if not utils.pathExists('data/selfsign.crt'):
|
||||||
utils.genCert(utils.getRoot('data/'))
|
utils.genCert(utils.getRoot('data/'))
|
||||||
|
|
||||||
|
moduleMaster.addModules(webserv)
|
||||||
|
webserv.init()
|
||||||
moduleMaster.initModules(webserv)
|
moduleMaster.initModules(webserv)
|
||||||
|
|
||||||
webserv.start()
|
webserv.start()
|
||||||
moduleMaster.runModules()
|
moduleMaster.runModules()
|
||||||
|
|
||||||
|
|||||||
+11
-7
@@ -1,10 +1,14 @@
|
|||||||
from modules.main import test as test
|
from modules.main import test as test
|
||||||
|
|
||||||
def test1(ac, data):
|
mm = None
|
||||||
print(ac)
|
|
||||||
print(data)
|
|
||||||
|
|
||||||
def main(mm):
|
def test1(ac, data):
|
||||||
# mm.addAuthEventListener('test1', test1)
|
mm.sendPopupColor(ac.rawClient, 'test!', 'test!', '#600060', True)
|
||||||
print(mm.rawServer.addEventListener('test1', test1))
|
|
||||||
#mm.rawServer.addEventListener('login', test1)
|
def init(moduleMaster):
|
||||||
|
global mm
|
||||||
|
mm = moduleMaster
|
||||||
|
mm.addAuthEventListener('test1', test1)
|
||||||
|
|
||||||
|
def main():
|
||||||
|
pass
|
||||||
+23
-28
@@ -29,12 +29,18 @@ class authClient:
|
|||||||
self.rawClient.send(type, data)
|
self.rawClient.send(type, data)
|
||||||
|
|
||||||
class authServer:
|
class authServer:
|
||||||
def __init__(self):
|
def __init__(self, webserv):
|
||||||
self.rawServer = None
|
self.rawServer = None
|
||||||
self.app = None
|
self.app = None
|
||||||
self.clients = []
|
self.clients = []
|
||||||
self.users = []
|
self.users = []
|
||||||
|
|
||||||
|
self.webserv = webserv
|
||||||
|
|
||||||
|
self.reloadUsers()
|
||||||
|
self.rawServer = webserv.rawServer
|
||||||
|
self.initRawServer()
|
||||||
|
|
||||||
def login(self, c, data):
|
def login(self, c, data):
|
||||||
if c.clientid != data['cid']:
|
if c.clientid != data['cid']:
|
||||||
c.send('error', 'invalidLoginRequest')
|
c.send('error', 'invalidLoginRequest')
|
||||||
@@ -69,7 +75,7 @@ class authServer:
|
|||||||
c.send('loginSuccess', {
|
c.send('loginSuccess', {
|
||||||
'username': ac.username,
|
'username': ac.username,
|
||||||
'session': ac.session,
|
'session': ac.session,
|
||||||
'redir': f'/{self.app.defaultTab}/{self.app.defaultPage}',
|
'redir': f'/{self.webserv.defaultTab}/{self.webserv.defaultPage}',
|
||||||
'timeout': ac.timeout
|
'timeout': ac.timeout
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -78,17 +84,22 @@ class authServer:
|
|||||||
c.send('error', 'invalidLogin')
|
c.send('error', 'invalidLogin')
|
||||||
return
|
return
|
||||||
|
|
||||||
|
def validAc(self, ac):
|
||||||
|
if ac == None:
|
||||||
|
return False
|
||||||
|
if ac.rawClient.address != request.remote_addr:
|
||||||
|
return False
|
||||||
|
if utils.getUnixTime() > ac.timeout:
|
||||||
|
return False
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
def reauth(self, c, data):
|
def reauth(self, c, data):
|
||||||
session = data['data']['session']
|
session = data['data']['session']
|
||||||
|
|
||||||
ac = utils.getatribinarr(self.clients, 'session', session)
|
ac = utils.getatribinarr(self.clients, 'session', session)
|
||||||
|
|
||||||
if ac == None:
|
if not self.validAc(ac):
|
||||||
c.send('error', 'invalidLoginRequest')
|
|
||||||
return
|
|
||||||
if ac.rawClient.address != request.remote_addr:
|
|
||||||
c.send('error', 'invalidLoginRequest')
|
|
||||||
return
|
|
||||||
if utils.getUnixTime() > ac.timeout:
|
|
||||||
c.send('error', 'invalidLoginRequest')
|
c.send('error', 'invalidLoginRequest')
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -106,18 +117,12 @@ class authServer:
|
|||||||
|
|
||||||
ac = utils.getatribinarr(self.clients, 'session', session)
|
ac = utils.getatribinarr(self.clients, 'session', session)
|
||||||
|
|
||||||
if ac == None:
|
return self.validAc(ac)
|
||||||
return False
|
|
||||||
if ac.rawClient.address != request.remote_addr:
|
|
||||||
return False
|
|
||||||
if utils.getUnixTime() > ac.timeout:
|
|
||||||
return False
|
|
||||||
|
|
||||||
return True
|
|
||||||
|
|
||||||
def initRawServer(self):
|
def initRawServer(self):
|
||||||
self.app.rawServer.addEventListener('login', self.login)
|
self.rawServer.addEventListener('login', self.login)
|
||||||
self.app.rawServer.addEventListener('reauth', self.reauth)
|
self.rawServer.addEventListener('reauth', self.reauth)
|
||||||
|
|
||||||
def reloadUsers(self):
|
def reloadUsers(self):
|
||||||
data = json.loads(utils.readFile(utils.getRoot('data/')+'creds.json'))
|
data = json.loads(utils.readFile(utils.getRoot('data/')+'creds.json'))
|
||||||
@@ -130,13 +135,3 @@ class authServer:
|
|||||||
user.sha256passwordhash = acc['sha256passwordhash']
|
user.sha256passwordhash = acc['sha256passwordhash']
|
||||||
user.permGroups = acc['permGroups']
|
user.permGroups = acc['permGroups']
|
||||||
self.users.append(user)
|
self.users.append(user)
|
||||||
|
|
||||||
def startAuthListener(app):
|
|
||||||
global authServer
|
|
||||||
authServer = authServer()
|
|
||||||
authServer.app = app
|
|
||||||
authServer.reloadUsers()
|
|
||||||
packets.startRawListener(app)
|
|
||||||
authServer.initRawServer()
|
|
||||||
|
|
||||||
return authServer
|
|
||||||
|
|||||||
+76
-15
@@ -12,25 +12,30 @@ class module():
|
|||||||
self.rootdir = None
|
self.rootdir = None
|
||||||
self.tabs = []
|
self.tabs = []
|
||||||
|
|
||||||
def initSelf(self):
|
def add(self):
|
||||||
spec = importlib.util.spec_from_file_location(self.name, utils.getRoot(self.entrypoint))
|
spec = importlib.util.spec_from_file_location(self.name, utils.getRoot(self.entrypoint))
|
||||||
module = importlib.util.module_from_spec(spec)
|
module = importlib.util.module_from_spec(spec)
|
||||||
spec.loader.exec_module(module)
|
spec.loader.exec_module(module)
|
||||||
self.module = module
|
self.module = module
|
||||||
|
|
||||||
def run(self, moduleMaster):
|
def init(self, moduleMaster):
|
||||||
self.module.main(moduleMaster)
|
self.module.init(moduleMaster)
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
self.module.main()
|
||||||
|
|
||||||
|
|
||||||
class moduleMaster():
|
class moduleMaster():
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.modules = []
|
self.modules = []
|
||||||
self.webserv = None
|
|
||||||
|
|
||||||
|
self.webserv = None
|
||||||
self.app = None
|
self.app = None
|
||||||
self.rawServer = None
|
self.rawServer = None
|
||||||
self.authServer = None
|
self.authServer = None
|
||||||
|
# self.addRawEventListener('test1', test1)
|
||||||
|
|
||||||
def initModules(self, webserv):
|
def addModules(self, webserv):
|
||||||
self.webserv = webserv
|
self.webserv = webserv
|
||||||
|
|
||||||
mdirs = utils.listSubdirs(utils.getRoot('modules/'))
|
mdirs = utils.listSubdirs(utils.getRoot('modules/'))
|
||||||
@@ -75,37 +80,93 @@ class moduleMaster():
|
|||||||
|
|
||||||
self.webserv.webtabs.append(mtab)
|
self.webserv.webtabs.append(mtab)
|
||||||
|
|
||||||
m.initSelf()
|
m.add()
|
||||||
self.modules.append(m)
|
self.modules.append(m)
|
||||||
|
|
||||||
for tab in webserv.webtabs:
|
for tab in webserv.webtabs:
|
||||||
tab.addHtml()
|
tab.addHtml()
|
||||||
|
|
||||||
def runModules(self):
|
|
||||||
self.app = self.webserv.app
|
|
||||||
self.rawServer = self.app.rawServer
|
def initModules(self, webserv):
|
||||||
self.authServer = self.app.authServer
|
self.webserv = webserv
|
||||||
|
self.app = webserv.app
|
||||||
|
self.rawServer = webserv.rawServer
|
||||||
|
self.authServer = webserv.authServer
|
||||||
|
|
||||||
for module in self.modules:
|
for module in self.modules:
|
||||||
module.run(self)
|
module.init(self)
|
||||||
|
|
||||||
|
def runModules(self):
|
||||||
|
for module in self.modules:
|
||||||
|
module.run()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def getRawClients(self):
|
def getRawClients(self):
|
||||||
return self.rawServer.clients
|
return self.rawServer.clients
|
||||||
|
|
||||||
def addRawEventListener(self, eventName, func):
|
|
||||||
self.rawServer.addEventListener(eventName, func)
|
|
||||||
|
|
||||||
def getAuthClients(self):
|
def getAuthClients(self):
|
||||||
return self.authServer.clients
|
return self.authServer.clients
|
||||||
|
|
||||||
|
def addRawEventListener(self, eventName, func):
|
||||||
|
self.rawServer.eventListeners.append({
|
||||||
|
'type': eventName,
|
||||||
|
'func': func
|
||||||
|
})
|
||||||
|
|
||||||
def addAuthEventListener(self, eventName, func):
|
def addAuthEventListener(self, eventName, func):
|
||||||
def tmpfunc(self, c, data):
|
def tmpfunc(c, data):
|
||||||
if not c in self.rawServer.clients:
|
if not c in self.rawServer.clients:
|
||||||
return
|
return
|
||||||
ac = utils.getatribinarr(self.authServer.clients, 'rawClient', c)
|
ac = utils.getatribinarr(self.authServer.clients, 'rawClient', c)
|
||||||
if ac == None:
|
if ac == None:
|
||||||
return
|
return
|
||||||
|
if not self.authServer.validAc(ac):
|
||||||
|
return
|
||||||
|
|
||||||
func(ac, data)
|
func(ac, data)
|
||||||
|
|
||||||
self.rawServer.addEventListener(eventName, tmpfunc)
|
self.rawServer.addEventListener(eventName, tmpfunc)
|
||||||
|
|
||||||
|
def getRawClientByID(self, ID):
|
||||||
|
return utils.getatribinarr(self.rawServer.clients, 'clientid', ID)
|
||||||
|
|
||||||
|
def getAuthClientByID(self, ID):
|
||||||
|
c = utils.getatribinarr(self.rawServer.clients, 'clientid', ID)
|
||||||
|
if c == None:
|
||||||
|
return None
|
||||||
|
return utils.getatribinarr(self.authServer.clients, 'rawClient', c)
|
||||||
|
|
||||||
|
def sendPopupInfo(self, c, title, msg):
|
||||||
|
c.send('popupInfo', {
|
||||||
|
'title': title,
|
||||||
|
'msg': msg
|
||||||
|
})
|
||||||
|
|
||||||
|
def sendPopupSuccess(self, c, title, msg):
|
||||||
|
c.send('popupSuccess', {
|
||||||
|
'title': title,
|
||||||
|
'msg': msg
|
||||||
|
})
|
||||||
|
|
||||||
|
def sendPopupWarning(self, c, title, msg):
|
||||||
|
c.send('popupWarning', {
|
||||||
|
'title': title,
|
||||||
|
'msg': msg
|
||||||
|
})
|
||||||
|
|
||||||
|
def sendPopupError(self, c, title, msg):
|
||||||
|
c.send('popupError', {
|
||||||
|
'title': title,
|
||||||
|
'msg': msg
|
||||||
|
})
|
||||||
|
|
||||||
|
def sendPopupColor(self, c, title, msg, color, isDark):
|
||||||
|
c.send('popupColor', {
|
||||||
|
'title': title,
|
||||||
|
'msg': msg,
|
||||||
|
'color': color,
|
||||||
|
'isDark': isDark
|
||||||
|
})
|
||||||
+18
-17
@@ -10,13 +10,13 @@ import src.utils as utils
|
|||||||
import queue
|
import queue
|
||||||
|
|
||||||
class rawClient:
|
class rawClient:
|
||||||
def __init__(self, app):
|
def __init__(self, rawServer):
|
||||||
self.clientid = utils.randID(32)
|
self.clientid = utils.randID(32)
|
||||||
self.messages = queue.Queue()
|
self.messages = queue.Queue()
|
||||||
self.app = app
|
self.rawServer = rawServer
|
||||||
self.address = None
|
self.address = None
|
||||||
def send(self, type, msg):
|
def send(self, type, msg):
|
||||||
self.app.rawServer.sendClient(self, jsonpack.pack({
|
self.rawServer.sendClient(self, jsonpack.pack({
|
||||||
'type': type,
|
'type': type,
|
||||||
'data': msg,
|
'data': msg,
|
||||||
'cid': self.clientid
|
'cid': self.clientid
|
||||||
@@ -25,14 +25,15 @@ class rawClient:
|
|||||||
#Credit to https://github.com/MaxHalford/flask-sse-no-deps
|
#Credit to https://github.com/MaxHalford/flask-sse-no-deps
|
||||||
class rawServer:
|
class rawServer:
|
||||||
|
|
||||||
def __init__(self, app):
|
def __init__(self, webserv):
|
||||||
self.eventListeners = []
|
self.eventListeners = []
|
||||||
self.clients = []
|
self.clients = []
|
||||||
self.app = app
|
self.webserv = webserv
|
||||||
app.rawServer = self.app
|
self.app = webserv.app
|
||||||
|
# self.app = app
|
||||||
|
|
||||||
def listen(self):
|
def listen(self):
|
||||||
c = rawClient(self.app)
|
c = rawClient(self)
|
||||||
self.clients.append(c)
|
self.clients.append(c)
|
||||||
return self.clients[-1]
|
return self.clients[-1]
|
||||||
|
|
||||||
@@ -60,11 +61,10 @@ class rawServer:
|
|||||||
|
|
||||||
def addEventListener(self, eventName, func):
|
def addEventListener(self, eventName, func):
|
||||||
self.eventListeners.append({
|
self.eventListeners.append({
|
||||||
'name': eventName,
|
'type': eventName,
|
||||||
'func': func
|
'func': func
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
def format_sse(data: str, event=None) -> str:
|
def format_sse(data: str, event=None) -> str:
|
||||||
#Formats a string and an event name in order to follow the event stream convention.
|
#Formats a string and an event name in order to follow the event stream convention.
|
||||||
msg = f'data: {data}\n\n'
|
msg = f'data: {data}\n\n'
|
||||||
@@ -73,15 +73,16 @@ def format_sse(data: str, event=None) -> str:
|
|||||||
return msg
|
return msg
|
||||||
|
|
||||||
|
|
||||||
def startRawListener(app):
|
def startRawListener(webserv):
|
||||||
app.rawServer = rawServer(app)
|
server = rawServer(webserv)
|
||||||
|
# app.rawServer = server
|
||||||
|
|
||||||
@app.route('/listen', methods=['GET', 'POST'])
|
@webserv.app.route('/listen', methods=['GET', 'POST'])
|
||||||
def listen():
|
def listen():
|
||||||
|
|
||||||
if request.method == 'GET':
|
if request.method == 'GET':
|
||||||
|
|
||||||
c = app.rawServer.listen() # returns a queue.Queue
|
c = server.listen() # returns a queue.Queue
|
||||||
c.address = request.remote_addr
|
c.address = request.remote_addr
|
||||||
c.send('clidata', {
|
c.send('clidata', {
|
||||||
'cid': c.clientid
|
'cid': c.clientid
|
||||||
@@ -99,14 +100,14 @@ def startRawListener(app):
|
|||||||
|
|
||||||
if data['cid'] == None:
|
if data['cid'] == None:
|
||||||
return {}, 400
|
return {}, 400
|
||||||
c = utils.getatribinarr(app.rawServer.clients, 'clientid', data['cid'])
|
c = utils.getatribinarr(server.clients, 'clientid', data['cid'])
|
||||||
if c == None:
|
if c == None:
|
||||||
return {}, 400
|
return {}, 400
|
||||||
|
|
||||||
for event in app.rawServer.eventListeners:
|
for event in server.eventListeners:
|
||||||
if event['name'] == data['type']:
|
if event['type'] == data['type']:
|
||||||
event['func'](c, data)
|
event['func'](c, data)
|
||||||
|
|
||||||
return {}, 200
|
return {}, 200
|
||||||
|
|
||||||
#return rawServer
|
return server
|
||||||
+25
-19
@@ -6,6 +6,7 @@ from flask import Flask, render_template, Response
|
|||||||
from flask import request, redirect, url_for, make_response
|
from flask import request, redirect, url_for, make_response
|
||||||
|
|
||||||
import src.jsonpack as jsonpack
|
import src.jsonpack as jsonpack
|
||||||
|
import src.packets as packets
|
||||||
import src.auth as auth
|
import src.auth as auth
|
||||||
|
|
||||||
webroot = utils.getRoot('html/')
|
webroot = utils.getRoot('html/')
|
||||||
@@ -55,22 +56,22 @@ class webpage():
|
|||||||
|
|
||||||
@app.route('/')
|
@app.route('/')
|
||||||
def index():
|
def index():
|
||||||
isValid = app.authServer.cookieLogin(request)
|
isValid = app.webserv.authServer.cookieLogin(request)
|
||||||
if not isValid:
|
if not isValid:
|
||||||
return redirect("/login", code=302)
|
return redirect("/login", code=302)
|
||||||
else:
|
else:
|
||||||
return redirect(f'/{app.defaultTab}/{app.defaultPage}', code=302)
|
return redirect(f'/{app.webserv.defaultTab}/{app.webserv.defaultPage}', code=302)
|
||||||
|
|
||||||
@app.route('/login')
|
@app.route('/login')
|
||||||
def loginPage():
|
def loginPage():
|
||||||
isValid = app.authServer.cookieLogin(request)
|
isValid = app.webserv.authServer.cookieLogin(request)
|
||||||
if isValid:
|
if isValid:
|
||||||
return redirect(f'/{app.defaultTab}/{app.defaultPage}', code=302)
|
return redirect(f'/{app.webserv.defaultTab}/{app.webserv.defaultPage}', code=302)
|
||||||
|
|
||||||
return make_response(open(f'{webroot}nav.html', 'r').read()
|
return make_response(open(f'{webroot}nav.html', 'r').read()
|
||||||
.replace('<!--Place body here!!!-->', open(f'{webroot}login.html', 'r').read())
|
.replace('<!--Place body here!!!-->', open(f'{webroot}login.html', 'r').read())
|
||||||
.replace('<!--Place tabs here!!!-->', '<a href="/login" role="button" class="outline topnav-button text-white">Login</a>')
|
.replace('<!--Place tabs here!!!-->', '<a href="/login" role="button" class="outline topnav-button text-white">Login</a>')
|
||||||
.replace('<!--Place title here!!!-->', app.title)
|
.replace('<!--Place title here!!!-->', app.webserv.title)
|
||||||
.replace('<!--Place defaultPage here!!!-->', '/login'))
|
.replace('<!--Place defaultPage here!!!-->', '/login'))
|
||||||
|
|
||||||
def recursivePageLocationFinder(pagename, objs):
|
def recursivePageLocationFinder(pagename, objs):
|
||||||
@@ -88,21 +89,21 @@ def recursivePageLocationFinder(pagename, objs):
|
|||||||
@app.route('/<tabname>/<pagename>')
|
@app.route('/<tabname>/<pagename>')
|
||||||
def page(tabname, pagename):
|
def page(tabname, pagename):
|
||||||
|
|
||||||
isValid = app.authServer.cookieLogin(request)
|
isValid = app.webserv.authServer.cookieLogin(request)
|
||||||
if not isValid:
|
if not isValid:
|
||||||
return redirect("/login", code=302)
|
return redirect("/login", code=302)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
||||||
tab = utils.getatribinarr(app.webtabs, 'name', tabname)
|
tab = utils.getatribinarr(app.webserv.webtabs, 'name', tabname)
|
||||||
pageloc = recursivePageLocationFinder(pagename, tab.pages)
|
pageloc = recursivePageLocationFinder(pagename, tab.pages)
|
||||||
|
|
||||||
return make_response(open(utils.getRoot('html/nav.html'), 'r').read()
|
return make_response(open(utils.getRoot('html/nav.html'), 'r').read()
|
||||||
.replace('<!--Place body here!!!-->', open(utils.getRoot(pageloc), 'r').read())
|
.replace('<!--Place body here!!!-->', open(utils.getRoot(pageloc), 'r').read())
|
||||||
.replace('<!--Place tabs here!!!-->', app.tabHtml)
|
.replace('<!--Place tabs here!!!-->', app.webserv.tabHtml)
|
||||||
.replace('<!--Place pages here!!!-->', tab.html)
|
.replace('<!--Place pages here!!!-->', tab.html)
|
||||||
.replace('<!--Place title here!!!-->', app.title)
|
.replace('<!--Place title here!!!-->', app.webserv.title)
|
||||||
.replace('<!--Place defaultPage here!!!-->', f'/{app.defaultTab}/{app.defaultPage}'))
|
.replace('<!--Place defaultPage here!!!-->', f'/{app.webserv.defaultTab}/{app.webserv.defaultPage}'))
|
||||||
except:
|
except:
|
||||||
return redirect("/login", code=302)
|
return redirect("/login", code=302)
|
||||||
|
|
||||||
@@ -114,6 +115,7 @@ def src(file):
|
|||||||
def err404(err):
|
def err404(err):
|
||||||
return redirect("/", code=302)
|
return redirect("/", code=302)
|
||||||
|
|
||||||
|
|
||||||
class webserv():
|
class webserv():
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.title = 'Modulator'
|
self.title = 'Modulator'
|
||||||
@@ -128,7 +130,7 @@ class webserv():
|
|||||||
|
|
||||||
self.app = None
|
self.app = None
|
||||||
|
|
||||||
def start(self):
|
def init(self):
|
||||||
if not self.verbose:
|
if not self.verbose:
|
||||||
import logging
|
import logging
|
||||||
log = logging.getLogger('werkzeug')
|
log = logging.getLogger('werkzeug')
|
||||||
@@ -140,8 +142,6 @@ class webserv():
|
|||||||
else:
|
else:
|
||||||
sslcontext = None
|
sslcontext = None
|
||||||
|
|
||||||
self.proc = mupr.Process(target=app.run, kwargs=dict(debug=self.verbose, port=self.port, host=self.host, ssl_context=sslcontext))
|
|
||||||
|
|
||||||
def tabHtml(path, name):
|
def tabHtml(path, name):
|
||||||
return f'<a href="{path}" role="button" class="outline topnav-button text-white">{name}</a>'
|
return f'<a href="{path}" role="button" class="outline topnav-button text-white">{name}</a>'
|
||||||
|
|
||||||
@@ -150,17 +150,23 @@ class webserv():
|
|||||||
if tab.name == self.defaultTab:
|
if tab.name == self.defaultTab:
|
||||||
self.defaultPage = tab.defaultPage
|
self.defaultPage = tab.defaultPage
|
||||||
|
|
||||||
app.authServer = auth.startAuthListener(app)
|
def testfunc1(ac, data):
|
||||||
|
print(ac)
|
||||||
|
print(data)
|
||||||
|
|
||||||
app.defaultTab = self.defaultTab
|
|
||||||
app.defaultPage = self.defaultPage
|
|
||||||
app.webtabs = self.webtabs
|
|
||||||
app.tabHtml = self.tabHtml
|
|
||||||
|
|
||||||
app.title = self.title
|
app.webserv = self
|
||||||
self.app = app
|
self.app = app
|
||||||
|
self.rawServer = packets.startRawListener(self)
|
||||||
|
self.authServer = auth.authServer(self)
|
||||||
|
self.proc = mupr.Process(target=app.run, kwargs=dict(debug=self.verbose, port=self.port, host=self.host, ssl_context=sslcontext))
|
||||||
|
|
||||||
|
|
||||||
|
def start(self):
|
||||||
self.proc.start()
|
self.proc.start()
|
||||||
|
|
||||||
|
# return self.rawServer
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
self.proc.terminate()
|
self.proc.terminate()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user