Skip to content

Commit da645d0

Browse files
Merge pull request #28 from 0WAQ/main
add sql_unlocked
2 parents a314773 + fba76bc commit da645d0

File tree

6 files changed

+196
-175
lines changed

6 files changed

+196
-175
lines changed

file_controller.cc

Lines changed: 96 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#include "file_controller.h"
2-
2+
#include "jwt_controller.h"
33
#include <json/json.h>
44
#include <stdio.h>
5-
5+
#include "mysql.h"
66
#include <chrono>
77
#include <iostream>
88
#include <stdexcept>
@@ -33,92 +33,120 @@ std::string shell_commons(const char *cmd)
3333

3434
void genTree(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)> &&callback)
3535
{
36-
char *pathvar;
37-
pathvar = getenv("PWD");
38-
std::string result = shell_commons(("cd " + std::string(pathvar) + "/.. " + "&&" + "tree -J root").c_str());
3936
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+
}
4349
}
50+
4451
void catFile(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)> &&callback)
4552
{
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());
5053
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+
}
5470
}
71+
5572
void saveFile(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)> &&callback)
5673
{
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))
6276
{
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");
66102
}
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);
76103
}
77104

78105
void imageUpload(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)> &&callback)
79106
{
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());
93107
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());
105123

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());
112128

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+
}
117137
}
138+
118139
void getPicture(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)> &&callback)
119140
{
120141
std::string filename = req->getParameter("filename");
121142
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+
}
124152
}

msg_controller.cc

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ void chat(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)
2323
std::string sender = jwtDecrypt(req->getHeader("Authorization").substr(7));
2424
std::string content = req_json["content"].asString();
2525
std::string receiver = req_json["receiver"].asString();
26+
2627
sql_addhistory(sender, receiver, content, "0");
28+
2729
std::string msg = req_json["content"].asString();
2830
auto output = writer.write(res_json);
2931
res->setBody(output);
@@ -57,10 +59,12 @@ void friend_operation(const HttpRequestPtr &req, std::function<void(const HttpRe
5759
std::string sender = jwtDecrypt(req->getHeader("Authorization").substr(7));
5860
std::string receiver = req->getParameter("username");
5961
std::string operation = req->getParameter("operation");
62+
6063
if (operation == "add")
6164
sql_addrequest(sender, receiver);
6265
else
6366
sql_delete_operation(sender, receiver);
67+
6468
res->setBody("Success");
6569
} else {
6670
res->setBody("No Authorization");
@@ -71,7 +75,9 @@ void friend_operation(const HttpRequestPtr &req, std::function<void(const HttpRe
7175
void request_processing(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)> &&callback) {
7276
auto res = HttpResponse::newHttpResponse();
7377
res->addHeader("Access-Control-Allow-Origin", "*");
78+
7479
if (jwtVerify(req)) {
80+
7581
std::string receiver = jwtDecrypt(req->getHeader("Authorization").substr(7));
7682
std::string sender = req->getParameter("username");
7783
std::string attitude = req->getParameter("info");
@@ -80,6 +86,7 @@ void request_processing(const HttpRequestPtr &req, std::function<void(const Http
8086
} else {
8187
res->setBody("No Authorization");
8288
}
89+
8390
callback(res);
8491
}
8592
// get chat info
@@ -96,6 +103,7 @@ void info(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)
96103
Json::FastWriter writer;
97104
auto res = HttpResponse::newHttpResponse();
98105
res->addHeader("Access-Control-Allow-Origin", "*");
106+
99107
if (jwtVerify(req)) {
100108
me = jwtDecrypt(req->getHeader("Authorization").substr(7));
101109
if (req_json["person"].asString() == "") {
@@ -107,5 +115,6 @@ void info(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)
107115
} else {
108116
res->setBody("No Authorization");
109117
}
118+
110119
callback(res);
111120
}

0 commit comments

Comments
 (0)