X-Git-Url: https://www.tinc-vpn.org/git/browse?a=blobdiff_plain;f=gui%2Ftinc-gui;h=f1a9bbfcaabd1a9a2d0ce512addac0603b166bb5;hb=06a4a8c153407b690a3ce3f0e7fdaa8568ccb1a3;hp=2b4f903441435abd898f3eb51e3dcb0b3ff90c4b;hpb=26eca516508829c3f9d8f2549335f613b569e8f5;p=tinc diff --git a/gui/tinc-gui b/gui/tinc-gui index 2b4f9034..f1a9bbfc 100755 --- a/gui/tinc-gui +++ b/gui/tinc-gui @@ -1,7 +1,8 @@ #!/usr/bin/python # tinc-gui -- GUI for controlling a running tincd -# Copyright (C) 2009-2012 Guus Sliepen +# Copyright (C) 2009-2014 Guus Sliepen +# 2014 Dennis Joachimsthaler # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -27,7 +28,7 @@ import time from wx.lib.mixins.listctrl import ColumnSorterMixin from wx.lib.mixins.listctrl import ListCtrlAutoWidthMixin -if platform.system == 'Windows': +if platform.system() == 'Windows': import _winreg # Classes to interface with a running tinc daemon @@ -130,7 +131,11 @@ class VPN: else: # otherwise connect via TCP print(unixfile + " does not exist."); - s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + if ':' in info[2]: + af = socket.AF_INET6 + else: + af = socket.AF_INET + s = socket.socket(af, socket.SOCK_STREAM) s.connect((info[2], int(info[4]))) self.sf = s.makefile() @@ -233,10 +238,16 @@ class VPN: return int(resp[2]) def __init__(self, netname = None, pidfile = None): - if platform.system == 'Windows': + if platform.system() == 'Windows': + sam = _winreg.KEY_READ + if platform.machine().endswith('64'): + sam = sam | _winreg.KEY_WOW64_64KEY try: - reg = _winreg.ConnectRegistry(None, HKEY_LOCAL_MACHINE) - key = _winreg.OpenKey(reg, "SOFTWARE\\tinc") + 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 @@ -252,7 +263,7 @@ class VPN: if pidfile != None: self.pidfile = pidfile else: - if platform.system == 'Windows': + if platform.system() == 'Windows': self.pidfile = os.path.join(self.confbase, 'pid') else: if netname: