]> TLD Linux GIT Repositories - tld-ftp-admin.git/blob - bin/pfa-checksign
- raw from PLD
[tld-ftp-admin.git] / bin / pfa-checksign
1 #!/usr/bin/env python
2 # vi: encoding=utf-8 ts=8 sts=4 sw=4 et
3
4 import sys, os
5 import getopt
6 sys.path.insert(0, os.environ['HOME']+'/pld-ftp-admin/modules')
7 import ftptree
8 import getpass
9 from common import checkdir
10 import ftpio
11 from config import sign_key
12 from sign import is_signed, signpkgs
13
14 try:
15     opts, args = getopt.getopt(sys.argv[1:], '')
16 except getopt.GetoptError:
17     print >>sys.stderr, "ERR: options error"
18     print >>sys.stderr, "checksign.py tree package1 [package2...]"
19     sys.exit(1)
20
21 if len(args) < 1:
22     print >>sys.stderr, "ERR: missing tree name"
23     print >>sys.stderr, "checksign.py tree package1 [package2...]"
24     sys.exit(1)
25
26 if sign_key == None:
27     print >>sys.stderr, "ERR: sign_key not defined in config"
28     sys.exit(1)
29
30 treename = args[0]
31 packages = args[1:]
32
33 checkdir(treename)
34
35 ftpio.connect('sign')
36
37 if not ftpio.lock(treename, True):
38     print >>sys.stderr, "ERR: %s tree already locked" % treename
39     sys.exit(1)
40
41 files = []
42 try:
43     if len(packages) < 1:
44         loadall = True
45     else:
46         loadall = False
47
48     # if no files specified, grab whole tree contents
49     tree = ftptree.FtpTree(treename, loadall = loadall)
50     if loadall:
51         # this is hack, should be a param, not access private .loadedpkgs element
52         tree.mark4moving(tree.loadedpkgs)
53     else:
54         tree.mark4moving(packages)
55
56 except ftptree.SomeError:
57     # In case of problems we need to unlock the tree before exiting
58     ftpio.unlock(treename)
59     sys.exit(1)
60
61 ftpio.unlock(treename)
62
63 print "Checking signatures of %d packages" % len(tree.loadedpkgs)
64 sign = []
65 for pkg in tree.marked4moving:
66     unsigned = 0
67     for file in pkg.rpmfiles():
68         if not is_signed(file):
69             unsigned += 1
70
71     if unsigned != 0:
72         print '%s: %d files NOT signed' % (pkg.nvr, unsigned)
73     else:
74         print '%s signed' % pkg.nvr
75
76 sys.exit(0)