import config
import os
import re
CONFIGFILE = "config.cfg"
PRECONFIGFILE = "preconfig.cfg"
RESULTFILE = "result.cfg"
class READSETTING:
def replace_space(self,t):
t = t.replace(' ','')
return t
def ReadMacAddress(self):
defaultmac = "00:40:5a:00:00:00"
try:
p = file("/usr/etc/profile", "r")
t = p.read()
p.close()
mode = re.search("PROFILE=([A-Z]+)",self.replace_space(t)).group(1)
except:
if config.update_debug:print "Read Profile Error"
return defaultmac
try:
if (mode == 'PSTN'):
return defaultamc
elif (mode == 'ETHERNET'):
p = os.popen("/sbin/ifconfig eth0")
else:
p = os.popen("/sbin/ifconfig wlan0")
t=p.read()
p.close()
return re.search("HWaddr ([0-9a-fA-F:]+)",t).group(1)
except:
return defaultmac
def checkbit(self, field):
if field == '255': return 8
if field == '254': return 7
if field == '252': return 6
if field == '248': return 5
if field == '240': return 4
if field == '224': return 3
if field == '192': return 2
if field == '128': return 1
if field == '0': return 0
def CountMaskBit(self, mask):
count = 0
field = mask.split('.')
for i in field:
count = count + self.checkbit(str(i))
return count
def ReadIPAddress(self):
defaultaddress = "0.0.0.0/0"
try:
p = file("/usr/etc/profile", "r")
t = p.read()
p.close()
mode = re.search("PROFILE=([A-Z]+)",self.replace_space(t)).group(1)
except:
if config.update_debug:print "Read Profile Error"
return defaultaddress
try:
if(mode == 'PSTN'):
p = os.popen("/sbin/ifconfig ppp0")
elif(mode == 'ETHERNET'):
p = os.popen("/sbin/ifconfig eth0")
else:
p = os.popen("/sbin/ifconfig wlan0")
t=p.read()
p.close()
# chnaged by elpis, if it is not changed the values can be read
mask = re.search("Mask:([0-9.]+)",t).group(1)
ipaddress=re.search("inet addr:([0-9.]+)",t).group(1)
return (ipaddress+'/'+str(self.CountMaskBit(mask)))
except:
return defaultaddress
def ReadDnsServer(self):
try:
firstdns = "0.0.0.0"
seconddns = "0.0.0.0"
#f = file("/etc/resolv.conf", "r")
f = file(config.dns_file, "r")
for line in f:
list = line.split()
if firstdns == "0.0.0.0":
firstdns = list[1]
#by elpis, to read first & second DNS only
#else:
elif seconddns == "0.0.0.0":
seconddns = list[1]
f.close()
if config.update_debug:print firstdns, seconddns
return firstdns, seconddns
except:
return "0.0.0.0", "0.0.0.0"
def ReadGateway(self):
gateway = "0.0.0.0"
try:
p = file("/usr/etc/profile", "r")
t = p.read()
p.close()
mode = re.search("PROFILE=([A-Z]+)",self.replace_space(t)).group(1)
if config.update_debug:print mode,'mode???'
if(mode == 'PSTN'):
p = os.popen("ifconfig ppp0")
t= p.read()
p.close()
gateway = re.search("P-t-P:([0-9.]+)",self.replace_space(t)).group(1)
elif(mode == 'ETHERNET'):
p = file("/usr/etc/ethernet.cfg", 'r')
t= p.read()
p.close()
dhcp = re.search("DHCP=([a-z]+)",self.replace_space(t)).group(1)
if (dhcp == 'yes'):
p = file('/tmp/dhcpcd-eth0.info', 'r')
t = p.read()
p.close()
gateway = re.search("GATEWAY=([0-9.]+)",self.replace_space(t)).group(1)
else:
gateway = re.search("GATEWAY=([0-9.]+)",self.replace_space(t)).group(1)
else:
p = file("/usr/etc/wireless.cfg", 'r')
t= p.read()
p.close()
dhcp = re.search("DHCP=([a-z]+)",self.replace_space(t)).group(1)
if (dhcp == 'yes'):
p = file('/tmp/dhcpcd-wlan0.info', 'r')
t = p.read()
p.close()
gateway = re.search("GATEWAY=([0-9.]+)",self.replace_space(t)).group(1)
else:
gateway = re.search("GATEWAY=([0-9.]+)",self.replace_space(t)).group(1)
except:
pass
return gateway
def get_vendor_id(self, fname):
p = file(fname, 'r')
t=p.read()
p.close()
#ka...3800 2007.06.13 vender_id = lg-nortel.com
return re.search("vendor_id=([a-zA-Z.-]+)",self.replace_space(t)).group(1)
def get_tel_num(self):
first_dns = None
second_dns = None
int_num = 0
hex_num = 0x0
try:
f = file("/tmp/ppp.log", "r")
t = f.read()
first_dns = re.search("WINS1=([0-9.]+)",t).group(1)
second_dns = re.search("WINS2=([0-9.]+)",t).group(1)
num_list = first_dns.split(".") + second_dns.split(".")
f.close()
tel_num = ""
for i in range(0, 8):
int_num = int(num_list[i])
if int_num < 16 :
hex_num = hex(int_num)
tel_num = tel_num + '0' + hex_num[2]
else:
if hex(int_num)[2] != 'f':
tel_num = tel_num + hex(int_num)[2]
if hex(int_num)[3]!= 'f':
tel_num = tel_num + hex(int_num)[3]
return tel_num
except:
if config.update_debug:print "get tel num fail"
return "917076800"
def get_user_id(self, fname):
try:
p = file("/usr/local/lgvp/pstn.cfg", "r")
t = p.read()
p.close()
return re.search("TEL_NUM=([0-9]+)",self.replace_space(t)).group(1)
except:
if config.update_debug:print "Read Tel Number Error"
return "917076800"
def get_device_id(self, fname):
p = file(fname, 'r')
t=p.read()
p.close()
#return re.search("device_id=([0-9a-zA-Z.@-]+)",self.replace_space(t)).group(1)
return re.search("device_id=([0-9a-zA-Z.@-_]+)",self.replace_space(t)).group(1)
def get_firmware_version(self, fname):
p = file(fname, 'r')
t=p.read()
p.close()
return re.search("firmware_version=([0-9.]+)",self.replace_space(t)).group(1)
def get_hardware_version(self, fname):
p = file(fname, 'r')
t=p.read()
p.close()
return re.search("hardware_version=([0-9.]+)",self.replace_space(t)).group(1)
def read_identity_record(self, fname):
config.vendor_id = self.get_vendor_id(fname)
if config.update_debug:print config.vendor_id
config.user_id = self.get_user_id("/usr/local/lgvp/vdci.cfg")
if config.update_debug:print config.user_id
config.device_id = self.get_device_id(fname)
if config.update_debug:print config.device_id
config.iface_mac_address = self.ReadMacAddress()
if config.update_debug:print config.iface_mac_address
config.iface_ip_address = self.ReadIPAddress()
if config.update_debug:print config.iface_ip_address
config.iface_gw_ip_address = self.ReadGateway()
if config.update_debug:print config.iface_gw_ip_address
config.firmware_version = self.get_firmware_version(fname)
if config.update_debug:print config.firmware_version
config.hardware_version = self.get_hardware_version(fname)
if config.update_debug:print config.hardware_version
def get_l5_protocol_used(self):
p = file(CONFIGFILE, 'r')
t=p.read()
p.close()
return re.search("l5_protocol_used=([a-zA-Z]+)",self.replace_space(t)).group(1)
def get_autoconfig_protocol_version(self):
p = file(CONFIGFILE, 'r')
t=p.read()
p.close()
return re.search("autoconfig_protocol_version=([0-9.]+)",self.replace_space(t)).group(1)
def read_autoconfig_protocol_record(self):
p = file(CONFIGFILE, 'r')
t=p.read()
p.close()
re.search("l5_protocol_used=([a-zA-Z]+)",self.replace_space(t)).group(1)
config.l5_protocol_used= re.search("l5_protocol_used=([a-zA-Z]+)",self.replace_space(t)).group(1)
config.autoconfig_protocol_version = re.search("autoconfig_protocol_version=([0-9.]+)",self.replace_space(t)).group(1)
def read_firmware_update_request_record(self):
if(self.get_l5_protocol_used() == "ftp"):
config.firmware_update_request_command = "RETR"
elif(self.get_l5_protocol_used() == "tftp"):
config.firmware_update_request_command = "RRQ"
elif(self.get_l5_protocol_used() == "http"):
config.firmware_update_request_command = "POST"
config.firmware_request_arg = self.get_hardware_version(CONFIGFILE) + "/" + self.get_firmware_version(CONFIGFILE) + '/' + config.firmware_update_request_file
def get_firmware_update_response_code(self, fname):
p = file(fname, 'r')
t=p.read()
p.close()
return re.search("firmware_update_response_code= ([0-9]+)",self.replace_space(t)).group(1)
def get_firmware_update_response_phrase(self):
p = file(fname, 'r')
t=p.read()
p.close()
return re.search("firmware_update_response_code= ([a-z0-9A-Z' '\n]+)",self.replace_space(t)).group(1)
def get_firmware_file_response_code(self, fname):
p = file(fname, 'r')
t=p.read()
p.close()
return re.search("firmware_file_response_code= ([0-9]+)",self.replace_space(t)).group(1)
def get_firmware_update_response_phrase(self, fname):
p = file(fname, 'r')
t=p.read()
p.close()
return re.search("firmware_update_response_phrase= ([0-9a-zA-Z' '\"]+)",self.replace_space(t)).group(1)
def get_firmware_files(self, fname):
f = file(fname, 'r')
for line in f:
if line.startswith("firmware_files="):
list = line.split()
return list[1:]
def read_firmware_update_response_record(self):
config.firmware_update_response_code = self.get_firmware_update_response_code(RESULTFILE)
config.firmware_update_response_phrase = self.get_firmware_update_response_phrase(RESULTFILE)
config.firmware_version_avilable = self.get_firmware_version(CONFIGFILE)
config.firmware_files_path = self.get_hardware_version(CONFIGFILE) + '/' + get_firmware_version(CONFIGFILE)
config.firmware_files = self.get_firmware_files(RESULTFILE)
def read_firmware_file_request_record(self):
config.firmware_file_request_command = read_firmware_update_request_record()
def read_firmware_file_response_record(self):
if config.update_debug:print "read_firmware_file_response_record(f)"
def read_config_request_record(self):
if(self.get_l5_protocol_used() == "ftp"):
config.config_request_command = "RETR"
elif(self.get_l5_protocol_used() == "tftp"):
config.config_request_command = "RRQ"
elif(self.get_l5_protocol_used() == "http"):
config.config_request_command = "POST"
config.config_request_arg = self.get_hardware_version(CONFIGFILE) + "/" + self.get_firmware_version(CONFIGFILE) + '/' + config.firmware_update_request_file
if config.update_debug:print config.config_request_command, config.config_request_arg
def read_config_response_record(self):
if config.update_debug:print "read _config_response_record"
def read_dns_test_record(self):
config.primary_dns_server, config.secondary_dns_server = self.ReadDnsServer()
#config.outbound_proxy_sip
#config.outbound_proxy_sip_address
#must add
def read_outbound_proxy_sip_record(self):
#config.icmp_packets_sent
#config.icmp_packets_received
#config.icmp_packets_lost
#config.roundtrip_time_min
#config.roundtrip_time_max
#config.roundtrip_time_avg
#must add
print ""
def read_sip_register_record(self):
if config.update_debug:
print 'Readsetting::read_sip_register_record() ====='
#config.sip_register_messages_sent
#config.sip_register_messages_received
#config.sip_register_response_code
#config.sip_register_response_phrase
#must add
print ""