e926b2f2418e6dd44aaace5ac8a226576ee53587
[fms.git] / src / http / pages / localidentitiespage.cpp
1 #include "../../../include/http/pages/localidentitiespage.h"\r
2 #include "../../../include/stringfunctions.h"\r
3 \r
4 #ifdef XMEM\r
5         #include <xmem.h>\r
6 #endif\r
7 \r
8 const std::string LocalIdentitiesPage::CreateTrueFalseDropDown(const std::string &name, const std::string &selected)\r
9 {\r
10         std::string rval="";\r
11 \r
12         rval+="<select name=\""+name+"\">";\r
13         rval+="<option value=\"true\"";\r
14         if(selected=="true")\r
15         {\r
16                 rval+=" SELECTED";\r
17         }\r
18         rval+=">true</option>";\r
19         rval+="<option value=\"false\"";\r
20         if(selected=="false")\r
21         {\r
22                 rval+=" SELECTED";\r
23         }\r
24         rval+=">false</option>";\r
25         rval+="</select>";\r
26 \r
27         return rval;\r
28 }\r
29 \r
30 const std::string LocalIdentitiesPage::GeneratePage(const std::string &method, const std::map<std::string,std::string> &queryvars)\r
31 {\r
32         int count;\r
33         std::string countstr;\r
34         std::string content="";\r
35 \r
36 \r
37         if(queryvars.find("formaction")!=queryvars.end())\r
38         {\r
39                 int id;\r
40                 std::vector<std::string> ids;\r
41                 std::vector<std::string> singleuse;\r
42                 std::vector<std::string> publishtrustlist;\r
43 \r
44                 CreateArgArray(queryvars,"chkidentityid",ids);\r
45                 CreateArgArray(queryvars,"singleuse",singleuse);\r
46                 CreateArgArray(queryvars,"publishtrustlist",publishtrustlist);\r
47 \r
48                 if((*queryvars.find("formaction")).second=="update")\r
49                 {\r
50                         SQLite3DB::Statement update=m_db->Prepare("UPDATE tblLocalIdentity SET SingleUse=?, PublishTrustList=? WHERE LocalIdentityID=?;");\r
51                         for(int i=0; i<ids.size(); i++)\r
52                         {\r
53                                 if(ids[i]!="")\r
54                                 {\r
55                                         StringFunctions::Convert(ids[i],id);\r
56                                         update.Bind(0,singleuse[i]);\r
57                                         update.Bind(1,publishtrustlist[i]);\r
58                                         update.Bind(2,id);\r
59                                         update.Step();\r
60                                         update.Reset();\r
61                                 }\r
62                         }\r
63                 }\r
64                 if((*queryvars.find("formaction")).second=="delete")\r
65                 {\r
66                         SQLite3DB::Statement del=m_db->Prepare("DELETE FROM tblLocalIdentity WHERE LocalIdentityID=?;");\r
67                         for(int i=0; i<ids.size(); i++)\r
68                         {\r
69                                 if(ids[i]!="")\r
70                                 {\r
71                                         StringFunctions::Convert(ids[i],id);\r
72                                         del.Bind(0,id);\r
73                                         del.Step();\r
74                                         del.Reset();\r
75                                 }\r
76                         }\r
77                 }\r
78         }\r
79 \r
80         content+="<h2>Local Identities</h2>";\r
81         content+="<form name=\"frmlocalidentity\" method=\"POST\">";\r
82         content+="<input type=\"hidden\" name=\"formaction\" value=\"update\">";\r
83         content+="<table><tr><td></td><th>Name</th><th>Single Use</th><th>Publish Trust List</th><th>Announced? *</th></tr>";\r
84 \r
85         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;");\r
86         st.Step();\r
87 \r
88         count=0;\r
89         while(st.RowReturned())\r
90         {\r
91                 StringFunctions::Convert(count,countstr);\r
92                 std::string id;\r
93                 std::string name;\r
94                 std::string publickey;\r
95                 std::string publishtrustlist;\r
96                 std::string singleuse;\r
97                 std::string keypart;\r
98 \r
99                 st.ResultText(0,id);\r
100                 st.ResultText(1,name);\r
101                 st.ResultText(2,publickey);\r
102                 st.ResultText(3,publishtrustlist);\r
103                 st.ResultText(4,singleuse);\r
104 \r
105                 if(publickey.size()>8)\r
106                 {\r
107                         keypart=publickey.substr(3,5);\r
108                 }\r
109 \r
110                 content+="<tr>";\r
111                 content+="<td><input type=\"checkbox\" name=\"chkidentityid["+countstr+"]\" value=\""+id+"\"></td>";\r
112                 content+="<td title=\""+publickey+"\">"+SanitizeOutput(name+keypart)+"...</td>";\r
113                 content+="<td>"+CreateTrueFalseDropDown("singleuse["+countstr+"]",singleuse)+"</td>";\r
114                 content+="<td>"+CreateTrueFalseDropDown("publishtrustlist["+countstr+"]",publishtrustlist)+"</td>";\r
115                 if(st.ResultNull(6))\r
116                 {\r
117                         content+="<td>No</td>";\r
118                 }\r
119                 else\r
120                 {\r
121                         content+="<td>Yes</td>";\r
122                 }\r
123                 content+="</tr>";\r
124                 st.Step();\r
125                 count++;\r
126         }\r
127 \r
128         content+="<tr><td colspan=\"4\"><center><input type=\"submit\" value=\"Update Selected\"> <input type=\"submit\" value=\"Delete Selected\" onClick=\"if(confirm('Delete Selected Identities?')){frmlocalidentity.formaction.value='delete';}else{return false;}\"></td></tr>";\r
129         content+="</table>";\r
130         content+="<p class=\"paragraph=\">* An identity is considered successfully announced when you have downloaded a trust list from someone that contains the identity.</p>";\r
131 \r
132         return "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n"+StringFunctions::Replace(m_template,"[CONTENT]",content);\r
133 }\r
134 \r
135 const bool LocalIdentitiesPage::WillHandleURI(const std::string &uri)\r
136 {\r
137         if(uri.find("localidentities.")!=std::string::npos)\r
138         {\r
139                 return true;\r
140         }\r
141         else\r
142         {\r
143                 return false;\r
144         }\r
145 }\r