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>
@@ -33,92 +33,120 @@ std::string shell_commons(const char *cmd)
33
33
34
34
void genTree (const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback)
35
35
{
36
- char *pathvar;
37
- pathvar = getenv (" PWD" );
38
- std::string result = shell_commons ((" cd " + std::string (pathvar) + " /.. " + " &&" + " tree -J root" ).c_str ());
39
36
auto res = HttpResponse::newHttpResponse ();
40
- res->addHeader (" Access-Control-Allow-Origin" , " *" );
41
- res->setBody (result);
42
- callback (res);
37
+ if (jwtVerify (req))
38
+ {
39
+ char *pathvar;
40
+ pathvar = getenv (" PWD" );
41
+ std::string result = shell_commons ((" cd " + std::string (pathvar) + " /.. " + " &&" + " tree -J root" ).c_str ());
42
+ res->addHeader (" Access-Control-Allow-Origin" , " *" );
43
+ res->setBody (result);
44
+ callback (res);
45
+ }
46
+ else {
47
+ res->setBody (" No Authorization" );
48
+ }
43
49
}
50
+
44
51
void catFile (const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback)
45
52
{
46
- char *pathvar;
47
- pathvar = getenv (" PWD" );
48
- std::string path = req->getParameter (" path" );
49
- std::string result = shell_commons ((" cat " + std::string (pathvar) + " /../root/" + path).c_str ());
50
53
auto res = HttpResponse::newHttpResponse ();
51
- res->addHeader (" Access-Control-Allow-Origin" , " *" );
52
- res->setBody (result);
53
- callback (res);
54
+ if (jwtVerify (req))
55
+ {
56
+ char *pathvar;
57
+ pathvar = getenv (" PWD" );
58
+ std::string path = req->getParameter (" path" );
59
+ std::string result = shell_commons ((" cat " + std::string (pathvar) + " /../root/" + path).c_str ());
60
+
61
+ res->addHeader (" Access-Control-Allow-Origin" , " *" );
62
+ res->setBody (result);
63
+
64
+ callback (res);
65
+ }
66
+ else
67
+ {
68
+ res->setBody (" No Authorization" );
69
+ }
54
70
}
71
+
55
72
void saveFile (const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback)
56
73
{
57
- auto body = req->getBody ();
58
- Json::Value req_json;
59
- Json::Reader reader;
60
- std::string bodyStr (body);
61
- if (!reader.parse (bodyStr, req_json))
74
+ auto res = HttpResponse::newHttpResponse ();
75
+ if (jwtVerify (req))
62
76
{
63
- std::cout << " parse failed" << std::endl;
64
- callback (HttpResponse::newHttpResponse ());
65
- return ;
77
+ auto body = req->getBody ();
78
+ Json::Value req_json;
79
+ Json::Reader reader;
80
+ std::string bodyStr (body);
81
+ if (!reader.parse (bodyStr, req_json))
82
+ {
83
+ std::cout << " parse failed" << std::endl;
84
+ callback (HttpResponse::newHttpResponse ());
85
+ return ;
86
+ }
87
+ char *pathvar;
88
+ pathvar = getenv (" PWD" );
89
+ std::string filename = req_json[" filename" ].asString ();
90
+ std::string content = req_json[" content" ].asString ();
91
+ std::string result = shell_commons ((" echo '" + content + " '>" + std::string (pathvar) + " /../root/" + filename).c_str ());
92
+
93
+ sql_unlocked (filename);
94
+
95
+ res->addHeader (" Access-Control-Allow-Origin" , " *" );
96
+ res->setBody (" success" );
97
+ callback (res);
98
+ }
99
+ else
100
+ {
101
+ res->setBody (" No Authorization" );
66
102
}
67
- char *pathvar;
68
- pathvar = getenv (" PWD" );
69
- std::string filename = req_json[" filename" ].asString ();
70
- std::string content = req_json[" content" ].asString ();
71
- std::string result = shell_commons ((" echo '" + content + " '>" + std::string (pathvar) + " /../root/" + filename).c_str ());
72
- auto res = HttpResponse::newHttpResponse ();
73
- res->addHeader (" Access-Control-Allow-Origin" , " *" );
74
- res->setBody (" success" );
75
- callback (res);
76
103
}
77
104
78
105
void imageUpload (const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback)
79
106
{
80
- MultiPartParser fileUpload;
81
- if (fileUpload.parse (req) != 0 || fileUpload.getFiles ().size () != 1 )
82
- {
83
- auto resp = HttpResponse::newHttpResponse ();
84
- resp->setBody (" Must only be one file" );
85
- resp->setStatusCode (k403Forbidden);
86
- callback (resp);
87
- return ;
88
- }
89
- auto &file = fileUpload.getFiles ()[0 ];
90
- auto now = std::chrono::system_clock::now ();
91
- auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch ()).count ();
92
- std::string timestamp = std::to_string (ms) + ' .' + std::string (file.getFileExtension ());
93
107
auto resp = HttpResponse::newHttpResponse ();
94
- resp->addHeader (" Access-Control-Allow-Origin" , " *" );
95
- resp->setBody (timestamp);
96
- file.save ();
97
- shell_commons ((" mv ./uploads/" + file.getFileName () + " ./uploads/" + timestamp).c_str ());
98
-
99
- LOG_INFO << " The uploaded file has been saved to the ./uploads "
100
- " directory" ;
101
- callback (resp);
102
- // auto now = std::chrono::high_resolution_clock::now();
103
- // auto ms = std::chrono::time_point_cast<std::chrono::milliseconds>(now);
104
- // auto timestamp = std::chrono::duration_cast<std::chrono::milliseconds>(ms.time_since_epoch());
108
+ if (jwtVerify (req))
109
+ {
110
+ MultiPartParser fileUpload;
111
+ if (fileUpload.parse (req) != 0 || fileUpload.getFiles ().size () != 1 )
112
+ {
113
+ auto resp = HttpResponse::newHttpResponse ();
114
+ resp->setBody (" Must only be one file" );
115
+ resp->setStatusCode (k403Forbidden);
116
+ callback (resp);
117
+ return ;
118
+ }
119
+ auto &file = fileUpload.getFiles ()[0 ];
120
+ auto now = std::chrono::system_clock::now ();
121
+ auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch ()).count ();
122
+ std::string timestamp = std::to_string (ms) + ' .' + std::string (file.getFileExtension ());
105
123
106
- // std::stringstream ss;
107
- // ss << timestamp.count();
108
- // std::string fileName = ss.str();
109
- // // Save image to /root folder
110
- // auto imagePath = "/root/" + fileName;
111
- // imageFile->second.save(imagePath);
124
+ resp->addHeader (" Access-Control-Allow-Origin" , " *" );
125
+ resp->setBody (timestamp);
126
+ file.save ();
127
+ shell_commons ((" mv ./uploads/" + file.getFileName () + " ./uploads/" + timestamp).c_str ());
112
128
113
- // // Send back filename in response
114
- // Json::Value resp;
115
- // resp["filename"] = fileName;
116
- // callback(HttpResponse::newHttpJsonResponse(resp));
129
+ LOG_INFO << " The uploaded file has been saved to the ./uploads "
130
+ " directory" ;
131
+ callback (resp);
132
+ }
133
+ else
134
+ {
135
+ resp->setBody (" No Authorization" );
136
+ }
117
137
}
138
+
118
139
void getPicture (const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback)
119
140
{
120
141
std::string filename = req->getParameter (" filename" );
121
142
auto resp = HttpResponse::newFileResponse (" ./uploads/" + filename);
122
- resp->addHeader (" Access-Control-Allow-Origin" , " *" );
123
- callback (resp);
143
+ if (jwtVerify (req))
144
+ {
145
+ resp->addHeader (" Access-Control-Allow-Origin" , " *" );
146
+ callback (resp);
147
+ }
148
+ else
149
+ {
150
+ resp->setBody (" No Authorization" );
151
+ }
124
152
}
0 commit comments