Пример #1
0
QString SVT_Fcml::getSession(const QString &to, const QString &usr
                   ,const QString &pwd,int *error)
{

    //test
#if 0
    QString test="<fcml from=\"router@portal\" to=\"router@cp171,router@cp190,ui7244@portal,ui7245@portal,ui7246@portal\" >"
            "<portal.router.ui7244.is type=\"ui\" active=\"false\"/></fcml>"
            ;
    QDomDocument td;
    td.setContent(test);
    QDomNode tn=td.firstChild();
    QString t;
    int itest=getRetValue(tn,t);
    //test end
#endif



    QString req="<SessionManagement.startSession username=\"%1\" password=\"%2\"/>";
    req=req.arg(usr,pwd);
    const QDomNode &_node=fcmlRequest(QString("netrouter@")+to,req);
    QString desp;
    int itemp=getRetValue(_node,desp);
    QString stemp;
    if(itemp==0)
    {
        QDomNode node=_node.firstChild();
        stemp=node.toElement().attribute("sessionId");
    }
    if(error)
    {
        *error=itemp;
    }

    if(stemp.isEmpty())
    {
        mSession.remove(to);
    }
    else
    {
#ifdef SM_ONLY_ONE_SESSION
        endAllSessions();
#endif
        mSession.insert(to,stemp);
    }
    if(error &&(*error==0)&&stemp.isEmpty())
    {
        *error=FE_SESSION_NOTOK;
    }
    return stemp;
}
Пример #2
0
void InstRet::dump(const Cfg *Func) const {
  Ostream &Str = Func->getContext()->getStrDump();
  Type Ty = hasRetValue() ? getRetValue()->getType() : IceType_void;
  Str << "ret " << Ty;
  if (hasRetValue()) {
    Str << " ";
    dumpSources(Func);
  }
}
const QDomNode&QGenieSmartnetworkThread::doFunc(const QString &cp
    , const QString &model, const QString &func
    , int *error, QString *rets
    , const QMap<QString, QString> &paras)
{
    const QDomNode &node=mFcml.fcmlReqWithRefreshSession(cp,model,func,paras,error);

    if(error || rets/*&&(0==*error)*/)
    {
        QString s;
        int itemp;
        if(!rets)
        {
            rets=&s;
        }
        itemp=getRetValue(node,*rets);
        if((itemp==FE_NOT_AUTHENTICATIED)&&!mUserName.isEmpty())
        {
            qDebug()<<"smartnetwork re authenticate!!";
            QStringList loginRet;
            bool btemp;
            doCmdLogin(QStringList()<<mUserName<<mPassword,loginRet);
            if((loginRet.count())>0
                    && (loginRet[0].toInt(&btemp)==0)
                    && btemp)
            {
                const QDomNode &node1=mFcml.fcmlReqWithRefreshSession(cp,model,func,paras,error);
                itemp=getRetValue(node1,*rets);
                if(error && (0==*error))
                {
                    *error=itemp;
                }
                return node1;

            }
        }
        if(error && (0==*error))
        {
            *error=itemp;
        }
    }
    return  node;
}
Пример #4
0
void SVT_Fcml::endSession(const QString &to, const QString &session, int *error)
{
    QString req="<SessionManagement.endSession  sessionId=\"%1\"/>";
    req=req.arg(session);

    const QDomNode &_node=fcmlRequest(QString("netrouter@")+to,req);
    QString desp;
    int itemp=getRetValue(_node,desp);

    if(error)
    {
        *error=itemp;
    }
}
Пример #5
0
bool SVT_Soap::_doFunc(const QString &host, const QString &module, const QString &method, quint32 port, const QMap<QString, QString> *paras, QMap<QString, QString> *retmap){
    if((mFlags&IS_CGDG) ||isSetApi(module,method))
    {
        sendStart(host,port);
    }
    if(retmap)
    {
        retmap->clear();
    }
    const char *cHeadMode="POST /soap/server_sa/ HTTP/1.0\r\n"
            "SOAPAction: urn:NETGEAR-ROUTER:service:%1:1#%2\r\n"
            "content-type: text/xml;charset=utf-8\r\n"
            "HOST: www.routerlogin.com\r\n"
            "User-Agent: SOAP Toolkit 3.0\r\n"
            "connection: keep-Alive\r\n"
            "Cache-Control: no-cache\r\n"
            "Pragma: no-cache\r\n"
            "content-length: %3\r\n\r\n";
    const char *cBodyMode=
            "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>"
                "<SOAP-ENV:Envelope xmlns:SOAPSDK1=\"http://www.w3.org/2001/XMLSchema\" "
                    "xmlns:SOAPSDK2=\"http://www.w3.org/2001/XMLSchema-instance\" "
                    "xmlns:SOAPSDK3=\"http://schemas.xmlsoap.org/soap/encoding/\" "
                    "xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\">"
                        "<SOAP-ENV:Header>"
                            "<SessionID>58DEE6006A88A967E89A</SessionID>"
                        "</SOAP-ENV:Header>"
                        "<SOAP-ENV:Body>"
                            "<M1:%2 xmlns:M1=\"urn:NETGEAR-ROUTER:service:%1:1\">"
            "%3"
                            "</M1:%2>"
                        "</SOAP-ENV:Body>"
                "</SOAP-ENV:Envelope>";
    QString s_para="";
    if(paras)
    {
        QMap<QString, QString>::const_iterator i = paras->begin();
        while (i != paras->end()) {
            s_para+=QString("<%1>%2</%1>").arg(i.key(),i.value());
            ++i;
        }
    }

    QString body=QString(cBodyMode).arg(module,method,s_para);
    QString head=QString(cHeadMode).arg(module,method).arg(body.length());

    if(0==module.compare("ParentalControl",Qt::CaseInsensitive))
    {
        cHeadMode="POST /soap/server_sa/ HTTP/1.0\r\n"
                  "SOAPAction: urn:NETGEAR-ROUTER:service:%1:1#%2\r\n"
                  "content-type: text/xml;charset=utf-8\r\n"
                  "HOST: www.routerlogin.com\r\n"
                  "User-Agent: SOAP Toolkit 3.0\r\n"
                  "connection: keep-Alive\r\n"
                  "Cache-Control: no-cache\r\n"
                  "Pragma: no-cache\r\n"
                  "content-length: %3\r\n\r\n";
        cBodyMode="<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\">\n"
                  "<SOAP-ENV:Header>\n"
                  "<SessionID xsi:type=\"xsd:string\" xmlns:xsi=\"http://www.w3.org/1999/XMLSchema-instance\">E6A88AE69687E58D9A00</SessionID>\n"
                  "</SOAP-ENV:Header>\n"
                  "<SOAP-ENV:Body>\n"
                  "<%1>\n"
          "%2"
                  "</%1>\n"
                  "</SOAP-ENV:Body>\n"
                  "</SOAP-ENV:Envelope>\n";
        const char *cParaString=" xsi:type=\"xsd:string\" xmlns:xsi=\"http://www.w3.org/1999/XMLSchema-instance\"";
        s_para="";
        if(paras)
        {
            QMap<QString, QString>::const_iterator i = paras->begin();
            while (i != paras->end()) {
                s_para+=QString("<%1%3>%2</%1>\n").arg(i.key(),i.value(),cParaString);
                ++i;
            }
        }
        body=QString(cBodyMode).arg(method,s_para);
        head=QString(cHeadMode).arg(module,method).arg(body.length());

    }

    SVT_Http http(mExitFlag);
    QByteArray &retarray=http.rawRequest(host,head+body,port);

    qDebug()<<retarray;


    int retv=getRetValue(retarray);
    bool retOk=(200==retv);
    if(retOk && retmap)
    {
        qDebug()<<"start parse";
        QDomDocument doc;
        QByteArray body=SVT_Http::getBody(retarray);

        doc.setContent(body,true);
//        QDomNode root=doc.namedItem()
//        doc.
        //QString tagname=method+"Response";
        QDomNode rnode = doc.firstChild();
        if (!rnode.isElement())
            rnode = rnode.nextSibling();
        parseNode(rnode,retmap);



    }
    if((retOk)&&((mFlags&IS_CGDG) ||isSetApi(module,method)))
    {
        sendFinish(host,port);
    }
    if(!retOk && retmap)
    {
        retmap->insert("error",QString::number(retv));
    }

    return retOk;
}