]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/blob - src/allmydata/scripts/keygen.py
1f5c30f5287d150e60a4850ef83e60bd349ff308
[tahoe-lafs/tahoe-lafs.git] / src / allmydata / scripts / keygen.py
1
2 import os, sys
3 from allmydata.scripts.common import BasedirMixin, BaseOptions
4 from allmydata.util.assertutil import precondition
5 from allmydata.util.encodingutil import listdir_unicode, quote_output
6
7 class CreateKeyGeneratorOptions(BasedirMixin, BaseOptions):
8     default_nodedir = None
9
10     optParameters = [
11         ["node-directory", "d", None, "Specify which directory the key-generator should be created in. [no default]"],
12     ]
13
14     def getSynopsis(self):
15         return "Usage:  %s create-key-generator [options] NODEDIR" % (self.command_name,)
16
17
18 keygen_tac = """
19 # -*- python -*-
20
21 import pkg_resources
22 pkg_resources.require('allmydata-tahoe')
23
24 from allmydata import key_generator
25 from twisted.application import service
26
27 k = key_generator.KeyGeneratorService(default_key_size=2048)
28 #k.key_generator.verbose = False
29 #k.key_generator.pool_size = 16
30 #k.key_generator.pool_refresh_delay = 6
31
32 application = service.Application("allmydata_key_generator")
33 k.setServiceParent(application)
34 """
35
36 def create_key_generator(config, out=sys.stdout, err=sys.stderr):
37     basedir = config['basedir']
38     # This should always be called with an absolute Unicode basedir.
39     precondition(isinstance(basedir, unicode), basedir)
40
41     if os.path.exists(basedir):
42         if listdir_unicode(basedir):
43             print >>err, "The base directory %s is not empty." % quote_output(basedir)
44             print >>err, "To avoid clobbering anything, I am going to quit now."
45             print >>err, "Please use a different directory, or empty this one."
46             return -1
47         # we're willing to use an empty directory
48     else:
49         os.mkdir(basedir)
50     f = open(os.path.join(basedir, "tahoe-key-generator.tac"), "wb")
51     f.write(keygen_tac)
52     f.close()
53     return 0
54
55 subCommands = [
56     ["create-key-generator", None, CreateKeyGeneratorOptions, "Create a key generator service."],
57 ]
58
59 dispatch = {
60     "create-key-generator": create_key_generator,
61     }
62