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);
        }       
    }
}
posted @ 2017-08-28 10:45  gent95  阅读(160)  评论(0编辑  收藏  举报