X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fhttp%2Fpages%2Flocalidentitiespage.cpp;h=8b6afcb8ff317691ec4e01968db8866010e99753;hb=8a0a83a78390f22f99d4487cda2569909dfbc28e;hp=e926b2f2418e6dd44aaace5ac8a226576ee53587;hpb=b9c3763a932cebaa015a27fe111017f6f34dfbaa;p=fms.git diff --git a/src/http/pages/localidentitiespage.cpp b/src/http/pages/localidentitiespage.cpp index e926b2f..8b6afcb 100644 --- a/src/http/pages/localidentitiespage.cpp +++ b/src/http/pages/localidentitiespage.cpp @@ -1,5 +1,6 @@ #include "../../../include/http/pages/localidentitiespage.h" #include "../../../include/stringfunctions.h" +#include "../../../include/http/identityexportxml.h" #ifdef XMEM #include @@ -33,21 +34,24 @@ const std::string LocalIdentitiesPage::GeneratePage(const std::string &method, c std::string countstr; std::string content=""; - if(queryvars.find("formaction")!=queryvars.end()) { int id; std::vector ids; std::vector singleuse; std::vector publishtrustlist; + std::vector publishboardlist; + std::vector publishfreesite; CreateArgArray(queryvars,"chkidentityid",ids); CreateArgArray(queryvars,"singleuse",singleuse); CreateArgArray(queryvars,"publishtrustlist",publishtrustlist); + CreateArgArray(queryvars,"publishboardlist",publishboardlist); + CreateArgArray(queryvars,"publishfreesite",publishfreesite); if((*queryvars.find("formaction")).second=="update") { - SQLite3DB::Statement update=m_db->Prepare("UPDATE tblLocalIdentity SET SingleUse=?, PublishTrustList=? WHERE LocalIdentityID=?;"); + SQLite3DB::Statement update=m_db->Prepare("UPDATE tblLocalIdentity SET SingleUse=?, PublishTrustList=?, PublishBoardList=?, PublishFreesite=? WHERE LocalIdentityID=?;"); for(int i=0; iPrepare("SELECT Name,PublicKey,PrivateKey,SingleUse,PublishTrustList,PublishBoardList,PublishFreesite FROM tblLocalIdentity WHERE PublicKey IS NOT NULL AND PrivateKey IS NOT NULL;"); + exp.Step(); + while(exp.RowReturned()) + { + std::string name=""; + std::string publickey=""; + std::string privatekey=""; + std::string tempval=""; + bool singleuse=false; + bool publishtrustlist=false; + bool publishboardlist=false; + bool publishfreesite=false; + + exp.ResultText(0,name); + exp.ResultText(1,publickey); + exp.ResultText(2,privatekey); + exp.ResultText(3,tempval); + if(tempval=="true") + { + singleuse=true; + } + exp.ResultText(4,tempval); + if(tempval=="true") + { + publishtrustlist=true; + } + exp.ResultText(5,tempval); + if(tempval=="true") + { + publishboardlist=true; + } + exp.ResultText(6,tempval); + if(tempval=="true") + { + publishfreesite=true; + } + + xml.AddIdentity(name,publickey,privatekey,singleuse,publishtrustlist,publishboardlist,publishfreesite); + + exp.Step(); + } + return "HTTP/1.1 200 OK\r\nContent-Type: text/xml\r\nContent-Disposition: attachment; filename=identities.xml\r\n\r\n"+xml.GetXML(); + } + if((*queryvars.find("formaction")).second=="import") + { + if(queryvars.find("file")!=queryvars.end()) + { + IdentityExportXML xml; + if(xml.ParseXML((*queryvars.find("file")).second)) + { + SQLite3DB::Statement imp=m_db->Prepare("INSERT INTO tblLocalIdentity(Name,PublicKey,PrivateKey,SingleUse,PublishTrustList,PublishBoardList,PublishFreesite) VALUES(?,?,?,?,?,?,?);"); + for(int i=0; i"; + content+=""; + content+=""; + content+=""; + content+=""; + content+="
"; + content+=""; + content+=""; + content+=""; + content+="
"; + content+=""; + + content+="
"; + content+="
"; content+=""; - content+=""; + content+="
NameSingle UsePublish Trust ListAnnounced? *
"; - SQLite3DB::Statement st=m_db->Prepare("SELECT LocalIdentityID,tblLocalIdentity.Name,tblLocalIdentity.PublicKey,tbLLocalIdentity.PublishTrustList,tblLocalIdentity.SingleUse,tblLocalIdentity.PublishBoardList,tblIdentity.IdentityID FROM tblLocalIdentity LEFT JOIN tblIdentity ON tblLocalIdentity.PublicKey=tblIdentity.PublicKey ORDER BY tblLocalIdentity.Name;"); + SQLite3DB::Statement st=m_db->Prepare("SELECT LocalIdentityID,tblLocalIdentity.Name,tblLocalIdentity.PublicKey,tbLLocalIdentity.PublishTrustList,tblLocalIdentity.SingleUse,tblLocalIdentity.PublishBoardList,tblIdentity.IdentityID,tblLocalIdentity.PublishFreesite FROM tblLocalIdentity LEFT JOIN tblIdentity ON tblLocalIdentity.PublicKey=tblIdentity.PublicKey ORDER BY tblLocalIdentity.Name;"); st.Step(); count=0; while(st.RowReturned()) { StringFunctions::Convert(count,countstr); - std::string id; - std::string name; - std::string publickey; - std::string publishtrustlist; - std::string singleuse; - std::string keypart; + std::string id=""; + std::string name=""; + std::string publickey=""; + std::string publishtrustlist=""; + std::string singleuse=""; + std::string keypart=""; + std::string publishboardlist=""; + std::string publishfreesite=""; st.ResultText(0,id); st.ResultText(1,name); st.ResultText(2,publickey); st.ResultText(3,publishtrustlist); st.ResultText(4,singleuse); + st.ResultText(5,publishboardlist); + st.ResultText(7,publishfreesite); if(publickey.size()>8) { @@ -112,6 +241,8 @@ const std::string LocalIdentitiesPage::GeneratePage(const std::string &method, c content+=""; content+=""; content+=""; + content+=""; + content+=""; if(st.ResultNull(6)) { content+=""; @@ -125,9 +256,10 @@ const std::string LocalIdentitiesPage::GeneratePage(const std::string &method, c count++; } - content+=""; + content+=""; content+="
NameSingle UsePublish Trust ListPublish Board ListPublish FreesiteAnnounced? *
"+SanitizeOutput(name+keypart)+"..."+CreateTrueFalseDropDown("singleuse["+countstr+"]",singleuse)+""+CreateTrueFalseDropDown("publishtrustlist["+countstr+"]",publishtrustlist)+""+CreateTrueFalseDropDown("publishboardlist["+countstr+"]",publishboardlist)+""+CreateTrueFalseDropDown("publishfreesite["+countstr+"]",publishfreesite)+"No
"; - content+="

* An identity is considered successfully announced when you have downloaded a trust list from someone that contains the identity.

"; + content+="

* An identity is considered successfully announced when you have downloaded a trust list from someone that contains the identity.

"; + content+="

Single Use Identities will automatically be deleted 7 days after creation.

"; return "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n"+StringFunctions::Replace(m_template,"[CONTENT]",content); }