def setup(self, addr, port): # Make sure Radicale is installed and ready pyctl = apis.langassist(self.app).get_interface('Python') users = UsersBackend(self.app) if not pyctl.is_installed('Radicale'): pyctl.install('radicale') # due to packaging bugs, make extra sure perms are readable st = os.stat('/usr/lib/python2.7/site-packages/radicale') for r, d, f in os.walk('/usr/lib/python2.7/site-packages/radicale'): for x in d: os.chmod(os.path.join(r, x), st.st_mode & stat.S_IROTH & stat.S_IRGRP) for x in f: os.chmod(os.path.join(r, x), st.st_mode & stat.S_IROTH & stat.S_IRGRP) if not os.path.exists('/etc/radicale/config'): if not os.path.isdir('/etc/radicale'): os.mkdir('/etc/radicale') open('/etc/radicale/config', 'w').write(self.default_config) if not os.path.isdir('/usr/lib/radicale'): os.mkdir('/usr/lib/radicale') # Add the site process users.add_user('radicale') users.add_group('radicale') users.add_to_group('radicale', 'radicale') wsgi_file = 'import radicale\n' wsgi_file += 'radicale.log.start()\n' wsgi_file += 'application = radicale.Application()\n' open('/etc/radicale/radicale.wsgi', 'w').write(wsgi_file) os.chmod('/etc/radicale/radicale.wsgi', 0766) s = apis.orders(self.app).get_interface('supervisor') if s: s[0].order('new', 'radicale', 'program', [ ('directory', '/etc/radicale'), ('user', 'radicale'), ('command', 'uwsgi -s /tmp/radicale.sock -C --plugin python2 --wsgi-file radicale.wsgi' ), ('stdout_logfile', '/var/log/radicale.log'), ('stderr_logfile', '/var/log/radicale.log') ]) block = [ nginx.Location( '/', nginx.Key('auth_basic', '"Genesis Calendar Server (Radicale)"'), nginx.Key('auth_basic_user_file', '/etc/radicale/users'), nginx.Key('include', 'uwsgi_params'), nginx.Key('uwsgi_pass', 'unix:///tmp/radicale.sock'), ) ] if not os.path.exists('/etc/radicale/users'): open('/etc/radicale/users', 'w').write('') os.chmod('/etc/radicale/users', 0766) WebappControl(self.app).add_reverse_proxy('radicale', '/usr/lib/radicale', addr, port, block) apis.networkcontrol(self.app).add_webapp( ('radicale', 'ReverseProxy', port)) c = self.app.get_config(RadicaleConfig(self.app)) c.first_run_complete = True c.save()
def on_init(self): if self._relsec != None: if self._relsec[0] == 'add': apis.networkcontrol(self.app).add_webapp(self._relsec[1]) self._relsec = None elif self._relsec[0] == 'del': apis.networkcontrol(self.app).remove_webapp(self._relsec[1]) self._relsec = None self.services = [] self.apiops = apis.webapps(self.app) self.mgr = WebappControl(self.app) self.sites = sorted(self.apiops.get_sites(), key=lambda st: st['name']) ats = sorted(self.apiops.get_apptypes(), key=lambda x: x.name.lower()) self.apptypes = sorted(ats, key=lambda x: (hasattr(x, 'sort'))) if len(self.sites) != 0: self.services.append(('Web Server', 'nginx')) if not self._current: self._current = self.apptypes[0] for apptype in self.apptypes: ok = False for site in self.sites: if site['type'] == apptype.name: ok = True if ok == False: continue if hasattr(apptype, 'services'): for dep in apptype.services: post = True for svc in self.services: if svc[1] == dep[1]: post = False if post == True: self.services.append((dep[0], dep[1]))
def setup(self, addr, port): # Make sure Radicale is installed and ready pyctl = apis.langassist(self.app).get_interface('Python') users = UsersBackend(self.app) if not pyctl.is_installed('Radicale'): pyctl.install('radicale') # due to packaging bugs, make extra sure perms are readable st = os.stat('/usr/lib/python2.7/site-packages/radicale') for r, d, f in os.walk('/usr/lib/python2.7/site-packages/radicale'): for x in d: os.chmod(os.path.join(r, x), st.st_mode | stat.S_IROTH | stat.S_IRGRP) for x in f: os.chmod(os.path.join(r, x), st.st_mode | stat.S_IROTH | stat.S_IRGRP) if not os.path.exists('/etc/radicale/config'): if not os.path.isdir('/etc/radicale'): os.mkdir('/etc/radicale') open('/etc/radicale/config', 'w').write(self.default_config) if not os.path.isdir('/usr/lib/radicale'): os.mkdir('/usr/lib/radicale') # Add the site process users.add_user('radicale') users.add_group('radicale') users.add_to_group('radicale', 'radicale') wsgi_file = 'import radicale\n' wsgi_file += 'radicale.log.start()\n' wsgi_file += 'application = radicale.Application()\n' open('/etc/radicale/radicale.wsgi', 'w').write(wsgi_file) os.chmod('/etc/radicale/radicale.wsgi', 0766) s = self.app.get_backend(apis.services.IServiceManager) s.edit('radicale', { 'stype': 'program', 'directory': '/etc/radicale', 'user': '******', 'command': 'uwsgi -s /tmp/radicale.sock -C --plugin python2 --wsgi-file radicale.wsgi', 'stdout_logfile': '/var/log/radicale.log', 'stderr_logfile': '/var/log/radicale.log' } ) s.enable('radicale', 'supervisor') block = [ nginx.Location('/', nginx.Key('auth_basic', '"Genesis Calendar Server (Radicale)"'), nginx.Key('auth_basic_user_file', '/etc/radicale/users'), nginx.Key('include', 'uwsgi_params'), nginx.Key('uwsgi_pass', 'unix:///tmp/radicale.sock'), ) ] if not os.path.exists('/etc/radicale/users'): open('/etc/radicale/users', 'w').write('') os.chmod('/etc/radicale/users', 0766) WebappControl(self.app).add_reverse_proxy('radicale', '/usr/lib/radicale', addr, port, block) apis.networkcontrol(self.app).add_webapp(('radicale', 'ReverseProxy', port)) c = self.app.get_config(RadicaleConfig(self.app)) c.first_run_complete = True c.save()
def on_session_start(self): apis.networkcontrol(self.app).session_start() self._adding_widget = None self._failed = [] # start widget manager and show SSL warning if applicable self._mgr = apis.dashboard.WidgetManager(self.app) if self.app.gconfig.get('genesis', 'ssl') == '0': self.put_message('warn', 'Please enable SSL to ensure secure communication with the server')
def on_session_start(self): apis.networkcontrol(self.app).session_start() self._adding_widget = None self._failed = [] # start widget manager and show SSL warning if applicable self._mgr = apis.dashboard.WidgetManager(self.app) if self.app.gconfig.get('genesis', 'ssl') == '0': self.put_message( 'warn', 'Please enable SSL to ensure secure communication with the server' )
def on_init(self): if self._relsec != None: if self._relsec[0] == 'add': apis.networkcontrol(self.app).add_webapp(self._relsec[1]) self._relsec = None elif self._relsec[0] == 'del': apis.networkcontrol(self.app).remove_webapp(self._relsec[1]) self._relsec = None self.services = [] self.apiops = apis.webapps(self.app) self.dbops = apis.databases(self.app) self.mgr = WebappControl(self.app) self.sites = sorted(self.apiops.get_sites(), key=lambda st: st.name) ats = sorted([x.plugin_info for x in self.apiops.get_apptypes()], key=lambda x: x.name.lower()) self.apptypes = sorted(ats, key=lambda x: (hasattr(x, 'sort'))) if len(self.sites) != 0: self.services.append({ "name": 'Web Server', "binary": 'nginx', "ports": [] }) for x in self.sites: if x.php: self.services.append({ "name": 'PHP FastCGI', "binary": 'php-fpm', "ports": [] }) break if not self._current: self._current = self.apptypes[0] if len(self.apptypes) else None for apptype in self.apptypes: ok = False for site in self.sites: if site.stype == apptype.wa_plugin: ok = True if ok == False: continue if hasattr(apptype, 'services'): for dep in apptype.services: post = True for svc in self.services: if svc['binary'] == dep['binary']: post = False if post == True: self.services.append({ "name": dep['name'], "binary": dep['binary'], "ports": [] })
def on_init(self): if self._relsec != None: if self._relsec[0] == 'add': apis.networkcontrol(self.app).add_webapp(self._relsec[1]) self._relsec = None elif self._relsec[0] == 'del': apis.networkcontrol(self.app).remove_webapp(self._relsec[1]) self._relsec = None self.services = [] self.apiops = apis.webapps(self.app) self.dbops = apis.databases(self.app) self.mgr = WebappControl(self.app) self.sites = sorted(self.apiops.get_sites(), key=lambda st: st.name) ats = sorted([x.plugin_info for x in self.apiops.get_apptypes()], key=lambda x: x.name.lower()) self.apptypes = sorted(ats, key=lambda x: (hasattr(x, 'sort'))) if len(self.sites) != 0: self.services.append( { "name": 'Web Server', "binary": 'nginx', "ports": [] } ) for x in self.sites: if x.php: self.services.append( { "name": 'PHP FastCGI', "binary": 'php-fpm', "ports": [] } ) break if not self._current: self._current = self.apptypes[0] if len(self.apptypes) else None for apptype in self.apptypes: ok = False for site in self.sites: if site.stype == apptype.wa_plugin: ok = True if ok == False: continue if hasattr(apptype, 'services'): for dep in apptype.services: post = True for svc in self.services: if svc['binary'] == dep['binary']: post = False if post == True: self.services.append({"name": dep['name'], "binary": dep['binary'], "ports": []})
def setup(self, addr, port): # Add the site process block = [ nginx.Location('/', nginx.Key('proxy_pass', 'http://127.0.0.1:33411'), nginx.Key('proxy_set_header', 'X-Real-IP $remote_addr'), nginx.Key('proxy_set_header', 'Host $host'), nginx.Key('proxy_buffering', 'off') ) ] WebappControl(self.app).add_reverse_proxy('mailpile', '/var/lib/mailpile', addr, port, block) apis.networkcontrol(self.app).add_webapp(('mailpile', 'ReverseProxy', port)) self.setup_complete = True
def setup(self, addr, port): # Make sure Radicale is installed and ready pyctl = apis.langassist(self.app).get_interface('Python') users = UsersBackend(self.app) if not pyctl.is_installed('radicale'): pyctl.install('radicale') if not pyctl.is_installed('uWSGI'): pyctl.install('uwsgi') if not os.path.exists('/etc/radicale/config'): if not os.path.isdir('/etc/radicale'): os.mkdir('/etc/radicale') open('/etc/radicale/config', 'w').write(self.default_config) if not os.path.isdir('/usr/lib/radicale'): os.mkdir('/usr/lib/radicale') # Add the site process users.add_user('radicale') users.add_group('radicale') users.add_to_group('radicale', 'radicale') wsgi_file = 'import radicale\n' wsgi_file += 'radicale.log.start()\n' wsgi_file += 'application = radicale.Application()\n' open('/etc/radicale/radicale.wsgi', 'w').write(wsgi_file) s = apis.orders(self.app).get_interface('supervisor') if s: s[0].order('new', 'radicale', 'program', [('directory', '/etc/radicale'), ('user', 'radicale'), ('command', 'uwsgi -s /tmp/radicale.sock -C --wsgi-file radicale.wsgi'), ('stdout_logfile', '/var/log/radicale.log'), ('stderr_logfile', '/var/log/radicale.log')]) block = [ nginx.Location('/', nginx.Key('auth_basic', '"Genesis Calendar Server (Radicale)"'), nginx.Key('auth_basic_user_file', '/etc/radicale/users'), nginx.Key('include', 'uwsgi_params'), nginx.Key('uwsgi_pass', 'unix:///tmp/radicale.sock'), ) ] if not os.path.exists('/etc/radicale/users'): open('/etc/radicale/users', 'w').write('') WebappControl(self.app).add_reverse_proxy('radicale', '/usr/lib/radicale', addr, port, block) apis.networkcontrol(self.app).add_webapp(('radicale', 'ReverseProxy', port)) c = self.app.get_config(RadicaleConfig(self.app)) c.first_run_complete = True c.save()
def on_submit(self, event, params, vars=None): if params[0] == 'dlgAdd': if vars.getvalue('action', '') == 'OK': if hasattr(self._current, 'dbengine') and self._current.dbengine: on = False for dbtype in self.dbops.get_dbtypes(): if self._current.dbengine == dbtype[0] and dbtype[ 2] == True: on = True elif self._current.dbengine == dbtype[0] and dbtype[ 2] == None: on = True if on: if self.dbops.get_info(self._current.dbengine).requires_conn and \ not self.dbops.get_dbconn(self._current.dbengine): self._dbauth = (self._current.dbengine, '', 'add') else: self._setup = self._current else: self.put_message( 'err', 'The database engine for %s is not running. Please start it via the Status button.' % self._current.dbengine) else: self._setup = self._current self._add = None if params[0] == 'dlgEdit': if vars.getvalue('action', '') == 'OK': name = vars.getvalue('cfgname', '') addr = vars.getvalue('cfgaddr', '') port = vars.getvalue('cfgport', '') vaddr = True for site in self.sites: if addr == site.addr and port == site.port: vaddr = False if name == '': self.put_message('err', 'Must choose a name') elif re.search('\.|-|`|\\\\|\/|^test$|[ ]', name): self.put_message( 'err', 'Site name must not contain spaces, dots, dashes or special characters' ) elif addr == '': self.put_message('err', 'Must choose an address') elif port == '': self.put_message('err', 'Must choose a port (default 80)') elif port == self.app.gconfig.get('genesis', 'bind_port', ''): self.put_message( 'err', 'Can\'t use the same port number as Genesis') elif not vaddr: self.put_message( 'err', 'Site must have either a different domain/subdomain or a different port' ) else: w = Webapp() w.name = name w.stype = self._edit.stype w.path = self._edit.path w.addr = addr w.port = port w.ssl = self._edit.ssl w.php = self._edit.php self.mgr.nginx_edit(self._edit, w) apis.networkcontrol(self.app).change_webapp(self._edit, w) self._edit = None if params[0] == 'dlgSetup': if vars.getvalue('action', '') == 'OK': name = vars.getvalue('name', '').lower() addr = vars.getvalue('addr', '') port = vars.getvalue('port', '80') vname, vaddr = True, True for site in self.sites: if name == site.name: vname = False if addr == site.addr and port == site.port: vaddr = False if not name or not self._setup: self.put_message('err', 'Name or type not selected') elif re.search('\.|-|`|\\\\|\/|^test$|[ ]', name): self.put_message( 'err', 'Site name must not contain spaces, dots, dashes or special characters' ) elif addr == '': self.put_message('err', 'Must choose an address') elif port == '': self.put_message('err', 'Must choose a port (default 80)') elif port == self.app.gconfig.get('genesis', 'bind_port', ''): self.put_message( 'err', 'Can\'t use the same port number as Genesis') elif not vaddr: self.put_message( 'err', 'Site must have either a different domain/subdomain or a different port' ) elif not vname: self.put_message('err', 'A site with this name already exists') else: w = WAWorker(self, 'add', name, self._current, vars) w.start() self._setup = None if params[0].startswith('dlgAuth'): dbtype = params[0].split('dlgAuth')[1] if vars.getvalue('action', '') == 'OK': login = vars.getvalue('value', '') try: dbauth = self._dbauth self._dbauth = ('', '', '') self.dbops.get_interface(dbtype).connect( store=self.app.session['dbconns'], passwd=login) if dbauth[2] == 'drop': w = WAWorker(self, 'drop', dbauth[1]) w.start() elif dbauth[2] == 'add': self._setup = self._current except DBAuthFail, e: self.put_message('err', str(e)) else: self.put_message('info', 'Website %s cancelled' % self._dbauth[2]) self._dbauth = ('', '', '')
def update_services(self): apis.networkcontrol(self.app).port_changed(self.plugin_info)
def on_submit(self, event, params, vars = None): if params[0] == 'dlgAdd': if vars.getvalue('action', '') == 'OK': if hasattr(self._current, 'dbengine'): on = False for dbtype in apis.databases(self.app).get_dbtypes(): if self._current.dbengine == dbtype[0] and dbtype[2] == True: on = True elif self._current.dbengine == dbtype[0] and dbtype[2] == None: on = True if on: self._setup = self._current else: self.put_message('err', 'The database engine for %s is not running. Please start it via the Status button.' % self._current.dbengine) else: self._setup = self._current self._add = None if params[0] == 'dlgEdit': if vars.getvalue('action', '') == 'OK': name = vars.getvalue('cfgname', '') if name == '': self.put_message('err', 'Must choose a name') elif re.search('\.|-|[ ]', name): self.put_message('err', 'Site name must not contain spaces, dots or dashes') elif vars.getvalue('cfgaddr', '') == '': self.put_message('err', 'Must choose an address') elif vars.getvalue('cfgport', '') == '': self.put_message('err', 'Must choose a port (default 80)') elif vars.getvalue('cfgport') == self.app.gconfig.get('genesis', 'bind_port', ''): self.put_message('err', 'Can\'t use the same port number as Genesis') else: self.mgr.nginx_edit( origname=self._edit['name'], name=vars.getvalue('cfgname'), stype=self._edit['type'], path=self._edit['path'], addr=vars.getvalue('cfgaddr'), port=vars.getvalue('cfgport'), ssl=self._edit['ssl'], php=self._edit['php'] ) apis.networkcontrol(self.app).change_webapp( self._edit['name'], vars.getvalue('cfgname'), self._edit['type'], vars.getvalue('cfgport')) self._edit = None if params[0] == 'dlgSetup': if vars.getvalue('action', '') == 'OK': name = vars.getvalue('name', '').lower() port = vars.getvalue('port', '80') samename = False for site in self.sites: if name == site['name']: samename = True if not name or not self._setup: self.put_message('err', 'Name or type not selected') elif samename is True: self.put_message('err', 'A site with this name already exists') elif port == self.app.gconfig.get('genesis', 'bind_port', ''): self.put_message('err', 'Can\'t use the same port number as Genesis') elif re.search('\.|-|[ ]', name): self.put_message('err', 'Site name must not contain spaces, dots or dashes') else: w = WAWorker(self, 'add', name, self._current, vars) w.start() self._setup = None
self.put_message('err', 'Site must have either a different domain/subdomain or a different port') elif self.site.ssl and hostport == '80': self.put_message('err', 'Cannot set an HTTPS site to port 80') elif not self.site.ssl and hostport == '443': self.put_message('err', 'Cannot set an HTTP-only site to port 443') else: w = Webapp() w.name = self.site.name w.stype = self.site.stype w.path = self.site.path w.addr = hostname w.port = hostport w.ssl = self.site.ssl w.php = False WebappControl(self.app).nginx_edit(self.site, w) apis.networkcontrol(self.app).change_webapp(self.site, w) self.put_message('success', 'Site edited successfully') self._editsrv = None if params[0] == 'dlgChpasswd': passwd = vars.getvalue('chpasswd', '') if vars.getvalue('action', '') == 'OK': if not passwd: self.put_message('err', 'Must choose a password') elif passwd != vars.getvalue('chpasswdb',''): self.put_message('err', 'Passwords must match') else: try: self._rc.edit_user(self._edit, passwd) self.put_message('success', 'Password changed successfully') except Exception, e: self.app.log.error('Calendar password for %s could not be changed. Error: %s' % (self._edit,str(e)))
def on_session_start(self): self._mgr = RepositoryManager(self.app.log, self.app.config) self._nc = apis.networkcontrol(self.app) self._reloadfw = False
def on_submit(self, event, params, vars=None): if params[0] == 'dlgAdd': if vars.getvalue('action', '') == 'OK': if hasattr(self._current, 'dbengine'): on = False for dbtype in apis.databases(self.app).get_dbtypes(): if self._current.dbengine == dbtype[0] and dbtype[ 2] == True: on = True elif self._current.dbengine == dbtype[0] and dbtype[ 2] == None: on = True if on: self._setup = self._current else: self.put_message( 'err', 'The database engine for %s is not running. Please start it via the Status button.' % self._current.dbengine) else: self._setup = self._current self._add = None if params[0] == 'dlgEdit': if vars.getvalue('action', '') == 'OK': name = vars.getvalue('cfgname', '') if name == '': self.put_message('err', 'Must choose a name') elif re.search('\.|-|[ ]', name): self.put_message( 'err', 'Site name must not contain spaces, dots or dashes') elif vars.getvalue('cfgaddr', '') == '': self.put_message('err', 'Must choose an address') elif vars.getvalue('cfgport', '') == '': self.put_message('err', 'Must choose a port (default 80)') elif vars.getvalue('cfgport') == self.app.gconfig.get( 'genesis', 'bind_port', ''): self.put_message( 'err', 'Can\'t use the same port number as Genesis') else: self.mgr.nginx_edit(origname=self._edit['name'], name=vars.getvalue('cfgname'), stype=self._edit['type'], path=self._edit['path'], addr=vars.getvalue('cfgaddr'), port=vars.getvalue('cfgport'), ssl=self._edit['ssl'], php=self._edit['php']) apis.networkcontrol(self.app).change_webapp( self._edit['name'], vars.getvalue('cfgname'), self._edit['type'], vars.getvalue('cfgport')) self._edit = None if params[0] == 'dlgSetup': if vars.getvalue('action', '') == 'OK': name = vars.getvalue('name', '').lower() port = vars.getvalue('port', '80') samename = False for site in self.sites: if name == site['name']: samename = True if not name or not self._setup: self.put_message('err', 'Name or type not selected') elif samename is True: self.put_message('err', 'A site with this name already exists') elif port == self.app.gconfig.get('genesis', 'bind_port', ''): self.put_message( 'err', 'Can\'t use the same port number as Genesis') elif re.search('\.|-|[ ]', name): self.put_message( 'err', 'Site name must not contain spaces, dots or dashes') else: w = WAWorker(self, 'add', name, self._current, vars) w.start() self._setup = None
def on_submit(self, event, params, vars = None): if params[0] == 'dlgAdd': if vars.getvalue('action', '') == 'OK': if hasattr(self._current, 'dbengine') and self._current.dbengine: on = False for dbtype in self.dbops.get_dbtypes(): if self._current.dbengine == dbtype[0] and dbtype[2] == True: on = True elif self._current.dbengine == dbtype[0] and dbtype[2] == None: on = True if on: if self.dbops.get_info(self._current.dbengine).requires_conn and \ not self.dbops.get_dbconn(self._current.dbengine): self._dbauth = (self._current.dbengine, '', 'add') else: self._setup = self._current else: self.put_message('err', 'The database engine for %s is not running. Please start it via the Status button.' % self._current.dbengine) else: self._setup = self._current self._add = None if params[0] == 'dlgEdit': if vars.getvalue('action', '') == 'OK': name = vars.getvalue('cfgname', '') addr = vars.getvalue('cfgaddr', '') port = vars.getvalue('cfgport', '') vaddr = True for site in self.sites: if addr == site.addr and port == site.port: vaddr = False if name == '': self.put_message('err', 'Must choose a name') elif re.search('\.|-|`|\\\\|\/|^test$|[ ]', name): self.put_message('err', 'Site name must not contain spaces, dots, dashes or special characters') elif addr == '': self.put_message('err', 'Must choose an address') elif port == '': self.put_message('err', 'Must choose a port (default 80)') elif port == self.app.gconfig.get('genesis', 'bind_port', ''): self.put_message('err', 'Can\'t use the same port number as Genesis') elif not vaddr: self.put_message('err', 'Site must have either a different domain/subdomain or a different port') else: w = Webapp() w.name = name w.stype = self._edit.stype w.path = self._edit.path w.addr = addr w.port = port w.ssl = self._edit.ssl w.php = self._edit.php self.mgr.nginx_edit(self._edit, w) apis.networkcontrol(self.app).change_webapp(self._edit, w) self._edit = None if params[0] == 'dlgSetup': if vars.getvalue('action', '') == 'OK': name = vars.getvalue('name', '').lower() addr = vars.getvalue('addr', '') port = vars.getvalue('port', '80') vname, vaddr = True, True for site in self.sites: if name == site.name: vname = False if addr == site.addr and port == site.port: vaddr = False if not name or not self._setup: self.put_message('err', 'Name or type not selected') elif re.search('\.|-|`|\\\\|\/|^test$|[ ]', name): self.put_message('err', 'Site name must not contain spaces, dots, dashes or special characters') elif addr == '': self.put_message('err', 'Must choose an address') elif port == '': self.put_message('err', 'Must choose a port (default 80)') elif port == self.app.gconfig.get('genesis', 'bind_port', ''): self.put_message('err', 'Can\'t use the same port number as Genesis') elif not vaddr: self.put_message('err', 'Site must have either a different domain/subdomain or a different port') elif not vname: self.put_message('err', 'A site with this name already exists') else: w = WAWorker(self, 'add', name, self._current, vars) w.start() self._setup = None if params[0].startswith('dlgAuth'): dbtype = params[0].split('dlgAuth')[1] if vars.getvalue('action', '') == 'OK': login = vars.getvalue('value', '') try: dbauth = self._dbauth self._dbauth = ('','','') self.dbops.get_interface(dbtype).connect( store=self.app.session['dbconns'], passwd=login) if dbauth[2] == 'drop': w = WAWorker(self, 'drop', dbauth[1]) w.start() elif dbauth[2] == 'add': self._setup = self._current except DBAuthFail, e: self.put_message('err', str(e)) else: self.put_message('info', 'Website %s cancelled' % self._dbauth[2]) self._dbauth = ('','','')
def on_session_start(self): self._mgr = RepositoryManager(self.app.log, self.app.config) self._nc = apis.networkcontrol(self.app) self._wa = apis.webapps(self.app) self._info = None self._metoo = []
self.put_message('err', 'Cannot set an HTTPS site to port 80') elif not self.site.ssl and hostport == '443': self.put_message( 'err', 'Cannot set an HTTP-only site to port 443') else: w = Webapp() w.name = self.site.name w.stype = self.site.stype w.path = self.site.path w.addr = hostname w.port = hostport w.ssl = self.site.ssl w.php = False WebappControl(self.app).nginx_edit(self.site, w) apis.networkcontrol(self.app).change_webapp(self.site, w) self.put_message('success', 'Site edited successfully') self._editsrv = None if params[0] == 'dlgChpasswd': passwd = vars.getvalue('chpasswd', '') if vars.getvalue('action', '') == 'OK': if not passwd: self.put_message('err', 'Must choose a password') elif passwd != vars.getvalue('chpasswdb', ''): self.put_message('err', 'Passwords must match') else: try: self._rc.edit_user(self._edit, passwd) self.put_message('success', 'Password changed successfully') except Exception, e: