def __init__(self, session, oids={}): self.session = session oids.update({ self.SYSTEMDESCRIPTION_OID: self.getValue, '.1.3.6.1.2.1.1.2.0': '.1.3.6.1.4.1.88.3.1', self.SYSUPTIME_OID: self.getValue, self.SUPPORTADDRESS_OID: self.getValue, self.SYSTEMNAME_OID: self.getValue, self.LOCATION_OID: self.getValue, self.BER_OID: self.getValue, self.AGC_OID: self.getValue, self.SNR_OID: self.getValue, self.HASPICTURE_OID: self.getValue, self.VIDEO_BITRATE_OID: self.getValue, self.AUDIO_BITRATE_OID: self.getValue, self.CHANNELNAME_OID: self.getValue, self.SERVICESTRING_OID: self.getValue, self.FASTSCANSTRING_OID: self.getValue, self.SERVICEPARAMS_OID: self.getValue, self.MANAGERIP_OID: self.getValue, self.ENABLE_BITRATE_OID: self.getValue, self.IP_OID: self.getValue, self.NETMASK_OID: self.getValue, self.GATEWAY_OID: self.getValue, self.ENABLE_EMM_OID: self.getValue, self.EMM_OID: self.getValue, }) bisectoidstore.BisectOIDStore.__init__(self, OIDs=oids) self.session.nav.event.append(self.gotServiceEvent) if config.plugins.SnmpAgent.measurebitrate.value: self.bitrate = Bitrate(session) else: self.bitrate = None if config.plugins.SnmpAgent.checkemm.value: self.emm = Emm(session) else: self.emm = None
def setValue(self, oid, value): #the first time we are called, we have to fill the bisect oid store, values are just values, no objects (we cannot call value.get) try: value.get() except: return bisectoidstore.BisectOIDStore.setValue(self, oid, value) oidstring = bisectoidstore.sortableToOID(oid) if oidstring == self.MANAGERIP_OID: if config.plugins.SnmpAgent.managerip.value <> value.get(): config.plugins.SnmpAgent.managerip.value = value.get() config.plugins.SnmpAgent.managerip.save() elif oidstring == self.ENABLE_BITRATE_OID: if config.plugins.SnmpAgent.measurebitrate.value and not value.get( ): config.plugins.SnmpAgent.measurebitrate.value = False config.plugins.SnmpAgent.measurebitrate.save() if self.bitrate: self.bitrate.stop() self.bitrate = None elif not config.plugins.SnmpAgent.measurebitrate.value and value.get( ): config.plugins.SnmpAgent.measurebitrate.value = True config.plugins.SnmpAgent.measurebitrate.save() self.bitrate = Bitrate(self.session) self.bitrate.start() elif oidstring == self.SYSTEMNAME_OID: if config.plugins.SnmpAgent.systemname.value <> value.get(): config.plugins.SnmpAgent.systemname.value = value.get() config.plugins.SnmpAgent.systemname.save() elif oidstring == self.SUPPORTADDRESS_OID: if config.plugins.SnmpAgent.supportaddress.value <> value.get(): config.plugins.SnmpAgent.supportaddress.value = value.get() config.plugins.SnmpAgent.supportaddress.save() elif oidstring == self.SYSTEMDESCRIPTION_OID: if config.plugins.SnmpAgent.systemdescription.value <> value.get(): config.plugins.SnmpAgent.systemdescription.value = value.get() config.plugins.SnmpAgent.systemdescription.save() elif oidstring == self.LOCATION_OID: if config.plugins.SnmpAgent.location.value <> value.get(): config.plugins.SnmpAgent.location.value = value.get() config.plugins.SnmpAgent.location.save() elif oidstring == self.CHANNELNAME_OID: if self.getChannelName() <> value.get(): root = config.tv.lastroot.value.split(';') fav = eServiceReference(root[-2]) services = ServiceList(fav, command_func=self.zapTo, validate_commands=False) sub = services.getServicesAsList() if len(sub) > 0: for (ref, name) in sub: if name == value.get(): self.zapTo(eServiceReference(ref)) break elif oidstring == self.SERVICESTRING_OID: if self.getServiceString() <> value.get(): self.zapTo(eServiceReference(value.get())) elif oidstring == self.FASTSCANSTRING_OID: refstring = '' fields = value.get().split(',') if len(fields) >= 15: onid, tsid, freq, id1, id2, sid, orbital_pos, f1, f2, f3, symbolrate, f4, name, provider, servicetype = fields[ 0:15] refstring = '%d:%d:%d:%x:%x:%x:%x:%x:%x:%x:' % ( 1, 0, int(servicetype), int(sid), int(tsid), int(onid), int(orbital_pos) * 65536, 0, 0, 0) if refstring is not '': self.zapTo(eServiceReference(refstring)) elif oidstring == self.SERVICEPARAMS_OID: refstring = '' fields = value.get().split(',') if len(fields) >= 5: orbital_pos, tsid, onid, sid, servicetype = fields[0:5] refstring = '%d:%d:%d:%x:%x:%x:%x:%x:%x:%x:' % ( 1, 0, int(servicetype), int(sid), int(tsid), int(onid), int(orbital_pos) * 65536, 0, 0, 0) if refstring is not '': self.zapTo(eServiceReference(refstring)) elif oidstring == self.IP_OID: ipstring = value.get().split('.') ipval = [] for x in ipstring: ipval.append(int(x)) if iNetwork.getAdapterAttribute(self.iface, "ip") <> ipval: iNetwork.setAdapterAttribute(self.iface, "dhcp", 0) iNetwork.setAdapterAttribute(self.iface, "ip", ipval) iNetwork.deactivateNetworkConfig() iNetwork.writeNetworkConfig() iNetwork.activateNetworkConfig() elif oidstring == self.IP_OID: ipstring = value.get().split('.') ipval = [] for x in ipstring: ipval.append(int(x)) if iNetwork.getAdapterAttribute(self.iface, "netmask") <> ipval: iNetwork.setAdapterAttribute(self.iface, "dhcp", 0) iNetwork.setAdapterAttribute(self.iface, "netmask", ipval) iNetwork.deactivateNetworkConfig() iNetwork.writeNetworkConfig() iNetwork.activateNetworkConfig() elif oidstring == self.GATEWAY_OID: ipstring = value.get().split('.') ipval = [] for x in ipstring: ipval.append(int(x)) if iNetwork.getAdapterAttribute(self.iface, "gateway") <> ipval: iNetwork.setAdapterAttribute(self.iface, "dhcp", 0) iNetwork.setAdapterAttribute(self.iface, "gateway", ipval) iNetwork.deactivateNetworkConfig() iNetwork.writeNetworkConfig() iNetwork.activateNetworkConfig() elif oidstring == self.ENABLE_EMM_OID: if config.plugins.SnmpAgent.checkemm.value and not value.get(): config.plugins.SnmpAgent.checkemm.value = False config.plugins.SnmpAgent.checkemm.save() if self.emm: self.emm.stop() self.emm = None elif not config.plugins.SnmpAgent.checkemm.value and value.get(): config.plugins.SnmpAgent.checkemm.value = True config.plugins.SnmpAgent.checkemm.save() self.emm = Emm(self.session) self.emm.start() else: print "oid not found!?" return None
def __init__(self, session, oids={}): self.session = session oids.update({ self.SYSTEMDESCRIPTION_OID: self.getValue, '.1.3.6.1.2.1.1.2.0': '.1.3.6.1.4.1.88.3.1', self.SYSUPTIME_OID: self.getValue, self.SUPPORTADDRESS_OID: self.getValue, self.SYSTEMNAME_OID: self.getValue, self.LOCATION_OID: self.getValue, self.BER_OID: self.getValue, self.AGC_OID: self.getValue, self.SNR_OID: self.getValue, self.SNRDB_OID: self.getValue, self.LOCK_OID: self.getValue, self.HASPICTURE_OID: self.getValue, self.VIDEO_BITRATE_OID: self.getValue, self.AUDIO_BITRATE_OID: self.getValue, self.CHANNELNAME_OID: self.getValue, self.SERVICESTRING_OID: self.getValue, self.FASTSCANSTRING_OID: self.getValue, self.SERVICEPARAMS_OID: self.getValue, self.TUNERTYPE_OID: self.getValue, self.MANAGERIP_OID: self.getValue, self.ENABLE_BITRATE_OID: self.getValue, self.IP_OID: self.getValue, self.NETMASK_OID: self.getValue, self.GATEWAY_OID: self.getValue, self.ENABLE_EMM_OID: self.getValue, self.EMM_OID: self.getValue, self.CPU_USER: self.getValue, self.CPU_NICE: self.getValue, self.CPU_SYSTEM: self.getValue, self.CPU_IDLE: self.getValue, self.CPU_WAIT: self.getValue, self.LOAD_AVR1: self.getValue, self.LOAD_AVR5: self.getValue, self.LOAD_AVR15: self.getValue, self.MEM_TOTAL: self.getValue, self.MEM_TOTAL2: self.getValue, self.MEM_USED: self.getValue, self.MEM_FREE: self.getValue, self.MEM_BUFFER: self.getValue, self.MEM_CACHED: self.getValue, self.MEM_SWAPTOTAL: self.getValue, self.MEM_SWAPFREE: self.getValue, self.IF_NUMBER: self.getValue, }) # Add disk info's totaldisks = GetDiskInfo(DiskInfoTypes.totalmounts, 0) for i in range(totaldisks): key = '%s.%d' % (self.DISK_INDEX, (i + 1)) oids[key] = self.getValue key = '%s.%d' % (self.DISK_PATHNAME, (i + 1)) oids[key] = self.getValue key = '%s.%d' % (self.DISK_DEVICENAME, (i + 1)) oids[key] = self.getValue key = '%s.%d' % (self.DISK_AVAIL, (i + 1)) oids[key] = self.getValue key = '%s.%d' % (self.DISK_USED, (i + 1)) oids[key] = self.getValue # Add network info's totalnetworks = GetNetworkInfo(NetworkInfoTypes.total, 0) for i in range(totalnetworks): key = '%s.%d' % (self.IF_INDEX, (i + 1)) oids[key] = self.getValue key = '%s.%d' % (self.IF_DESC, (i + 1)) oids[key] = self.getValue key = '%s.%d' % (self.IF_TYPE, (i + 1)) oids[key] = self.getValue key = '%s.%d' % (self.IF_MTU, (i + 1)) oids[key] = self.getValue key = '%s.%d' % (self.IF_SPEED, (i + 1)) oids[key] = self.getValue key = '%s.%d' % (self.IF_HWADDR, (i + 1)) oids[key] = self.getValue key = '%s.%d' % (self.IF_STATUS, (i + 1)) oids[key] = self.getValue key = '%s.%d' % (self.IF_INOCTANTS, (i + 1)) oids[key] = self.getValue key = '%s.%d' % (self.IF_INDISCARD, (i + 1)) oids[key] = self.getValue key = '%s.%d' % (self.IF_INERRORS, (i + 1)) oids[key] = self.getValue key = '%s.%d' % (self.IF_OUTOCTANTS, (i + 1)) oids[key] = self.getValue key = '%s.%d' % (self.IF_OUTDISCARD, (i + 1)) oids[key] = self.getValue key = '%s.%d' % (self.IF_OUTERRORS, (i + 1)) oids[key] = self.getValue key = '%s.%d' % (self.IF_NAME, (i + 1)) oids[key] = self.getValue key = '%s.%d' % (self.IF_ALIAS, (i + 1)) oids[key] = self.getValue key = '%s.%d' % (self.IF_HSPEED, (i + 1)) oids[key] = self.getValue #special OID: IP address key = '%s.%s' % (self.IP_ADENTIFINDEX, GetNetworkInfo(NetworkInfoTypes.ipaddr, i)) oids[key] = self.getValue self.ip_adentifindex_ref[key] = i + 1 key = '%s.%s' % (self.IF_IPADENTADDR, GetNetworkInfo(NetworkInfoTypes.ipaddr, i)) oids[key] = self.getValue self.ip_adentaddr_ref[key] = GetNetworkInfo( NetworkInfoTypes.ipaddr, i) bisectoidstore.BisectOIDStore.__init__(self, OIDs=oids) self.session.nav.event.append(self.gotServiceEvent) if config.plugins.SnmpAgent.measurebitrate.value: self.bitrate = Bitrate(session) else: self.bitrate = None if config.plugins.SnmpAgent.checkemm.value: self.emm = Emm(session) else: self.emm = None