Use pidfile in tinc-gui as well.
authorGuus Sliepen <guus@tinc-vpn.org>
Sun, 26 Jun 2011 10:51:25 +0000 (12:51 +0200)
committerGuus Sliepen <guus@tinc-vpn.org>
Sun, 26 Jun 2011 10:53:41 +0000 (12:53 +0200)
gui/README.gui
gui/tinc-gui

index f2b095b1624aa345d1248f36ad3529c9a6596865..da09dfb40c35583e85f4854c1832441c98416373 100644 (file)
@@ -5,10 +5,10 @@ tincctl, you can start the gui:
 tincd -n vpn
 tinc-gui -n vpn
 
-If the GUI cannot find the controlcookie (for example if it is not in
+If the GUI cannot find the pid file (for example if it is not in
 /var/run), you can specify its location manually:
 
-tinc-gui --controlcookie /usr/local/var/run/tinc.vpn.cookie
+tinc-gui --pidfile /usr/local/var/run/tinc.vpn.pid
 
 The following things sort of work:
 
index 9534167d6be9a18c6c54f67385dc3e04f0d0ab89..6facb7cb5caf96904aa7d8b60adc4c49a741b9ec 100755 (executable)
@@ -96,22 +96,22 @@ class Connection:
 
 class VPN:
        confdir = '/etc/tinc'
-       cookiedir = '/var/run/'
+       piddir = '/var/run/'
 
        def connect(self):
-               f = open(self.cookiefile)
-               cookie = string.split(f.readline())
+               f = open(self.pidfile)
+               info = string.split(f.readline())
                f.close()
                s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-               s.connect(('127.0.0.1', int(cookie[1])))
+               s.connect((info[2], int(info[4])))
                self.sf = s.makefile()
                s.close()
                hello = string.split(self.sf.readline())
                self.name = hello[1]
-               self.sf.write('0 ^' + cookie[0] + ' 17\r\n')
+               self.sf.write('0 ^' + info[1] + ' 17\r\n')
                self.sf.flush()
                resp = string.split(self.sf.readline())
-               self.port = cookie[1]
+               self.port = info[4]
                self.nodes = {}
                self.edges = {}
                self.subnets = {}
@@ -203,7 +203,7 @@ class VPN:
                resp = string.split(self.sf.readline())
                return int(resp[2])
 
-       def __init__(self, netname = None, controlcookie = None):
+       def __init__(self, netname = None, pidfile = None):
                self.tincconf = VPN.confdir + '/'
 
                if netname:
@@ -212,33 +212,46 @@ class VPN:
 
                self.tincconf += 'tinc.conf'
 
-               if controlcookie is not None:
-                       self.cookiefile = controlcookie
+               if pidfile is not None:
+                       self.pidfile = pidfile
                else:
-                       self.cookiefile = VPN.cookiedir + 'tinc.'
+                       self.pidfile = VPN.piddir + 'tinc.'
                        if netname:
-                               self.cookiefile += netname + '.'
-                       self.cookiefile += 'cookie'
+                               self.pidfile += netname + '.'
+                       self.pidfile += 'pid'
 
 # GUI starts here
 
+argv0 = sys.argv[0]
 del sys.argv[0]
 net = None
-controlcookie = None
-
-while len(sys.argv) >= 2:
+pidfile = None
+
+def usage(exitcode = 0):
+       print('Usage: ' + argv0 + ' [options]')
+       print('\nValid options are:')
+       print('  -n, --net=NETNAME       Connect to net NETNAME.')
+       print('      --pidfile=FILENAME  Read control cookie from FILENAME.')
+       print('      --help              Display this help and exit.')
+       print('\nReport bugs to tinc@tinc-vpn.org.')
+       sys.exit(exitcode)
+
+while len(sys.argv):
        if sys.argv[0] in ('-n', '--net'):
-               net = sys.argv[1]
-       elif sys.argv[0] in ('--controlcookie'):
-               controlcookie = sys.argv[1]
+               del sys.argv[0]
+               net = sys.argv[0]
+       elif sys.argv[0] in ('--pidfile'):
+               del sys.argv[0]
+               pidfile = sys.argv[0]
+       elif sys.argv[0] in ('--help'):
+               usage(0)
        else:
-               print('Unknown option ' + sys.argv[0])
-               sys.exit(1)
+               print(argv0 + ': unrecognized option \'' + sys.argv[0] + '\'')
+               usage(1)
 
        del sys.argv[0]
-       del sys.argv[0]
 
-vpn = VPN(net, controlcookie)
+vpn = VPN(net, pidfile)
 vpn.connect()
 
 class SuperListCtrl(wx.ListCtrl, ColumnSorterMixin, ListCtrlAutoWidthMixin):