import sys
import glob
+import optparse
import os
-import func
-import func.certs
-import func.certmaster
+import certmaster
+import certmaster.certs
+import certmaster.certmaster
-from optparse import OptionParser
def errorprint(stuff):
print >> sys.stderr, stuff
+class CertmasterCAOptionParser(optparse.OptionParser):
+ def get_version(self):
+ return file("/etc/func/version").read().strip()
def parseargs(args):
usage = 'certmaster-ca <option> [args]'
- parser = OptionParser(usage=usage)
+ parser = CertmasterCAOptionParser(usage=usage,version=True)
parser.add_option('-l', '--list', default=False, action="store_true",
help='list signing requests remaining')
help='sign requests of hosts specified')
parser.add_option('-c', '--clean', default=False, action="store_true",
help="clean out all certs or csrs for the hosts specified")
+ parser.add_option("", "--list-signed", default=False, action="store_true",
+ help='list all signed certs')
+ parser.add_option("", "--list-cert-hash", default=False, action="store_true",
+ help="list the cert hash for signed certs")
(opts, args) = parser.parse_args()
- if not opts.list and not opts.sign and not opts.clean:
+ # gotta be a better way...
+ if not opts.list and not opts.sign and not opts.clean \
+ and not opts.list_signed and not opts.list_cert_hash:
parser.print_help()
sys.exit(1)
errorprint('Must be root to run certmaster-ca')
return 1
- cm = func.certmaster.CertMaster()
+ cm = certmaster.certmaster.CertMaster()
(opts, args) = parseargs(args)
if opts.list:
hns = cm.get_csrs_waiting()
if hns:
- for hn in cm.get_csrs_waiting():
+ for hn in sorted(hns):
print hn
else:
print 'No certificates to sign'
return 1
for hn in args:
- cm.remove_this_host(hn)
+ cm.remove_this_cert(hn)
return 0
+ if opts.list_signed:
+ hostglobs = ["*"]
+ if args:
+ hostglobs = args
+
+ signed_certs = cm.get_signed_certs(args)
+
+ for i in sorted(signed_certs):
+ print i
+
+ return 0
+
+ if opts.list_cert_hash:
+ hostglobs = ["*"]
+ if args:
+ hostglobs = args
+
+ cert_hashes = cm.get_cert_hashes(hostglobs)
+
+ for i in sorted(cert_hashes):
+ print i
+
+ return 0
+
if __name__ == "__main__":
sys.exit(main(sys.argv[1:]))