openacs javascript脚本

//transform text in utf8 format to string
function u2str(text)
{ 
	return unescape(text.replace(/&#x/g,'%u').replace(/;/g,''));
}

function str2u(text)
{
        return escape(text).replace(/(%u)(\w{4})/gi, "&#x$2;");
}

function utf8CodeToChineseChar(strUtf8)   
{   
	var iCode, iCode1, iCode2;   
	iCode  = parseInt("0x" + strUtf8.substr(1, 2));   
	iCode1 = parseInt("0x" + strUtf8.substr(4, 2));   
	iCode2 = parseInt("0x" + strUtf8.substr(7, 2));   

	return String.fromCharCode(((iCode & 0x0F) << 12) | ((iCode1 & 0x3F) << 6) | (iCode2 & 0x3F));   
}   
  
function chineseFromUtf8Url(strUtf8)     
{   
	var bstr = "";   
	var nOffset = 0;   

	if ( strUtf8 == "" )   
	return "";   

	strUtf8 = strUtf8.toLowerCase();   
	nOffset = strUtf8.indexOf("%e");   
	if (nOffset == -1 )   
		return strUtf8;   

	while (nOffset != -1)   
	{   
		bstr += strUtf8.substr(0, nOffset);   
		strUtf8 = strUtf8.substr(nOffset, strUtf8.length - nOffset);   
		if (strUtf8 == "" || strUtf8.length < 9 )
			return bstr;   

		bstr += utf8CodeToChineseChar(strUtf8.substr(0, 9));   
		strUtf8 = strUtf8.substr(9, strUtf8.length - 9);   
		nOffset = strUtf8.indexOf("%e");   
	}   
	return  bstr + strUtf8;   
}   

function toUnicode(data)
{
	var str =''; 
	for(var i=0;i<data.length;i++)
	{
		if (parseInt(data[i].charCodeAt(0),10) <= 127 )
		{
			str += data[i];
		}
		else
		{
			str+='&#x'+parseInt(data[i].charCodeAt(0),10).toString(16)+';';
		}
	}
	return str;
}

function convertToUtf8_1(data)
{
	var str = data.replace(/&#x/g,'%').replace(/;/g,'');
	str = chineseFromUtf8Url(str);
	return toUnicode(str);
}

function convertToUtf8(data)
{
	var str = data.replace(/&#x/g,'%').replace(/;/g,'');
	str = chineseFromUtf8Url(str);
	str = toUnicode(str);
        return u2str(str);
}

//------------getDeviceInfo ------------------
var manu  = cpe.Inform.DeviceId.Manufacturer; 
var oui   = cpe.Inform.DeviceId.OUI; 
var sn    = cpe.Inform.DeviceId.SerialNumber;
var name;
var area;
var ipaddr;
var monObj;
var monReg;
var monFxoPot;
var monFxoSta;
var monFxsPot;
var monFxsSta;

for( i=0; i < cpe.Inform.ParameterList.length; i++ )
{
	switch ( cpe.Inform.ParameterList[i].Name )
	{
		case 'InternetGatewayDevice.DeviceInfo.ProductName':
			name = cpe.Inform.ParameterList[i].Value;
			name = convertToUtf8_1(name);
            name = convertToUtf8(name);			
			break;
			
		case 'InternetGatewayDevice.DeviceInfo.MonitorArea':
			area = cpe.Inform.ParameterList[i].Value;	
			area = convertToUtf8_1(area );
            area = convertToUtf8(area );			
			break;

		case 'InternetGatewayDevice.ManagementServer.ConnectionRequestURL':
			var url = cpe.Inform.ParameterList[i].Value;	
			var re = /\d+\.\d+\.\d+\.\d+/;   
			ipaddr = re.exec(url); 
			break;

		case 'InternetGatewayDevice.DeviceInfo.MonitorObject.1.MonitorObj':
			monObj = cpe.Inform.ParameterList[i].Value;	
			monObj = convertToUtf8_1(monObj );
            monObj = convertToUtf8(monObj );				
			break;

		case 'InternetGatewayDevice.DeviceInfo.MonitorObject.1.RegisterNumber':
			monReg = cpe.Inform.ParameterList[i].Value;
			break;

		case 'InternetGatewayDevice.DeviceInfo.MonitorObject.1.FXOPort':
			monFxoPot = cpe.Inform.ParameterList[i].Value;
			break;

		case 'InternetGatewayDevice.DeviceInfo.MonitorObject.1.FXOState':
			monFxoSta = cpe.Inform.ParameterList[i].Value;
			break;

		case 'InternetGatewayDevice.DeviceInfo.MonitorObject.1.FXSPort':
			monFxsPot = cpe.Inform.ParameterList[i].Value;
			break;

		case 'InternetGatewayDevice.DeviceInfo.MonitorObject.1.FXSState':
			monFxsSta = cpe.Inform.ParameterList[i].Value;
			break;	

		default:
			break;
	}
}

try 
{
	var sql= "SELECT OUI,SerialNumber FROM DeviceInfo WHERE OUI = '" + oui +"' and SerialNumber = '" + sn + "'";
	var rs = db.Query(sql);	
	if (rs == "")
	{
		sql = "INSERT INTO DeviceInfo (OUI, SerialNumber, Manufacturer, ProductName, ProductIPAddr, MonitorArea, MonitorObject, RegisterNumber, FXONum, FXOState, FXSNum, FXSState, Flag) VALUES ('"+ oui +"','"+ sn +"','"+ manu +"','"+ name +"','"+ ipaddr +"','"+ area +"','"+ monObj +"','"+ monReg +"','"+ monFxoPot +"','"+ monFxoSta +"','"+ monFxsPot +"','"+ monFxsSta +"',0)";		
		rs = db.Update (sql);	
	}
	else
	{
		sql = "UPDATE DeviceInfo SET Manufacturer='"+ manu +"',ProductName='"+ name +"',ProductIPAddr='"+ ipaddr +"',MonitorArea='"+ area +"',MonitorObject='"+ monObj +"',RegisterNumber='"+ monReg +"',FXONum='"+ monFxoPot +"',FXOState='"+ monFxoSta +"',FXSNum='"+ monFxsPot +"',FXSState='"+ monFxsSta +"',Flag=0, Time=NOW() WHERE OUI = '" + oui +"' and SerialNumber = '" + sn + "'";	
		rs = db.Update (sql);	
	}
} 
catch (e) 
{
	logger ("=========DS exception:"+e.message);
}
		

//-----------------getAlarm------------------
var event;
var eventstr;    
var alarmstr;
var alarm;
var id; 		
var caller;  
var callee;  
var addition;
var flag;

for( i=0; i<=cpe.Inform.Event.length-1; i++ )
{
	event = cpe.Inform.Event[i].EventCode;
	if (event.indexOf('X ') == 0)
	{				
        eventstr    = event.split(" ");
		alarmstr	= eventstr[2];
		alarm 		= alarmstr.split(":");
		id 			= alarm[0];
		switch ( id )
		{
			case 0:
			case 1:
			case 2:
			case 3:
			case 4:
			case 5:
			case 6:
				level = 1;	
				break;
			case 7:
			case 8:
				level = 0;
				break;
			default:
				level = 1;	
				break;
		}		
		caller  	= alarm[1];
		callee  	= alarm[2];
		addition 	= alarm[3];
		
		if (caller == "" && callee == "") flag = 0;
		else if (caller != "" && callee == "") flag = 1;
		else if (caller == "" && callee != "") flag = 2;
		else flag = 3;
		
		try 
		{
			var sql = "INSERT INTO RealTimeAlarm (ProductName, MonitorArea, MonitorObject, RegisterNumber, AlarmId, Level, CallFlag, Caller, Callee, Additional) VALUES ('"+ name +"','"+ area +"','"+ monObj +"','"+ monReg +"','"+ id +"','"+ level +"','"+ flag +"','"+ caller +"','"+ callee +"','"+ addition +"')";
			var rs = db.Update (sql);	
		} 
		catch (e) 
		{
			 logger ("------------DS exception:"+e.message);
		}		
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值