예제 #1
0
 def setDnsManual(self, config):
     primaryDns = self._get_param(config, 'primary')
     secondaryDns = self._get_param(config, 'secondary', '')
     if (not utils.isIpValid(primaryDns)): raise ValueError("Invalid Primary DNS IP Address: %s" % primaryDns)
     if (secondaryDns != '' and not utils.isIpValid(secondaryDns)): raise ValueError("Invalid Secondary DNS IP Address: %s" % secondaryDns)
     self.DnsStatus = 0
     self.PrimaryDns = primaryDns
     self.SecondaryDns = secondaryDns
예제 #2
0
 def setLanAddress(self, config):
     ipaddress = self._get_param(config, 'ipaddress')
     netmask = self._get_param(config, 'netmask', '255.255.255.0')
     url = self._get_param(config, 'url', 'homerouter.cpe')
     if (not utils.isIpValid(ipaddress)): raise ValueError("Invalid LAN IP Address: %s" % ipaddress)
     if (not utils.isIpValid(netmask)): raise ValueError("Invalid LAN Netmask: %s" % netmask)
     self.DhcpIPAddress = ipaddres
     self.DhcpLanNetmask = netmask
     self.homeurl = url
예제 #3
0
 def setDhcpOn(self, config):
     startAddress = self._get_param(config, 'startaddress')
     endAddress = self._get_param(config, 'endaddress')
     leaseTime = self._get_param(config, 'leasetime', 86400)
     if not utils.isIpValid(startAddress):
         raise ValueError("Invalid DHCP starting IP Address: %s" % startAddress)
     if not utils.isIpValid(endAddress):
         raise ValueError("Invalid DHCP ending IP Address: %s" % endAddress)
     self.DhcpStatus = 1
     self.DhcpStartIPAddress = startAddress
     self.DhcpEndIPAddress = endAddress
     self.DhcpLeaseTime = leaseTime
예제 #4
0
    def __init__(self, config):
        #Define properties first to support XML serialisation
        super(VirtualServer, self).__init__()
        self.VirtualServerIPName = ''
        self.VirtualServerStatus = 1
        self.VirtualServerRemoteIP = ''
        self.VirtualServerWanPort = 0
        self.VirtualServerWanEndPort = 0
        self.VirtualServerLanPort = 0
        self.VirtualServerLanEndPort = 0
        self.VirtualServerIPAddress = ''
        self.VirtualServerProtocol = ''

        if isinstance(config, basestring):
            self.parseXML(config)
        else:
            name = self._get_param(config, 'name')
            startWanPort = self._get_param(config, 'startwanport')
            endWanPort = self._get_param(config, 'endwanport', startWanPort)
            startLanPort = self._get_param(config, 'startlanport')
            endLanPort = self._get_param(config, 'endlanport', startLanPort)
            localIp = self._get_param(config, 'localip')
            protocol = self._get_param(config, 'protocol', 'BOTH')
            if protocol not in self.PROTOCOLS:
                raise ValueError('Invalid protocol specified for port forwarding (Virtual Server). Must be one of: [%s]' % ', '.join(self.PROTOCOLS.keys))
            protocol = self.PROTOCOLS[protocol]
            if not utils.isIpValid(localIp):
                raise ValueError('Invalid ipaddress specified for port fowarding target server')
            self.VirtualServerIPName = name
            self.VirtualServerWanPort = startWanPort
            self.VirtualServerWanEndPort = endWanPort
            self.VirtualServerLanPort = startLanPort
            self.VirtualServerLanEndPort = endLanPort
            self.VirtualServerIPAddress = localIp
            self.VirtualServerProtocol = protocol
예제 #5
0
 def __init__(self, config):
     super(StaticHost, self).__init__()
     self.HostIndex = 0
     self.HostHw = ''
     self.HostIp = ''
     self.HostEnabled = 1
     if isinstance(config, basestring):
         self.parseXML(config)
     else:
         mac = self._get_param(config, self.P_MAC_ADDRESS)
         ip = self._get_param(config, self.P_IP_ADDRESS)
         if (not utils.isMacValid(mac)): raise ValueError("Invalid static host MAC address: %s" % mac)
         if (not utils.isIpValid(ip)): raise ValueError("Invalid static host IP Address: %s" % ip)
         self.HostHw = mac
         self.HostIp = ip
예제 #6
0
    def set(self, mode, config=False):
        self.connectionmode = mode
        if not config:
            if mode == self.MODE_AUTO or mode == self.MODE_LAN: return
            else: config = {}

        #Set values only if they exist in the supplied config

        if mode == self.MODE_DYNAMIC or mode == self.MODE_PPPOE_DYNAMIC or mode == self.MODE_AUTO:
            if self.P_PRIMARY_DNS in config:
                dns = self._get_param(config, self.P_PRIMARY_DNS)
                if dns == '': dns = self.NO_DNS
                if (dns != self.NO_DNS):
                    if (not utils.isIpValid(dns)):
                        raise ValueError(
                            "Invalid IP Address for Dynamic Primary DNS: %s" %
                            dns)
                self.dynamicprimarydns = dns
                if dns != self.NO_DNS:
                    self.dynamicsetdnsmanual = 1
                else:
                    self.dynamicsetdnsmanual = 0

            if self.P_SECONDARY_DNS in config:
                dns = self._get_param(config, self.P_SECONDARY_DNS)
                if dns == '': dns = self.NO_DNS
                if (dns != self.NO_DNS):
                    if (not utils.isIpValid(dns)):
                        raise ValueError(
                            "Invalid IP Address for Dynamic Secondary DNS: %s"
                            % dns)
                self.dynamicsecondarydns = dns
                if dns != self.NO_DNS: self.dynamicsetdnsmanual = 1

            if self.P_DNS_MANUAL in config:
                dns = self._get_param(config, self.P_DNS_MANUAL)
                if dns not in [0, 1]:
                    raise ValueError("%s must be 1 or 0: %s" %
                                     (self.P_DNS_MANUAL, dns))
                if self.dynamicprimarydns == self.NO_DNS:
                    raise ValueError(
                        "Manual DNS specified, Primary DNS must be set")
                self.dynamicsetdnsmanual = dns

            if self.P_MTU in config:
                self.dynamicipmtu = self._get_param(config, self.P_MTU)

        if mode == self.MODE_PPPOE or mode == self.MODE_PPPOE_DYNAMIC or mode == self.MODE_AUTO:
            if self.P_PPOE_PASSWORD in config:
                val = self._get_param(config, self.P_PPOE_PASSWORD)
                if len(val) > 63:
                    raise ValueError(
                        'PPPOE password can contain a maximum of 63 characters, including letters, numbers, and symbols (ASCII characters 32-126).'
                    )
                self.pppoepwd = val
            elif mode != self.MODE_AUTO and self.pppoepwd == '':
                raise ValueError('PPOE password must be provided')

            if self.P_PPOE_USERNAME in config:
                val = self._get_param(config, self.P_PPOE_USERNAME)
                if len(val) > 63:
                    raise ValueError(
                        'PPPOE user can contain a maximum of 63 characters, including letters, numbers, and symbols (ASCII characters 32-126).'
                    )
                self.pppoeuser = val
            elif mode != self.MODE_AUTO and self.username == '':
                raise ValueError('PPOE username must be provided')

            if self.P_PPOE_AUTH in config:
                mode = self._get_param(config, self.P_PPOE_AUTH)
                if not mode in [self.AUTH_AUTO, self.AUTH_PAP, self.AUTH_CHAP]:
                    raise ValueError(
                        'PPOE auth mode must be one of: 0 (AUTO), 1 (PAP), 2 (CHAP)'
                    )
                self.pppoeauth = self._get_param(config, self.P_PPOE_AUTH)

            if self.P_MTU in config:
                self.pppoemtu = self._get_param(config, self.P_MTU)

        if mode == self.MODE_STATIC:

            if self.P_STATIC_IP_ADDRESS in config:
                ip = self._get_param(config, self.P_STATIC_IP_ADDRESS)
                if (not utils.isIpValid(ip)):
                    raise ValueError("Invalid IP Address: %s" % ip)
                self.ipaddress = ip
                self.netmask = '255.255.255.0'
            else:
                raise ValueError('%s must be provided' %
                                 self.P_STATIC_IP_ADDRESS)

            if self.P_STATIC_NETMASK in config:
                self.netmask = self._get_param(config, self.P_STATIC_NETMASK)

            if self.P_STATIC_GATEWAY in config:
                self.gateway = self._get_param(config, self.P_STATIC_GATEWAY)
            else:
                if self.gateway == '':
                    raise ValueError('%s must be provided' %
                                     self.P_STATIC_GATEWAY)

            if self.P_MTU in config:
                self.staticipmtu = self._get_param(config, self.P_MTU)

            if self.P_STATIC_PRIMARY_DNS in config:
                dns = self._get_param(config, self.P_STATIC_PRIMARY_DNS)
                if (not utils.isIpValid(dns)):
                    raise ValueError("Invalid IP Address for Primary DNS: %s" %
                                     dns)
                self.primarydns = dns

            if self.P_STATIC_SECONDARY_DNS in config:
                dns = self._get_param(config, self.P_STATIC_SECONDARY_DNS)
                if (not utils.isIpValid(dns)):
                    raise ValueError(
                        "Invalid IP Address for Secondary DNS: %s" % dns)
                self.secondarydns = dns

        if self.P_MAX_IDLE in config:
            self.maxidletime = self._get_param(config, self.P_MAX_IDLE)

        if self.P_DIAL_MODE in config:
            mode = self._get_param(config, self.P_DIAL_MODE)
            if not mode in [self.DIAL_AUTO, self.DIAL_ON_DEMAND]:
                raise ValueError(
                    'PPOE dial up mode must be one of: 0 (AUTO), 1 (On Demand)'
                )
            self.dialmode = mode
    def set(self, mode, config=False):
        self.connectionmode = mode
        if not config:
            if mode == self.MODE_AUTO or mode == self.MODE_LAN:
                return
            else:
                config = {}

        # Set values only if they exist in the supplied config

        if mode == self.MODE_DYNAMIC or mode == self.MODE_PPPOE_DYNAMIC or mode == self.MODE_AUTO:
            if 'primarydns' in config:
                dns = self._get_param(config, 'primarydns')
                if dns == '': dns = self.NO_DNS
                if (dns != self.NO_DNS):
                    if (not utils.isIpValid(dns)):
                        raise ValueError(
                            "Invalid IP Address for Dynamic Primary DNS: %s" %
                            dns)
                self.dynamicprimarydns = dns
                if dns != self.NO_DNS:
                    self.dynamicsetdnsmanual = 1
                else:
                    self.dynamicsetdnsmanual = 0

            if 'secondarydns' in config:
                dns = self._get_param(config, 'secondarydns')
                if dns == '': dns = self.NO_DNS
                if (dns != self.NO_DNS):
                    if (not utils.isIpValid(dns)):
                        raise ValueError(
                            "Invalid IP Address for Dynamic Secondary DNS: %s"
                            % dns)
                self.dynamicsecondarydns = dns
                if dns != self.NO_DNS: self.dynamicsetdnsmanual = 1

            if 'dnsmanual' in config:
                dns = self._get_param(config, 'dnsmanual')
                if dns not in [0, 1]:
                    raise ValueError("dnsmanual must be 1 or 0: %s" % dns)
                if self.dynamicprimarydns == self.NO_DNS:
                    raise ValueError(
                        "Manual DNS specified, Primary DNS must be set")
                self.dynamicsetdnsmanual = dns

            if 'mtu' in config:
                self.dynamicipmtu = self._get_param(config, 'mtu')

        if mode == self.MODE_PPPOE or mode == self.MODE_PPPOE_DYNAMIC or mode == self.MODE_AUTO:
            if 'password' in config:
                val = self._get_param(config, 'password')
                if len(val) > 63:
                    raise ValueError(
                        'PPPOE password can contain a maximum of 63 characters, including letters, numbers, and symbols (ASCII characters 32-126).'
                    )
                self.pppoepwd = val
            elif mode != self.MODE_AUTO and self.pppoepwd == '':
                raise ValueError('PPOE password must be provided')

            if 'username' in config:
                val = self._get_param(config, 'username')
                if len(val) > 63:
                    raise ValueError(
                        'PPPOE user can contain a maximum of 63 characters, including letters, numbers, and symbols (ASCII characters 32-126).'
                    )
                self.pppoeuser = val
            elif mode != self.MODE_AUTO and self.username == '':
                raise ValueError('PPOE username must be provided')

            if 'authmode' in config:
                mode = self._get_param(config, 'authmode')
                if not mode in [self.AUTH_AUTO, self.AUTH_PAP, self.AUTH_CHAP]:
                    raise ValueError(
                        'PPOE auth mode must be one of: 0 (AUTO), 1 (PAP), 2 (CHAP)'
                    )
                self.pppoeauth = self._get_param(config, 'authmode')

            if 'mtu' in config:
                self.pppoemtu = self._get_param(config, 'mtu')

        if mode == self.MODE_STATIC:

            if 'ipaddress' in config:
                ip = self._get_param(config, 'ipaddress')
                if (not utils.isIpValid(ip)):
                    raise ValueError("Invalid IP Address: %s" % ip)
                self.ipaddress = ip
                self.netmask = '255.255.255.0'
            else:
                raise ValueError('ipaddress must be provided')

            if 'netmask' in config:
                self.netmask = self._get_param(config, 'netmask')

            if 'gateway' in config:
                self.gateway = self._get_param(config, 'gateway')
            else:
                if self.gateway == '':
                    raise ValueError('gateway must be provided')

            if 'mtu' in config:
                self.staticipmtu = self._get_param(config, 'mtu')

            if 'primarydns' in config:
                dns = self._get_param(config, 'primarydns')
                if (not utils.isIpValid(dns)):
                    raise ValueError("Invalid IP Address for Primary DNS: %s" %
                                     dns)
                self.primarydns = dns

            if 'secondarydns' in config:
                dns = self._get_param(config, 'secondarydns')
                if (not utils.isIpValid(dns)):
                    raise ValueError(
                        "Invalid IP Address for Secondary DNS: %s" % dns)
                self.secondarydns = dns

        if 'maxidletime' in config:
            self.maxidletime = self._get_param(config, 'maxidletime')

        if 'dialmode' in config:
            self.dialmode = self._get_param(config, 'dialmode')