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; }
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> ¶s) { 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; }
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; } }
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; }