Use pidfile in tinc-gui as well.

This commit is contained in:
Guus Sliepen 2011-06-26 12:51:25 +02:00
parent 660f530a6f
commit 27e6a89b15
2 changed files with 36 additions and 23 deletions

View file

@ -5,10 +5,10 @@ tincctl, you can start the gui:
tincd -n vpn tincd -n vpn
tinc-gui -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: /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: The following things sort of work:

View file

@ -96,22 +96,22 @@ class Connection:
class VPN: class VPN:
confdir = '/etc/tinc' confdir = '/etc/tinc'
cookiedir = '/var/run/' piddir = '/var/run/'
def connect(self): def connect(self):
f = open(self.cookiefile) f = open(self.pidfile)
cookie = string.split(f.readline()) info = string.split(f.readline())
f.close() f.close()
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 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() self.sf = s.makefile()
s.close() s.close()
hello = string.split(self.sf.readline()) hello = string.split(self.sf.readline())
self.name = hello[1] 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() self.sf.flush()
resp = string.split(self.sf.readline()) resp = string.split(self.sf.readline())
self.port = cookie[1] self.port = info[4]
self.nodes = {} self.nodes = {}
self.edges = {} self.edges = {}
self.subnets = {} self.subnets = {}
@ -203,7 +203,7 @@ class VPN:
resp = string.split(self.sf.readline()) resp = string.split(self.sf.readline())
return int(resp[2]) return int(resp[2])
def __init__(self, netname = None, controlcookie = None): def __init__(self, netname = None, pidfile = None):
self.tincconf = VPN.confdir + '/' self.tincconf = VPN.confdir + '/'
if netname: if netname:
@ -212,33 +212,46 @@ class VPN:
self.tincconf += 'tinc.conf' self.tincconf += 'tinc.conf'
if controlcookie is not None: if pidfile is not None:
self.cookiefile = controlcookie self.pidfile = pidfile
else: else:
self.cookiefile = VPN.cookiedir + 'tinc.' self.pidfile = VPN.piddir + 'tinc.'
if netname: if netname:
self.cookiefile += netname + '.' self.pidfile += netname + '.'
self.cookiefile += 'cookie' self.pidfile += 'pid'
# GUI starts here # GUI starts here
argv0 = sys.argv[0]
del sys.argv[0] del sys.argv[0]
net = None net = None
controlcookie = None pidfile = None
while len(sys.argv) >= 2: 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'): if sys.argv[0] in ('-n', '--net'):
net = sys.argv[1] del sys.argv[0]
elif sys.argv[0] in ('--controlcookie'): net = sys.argv[0]
controlcookie = sys.argv[1] elif sys.argv[0] in ('--pidfile'):
del sys.argv[0]
pidfile = sys.argv[0]
elif sys.argv[0] in ('--help'):
usage(0)
else: else:
print('Unknown option ' + sys.argv[0]) print(argv0 + ': unrecognized option \'' + sys.argv[0] + '\'')
sys.exit(1) usage(1)
del sys.argv[0] del sys.argv[0]
del sys.argv[0]
vpn = VPN(net, controlcookie) vpn = VPN(net, pidfile)
vpn.connect() vpn.connect()
class SuperListCtrl(wx.ListCtrl, ColumnSorterMixin, ListCtrlAutoWidthMixin): class SuperListCtrl(wx.ListCtrl, ColumnSorterMixin, ListCtrlAutoWidthMixin):