def start(self): self.tornadoApp=tornado.web.Application(self.handlers) self.tornadoApp.server=self if self.ssl_crt and self.ssl_key: import ssl ssl_options = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH) ssl_options.load_cert_chain(self.ssl_crt,self.ssl_key) else: ssl_options = None server = HTTPServer(self.tornadoApp, ssl_options=ssl_options) if self.port: server.listen(int(self.port)) #self.tornadoApp.listen(int(self.port)) else: socket_path = os.path.join(gnrConfigPath(), 'sockets', '%s.tornado'%self.instance_name) main_socket = bind_unix_socket(socket_path) #server = HTTPServer(self.tornadoApp) server.add_socket(main_socket) debug_socket_path = os.path.join(gnrConfigPath(), 'sockets', '%s_debug.tornado'%self.instance_name) debug_socket = bind_unix_socket(debug_socket_path) debug_server = GnrDebugServer(self.io_loop) #debug_server.listen(8888) debug_server.add_socket(debug_socket) debug_server.application = self.tornadoApp signal.signal(signal.SIGTERM, self.onSignal) signal.signal(signal.SIGINT, self.onSignal) self.io_loop.start()
def init_options(self): self.siteconfig = self.get_config() options = self.options.__dict__ vassals_dir = self.gnr_config[ 'gnr.environment_xml.vassals?path'] or os.path.join( gnrConfigPath(), 'uwsgi', 'vassals') vassal_path = os.path.join(vassals_dir, '%s.ini' % self.site_name) vassal_params = None if os.path.exists(vassal_path): with open(vassal_path) as vassal_file: config_parser = ConfigParser() config_parser.readfp(vassal_file) try: vassal_params = dict(config_parser.items('genropy')) except NoSectionError: pass for option in wsgi_options.keys(): if options.get(option, None) is None: # not specified on the command-line site_option = self.siteconfig['wsgi?%s' % option] self.options[option] = site_option or wsgi_options.get(option) for (key, dtype) in (('debug', 'B'), ('restore', 'T'), ('profile', 'B'), ('remote_edit', 'B'), ('gzip', 'B')): env_key = 'GNR_%s_%s' % (self.site_name.upper(), key.upper()) env_value = os.getenv(env_key) if env_value: if dtype == 'B': env_value = boolean(env_value) self.options.__dict__[key] = env_value if vassal_params: for key, value in vassal_params.items(): self.options[key] = value
def __init__(self, site_name=None): self.options = attrDict() self.gnr_config = getGnrConfig(set_environment=True) self.config_path = gnrConfigPath() self.site_name = site_name if self.site_name: if not self.gnr_config: raise ServerException('Error: no ~/.gnr/ or /etc/gnr/ found') self.site_handler = getSiteHandler(site_name) self.site_path = self.site_handler['site_path'] self.site_template = self.site_handler['site_template'] self.site_script = self.site_handler['site_script'] if not os.path.isfile(self.site_script): raise ServerException( 'Error: no root.py in the site provided (%s)' % self.site_name) else: self.site_script = os.path.join('.', 'root.py') self.init_options() self.gnr_site = GnrWsgiSite(self.site_script, site_name=self.site_name, _config=self.siteconfig, _gnrconfig=self.gnr_config, counter=self.options.get('counter'), noclean=self.options.get('noclean'), options=self.options)
def __init__(self, site_script=None, server_name='Genro Server', server_description='Development'): self.site_script = site_script self.server_description = server_description self.server_name = server_name #self.remotesshdb = None (self.options, self.args) = self.parser.parse_args() enable_colored_logging(level=self.LOGGING_LEVELS[self.options.log_level]) if hasattr(self.options, 'config_path') and self.options.config_path: self.config_path = self.options.config_path else: self.config_path = gnrConfigPath() self.gnr_config = getGnrConfig(config_path=self.config_path, set_environment=True) self.site_name = self.options.site_name or (self.args and self.args[0]) or os.getenv('GNR_CURRENT_SITE') self.remote_db = '' if self.site_name: if ':' in self.site_name: self.site_name,self.remote_db = self.site_name.split(':',1) if not self.gnr_config: raise ServerException( 'Error: no ~/.gnr/ or /etc/gnr/ found') self.site_path, self.site_template = self.site_name_to_path(self.site_name) self.site_script = os.path.join(self.site_path, 'root.py') if not os.path.isfile(self.site_script): raise ServerException( 'Error: no root.py in the site provided (%s)' % self.site_name) else: self.site_path = os.path.dirname(os.path.realpath(site_script)) self.init_options()
def __init__(self, page=None,instance_name=None, debugger_page_id=None, completekey='tab',callcounter=None,methodname=None, skip=None): self.page=page page.debugger=self self.pdb_id='D_%s' %id(self) self.pdb_counter=0 self.debugger_page_id = debugger_page_id self.socket_path = os.path.join(gnrConfigPath(), 'sockets', '%s_debug.tornado'%instance_name) self.callcounter = callcounter self.methodname = methodname self.mybp = [] iostream = self.get_iostream() pdb.Pdb.__init__(self,completekey=completekey, skip=skip, stdin=iostream, stdout=iostream) self.prompt = ''
def getFullOptions(options=None): gnr_path = gnrConfigPath() enviroment_path = os.path.join(gnr_path,'environment.xml') env_options = Bag(expandpath(enviroment_path)).getAttr('gnrdaemon') if env_options.get('sockets'): if env_options['sockets'].lower() in ('t','true','y') : env_options['sockets']=os.path.join(gnr_path,'sockets') if not os.path.isdir(env_options['sockets']): os.makedirs(env_options['sockets']) env_options['socket']=env_options.get('socket') or os.path.join(env_options['sockets'],'gnrdaemon.sock') assert env_options,"Missing gnrdaemon configuration." for k,v in options.items(): if v: env_options[k] = v return env_options
def getFullOptions(options=None): gnr_path = gnrConfigPath() enviroment_path = os.path.join(gnr_path, 'environment.xml') env_options = Bag(expandpath(enviroment_path)).getAttr('gnrdaemon') if env_options.get('sockets'): if env_options['sockets'].lower() in ('t', 'true', 'y'): env_options['sockets'] = os.path.join(gnr_path, 'sockets') if not os.path.isdir(env_options['sockets']): os.makedirs(env_options['sockets']) env_options['socket'] = env_options.get('socket') or os.path.join( env_options['sockets'], 'gnrdaemon.sock') assert env_options, "Missing gnrdaemon configuration." for k, v in options.items(): if v: env_options[k] = v return env_options
def initgenropy(gnrpy_path=None): if not gnrpy_path or not os.path.basename(gnrpy_path)=='gnrpy': raise GnrConfigException("You are not running this script inside a valid gnrpy folder") config_path = gnrConfigPath(force_return=True) instanceconfig_path = os.path.join(config_path,'instanceconfig') siteconfig_path = os.path.join(config_path,'siteconfig') for folder_path in (config_path, instanceconfig_path, siteconfig_path): create_folder(folder_path=folder_path) enviroment_xml_path = os.path.join(config_path,'environment.xml') default_instanceconfig_xml_path = os.path.join(instanceconfig_path,'default.xml') default_siteconfig_xml_path = os.path.join(siteconfig_path,'default.xml') for xml_path in (enviroment_xml_path, default_instanceconfig_xml_path, default_siteconfig_xml_path): check_file(xml_path=xml_path) gnrdaemon_password = get_random_password() build_environment_xml(path=enviroment_xml_path, gnrpy_path=gnrpy_path, gnrdaemon_password=gnrdaemon_password) build_instanceconfig_xml(path=default_instanceconfig_xml_path) build_siteconfig_xml(path=default_siteconfig_xml_path, gnrdaemon_password=gnrdaemon_password)
def __init__(self, site_name=None): self.options = attrDict() self.gnr_config = getGnrConfig(set_environment=True) self.config_path = gnrConfigPath() self.site_name = site_name if self.site_name: if not self.gnr_config: raise ServerException( 'Error: no ~/.gnr/ or /etc/gnr/ found') self.site_handler = getSiteHandler(site_name) self.site_path = self.site_handler['site_path'] self.site_template = self.site_handler['site_template'] self.site_script = self.site_handler['site_script'] if not os.path.isfile(self.site_script): raise ServerException( 'Error: no root.py in the site provided (%s)' % self.site_name) else: self.site_script = os.path.join('.', 'root.py') self.init_options() self.gnr_site = GnrWsgiSite(self.site_script, site_name=self.site_name, _config=self.siteconfig, _gnrconfig=self.gnr_config, counter=self.options.get('counter'), noclean=self.options.get('noclean'), options=self.options)
def __init__(self,site): self.site = site self.socket_path= os.path.join(gnrConfigPath(), 'sockets', '%s.tornado'% site.site_name) self.proxyurl='/wsproxy'
def init_options(self): self.siteconfig = self.get_config() options = self.options.__dict__ vassals_dir = self.gnr_config['gnr.environment_xml.vassals?path'] or os.path.join(gnrConfigPath(),'uwsgi','vassals') vassal_path = os.path.join(vassals_dir,'%s.ini'%self.site_name) vassal_params = None if os.path.exists(vassal_path): with open(vassal_path) as vassal_file: config_parser = ConfigParser() config_parser.readfp(vassal_file) try: vassal_params = dict(config_parser.items('genropy')) except NoSectionError: pass for option in wsgi_options.keys(): if options.get(option, None) is None: # not specified on the command-line site_option = self.siteconfig['wsgi?%s' % option] self.options[option] = site_option or wsgi_options.get(option) for (key, dtype) in (('debug','B'),('restore','T'),('profile','B'),('remote_edit','B'),('gzip','B')): env_key = 'GNR_%s_%s'%(self.site_name.upper(), key.upper()) env_value = os.getenv(env_key) if env_value: if dtype=='B': env_value = boolean(env_value) self.options.__dict__[key] = env_value if vassal_params: for key,value in vassal_params.items(): self.options[key]=value