aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.in4
-rw-r--r--buildtools/debian-skeleton/rpki-ca.install5
-rw-r--r--buildtools/debian-skeleton/rpki-ca.postinst14
-rw-r--r--buildtools/debian-skeleton/rpki-ca.postrm6
-rw-r--r--buildtools/debian-skeleton/rpki-rp.install4
-rw-r--r--buildtools/debian-skeleton/rpki-rp.postinst5
-rw-r--r--buildtools/debian-skeleton/rpki-rp.postrm2
-rw-r--r--ca/Makefile.in8
-rw-r--r--rp/config/Makefile.in12
-rwxr-xr-xrp/config/rpki-sql-setup34
-rw-r--r--setup.py182
11 files changed, 147 insertions, 129 deletions
diff --git a/Makefile.in b/Makefile.in
index a85cc6a4..59495f70 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -218,9 +218,9 @@ tags: Makefile .FORCE
makemigrations:
RPKI_CONF=makemigrations.conf.$$$$ TEMP_DB=makemigrations.db.$$$$; export RPKI_CONF TEMP_DB; trap "rm -f $$RPKI_CONF $$TEMP_DB" 0; \
- ${PYTHON} ca/rpki-confgen --read-xml ca/rpki-confgen.xml --autoconf --set myrpki::shared_sql_engine=sqlite3 \
+ ${PYTHON} rp/config/rpki-confgen --read-xml rp/config/rpki-confgen.xml --autoconf --set myrpki::shared_sql_engine=sqlite3 \
--set myrpki::rpkid_sql_database=$$TEMP_DB --set myrpki::irdbd_sql_database=$$TEMP_DB --set myrpki::pubd_sql_database=$$TEMP_DB \
--pwgen myrpki::shared_sql_password --pwgen web_portal::secret-key --write-conf $$RPKI_CONF; \
- for i in rpkid pubd irdb; do ca/rpki-manage makemigrations --settings rpki.django_settings.$$i; done
+ for i in rpkid pubd irdb rcynicdb; do rp/config/rpki-manage makemigrations --settings rpki.django_settings.$$i; done
.FORCE:
diff --git a/buildtools/debian-skeleton/rpki-ca.install b/buildtools/debian-skeleton/rpki-ca.install
index 90f4eecf..075a3a32 100644
--- a/buildtools/debian-skeleton/rpki-ca.install
+++ b/buildtools/debian-skeleton/rpki-ca.install
@@ -1,3 +1,6 @@
usr/lib/rpki
-usr/sbin
+usr/sbin/irbe_cli
+usr/sbin/rpki-start-servers
+usr/sbin/rpkic
+usr/sbin/rpkigui-query-routes
usr/share/rpki
diff --git a/buildtools/debian-skeleton/rpki-ca.postinst b/buildtools/debian-skeleton/rpki-ca.postinst
index 9bd1f96d..d8e089ce 100644
--- a/buildtools/debian-skeleton/rpki-ca.postinst
+++ b/buildtools/debian-skeleton/rpki-ca.postinst
@@ -15,9 +15,9 @@ setup_config() {
--set myrpki::run_rpkid=yes \
--set myrpki::run_pubd=yes \
--write-xml /etc/rpki/rpki.ca.xml \
- --write-conf /etc/rpki/rpki.ca.sample.conf
+ --write-conf /etc/rpki/rpki.ca.conf.sample
- if test ! -f /etc/rpki.conf || cmp -s /etc/rpki.conf /etc/rpki/rpki.rp.sample.conf
+ if test ! -f /etc/rpki.conf || cmp -s /etc/rpki.conf /etc/rpki/rpki.rp.conf.sample
then
cp -p /etc/rpki/rpki.ca.conf.sample /etc/rpki.conf
fi
@@ -25,17 +25,16 @@ setup_config() {
setup_sql() {
rpki-sql-setup --debug --verbose --postgresql-root-username postgres create
+ sudo -u rpki rpki-manage migrate rpkidb --settings rpki.django_settings.rpkid
+ sudo -u rpki rpki-manage migrate pubdb --settings rpki.django_settings.pubd
+ sudo -u rpki rpki-manage migrate irdb --settings rpki.django_settings.irdb
+ sudo -u rpki rpki-manage migrate app --settings rpki.django_settings.gui
}
setup_bpki() {
rpkic initialize_server_bpki
}
-setup_django() {
- rpki-manage syncdb --noinput
- rpki-manage migrate app
-}
-
setup_cron() {
t=$(hexdump -n 1 -e '"%u"' /dev/urandom) && echo "$(($t % 60)) */2 * * * nobody /usr/lib/rpki/rpkigui-import-routes" > /etc/cron.d/rpkigui-routeviews
chmod 644 /etc/cron.d/rpkigui-routeviews
@@ -63,7 +62,6 @@ case "$1" in
setup_config
setup_sql
setup_bpki
- setup_django
setup_cron
;;
diff --git a/buildtools/debian-skeleton/rpki-ca.postrm b/buildtools/debian-skeleton/rpki-ca.postrm
index c49492fe..c9418cdb 100644
--- a/buildtools/debian-skeleton/rpki-ca.postrm
+++ b/buildtools/debian-skeleton/rpki-ca.postrm
@@ -22,11 +22,11 @@ set -e
case "$1" in
purge)
- if cmp -s /etc/rpki.conf /etc/rpki/rpki.ca.sample.conf
+ if cmp -s /etc/rpki.conf /etc/rpki/rpki.ca.conf.sample
then
- cp -p /etc/rpki/rpki.rp.sample.conf /etc/rpki.conf
+ cp -p /etc/rpki/rpki.rp.conf.sample /etc/rpki.conf
fi
- rm -f /etc/rpki/rpki.ca.sample.conf /etc/rpki/rpki.ca.xml
+ rm -f /etc/rpki/rpki.ca.conf.sample /etc/rpki/rpki.ca.xml
rm -f /etc/rpki/apache.conf /etc/rpki/apache.cer /etc/rpki/apache.key
;;
diff --git a/buildtools/debian-skeleton/rpki-rp.install b/buildtools/debian-skeleton/rpki-rp.install
index fe0073a2..f1db3570 100644
--- a/buildtools/debian-skeleton/rpki-rp.install
+++ b/buildtools/debian-skeleton/rpki-rp.install
@@ -3,4 +3,8 @@ etc/rpki/trust-anchors
etc/xinetd.d/rpki-rtr
usr/bin
usr/lib/python2.7
+usr/sbin/rpki-confgen
+usr/sbin/rpki-manage
+usr/sbin/rpki-sql-backup
+usr/sbin/rpki-sql-setup
var/rcynic
diff --git a/buildtools/debian-skeleton/rpki-rp.postinst b/buildtools/debian-skeleton/rpki-rp.postinst
index ae95e7b2..a3c1bb68 100644
--- a/buildtools/debian-skeleton/rpki-rp.postinst
+++ b/buildtools/debian-skeleton/rpki-rp.postinst
@@ -37,16 +37,17 @@ setup_config() {
--set myrpki::run_rpkid=no \
--set myrpki::run_pubd=no \
--write-xml /etc/rpki/rpki.rp.xml \
- --write-conf /etc/rpki/rpki.rp.sample.conf
+ --write-conf /etc/rpki/rpki.rp.conf.sample
if test ! -f /etc/rpki.conf
then
- cp -p /etc/rpki/rpki.rp.sample.conf /etc/rpki.conf
+ cp -p /etc/rpki/rpki.rp.conf.sample /etc/rpki.conf
fi
}
setup_sql() {
rpki-sql-setup --debug --verbose --postgresql-root-username postgres create
+ sudo -u rpki rpki-manage migrate rcynicdb --settings rpki.django_settings.rcynic
}
# We want to pick a *random* minute for rcynic to run, to spread load
diff --git a/buildtools/debian-skeleton/rpki-rp.postrm b/buildtools/debian-skeleton/rpki-rp.postrm
index 7236d7a5..ff8eafab 100644
--- a/buildtools/debian-skeleton/rpki-rp.postrm
+++ b/buildtools/debian-skeleton/rpki-rp.postrm
@@ -29,7 +29,7 @@ case "$1" in
sudo -u postgres psql -f $sql
rm -f $sql
fi
- rm -f /etc/rpki/rpki.rp.sample.conf /etc/rpki/rpki.rp.xml /etc/rpki.conf
+ rm -f /etc/rpki/rpki.rp.conf.sample /etc/rpki/rpki.rp.xml /etc/rpki.conf
;;
remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
diff --git a/ca/Makefile.in b/ca/Makefile.in
index 27425766..1a18df0b 100644
--- a/ca/Makefile.in
+++ b/ca/Makefile.in
@@ -84,15 +84,15 @@ install-conf:
--set myrpki::run_rpkid=yes \
--set myrpki::run_pubd=yes \
--write-xml ${DESTDIR}${sysconfdir}/rpki/rpki.ca.xml \
- --write-conf ${DESTDIR}${sysconfdir}/rpki/rpki.ca.sample.conf
+ --write-conf ${DESTDIR}${sysconfdir}/rpki/rpki.ca.conf.sample
if test ! -f ${DESTDIR}${sysconfdir}/rpki.conf ||\
- cmp -s ${DESTDIR}${sysconfdir}/rpki.conf ${DESTDIR}${sysconfdir}/rpki/rpki.rp.sample.conf;\
+ cmp -s ${DESTDIR}${sysconfdir}/rpki.conf ${DESTDIR}${sysconfdir}/rpki/rpki.rp.conf.sample;\
then \
- cp -p ${DESTDIR}${sysconfdir}/rpki/rpki.ca.sample.conf ${DESTDIR}${sysconfdir}/rpki.conf
+ cp -p ${DESTDIR}${sysconfdir}/rpki/rpki.ca.conf.sample ${DESTDIR}${sysconfdir}/rpki.conf
fi
#uninstall deinstall::
-# rm -f ${DESTDIR}${sysconfdir}/rpki/rpki.ca.xml ${DESTDIR}${sysconfdir}/rpki/rpki.ca.sample.conf
+# rm -f ${DESTDIR}${sysconfdir}/rpki/rpki.ca.xml ${DESTDIR}${sysconfdir}/rpki/rpki.ca.conf.sample
install-apache:
${libexecdir}/rpkigui-apache-conf-gen --install --verbose
diff --git a/rp/config/Makefile.in b/rp/config/Makefile.in
index d7367a5f..c6050f3e 100644
--- a/rp/config/Makefile.in
+++ b/rp/config/Makefile.in
@@ -23,7 +23,7 @@ srcdir = @srcdir@
CFG_INSTALL_TARGETS = @CFG_INSTALL_TARGETS@
-all:: rpki.rp.xml rpki.rp.sample.conf
+all:: rpki.rp.xml rpki.rp.conf.sample
clean::
@true
@@ -35,7 +35,7 @@ install-always:: all
@echo "== Default configuration file location is ${sysconfdir}/rpki.conf =="
@echo
${INSTALL} -d ${DESTDIR}${sysconfdir}/rpki
- ${INSTALL} rpki.rp.xml rpki.rp.sample.conf ${DESTDIR}${sysconfdir}/rpki
+ ${INSTALL} rpki.rp.xml rpki.rp.conf.sample ${DESTDIR}${sysconfdir}/rpki
test uninstall deinstall::
@true
@@ -56,13 +56,13 @@ rpki.rp.xml: ${abs_top_srcdir}/rpki/autoconf.py rpki-confgen rpki-confgen.xml
--set myrpki::run_pubd=no \
--write-xml $@
-rpki.rp.sample.conf: rpki.rp.xml
+rpki.rp.conf.sample: rpki.rp.xml
${PYTHON} rpki-confgen \
--read-xml rpki.rp.xml \
--write-conf $@
clean::
- rm -f rpki.rp.xml rpki.rp.sample.conf
+ rm -f rpki.rp.xml rpki.rp.conf.sample
install-postconf: \
install-user install-conf install-sql install-django
@@ -75,10 +75,10 @@ install-user:
install-conf:
test -f ${DESTDIR}${sysconfdir}/rpki.conf ||\
- cp -p ${DESTDIR}${sysconfdir}/rpki/rpki.rp.sample.conf ${DESTDIR}${sysconfdir}/rpki.conf
+ cp -p ${DESTDIR}${sysconfdir}/rpki/rpki.rp.conf.sample ${DESTDIR}${sysconfdir}/rpki.conf
#uninstall deinstall::
-# rm -f ${DESTDIR}${sysconfdir}/rpki/rpki.rp.xml ${DESTDIR}${sysconfdir}/rpki/rpki.rp.sample.conf
+# rm -f ${DESTDIR}${sysconfdir}/rpki/rpki.rp.xml ${DESTDIR}${sysconfdir}/rpki/rpki.rp.conf.sample
install-sql:
${sbindir}/rpki-sql-setup create
diff --git a/rp/config/rpki-sql-setup b/rp/config/rpki-sql-setup
index c72c97c5..98ef2898 100755
--- a/rp/config/rpki-sql-setup
+++ b/rp/config/rpki-sql-setup
@@ -54,10 +54,6 @@ class Abstract_Driver(object):
else:
return True
- def db_exists(self, udb):
- self.execute("SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = %s", (udb.database,))
- return bool(self.fetchone()[0])
-
def fetchone(self):
return self._cur.fetchone()
@@ -88,6 +84,10 @@ class MySQL_Driver(Abstract_Driver):
def _db_accessible_test(self, udb):
self.driver.connect(db = udb.database, user = udb.username, passwd = udb.password).close()
+ def db_exists(self, udb):
+ self.execute("SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '{0.database}'".format(udb))
+ return bool(self.fetchone()[0])
+
def execute(*args):
try:
self._cur
@@ -203,27 +203,27 @@ class PostgreSQL_Driver(Abstract_Driver):
finally:
self._seteuid(uid)
- def _role_in_use(self, udb):
- self.execute('''\
+ def db_exists(self, udb):
+ self.execute("SELECT COUNT(*) FROM pg_database WHERE datname = '{0.database}'".format(udb))
+ return bool(self.fetchone()[0])
+
+ def role_in_use(self, udb):
+ self.execute(textwrap.dedent('''\
SELECT COUNT(*) FROM pg_database
JOIN pg_roles ON pg_database.datdba = pg_roles.oid
- WHERE pg_roles.rolname = %s''', (udb.username,))
+ WHERE pg_roles.rolname = '{0.username}'
+ '''.format(udb)))
return bool(self.fetchone()[0])
def create(self, udb):
- self.execute('''\
- DO $$ BEGIN
- IF NOT EXISTS (SELECT * FROM pg_catalog.pg_roles
- WHERE rolname = '{0.username}')
- THEN
- CREATE ROLE {0.username} LOGIN PASSWORD '{0.password}';
- END IF;
- END $$'''.format(udb))
- self.execute("CREATE DATABASE {0.database} OWNER {0.username}".format(udb))
+ if not self.role_in_use(udb):
+ self.execute("CREATE ROLE {0.username} LOGIN PASSWORD '{0.password}'".format(udb))
+ if not self.db_exists(udb):
+ self.execute("CREATE DATABASE {0.database} OWNER {0.username}".format(udb))
def drop(self, udb):
self.execute("DROP DATABASE IF EXISTS {0.database}".format(udb))
- if not self._role_in_use(udb):
+ if not self.role_in_use(udb):
self.execute("DROP ROLE IF EXISTS {0.username}".format(udb))
def script_drop(self, udb):
diff --git a/setup.py b/setup.py
index 58503bd4..65d8e654 100644
--- a/setup.py
+++ b/setup.py
@@ -37,6 +37,99 @@ except ImportError:
# pylint: disable=W0622
+scripts = []
+data_files = []
+packages = []
+package_data = {}
+ext_modules = []
+
+# I keep forgetting to update the packages list here. Could we
+# automate this by looking for __init__.py files in the rpki/ tree?
+# Might have to filter out some rpki.gui.app subdirs, or, rather,
+# list those as package_data instead.
+
+if autoconf.RP_TARGET == "rp":
+
+ packages += ["rpki",
+ "rpki.POW",
+ "rpki.django_settings",
+ "rpki.rtr",
+ "rpki.irdb",
+ "rpki.pubdb",
+ "rpki.rpkidb",
+ "rpki.rcynicdb",
+ "rpki.gui",
+ "rpki.gui.app",
+ "rpki.gui.cacheview",
+ "rpki.gui.api",
+ "rpki.gui.routeview"]
+
+ ext_modules += [Extension("rpki.POW._POW", ["ext/POW.c"],
+ include_dirs = [cflag[2:] for cflag in autoconf.CFLAGS.split() if cflag.startswith("-I")],
+ extra_compile_args = [cflag for cflag in autoconf.CFLAGS.split() if not cflag.startswith("-I")],
+ extra_link_args = autoconf.LDFLAGS.split() + autoconf.LIBS.split())]
+
+ for package in ("rpki.irdb", "rpki.pubdb", "rpki.rpkidb", "rpki.rcynicdb"):
+ package_data[package] = ["migrations/*.py"]
+
+ data_files += [(autoconf.sysconfdir + "/rpki",
+ ["rp/config/rpki-confgen.xml"])]
+
+ scripts += [(autoconf.bindir,
+ ["rp/rcynic/rcynic-cron",
+ "rp/rcynic/rcynic-html",
+ "rp/rcynic/rcynic-svn",
+ "rp/rcynic/rcynic-text",
+ "rp/rcynic/validation_status",
+ "rp/rpki-rtr/rpki-rtr",
+ "rp/utils/find_roa",
+ "rp/utils/hashdir",
+ "rp/utils/print_roa",
+ "rp/utils/print_rpki_manifest",
+ "rp/utils/scan_roas",
+ "rp/utils/scan_routercerts",
+ "rp/utils/uri"]),
+ (autoconf.sbindir,
+ ["rp/config/rpki-confgen",
+ "rp/config/rpki-sql-backup",
+ "rp/config/rpki-sql-setup",
+ "rp/config/rpki-manage"])]
+
+if autoconf.CA_TARGET == "ca":
+
+ package_data["rpki.gui.app"] = ["migrations/*.py",
+ "static/*/*",
+ "templates/*.html",
+ "templates/*/*.html",
+ "templatetags/*.py"]
+
+ package_data["rpki.gui.cacheview"] = ["templates/*/*.html"]
+
+
+ data_files += [(autoconf.datarootdir + "/rpki/wsgi",
+ ["ca/rpki.wsgi"]),
+ (autoconf.datarootdir + "/rpki/media/css",
+ glob("rpki/gui/app/static/css/*")),
+ (autoconf.datarootdir + "/rpki/media/js",
+ glob("rpki/gui/app/static/js/*")),
+ (autoconf.datarootdir + "/rpki/media/img",
+ glob("rpki/gui/app/static/img/*"))]
+
+ scripts += [(autoconf.sbindir,
+ ["ca/rpkic",
+ "ca/rpki-start-servers",
+ "ca/rpkigui-query-routes",
+ "ca/irbe_cli"]),
+ (autoconf.libexecdir,
+ ["ca/irdbd",
+ "ca/pubd",
+ "ca/rootd",
+ "ca/rpkid",
+ "ca/rpkigui-import-routes",
+ "ca/rpkigui-check-expired",
+ "ca/rpkigui-rcynic",
+ "ca/rpkigui-apache-conf-gen"])]
+
setup_args = dict(
name = "rpki",
version = VERSION,
@@ -46,90 +139,9 @@ setup_args = dict(
cmdclass = {"build_scripts" : setup_extensions.build_scripts,
"install_scripts" : setup_extensions.install_scripts})
-scripts = []
+for name in ("scripts", "data_files", "packages", "package_data", "ext_modules"):
+ val = globals().get(name)
+ if val:
+ setup_args[name] = val
-# I keep forgetting to update the packages list here. Could we
-# automate this by looking for __init__.py files in the rpki/ tree?
-# Might have to filter out some rpki.gui.app subdirs, or, rather,
-# list those as package_data instead.
-
-if autoconf.RP_TARGET == "rp":
- setup_args.update(
- packages = ["rpki",
- "rpki.POW",
- "rpki.django_settings",
- "rpki.rtr",
- "rpki.irdb",
- "rpki.pubdb",
- "rpki.rpkidb",
- "rpki.rcynicdb",
- "rpki.gui",
- "rpki.gui.app",
- "rpki.gui.cacheview",
- "rpki.gui.api",
- "rpki.gui.routeview"],
- ext_modules = [Extension("rpki.POW._POW", ["ext/POW.c"],
- include_dirs = [cflag[2:] for cflag in autoconf.CFLAGS.split() if cflag.startswith("-I")],
- extra_compile_args = [cflag for cflag in autoconf.CFLAGS.split() if not cflag.startswith("-I")],
- extra_link_args = autoconf.LDFLAGS.split() + autoconf.LIBS.split())],
- package_data = {"rpki.gui.app" : ["migrations/*.py",
- "static/*/*",
- "templates/*.html",
- "templates/*/*.html",
- "templatetags/*.py"],
- "rpki.gui.cacheview" : ["templates/*/*.html"],
- "rpki.irdb": ["migrations/*.py"],
- "rpki.pubdb": ["migrations/*.py"],
- "rpki.rpkidb": ["migrations/*.py"],
- "rpki.rcynicdb": ["migrations/*.py"]})
-
- scripts += [(autoconf.bindir,
- ["rp/rcynic/rcynic-cron",
- "rp/rcynic/rcynic-html",
- "rp/rcynic/rcynic-svn",
- "rp/rcynic/rcynic-text",
- "rp/rcynic/validation_status",
- "rp/rpki-rtr/rpki-rtr",
- "rp/utils/find_roa",
- "rp/utils/hashdir",
- "rp/utils/print_roa",
- "rp/utils/print_rpki_manifest",
- "rp/utils/scan_roas",
- "rp/utils/scan_routercerts",
- "rp/utils/uri"]),
- (autoconf.sbindir,
- ["rp/config/rpki-confgen",
- "rp/config/rpki-sql-backup",
- "rp/config/rpki-sql-setup",
- "rp/config/rpki-manage"])]
-
-if autoconf.CA_TARGET == "ca":
- setup_args.update(
- data_files = [(autoconf.sysconfdir + "/rpki",
- ["ca/rpki-confgen.xml"]),
- (autoconf.datarootdir + "/rpki/wsgi",
- ["ca/rpki.wsgi"]),
- (autoconf.datarootdir + "/rpki/media/css",
- glob("rpki/gui/app/static/css/*")),
- (autoconf.datarootdir + "/rpki/media/js",
- glob("rpki/gui/app/static/js/*")),
- (autoconf.datarootdir + "/rpki/media/img",
- glob("rpki/gui/app/static/img/*"))])
-
- scripts += [(autoconf.sbindir,
- ["ca/rpkic",
- "ca/rpki-start-servers",
- "ca/rpkigui-query-routes",
- "ca/irbe_cli"]),
- (autoconf.libexecdir,
- ["ca/irdbd",
- "ca/pubd",
- "ca/rootd",
- "ca/rpkid",
- "ca/rpkigui-import-routes",
- "ca/rpkigui-check-expired",
- "ca/rpkigui-rcynic",
- "ca/rpkigui-apache-conf-gen"])]
-
-setup_args.update(scripts = scripts)
setup(**setup_args)