Ejemplo n.º 1
0
    def __init__ (self, site, request) :
        self.site    = site
        self.request = request
        if 'interfaces' in self.request or 'ips' in self.request :
            st    = Status           (site = site)
            conn  = OLSR_Connections (site = site)
            route = OLSR_Routes      (site = site)
            self.version = st.version
            assert len (st.wlans) <= 1
            interfaces   = {}
            ips          = {}
            count = 0
            for gw, ifname in route.iface_by_gw.iteritems () :
                ip, lq, nlq, etx  = conn.neighbors [gw]
                i4 = Inet4 (ip, None, None, iface = ifname)
                ips [i4] = 1
                is_wlan = True
                if lq == nlq == etx == 1.0 :
                    is_wlan = False
                if ifname in interfaces :
                    iface = interfaces [ifname]
                    if not iface.is_wlan and is_wlan :
                        iface.is_wlan   = True
                        iface.wlan_info = st.wlans [0]
                else :
                    iface = Interface (count, ifname, None)
                    iface.is_wlan = is_wlan
                    if is_wlan :
                        iface.wlan_info = st.wlans [0]
                    count += 1
                    interfaces [ifname] = iface
                if i4 not in iface.inet4 :
                    iface.append_inet4 (i4)
            wl_if = None
            for iface in interfaces.itervalues () :
                if iface.is_wlan :
                    if wl_if :
                        m = "Duplicate wlan: %s/%s" % (iface.name, wl_if.name)
                        raise ValueError (m)
                    wl_if = iface
            # check own ip
            n  = 'unknown'
            i4 = Inet4 (self.request ['ip'], None, None, iface = n)
            if i4 not in ips :
                assert n not in interfaces
                iface = interfaces [n] = Interface (count, n, None)
                iface.append_inet4 (i4)
                iface.is_wlan = False
                if not wl_if and st.wlans :
                    iface.is_wlan   = True
                    iface.wlan_info = st.wlans [0]
                ips [i4] = True

            self.request ['ips']        = ips
            self.request ['interfaces'] = interfaces
            self.request ['version']    = st.version
Ejemplo n.º 2
0
    def __init__(self, site, request):
        self.site = site
        self.request = request
        if 'interfaces' in self.request or 'ips' in self.request:
            st = Status(site=site)
            conn = OLSR_Connections(site=site)
            route = OLSR_Routes(site=site)
            self.version = st.version
            assert len(st.wlans) <= 1
            interfaces = {}
            ips = {}
            count = 0
            for gw, ifname in route.iface_by_gw.iteritems():
                ip, lq, nlq, etx = conn.neighbors[gw]
                i4 = Inet4(ip, None, None, iface=ifname)
                ips[i4] = 1
                is_wlan = True
                if lq == nlq == etx == 1.0:
                    is_wlan = False
                if ifname in interfaces:
                    iface = interfaces[ifname]
                    if not iface.is_wlan and is_wlan:
                        iface.is_wlan = True
                        iface.wlan_info = st.wlans[0]
                else:
                    iface = Interface(count, ifname, None)
                    iface.is_wlan = is_wlan
                    if is_wlan:
                        iface.wlan_info = st.wlans[0]
                    count += 1
                    interfaces[ifname] = iface
                if i4 not in iface.inet4:
                    iface.append_inet4(i4)
            wl_if = None
            for iface in interfaces.itervalues():
                if iface.is_wlan:
                    if wl_if:
                        m = "Duplicate wlan: %s/%s" % (iface.name, wl_if.name)
                        raise ValueError(m)
                    wl_if = iface
            # check own ip
            n = 'unknown'
            i4 = Inet4(self.request['ip'], None, None, iface=n)
            if i4 not in ips:
                assert n not in interfaces
                iface = interfaces[n] = Interface(count, n, None)
                iface.append_inet4(i4)
                iface.is_wlan = False
                if not wl_if and st.wlans:
                    iface.is_wlan = True
                    iface.wlan_info = st.wlans[0]
                ips[i4] = True

            self.request['ips'] = ips
            self.request['interfaces'] = interfaces
            self.request['version'] = st.version
Ejemplo n.º 3
0
 def parse (self) :
     root = self.tree.getroot ()
     self.if_by_name = {}
     self.ips        = {}
     for div in root.findall (".//%s" % tag ("div")) :
         self.try_get_version (div)
         if div.get ('id') == 'maincontent' and not self.if_by_name :
             tbl = div.find (".//%s" % tag ("table"))
             for n, tr in enumerate (tbl) :
                 if tr [0].tag == tag ('th') :
                     assert tr [0].text in ('Interface', 'Schnittstelle') \
                         , tr [0].text
                     continue
                 name, status, mtu, wlan, ip, mask, bcast = \
                     (x.text for x in tr)
                 if name in self.if_by_name :
                     iface = self.if_by_name [name]
                 else :
                     iface = Interface (n, name, mtu)
                     iface.is_wlan = self.yesno.get (wlan, False)
                 if status == 'DOWN' :
                     continue
                 # append IP address to interface if there is one
                 if ip is not None :
                     if ':' in ip :
                         i6 = Inet6 (ip, mask, bcast, iface = name)
                         iface.append_inet6 (i6)
                     else :
                         i4 = Inet4 (ip, mask, bcast, iface = name)
                         iface.append_inet4 (i4)
                         if not unroutable (i4.ip) :
                             self.if_by_name [name] = iface
                             self.ips [i4] = True
     self.set_version (root)
     if not self.if_by_name :
         raise ValueError, "No interface config found"
     bfw = Backfire_WLAN_Config (site = self.site)
     for d in bfw.wlans :
         if d.name in self.if_by_name :
             iface = self.if_by_name [d.name]
             iface.wlan_info = d
Ejemplo n.º 4
0
 def parse (self) :
     root = self.tree.getroot ()
     self.if_by_name = {}
     self.ips        = {}
     for div in root.findall (".//%s" % tag ("div")) :
         self.try_get_version (div)
         if div.get ('id') == 'maincontent' and not self.if_by_name :
             tbl = div.find (".//%s" % tag ("table"))
             for n, tr in enumerate (tbl) :
                 if tr [0].tag == tag ('th') :
                     assert tr [0].text in ('Interface', 'Schnittstelle') \
                         , tr [0].text
                     continue
                 name, status, mtu, wlan, ip, mask, bcast = \
                     (x.text for x in tr)
                 if name in self.if_by_name :
                     iface = self.if_by_name [name]
                 else :
                     iface = Interface (n, name, mtu)
                     iface.is_wlan = self.yesno.get (wlan, False)
                 if status == 'DOWN' :
                     continue
                 # append IP address to interface if there is one
                 if ip is not None :
                     if ':' in ip :
                         i6 = Inet6 (ip, mask, bcast, iface = name)
                         iface.append_inet6 (i6)
                     else :
                         i4 = Inet4 (ip, mask, bcast, iface = name)
                         iface.append_inet4 (i4)
                         if not unroutable (i4.ip) :
                             self.if_by_name [name] = iface
                             self.ips [i4] = True
     self.set_version (root)
     if not self.if_by_name :
         raise ValueError, "No interface config found"
     bfw = Backfire_WLAN_Config (site = self.site)
     for d in bfw.wlans :
         if d.name in self.if_by_name :
             iface = self.if_by_name [d.name]
             iface.wlan_info = d