ipa-server-install now renders UI assets

This commit is contained in:
Jason Gerard DeRose 2009-11-02 14:16:27 -07:00
parent bd619adb5c
commit 5782b882a7
6 changed files with 46 additions and 15 deletions

View File

@ -17,10 +17,13 @@ install-exec-local:
chmod 700 $(DESTDIR)$(localstatedir)/lib/ipa/sysrestore chmod 700 $(DESTDIR)$(localstatedir)/lib/ipa/sysrestore
mkdir -p $(DESTDIR)$(localstatedir)/cache/ipa/sessions mkdir -p $(DESTDIR)$(localstatedir)/cache/ipa/sessions
chmod 700 $(DESTDIR)$(localstatedir)/cache/ipa/sessions chmod 700 $(DESTDIR)$(localstatedir)/cache/ipa/sessions
mkdir -p $(DESTDIR)$(localstatedir)/cache/ipa/assets
chmod 700 $(DESTDIR)$(localstatedir)/cache/ipa/assets
uninstall-local: uninstall-local:
-rmdir $(DESTDIR)$(localstatedir)/lib/ipa/sysrestore -rmdir $(DESTDIR)$(localstatedir)/lib/ipa/sysrestore
-rmdir $(DESTDIR)$(localstatedir)/lib/ipa -rmdir $(DESTDIR)$(localstatedir)/lib/ipa
-rmdir $(DESTDIR)$(localstatedir)/cache/ipa/assets
-rmdir $(DESTDIR)$(localstatedir)/cache/ipa/sessions -rmdir $(DESTDIR)$(localstatedir)/cache/ipa/sessions
-rmdir $(DESTDIR)$(localstatedir)/cache/ipa -rmdir $(DESTDIR)$(localstatedir)/cache/ipa

View File

@ -64,6 +64,15 @@ Alias /ipa/crl "/var/lib/pki-ca/publish"
PythonAutoReload Off PythonAutoReload Off
</Location> </Location>
Alias /ipa-assets/ "/var/cache/ipa/assets/"
<Directory "/var/cache/ipa/assets">
Allow from all
AllowOverride None
Options Indexes FollowSymLinks
ExpiresActive On
ExpiresDefault A31536000
</Directory>
# Do no authentication on the directory that contains error messages # Do no authentication on the directory that contains error messages
<Directory "/usr/share/ipa/html"> <Directory "/usr/share/ipa/html">

View File

@ -53,10 +53,13 @@ from ipapython import sysrestore
from ipapython.ipautil import * from ipapython.ipautil import *
from ipalib import api, util from ipalib import api, util
import ipawebui
pw_name = None pw_name = None
# Used to determine the the highest possible uid/gid # Used to determine the the highest possible uid/gid
MAXINT_32BIT = 2147483648 MAXINT_32BIT = 2147483648
ASSETS_DIR = '/var/cache/ipa/assets'
def parse_options(): def parse_options():
namespace = random.randint(1000000, (MAXINT_32BIT - 1000000)) namespace = random.randint(1000000, (MAXINT_32BIT - 1000000))
@ -387,6 +390,15 @@ def uninstall(ca = False):
fstore.restore_all_files() fstore.restore_all_files()
return 0 return 0
def render_assets():
"""
Render CSS and JavaScript assets.
"""
ui = ipawebui.create_wsgi_app(api)
ui.render_assets()
def main(): def main():
global ds global ds
global pw_name global pw_name
@ -410,15 +422,17 @@ def main():
global fstore global fstore
fstore = sysrestore.FileStore('/var/lib/ipa/sysrestore') fstore = sysrestore.FileStore('/var/lib/ipa/sysrestore')
if options.uninstall:
api.bootstrap(in_server=True)
else:
if options.ca:
ca_type = 'dogtag'
else:
ca_type = 'selfsign'
api.bootstrap(in_server=True, ra_plugin=ca_type) cfg = dict(
in_server=True,
webui_assets_dir=ASSETS_DIR,
)
if not options.uninstall:
if options.ca:
cfg['ra_plugin'] = 'dogtag'
else:
cfg['ra_plugin'] = 'selfsign'
api.bootstrap(**cfg)
api.finalize() api.finalize()
if options.uninstall: if options.uninstall:
@ -440,7 +454,7 @@ def main():
print " * Create and configure an instance of Directory Server" print " * Create and configure an instance of Directory Server"
print " * Create and configure a Kerberos Key Distribution Center (KDC)" print " * Create and configure a Kerberos Key Distribution Center (KDC)"
print " * Configure Apache (httpd)" print " * Configure Apache (httpd)"
print " * Configure TurboGears" print " * Render web UI JavaScript and CSS assets"
if options.setup_dns: if options.setup_dns:
print " * Configure DNS (bind)" print " * Configure DNS (bind)"
if not options.conf_ntp: if not options.conf_ntp:
@ -660,6 +674,9 @@ def main():
krb = krbinstance.KrbInstance(fstore) krb = krbinstance.KrbInstance(fstore)
krb.create_instance(ds_user, realm_name, host_name, domain_name, dm_password, master_password) krb.create_instance(ds_user, realm_name, host_name, domain_name, dm_password, master_password)
# Render webui assets:
render_assets()
# Create a HTTP instance # Create a HTTP instance
if options.http_pin: if options.http_pin:
@ -696,6 +713,7 @@ def main():
fd.write("enable_ra=True\n") fd.write("enable_ra=True\n")
if options.ca: if options.ca:
fd.write("ra_plugin=dogtag\n") fd.write("ra_plugin=dogtag\n")
fd.write('webui_assets_dir=' + ASSETS_DIR + '\n')
fd.close() fd.close()
# Apply any LDAP updates. Needs to be done after the configuration file # Apply any LDAP updates. Needs to be done after the configuration file

View File

@ -395,6 +395,7 @@ fi
%attr(700,root,root) %dir %{_localstatedir}/lib/ipa/sysrestore %attr(700,root,root) %dir %{_localstatedir}/lib/ipa/sysrestore
%dir %{_localstatedir}/cache/ipa %dir %{_localstatedir}/cache/ipa
%attr(700,apache,apache) %dir %{_localstatedir}/cache/ipa/sessions %attr(700,apache,apache) %dir %{_localstatedir}/cache/ipa/sessions
%attr(700,apache,apache) %dir %{_localstatedir}/cache/ipa/assets
%attr(700,root,root) %dir %{_localstatedir}/cache/ipa/kpasswd %attr(700,root,root) %dir %{_localstatedir}/cache/ipa/kpasswd
%{_mandir}/man1/ipa-replica-install.1.gz %{_mandir}/man1/ipa-replica-install.1.gz
%{_mandir}/man1/ipa-replica-manage.1.gz %{_mandir}/man1/ipa-replica-manage.1.gz

View File

@ -109,12 +109,11 @@ DEFAULT_CONFIG = (
('mount_xmlserver', 'xml'), ('mount_xmlserver', 'xml'),
('mount_jsonserver', 'json'), ('mount_jsonserver', 'json'),
('mount_webui', 'ui/'), ('mount_webui', 'ui/'),
('mount_webui_assets', '_/'), ('mount_webui_assets', '/ipa-assets/'),
# WebUI stuff: # WebUI stuff:
('webui_prod', True), ('webui_prod', True),
('webui_assets_dir', None), ('webui_assets_dir', None),
('webui_assets_dburi', None),
# Debugging: # Debugging:
('verbose', False), ('verbose', False),

View File

@ -39,10 +39,11 @@ except ImportError:
pass pass
# START code from paste
# This module is from paste: # Red Hat does not hold the copyright to the following code. The following code
# is from paste:
# http://pythonpaste.org/ # http://pythonpaste.org/
# Which in turn was based on Robert Brewer's: # Which in turn was based on Robert Brewer's modpython_gateway:
# http://projects.amor.org/misc/svn/modpython_gateway.py # http://projects.amor.org/misc/svn/modpython_gateway.py
class InputWrapper(object): class InputWrapper(object):
@ -185,7 +186,7 @@ class Handler(object):
self.started = True self.started = True
self.request.write(data) self.request.write(data)
# END module from paste # END code from paste
def adapter(req, app): def adapter(req, app):