Newer
Older
Import / projects / LGN-IP3870 / t / new / vdcisetting.py
#file: vdcisetting.py

import config, os
from roxiadebug import *

#Roxia Begin jhbang 06.04.07
#vdci_comment = {}
#Roxia End jhbang

class VdciSetting:
	def __init__(self):
		self.display_name = ''
		self.auth_name = ''
		self.auth_pwd = ''
#		self.register_port = '5060'
		self.audio_port = '50000'
		self.video_port = '51000'
		self.local_port = '5060'
		self.expires = '3600'
		self.subscriber_expires = '3600'
		self.vms_server = '218.155.234.151'

		self.domain = 'ktann.com'
		self.mtu = '1450'
		self.dtmf_duration = 100
		self.debug_level = 0
		self.ip_mode = 1
		self.ctbw = '448'
		self.tel_num = ''
		
		self.nat_timer = 0

		#default codec G.711u-law, G.711a-law,G.729,G.723,AMR
		self.audio_codec = '12:1:0:3:11:11'
		self.video_codec = '10:7:14:11:11:11'

		self.proxy_addr = '125.146.0.208'
		self.proxy_port = '5080'
		self.backup_proxy_addr = '125.146.0.144'
		self.backup_proxy_port = '5080'

		self.primary_sbc_addr = '125.146.2.6'
		self.primary_sbc_port = '5080'
		self.secondary_sbc_addr = '125.146.2.7'
		self.secondary_sbc_port = '5080'

		self.sip_uri = ''

		# shchun add : upon vdci.cfg requirement.
		self.reg_url_mode = 0
		self.premium_ip=1

		self.sms_server='ismc.ann.com'
		self.sms_port='5050'

		#MMW auto provision 2008.12.23
		# '0' udp, '1' tcp
		self.transport_mode='0'
		
	def set_sip_transport(self, value):
		self.transport_mode = value
		self.save()

	def set_sip_uri(self, value):
		self.sip_uri = value
		self.save()
	
	def set_ip_mode(self, value):
		self.ip_mode = value
		self.save()

	def set_tel_num(self, value):
		self.tel_num = value
		self.save()

	def set_display_name(self, value):
		self.display_name = value
		self.save()

	def set_auth_name(self, value):
		self.auth_name = value
		self.save()

	def set_auth_pwd(self, value):
		self.auth_pwd = value
		self.save()

	def set_proxy_addr(self, value):
		self.proxy_addr = value
		self.save()

	def set_proxy_port(self, value):
		self.proxy_port = value
		self.save()

	def set_backup_proxy_addr(self, value):
		self.backup_proxy_addr = value
		self.save()

	def set_backup_proxy_port(self, value):
		self.backup_proxy_port = value
		self.save()

	def set_primary_sbc_addr(self, value):
		self.primary_sbc_addr = value
		self.save()

	def set_primary_sbc_port(self, value):
		self.primary_sbc_port = value
		self.save()

	def set_secondary_sbc_addr(self, value):
		self.secondary_sbc_addr = value
		self.save()

	def set_secondary_sbc_port(self, value):
		self.secondary_sbc_port = value
		self.save()

	def set_register_port(self, value):
		self.register_port = value
		self.save()


	def set_audio_port(self, value):
		self.audio_port = value
		self.save()

	def set_video_port(self, value):
		self.video_port = value
		self.save()

	def set_local_port(self, value):
		self.local_port = value
		self.save()

	def set_expires(self, value):
		self.expires = value
		self.save()

# KA: [20070102] TI IMS subscriber expires
	def set_subscriber_expires(self, value):
		self.subscriber_expires = value
		self.save()
# KA: [20070102] TI IMS subscriber expires

	#ka...hidden menu 2006.11.02
	def set_pstn_domain(self, value):
		self.pstn_domain = value
		self.save()

	def set_domain(self, value):
		self.domain = value
		self.save()

# KA: [20071006] TI IMS Codec Priority
	def set_audio_codec(self, value):
		if self.audio_codec == value:
			return False
		self.audio_codec = value
		self.start_transaction()
		self.save()

	def set_video_codec(self, value):
		if self.video_codec == value:
			return False
		self.video_codec = value
		self.start_transaction()
		self.save()
# KA: [20071006] TI IMS Codec Priority ==
	
	def start_transaction(self):
		try:
			import shutil
			if not os.access(config.vdcisetting_file_4rollback, os.R_OK):
				shutil.copyfile(config.vdcisetting_file, config.vdcisetting_file_4rollback)
		except:
			pass
# start shchun : sync
		os.system('sync')
		os.system('sync')
		os.system('sync')
# end shchun

	def end_transaction(self):
		print '#### END_TRANSACTION ####'
		try:
			os.remove(config.vdcisetting_file_4rollback)
		except:
			pass

		os.system('sync')
		os.system('sync')
		os.system('sync')	
		# KA: [20071013] TI IMS setting ==

	def set_mtu(self, value):
		self.mtu = value
		self.save()

	def set_ctbw(self, value):
		self.ctbw = value
		self.save()

	def set_vms_server(self, value):
		self.vms_server = value
		self.save()

	def set_itsp(self, value):
		self.itsp_support = value
		self.save()

	def set_nat_timer(self, value):
		self.nat_timer = value
		self.save()

	def reset(self):
		self.__init__()
		self.save(True)

	def save(self, reset=False):
#Roxia Begin jhbang 06.04.07
		#global vdci_comment
#Roxia End jhbang
		from profile import profile
		name = config.vdcisetting_file
		fp = open(name, 'w')
		for key, value in self.__dict__.items():
			if key[0] != '_' and (type(value) in (type(''), type(0))):
#Roxia Begin jhbang 06.04.07
				# ctbw,proxy_addr,tel_num 주석처리하지 않음
				fp.write("%s=%s\n" % (key.upper(), value))

				## ctbw, proxy_addr, tel_num comment...
				#if key == 'ctbw' or key == 'proxy_addr' or key == 'tel_num':
				#	if profile.get_profile() == 0 or reset == True:
				#		fp.write("#%s=%s\n" % (key.upper(), value))
				#	else:
				#		fp.write("%s=%s\n" % (key.upper(), value))
				#else:
				#	if vdci_comment.get(key, False) == True:
				#		fp.write("#%s=%s\n" % (key.upper(), value))
				#	else:
				#		fp.write("%s=%s\n" % (key.upper(), value))
#Roxia End jhbang

		return False

	def load(self):
#Roxia Begin jhbang 06.04.07
		#global vdci_comment
#Roxia End jhbang

		roxia_trace('vdci setting loading..')
		name = config.vdcisetting_file
		g = self.__dict__
		if os.path.exists(name):
			for line in file(name):
				line = line.strip()
				if not line:
					continue

#Roxia Begin jhbang 06.04.07
				if line[0] == '#':
					line = line[1:]

				key, value = line.split('=', 1)
				#if line[0] == '#':
				#	comment = True
				#	linestr = line[1:]
				#else:
				#	comment = False
				#	linestr = line

				#key, value = linestr.split('=', 1)
				#vdci_comment[key.lower()] = comment
#Roxia End jhbang
				key = key.lower()
				g[key] = value



vdci_setting = VdciSetting()
#try:
vdci_setting.load()
#except:
	# TODO: 에러처리
	# file not found, open error, etc, ...
#	roxia_trace('vdci setting load FAILED!!!!')