aboutsummaryrefslogtreecommitdiff
path: root/rpkid/portal-gui/scripts
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2014-04-05 22:42:12 +0000
committerRob Austein <sra@hactrn.net>2014-04-05 22:42:12 +0000
commitfe0bf509f528dbdc50c7182f81057c6a4e15e4bd (patch)
tree07c9a923d4a0ccdfea11c49cd284f6d5757c5eda /rpkid/portal-gui/scripts
parentaa28ef54c271fbe4d52860ff8cf13cab19e2207c (diff)
Source tree reorg, phase 1. Almost everything moved, no file contents changed.
svn path=/branches/tk685/; revision=5757
Diffstat (limited to 'rpkid/portal-gui/scripts')
-rwxr-xr-xrpkid/portal-gui/scripts/rpki-manage13
-rwxr-xr-xrpkid/portal-gui/scripts/rpkigui-apache-conf-gen483
-rwxr-xr-xrpkid/portal-gui/scripts/rpkigui-check-expired61
-rw-r--r--rpkid/portal-gui/scripts/rpkigui-flatten-roas.py37
-rwxr-xr-xrpkid/portal-gui/scripts/rpkigui-import-routes115
-rwxr-xr-xrpkid/portal-gui/scripts/rpkigui-query-routes66
-rwxr-xr-xrpkid/portal-gui/scripts/rpkigui-rcynic54
-rw-r--r--rpkid/portal-gui/scripts/rpkigui-reset-demo.py48
-rw-r--r--rpkid/portal-gui/scripts/rpkigui-sync-users.py32
9 files changed, 0 insertions, 909 deletions
diff --git a/rpkid/portal-gui/scripts/rpki-manage b/rpkid/portal-gui/scripts/rpki-manage
deleted file mode 100755
index 0d581ce9..00000000
--- a/rpkid/portal-gui/scripts/rpki-manage
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/usr/bin/env python
-
-import os
-from django.core.management import execute_from_command_line
-
-# django-admin seems to have problems creating the superuser account when
-# $LANG is unset or is set to something totally incompatible with UTF-8.
-if os.environ.get('LANG') in (None, "", "C"):
- os.environ['LANG'] = 'en_US.UTF-8'
-
-os.environ['DJANGO_SETTINGS_MODULE'] = 'rpki.gui.default_settings'
-
-execute_from_command_line()
diff --git a/rpkid/portal-gui/scripts/rpkigui-apache-conf-gen b/rpkid/portal-gui/scripts/rpkigui-apache-conf-gen
deleted file mode 100755
index 6201c364..00000000
--- a/rpkid/portal-gui/scripts/rpkigui-apache-conf-gen
+++ /dev/null
@@ -1,483 +0,0 @@
-#!/usr/bin/env python
-
-# $Id$
-#
-# Copyright (C) 2013 Internet Systems Consortium ("ISC")
-#
-# Permission to use, copy, modify, and distribute this software for any
-# purpose with or without fee is hereby granted, provided that the above
-# copyright notice and this permission notice appear in all copies.
-#
-# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
-# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
-# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-# PERFORMANCE OF THIS SOFTWARE.
-
-import os
-import re
-import sys
-import socket
-import urllib2
-import argparse
-import platform
-import textwrap
-import subprocess
-import rpki.autoconf
-
-fqdn = socket.getfqdn()
-
-vhost_template = """\
-#
-# By default, this configuration assumes that you use name-based
-# virtual hosting. If that's not what you want, you may need
-# to change this.
-#
-<VirtualHost *:443>
-
- #
- # By default, we enable an HTTPS virtual host on this machine's
- # fully qualified domain name. This works for simple
- # configurations, but if you're running a more complex Apache
- # configuration or want to run the GUI on a different hostname,
- # you may need to change this.
- #
- ServerName %(fqdn)s
-
- #
- # Configure the WSGI application to run as a separate process from
- # the Apache daemon itself.
- #
- %(WSGI_DAEMON_PROCESS)s
- %(WSGI_PROCESS_GROUP)s
-
- #
- # Allow access to our WSGI directory.
- #
- <Directory %(datarootdir)s/rpki/wsgi>
-%(allow)s
- </Directory>
-
- #
- # Define the URL to the RPKI GUI
- #
- WSGIScriptAlias / %(datarootdir)s/rpki/wsgi/rpki.wsgi
-
- #
- # Allow access to static content (icons, etc).
- #
- <Directory %(datarootdir)s/rpki/media>
-%(allow)s
- </Directory>
-
- #
- # Add the aliases Django expects for static content.
- #
- Alias /media/ %(datarootdir)s/rpki/media/
- Alias /site_media/ %(datarootdir)s/rpki/media/
-
- #
- # Allow access to the directory where rcynic-html writes
- # its output files.
- #
- <Directory %(RCYNIC_HTML_DIR)s>
-%(allow)s
- </Directory>
-
- #
- # Add alias pointing to rcynic-html's output files.
- #
- # If for some reason you need to change this, be careful to leave
- # the trailing slash off the URL, otherwise /rcynic will be
- # swallowed by the WSGIScriptAlias
- #
- Alias /rcynic %(RCYNIC_HTML_DIR)s/
-
- #
- # Redirect to the GUI dashboard when someone hits the bare vhost.
- #
- RedirectMatch ^/$ /rpki/
-
- #
- # Enable HTTPS
- #
- SSLEngine on
-
- #
- # Specify HTTPS server certificate and key files for this virtual host.
- # This should suffice for simple configurations, but if you're running
- # a more complex Apache configuration you may need to change or remove
- # these lines.
- #
- SSLCertificateFile %(sysconfdir)s/rpki/apache.cer
- SSLCertificateKeyFile %(sysconfdir)s/rpki/apache.key
-
- #
- # Take pity on users running Internet Exploder
- #
- BrowserMatch "MSIE [2-6]" ssl-unclean-shutdown nokeepalive downgrade-1.0 force-response-1.0
- BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
-
-</VirtualHost>
-"""
-
-allow_22_template = '''
- Order deny,allow
- Allow from all\
-'''
-
-allow_24_template = '''
- Require all granted\
-'''
-
-name_virtual_host_template = '''\
-#
-# In most cases we want to use name-based virtual hosting. If this causes
-# problems with your existing Apache configuration, try commenting out this line.
-#
-NameVirtualHost *:443
-
-'''
-
-def Guess(args):
- """
- Guess what platform this is and dispatch to platform constructor.
- """
-
- system = platform.system()
- if system == "FreeBSD":
- return FreeBSD(args)
- if system == "Darwin":
- return Darwin(args)
- if system == "Linux":
- distro = platform.linux_distribution()[0].lower()
- if distro in ("debian", "ubuntu"):
- return Debian(args)
- if distro in ("fedora", "centos"):
- return Redhat(args)
- raise NotImplementedError("Can't guess what platform this is, sorry")
-
-class Platform(object):
- """
- Abstract base class representing an operating system platform.
- """
-
- apache_cer = os.path.join(rpki.autoconf.sysconfdir, "rpki", "apache.cer")
- apache_key = os.path.join(rpki.autoconf.sysconfdir, "rpki", "apache.key")
-
- apache_conf = os.path.join(rpki.autoconf.sysconfdir, "rpki", "apache.conf")
- apache_conf_sample = apache_conf + ".sample"
-
- apache_conf_preface = ""
-
- def __init__(self, args):
- self.args = args
- self.log("RPKI Apache configuration: platform \"%s\", action \"%s\"" % (
- self.__class__.__name__, args.action))
- getattr(self, args.action)()
-
- def log(self, msg):
- if self.args.verbose:
- print msg
-
- def run(self, *cmd, **kwargs):
- self.log("Running %s" % " ".join(cmd))
- subprocess.check_call(cmd, **kwargs)
-
- req_cmd = ("openssl", "req", "-new",
- "-config", "/dev/stdin",
- "-out", "/dev/stdout",
- "-keyout", apache_key,
- "-newkey", "rsa:2048")
-
- x509_cmd = ("openssl", "x509", "-req", "-sha256",
- "-signkey", apache_key,
- "-in", "/dev/stdin",
- "-out", apache_cer,
- "-days", "3650")
-
- req_conf = '''\
- [req]
- default_bits = 2048
- default_md = sha256
- distinguished_name = req_dn
- prompt = no
- encrypt_key = no
- [req_dn]
- CN = %s
- ''' % fqdn
-
- def unlink(self, fn, silent = False):
- if os.path.lexists(fn):
- if not silent:
- self.log("Removing %s" % fn)
- os.unlink(fn)
- elif not silent:
- self.log("Would have removed %s if it existed" % fn)
-
- def del_certs(self, silent = False):
- self.unlink(self.apache_cer, silent)
- self.unlink(self.apache_key, silent)
-
- def add_certs(self):
- if os.path.exists(self.apache_cer) and os.path.exists(self.apache_key):
- return
- self.del_certs()
- req = subprocess.Popen(self.req_cmd,
- stdin = subprocess.PIPE,
- stdout = subprocess.PIPE,
- stderr = open("/dev/null", "w"))
- x509 = subprocess.Popen(self.x509_cmd,
- stdin = req.stdout,
- stderr = open("/dev/null", "w"))
- req.stdin.write(self.req_conf)
- req.stdin.close()
- if req.wait():
- raise subprocess.CalledProcessError(req.returncode, self.req_cmd)
- if x509.wait():
- raise subprocess.CalledProcessError(x509.returncode, self.x509_cmd)
- self.log("Created %s and %s, chmoding %s" % (
- self.apache_cer, self.apache_key, self.apache_key))
- os.chmod(self.apache_key, 0600)
-
- _vhost = None
-
- @property
- def vhost(self):
- if self._vhost is None:
- allow = allow_22_template if self.args.apache_version <= 22 else allow_24_template
- self._vhost = vhost_template % dict(rpki.autoconf.__dict__, fqdn = fqdn, allow = allow)
- return self._vhost
-
- @property
- def name_virtual_host(self):
- return name_virtual_host_template if self.args.apache_version <= 22 else ""
-
- @property
- def too_complex(self):
- return textwrap.dedent('''\
- # It looks like you already have HTTPS enabled in your
- # Apache configuration, which makes your configuration too
- # complex for us to enable support for the RPKI GUI automatically.
- #
- # To enable support, take a look at %s
- # and copy what you need from that file into %s,
- # paying attention to the comments which mark the bits that
- # you might (or might not) need to change or omit, depending
- # on the details of your particular Apache configuration.
- ''' % (self.apache_conf_sample, self.apache_conf))
-
- def install(self):
- with open(self.apache_conf_sample, "w") as f:
- self.log("Writing %s" % f.name)
- f.write(self.apache_conf_preface)
- f.write(self.name_virtual_host)
- f.write(self.vhost)
- if not os.path.exists(self.apache_conf):
- self.unlink(self.apache_conf)
- with open(self.apache_conf, "w") as f:
- self.log("Writing %s" % f.name)
- if self.test_url("https://%s/" % fqdn):
- f.write(self.too_complex)
- sys.stdout.write(self.too_complex)
- else:
- if not self.test_tcp("localhost", 443):
- f.write(self.apache_conf_preface)
- f.write(self.name_virtual_host)
- f.write(self.vhost)
- if not os.path.exists(self.apache_conf_target):
- self.unlink(self.apache_conf_target)
- self.log("Symlinking %s to %s" % (
- self.apache_conf_target, self.apache_conf))
- os.symlink(self.apache_conf, self.apache_conf_target)
- self.add_certs()
- self.enable()
- self.restart()
-
- def enable(self):
- pass
-
- def disable(self):
- pass
-
- def remove(self):
- try:
- same = open(self.apache_conf, "r").read() == open(self.apache_conf_sample, "r").read()
- except:
- same = False
- self.unlink(self.apache_conf_sample)
- if same:
- self.unlink(self.apache_conf)
- self.unlink(self.apache_conf_target)
- self.disable()
- self.restart()
-
- def purge(self):
- self.remove()
- self.unlink(self.apache_conf)
- self.del_certs()
-
- @staticmethod
- def test_url(url = "https://localhost/"):
- try:
- urllib2.urlopen(url).close()
- except IOError:
- return False
- else:
- return True
-
- @staticmethod
- def test_tcp(host = "localhost", port = 443, family = socket.AF_UNSPEC, proto = socket.SOCK_STREAM):
- try:
- addrinfo = socket.getaddrinfo(host, port, family, proto)
- except socket.error:
- return False
- for af, socktype, proto, canon, sa in addrinfo:
- try:
- s = socket.socket(af, socktype, proto)
- s.connect(sa)
- s.close()
- except socket.error:
- continue
- else:
- return True
- return False
-
-class FreeBSD(Platform):
- """
- FreeBSD.
- """
-
- # On FreeBSD we have to ask httpd what version it is before we know
- # where to put files or what to call the service. In FreeBSD's makefiles,
- # this value is called APACHE_VERSION, and is calculated thusly:
- #
- # httpd -V | sed -ne 's/^Server version: Apache\/\([0-9]\)\.\([0-9]*\).*/\1\2/p'
-
- _apache_name = None
-
- @property
- def apache_name(self):
- if self._apache_name is None:
- self._apache_name = "apache%s" % self.args.apache_version
- return self._apache_name
-
- @property
- def apache_conf_target(self):
- return "/usr/local/etc/%s/Includes/rpki.conf" % self.apache_name
-
- apache_conf_preface = textwrap.dedent('''\
- # These directives tell Apache to listen on the HTTPS port
- # and to enable name-based virtual hosting. If you already
- # have HTTPS enabled elsewhere in your configuration, you may
- # need to remove these.
-
- Listen [::]:443
- Listen 0.0.0.0:443
- ''')
-
- def restart(self):
- self.run("service", self.apache_name, "restart")
-
-class Debian(Platform):
- """
- Debian and related platforms like Ubuntu.
- """
-
- apache_conf_target = "/etc/apache2/sites-available/rpki"
-
- snake_oil_cer = "/etc/ssl/certs/ssl-cert-snakeoil.pem"
- snake_oil_key = "/etc/ssl/private/ssl-cert-snakeoil.key"
-
- def add_certs(self):
- if not os.path.exists(self.snake_oil_cer) or not os.path.exists(self.snake_oil_key):
- return Platform.add_certs(self)
- if not os.path.exists(self.apache_cer):
- self.unlink(self.apache_cer)
- os.symlink(self.snake_oil_cer, self.apache_cer)
- if not os.path.exists(self.apache_key):
- self.unlink(self.apache_key)
- os.symlink(self.snake_oil_key, self.apache_key)
-
- def enable(self):
- self.run("a2enmod", "ssl")
- self.run("a2ensite", "rpki")
- #
- # In light of BREACH and CRIME attacks, mod_deflate is looking
- # like a bad idea, so make sure it's off.
- self.run("a2dismod", "deflate")
-
- def disable(self):
- self.run("a2dissite", "rpki")
-
- def restart(self):
- self.run("service", "apache2", "restart")
-
-class NIY(Platform):
- def __init__(self, args):
- raise NotImplementedError("Platform %s not implemented yet, sorry" % self.__class__.__name__)
-
-class Redhat(NIY):
- """
- Redhat family of Linux distributions (Fedora, CentOS).
- """
-
-class Darwin(NIY):
- """
- Mac OS X (aka Darwin).
- """
-
-def main():
- """
- Generate and (de)install configuration suitable for using Apache httpd
- to drive the RPKI web interface under WSGI.
- """
-
- parser = argparse.ArgumentParser(description = __doc__)
- group1 = parser.add_mutually_exclusive_group()
- group2 = parser.add_mutually_exclusive_group()
-
- parser.add_argument("-v", "--verbose",
- help = "whistle while you work", action = "store_true")
- parser.add_argument("--apache-version",
- help = "Apache version (default " + rpki.autoconf.APACHE_VERSION + ")",
- type = int, default = rpki.autoconf.APACHE_VERSION)
-
- group1.add_argument("--freebsd",
- help = "configure for FreeBSD",
- action = "store_const", dest = "platform", const = FreeBSD)
- group1.add_argument("--debian", "--ubuntu",
- help = "configure for Debian/Ubuntu",
- action = "store_const", dest = "platform", const = Debian)
- group1.add_argument("--redhat", "--fedora", "--centos",
- help = "configure for Redhat/Fedora/CentOS",
- action = "store_const", dest = "platform", const = Redhat)
- group1.add_argument("--macosx", "--darwin",
- help = "configure for Mac OS X (Darwin)",
- action = "store_const", dest = "platform", const = Darwin)
- group1.add_argument("--guess",
- help = "guess which platform configuration to use",
- action = "store_const", dest = "platform", const = Guess)
-
- group2.add_argument("-i", "--install",
- help = "install configuration",
- action = "store_const", dest = "action", const = "install")
- group2.add_argument("-r", "--remove", "--deinstall", "--uninstall",
- help = "remove configuration",
- action = "store_const", dest = "action", const = "remove")
- group2.add_argument("-P", "--purge",
- help = "remove configuration with extreme prejudice",
- action = "store_const", dest = "action", const = "purge")
-
- parser.set_defaults(platform = Guess, action = "install")
- args = parser.parse_args()
-
- try:
- args.platform(args)
- except Exception, e:
- sys.exit(str(e))
-
-if __name__ == "__main__":
- main()
diff --git a/rpkid/portal-gui/scripts/rpkigui-check-expired b/rpkid/portal-gui/scripts/rpkigui-check-expired
deleted file mode 100755
index eb0c7fbb..00000000
--- a/rpkid/portal-gui/scripts/rpkigui-check-expired
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (C) 2012 SPARTA, Inc. a Parsons Company
-#
-# Permission to use, copy, modify, and distribute this software for any
-# purpose with or without fee is hereby granted, provided that the above
-# copyright notice and this permission notice appear in all copies.
-#
-# THE SOFTWARE IS PROVIDED "AS IS" AND SPARTA DISCLAIMS ALL WARRANTIES WITH
-# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-# AND FITNESS. IN NO EVENT SHALL SPARTA BE LIABLE FOR ANY SPECIAL, DIRECT,
-# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-# PERFORMANCE OF THIS SOFTWARE.
-
-__version__ = '$Id$'
-
-from optparse import OptionParser
-import logging
-import sys
-
-# configure django ORM
-from rpki.gui.script_util import setup
-setup()
-
-from rpki.gui.app.check_expired import notify_expired
-
-usage = '%prog [ -nV ] [ handle1 handle2... ]'
-
-description = """Generate a report detailing all RPKI/BPKI certificates which
-are due for impending expiration. If no resource handles are specified, a
-report about all resource handles hosted by the local rpkid instance will be
-generated."""
-
-parser = OptionParser(usage, description=description)
-parser.add_option('-V', '--version', help='display script version',
- action='store_true', dest='version', default=False)
-parser.add_option('-f', '--from', metavar='ADDRESS', dest='from_email',
- help='specify the return email address for notifications')
-parser.add_option('-t', '--expire-time', dest='expire_days', metavar='DAYS',
- help='specify the number of days in the future to check')
-parser.add_option('-l', '--level', dest='log_level', default='WARNING',
- help='Set logging level [Default: %default]')
-(options, args) = parser.parse_args()
-if options.version:
- print __version__
- sys.exit(0)
-
-v = getattr(logging, options.log_level.upper())
-logging.basicConfig(level=v)
-logging.info('logging level set to ' + logging.getLevelName(v))
-
-kwargs = {}
-if options.from_email:
- kwargs['from_email'] = options.from_email
-if options.expire_days:
- kwargs['expire_days'] = int(options.expire_days)
-notify_expired(**kwargs)
-
-sys.exit(0)
diff --git a/rpkid/portal-gui/scripts/rpkigui-flatten-roas.py b/rpkid/portal-gui/scripts/rpkigui-flatten-roas.py
deleted file mode 100644
index e21c368b..00000000
--- a/rpkid/portal-gui/scripts/rpkigui-flatten-roas.py
+++ /dev/null
@@ -1,37 +0,0 @@
-from rpki.gui.script_util import setup
-setup()
-
-from django.db import transaction
-from django.db.models import Count
-from rpki.gui.app.models import ROARequest
-from rpki.irdb.zookeeper import Zookeeper
-
-handles = set()
-
-
-@transaction.commit_on_success
-def flatten():
- for roa in ROARequest.objects.annotate(num_prefixes=Count('prefixes')).filter(num_prefixes__gt=1):
- print 'splitting roa for AS%d' % roa.asn
- for pfx in roa.prefixes.all():
- # create new roa objects for each prefix
- newroa = ROARequest.objects.create(
- issuer=roa.issuer,
- asn=roa.asn)
- newroa.prefixes.create(
- version=pfx.version,
- prefix=pfx.prefix,
- prefixlen=pfx.prefixlen,
- max_prefixlen=pfx.max_prefixlen
- )
- roa.delete()
- handles.add(roa.issuer.handle)
-
-flatten()
-
-if handles:
- # poke rpkid to run the cron job for each handle that had a roa change
- z = Zookeeper()
- for h in handles:
- z.reset_identity(h)
- z.run_rpkid_now()
diff --git a/rpkid/portal-gui/scripts/rpkigui-import-routes b/rpkid/portal-gui/scripts/rpkigui-import-routes
deleted file mode 100755
index 234a865b..00000000
--- a/rpkid/portal-gui/scripts/rpkigui-import-routes
+++ /dev/null
@@ -1,115 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (C) 2012, 2013 SPARTA, Inc. a Parsons Company
-#
-# Permission to use, copy, modify, and distribute this software for any
-# purpose with or without fee is hereby granted, provided that the above
-# copyright notice and this permission notice appear in all copies.
-#
-# THE SOFTWARE IS PROVIDED "AS IS" AND SPARTA DISCLAIMS ALL WARRANTIES WITH
-# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-# AND FITNESS. IN NO EVENT SHALL SPARTA BE LIABLE FOR ANY SPECIAL, DIRECT,
-# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-# PERFORMANCE OF THIS SOFTWARE.
-
-__version__ = '$Id$'
-
-import optparse
-import logging
-import time
-import random
-import signal
-import errno
-import atexit
-import fcntl
-import sys
-import os
-
-# configure django ORM
-from rpki.gui.script_util import setup
-setup()
-
-from rpki.gui.routeview.util import import_routeviews_dump
-
-
-class BadArgument(Exception):
- pass
-
-
-def timed_out(*ignored):
- logging.info('timed out')
- sys.exit(1)
-
-
-if __name__ == '__main__':
- parser = optparse.OptionParser(
- usage='%prog [options] [PATH]',
- description="""This tool is used to import the IPv4/6 BGP table dumps
-from routeviews.org into the RPKI Web Portal database. If the
-input file is a bzip2 compressed file, it will be decompressed
-automatically.""")
- parser.add_option('-t', '--type', dest='filetype', metavar='TYPE',
- help='Specify the input file type (auto, text, mrt) [Default: %default]')
- parser.add_option('-l', '--level', dest='log_level', default='ERROR',
- help='Set logging level [Default: %default]')
- parser.add_option('-u', '--bunzip2', dest='bunzip', metavar='PROG',
- help='Specify bunzip2 program to use')
- parser.add_option('-b', '--bgpdump', dest='bgpdump', metavar='PROG',
- help='Specify path to bgdump binary')
- parser.add_option('-j', '--jitter', dest='jitter', type='int',
- help='Specify upper bound of startup delay, in seconds [Default: %default]')
- parser.add_option('--lockfile', dest='lockfile',
- help='Set name of lock file; empty string disables locking [Default: %default]')
- parser.add_option('--timeout', dest='timeout', type='int',
- help='Specify timeout for download and import, in seconds [Default: %default]')
- parser.set_defaults(debug=False, verbose=False, filetype='auto', jitter=0,
- lockfile='/tmp/rpkigui-import-routes.lock', timeout=90*60)
- options, args = parser.parse_args()
-
- v = getattr(logging, options.log_level.upper())
- logging.basicConfig(level=v)
- atexit.register(logging.shutdown)
- logging.info('logging level set to ' + logging.getLevelName(v))
-
- if options.bgpdump:
- BGPDUMP = os.path.expanduser(options.bgpdump)
-
- if options.jitter > 0:
- try:
- delay = random.SystemRandom().randint(0, options.jitter)
- except NotImplementedError:
- delay = random.randint(0, options.jitter)
- logging.info('jitter active, delaying startup for %d seconds' % delay)
- time.sleep(delay)
-
- if options.lockfile:
- try:
- lock = os.open(options.lockfile, os.O_RDONLY | os.O_CREAT | os.O_NONBLOCK, 0666)
- fcntl.flock(lock, fcntl.LOCK_EX | fcntl.LOCK_NB)
- except (IOError, OSError), e:
- if e.errno == errno.EAGAIN:
- logging.info('lock held by another process')
- sys.exit(0)
- else:
- logging.exception(e)
- sys.exit(1)
-
- try:
- if len(args) > 1:
- raise BadArgument('more than one filename specified')
-
- if options.timeout > 0:
- signal.signal(signal.SIGALRM, timed_out)
- signal.setitimer(signal.ITIMER_REAL, options.timeout)
-
- import_routeviews_dump(*args)
-
- if options.timeout > 0:
- signal.setitimer(signal.ITIMER_REAL, 0)
-
- except Exception as e:
- logging.exception(e)
- sys.exit(1)
-
diff --git a/rpkid/portal-gui/scripts/rpkigui-query-routes b/rpkid/portal-gui/scripts/rpkigui-query-routes
deleted file mode 100755
index 1f698f23..00000000
--- a/rpkid/portal-gui/scripts/rpkigui-query-routes
+++ /dev/null
@@ -1,66 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (C) 2013 SPARTA, Inc. a Parsons Company
-#
-# Permission to use, copy, modify, and distribute this software for any
-# purpose with or without fee is hereby granted, provided that the above
-# copyright notice and this permission notice appear in all copies.
-#
-# THE SOFTWARE IS PROVIDED "AS IS" AND SPARTA DISCLAIMS ALL WARRANTIES WITH
-# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-# AND FITNESS. IN NO EVENT SHALL SPARTA BE LIABLE FOR ANY SPECIAL, DIRECT,
-# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-# PERFORMANCE OF THIS SOFTWARE.
-
-__version__ = '$Id$'
-
-import sys
-import optparse
-
-from rpki.gui.script_util import setup
-setup()
-
-from rpki.gui.routeview import models as rv
-from rpki.resource_set import resource_range_ip
-
-parser = optparse.OptionParser(
- usage='%prog [options] PREFIX',
- description='query the rpki web portal database for routes covering a '
- 'prefix specified as an argument, and display the validity and covering '
- 'ROAs for each route',
- version=__version__,
-)
-options, args = parser.parse_args()
-
-if len(args) == 0:
- print 'error: Specify an address/prefix'
- sys.exit(1)
-
-# allow bare IP addresses
-if '/' not in args[0]:
- args[0] = args[0] + '/32'
-
-r = resource_range_ip.parse_str(args[0])
-
-qs = rv.RouteOrigin.objects.filter(
- prefix_min__lte=r.min,
- prefix_max__gte=r.max
-)
-
-
-def validity_marker(route, roa, roa_prefix):
- "Return + if the roa would cause the route to be accepted, or - if not"
- # we already know the ROA covers this route because they are returned
- # from RouteOrigin.roas, so just check the ASN and max prefix length
- return '-' if (roa.asid == 0 or route.asn != roa.asid or
- route.prefixlen > roa_prefix.max_length) else '+'
-
-# xxx.xxx.xxx.xxx/xx-xx is 22 characters
-for route in qs:
- print route.as_resource_range(), route.asn, route.status
- for pfx in route.roa_prefixes:
- for roa in pfx.roas.all():
- print validity_marker(route, roa, pfx), pfx.as_roa_prefix(), roa.asid, roa.repo.uri
- print
diff --git a/rpkid/portal-gui/scripts/rpkigui-rcynic b/rpkid/portal-gui/scripts/rpkigui-rcynic
deleted file mode 100755
index 8fb91a70..00000000
--- a/rpkid/portal-gui/scripts/rpkigui-rcynic
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (C) 2011 SPARTA, Inc. dba Cobham
-# Copyright (C) 2012, 2013 SPARTA, Inc. a Parsons Company
-#
-# Permission to use, copy, modify, and distribute this software for any
-# purpose with or without fee is hereby granted, provided that the above
-# copyright notice and this permission notice appear in all copies.
-#
-# THE SOFTWARE IS PROVIDED "AS IS" AND SPARTA DISCLAIMS ALL WARRANTIES WITH
-# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-# AND FITNESS. IN NO EVENT SHALL SPARTA BE LIABLE FOR ANY SPECIAL, DIRECT,
-# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-# PERFORMANCE OF THIS SOFTWARE.
-
-__version__ = '$Id$'
-
-# probably should be exported from rpki.gui.cacheview.util
-default_logfile = '/var/rcynic/data/rcynic.xml'
-default_root = '/var/rcynic/data'
-
-import logging
-import sys
-
-from rpki.gui.script_util import setup
-setup()
-
-from rpki.gui.cacheview.util import import_rcynic_xml
-
-if __name__ == '__main__':
- import optparse
-
- parser = optparse.OptionParser()
- parser.add_option("-l", "--level", dest="log_level", default='ERROR',
- help="specify the logging level [default: %default]")
- parser.add_option(
- "-f", "--file", dest="logfile",
- help="specify the rcynic XML file to parse [default: %default]",
- default=default_logfile)
- parser.add_option(
- "-r", "--root",
- help="specify the chroot directory for the rcynic jail [default: %default]",
- metavar="DIR", default=default_root)
- options, args = parser.parse_args(sys.argv)
-
- v = getattr(logging, options.log_level.upper())
- logging.basicConfig(level=v)
- logging.info('log level set to %s' % logging.getLevelName(v))
-
- import_rcynic_xml(options.root, options.logfile)
-
- logging.shutdown()
diff --git a/rpkid/portal-gui/scripts/rpkigui-reset-demo.py b/rpkid/portal-gui/scripts/rpkigui-reset-demo.py
deleted file mode 100644
index 0a3a1537..00000000
--- a/rpkid/portal-gui/scripts/rpkigui-reset-demo.py
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright (C) 2012, 2013, 2014 SPARTA, Inc. a Parsons Company
-#
-# Permission to use, copy, modify, and distribute this software for any
-# purpose with or without fee is hereby granted, provided that the above
-# copyright notice and this permission notice appear in all copies.
-#
-# THE SOFTWARE IS PROVIDED "AS IS" AND SPARTA DISCLAIMS ALL WARRANTIES WITH
-# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-# AND FITNESS. IN NO EVENT SHALL SPARTA BE LIABLE FOR ANY SPECIAL, DIRECT,
-# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-# PERFORMANCE OF THIS SOFTWARE.
-
-"""
-This script is used to reset all of the labuser* accounts on demo.rpki.net back
-to a state suitable for a new workshop. It removes all ROAs and Ghostbuster
-issued by the labuser accounts.
-
-"""
-
-__version__ = '$Id$'
-
-from rpki.gui.script_util import setup
-setup()
-
-import sys
-
-from rpki.gui.app.models import Conf
-from rpki.irdb.models import ROARequest, GhostbusterRequest
-from rpki.gui.app.glue import list_received_resources
-
-for n in xrange(1, 33):
- username = 'labuser%02d' % n
- print 'removing objects for ' + username
- for cls in (ROARequest, GhostbusterRequest):
- cls.objects.filter(issuer__handle=username).delete()
- conf = Conf.objects.get(handle=username)
- conf.clear_alerts()
- print '... updating resource certificate cache'
- list_received_resources(sys.stdout, conf)
-
- # Remove delegated resources (see https://trac.rpki.net/ticket/544)
- # Note that we do not remove the parent-child relationship, just the
- # resources.
- for child in conf.children():
- child.asns.delete()
- child.address_ranges.delete()
diff --git a/rpkid/portal-gui/scripts/rpkigui-sync-users.py b/rpkid/portal-gui/scripts/rpkigui-sync-users.py
deleted file mode 100644
index 9c636e95..00000000
--- a/rpkid/portal-gui/scripts/rpkigui-sync-users.py
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright (C) 2013 SPARTA, Inc. a Parsons Company
-#
-# Permission to use, copy, modify, and distribute this software for any
-# purpose with or without fee is hereby granted, provided that the above
-# copyright notice and this permission notice appear in all copies.
-#
-# THE SOFTWARE IS PROVIDED "AS IS" AND SPARTA DISCLAIMS ALL WARRANTIES WITH
-# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-# AND FITNESS. IN NO EVENT SHALL SPARTA BE LIABLE FOR ANY SPECIAL, DIRECT,
-# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-# PERFORMANCE OF THIS SOFTWARE.
-
-__version__ = '$Id$'
-
-"""
-Ensure that a web login exists for labuser* resource holder
-"""
-from rpki.gui.script_util import setup
-setup()
-
-from django.contrib.auth.models import User
-from rpki.gui.app.models import Conf, ConfACL
-
-# mysql> select * from irdb_resourceholderca left outer join auth_user on irdb_resourceholderca.handle = auth_user.username where username=NULL;
-
-for conf in Conf.objects.filter(handle__startswith='labuser'):
- if not User.objects.filter(username=conf.handle).exists():
- print 'creating matching user for ' + conf.handle
- user = User.objects.create_user(conf.handle, password='fnord')
- ConfACL.objects.create(conf=conf, user=user)