Newer
Older
Import / projects / LGN-IP3870 / t / orig / readsetting.py
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 ""