Esempio n. 1
0
 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()
Esempio n. 2
0
    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
Esempio n. 3
0
 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)
Esempio n. 4
0
 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()
Esempio n. 5
0
 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 = ''
Esempio n. 6
0
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
Esempio n. 7
0
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
Esempio n. 8
0
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)
Esempio n. 9
0
 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)
Esempio n. 10
0
 def __init__(self,site):
     self.site = site
     self.socket_path= os.path.join(gnrConfigPath(), 'sockets', '%s.tornado'% site.site_name)
     self.proxyurl='/wsproxy'
Esempio n. 11
0
 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