diff --git a/.gitignore b/.gitignore index 19f98d7..fff347a 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ __pycache__ cache/* logs/* +env/* diff --git a/botan-start.py b/botan-start.py index ad7b45e..bd0c3e7 100755 --- a/botan-start.py +++ b/botan-start.py @@ -1,43 +1,18 @@ #!/usr/bin/env python3 import os, pwd, grp -from botanjs.config import Config as config - -def drop_privileges( uid_name='nobody', gid_name='nogroup' ): - # Get the uid/gid from the name - running_uid = pwd.getpwnam( uid_name ).pw_uid - running_gid = grp.getgrnam( gid_name ).gr_gid - - current_uid = os.getuid() - - if current_uid != 0: - if running_uid == current_uid: - return True - print( "Service must be started by root" ) - return False - - # Remove group privileges - os.setgroups([]) - - # Try setting the new uid/gid - os.setgid( running_gid ) - os.setuid( running_uid ) - - # Ensure a very conservative umask - old_umask = os.umask( 0o022 ) - - return True +from botanjs.config import Config as config, DEBUG import shutil -# Create the lock folder for celery -lockDir = "/var/run/celery" -os.makedirs( lockDir, exist_ok=True ) -shutil.chown( lockDir, config["Service"]["user"] ) +SiteRoot = os.path.abspath( "." ) -# Imediately drop the root privilege -if drop_privileges( config["Service"]["user"], config["Service"]["group"] ) != True: - exit() +config["Paths"]["SiteRoot"] = SiteRoot; + +# Create the lock folder for celery +lockDir = SiteRoot + "env/var/run/celery" + +os.makedirs( lockDir, exist_ok=True ) import sys from subprocess import Popen @@ -51,31 +26,32 @@ if __name__ == "__main__": jwork = "botanjs.service.jwork" nodeName = "botanNode1" - Popen([ - "celery" - , "multi" - , "restart" - , nodeName - , "-A" - , jwork - , "worker" - , "--pidfile=/var/run/celery/" + jwork + ".pid" - , "--logfile=" + os.path.join( config["Paths"]["Log"], jwork + ".log" ) - , "--workdir=" + config["Paths"]["Runtime"] - , "beat" - , "-l" - , "info" - ]) - - import logging - logging.basicConfig( - filename = os.path.join( config["Paths"]["Log"], "access.log" ) - , level = logging.DEBUG + celOut = open( os.path.join( config["Paths"]["Log"], jwork + "-err.log" ), "a+" ) + cel = Popen( + [ + "celery", "multi", "restart", nodeName + , "-A", jwork, "worker" + , "--pidfile=" + lockDir + jwork + ".pid" + , "--logfile=" + os.path.join( config["Paths"]["Log"], jwork + ".log" ) + , "--workdir=" + config["Paths"]["Runtime"] + , "beat", "-l", "info" + ] + , stdout = celOut + , stderr = celOut ) + celOut.close() + + if not DEBUG and os.fork(): + import logging + logging.basicConfig( + filename = os.path.join( config["Paths"]["Log"], "access.log" ) + , level = logging.DEBUG + ) + sys.exit() + WebAPI( jsCache = config["Paths"]["Cache"] , jsRoot = config["BotanJS"]["SrcDir"] , brokerURL = config["BotanJS"]["CeleryBroker"] ) - diff --git a/botanjs/config.py b/botanjs/config.py index 31eaaa7..2117351 100755 --- a/botanjs/config.py +++ b/botanjs/config.py @@ -3,3 +3,5 @@ import configparser Config = configparser.ConfigParser( interpolation = configparser.ExtendedInterpolation() ) Config.read( "settings.ini" ) + +DEBUG = Config[ "Env" ][ "Debug" ] diff --git a/botanjs/service/templates/test/Dandelian.CSSAnimations.MovieClip.html b/botanjs/service/templates/test/Dandelian.CSSAnimations.MovieClip.html deleted file mode 100644 index 12bc6be..0000000 --- a/botanjs/service/templates/test/Dandelian.CSSAnimations.MovieClip.html +++ /dev/null @@ -1,40 +0,0 @@ - -
--{% for d in data %} - {{ d }} -- - diff --git a/botanjs/service/webapi.py b/botanjs/service/webapi.py index db3ef88..4626a0c 100755 --- a/botanjs/service/webapi.py +++ b/botanjs/service/webapi.py @@ -4,6 +4,8 @@ from flask import Response from flask import render_template from botanjs.service.jclassresv import BotanClassResolver as JCResv from botanjs.service.jwork import app as CeleryApp, JWork +from botanjs.config import DEBUG + import os class WebAPI: @@ -16,12 +18,6 @@ class WebAPI: def __init__( self, jsRoot = "../src", jsCache = "/tmp", brokerURL = None ): - self.test_templates = os.path.join( - os.path.dirname( os.path.realpath( __file__ ) ) - , "templates" - , "test" - ) - self.BRoot = os.path.abspath( jsRoot ) self.BCache = os.path.join( jsCache, "botanjs" ) self.BMap = os.path.join( self.BCache, "bmap.xml" ) @@ -29,27 +25,17 @@ class WebAPI: if brokerURL != None: CeleryApp.conf.update( BROKER_URL = brokerURL ) - self.app = Flask( __name__, static_url_path = '', static_folder = self.BCache ) + print( __name__ ) + self.app = Flask( __name__, static_url_path = self.BCache, static_folder = self.BCache ) self.app.jinja_env.add_extension( "compressinja.html.HtmlCompressor" ) - self.app.add_url_rule( "/test" , view_func = self.r_test_list ) - self.app.add_url_rule( "/test/
-{% endfor %} -