mirror of
https://github.com/gryf/wicd.git
synced 2025-12-20 04:48:00 +01:00
Added ICS support, but commented it out so we can release
This commit is contained in:
@@ -242,9 +242,9 @@ class ConnectionWizard(dbus.service.Object):
|
|||||||
#end function GetNumberOfNetworks
|
#end function GetNumberOfNetworks
|
||||||
|
|
||||||
@dbus.service.method('org.wicd.daemon.wireless')
|
@dbus.service.method('org.wicd.daemon.wireless')
|
||||||
def CreateAdHocNetwork(self,essid,channel,ip,enctype,key,encused):
|
def CreateAdHocNetwork(self,essid,channel,ip,enctype,key,encused,ics):
|
||||||
print 'attempting to create ad-hoc network...'
|
print 'attempting to create ad-hoc network...'
|
||||||
self.wifi.CreateAdHocNetwork(essid,channel,ip,enctype,key,encused)
|
self.wifi.CreateAdHocNetwork(essid,channel,ip,enctype,key,encused,ics)
|
||||||
#end function CreateAdHocNetwork
|
#end function CreateAdHocNetwork
|
||||||
|
|
||||||
@dbus.service.method('org.wicd.daemon.wireless')
|
@dbus.service.method('org.wicd.daemon.wireless')
|
||||||
@@ -258,7 +258,7 @@ class ConnectionWizard(dbus.service.Object):
|
|||||||
print 'setting automatically reconnect when connection drops'
|
print 'setting automatically reconnect when connection drops'
|
||||||
config = ConfigParser.ConfigParser()
|
config = ConfigParser.ConfigParser()
|
||||||
config.read(self.app_conf)
|
config.read(self.app_conf)
|
||||||
config.set("Settings","auto_reconnect",value)
|
config.set("Settings","auto_reconnect",int(value))
|
||||||
config.write(open(self.app_conf,"w"))
|
config.write(open(self.app_conf,"w"))
|
||||||
self.auto_reconnect = value
|
self.auto_reconnect = value
|
||||||
#end function SetAutoReconnect
|
#end function SetAutoReconnect
|
||||||
@@ -481,7 +481,7 @@ class ConnectionWizard(dbus.service.Object):
|
|||||||
print 'setting always show wired interface'
|
print 'setting always show wired interface'
|
||||||
config = ConfigParser.ConfigParser()
|
config = ConfigParser.ConfigParser()
|
||||||
config.read(self.app_conf)
|
config.read(self.app_conf)
|
||||||
config.set("Settings","always_show_wired_interface",value)
|
config.set("Settings","always_show_wired_interface",int(value))
|
||||||
config.write(open(self.app_conf,"w"))
|
config.write(open(self.app_conf,"w"))
|
||||||
self.always_show_wired_interface = value
|
self.always_show_wired_interface = value
|
||||||
|
|
||||||
|
|||||||
27
gui.py
27
gui.py
@@ -125,6 +125,7 @@ language['auto_reconnect'] = _('Automatically reconnect on connection loss')
|
|||||||
language['create_adhoc_network'] = _('Create an Ad-Hoc Network')
|
language['create_adhoc_network'] = _('Create an Ad-Hoc Network')
|
||||||
language['essid'] = _('ESSID')
|
language['essid'] = _('ESSID')
|
||||||
language['use_wep_encryption'] = _('Use Encryption (WEP only)')
|
language['use_wep_encryption'] = _('Use Encryption (WEP only)')
|
||||||
|
language['use_ics'] = _('Activate Internet Connection Sharing')
|
||||||
|
|
||||||
language['0'] = _('0')
|
language['0'] = _('0')
|
||||||
language['1'] = _('1')
|
language['1'] = _('1')
|
||||||
@@ -376,16 +377,13 @@ class NetworkEntry(gtk.Expander):
|
|||||||
ipAddress = self.txtIP.get_text() #for easy typing :)
|
ipAddress = self.txtIP.get_text() #for easy typing :)
|
||||||
netmask = self.txtNetmask
|
netmask = self.txtNetmask
|
||||||
gateway = self.txtGateway
|
gateway = self.txtGateway
|
||||||
|
ip_parts = misc.IsValidIP(ipAddress)
|
||||||
if ipAddress != None: #make sure the is an IP in the box
|
if ip_parts:
|
||||||
if ipAddress.count('.') == 3: #make sure the IP can be parsed
|
if stringToNone(gateway.get_text()) == None: #make sure the gateway box is blank
|
||||||
ipNumbers = ipAddress.split('.') #split it up
|
#fill it in with a .1 at the end
|
||||||
if not '' in ipNumbers: #make sure the IP isn't something like 127..0.1
|
gateway.set_text('.'.join(ip_parts[0:3]) + '.1')
|
||||||
if stringToNone(gateway.get_text()) == None: #make sure the gateway box is blank
|
|
||||||
#fill it in with a .1 at the end
|
|
||||||
gateway.set_text('.'.join(ipNumbers[0:3]) + '.1')
|
|
||||||
|
|
||||||
if stringToNone(netmask.get_text()) == None: #make sure the netmask is blank
|
if stringToNone(netmask.get_text()) == None: #make sure the netmask is blank
|
||||||
netmask.set_text('255.255.255.0') #fill in the most common one
|
netmask.set_text('255.255.255.0') #fill in the most common one
|
||||||
|
|
||||||
|
|
||||||
@@ -701,6 +699,7 @@ class appGui:
|
|||||||
gobject.timeout_add(100,self.pulse_progress_bar)
|
gobject.timeout_add(100,self.pulse_progress_bar)
|
||||||
|
|
||||||
def create_adhoc_network(self,widget=None):
|
def create_adhoc_network(self,widget=None):
|
||||||
|
'''shows a dialog that creates a new adhoc network'''
|
||||||
#create a new adhoc network here.
|
#create a new adhoc network here.
|
||||||
print 'create adhoc network'
|
print 'create adhoc network'
|
||||||
dialog = gtk.Dialog(title=language['create_adhoc_network'], flags = gtk.DIALOG_MODAL, buttons=(gtk.STOCK_OK,1,gtk.STOCK_CANCEL,2))
|
dialog = gtk.Dialog(title=language['create_adhoc_network'], flags = gtk.DIALOG_MODAL, buttons=(gtk.STOCK_OK,1,gtk.STOCK_CANCEL,2))
|
||||||
@@ -708,13 +707,14 @@ class appGui:
|
|||||||
dialog.set_size_request(400,-1)
|
dialog.set_size_request(400,-1)
|
||||||
self.useEncryptionCheckbox = gtk.CheckButton(language['use_wep_encryption'])
|
self.useEncryptionCheckbox = gtk.CheckButton(language['use_wep_encryption'])
|
||||||
self.useEncryptionCheckbox.set_active(False)
|
self.useEncryptionCheckbox.set_active(False)
|
||||||
self.useEncryptionCheckbox.show()
|
|
||||||
ipEntry = LabelEntry(language['ip'] + ':')
|
ipEntry = LabelEntry(language['ip'] + ':')
|
||||||
essidEntry = LabelEntry(language['essid'] + ':')
|
essidEntry = LabelEntry(language['essid'] + ':')
|
||||||
channelEntry = LabelEntry(language['channel'] + ':')
|
channelEntry = LabelEntry(language['channel'] + ':')
|
||||||
self.keyEntry = LabelEntry(language['key'] + ':')
|
self.keyEntry = LabelEntry(language['key'] + ':')
|
||||||
|
self.keyEntry.set_auto_hidden(True)
|
||||||
self.keyEntry.set_sensitive(False)
|
self.keyEntry.set_sensitive(False)
|
||||||
self.keyEntry.entry.set_visibility(False)
|
|
||||||
|
useICSCheckbox = gtk.CheckButton(language['use_ics'])
|
||||||
|
|
||||||
self.useEncryptionCheckbox.connect("toggled",self.toggleEncryptionCheck)
|
self.useEncryptionCheckbox.connect("toggled",self.toggleEncryptionCheck)
|
||||||
channelEntry.entry.set_text('3')
|
channelEntry.entry.set_text('3')
|
||||||
@@ -727,11 +727,14 @@ class appGui:
|
|||||||
dialog.vbox.pack_start(essidEntry)
|
dialog.vbox.pack_start(essidEntry)
|
||||||
dialog.vbox.pack_start(ipEntry)
|
dialog.vbox.pack_start(ipEntry)
|
||||||
dialog.vbox.pack_start(channelEntry)
|
dialog.vbox.pack_start(channelEntry)
|
||||||
|
dialog.vbox.pack_start(useICSCheckbox)
|
||||||
dialog.vbox.pack_start(vboxA)
|
dialog.vbox.pack_start(vboxA)
|
||||||
dialog.vbox.set_spacing(5)
|
dialog.vbox.set_spacing(5)
|
||||||
|
dialog.show_all()
|
||||||
|
useICSCheckbox.hide() #this isn't quite ready yet
|
||||||
response = dialog.run()
|
response = dialog.run()
|
||||||
if response == 1:
|
if response == 1:
|
||||||
wireless.CreateAdHocNetwork(essidEntry.entry.get_text(),channelEntry.entry.get_text(),ipEntry.entry.get_text(),"WEP",self.keyEntry.entry.get_text(),self.useEncryptionCheckbox.get_active())
|
wireless.CreateAdHocNetwork(essidEntry.entry.get_text(),channelEntry.entry.get_text(),ipEntry.entry.get_text(),"WEP",self.keyEntry.entry.get_text(),self.useEncryptionCheckbox.get_active(),False) #useICSCheckbox.get_active())
|
||||||
dialog.destroy()
|
dialog.destroy()
|
||||||
|
|
||||||
def toggleEncryptionCheck(self,widget=None):
|
def toggleEncryptionCheck(self,widget=None):
|
||||||
|
|||||||
8
misc.py
8
misc.py
@@ -22,6 +22,14 @@ def Run(cmd,include_std_error=False):
|
|||||||
input,out_err = os.popen4( cmd, 'r')
|
input,out_err = os.popen4( cmd, 'r')
|
||||||
return out_err.read()
|
return out_err.read()
|
||||||
|
|
||||||
|
def IsValidIP(ip):
|
||||||
|
if ip != None: #make sure there is an IP
|
||||||
|
if ip.count('.') == 3: #make sure the IP can be parsed (or at least it has the proper dots)
|
||||||
|
ipNumbers = ip.split('.') #split it up
|
||||||
|
if not '' in ipNumbers: #make sure the IP isn't something like 127..0.1
|
||||||
|
return ipNumbers
|
||||||
|
return False
|
||||||
|
|
||||||
def PromptToStartDaemon():
|
def PromptToStartDaemon():
|
||||||
gksudo_args = ['gksudo', '--message', 'Wicd needs to access your computer\'s network cards.','--','./daemon.py']
|
gksudo_args = ['gksudo', '--message', 'Wicd needs to access your computer\'s network cards.','--','./daemon.py']
|
||||||
os.spawnvpe(os.P_NOWAIT, 'gksudo', gksudo_args, os.environ)
|
os.spawnvpe(os.P_NOWAIT, 'gksudo', gksudo_args, os.environ)
|
||||||
|
|||||||
@@ -379,7 +379,7 @@ class Wireless:
|
|||||||
ip_pattern = re.compile(r'inet [Aa]d?dr[^.]*:([^.]*\.[^.]*\.[^.]*\.[0-9]*)',re.S)
|
ip_pattern = re.compile(r'inet [Aa]d?dr[^.]*:([^.]*\.[^.]*\.[^.]*\.[0-9]*)',re.S)
|
||||||
return misc.RunRegex(ip_pattern,output)
|
return misc.RunRegex(ip_pattern,output)
|
||||||
|
|
||||||
def CreateAdHocNetwork(self,essid,channel,ip,enctype,key,encused):
|
def CreateAdHocNetwork(self,essid,channel,ip,enctype,key,encused,ics):
|
||||||
misc.Run("killall dhclient dhclient3 wpa_supplicant") #remove wpa_supplicant, as it can cause the connection to revert to
|
misc.Run("killall dhclient dhclient3 wpa_supplicant") #remove wpa_supplicant, as it can cause the connection to revert to
|
||||||
#previous networks...
|
#previous networks...
|
||||||
misc.Run('ifconfig ' + self.wireless_interface + ' down')
|
misc.Run('ifconfig ' + self.wireless_interface + ' down')
|
||||||
@@ -389,8 +389,33 @@ class Wireless:
|
|||||||
#Right now it just assumes you're using WEP
|
#Right now it just assumes you're using WEP
|
||||||
if encused == True:
|
if encused == True:
|
||||||
misc.Run('iwconfig ' + self.wireless_interface + ' key ' + key)
|
misc.Run('iwconfig ' + self.wireless_interface + ' key ' + key)
|
||||||
|
|
||||||
misc.Run('ifconfig ' + self.wireless_interface + ' up')
|
misc.Run('ifconfig ' + self.wireless_interface + ' up')
|
||||||
misc.Run('ifconfig ' + self.wireless_interface + ' inet ' + ip)
|
misc.Run('ifconfig ' + self.wireless_interface + ' inet ' + ip)
|
||||||
|
|
||||||
|
#also just assume that the netmask is 255.255.255.0, it simplifies ICS
|
||||||
|
misc.Run('ifconfig ' + self.wireless_interface + ' netmask 255.255.255.0')
|
||||||
|
|
||||||
|
ip_parts = misc.IsValidIP(ip)
|
||||||
|
|
||||||
|
if ics and ip_parts:
|
||||||
|
#set up internet connection sharing here
|
||||||
|
#flush the forward tables
|
||||||
|
misc.Run('iptables -F FORWARD')
|
||||||
|
misc.Run('iptables -N fw-interfaces')
|
||||||
|
misc.Run('iptables -N fw-open')
|
||||||
|
misc.Run('iptables -F fw-interfaces')
|
||||||
|
misc.Run('iptables -F fw-open')
|
||||||
|
misc.Run('iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu')
|
||||||
|
misc.Run('iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT')
|
||||||
|
misc.Run('iptables -A FORWARD -j fw-interfaces ')
|
||||||
|
misc.Run('iptables -A FORWARD -j fw-open ')
|
||||||
|
misc.Run('iptables -A FORWARD -j REJECT --reject-with icmp-host-unreachable')
|
||||||
|
misc.Run('iptables -P FORWARD DROP')
|
||||||
|
misc.Run('iptables -A fw-interfaces -i ' + self.wireless_interface + ' -j ACCEPT')
|
||||||
|
basic_ip = '.'.join(ip_parts[0:3]) + '.0' #not sure that basic_ip is a good name
|
||||||
|
misc.Run('iptables -t nat -A POSTROUTING -s ' + basic_ip + '/255.255.255.0 -o ' + self.wired_interface + ' -j MASQUERADE')
|
||||||
|
misc.Run('echo 1 > /proc/sys/net/ipv4/ip_forward') #enable routing
|
||||||
#end function CreateAdHocNetwork
|
#end function CreateAdHocNetwork
|
||||||
|
|
||||||
def DetectWirelessInterface(self):
|
def DetectWirelessInterface(self):
|
||||||
@@ -546,3 +571,4 @@ class Wired:
|
|||||||
self.lock.release()
|
self.lock.release()
|
||||||
self.IsConnecting = False
|
self.IsConnecting = False
|
||||||
#end function run
|
#end function run
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user