]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/commitdiff
confwiz: add command line options
authorrobk-tahoe <robk-tahoe@allmydata.com>
Fri, 15 Feb 2008 02:44:29 +0000 (19:44 -0700)
committerrobk-tahoe <robk-tahoe@allmydata.com>
Fri, 15 Feb 2008 02:44:29 +0000 (19:44 -0700)
adds command line option parsing to the confwiz.

the previous --uninstall option behaves as before, but it parsed
more explicitly with the twisted usage library.

added is a --server option, which controls which web site the
backend script for configuration is to be found on. (it is looked
for at /native_client.php on the given server) this option can be
used on conjunction with --uninstall to control where the uninstall
is recorded

Options:
  -u, --uninstall  record uninstall
  -s, --server=    url of server to contact
                   [default: https://beta.allmydata.com/]

e.g. confwiz.py -s https://www-test.allmydata.com/

src/allmydata/gui/confwiz.py
windows/confwiz.py

index 528b2e58493289fe7ffbf1e766689cb01f053bc4..3441c59de575d6ab96dfa1da05a8f7b5649ccdbd 100644 (file)
@@ -1,6 +1,8 @@
 
-BACKEND_URL = 'https://beta.allmydata.com/native_client.php'
-ACCOUNT_PAGE = 'https://beta.allmydata.com/account'
+DEFAULT_SERVER_URL = 'https://beta.allmydata.com/'
+
+BACKEND = 'native_client.php'
+ACCOUNT_PAGE = 'account'
 TAHOESVC_NAME = 'Tahoe'
 WINFUSESVC_NAME = 'Allmydata Tahoe SMB'
 
@@ -20,6 +22,7 @@ from allmydata import uri
 import amdicon
 
 import foolscap
+from twisted.python import usage
 
 class AuthError(Exception):
     pass
@@ -111,9 +114,9 @@ def get_nodeid():
     tub = foolscap.Tub(certFile=certfile)
     return tub.getTubID()
 
-def configure(user, passwd):
+def configure(backend, user, passwd):
     _config_re = re.compile('^([^:]*): (.*)$')
-    config = get_config(BACKEND_URL, user, passwd)
+    config = get_config(backend, user, passwd)
     config_dict = {}
     for line in config.split('\n'):
         if line:
@@ -143,9 +146,13 @@ def DisplayTraceback(message):
     wx.MessageBox(u"%s\n (%s)"%(message,''.join(xc)), 'Error')
 
 class ConfWizApp(wx.App):
-    def __init__(self):
+    def __init__(self, server):
+        self.server = server
         wx.App.__init__(self, 0)
 
+    def get_backend(self):
+        return self.server + BACKEND
+
     def OnInit(self):
         try:
             wx.InitAllImageHandlers()
@@ -182,7 +189,7 @@ class LoginFrame(wx.Frame):
         background = wx.Panel(self, -1)
         background.SetSizeHints(500, 360, 600, 800)
         background.parent = self
-        self.login_panel = LoginPanel(background)
+        self.login_panel = LoginPanel(background, app)
         self.reg_btn_panel = RegisterButtonPanel(background, app)
         sizer = wx.BoxSizer(wx.VERTICAL)
         background_sizer = wx.BoxSizer(wx.VERTICAL)
@@ -212,7 +219,7 @@ class RegisterFrame(wx.Frame):
         background = wx.Panel(self, -1)
         background.SetSizeHints(500, 360, 600, 800)
         background.parent = self
-        self.register_panel = RegisterPanel(background)
+        self.register_panel = RegisterPanel(background, app)
         sizer = wx.BoxSizer(wx.VERTICAL)
         background_sizer = wx.BoxSizer(wx.VERTICAL)
         background_sizer.Add(wx.Size(2,2), 10, wx.EXPAND | wx.ALL, 26)
@@ -231,9 +238,10 @@ class RegisterFrame(wx.Frame):
 
 
 class LoginPanel(wx.Panel):
-    def __init__(self, parent):
+    def __init__(self, parent, app):
         wx.Panel.__init__(self, parent, -1)
         self.parent = parent
+        self.app = app
 
         self.sizer = wx.BoxSizer(wx.VERTICAL)
 
@@ -278,6 +286,8 @@ class LoginPanel(wx.Panel):
         self.Layout()
         wx.Yield()
 
+        backend = self.app.get_backend()
+
         if passwd == '':
             self.warning_label.SetLabel('You must enter a password')
             self.pass_field.SetFocus()
@@ -285,7 +295,7 @@ class LoginPanel(wx.Panel):
             return
 
         try:
-            root_cap = get_root_cap(BACKEND_URL, user, passwd)
+            root_cap = get_root_cap(backend, user, passwd)
             write_config_file('private/root_dir.cap', root_cap+'\n')
         except AuthError:
             self.warning_label.SetLabel('Your email and/or password is incorrect')
@@ -294,11 +304,11 @@ class LoginPanel(wx.Panel):
             return
 
         nodeid = get_nodeid()
-        ret = record_install(BACKEND_URL, user, passwd, nodeid)
+        ret = record_install(backend, user, passwd, nodeid)
         if ret != 'ok':
             wx.MessageBox('Error "%s" recording this system (%s)' % (ret, nodeid), 'Error')
 
-        configure(user, passwd)
+        configure(backend, user, passwd)
         maybe_start_services()
 
         # exit
@@ -326,9 +336,10 @@ class RegisterButtonPanel(wx.Panel):
         self.app.swap_to_register_frame()
 
 class RegisterPanel(wx.Panel):
-    def __init__(self, parent):
+    def __init__(self, parent, app):
         wx.Panel.__init__(self, parent, -1)
         self.parent = parent
+        self.app = app
 
         self.sizer = wx.BoxSizer(wx.VERTICAL)
 
@@ -404,14 +415,16 @@ class RegisterPanel(wx.Panel):
             self.Layout()
             return
 
+        backend = self.app.get_backend()
+
         #print 'calling create_account', time.asctime()
-        result_code = create_account(BACKEND_URL, user, passwd, subscribe)
+        result_code = create_account(backend, user, passwd, subscribe)
 
         if result_code == 'account_exists':
             # try and log into it; if valid, use it anyway
             try:
                 #print 'calling get_root_cap (ae)', time.asctime()
-                root_cap = get_root_cap(BACKEND_URL, user, passwd)
+                root_cap = get_root_cap(backend, user, passwd)
                 write_config_file('private/root_dir.cap', root_cap+'\n')
             except AuthError:
                 self.warning_label.SetLabel('That email address is already registered')
@@ -425,7 +438,7 @@ class RegisterPanel(wx.Panel):
             return
         elif result_code == 'ok':
             #print 'calling get_root_cap (ok)', time.asctime()
-            root_cap = get_root_cap(BACKEND_URL, user, passwd)
+            root_cap = get_root_cap(backend, user, passwd)
             write_config_file('private/root_dir.cap', root_cap+'\n')
         else:
             self.warning_label.SetLabel('an unexpected error occurred ("%s")' % (result_code,))
@@ -434,28 +447,50 @@ class RegisterPanel(wx.Panel):
             return
 
         nodeid = get_nodeid()
-        ret = record_install(BACKEND_URL, user, passwd, nodeid)
+        ret = record_install(backend, user, passwd, nodeid)
         if ret != 'ok':
             wx.MessageBox('Error "%s" recording this system (%s)' % (ret, nodeid), 'Error')
 
-        configure(user, passwd)
+        configure(backend, user, passwd)
         maybe_start_services()
 
         # exit
         self.parent.parent.Close()
 
-def do_uninstall():
+def do_uninstall(server_url):
     nodeid = get_nodeid()
-    ret = record_uninstall(BACKEND_URL, nodeid)
+    ret = record_uninstall(server_url + BACKEND, nodeid)
     print ret
     if ret != 'ok':
         print 'Error "%s" recording uninstall of this system (%s)' % (ret, nodeid)
 
+class Options(usage.Options):
+    synopsis = "Usage:  confwiz [options]"
+
+    optFlags = [
+        ['uninstall', 'u', 'record uninstall'],
+        ]
+    optParameters = [
+        ['server', 's', DEFAULT_SERVER_URL, 'url of server to contact'],
+        ]
+
 def main(argv):
-    if '--uninstall' in argv:
-        do_uninstall()
+    config = Options()
+    try:
+        config.parseOptions(argv[1:])
+    except usage.error, e:
+        print config
+        print "%s:  %s" % (sys.argv[0], e)
+        sys.exit(-1)
+
+    server = config['server']
+    if not server.endswith('/'):
+        server += '/'
+
+    if config['uninstall']:
+        do_uninstall(server)
     else:
-        app = ConfWizApp()
+        app = ConfWizApp(server)
         app.MainLoop()
 
 
index 2a5e8cd6840fa23e26ebdbe134f86fb289258d7b..d92658ee4203c512cee2c8cbedecbd90363a7f6e 100644 (file)
@@ -1,9 +1,5 @@
-
-from allmydata.gui.confwiz import ConfWizApp
-
-def main():
-    app = ConfWizApp()
-    app.MainLoop()
+import sys
+from allmydata.gui.confwiz import main
 
 if __name__ == '__main__':
-    main()
+    main(sys.argv)