X-Git-Url: https://www.tinc-vpn.org/git/browse?a=blobdiff_plain;f=gui%2Ftinc-gui;h=4aae27b510a23a8fdc007fc366d23e0fa4571057;hb=809ee79b458b0c45d4d60761b1d71171648bdbd5;hp=d061a9f7b4d77bf5364d770dabe1de843cd72bcc;hpb=927efeff6242e262b176976a1eb298891578f77d;p=tinc diff --git a/gui/tinc-gui b/gui/tinc-gui index d061a9f7..4aae27b5 100755 --- a/gui/tinc-gui +++ b/gui/tinc-gui @@ -20,12 +20,13 @@ import string import socket -import wx -import sys import os import platform import time +import sys from argparse import ArgumentParser + +import wx from wx.lib.mixins.listctrl import ColumnSorterMixin from wx.lib.mixins.listctrl import ListCtrlAutoWidthMixin @@ -33,7 +34,6 @@ if platform.system() == 'Windows': import _winreg # Classes to interface with a running tinc daemon - REQ_STOP = 0 REQ_RELOAD = 1 REQ_RESTART = 2 @@ -121,12 +121,51 @@ class Connection(object): self.socket = int(args[5]) self.status = int(args[6], 0x10) - self.weight = 123 + self.weight = 'n/a' + +class VPN(object): + def __init__(self, netname=None, pidfile=None, confdir='/etc/tinc', piddir='/run'): + if platform.system() == 'Windows': + sam = _winreg.KEY_READ + if platform.machine().endswith('64'): + sam = sam | _winreg.KEY_WOW64_64KEY + try: + reg = _winreg.ConnectRegistry(None, _winreg.HKEY_LOCAL_MACHINE) + try: + key = _winreg.OpenKey(reg, "SOFTWARE\\tinc", 0, sam) + except WindowsError: + key = _winreg.OpenKey(reg, "SOFTWARE\\Wow6432Node\\tinc", 0, sam) + confdir = _winreg.QueryValue(key, None) + except WindowsError: + pass -class VPN: - confdir = '/etc/tinc' - piddir = '/var/run' + if netname: + self.netname = netname + self.confbase = os.path.join(confdir, netname) + else: + self.confbase = confdir + + self.tincconf = os.path.join(self.confbase, 'tinc.conf') + + if pidfile is not None: + self.pidfile = pidfile + else: + if platform.system() == 'Windows': + self.pidfile = os.path.join(self.confbase, 'pid') + else: + if netname: + self.pidfile = os.path.join(piddir, 'tinc.' + netname + '.pid') + else: + self.pidfile = os.path.join(piddir, 'tinc.pid') + + self.sf = None + self.name = None + self.port = None + self.nodes = {} + self.edges = {} + self.subnets = {} + self.connections = {} def connect(self): # read the pidfile @@ -163,14 +202,11 @@ class VPN: self.sf.flush() resp = string.split(self.sf.readline()) self.port = info[4] - self.nodes = {} - self.edges = {} - self.subnets = {} - self.connections = {} self.refresh() def refresh(self): - self.sf.write('18 3\r\n18 4\r\n18 5\r\n18 6\r\n') + for request in (REQ_DUMP_NODES, REQ_DUMP_EDGES, REQ_DUMP_SUBNETS, REQ_DUMP_CONNECTIONS): + self.sf.write('{} {}\r\n'.format(CONTROL, request)) self.sf.flush() for node in self.nodes.values(): @@ -252,43 +288,6 @@ class VPN: resp = string.split(self.sf.readline()) return int(resp[2]) - def __init__(self, netname=None, pidfile=None): - if platform.system() == 'Windows': - sam = _winreg.KEY_READ - if platform.machine().endswith('64'): - sam = sam | _winreg.KEY_WOW64_64KEY - try: - reg = _winreg.ConnectRegistry(None, _winreg.HKEY_LOCAL_MACHINE) - try: - key = _winreg.OpenKey(reg, "SOFTWARE\\tinc", 0, sam) - except WindowsError: - key = _winreg.OpenKey(reg, "SOFTWARE\\Wow6432Node\\tinc", 0, sam) - VPN.confdir = _winreg.QueryValue(key, None) - except WindowsError: - pass - - if netname: - self.netname = netname - self.confbase = os.path.join(VPN.confdir, netname) - else: - self.confbase = VPN.confdir - - self.tincconf = os.path.join(self.confbase, 'tinc.conf') - - if pidfile is not None: - self.pidfile = pidfile - else: - if platform.system() == 'Windows': - self.pidfile = os.path.join(self.confbase, 'pid') - else: - if netname: - self.pidfile = os.path.join(VPN.piddir, 'tinc.' + netname + '.pid') - else: - self.pidfile = os.path.join(VPN.piddir, 'tinc.pid') - - - - class SuperListCtrl(wx.ListCtrl, ColumnSorterMixin, ListCtrlAutoWidthMixin): def __init__(self, parent, style): @@ -630,7 +629,12 @@ if __name__ == '__main__': argparser.add_argument('-n', '--net', metavar='NETNAME', dest='netname', help='Connect to net NETNAME') argparser.add_argument('-p', '--pidfile', help='Path to the pid file (containing the controlcookie)') + argparser.add_argument('--version', action='store_true', help='Show version number') options = argparser.parse_args() + if options.version: + print('tinc-gui 1.1pre?') + sys.exit(0) + main(options.netname, options.pidfile)