aboutsummaryrefslogtreecommitdiff
path: root/portal-gui
diff options
context:
space:
mode:
Diffstat (limited to 'portal-gui')
-rw-r--r--portal-gui/README291
-rw-r--r--portal-gui/README.apache34
2 files changed, 156 insertions, 169 deletions
diff --git a/portal-gui/README b/portal-gui/README
index 21a85143..f3f1ebcd 100644
--- a/portal-gui/README
+++ b/portal-gui/README
@@ -3,8 +3,8 @@ $Id$
Portal GUI (web interface), written using the rpki Python libraries
and the Django web development framework.
-This is still in early development, but there's a lot of general information
-about Django at http://www.djangoproject.com/
+This is still in early development, but there's a lot of general
+information about Django at http://www.djangoproject.com/
This package is an interface to rpkid and friends, so it assumes that
you'll be running rpkid. If you haven't already done so, you should
@@ -12,41 +12,52 @@ set up rpkid first; see ../rpkid/doc/Installation.
=== Assumptions ===
-This is a list of the assumptions the current rpkigui code makes:
-
-1) There will be at least one resource holder which runs rpkid.
-
-2) The myrpki.py command line tool will handle all the heavy lifting, so it
- must be present on the installed system.
-
-3) All the directories containing the files assosiated with each
- resource handle must reside in the same directory. That is, the
- rpkigui expects the following structure:
-
- /datadir
- /dad
- /rpki.conf
- /entitydb/
- ...
- /mom
- /rpki.conf
- /entitydb/
- ...
- /baby
- /rpki.conf
- /entitydb/
- ...
+This is a list of the assumptions the current portal-gui code makes:
+
+1) There will be at least one resource holder which runs rpkid. In
+rpki parlance, it is "self-hosted."
+
+2) The myrpki.py command line tool will handle all the heavy lifting,
+so it must be present on the installed system.
+
+3) There is a subdirectory for each resource holder served by the
+portal-gui under ${localstatedir}/rpki/conf (typically this is
+/usr/local/var/rpki/conf). Each subdirectory contains the files
+associated with each resource holder (eg. rpki.conf, csv files). For
+example, if the portal gui is configured to serve Alice, Bob and
+Carol, the directory structure will look something like:
+
+ /usr/local/var/rpki/conf/Alice/asns.csv
+ /usr/local/var/rpki/conf/Alice/bpki/
+ /usr/local/var/rpki/conf/Alice/entitydb/
+ /usr/local/var/rpki/conf/Alice/prefixes.csv
+ /usr/local/var/rpki/conf/Alice/roas.csv
+ /usr/local/var/rpki/conf/Alice/rpki.conf
+
+ /usr/local/var/rpki/conf/Bob/asns.csv
+ /usr/local/var/rpki/conf/Bob/bpki/
+ /usr/local/var/rpki/conf/Bob/entitydb/
+ /usr/local/var/rpki/conf/Bob/prefixes.csv
+ /usr/local/var/rpki/conf/Bob/roas.csv
+ /usr/local/var/rpki/conf/Bob/rpki.conf
+
+ /usr/local/var/rpki/conf/Carol/asns.csv
+ /usr/local/var/rpki/conf/Carol/bpki/
+ /usr/local/var/rpki/conf/Carol/entitydb/
+ /usr/local/var/rpki/conf/Carol/prefixes.csv
+ /usr/local/var/rpki/conf/Carol/roas.csv
+ /usr/local/var/rpki/conf/Carol/rpki.conf
=== Prerequisites ===
-- install django
+- install Django
-First, you must install Django 1.2 or greater on your system (django 1.1 may
+First, you must install Django 1.2 or greater on your system (Django 1.1 may
work, but you will need to disable to CsrfMiddleware in settings.py).
Fedora: yum install Django
-- the portal-gui must be run using apache with mod_wsgi
+- the portal-gui must be run using Apache with mod_wsgi
Fedora: yum install httpd mod_wsgi
@@ -56,130 +67,117 @@ Fedora: yum install mod_ssl
==== Installation ===
-The portal-gui is configured via the use of the supplied "build.sh"
-script. You must edit at least the "REQUIRED SETTINGS" section.
-
- # cd $top/portal-gui/
- # ./build.sh
-
-Once the portal-gui has been configured, the next step is to install it:
-
- # make install
-
-At the end of the installation process, the manage.py script will prompt you to
-create a superuser. You want to say "yes" to this prompt. The superuser
-account can be named whatever you want. The superuser account is not necessary,
-but is useful because you can use django's admin views (via the /admin URL) to
-inspect the portal-gui's database directly, which may be useful for debugging.
-It also allows you to log into any of the resource handle accounts served by the
-portal-gui. (n.b. this superuser account should be different from the user
-account for the resource handle that is self-hosted on your rpkid)
-
-NOTE: even though the manage.py script asks you for a password, you will be
-configuring apache to use HTTP DIGEST authentication instead. Therefore, it is
-necessary to add the user to the password file that apache will consult IN
-ADDITION:
-
- # htdigest /usr/local/share/portal-gui/htpasswd myrpki <username>
+The portal-gui is configured and installed using the Makefile in the
+top level directory of the rpki tools.
-(n.b. the manage.py step of creating the superuser is still required because it
-stores the user rights in the portal-gui's database, but there is no apparent
-way to squash the password input prompt.)
+At the end of the installation process, the django-admin.py script
+will prompt you to create a superuser. You want to say "yes" to this
+prompt. The superuser account can be named whatever you want. The
+superuser account is not necessary, but is useful because you can use
+Django's admin views (via the /admin/ URL) to inspect the portal-gui's
+database directly, which may be useful for debugging. It also allows
+you to log into any of the resource handle accounts served by the
+portal-gui. (n.b. this superuser account should be different from
+the user account for the resource handle that is self-hosted on your
+rpkid).
-- configure apache to serve the portal-gui
+- configure Apache to serve the portal-gui
See $top/portal-gui/README.apache
-=== list_resources helper script ===
+=== rpkigui-list-resources helper script ===
-The portal-gui does not directly talk to the rpkid server. Instead, there
-is a command line script named "list_resources" which talks to rpkid and
-updates the portal-gui database with information that has changed. For
-testing purposes, this script can be run by hand. However, for deployment
-you will need to set up a cron job to run this script periodically.
+The portal-gui does not directly talk to the rpkid server. Instead,
+there is a command line script named "rpkigui-list-resources" which
+talks to rpkid and updates the portal-gui database with information
+that has changed. For testing purposes, this script can be run by
+hand. However, for deployment you will need to set up a cron job to
+run this script periodically. By default, this script is installed in
+${libexecdir}, which is typically /usr/local/libexec.
-NOTE that "list_resources" *must* be run in the directory where the
-rpki.conf for the resource handle that is self-hosting the rpkid.
-Alternatively, you can set the $MYRPKI_CONF environment variable to full
-pathname of the rpki.conf for the self-hosted resource handle (However, in
-order for this to work, you need to specify the full path name for
-"bpki_servers_directory" variable in your rpki.conf.)
+NOTE that "rpkigui-list-resources" *MUST* be run in the directory
+where the rpki.conf for the resource handle that is self-hosting the
+rpkid. Alternatively, you can set the $RPKI_CONF environment
+variable to full pathname of the rpki.conf for the self-hosted
+resource handle (However, in order for this to work, you need to
+specify the full path name for "bpki_servers_directory" variable in
+your rpki.conf.)
-The first time you invoke it, you may wish to use the -v option, which puts
-list_resources into verbose mode, meaning it will display progress
-information. Normally, this script is intended to be invoked via cron, so
-it is silent unless an error occurs:
+The first time you invoke it, you may wish to use the -v option, which
+puts rpkigui-list-resources into verbose mode, meaning it will display
+progress information. Normally, this script is intended to be invoked
+via cron, so it is silent unless an error occurs:
- /usr/local/share/portal-gui/scripts/list_resources -v
+ /usr/local/libexec/rpkigui-list-resources -v
-You may way to create a script which is invoked by cron:
+You may wish to create a script which is invoked by cron:
#!/bin/sh
- cd <directory containing rpki.conf for the self-hosted rpkid>
- /usr/local/share/portal-gui/scripts/list_resources
-This script probably only needs to be run infrequently. It's sole purpose
-is to query rpkid to ask what resources and children are configured for each
-resource handle. This information does not change often.
+ # self-host resource handle
+ self_handle=FOO
-NOTE: you should NOT run the script with the ".py" suffix directly! Use the
-script WITHOUT the suffix, which is a shell-script wrapper that sets the
-appropriate enviroment variables required for the python script to
-run.
+ # <directory containing rpki.conf for the self-hosted rpkid>
+ cd /usr/local/var/rpki/conf/$self_handle
-=== Load existing data ===
+ /usr/local/libexec/rpkigui-list-resources
+
+This script probably only needs to be run infrequently. It's sole
+purpose is to query rpkid to ask what resources and children are
+configured for each resource handle. This information does not change
+often.
-If you already have delegated resources to children, or created ROAs in the
-.csv files for the myrpki.py command line tool, you will want to load the
-portal-gui with this information. There is a helper script for doing this
-step. Simply chdir to the directory containing your rpki.conf and .csv
-files and run:
+=== Load existing data ===
- /usr/local/share/portal-gui/scripts/load_csv
+If you already have delegated resources to children, or created ROAs
+in the .csv files for the myrpki.py command line tool, you will want
+to load the portal-gui with this information. There is a helper
+script for doing this step. Simply chdir to the directory containing
+your rpki.conf and .csv files and run:
-NOTE that you must run the "list_resources" script *prior* to using
-"load_csv" or you will get errors because portal-gui won't yet know about
-which handles it is serving.
+ $ cd /usr/local/var/conf/<handle>
+ $ /usr/local/sbin/rpkigui-load-csv
-You should run "load_csv" in *each* of your directories for each handle.
+NOTE that you must run the "rpkigui-list-resources" script *prior* to
+using "rpkigui-load-csv" or you will get errors because portal-gui
+won't yet know about which handles it is serving.
-NOTE: you should NOT run the script with the ".py" suffix directly! Use the
-script WITHOUT the suffix, which is a shell-script wrapper that sets the
-appropriate enviroment variables required for the python script to
-run.
+You should run "rpkigui-load-csv" in *EACH* of your directories for
+each handle.
=== Starting the Portal GUI ===
-If you have configured django to use apached and mod_wsgi, you just need to
-start your web server.
+If you have configured Django to use Apache and mod_wsgi, you just
+need to start your web server.
+
+Simply navigate to /rpki/ on your web server and you will be presented
+with the portal-gui's login page.
=== Creating Users ===
-The portal-gui's security model allows the use of separate logins to manage each
-resource handle. Each resource handle needs to be configured to allow one or
-more users to manage it. This is accomplished by using the "adduser" script
-that is installed with the portal-gui in /usr/local/share/portal-gui/scripts/.
-(n.b. run the adduser script *without* the .py suffix, which is a wrapper script
-which sets the PYTHONPATH to match your installation)
+The portal-gui's security model allows the use of separate logins to
+manage each resource handle. Each resource handle needs to be
+configured to allow one or more users to manage it. This is
+accomplished by using the "rpkigui-add-user" script that is installed
+with the portal-gui in ${sbindir} (eg. /usr/local/sbin).
-To create users, run the "adduser" script. The adduser script takes three
-arguments: 1) the username for the new account, 2) the email address for the
-human that owns the account, and 3) the handle of the self-hosted resource
-holder who is hosting this user (for self-hosted users, specify the same
-username for the "host handle").
+To create users, run the "rpkigui-add-user" script. The script takes
+three arguments: 1) the username for the new account, 2) the email
+address for the human that owns the account, and 3) the handle of the
+self-hosted resource holder who is hosting this user (for self-hosted
+users, specify the same username for the "host handle").
Example:
- # cd /usr/local/share/portal-gui/scripts/
- # ./adduser SPARTA-ELS michael.elkins@cobham.com SPARTA
+ # /usr/local/sbin/rpkigui-add-user Dave nobody@example.com John
=== Optional - Specify additional resource handles for a portal-gui user ===
-You can configure which users are allowed to manage a particular resource
-handle once you have performed the "list_resources" step described above to
-populate the database:
+You can configure which users are allowed to manage a particular
+resource handle once you have performed the "rpkigui-list-resources"
+step described above to populate the database:
- - navigate to http://<ip:port>/admin/myrpki/conf/
+ - navigate to http://<ip:port>/admin/app/conf/
- log in as the portal-gui superuser using the password you
specified during the install step above
- click on the link for the handle you wish to change
@@ -190,46 +188,27 @@ populate the database:
=== Debugging Tips ===
The portal-gui is still in development. As such, problems may arise.
-Occasionally, portal-gui fails to appropriately validate data that it puts
-into its Django db. This may cause exceptions to be thrown, as the code
-assumes that data in the database is already valid. You can delete specific
-data from the Django database using Django's built-in admininstrative
-interface. It's available by navigating to the /admin/myrpki/ URL and
-logging in as the superuser account. Here you will find a list of all the
-tables used by the portal-gui.
-
-If you are updating from the subversion repository, there may occasionally
-be changes in the portal-gui's database schema that require a complete reset
-of the database before it will function. Don't worry about losing data,
-because list_resources and load_csv can be run again to populate the
-database with your data.
+Occasionally, portal-gui fails to appropriately validate data that it
+puts into its Django db. This may cause exceptions to be thrown, as
+the code assumes that data in the database is already valid. You can
+delete specific data from the Django database using Django's built-in
+admininstrative interface. It's available by navigating to the
+/admin/app/ URL and logging in as the superuser account. Here you
+will find a list of all the tables used by the portal-gui.
+
+If you are updating from the subversion repository, there may
+occasionally be changes in the portal-gui's database schema that
+require a complete reset of the database before it will function.
+Don't worry about losing data, because rpkigui-list-resources and
+rpkigui-load-csv can be run again to populate the database with your
+data.
Here are the steps for reseting to the initial state:
- cd $datarootdir/portal-gui/rpkigui
- python manage.py reset --pythonpath=$top/rpkid myrpki
+ $ django-admin.py reset --settings=rpki.gui.settings
>>> answer "yes" to really reset it <<<
- cd <directory containing rpki.conf for the self-hosted rpkid>
- $datarootdir/portal-gui/scripts/list_resources -v
- $datarootdir/portal-gui/scripts/load_csv
-
-Testing with yamltest
-=====================
-
-- you can specify
- CONFDIR=$top/rpkid/tests/yamltest.dir
- to make the portal-gui be a front-end for the resource handles created by
- a yamltest run.
-
-- you will need to periodically run the lists_resources script in
- $top/rpkid/tests/yamltest.dir/RIR
- to update the portal-gui database with the current state of children and
- received resources
-
-- the web server runs as the `apache' user by default under Fedora, which won't
- have permissions to write to the yamltest.dir directory. easiet thing to do
- is chown the entire tree so that the `apache' user has full access:
-
- # chown -R apache $top/rpkid/tests/yamltest.dir
+ $ cd /usr/local/var/rpki/conf/<directory containing rpki.conf for the self-hosted rpkid>
+ $ /usr/local/libexec/rpkigui-list-resources -v
+ $ /usr/local/libexec/rpkigui-load-csv
diff --git a/portal-gui/README.apache b/portal-gui/README.apache
index 151d47d7..2955061a 100644
--- a/portal-gui/README.apache
+++ b/portal-gui/README.apache
@@ -1,26 +1,34 @@
$Id$
-This file details how to configure apache+mod_wsgi to serve the portal-gui.
+This file details how to configure apache+mod_wsgi to serve the
+portal-gui.
-The web interface must be deployed to work with an existing web server.
-Instructions for using Django with Apache and mod_wsgi can be found at
+The web interface must be deployed to work with an existing web
+server. Instructions for using Django with Apache and mod_wsgi can be
+found at
http://docs.djangoproject.com/en/1.2/howto/deployment/modwsgi/#howto-deployment-modwsgi
Setup
=====
-- Follow the steps in detailed in the $top/portal-gui/README file to set up the
- portal-gui for the self-hosted resource handle that runs rpkid.
+- Follow the steps in detailed in the $top/portal-gui/README file to
+ set up the portal-gui for the self-hosted resource handle that runs
+ rpkid.
- After running "make" in $top/portal-gui, there will be a file named
- $top/portal-gui/apache/zrpki.conf. This is a configuration file for
- apache which does most of the work configuring the portal-gui to run
- under mod_wsgi.
+ $top/portal-gui/apache/rpki.conf. This is a configuration file for
+ Apache which does most of the work configuring the portal-gui to
+ run under mod_wsgi.
- You may need to edit the paths for Django if they are installed in a
- different location on your host. Note that this is only necessary if
- you wish to use the Django admin web console. The portal-gui itself
- will operate correctly even if this path is wrong.
+You may need to edit the paths for Django if they are installed in a
+different location on your host. Note that this is only necessary if
+you wish to use the Django admin web console. The portal-gui itself
+will operate correctly even if this path is wrong.
+
+NOTE: Apache loads the configuration files sorted alphabetically.
+Thus, you need to ensure that your file is renamed as appropriate for
+your environment.
Fedora:
- cp $top/portal-gui/apache/zrpki.conf /etc/httpd/conf.d/
+ $ cp $top/portal-gui/apache/rpki.conf /etc/httpd/conf.d/wsgi-rpki.conf
+ $ service httpd restart