Skip to content

Commit fba76bc

Browse files
committed
bwb add sql_unlocked
1 parent 8c26ffd commit fba76bc

File tree

6 files changed

+83
-34
lines changed

6 files changed

+83
-34
lines changed

file_controller.cc

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#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>
@@ -89,7 +89,9 @@ void saveFile(const HttpRequestPtr &req, std::function<void(const HttpResponsePt
8989
std::string filename = req_json["filename"].asString();
9090
std::string content = req_json["content"].asString();
9191
std::string result = shell_commons(("echo '" + content + "'>" + std::string(pathvar) + "/../root/" + filename).c_str());
92-
92+
93+
sql_unlocked(filename);
94+
9395
res->addHeader("Access-Control-Allow-Origin", "*");
9496
res->setBody("success");
9597
callback(res);

msg_controller.cc

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,10 @@ void request_processing(const HttpRequestPtr &req, std::function<void(const Http
7777
res->addHeader("Access-Control-Allow-Origin", "*");
7878

7979
if (jwtVerify(req)) {
80-
80+
8181
std::string receiver = jwtDecrypt(req->getHeader("Authorization").substr(7));
8282
std::string sender = req->getParameter("username");
8383
std::string attitude = req->getParameter("info");
84-
8584
sql_process_request(sender, receiver, attitude);
8685
res->setBody("Success");
8786
} else {
@@ -106,15 +105,13 @@ void info(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)
106105
res->addHeader("Access-Control-Allow-Origin", "*");
107106

108107
if (jwtVerify(req)) {
109-
110108
me = jwtDecrypt(req->getHeader("Authorization").substr(7));
111109
if (req_json["person"].asString() == "") {
112110
res->setBody(writer.write(get_chat_info(me, "")));
113111
} else {
114112
who_send_me = req_json["person"].asString();
115113
res->setBody(writer.write(get_chat_info(me, who_send_me)));
116114
}
117-
118115
} else {
119116
res->setBody("No Authorization");
120117
}

mysql.cc

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,39 @@
44
#include "jdbc/mysql_driver.h"
55
#include "json/json.h"
66

7+
void sql_unlocked(std::string DeleteName)
8+
{
9+
try
10+
{
11+
std::string filename = DeleteName;
12+
13+
// open MySQL
14+
sql::mysql::MySQL_Driver *driver = sql::mysql::get_mysql_driver_instance();
15+
sql::Connection *con = driver->connect("tcp://8.130.48.157:3306", "root", "abc.123");
16+
con->setSchema("flypen");
17+
18+
sql::Statement *stmt = con->createStatement();
19+
20+
std::string DeleteQuery = "DELETE FROM file WHERE filename = " + DeleteName;
21+
22+
int rowsDelete = stmt->executeUpdate(DeleteQuery);
23+
24+
delete stmt;
25+
delete con;
26+
}
27+
catch (sql::SQLException &e)
28+
{
29+
std::cerr << "SQL Exception: in sql_unlocked() function" << e.what() << std::endl;
30+
}
31+
}
32+
733
// relate to chat
8-
void process(sql::PreparedStatement *readdatament, std::vector<std::string> s, sql::Connection *con)
34+
void process(sql::PreparedStatement *readDatament, std::vector<std::string> s, sql::Connection *con)
935
{
1036
for (int i = 0; i < 2; i++)
1137
{
12-
readdatament->setString(1, s[i]);
13-
sql::ResultSet *resultSet = readdatament->executeQuery();
38+
readDatament->setString(1, s[i]);
39+
sql::ResultSet *resultSet = readDatament->executeQuery();
1440
std::string friendlist;
1541
if (resultSet->next())
1642
{
@@ -40,8 +66,8 @@ void sql_delete_operation(std::string sender, std::string receiver)
4066
s.push_back(receiver);
4167
std::string readdata = "SELECT friends FROM users WHERE username = ?";
4268

43-
sql::PreparedStatement *readdatament = con->prepareStatement(readdata);
44-
process(readdatament, s, con);
69+
sql::PreparedStatement *readDatament = con->prepareStatement(readdata);
70+
process(readDatament, s, con);
4571
}
4672

4773
void sql_process_request(std::string sender, std::string receiver, std::string attitude)
@@ -66,7 +92,7 @@ void sql_process_request(std::string sender, std::string receiver, std::string a
6692
req.erase(pos - 1, sender.length() + 1);
6793
else if (pos == 0)
6894
req.erase(pos, sender.length() + 1);
69-
95+
7096
std::string updateQuery = "UPDATE users SET req = ? WHERE username = ?";
7197
sql::PreparedStatement *updateStatement = con->prepareStatement(updateQuery);
7298

mysql.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include <jdbc/mysql_connection.h>
55
#include <json/json.h>
66

7+
void sql_unlocked(std::string DeleteName);
78
void sql_add(std::string username, std::string passwd, int avatar);
89
bool sql_check(std::string , std::string passwd="@DEFAULT@");
910
void sql_addhistory(std::string,std::string,std::string,std::string);

user_controller.cc

Lines changed: 42 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -6,68 +6,88 @@
66
#include "jwt_controller.h"
77
#include "msg_controller.h"
88
using namespace drogon;
9+
910
typedef std::string (*HandlerFunc)(const Json::Value&);
10-
void Handle(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)> &&callback, HandlerFunc handler){
11+
12+
void Handle(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)> &&callback, HandlerFunc handler)
13+
{
1114
auto body = req->getBody();
12-
Json::Value req_json,res_json;
15+
16+
Json::Value req_json, res_json;
1317
Json::Reader reader;
1418
std::string bodyStr(body);
15-
if (!reader.parse(bodyStr, req_json)) {
19+
20+
if (!reader.parse(bodyStr, req_json))
21+
{
1622
callback(HttpResponse::newHttpResponse());
1723
return;
1824
}
25+
1926
Json::FastWriter writer;
2027
std::string msg = handler(req_json);
28+
2129
res_json["msg"] = msg;
22-
if (msg.find("Success")!= std::string::npos){
30+
if (msg.find("Success")!= std::string::npos)
31+
{
2332
res_json["token"] = jwtGen(req_json);
2433
res_json["username"] = req_json["username"].asString();
2534
}
35+
2636
auto output = writer.write(res_json);
2737
auto res = HttpResponse::newHttpResponse();
38+
2839
res->addHeader("Access-Control-Allow-Origin", "*");
2940
res->setBody(output);
41+
3042
callback(res);
3143
}
32-
std::string sha256(const std::string str){
44+
45+
std::string sha256(const std::string str)
46+
{
3347
unsigned char hash[SHA256_DIGEST_LENGTH];
3448

3549
SHA256_CTX sha256;
50+
3651
SHA256_Init(&sha256);
3752
SHA256_Update(&sha256, str.c_str(), str.size());
3853
SHA256_Final(hash, &sha256);
3954

4055
std::stringstream ss;
4156

42-
for(int i = 0; i < SHA256_DIGEST_LENGTH; i++){
43-
ss << std::hex << std::setw(2) << std::setfill('0') << static_cast<int>( hash[i] );
44-
}
57+
for(int i = 0; i < SHA256_DIGEST_LENGTH; i++)
58+
ss << std::hex << std::setw(2) << std::setfill('0') << static_cast<int>(hash[i]);
59+
4560
return ss.str();
4661
}
47-
std::string registerUser(const Json::Value& req_json) {
48-
// std::cout<<"Receive Username : "<<req_json["username"].asString()<<std::endl;
49-
// std::cout<<"Receive Passwd: "<<req_json["password"].asString()<<std::endl;
50-
if (sql_check(req_json["username"].asString())){
62+
63+
std::string registerUser(const Json::Value& req_json)
64+
{
65+
if (sql_check(req_json["username"].asString()))
66+
{
5167
sql_add(req_json["username"].asString(), sha256(req_json["password"].asString()), req_json["avatar"].asInt());
5268
return "Sign up Success";
53-
}else
54-
return "User already exist";
69+
}
70+
return "User already exist";
5571
}
56-
std::string loginUser(const Json::Value& req_json) {
57-
if (sql_check(req_json["username"].asString(), sha256(req_json["password"].asString()))){
72+
73+
std::string loginUser(const Json::Value& req_json)
74+
{
75+
if (sql_check(req_json["username"].asString(), sha256(req_json["password"].asString())))
5876
return "Login Success";
59-
}else
60-
return "Login Failed";
77+
return "Login Failed";
6178
}
62-
void avatar(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)> &&callback) {
79+
80+
void avatar(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)> &&callback)
81+
{
6382
auto res = HttpResponse::newHttpResponse();
6483
res->addHeader("Access-Control-Allow-Origin", "*");
65-
if (jwtVerify(req)) {
84+
85+
if (jwtVerify(req))
86+
{
6687
std::string receiver = jwtDecrypt(req->getHeader("Authorization").substr(7));
6788
set_avatar(receiver, stoi(req->getParameter("avatar")));
6889
res->setBody("Success");
69-
} else {
90+
} else
7091
res->setBody("No Authorization");
71-
}
7292
callback(res);
7393
}

user_controller.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
#ifndef _USER_CONTROLLER_H_
22
#define _USER_CONTROLLER_H_
3+
34
#include <drogon/drogon.h>
45
using namespace drogon;
6+
57
typedef std::string (*HandlerFunc)(const Json::Value&);
8+
69
void Handle(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)> &&callback, HandlerFunc handler);
710
std::string registerUser(const Json::Value& req_json);
811
std::string loginUser(const Json::Value& req_json);

0 commit comments

Comments
 (0)