| 
									
										
										
										
											2020-06-20 20:03:06 +02:00
										 |  |  | import os | 
					
						
							|  |  |  | import multiprocessing | 
					
						
							|  |  |  | import logging | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-06 15:11:17 +02:00
										 |  |  | import ModuleUpdate | 
					
						
							| 
									
										
										
										
											2021-06-06 15:30:20 +02:00
										 |  |  | ModuleUpdate.requirements_files.add(os.path.join("WebHostLib", "requirements.txt")) | 
					
						
							| 
									
										
										
										
											2021-06-06 15:11:17 +02:00
										 |  |  | ModuleUpdate.update() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-24 14:08:45 +02:00
										 |  |  | # in case app gets imported by something like gunicorn | 
					
						
							|  |  |  | import Utils | 
					
						
							|  |  |  | Utils.local_path.cached_path = os.path.dirname(__file__) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-11 16:59:37 +02:00
										 |  |  | from WebHostLib import app as raw_app | 
					
						
							| 
									
										
										
										
											2020-06-20 20:03:06 +02:00
										 |  |  | from waitress import serve | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-11 16:59:37 +02:00
										 |  |  | from WebHostLib.models import db | 
					
						
							| 
									
										
										
										
											2021-12-13 05:48:33 +01:00
										 |  |  | from WebHostLib.autolauncher import autohost, autogen | 
					
						
							| 
									
										
										
										
											2021-07-20 18:23:06 +02:00
										 |  |  | from WebHostLib.lttpsprites import update_sprites_lttp | 
					
						
							| 
									
										
										
										
											2021-07-22 18:21:31 +02:00
										 |  |  | from WebHostLib.options import create as create_options_files | 
					
						
							| 
									
										
										
										
											2020-06-20 20:03:06 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-13 00:28:53 +02:00
										 |  |  | configpath = os.path.abspath("config.yaml") | 
					
						
							| 
									
										
										
										
											2020-06-20 20:03:06 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-27 18:17:36 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 17:42:22 +02:00
										 |  |  | def get_app(): | 
					
						
							|  |  |  |     app = raw_app | 
					
						
							| 
									
										
										
										
											2020-06-20 20:03:06 +02:00
										 |  |  |     if os.path.exists(configpath): | 
					
						
							|  |  |  |         import yaml | 
					
						
							| 
									
										
										
										
											2021-05-13 00:28:53 +02:00
										 |  |  |         app.config.from_file(configpath, yaml.safe_load) | 
					
						
							| 
									
										
										
										
											2020-06-20 20:03:06 +02:00
										 |  |  |         logging.info(f"Updated config from {configpath}") | 
					
						
							|  |  |  |     db.bind(**app.config["PONY"]) | 
					
						
							|  |  |  |     db.generate_mapping(create_tables=True) | 
					
						
							| 
									
										
										
										
											2020-07-10 17:42:22 +02:00
										 |  |  |     return app | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if __name__ == "__main__": | 
					
						
							|  |  |  |     multiprocessing.freeze_support() | 
					
						
							|  |  |  |     multiprocessing.set_start_method('spawn') | 
					
						
							|  |  |  |     logging.basicConfig(format='[%(asctime)s] %(message)s', level=logging.INFO) | 
					
						
							| 
									
										
										
										
											2021-09-07 00:42:02 +02:00
										 |  |  |     try: | 
					
						
							|  |  |  |         update_sprites_lttp() | 
					
						
							|  |  |  |     except Exception as e: | 
					
						
							|  |  |  |         logging.exception(e) | 
					
						
							|  |  |  |         logging.warning("Could not update LttP sprites.") | 
					
						
							| 
									
										
										
										
											2020-07-10 17:42:22 +02:00
										 |  |  |     app = get_app() | 
					
						
							| 
									
										
										
										
											2021-07-22 18:21:31 +02:00
										 |  |  |     create_options_files() | 
					
						
							| 
									
										
										
										
											2020-07-10 17:42:22 +02:00
										 |  |  |     if app.config["SELFLAUNCH"]: | 
					
						
							| 
									
										
										
										
											2020-06-28 09:28:13 +02:00
										 |  |  |         autohost(app.config) | 
					
						
							| 
									
										
										
										
											2021-12-13 05:48:33 +01:00
										 |  |  |     if app.config["SELFGEN"]: | 
					
						
							|  |  |  |         autogen(app.config) | 
					
						
							| 
									
										
										
										
											2020-07-10 17:42:22 +02:00
										 |  |  |     if app.config["SELFHOST"]:  # using WSGI, you just want to run get_app() | 
					
						
							|  |  |  |         if app.config["DEBUG"]: | 
					
						
							|  |  |  |             autohost(app.config) | 
					
						
							|  |  |  |             app.run(debug=True, port=app.config["PORT"]) | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             serve(app, port=app.config["PORT"], threads=app.config["WAITRESS_THREADS"]) |