Newer
Older
Import / projects / LGN-IP3870 / t / orig / profile.py
import config, os
from roxiadebug import *

_pstn = 'PSTN'
_ethernet = 'ETHERNET'
_wireless = 'WIRELESS'

ip_mode = 0

def make_broadcast(ipad, netma):

	iplist = ipad.split('.')
	netlist = netma.split('.')

	brdlist = []
	brdcast = ''
	try:
		for z in range(len(iplist)):
			brdlist.append(int(iplist[z]) | (~int(netlist[z]) + 256))

		for z in range(len(brdlist) - 1):
			brdcast += str(brdlist[z]) + '.'
		else:
			brdcast += str(brdlist[len(brdlist)- 1])
	except:
		pass

	return brdcast


class Profile:
	def __init__(self):
		self.profile = 'ETHERNET' #default

	def set_profile(self, value):
		global ip_mode
		from setting import setting
		from vdcisetting import vdci_setting
#Roxia Begin jhbang 06.04.07
		vdci_setting.load()
#Roxia End jhbang
		self.profile = (_pstn, _ethernet, _wireless)[value]

		if self.profile == _pstn:
			ip_mode = 0
		else:
			ip_mode = 1

		self.save()

		# set PSTN: ethernet(ENABLE=no), wireless(ENABLE=no)
		# set LAN: ethernet(ENABLE=yes), wireless(ENABLE=no)
		# set WiFi: ethernet(ENABLE=no), wireless(ENABLE=yes)
		if value == 0: # set PSTN
			vdci_setting.set_mtu('200') #set MTU
			vdci_setting.set_ip_mode(0)

		elif value == 1: # set LAN
			vdci_setting.set_mtu('1450') #set MTU
			vdci_setting.set_ip_mode(1)

		elif value == 2: # set WiFi
			vdci_setting.set_mtu('1450') #set MTU # vpark 11.19
			vdci_setting.set_ip_mode(1)
		else:
			pass
			#assert Flase

	def get_profile(self):
		if self.profile == _ethernet:
			return 1
		elif self.profile == _wireless:
			return 2
		else: #pstn
			return 0

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

	def save(self, update_vdci=True):
		name = config.profile_file
		fp = open(name, 'w')
		for key, value in self.__dict__.items():
			if key[0] != '_' and (type(value) in (type(''), type(0))):
				fp.write("%s=%s\n" % (key.upper(), value))

#Roxia Begin jhbang 06.04.05
		#if update_vdci:
		#	from vdcisetting import vdci_setting
		#	from setting import setting
		#	if self.profile == _pstn:
		#		vdci_setting.set_domain(setting.def_pstn_domain)
		#	else:
		#		vdci_setting.set_domain(setting.def_ip_domain)
		#	vdci_setting.save()
#Roxia End jhbang

		return False

	def load(self):
		global ip_mode
		roxia_trace('profile loading..')
		name = config.profile_file
		g = self.__dict__
		if os.path.exists(name):
			for line in file(name):
				line = line.strip()
				if not line or line[0] == '#':
					continue
				key, value = line.split('=', 1)
				key = key.lower()
				if value[0] == "'":
					g[key] = value[1:-1]
				else:
					g[key] = value

		if self.profile == _pstn:
			roxia_trace('>>> ip_mode = 0')
			ip_mode = 0
		else:
			roxia_trace('>>> ip_mode = 1')
			ip_mode = 1

_yes = 'yes'
_no = 'no'

class LANProfile:
	def __init__(self):
		self.interface = 'eth0'
		self.dhcp = _yes

		self.ipaddress = ''
		self.netmask = ''
		self.gateway = ''

		self._old_interface = 'eth0'
		self._old_dhcp = _yes

		self._old_ipaddress = ''
		self._old_netmask = ''
		self._old_gateway = ''

		self.tag_notchanged = False
		self.tag_shouldrollback = False

	def set_dhcp(self, value=True):
		roxia_trace('LANProfile.set_dhcp', value)
		if value == True:
			self.dhcp = _yes

		else:
			self.dhcp = _no

		#print '\n#### OLD DHCP=', self._old_dhcp, ' / set to=', self.dhcp
		#self.save()

	def set_ipaddress(self, value):
		roxia_trace('LANProfile.set_ipaddress', value)
		self.ipaddress = value
		self.broadcast = make_broadcast(self.ipaddress, self.netmask)
		#self.save()

	def set_netmask(self, value):
		roxia_trace('LANProfile.set_netmask', value)
		self.netmask = value
		self.broadcast = make_broadcast(self.ipaddress, self.netmask)

		#self.save()

	def set_gateway(self, value):
		roxia_trace('LANProfile.set_gateway', value)
		self.gateway = value
		#self.save()

	def get_dhcp(self):
		if self.dhcp == _yes:
			return True
		else:
			return False

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

	def save(self):
		name = config.lan_profile_file
		fp = open(name, 'w')
		for key, value in self.__dict__.items():
			if key[0] != '_' and (type(value) in (type(''), type(0))):
				fp.write("%s=%s\n" % (key.upper(), value))

		self.copy_old_values()
		return False


	def load(self):
		print('lan profile loading..')
		name = config.lan_profile_file
		g = self.__dict__
		if os.path.exists(name):
			for line in file(name):
				line = line.strip()
				if not line or line[0] == '#':
					continue
				key, value = line.split('=', 1)
				key = key.lower()

				if value == '': # value가 없는 경우, ex) GATEWAY=
					continue
				if value[0] == "'": # value가 (')문자열로 묶인 경우
					g[key] = value[1:-1]
				else:
					g[key] = value
# eicho 06.07.07
		self.copy_old_values()

# eicho 06.07.07
	def copy_old_values(self):
		#print '### COPY OLD VALUEs ###'

		#if self.tag_notchanged and self.tag_shouldrollback:
		#	self.rollback_values()
		#else:
		self._old_interface = self.interface
		self._old_dhcp = self.dhcp
		self._old_ipaddress = self.ipaddress
		self._old_netmask = self.netmask
		self._old_gateway = self.gateway
		

	def rollback_values(self):
		self.interface = self._old_interface
		self.dhcp = self._old_dhcp
		self.ipaddress = self._old_ipaddress
		self.netmask = self._old_netmask
		self.gateway = self._old_gateway
		

	def except_apply(self, option):
		#print '>> LAN profile value is changed but not apply!'
		#self.show_items()
		self.rollback_values()
		#self.show_items()
		self.tag_notchanged = option

	def show_items(self):
		print '============================='
		print '>> self.interface = ', self.interface
		print '>> self.dhcp = ', self.dhcp
		print '>> self.ipaddress = ', self.ipaddress
		print '>> self.netmask = ', self.netmask
		print '>> self.gateway = ', self.gateway
		
		
# end
class WiFiProfileGeneral:
	# shchun add : to handle general(== user set) profile.
	def __init__(self):
		self._name = 'GenAP'
		self.interface = 'wlan0'
		self.dhcp = _yes
		self.ipaddress = ''
		self.netmask = ''
		self.gateway = ''
		self.broadcast = ''
		self.essid = ''
		self.channelid = ''
		self.encryption = 'NONE'
		self.wepkeyno_64 = '1'
		self.wepkey1_64 = ''
		self.wepkey2_64 = ''
		self.wepkey3_64 = ''
		self.wepkey4_64 = ''
		self.wepkeyno_128 = '1'
		self.wepkey1_128 = ''
		self.wepkey2_128 = ''
		self.wepkey3_128 = ''
		self.wepkey4_128 = ''
		self.wpa_psk_tkip = ''
		self.wpa2_psk_ccmp=''
		self.apmacaddress = ''
		self.security = ''
		self.signallevel = ''
		self.bitrate = ''
		self.authentication = 'OPEN'

		self.wmm = _yes
		self.probe_timer=3
		
		self.wpa2_psk_tkip = ''
		self.wpa_psk_aes = ''
		self.network_authentication='no'
		self.tunneled=''
		self.server_certification=''
		self.identity=''
		self.username=''
		self.password=''
		self.cacert_path=''
		self.user_cert_path=''
		self.private_key_path=''
		self.private_key_password=''
		self.mac_mode_on = 'no'
		self.bssid = ''

# MMW add Jun 12th
		self.wlconfigd_version='0.3'
		self.scan='0'
		self.pm='0'
		self.cwmin='0'
		self.cwmax='0'
		self.txqage='500'
		self.prof1='PROF_OPEN'
		self.wme_vo_min='-1'
		self.wme_vo_max='-1'
		self.wme_vi_min='-1'
		self.wme_vi_max='-1'

# eicho add 06.07.07
		self._old_interface = 'wlan0'
		self._old_dhcp = _yes
		self._old_ipaddress = ''
		self._old_netmask = ''
		self._old_gateway = ''
		self.tag_notchanged = False
		self._old_broadcast = ''
		self._old_essid = ''
		self._old_channelid = ''
		self._old_encryption = 'NONE'
		self._old_wepkeyno_64 = '1'
		self._old_wepkey1_64 = ''
		self._old_wepkey2_64 = ''
		self._old_wepkey3_64 = ''
		self._old_wepkey4_64 = ''
		self._old_wepkeyno_128 = '1'
		self._old_wepkey1_128 = ''
		self._old_wepkey2_128 = ''
		self._old_wepkey3_128 = ''
		self._old_wepkey4_128 = ''
		self._old_wpa_psk_tkip = ''
		self._old_apmacaddress = ''
		self._old_security = ''
		self._old_signallevel = ''
		self._old_bitrate = ''
		self._old_authentication = 'OPEN'

		self._old_wmm = _no
		self._old_wpa2_psk_tkip = ''
		self._old_wpa_psk_aes = ''
		self._old_network_authentication='no'
		self._old_tunneled=''
		self._old_server_certification=''
		self._old_identity=''
		self._old_username=''
		self._old_password=''
		self._old_cacert_path=''
		self._old_user_cert_path=''
		self._old_private_key_path=''
		self._old_private_key_password=''
		self._old_mac_mode_on = 'no'
		self._old_bssid = ''

	def set_dhcp(self, value=True):
		if value == True:
			self.dhcp = _yes
		else:
			self.dhcp = _no
		#self.save()

	def get_dhcp(self):
		if self.dhcp == _yes:
			return True
		else:
			return False

	def set_ipaddress(self, value):
		self.ipaddress = value
		self.broadcast = make_broadcast(self.ipaddress, self.netmask)
		#self.save()

	def set_netmask(self, value):
		self.netmask = value
		self.broadcast = make_broadcast(self.ipaddress, self.netmask)
		#self.save()

	def set_gateway(self, value):
		self.gateway = value
		#self.save()

	def set_chid(self, cid):
		self.channelid = str(cid)
		#self.save()

	def set_bssid(self, ssid):
		self.bssid = ssid
		#self.save()

	def set_essid(self, ssid):
		self.essid = ssid
		#self.save()

	def set_wmm(self, value):
		if value == True:
			self.wmm = _yes
		else:
			self.wmm = _no

	def set_scaninfo(self, sinfo, mac_mode='no'):
		self.essid = sinfo[1]
		self.apmacaddress = sinfo[0]
		self.channelid = sinfo[2]
		self.security = sinfo[3]
		self.signallevel = sinfo[4]
		self.bitrate = sinfo[5]
		# KA: [20080402] NEW WIFI AP
		if len(sinfo) > 6:
			self.encryption = sinfo[6]
			self.authentication = sinfo[7]
		# KA: [20080402] NEW WIFI AP ==
		# KA: [20080411] check SSID 중복 이름 검색시 MAC_MODE_ON yes / BSSID set
		print '### MAC_MODE ==>> ', mac_mode
		self.mac_mode_on = mac_mode
		self.bssid = sinfo[0]
		# KA: [20080411] check SSID 중복 이름 검색시 MAC_MODE_ON yes / BSSID set ==
		
		####### 이게 없으면.. wifi scanning select 한 정보가 apply하기 전 掠?지 적용되지 않는다.
		# shchun : in order to prepare rollback function. delete implicit save()
		#self.save()

	def get_wifi(self):
 		try:
			apmacaddress=self.apmacaddress
			essid=self.essid
			channelid=self.channelid
			security=self.security
			signallevel=self.signallevel
			bitrate=self.bitrate

			os.system('wl assoc > /tmp/wifi_connected_info')
			os.system('sync')
			f = open('/tmp/wifi_connected_info')
			for tline in f : 
				#SSID	
				if tline.find('SSID') >= 0 and tline.find('\"') >= 0:	
					a,b = tline.split(':')
					b = b.strip()
					essid = b[1:len(b)-1]
				elif tline.find('Mode') >= 0:
					#RSSI
					if tline.find('RSSI'):
						ti = tline.find('RSSI')
						signallevel = (tline[ti+6:tline.find('dBm')])
					#Channel
					if tline.find('Channel') >= 0:
						ti = tline.find('Channel')
						channelid = (tline[ti+9:].strip())
				#BSSID --> MAC
				elif tline.find('BSSID') >= 0:
					apmacaddress = tline[tline.find(':')+2:24].strip()
				#Bit rate
				elif tline.find('Supported Rates') >= 0:
					ti = tline.find(']')
					if tline[ti-2] == ')': # b-mode: 11(b)
						rate = (tline[ti-6:ti-4])
					else:
						rate = (tline[ti-3:ti-1])
					bitrate = str(rate)
			f.close()
			
		
			'''
			str=os.popen('wl channel | grep current').read()
			str=str.split('\t')[1].replace('\n','')
			channelid = str
			
			str=os.popen('wl bssid').read().replace('\n','')
			apmacaddress = str

			str=os.popen('wl rate').read().replace('\n','')
			bitrate = str

			
			os.system('wlrssi')

			fp = open('/tmp/tmpRSSI')
			signallevel  = fp.read().replace('\n','')
			fp.close()
			'''
			
		except:
			print 'error get wifi'
			apmacaddress=self.apmacaddress
			essid=self.essid
			channelid=self.channelid
			security=self.security
			signallevel=self.signallevel
			bitrate=self.bitrate

		#print 'RET ',  apmacaddress, essid, channelid, security, signallevel, bitrate
		return [apmacaddress, essid, channelid, security, signallevel, bitrate]
		
	def wepkeychange_htoa(self, value, b64=True):
		if not value:
			return ''
		try:
			temp = ''
			index = 0


			if value[:2].lower() == '0x':
				value = value[2:]

			if b64:
				if 10 == len(value):
					for c in value:
						if index%4 == 0 and index !=0:
							temp += '-'
						temp += c
						index += 1
				else:
					for c in value:
						if index%2 == 0 and index != 0:
							temp += '-'
						temp += hex(ord(c))[2:]
						index += 1
				return temp
			else:
				if 26 == len(value):
					for c in value:
						if index%4 == 0 and index !=0:
							temp += '-'
						temp += c
						index += 1
				else:
					for c in value:
						if index%2 == 0 and index != 0:
							temp += '-'
						temp += hex(ord(c))[2:]
						index += 1
				return temp
		except:
			return ''

	def wepkeychange_atoh(self, value):
		if not value:
			return ''
		try:
			temp = ''
			index = 0
			strhex = ''
			if len(value) == 12 or len(value) == 32:
				temp = value.replace('-','')
			else:
				for c in value:
					if c == '-':
						continue
					strhex += c
					if index%2 == 1:
						temp += chr(int(strhex,16))
						strhex = ''
					index += 1
			return temp
		except:
			return ''

	def wepkeychange(self, issave=True):
#ka...3800 wifi 2007.05.01
		
	
		'''	
		if issave:
			self.wepkey1_64 = self.wepkeychange_htoa(self.wepkey1_64)
			self.wepkey2_64 = self.wepkeychange_htoa(self.wepkey2_64)
			self.wepkey3_64 = self.wepkeychange_htoa(self.wepkey3_64)
			self.wepkey4_64 = self.wepkeychange_htoa(self.wepkey4_64)

			self.wepkey1_128 = self.wepkeychange_htoa(self.wepkey1_128, False)
			self.wepkey2_128 = self.wepkeychange_htoa(self.wepkey2_128, False)
			self.wepkey3_128 = self.wepkeychange_htoa(self.wepkey3_128, False)
			self.wepkey4_128 = self.wepkeychange_htoa(self.wepkey4_128, False)
		else:
			self.wepkey1_64 = self.wepkeychange_atoh(self.wepkey1_64)
			self.wepkey2_64 = self.wepkeychange_atoh(self.wepkey2_64)
			self.wepkey3_64 = self.wepkeychange_atoh(self.wepkey3_64)
			self.wepkey4_64 = self.wepkeychange_atoh(self.wepkey4_64)

			self.wepkey1_128 = self.wepkeychange_atoh(self.wepkey1_128)
			self.wepkey2_128 = self.wepkeychange_atoh(self.wepkey2_128)
			self.wepkey3_128 = self.wepkeychange_atoh(self.wepkey3_128)
			self.wepkey4_128 = self.wepkeychange_atoh(self.wepkey4_128)
		'''
		
		if not self.wepkey1_64:
			self.wepkey1_64 = ''
		if not self.wepkey2_64:
			self.wepkey2_64 = ''
		if not self.wepkey3_64:
			self.wepkey3_64 = ''
		if not self.wepkey4_64:
			self.wepkey4_64 = ''

		if not self.wepkey1_128:
			self.wepkey1_128 = ''
		if not self.wepkey2_128:
			self.wepkey2_128 = ''
		if not self.wepkey3_128:
			self.wepkey3_128 = ''
		if not self.wepkey4_128:
			self.wepkey4_128 = ''

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

	def save(self):
		#print '## PROFILE> SAVE WIFI values##'
#ka...3800 wifi 2007.05.01
#		self.wepkeychange()
		name = config.wifi_profile_general_file
		fp = open(name, 'w')
		for key, value in self.__dict__.items():
			if key[0] != '_' and (type(value) in (type(''), type(0))):
				fp.write("%s=%s\n" % (key.upper(), value))
		self.wepkeychange(issave=False)

		#print ' before saving...'
		#self.show_items()		
		self.copy_old_values()
		#print ' after saving...'
		#self.show_items()
		return False

	def default_load(self):
		self.__init__()
		self.save()

	def load(self):
		roxia_trace('wifi profile loading..')
		name = config.wifi_profile_general_file
		g = self.__dict__
		if os.path.exists(name):
			for line in file(name):
				line = line.strip()
				if not line or line[0] == '#':
					continue
				key, value = line.split('=', 1)
				key = key.lower()

				if value == '': # value가 없는 경우, ex) GATEWAY=
					continue
				if value[0] == "'":
					g[key] = value[1:-1]
				else:
					g[key] = value
		self.wepkeychange(issave=False)
		# eicho 06.07.07
		self.copy_old_values()
		

	# eicho 06.07.07
	def copy_old_values(self):
		self._old_interface = self.interface
		self._old_dhcp = self.dhcp
		self._old_ipaddress = self.ipaddress
		self._old_netmask = self.netmask
		self._old_gateway = self.gateway
		
		self._old_broadcast = self.broadcast    
		self._old_essid = self.essid        
		self._old_channelid = self.channelid    
		self._old_encryption = self.encryption   
		self._old_wepkeyno_64 = self.wepkeyno_64  
		self._old_wepkey1_64 = self.wepkey1_64   
		self._old_wepkey2_64 = self.wepkey2_64   
		self._old_wepkey3_64 = self.wepkey3_64   
		self._old_wepkey4_64 = self.wepkey4_64   
		self._old_wepkeyno_128 = self.wepkeyno_128 
		self._old_wepkey1_128 = self.wepkey1_128  
		self._old_wepkey2_128 = self.wepkey2_128  
		self._old_wepkey3_128 = self.wepkey3_128  
		self._old_wepkey4_128 = self.wepkey4_128  
		self._old_wpa_psk_tkip = self.wpa_psk_tkip 
		self._old_apmacaddress = self.apmacaddress 
		self._old_security = self.security     
		self._old_signallevel = self.signallevel  
		self._old_bitrate = self.bitrate      
		self._old_authentication = self.authentication
		self._old_wmm = self.wmm
		self._old_mac_mode_on = self.mac_mode_on
		self._old_bssid = self.bssid
		

	def rollback_values(self):
		self.interface = self._old_interface
		self.dhcp = self._old_dhcp
		self.ipaddress = self._old_ipaddress
		self.netmask = self._old_netmask
		self.gateway = self._old_gateway	
		self.broadcast = self._old_broadcast
		
		self.essid = self._old_essid       
		self.channelid = self._old_channelid   
		self.encryption = self._old_encryption  
		self.wepkeyno_64 = self._old_wepkeyno_64 
		self.wepkey1_64 = self._old_wepkey1_64  
		self.wepkey2_64 = self._old_wepkey2_64  
		self.wepkey3_64 = self._old_wepkey3_64  
		self.wepkey4_64 = self._old_wepkey4_64  
		self.wepkeyno_128 = self._old_wepkeyno_128
		self.wepkey1_128 = self._old_wepkey1_128 
		self.wepkey2_128 = self._old_wepkey2_128 
		self.wepkey3_128 = self._old_wepkey3_128 
		self.wepkey4_128 = self._old_wepkey4_128 
		self.wpa_psk_tkip = self._old_wpa_psk_tkip
		self.apmacaddress = self._old_apmacaddress
		self.security = self._old_security     
		self.signallevel = self._old_signallevel  
		self.bitrate = self._old_bitrate     
		self.authentication = self._old_authentication
		self.wmm = self._old_wmm
		self.mac_mode_on = self._old_mac_mode_on
		self.bssid = self._old_bssid

		self.tag_notchanged = False


	def except_apply(self, option):
		#print '>> WIFI profile value is changed but not apply!'
		#self.show_items()
		self.rollback_values()
		#self.show_items()
		self.tag_notchanged = option

	def show_items(self):
		print '============================='
		print '>> self.essid = ', self.essid
		print '>> self.apmacaddress = ', self.apmacaddress

	def get_security_name(self):
#		if self.authentication == 'WPA-PSK':
#			return 'WPA-PSK' + ', ' + self.encryption
#		elif self.authentication == 'WPA2-PSK':
#			return 'WPA2-PSK' + ', ' + self.encryption
#		elif self.encryption in ('WEP64BIT', 'WEP128BIT'):
#			return 'WEP'
#		else:
#			return 'OPEN'

# wl wpa_auth
#
# WPA auth mode disabled (0)
# WPA auth mode WPA-PSK (4)
# WPA auth mode disabled2 (128)
#
# wl wsec
# 0 : 보안없슴
# 1 : WEP
# 2 : TKIP
# 4 : AES

		wsec = os.popen('wl wsec').read().replace('\n','')
		wauth = os.popen("wl wpa_auth | awk -F' ' '{print $5}' | awk -F'(' '{print $2}'| awk -F')' '{print $1}' ").read().replace('\n','')

		iwsec = int(wsec)
		iauth = int (wauth)
		#print 'WSEC, WAUTH', wsec, wauth

		security = 'OPEN'
		if iwsec == 0:
			security = 'OPEN'
		elif iwsec == 1:
			security = 'WEP'
		else:
			if iauth == 0:
				security = 'OPEN' # not happens.
			elif iauth == 4:
				if iwsec == 2:
					security = 'WPA-PSK, TKIP'
				elif iwsec == 4:
					security = 'WPA-PSK, AES'
				
			elif iauth == 128:
				if iwsec == 2:
					security = 'WPA2-PSK, TKIP'
				elif iwsec == 4:
					security = 'WPA2-PSK, AES'

		#print 'SECURITY', security
		return security

	def get_security_name_simple(self):
		if self.authentication == 'WPA-PSK':
			return 'WPA-PSK'
		elif self.authentication == 'WPA2-PSK':
			return 'WPA2-PSK'
		elif self.encryption in ('WEP64BIT', 'WEP128BIT'):
			return 'WEP'
		else:
			return 'OPEN'	
### END OF GEN PROFILE ###		
# end

class WiFiProfileKtDefault:
	# shchun add : to handle general(== user set) profile.
	def __init__(self):
		self._name = 'MegaAP'
		self.interface = 'wlan0'
		self.dhcp = _yes
		self.ipaddress = ''
		self.netmask = ''
		self.gateway = ''
		self.broadcast = ''
		self.essid = ''
		self.channelid = ''
		self.encryption = 'NONE'
		self.wepkeyno_64 = '1'
		self.wepkey1_64 = ''
		self.wepkey2_64 = ''
		self.wepkey3_64 = ''
		self.wepkey4_64 = ''
		self.wepkeyno_128 = '1'
		self.wepkey1_128 = ''
		self.wepkey2_128 = ''
		self.wepkey3_128 = ''
		self.wepkey4_128 = ''
		self.wpa_psk_tkip = ''
		self.wpa2_psk_ccmp=''
		self.apmacaddress = ''
		self.security = ''
		self.signallevel = ''
		self.bitrate = ''
		self.authentication = 'OPEN'

		self.wmm = _yes
		self.probe_timer=3
		
		self.wpa2_psk_tkip = ''
		self.wpa_psk_aes = ''
		self.network_authentication='no'
		self.tunneled=''
		self.server_certification=''
		self.identity=''
		self.username=''
		self.password=''
		self.cacert_path=''
		self.user_cert_path=''
		self.private_key_path=''
		self.private_key_password=''
		self.mac_mode_on = 'no'
		self.bssid = ''
		
# MMW add Jun 12th
		self.wlconfigd_version='0.3'
		self.scan='0'
		self.pm='0'
		self.cwmin='0'
		self.cwmax='0'
		self.txqage='500'
		self.prof1='PROF_OPEN'
		self.wme_vo_min='-1'
		self.wme_vo_max='-1'
		self.wme_vi_min='-1'
		self.wme_vi_max='-1'
		self.load()

	def get_dhcp(self):
		if self.dhcp == _yes:
			return True
		else:
			return False


	def get_wifi(self):
 		try:

			apmacaddress=self.apmacaddress
			essid=self.essid
			channelid=self.channelid
			security=self.security
			signallevel=self.signallevel
			bitrate=self.bitrate
		
			str=os.popen('wl channel | grep current').read()
			str=str.split('\t')[1].replace('\n','')
			channelid = str
			
			str=os.popen('wl bssid').read().replace('\n','')
			apmacaddress = str

			str=os.popen('wl rate').read().replace('\n','')
			bitrate = str

			os.system('wlrssi')
			fp = open('/tmp/tmpRSSI')
			signallevel  = fp.read().replace('\n','')
			fp.close()
		except:
			print 'error get wifi'

		#print 'RET ',  apmacaddress, essid, channelid, security, signallevel, bitrate
		return [apmacaddress, essid, channelid, security, signallevel, bitrate]

	def load(self):
		roxia_trace('wifi profile loading..')
		name = config.wifi_profile_megaap_file
		g = self.__dict__
		if os.path.exists(name):
			for line in file(name):
				line = line.strip()
				if not line or line[0] == '#':
					continue
				key, value = line.split('=', 1)
				key = key.lower()

				if value == '': # value가 없는 경우, ex) GATEWAY=
					continue
				if value[0] == "'":
					g[key] = value[1:-1]
				else:
					g[key] = value
		self.wepkeychange(issave=False)
		# eicho 06.07.07

	def wepkeychange(self, issave=True):
#ka...3800 wifi 2007.05.01
	
		if not self.wepkey1_64:
			self.wepkey1_64 = ''
		if not self.wepkey2_64:
			self.wepkey2_64 = ''
		if not self.wepkey3_64:
			self.wepkey3_64 = ''
		if not self.wepkey4_64:
			self.wepkey4_64 = ''

		if not self.wepkey1_128:
			self.wepkey1_128 = ''
		if not self.wepkey2_128:
			self.wepkey2_128 = ''
		if not self.wepkey3_128:
			self.wepkey3_128 = ''
		if not self.wepkey4_128:
			self.wepkey4_128 = ''

	def save(self):
		#print '## PROFILE> SAVE WIFI values##'
#ka...3800 wifi 2007.05.01
#		self.wepkeychange()
		name = config.wifi_profile_megaap_file
		fp = open(name, 'w')
		for key, value in self.__dict__.items():
			if key[0] != '_' and (type(value) in (type(''), type(0))):
				fp.write("%s=%s\n" % (key.upper(), value))
		self.wepkeychange(issave=False)
		return False

	def set_bssid(self, ssid):
		self.bssid = ssid
		#self.save()	
	def set_essid(self, ssid):
		self.essid = ssid
		#self.save()	
### END OF KT PROFILE ###

# end		

class DNSProfile:
	def __init__(self):
		self.dns1 = '165.243.17.15'
		self.dns2 = '168.126.63.2'
		self.dhcp_dns1 = ''
		self.dhcp_dns2 = ''
		self.dhcp_dns3 = []
# eicho 06.07.07
		self._old_dns1 = '165.243.17.15'
		self._old_dns2 =  '168.126.63.2'

		self._old_dhcp_dns1 = ''
		self._old_dhcp_dns2 = ''


		self.tag_notchanged = False

	def set_dns1(self, value):
		self.dns1 = value
		#06.07.07 self.save()

	def set_dns2(self, value):
		self.dns2 = value
		#06.07.07 self.save()

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

	def save(self):
		#print '## PROFILE> SAVE DNS values##'
#Roxia Begin jhbang 06.05.02 #ip가 none,'' 인경우 0.0.0.0을 쓰도록 함
		if self.dns1 == None:
			self.dns1 = config.ip_null
		if self.dns2 == None:
			self.dns2 = config.ip_null

		value_dns1 = self.dns1
		value_dns2 = self.dns2

		if not self.dns1:
			value_dns1 = config.ip_null
		if not self.dns2:
			value_dns2 = config.ip_null

		value = 'nameserver ' + value_dns1 + '\n' + 'nameserver ' + value_dns2 + '\n'
		fp = open(config.dns_file, 'w')
#Roxia End jhbang
		fp.write(value)
		fp.close()

		self.copy_old_values()
		return False

	def dhcp_save(self):
		#print '## PROFILE> SAVE DHCP DNS values##'
#Roxia Begin jhbang 06.05.02 #ip가 none,'' 인경우 0.0.0.0을 쓰도록 함
		if self.dhcp_dns1 == None:
			self.dhcp_dns1 = config.ip_null
		if self.dhcp_dns2 == None:
			self.dhcp_dns2 = config.ip_null

		value_dns1 = self.dhcp_dns1
		value_dns2 = self.dhcp_dns2

		if not self.dhcp_dns1:
			value_dns1 = config.ip_null
		if not self.dhcp_dns2:
			value_dns2 = config.ip_null

		value = 'nameserver ' + value_dns1 + '\n' + 'nameserver ' + value_dns2 + '\n'

		if self.dhcp_dns3 != []:
			for i in range(len(self.dhcp_dns3)):
				if self.dhcp_dns3[i] == None:
					self.dhcp_dns3[i] = config.ip_null

				value_dns3 = self.dhcp_dns3[i]
				if not self.dhcp_dns3[i]:
					value_dns3 = config.ip_null

				value += 'nameserver ' + value_dns3 + '\n'

		fp = open(config.dns_file, 'w')
#Roxia End jhbang
		fp.write(value)
		fp.close()

		self.copy_old_values()
		return False

	def load(self):
		roxia_trace('DNS loading..')
		name = config.dns_file
		fp = open(name, 'r')
		bdns1 = False
		for z in fp.readlines():
			if bdns1 == True:
				if z.find('nameserver') >= 0:
					self.dns2 = z[z.find('nameserver') + 10:].strip()
			elif z.find('nameserver') >= 0:
				self.dns1 = z[z.find('nameserver') + 10:].strip()
				bdns1 =True

		fp.close()
		# eicho 06.07.07
		self.copy_old_values()

# eicho add 06.07.07
	
	def rollback_values(self):
		self.dns1 = self._old_dns1
		self.dns2 = self._old_dns2

		self.dhcp_dns1 = self._old_dhcp_dns1
		self.dhcp_dns2 = self._old_dhcp_dns2

		self.tag_notchanged = False
	
	def copy_old_values(self):
		self._old_dns1 =  self.dns1
		self._old_dns2 =  self.dns2
		self._old_dhcp_dns1 = self.dhcp_dns1
		self._old_dhcp_dns2 = self.dhcp_dns2

	def except_apply(self, option):
		#print '>> DNS profile value is changed but not apply!'
		self.rollback_values()
		self.tag_notchanged = option
### END OF DNS PROFILE ###		
		
profile = Profile()
#try:
profile.load()
#except:
	# TODO: 에러처리
	# file not found, open error, etc, ...
#	roxia_trace('profile load FAILED!!!!')

lan_profile = LANProfile()
#try:
lan_profile.load()
#except:
	# TODO: 에러처리
	# file not found, open error, etc, ...
#	roxia_trace('lan profile load FAILED!!!!')


wifi_profile_general = WiFiProfileGeneral()
wifi_profile_kt_default = WiFiProfileKtDefault() # readonly

wifi_profile = wifi_profile_general
# shchun: add wifi profile general...May - 6
#try:
wifi_profile_general.load()
#except:
	# TODO: 에러처리
	# file not found, open error, etc, ...
#	roxia_trace('wifi profile load FAILED!!!!')

dns_profile = DNSProfile()
dns_profile.load()