]>
Commit | Line | Data |
---|---|---|
785198f5 JR |
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) |