Wipe branch
This commit is contained in:
		
							
								
								
									
										107
									
								
								webserver.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										107
									
								
								webserver.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,107 @@ | ||||
| from flask import Flask, send_file, request | ||||
| from time import sleep | ||||
| from werkzeug.serving import make_server | ||||
| from threading import Thread | ||||
| from mysql.connector import connect, Error | ||||
| from macros import * | ||||
| import os, json, config, requests, logging | ||||
|  | ||||
|  | ||||
| class WSThread(Thread): | ||||
| 	app = Flask(__name__) | ||||
| 	conn = None | ||||
|  | ||||
| 	def __init__(self, event): | ||||
| 		super(WSThread, self).__init__() | ||||
| 		self.event = event | ||||
|  | ||||
| 		log = logging.getLogger('werkzeug') | ||||
| 		log.disabled = True | ||||
|  | ||||
|  | ||||
| 	@app.route('/') | ||||
| 	@app.route('/index') | ||||
| 	def index(): | ||||
| 		return '<meta charset="UTF-8"><script defer src="/index.js"></script>' | ||||
|  | ||||
|  | ||||
| 	@app.route('/index.js') | ||||
| 	def indexjs(): | ||||
| 		return send_file('index.js') | ||||
|  | ||||
|  | ||||
| 	@app.route('/curstatus.json') | ||||
| 	def curstatus(): | ||||
| 		j = {} | ||||
| 		j['info'] = {} | ||||
| 		j['info']['asics'] = {} | ||||
|  | ||||
| 		return json.dumps(j), 200, {'ContentType':'application/json'} | ||||
|  | ||||
|  | ||||
| 	def dbinit(self): | ||||
| 		with self.conn.cursor() as c: | ||||
| 			c.execute(""" | ||||
| 				CREATE TABLE IF NOT EXISTS `ips` ( | ||||
| 					`id` INT AUTO_INCREMENT PRIMARY KEY, | ||||
| 					`ip` VARCHAR(64) NOT NULL, | ||||
| 					`location` VARCHAR(64) NOT NULL | ||||
| 				) | ||||
| 			""") | ||||
| 			c.execute(""" | ||||
| 				CREATE TABLE IF NOT EXISTS `laststate` ( | ||||
| 					`id` INT AUTO_INCREMENT PRIMARY KEY, | ||||
| 					`ip` VARCHAR(64) NOT NULL, | ||||
| 					`mac` VARCHAR(32) NOT NULL, | ||||
| 					`type` INT(11) NOT NULL, | ||||
| 					`location` VARCHAR(64) NOT NULL, | ||||
| 					`status` VARCHAR(32) NOT NULL, | ||||
| 					`time` INT(11) NOT NULL | ||||
| 				) | ||||
| 			""") | ||||
| 			c.execute(""" | ||||
| 				CREATE TABLE IF NOT EXISTS `asiclogs` ( | ||||
| 					`id` INT AUTO_INCREMENT PRIMARY KEY, | ||||
| 					`ip` VARCHAR(64) NOT NULL, | ||||
| 					`mac` VARCHAR(64) NOT NULL, | ||||
| 					`type` VARCHAR(64) NOT NULL, | ||||
| 					`time` INT(11) NOT NULL, | ||||
| 					`log` TEXT NOT NULL | ||||
| 				) | ||||
| 			""") | ||||
|  | ||||
| 			self.conn.commit() | ||||
|  | ||||
|  | ||||
| 	def runweb(self): | ||||
| 		self.server = make_server('0.0.0.0', CONF.get('port'), self.app) | ||||
| 		self.server.serve_forever() | ||||
|  | ||||
|  | ||||
| 	def run(self): | ||||
| 		try: | ||||
| 			with connect(host=CONF.get('db', 'host'), user=CONF.get('db', 'user'), password=CONF.get('db', 'password')) as conn: | ||||
| 				with conn.cursor() as c: | ||||
| 					c.execute(f"CREATE DATABASE IF NOT EXISTS {CONF.get('db', 'name')}") | ||||
|  | ||||
| 			self.conn = connect( | ||||
| 				host=CONF.get('db', 'host'), | ||||
| 				user=CONF.get('db', 'user'), | ||||
| 				password=CONF.get('db', 'password'), | ||||
| 				database=CONF.get('db', 'name')) | ||||
| 			self.dbinit() | ||||
|  | ||||
| 			web = Thread(target=self.runweb) | ||||
| 			web.daemon = True | ||||
| 			web.start() | ||||
|  | ||||
| 			SUCC(f"Web interface started at port {CONF.get('port')}!") | ||||
|  | ||||
| 			while not self.event.is_set(): | ||||
| 				sleep(1) | ||||
|  | ||||
| 			SUCC(f"Web server stopped!") | ||||
| 			self.server.shutdown() | ||||
| 		except Exception as e: | ||||
| 			CRIT(str(e)) | ||||
| 			os._exit(1) | ||||
		Reference in New Issue
	
	Block a user