From ce005b80365740bf2f274dc227a8498f33a7c184 Mon Sep 17 00:00:00 2001 From: Rob Crittenden Date: Wed, 2 Sep 2015 16:53:16 -0400 Subject: [PATCH] Create cache directory for storing images for SP Portal https://fedorahosted.org/ipsilon/ticket/148 Signed-off-by: Rob Crittenden Reviewed-by: Patrick Uiterwijk --- .gitignore | 1 + contrib/fedora/ipsilon.spec | 2 ++ ipsilon/install/ipsilon-server-install | 9 ++++++++- ipsilon/ipsilon | 4 +++- quickrun.py | 5 +++++ templates/install/idp.conf | 8 ++++++++ templates/install/ipsilon.conf | 1 + tests/attrs.py | 1 + tests/dbupgrades.py | 1 + tests/fconf.py | 1 + tests/helpers/common.py | 1 + tests/ldap.py | 1 + tests/ldapdown.py | 1 + tests/openid.py | 1 + tests/pgdb.py | 1 + tests/test1.py | 1 + tests/testgssapi.py | 1 + tests/testlogout.py | 1 + tests/testmapping.py | 1 + tests/testnameid.py | 1 + tests/testrest.py | 1 + tests/trans.py | 1 + 22 files changed, 43 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index a560b40..f9bf81c 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ MANIFEST *.pyc *.pyo cscope.out +ui/cache/ diff --git a/contrib/fedora/ipsilon.spec b/contrib/fedora/ipsilon.spec index 7da2ea0..6b6742c 100644 --- a/contrib/fedora/ipsilon.spec +++ b/contrib/fedora/ipsilon.spec @@ -234,6 +234,7 @@ CFLAGS="%{optflags}" %{__python} setup.py build mkdir -p %{buildroot}%{_sbindir} mkdir -p %{buildroot}%{_libexecdir} mkdir -p %{buildroot}%{_defaultdocdir} +mkdir -p %{buildroot}%{_localstatedir}/cache/ipsilon # These 0700 permissions are because ipsilon will store private keys here install -d -m 0700 %{buildroot}%{_sharedstatedir}/ipsilon install -d -m 0700 %{buildroot}%{_sysconfdir}/ipsilon @@ -323,6 +324,7 @@ fi %{_libexecdir}/ipsilon %dir %attr(0751,root,root) %{_sharedstatedir}/ipsilon %dir %attr(0751,root,root) %{_sysconfdir}/ipsilon +%dir %attr(0750,ipsilon,apache) %{_localstatedir}/cache/ipsilon %files client %{_bindir}/ipsilon-client-install diff --git a/ipsilon/install/ipsilon-server-install b/ipsilon/install/ipsilon-server-install index 809d4c8..0625125 100755 --- a/ipsilon/install/ipsilon-server-install +++ b/ipsilon/install/ipsilon-server-install @@ -27,7 +27,7 @@ DATADIR = '/var/lib/ipsilon' HTTPDCONFD = '/etc/httpd/conf.d' BINDIR = '/usr/libexec' STATICDIR = '/usr/share/ipsilon' -CACHEDIR = '/var/cache/httpd/ipsilon' +CACHEDIR = '/var/cache/ipsilon' WSGI_SOCKET_PREFIX = None @@ -242,6 +242,10 @@ def uninstall(plugins, args): 'ipsilon-%s.conf' % args['instance']) data_dir = os.path.join(DATADIR, args['instance']) + tconf = ConfigParser.SafeConfigParser() + tconf.read(os.path.join(instance_conf, 'ipsilon.conf')) + cache_dir = tconf.get('global', 'cache_dir').replace('"', '') + if not os.path.exists(instance_conf): raise Exception('Could not find instance %s configuration' % args['instance']) @@ -294,6 +298,9 @@ def uninstall(plugins, args): shutil.rmtree(instance_conf) logger.info('Erasing instance data') shutil.rmtree(data_dir) + if cache_dir and os.path.exists(cache_dir): + for fn in os.listdir(cache_dir): + os.unlink(os.path.join(cache_dir, fn)) logger.info('Uninstalled instance %s' % args['instance']) diff --git a/ipsilon/ipsilon b/ipsilon/ipsilon index 8264bce..c62a9aa 100755 --- a/ipsilon/ipsilon +++ b/ipsilon/ipsilon @@ -60,7 +60,9 @@ template_env = Environment(loader=ChoiceLoader(template_loaders), if __name__ == "__main__": conf = {'/': {'tools.staticdir.root': os.getcwd()}, '/ui': {'tools.staticdir.on': True, - 'tools.staticdir.dir': 'ui'}} + 'tools.staticdir.dir': 'ui'}, + '/cache': {'tools.staticdir.on': True, + 'tools.staticdir.dir': 'cache'}} cherrypy.quickstart(Root('default', template_env), cherrypy.config['base.mount'], conf) diff --git a/quickrun.py b/quickrun.py index 73baae7..c3d7c73 100755 --- a/quickrun.py +++ b/quickrun.py @@ -51,6 +51,7 @@ def config(workdir): subprocess.call(['sqlite3', '-init', sql, users_db, '.quit']) trans_db = os.path.join(workdir, 'transactions.sqlite') + cachedir = os.path.join(workdir, 'cache') with open(CONF_TEMPLATE) as f: conf_template = f.read() @@ -59,6 +60,7 @@ def config(workdir): 'instance': 'idp', 'staticdir': os.getcwd(), 'datadir': workdir, + 'cachedir': cachedir, 'admindb': admin_db, 'usersdb': users_db, 'transdb': trans_db, @@ -95,6 +97,9 @@ if __name__ == '__main__': os.symlink(os.path.join(os.getcwd(), 'ui'), os.path.join(args['workdir'], 'ui')) + if not os.path.exists(os.path.join(args['workdir'], 'cache')): + # This is only used in quickrun. Apache serves this directly + os.makedirs(os.path.join(args['workdir'], 'cache')) os.chdir(args['workdir']) diff --git a/templates/install/idp.conf b/templates/install/idp.conf index dcc8592..ff69db6 100644 --- a/templates/install/idp.conf +++ b/templates/install/idp.conf @@ -1,5 +1,6 @@ Alias /${instance}/ui ${staticdir}/ui Alias /.well-known ${wellknowndir} +Alias /${instance}/cache /var/cache/ipsilon WSGIScriptAlias /${instance} ${ipsilondir}/ipsilon WSGIDaemonProcess ${instance} user=${sysuser} group=${sysuser} home=${datadir} display-name=ipsilon-${instance} ${wsgi_socket} @@ -23,3 +24,10 @@ ${sslrequiressl} ForceType application/json + + + SetHandler None + AllowOverride None + Satisfy Any + Allow from all + diff --git a/templates/install/ipsilon.conf b/templates/install/ipsilon.conf index b57aa55..57ee2ea 100644 --- a/templates/install/ipsilon.conf +++ b/templates/install/ipsilon.conf @@ -2,6 +2,7 @@ debug = ${debugging} tools.log_request_response.on = False template_dir = "templates" +cache_dir = "${cachedir}" db.conn.log = False log.screen = ${debugging} diff --git a/tests/attrs.py b/tests/attrs.py index 956e7dd..2739751 100755 --- a/tests/attrs.py +++ b/tests/attrs.py @@ -13,6 +13,7 @@ from string import Template idp_g = {'TEMPLATES': '${TESTDIR}/templates/install', 'CONFDIR': '${TESTDIR}/etc', 'DATADIR': '${TESTDIR}/lib', + 'CACHEDIR': '${TESTDIR}/cache', 'HTTPDCONFD': '${TESTDIR}/${NAME}/conf.d', 'STATICDIR': '${ROOTDIR}', 'BINDIR': '${ROOTDIR}/ipsilon', diff --git a/tests/dbupgrades.py b/tests/dbupgrades.py index 73d04fb..296ccbb 100755 --- a/tests/dbupgrades.py +++ b/tests/dbupgrades.py @@ -14,6 +14,7 @@ import ipsilon.util.data idp_g = {'TEMPLATES': '${TESTDIR}/templates/install', 'CONFDIR': '${TESTDIR}/etc', 'DATADIR': '${TESTDIR}/lib', + 'CACHEDIR': '${TESTDIR}/cache', 'HTTPDCONFD': '${TESTDIR}/${NAME}/conf.d', 'STATICDIR': '${ROOTDIR}', 'BINDIR': '${ROOTDIR}/ipsilon', diff --git a/tests/fconf.py b/tests/fconf.py index b895a30..f6985a5 100755 --- a/tests/fconf.py +++ b/tests/fconf.py @@ -23,6 +23,7 @@ spport = '45081' idp_g = {'TEMPLATES': '${TESTDIR}/templates/install', 'CONFDIR': '${TESTDIR}/etc', 'DATADIR': '${TESTDIR}/lib', + 'CACHEDIR': '${TESTDIR}/cache', 'HTTPDCONFD': '${TESTDIR}/${NAME}/conf.d', 'STATICDIR': '${ROOTDIR}', 'BINDIR': '${ROOTDIR}/ipsilon', diff --git a/tests/helpers/common.py b/tests/helpers/common.py index a7021e2..87cbd44 100755 --- a/tests/helpers/common.py +++ b/tests/helpers/common.py @@ -96,6 +96,7 @@ class IpsilonTestBase(object): os.mkdir(os.path.join(self.testdir, 'lib')) os.mkdir(os.path.join(self.testdir, 'lib', test.name)) os.mkdir(os.path.join(self.testdir, 'log')) + os.mkdir(os.path.join(self.testdir, 'cache')) def generate_profile(self, global_opts, args_opts, name, addr, port, nameid='unspecified'): diff --git a/tests/ldap.py b/tests/ldap.py index 76797b8..e807b07 100755 --- a/tests/ldap.py +++ b/tests/ldap.py @@ -12,6 +12,7 @@ from string import Template idp_g = {'TEMPLATES': '${TESTDIR}/templates/install', 'CONFDIR': '${TESTDIR}/etc', 'DATADIR': '${TESTDIR}/lib', + 'CACHEDIR': '${TESTDIR}/cache', 'HTTPDCONFD': '${TESTDIR}/${NAME}/conf.d', 'STATICDIR': '${ROOTDIR}', 'BINDIR': '${ROOTDIR}/ipsilon', diff --git a/tests/ldapdown.py b/tests/ldapdown.py index 2c7138c..4294e7e 100755 --- a/tests/ldapdown.py +++ b/tests/ldapdown.py @@ -14,6 +14,7 @@ from string import Template idp_g = {'TEMPLATES': '${TESTDIR}/templates/install', 'CONFDIR': '${TESTDIR}/etc', 'DATADIR': '${TESTDIR}/lib', + 'CACHEDIR': '${TESTDIR}/cache', 'HTTPDCONFD': '${TESTDIR}/${NAME}/conf.d', 'STATICDIR': '${ROOTDIR}', 'BINDIR': '${ROOTDIR}/ipsilon', diff --git a/tests/openid.py b/tests/openid.py index 2e2e67b..949ba35 100755 --- a/tests/openid.py +++ b/tests/openid.py @@ -13,6 +13,7 @@ from string import Template idp_g = {'TEMPLATES': '${TESTDIR}/templates/install', 'CONFDIR': '${TESTDIR}/etc', 'DATADIR': '${TESTDIR}/lib', + 'CACHEDIR': '${TESTDIR}/cache', 'HTTPDCONFD': '${TESTDIR}/${NAME}/conf.d', 'STATICDIR': '${ROOTDIR}', 'BINDIR': '${ROOTDIR}/ipsilon', diff --git a/tests/pgdb.py b/tests/pgdb.py index a8397b9..c29d883 100755 --- a/tests/pgdb.py +++ b/tests/pgdb.py @@ -13,6 +13,7 @@ from string import Template idp_g = {'TEMPLATES': '${TESTDIR}/templates/install', 'CONFDIR': '${TESTDIR}/etc', 'DATADIR': '${TESTDIR}/lib', + 'CACHEDIR': '${TESTDIR}/cache', 'HTTPDCONFD': '${TESTDIR}/${NAME}/conf.d', 'STATICDIR': '${ROOTDIR}', 'BINDIR': '${ROOTDIR}/ipsilon', diff --git a/tests/test1.py b/tests/test1.py index 0a0abcf..69c5938 100755 --- a/tests/test1.py +++ b/tests/test1.py @@ -12,6 +12,7 @@ from string import Template idp_g = {'TEMPLATES': '${TESTDIR}/templates/install', 'CONFDIR': '${TESTDIR}/etc', 'DATADIR': '${TESTDIR}/lib', + 'CACHEDIR': '${TESTDIR}/cache', 'HTTPDCONFD': '${TESTDIR}/${NAME}/conf.d', 'STATICDIR': '${ROOTDIR}', 'BINDIR': '${ROOTDIR}/ipsilon', diff --git a/tests/testgssapi.py b/tests/testgssapi.py index a124c19..d73122c 100755 --- a/tests/testgssapi.py +++ b/tests/testgssapi.py @@ -13,6 +13,7 @@ from string import Template idp_g = {'TEMPLATES': '${TESTDIR}/templates/install', 'CONFDIR': '${TESTDIR}/etc', 'DATADIR': '${TESTDIR}/lib', + 'CACHEDIR': '${TESTDIR}/cache', 'HTTPDCONFD': '${TESTDIR}/${NAME}/conf.d', 'STATICDIR': '${ROOTDIR}', 'BINDIR': '${ROOTDIR}/ipsilon', diff --git a/tests/testlogout.py b/tests/testlogout.py index efc4934..268a684 100755 --- a/tests/testlogout.py +++ b/tests/testlogout.py @@ -13,6 +13,7 @@ from string import Template idp_g = {'TEMPLATES': '${TESTDIR}/templates/install', 'CONFDIR': '${TESTDIR}/etc', 'DATADIR': '${TESTDIR}/lib', + 'CACHEDIR': '${TESTDIR}/cache', 'HTTPDCONFD': '${TESTDIR}/${NAME}/conf.d', 'STATICDIR': '${ROOTDIR}', 'BINDIR': '${ROOTDIR}/ipsilon', diff --git a/tests/testmapping.py b/tests/testmapping.py index 64a31cd..6daa636 100755 --- a/tests/testmapping.py +++ b/tests/testmapping.py @@ -16,6 +16,7 @@ from string import Template idp_g = {'TEMPLATES': '${TESTDIR}/templates/install', 'CONFDIR': '${TESTDIR}/etc', 'DATADIR': '${TESTDIR}/lib', + 'CACHEDIR': '${TESTDIR}/cache', 'HTTPDCONFD': '${TESTDIR}/${NAME}/conf.d', 'STATICDIR': '${ROOTDIR}', 'BINDIR': '${ROOTDIR}/ipsilon', diff --git a/tests/testnameid.py b/tests/testnameid.py index ffbbeac..2d353ca 100755 --- a/tests/testnameid.py +++ b/tests/testnameid.py @@ -17,6 +17,7 @@ from string import Template idp_g = {'TEMPLATES': '${TESTDIR}/templates/install', 'CONFDIR': '${TESTDIR}/etc', 'DATADIR': '${TESTDIR}/lib', + 'CACHEDIR': '${TESTDIR}/cache', 'HTTPDCONFD': '${TESTDIR}/${NAME}/conf.d', 'STATICDIR': '${ROOTDIR}', 'BINDIR': '${ROOTDIR}/ipsilon', diff --git a/tests/testrest.py b/tests/testrest.py index dadaad2..b886727 100755 --- a/tests/testrest.py +++ b/tests/testrest.py @@ -13,6 +13,7 @@ from string import Template idp_g = {'TEMPLATES': '${TESTDIR}/templates/install', 'CONFDIR': '${TESTDIR}/etc', 'DATADIR': '${TESTDIR}/lib', + 'CACHEDIR': '${TESTDIR}/cache', 'HTTPDCONFD': '${TESTDIR}/${NAME}/conf.d', 'STATICDIR': '${ROOTDIR}', 'BINDIR': '${ROOTDIR}/ipsilon', diff --git a/tests/trans.py b/tests/trans.py index 619945c..22e24de 100755 --- a/tests/trans.py +++ b/tests/trans.py @@ -13,6 +13,7 @@ from string import Template idp_g = {'TEMPLATES': '${TESTDIR}/templates/install', 'CONFDIR': '${TESTDIR}/etc', 'DATADIR': '${TESTDIR}/lib', + 'CACHEDIR': '${TESTDIR}/cache', 'HTTPDCONFD': '${TESTDIR}/${NAME}/conf.d', 'STATICDIR': '${ROOTDIR}', 'BINDIR': '${ROOTDIR}/ipsilon', -- 2.20.1