def run(self): #Internet Diagnostic if not getoutput("ping www.google.com -c1 >/dev/null 2>&1 ; echo $?")[-1]=="0": #this must return 0 to have internet if not getoutput("ping www.kademar.org -c1 >/dev/null 2>&1 ; echo $?")[-1]=="0": #check with various servers if not getoutput("ping www.yahoo.com -c1 >/dev/null 2>&1 ; echo $?")[-1]=="0": #if previous fails internet=False else: internet=True else: internet=True else: internet=True self.emit(SIGNAL("DiagInternet"), internet) #Emit Internet Diagnostic #Router Diagnostic netdevices=getNetworkDevices() ip_router=eth_provider=ip_eth_provider="" router=False for eth in netdevices: info=getoutput("arp -i "+eth+" 2>/dev/null | grep "+eth+" 2>/dev/null").split() if len(info)>1: if getoutput("ping "+info[0]+" -c1 >/dev/null 2>&1 ; echo $?")[-1]=="0": #if we have connection with router eth_provider=eth ip_eth_provider=getoutput("ifconfig "+eth_provider+" | grep Bcast | cut -f2 -d: | cut -f1 -d\ ") #get your IP mac_eth_provider=getoutput("cat /sys/class/net/"+eth_provider+"/address") # get ethernet MAC ip_router=info[0] # get router IP mac_router=info[2] # get router MAC router=True #check that we have found a router break #This means that we cannot get router information if not router: #print "second router information" a=getoutput("""arp -a >/dev/null 2>&1 ; arp 2>/dev/null | while read line; do if [ "`echo $line | awk ' { print $4 } '`" = "C" ]; then echo $line | awk ' { print $1" "$5 } '; fi; done""").split() if len(eth_provider)>0: #if found and eth_provider eth_provider=a[1] ip_eth_provider=getoutput("ifconfig "+eth_provider+" | grep Bcast | cut -f2 -d: | cut -f1 -d\ ") #get your IP mac_eth_provider=getoutput("cat /sys/class/net/"+eth_provider+"/address") ip_router=a[0] mac_router="" router=True self.emit(SIGNAL("DiagRouter"), router, ip_router, eth_provider, ip_eth_provider) #Emit Router Diagnostic #Here you can read if any ethernet is configured and pass a fail diagnostic if not router: #momentaniously only pass fail, does not check local IP if don't have connection to router self.emit(SIGNAL("DiagFinal"), "fail") else: self.emit(SIGNAL("DiagFinal"), "ok2")
def enterPageEvent(self, page): #this function makes things when enter to a concrete page if page==1: #entered to page Devices self.ui.list_net_dev.blockSignals(True) self.real_devices=[] devices=getNetworkDevices() #get network devices self.ui.list_net_dev.clear() for dev in devices: wireless=path.exists("/sys/class/net/"+dev+"/wireless") #this interface is wireless? if wireless: icon=self.img_wireless else: icon=self.img_ethernet vendor=grepNetInterfaceInformation(dev, "vendor") product=grepNetInterfaceInformation(dev, "product") a=QListWidgetItem(self.ui.list_net_dev) a.setText(dev+": "+vendor+"\n"+product) a.setIcon(QIcon(icon)) self.ui.list_net_dev.addItem(a) # eth, true/false, vendor, product d=[dev, wireless, vendor, product] self.real_devices.append(d) self.ui.b_next.setEnabled(False) #disable next button self.ui.list_net_dev.blockSignals(False) #get hal information about it #restart IP parameters self.restartIpParameters() elif page==2: #entered to page Wireless networks self.reload_wifi_list() #restart IP parameters self.restartIpParameters() elif page==3: self.grepOldDeviceSettings() self.ui.le_ip.setText(self.returnOldSetting("address")) self.ui.le_netmask.setText(self.returnOldSetting("netmask")) self.ui.le_gateway.setText(self.returnOldSetting("gateway")) self.ui.le_custom_dns.setText(self.returnOldSetting("dns-nameservers"))