Move login plugin configuration to its own module
[cascardo/ipsilon.git] / ipsilon / idpserver.py
index e260043..9fa370e 100755 (executable)
@@ -23,34 +23,39 @@ sys.stdout = sys.stderr
 import os
 import atexit
 import cherrypy
 import os
 import atexit
 import cherrypy
-from ipsilon.util.plugin import Plugins
 from ipsilon.util.data import Store
 from ipsilon.util import page
 from ipsilon.root import Root
 from jinja2 import Environment, FileSystemLoader
 
 from ipsilon.util.data import Store
 from ipsilon.util import page
 from ipsilon.root import Root
 from jinja2 import Environment, FileSystemLoader
 
-cherrypy.config.update('ipsilon.conf')
+cfgfile = None
+if (len(sys.argv) > 1):
+    cfgfile = sys.argv[-1]
+elif os.path.isfile('ipsilon.conf'):
+    cfgfile = 'ipsilon.conf'
+elif os.path.isfile('/etc/ipsilon/ipsilon.conf'):
+    cfgfile = '/etc/ipsilon/ipsilon.conf'
+else:
+    raise IOError("Configuration file not found")
 
 
-plugins = Plugins(path=cherrypy.config['base.dir'])
-idp_providers = plugins.get_providers()
-if idp_providers:
-    cherrypy.config['idp_providers'] = idp_providers
+cherrypy.config.update(cfgfile)
 
 datastore = Store()
 admin_config = datastore.get_admin_config()
 for option in admin_config:
     cherrypy.config[option] = admin_config[option]
 
 
 datastore = Store()
 admin_config = datastore.get_admin_config()
 for option in admin_config:
     cherrypy.config[option] = admin_config[option]
 
-templates = os.path.join(cherrypy.config['base.dir'], 'templates')
-env = Environment(loader=FileSystemLoader(templates))
-
 cherrypy.tools.protect = cherrypy.Tool('before_handler', page.protect)
 
 cherrypy.tools.protect = cherrypy.Tool('before_handler', page.protect)
 
+templates = os.path.join(cherrypy.config['base.dir'], 'templates')
+template_env = Environment(loader=FileSystemLoader(templates))
+
 if __name__ == "__main__":
     conf = {'/': {'tools.staticdir.root': os.getcwd()},
             '/ui': {'tools.staticdir.on': True,
                     'tools.staticdir.dir': 'ui'}}
 if __name__ == "__main__":
     conf = {'/': {'tools.staticdir.root': os.getcwd()},
             '/ui': {'tools.staticdir.on': True,
                     'tools.staticdir.dir': 'ui'}}
-    cherrypy.quickstart(Root(env), '/', conf)
+    cherrypy.quickstart(Root('default', template_env),
+                        cherrypy.config['base.mount'], conf)
 
 else:
     cherrypy.config['environment'] = 'embedded'
 
 else:
     cherrypy.config['environment'] = 'embedded'
@@ -59,5 +64,5 @@ else:
         cherrypy.engine.start(blocking=False)
         atexit.register(cherrypy.engine.stop)
 
         cherrypy.engine.start(blocking=False)
         atexit.register(cherrypy.engine.stop)
 
-    application = cherrypy.Application(Root(env),
+    application = cherrypy.Application(Root('default', template_env),
                                        script_name=None, config=None)
                                        script_name=None, config=None)