1
1
#include " file_controller.h"
2
-
2
+ # include " jwt_controller.h "
3
3
#include < json/json.h>
4
4
#include < stdio.h>
5
-
5
+ # include < mysql.h >
6
6
#include < chrono>
7
7
#include < iostream>
8
8
#include < stdexcept>
9
9
#include < string>
10
-
10
+ void add_lock (const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback){
11
+ std::string filename = req->getParameter (" filename" );
12
+ if (lockcheck (filename)){
13
+ auto res = HttpResponse::newHttpResponse ();
14
+ res->addHeader (" Access-Control-Allow-Origin" , " *" );
15
+ res->setBody (" This file has been occupied" );
16
+ callback (res);
17
+ }
18
+ else {
19
+ auto res = HttpResponse::newHttpResponse ();
20
+ res->addHeader (" Access-Control-Allow-Origin" , " *" );
21
+ res->setBody (" This file is yours" );
22
+ callback (res);
23
+ }
24
+ }
11
25
std::string shell_commons (const char *cmd)
12
26
{
13
27
char buffer[1280 ];
@@ -33,6 +47,7 @@ std::string shell_commons(const char *cmd)
33
47
34
48
void commondsCtrl (const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback)
35
49
{
50
+
36
51
std::cout << " commondsCtrl" << std::endl;
37
52
enum Command {
38
53
tree,
@@ -133,73 +148,88 @@ void commondsCtrl(const HttpRequestPtr &req, std::function<void(const HttpRespon
133
148
// res->setBody(result);
134
149
// callback(res);
135
150
// }
151
+
152
+
136
153
void saveFile (const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback)
137
154
{
138
- auto body = req->getBody ();
139
- Json::Value req_json;
140
- Json::Reader reader;
141
- std::string bodyStr (body);
142
- if (!reader.parse (bodyStr, req_json))
155
+ auto res = HttpResponse::newHttpResponse ();
156
+ if (jwtVerify (req))
143
157
{
144
- std::cout << " parse failed" << std::endl;
145
- callback (HttpResponse::newHttpResponse ());
146
- return ;
158
+ auto body = req->getBody ();
159
+ Json::Value req_json;
160
+ Json::Reader reader;
161
+ std::string bodyStr (body);
162
+ if (!reader.parse (bodyStr, req_json))
163
+ {
164
+ std::cout << " parse failed" << std::endl;
165
+ callback (HttpResponse::newHttpResponse ());
166
+ return ;
167
+ }
168
+ char *pathvar;
169
+ pathvar = getenv (" PWD" );
170
+ std::string filename = req_json[" filename" ].asString ();
171
+ std::string content = req_json[" content" ].asString ();
172
+ std::string result = shell_commons ((" echo '" + content + " '>" + std::string (pathvar) + " /../root/" + filename).c_str ());
173
+
174
+ sql_unlocked (filename);
175
+
176
+ res->addHeader (" Access-Control-Allow-Origin" , " *" );
177
+ res->setBody (" success" );
178
+ callback (res);
179
+ }
180
+ else
181
+ {
182
+ res->setBody (" No Authorization" );
147
183
}
148
- char *pathvar;
149
- pathvar = getenv (" PWD" );
150
- std::string filename = req_json[" filename" ].asString ();
151
- std::string content = req_json[" content" ].asString ();
152
- std::string result = shell_commons ((" echo '" + content + " '>" + std::string (pathvar) + " /../root/" + filename).c_str ());
153
- auto res = HttpResponse::newHttpResponse ();
154
- res->addHeader (" Access-Control-Allow-Origin" , " *" );
155
- res->setBody (" success" );
156
- callback (res);
157
184
}
158
185
159
186
void imageUpload (const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback)
160
187
{
161
- MultiPartParser fileUpload;
162
- if (fileUpload.parse (req) != 0 || fileUpload.getFiles ().size () != 1 )
163
- {
164
- auto resp = HttpResponse::newHttpResponse ();
165
- resp->setBody (" Must only be one file" );
166
- resp->setStatusCode (k403Forbidden);
167
- callback (resp);
168
- return ;
169
- }
170
- auto &file = fileUpload.getFiles ()[0 ];
171
- auto now = std::chrono::system_clock::now ();
172
- auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch ()).count ();
173
- std::string timestamp = std::to_string (ms) + ' .' + std::string (file.getFileExtension ());
174
188
auto resp = HttpResponse::newHttpResponse ();
175
- resp->addHeader (" Access-Control-Allow-Origin" , " *" );
176
- resp->setBody (timestamp);
177
- file.save ();
178
- shell_commons ((" mv ./uploads/" + file.getFileName () + " ./uploads/" + timestamp).c_str ());
179
-
180
- LOG_INFO << " The uploaded file has been saved to the ./uploads "
181
- " directory" ;
182
- callback (resp);
183
- // auto now = std::chrono::high_resolution_clock::now();
184
- // auto ms = std::chrono::time_point_cast<std::chrono::milliseconds>(now);
185
- // auto timestamp = std::chrono::duration_cast<std::chrono::milliseconds>(ms.time_since_epoch());
189
+ if (jwtVerify (req))
190
+ {
191
+ MultiPartParser fileUpload;
192
+ if (fileUpload.parse (req) != 0 || fileUpload.getFiles ().size () != 1 )
193
+ {
194
+ auto resp = HttpResponse::newHttpResponse ();
195
+ resp->setBody (" Must only be one file" );
196
+ resp->setStatusCode (k403Forbidden);
197
+ callback (resp);
198
+ return ;
199
+ }
200
+ auto &file = fileUpload.getFiles ()[0 ];
201
+ auto now = std::chrono::system_clock::now ();
202
+ auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch ()).count ();
203
+ std::string timestamp = std::to_string (ms) + ' .' + std::string (file.getFileExtension ());
186
204
187
- // std::stringstream ss;
188
- // ss << timestamp.count();
189
- // std::string fileName = ss.str();
190
- // // Save image to /root folder
191
- // auto imagePath = "/root/" + fileName;
192
- // imageFile->second.save(imagePath);
205
+ resp->addHeader (" Access-Control-Allow-Origin" , " *" );
206
+ resp->setBody (timestamp);
207
+ file.save ();
208
+ shell_commons ((" mv ./uploads/" + file.getFileName () + " ./uploads/" + timestamp).c_str ());
193
209
194
- // // Send back filename in response
195
- // Json::Value resp;
196
- // resp["filename"] = fileName;
197
- // callback(HttpResponse::newHttpJsonResponse(resp));
210
+ LOG_INFO << " The uploaded file has been saved to the ./uploads "
211
+ " directory" ;
212
+ callback (resp);
213
+ }
214
+ else
215
+ {
216
+ resp->setBody (" No Authorization" );
217
+ }
198
218
}
219
+
199
220
void getPicture (const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback)
200
221
{
201
222
std::string filename = req->getParameter (" filename" );
202
223
auto resp = HttpResponse::newFileResponse (" ./uploads/" + filename);
203
- resp->addHeader (" Access-Control-Allow-Origin" , " *" );
204
- callback (resp);
224
+
225
+ if (jwtVerify (req))
226
+ {
227
+ resp->addHeader (" Access-Control-Allow-Origin" , " *" );
228
+ callback (resp);
229
+ }
230
+ else
231
+ {
232
+ resp->setBody (" No Authorization" );
233
+ }
205
234
}
235
+
0 commit comments