Beispiel #1
0
    def tryconnect(self, dialtone_check):
        """Use pppd to connect to the network."""
        try:
            # Modem is not connected if _pppd_pid is set to None.
            if not self._pppd_pid:
                data_port = self.data_port
                #log( "Openind data")
                data_port.open()
                #log( "Opened")
                data_port.write('ATZ\r\n')
                print data_port.return_data()
                data_port.write('ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0\r\n')
                print data_port.return_data()
                data_port.write('AT+CGDCONT=1,"IP","internet.wind",,\r\n')
                print data_port.return_data()
                if not dialtone_check:
                    data_port.write('ATX3\r\n')
                    print data_port.return_data()
                data_port.write('ATDT%s\r\n' % self._dial_num)
                print data_port.readline()
                status = data_port.readline()
                print status
                if status.startswith('CONNECT'):
                    #                   pppd_args = [defaults.PPPD_PATH, self.baudrate, self.data_port.port] + self.pppd_params
                    pppd_args = [
                        self.pppd_path, self.data_port.port, self.baudrate
                    ] + self.pppd_params
                    pid = os.fork()
                    if pid:
                        self._pppd_pid = pid
                    else:
                        try:

                            os.execv(self.pppd_path, pppd_args)
                        except:
                            raise errors.PppdError(
                                'An error while starting pppd.')
            else:
                last_pppd_result = os.waitpid(self._pppd_pid, os.WNOHANG)
                if last_pppd_result != (0, 0):
                    # Reconnect.
                    self._pppd_pid = None
                    self.connect(dialtone_check)
                else:
                    # Modem already connected.
                    raise errors.HumodUsageError('Modem already connected.')
            return True
        except:
            return False
Beispiel #2
0
 def connectwvdial(self):
     if ( self._pppd_pid != None ) :
         self.disconnectwvdial()
     if os.name != 'nt':
         pid = os.fork()
     else:
         pid = 0 
     if pid:
         self._pppd_pid = pid
     else:
         try:
             logFile = datetime.datetime.now().strftime("log/wvdial_%d%m%Y.log")
             os.system("wvdial -C " + self.cfg.operator + ".conf 2>> " + logFile)
         except:
             raise errors.PppdError('An error while starting wvdial.')