aboutsummaryrefslogtreecommitdiff
path: root/scripts/irbe-cli.py
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2007-08-06 17:37:35 +0000
committerRob Austein <sra@hactrn.net>2007-08-06 17:37:35 +0000
commit0fed927b8d69e2553344ef98f38b643eee0fd942 (patch)
tree814f68cd853b651013987999319acdf7b843aa28 /scripts/irbe-cli.py
parent9ec0a1feaa1c9b407a2bed7cc01266887ab1b14e (diff)
Checkpoint
svn path=/scripts/irbe-cli.py; revision=827
Diffstat (limited to 'scripts/irbe-cli.py')
-rwxr-xr-xscripts/irbe-cli.py107
1 files changed, 87 insertions, 20 deletions
diff --git a/scripts/irbe-cli.py b/scripts/irbe-cli.py
index 5495c1e5..aa4e025b 100755
--- a/scripts/irbe-cli.py
+++ b/scripts/irbe-cli.py
@@ -8,35 +8,40 @@ import glob, rpki.left_right, rpki.relaxng, getopt, sys, lxml.etree
class command(object):
+ booleans = ()
+
def getopt(self, argv):
if self.options:
- opts, args = getopt.getopt(argv, "", [x[2:] + "=" for x in self.options])
+ opts, args = getopt.getopt(argv, "", [x[2:] + "=" for x in self.options] + [x[2:] for x in self.booleans])
for o, a in opts:
- getattr(self, o[2:])(a)
+ handler = getattr(self, o[2:], None)
+ if handler is not None:
+ handler(a)
+ elif o in self.booleans:
+ setattr(self.pdu, o, True)
+ else:
+ assert o in self.options
+ setattr(self.pdu, o, a)
return args
else:
return argv
- def process(self, msg):
+ def process(self, msg, argv):
+ argv = self.getopt(argv)
msg.append(self.pdu)
+ return argv
def action(self, arg):
self.pdu.action = arg
self.pdu.type = "query"
- def self_id(self, arg):
- self.pdu.self_id = arg
-
-class help(command):
- options = ()
-
- def process(self, msg):
- print "Usage:", sys.argv[0]
- for k,v in dispatch.iteritems():
- print " ", " ".join((k,) + v.options)
+ def peer_ta(self, arg):
+ self.pdu.peer_ta = read_cert(arg)
class self(command):
+
options = ("--action", "--self_id", "--extension")
+ booleans = ("--rekey", "--reissue", "--revoke", "--run_now", "--publish_world_now")
def __init__(self):
self.pdu = rpki.left_right.self_elt()
@@ -44,18 +49,80 @@ class self(command):
def extension(self, arg):
kv = arg.split(":", 1)
self.pdu.extensions[k] = v
-
-dispatch = dict((x.__name__, x) for x in (help, self))
-rng = rpki.relaxng.RelaxNG("left-right-schema.rng")
+class bsc(command):
+
+ options = ("--action", "--self_id", "--bsc_id", "--key_type", "--hash_alg", "--key_length", "--signing_cert")
+ booleans = ("--generate_keypair",)
+
+ def __init__(self):
+ self.pdu = rpki.left_right.bsc_elt()
+
+ def signing_cert(self, arg):
+ self.pdu.signing_cert.append(read_cert(arg))
+
+class parent(command):
+
+ options = ("--action", "--self_id", "--parent_id", "--peer_ta", "--bsc_link", "--repository_link", "--sia_base", "--peer_contact")
+ booleans = ("--rekey", "--revoke", "--reissue")
+
+ def __init__(self):
+ self.pdu = rpki.left_right.parent_elt()
+
+class child(command):
+
+ options = ("--action", "--self_id", "--child_id", "--peer_ta", "--bsc_link", "--child_db_id")
+ booleans = ("--reissue",)
+
+ def __init__(self):
+ self.pdu = rpki.left_right.child_elt()
+
+class repository(command):
+
+ options = ("--action", "--self_id", "--repository", "--peer_ta", "--bsc_link", "--peer_contact")
+
+ def __init__(self):
+ self.pdu = rpki.left_right.repository_elt()
+
+class route_origin(command):
+
+ options = ("--action", "--self_id", "--route_origin_id", "--asn", "--ipv4", "--ipv6")
+ booleans = ("--suppress_publication",)
+
+ def __init__(self):
+ self.pdu = rpki.left_right.route_origin_elt()
+
+ def asn(self, arg):
+ self.pdu.asn = long(arg)
+
+ def ipv4(self, arg):
+ self.pdu.ipv4 = resource_set.resource_set_ipv4(arg)
+
+ def ipv6(self, arg):
+ self.pdu.ipv6 = resource_set.resource_set_ipv6(arg)
+dispatch = dict((x.__name__, x) for x in (self, bsc, parent, child, repository, route_origin))
+
+def usage():
+ print "Usage:", sys.argv[0]
+ for k,v in dispatch.iteritems():
+ print " ", " ".join((k,) + v.options + v.booleans)
+ sys.exit(1)
+
+rng = rpki.relaxng.RelaxNG("left-right-schema.rng")
msg = rpki.left_right.msg()
argv = sys.argv[1:]
-while argv:
- cmd = dispatch[argv[0]]()
- argv = cmd.getopt(argv[1:])
- cmd.process(msg)
+
+if not argv:
+ usage()
+else:
+ while argv:
+ try:
+ cmd = dispatch[argv[0]]()
+ except KeyError:
+ usage()
+ argv = cmd.process(msg, argv[1:])
if msg:
elt = msg.toXML()