From 2428598400d272738d88de6362a2f50213e10b23 Mon Sep 17 00:00:00 2001 Message-Id: <2428598400d272738d88de6362a2f50213e10b23.1714986820.git.mdw@distorted.org.uk> From: Mark Wooding Date: Fri, 12 Jul 2013 10:32:11 +0100 Subject: [PATCH] keys/tripe-keys.in: Only warn if all master keys are expired. Organization: Straylight/Edgeware From: Mark Wooding Otherwise you get pestered throughout the rollover period. --- keys/tripe-keys.in | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/keys/tripe-keys.in b/keys/tripe-keys.in index ad8671e1..47a4417c 100644 --- a/keys/tripe-keys.in +++ b/keys/tripe-keys.in @@ -498,22 +498,34 @@ def cmd_clean(args): ###-------------------------------------------------------------------------- ### Commands: check -def cmd_check(args): +def check_key(k): now = T.time() thresh = int(conf['kx-warn-days']) * 86400 - for krf in ['master', 'keyring.pub']: - if not OS.path.exists(krf): continue - kr = C.KeyFile(krf) - for k in kr.itervalues(): - if k.exptime == C.KEXP_FOREVER: continue - elif k.exptime == C.KEXP_EXPIRE: left = -1 - else: left = k.exptime - now - if left < 0: - print "key `%s' HAS EXPIRED" % k.tag - elif left < thresh: - if left >= 86400: n, u, uu = left // 86400, 'day', 'days' - else: n, u, uu = left // 3600, 'hour', 'hours' - print "key `%s' EXPIRES in %d %s" % (k.tag, n, n == 1 and u or uu) + if k.exptime == C.KEXP_FOREVER: return None + elif k.exptime == C.KEXP_EXPIRE: left = -1 + else: left = k.exptime - now + if left < 0: + return "key `%s' HAS EXPIRED" % k.tag + elif left < thresh: + if left >= 86400: n, u, uu = left // 86400, 'day', 'days' + else: n, u, uu = left // 3600, 'hour', 'hours' + return "key `%s' EXPIRES in %d %s" % (k.tag, n, n == 1 and u or uu) + else: + return None + +def cmd_check(args): + if OS.path.exists('keyring.pub'): + for k in C.KeyFile('keyring.pub').itervalues(): + whinge = check_key(k) + if whinge is not None: print whinge + if OS.path.exists('master'): + whinges = [] + for k in C.KeyFile('master').itervalues(): + whinge = check_key(k) + if whinge is None: break + whinges.append(whinge) + else: + for whinge in whinges: print whinge ###-------------------------------------------------------------------------- ### Commands: mtu -- [mdw]