コード例 #1
0
    def boto_inicia(self):
        self.real_devices=[]
        self.real_devices=self.detectConcentrator() #get ethernet connected to pppoe concentrator
        #print self.real_devices

        if len(self.real_devices)==0:
            # si no hi ha cap eth, vol dir que no es pot configurar
            QMessageBox.critical(self, self.tr("ADSL/PPPoE Provider Not Found"), self.tr("It don't seems to have an ADSL/PPPoE concentrator connectated to any ethernet."), QMessageBox.Ok)
        else:
            #if there's a configured interface, allow to desconfigure it
            if grepNetInterfaceLines("dsl-provider"):
                self.ui.b_disconfigure.setVisible(True)
            else:
                self.ui.b_disconfigure.setVisible(False)

            self.ui.list_net_dev.clear()

            icon=self.img_ethernet
            
            for dev in self.real_devices:
                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)

            self.ui.pages.setCurrentIndex(1)
コード例 #2
0
 def disconfigure(self):
     system("( poff 2>/dev/null ) &")  #get down the interface silently
     reversed=True
     network_interface_file=[]
     network_interface_file=grepNetInterfaceLines("dsl-provider", reversed)
     f=open(self.interfacesFile,'w')  #remove
     f.writelines(network_interface_file)
     f.close()
     self.ui.b_disconfigure.setVisible(0)
     QMessageBox.information(self, self.tr("Disconfiguration Done"), self.tr("Has removed successfuly configuration."), QMessageBox.Ok)
     self.ui.pages.setCurrentIndex(0)
コード例 #3
0
    def writeConfig(self, param=None): #(self, normal, wifi=None):
        # grep device configuration settings reversed
        #  this means that only retreive interface file without lines about the specified device
        reversed=True
        network_interface_file=grepNetInterfaceLines(self.device[0], reversed)

        #if only want desconfigure, does not grep any other param
        if not param=="disconfig":
    ######
    # Write new lines
    ######
            #begin of interface configuration
            network_interface_file.append("\n")
            network_interface_file.append("allow-hotplug "+self.device[0]+"\n")
    ###
    # IP Section
    ###
            #static IP
            if self.ui.rb_ip_static.isChecked():
                gw=self.ui.le_gateway.text().split(".")
                network_interface_file.append('iface '+self.device[0]+' inet static \n')
                network_interface_file.append('    address '+self.ui.le_ip.text()+'\n')
                network_interface_file.append('    netmask '+self.ui.le_netmask.text()+'\n')
                network_interface_file.append('    gateway '+self.ui.le_gateway.text()+'\n')
                network_interface_file.append('    broadcast '+gw[0]+'.'+gw[1]+'.'+gw[2]+'.255\n')
                network_interface_file.append('    network '+gw[0]+'.'+gw[1]+'.'+gw[2]+'.0\n')

            #dynamic IP
            else:
                network_interface_file.append('iface '+self.device[0]+' inet dhcp\n')

        #DNS Section
            #static DNS
            if self.ui.rb_dns_static.isChecked():
                network_interface_file.append('    # dns-* options are implemented by the resolvconf package, if installed\n')

                #if we choose custom dns, use it
                if self.ui.cb_dns.currentIndex()==0:
                    network_interface_file.append('    dns-nameservers '+self.ui.le_custom_dns.text()+'\n')
                #if not, we have selected one from the list
                else:
                    network_interface_file.append('    dns-nameservers '+self.ui.cb_dns.currentText().split(":")[0]+'\n')

            #dynamic DNS
            else:
                #with static IP & dns dynamic
                if self.ui.rb_ip_static.isChecked():
                    network_interface_file.append('    # dns-* options are implemented by the resolvconf package, if installed\n')
                    #we pass to router the search of DNS
                    network_interface_file.append('    dns-nameservers '+self.ui.le_gateway.text()+'\n')

                #without static IP (all completly DHCP)
                else:
                    pass #Thats all. No more configuration
                    #network_interface_file.append('\n') 

    ###
    # END IP Section
    ###

    ###
    # WIFI Section
    ###
            if self.way=="wifi":
                #self.xarxa  [essid,mode,channel,encryption,quality]
                network_interface_file.append('    pre-up ifconfig '+self.device[0]+' up \n')
                network_interface_file.append('    pre-up iwconfig '+self.device[0]+' essid '+self.xarxa[0]+'\n')
                network_interface_file.append('    pre-up iwconfig '+self.device[0]+' channel '+self.xarxa[2]+'\n')
                if self.xarxa[3]:
                    #check if key is ascii
                    #print self.ui.cb_key_type.currentIndex(), "HOLAAA"
                    if self.ui.cb_key_type.currentIndex()==1:
                        ascii="s:"
                    else:
                        ascii=""
                    #write down
                    network_interface_file.append('    pre-up iwconfig '+self.device[0]+' key '+ascii+self.ui.le_key.text()+' open\n')
                else:
                #no key
                    network_interface_file.append('    pre-up iwconfig '+self.device[0]+' key off\n')
    ###
    # END WIFI Section
    ###

        #new networking not need it
            #Append at the end - if static IP - route add default gw
            #if self.ui.rb_ip_static.isChecked():
                #network_interface_file.append('    up route add default gw '+self.ui.le_gateway.text()+'\n')
                #network_interface_file.append('    down route del default gw '+self.ui.le_gateway.text()+'\n')


        f=open(self.interfacesFile,'w')  #remove
        f.writelines(network_interface_file)
        f.close()
コード例 #4
0
 def grepOldDeviceSettings(self):
   
     reversed=False
     self.oldDeviceSettings=grepNetInterfaceLines(self.device[0], reversed)
コード例 #5
0
    def writeConfig(self):
        self.interface=self.real_devices[self.ui.list_net_dev.currentRow()]
        #print "selected iface", self.interface

        #Be sure that there's no configured interface on the itnerface that we want to configure
        reversed=True
        network_interface_file=[]
        network_interface_file=grepNetInterfaceLines("dsl-provider", reversed)
        f=open(self.interfacesFile,'w')  #remove
        f.writelines(network_interface_file)
        f.close()

        reversed=True
        network_interface_file=[]
        network_interface_file=grepNetInterfaceLines(self.interface, reversed)
        f=open(self.interfacesFile,'w')  #remove
        f.writelines(network_interface_file)
        f.close()

        fitxer='/etc/ppp/options' 
        #fitxer='/home/josep/options' # ho poso per proves, borrar-lo després        
        #en el /etc/ppp/options has de aseguarte que hi hagin les entrades
        # noipdefault i noauth 
        #buscar si hi ha #noipdefault i descomentar-lo, si no hi es posar-li
        #buscar si hi ha auth i posar en el seu lloc noauth. si no hi es, posar-li
        #assigno a la variable llista el contingut del fitxer options
        f=open(fitxer,'r')
        llista=f.readlines()
        f.close()
        #repasso la llista linia per linia
        tnoipdefault=False
        tnoauth=False
        for x in range(len(llista)):
            # si trobo comentat el noipdefault, el descomento
            if llista[x].strip()=='#noipdefault':
                llista[x]='noipdefault\n'
                tnoipdefault=True
            # si trobo el auth el substitueixo per noauth
            if llista[x].strip()=='auth':
                llista[x]='noauth\n'
                tnoauth=True
        # si finalment no existeix noipdefault el afageixo al final del fitxer
        if not tnoipdefault:
            llista.append('noipdefault')
        # si finalment no existeix noauth el afageixo al final del fitxer
        if not tnoauth:
            llista.append('\nnoauth')
        f=open(fitxer,'w')
        for i in llista:
            f.write(i)
        f.close()
        
        fitxer='/etc/ppp/ip-up.d/0clampmss'
        #fitxer='/home/josep/0clampmss'
        #si aquest fitxer no hi es, crear-lo: /etc/ppp/ip-up.d/0clampmss
        if not path.exists(fitxer):
            f=open(fitxer,'w')
            f.write("#!/bin/sh \n")
            f.write("# Enable MSS clamping (autogenerated by kademar  -  CADI pppoe) \n")
            f.write("\n")
            f.write('''iptables -o "$PPP_IFACE" --insert FORWARD 1 -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu \n''')
            f.close()
            system("chmod +x /etc/ppp/ip-up.d/0clampmss")
        #si hi es no fer res    
        
        # als fitxers /etc/ppp/chap-secrets i pap-secrets, s'hi afageix a la ultima linia si no hi es
        # kademar "*" ""
        fitxer='/etc/ppp/chap-secrets'
        f=open(fitxer,'r')
        llista=f.readlines()
        f.close()
        trobat=False
        for i in llista:
            if i.strip()=='''kademar "*" ""''':
                trobat=True
        if not trobat:
            llista.append('''kademar "*" "" \n''')
        
        #fitxer='/home/josep/chap-secrets' #ho poso per proves, borrar-ho després    
            
        f=open(fitxer,'w')
        f.writelines(llista)
        f.close()
            
        fitxer='/etc/ppp/pap-secrets'
        f=open(fitxer,'r')
        llista=f.readlines()
        f.close()
        trobat=False
        for i in llista:
            if i.strip()=='''kademar "*" ""''':
                trobat=True
        if not trobat:
            llista.append('''kademar "*" "" \n''')
        
        #fitxer='/home/josep/pap-secrets' #ho poso per proves, borrar-ho després    
            
        f=open(fitxer,'w')
        f.writelines(llista)
        f.close()
        
        #al fitxer /etc/ppp/peers/provider  maxakarlo
        fitxer='/etc/ppp/peers/provider'
        #fitxer='/home/josep/dsl-provider' # ho poso per proves, borrar-lo després
        f=open(fitxer,'w')
        f.write('noipdefault \n')
        f.write('usepeerdns \n')
        f.write('defaultroute \n')
        f.write('hide-password \n')
        f.write('lcp-echo-interval 20 \n')
        f.write('lcp-echo-failure 3 \n')
        f.write('connect /bin/true \n')
        f.write('noauth \n')
        f.write('persist \n')
        f.write('mtu 1492 \n')
        f.write('noaccomp \n')
        f.write('default-asyncmap \n')
        f.write('plugin rp-pppoe.so '+self.interface+' \n')
        f.write('user "kademar" \n')
        f.write('#pty "/usr/sbin/pppoe -I "'+self.interface+'" -T 80 -m 1452" \n')
        f.close()
        
        #al fitxer /etc/ppp/eth???-dsl-provider    maxakarlo
        fitxer='/etc/ppp/'+self.interface+'-dsl-provider'
        #fitxer='/home/josep/'+self.interface+'-dsl-provider' # ho poso per proves, borrar-lo després
        f=open(fitxer,'w')
        f.write('#!/bin/bash \n')
        f.write('/usr/sbin/pppoe -I '+self.interface+' -T 80 -m 1452  2>&1 >/dev/null \n')
        f.write('pon dsl-provider  2>&1 >/dev/null \n')
        f.close()

        #al fitxer /etc/network/interfaces buscar dsl-provider  i substitueixes d auto a auto
        #    auto dsl-provider
        #    iface dsl-provider inet ppp
        #    provider dsl-provider
        #    post-up sh /etc/network/eth???-dsl-provider &
        
        #obro el fitxer interfaces i ho assigno a variable llista
        f=open(self.interfacesFile,'r')
        llista=f.readlines()
        f.close()
        llista.append('\n')
        llista.append('auto dsl-provider \n')
        llista.append('    iface dsl-provider inet ppp \n')
        llista.append('    provider dsl-provider \n')
        llista.append('    post-up sh /etc/ppp/'+self.interface+'-dsl-provider & \n')
        f=open(self.interfacesFile,'w')  
        f.writelines(llista)
        f.close()

        #run & Try to connect
        system('poff')
        system('pon')


        QMessageBox.information(self, self.tr("Configuration Done"), self.tr("All configuration process has been completed. Now you should have internet."), QMessageBox.Ok)
        self.ui.pages.setCurrentIndex(0)


#app = QApplication(sys.argv)
#preferencies = preferencies()
#preferencies.show()
#app.exec_()