Skip to content

Commit 9b28311

Browse files
committed
Merge remote-tracking branch 'lj/main'
2 parents bee46a2 + 6d689a8 commit 9b28311

File tree

8 files changed

+112
-80
lines changed

8 files changed

+112
-80
lines changed

README.zh_Hans.md

Lines changed: 40 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -24,35 +24,47 @@
2424
- 使用 MySQL Connector/C++ 8.1.0 连接数据库
2525
### 入门
2626

27-
#### 安装
27+
### 安装(推荐)
28+
```bash
29+
sudo apt install git gcc g++ cmake libjsoncpp-dev uuid-dev zlib1g-dev openssl libssl-dev
30+
git clone https://github.com/stepbystepcode/flypen.git --recursive
31+
cd flypen
32+
./run.sh
33+
```
34+
35+
### 安装(常规)
36+
<details>
37+
<summary>过时的</summary>
38+
<br><br>
39+
<pre>
40+
git clone https://github.com/stepbystepcode/flypen.git
41+
cd flypen
42+
git submodule update --init
43+
cd drogon
44+
git submodule update --init
45+
sudo apt install git gcc g++ cmake libjsoncpp-dev uuid-dev zlib1g-dev openssl libssl-dev
46+
mkdir build
47+
cd build
48+
cmake ..
49+
make -j 8
50+
sudo make install
51+
cd ../..
52+
cd jwt-cpp
53+
mkdir build
54+
cd build
55+
cmake ..
56+
make -j 8
57+
sudo make install
58+
cd ../..
59+
wget https://dev.mysql.com/get/Downloads/Connector-C++/mysql-connector-c++-8.1.0-linux-glibc2.28-x86-64bit.tar.gz
60+
tar zxvf mysql-connector-c++-8.1.0-linux-glibc2.28-x86-64bit.tar.gz
61+
mv mysql-connector-c++-8.1.0-linux-glibc2.28-x86-64bit mysql-connector
62+
rm mysql-connector-c++-8.1.0-linux-glibc2.28-x86-64bit.tar.gz
63+
mkdir build
64+
./run.sh
65+
</pre>
66+
</details>
2867

29-
```
30-
git clone https://github.com/stepbystepcode/flypen.git
31-
cd flypen
32-
git submodule update --init
33-
cd drogon
34-
git submodule update --init
35-
sudo apt install git gcc g++ cmake libjsoncpp-dev uuid-dev zlib1g-dev openssl libssl-dev
36-
mkdir build
37-
cd build
38-
cmake .
39-
make -j 8
40-
sudo make install
41-
cd ./...
42-
cd jwt-cpp
43-
mkdir build
44-
cd build
45-
cmake .
46-
make -j 8
47-
sudo make install
48-
cd ../..
49-
wget https://dev.mysql.com/get/Downloads/Connector-C++/mysql-connector-c++-8.1.0-linux-glibc2.28-x86-64bit.tar.gz
50-
tar zxvf mysql-connector-c++-8.1.0-linux-glibc2.28-x86-64bit.tar.gz
51-
mv mysql-connector-c++-8.1.0-linux-glibc2.28-x86-64bit mysql-connector
52-
rm mysql-connector-c++-8.1.0-linux-glibc2.28-x86-64bit.tar.gz
53-
mkdir build
54-
./run.sh
55-
```
5668
## API 文档
5769
请参阅 [API.md](API.md) 了解有关身份验证、用户管理、文档等 API 的详细信息。
5870

file_controller.cc

Lines changed: 53 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -85,57 +85,65 @@ void commandsCtrl(const HttpRequestPtr &req, std::function<void(const HttpRespon
8585
command = static_cast<Command>(stoi(req->getJsonObject()->get("command", "").asString()));
8686
std::string params1 = req->getJsonObject()->get("params", "")[0].asString();
8787
std::string params2 = req->getJsonObject()->get("params", "")[1].asString();
88-
switch (command)
88+
if ((params1.find("..") != std::string::npos) || (params2.find("..") != std::string::npos))
8989
{
90-
case tree:
91-
result = shell_commands(("cd " + std::string(pathvar) + "/.. " + "&&" + "tree -J root").c_str());
92-
break;
93-
case cp:
94-
result = shell_commands(("cp -v " + std::string(pathvar) + "/../root/" + params1 + " " + std::string(pathvar) + "/../root/" + params2).c_str());
95-
result = return_status(result, "cp",res_json);
96-
97-
break;
98-
case mv:
99-
result = shell_commands(("mv -v " + std::string(pathvar) + "/../root/" + params1 + " " + std::string(pathvar) + "/../root/" + params2).c_str());
100-
result = return_status(result, "mv",res_json);
101-
break;
102-
case rm:
103-
if (params1.find("..") != std::string::npos)
90+
result = "error:result in wrong directory";
91+
res_json["code"] = 400;
92+
}
93+
else
94+
{
95+
switch (command)
10496
{
105-
result = "error:result in wrong directory";
106-
res_json["code"] = 400;
97+
case tree:
98+
result = shell_commands(("cd " + std::string(pathvar) + "/.. " + "&&" + "tree -J root").c_str());
10799
break;
108-
}
109-
result = shell_commands(("rm -rf -v " + std::string(pathvar) + "/../root/" + params1).c_str());
110-
result = return_status(result, "rm",res_json);
111-
break;
112-
case mkdir:
113-
result = shell_commands(("mkdir -v " + std::string(pathvar) + "/../root/" + params1).c_str());
114-
result = return_status(result, "mkdir",res_json);
115-
break;
116-
case touch:
117-
if (shell_commands(("ls -l " + std::string(pathvar) + "/../root/" + params1 + " grep ^- ").c_str()).empty())
118-
{
119-
shell_commands(("touch " + std::string(pathvar) + "/../root/" + params1).c_str());
120-
//result = shell_commands(("touch " + std::string(pathvar) + "/../root/" + params1).c_str());
121-
result = "success";
122-
res_json["code"] = 200;
123-
}
100+
case cp:
101+
result = shell_commands(("cp -v " + std::string(pathvar) + "/../root/" + params1 + " " + std::string(pathvar) + "/../root/" + params2).c_str());
102+
result = return_status(result, "cp",res_json);
124103

125-
else
126-
{
127-
result = "error:file already exists";
104+
break;
105+
case mv:
106+
result = shell_commands(("mv -v " + std::string(pathvar) + "/../root/" + params1 + " " + std::string(pathvar) + "/../root/" + params2).c_str());
107+
result = return_status(result, "mv",res_json);
108+
break;
109+
case rm:
110+
if (params1.find("..") != std::string::npos)
111+
{
112+
result = "error:result in wrong directory";
113+
res_json["code"] = 400;
114+
break;
115+
}
116+
result = shell_commands(("rm -rf -v " + std::string(pathvar) + "/../root/" + params1).c_str());
117+
result = return_status(result, "rm",res_json);
118+
break;
119+
case mkdir:
120+
result = shell_commands(("mkdir -v " + std::string(pathvar) + "/../root/" + params1).c_str());
121+
result = return_status(result, "mkdir",res_json);
122+
break;
123+
case touch:
124+
if (shell_commands(("ls -l " + std::string(pathvar) + "/../root/" + params1 + " grep ^- ").c_str()).empty())
125+
{
126+
shell_commands(("touch " + std::string(pathvar) + "/../root/" + params1).c_str());
127+
//result = shell_commands(("touch " + std::string(pathvar) + "/../root/" + params1).c_str());
128+
result = "success";
129+
res_json["code"] = 200;
130+
}
131+
132+
else
133+
{
134+
result = "error:file already exists";
135+
res_json["code"] = 400;
136+
}
137+
break;
138+
case cat:
139+
result = shell_commands(("cat " + std::string(pathvar) + "/../root/" + params1).c_str());
140+
res_json["code"] = 200;
141+
break;
142+
default:
143+
result = "error:command not found";
128144
res_json["code"] = 400;
145+
break;
129146
}
130-
break;
131-
case cat:
132-
result = shell_commands(("cat " + std::string(pathvar) + "/../root/" + params1).c_str());
133-
res_json["code"] = 200;
134-
break;
135-
default:
136-
result = "error:command not found";
137-
res_json["code"] = 400;
138-
break;
139147
}
140148
}
141149
else

jwt_controller.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ std::string jwtDecrypt(const std::string &token)
3434
}
3535
catch (const std::exception &e)
3636
{
37-
std::cout << "Failed to decrypt JWT: " + std::string(e.what()) << std::endl;
38-
throw std::runtime_error("Failed to decrypt JWT");
37+
// std::cout << "Failed to decrypt JWT: " + std::string(e.what()) << std::endl;
38+
// throw std::runtime_error("Failed to decrypt JWT");
3939
}
4040
}
4141

msg_controller.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ void chat(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)
3232
std::string msg = req_json["content"].asString();
3333
res_json["message"] = "message Send Success";
3434
res_json["code"] = 200;
35+
std::cout<<"INFO: "<<sender<<" send "<<msg<<" to "<<receiver<<std::endl;
3536
}
3637
else
3738
{

mysql.cc

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -263,12 +263,13 @@ void sql_add(const std::string& username, const std::string& passwd, int avatar)
263263
con->setSchema("flypen");
264264

265265
sql::Statement *tool = con->createStatement();
266-
std::string classMysql = "INSERT INTO users(username, password, avatar, createtime) VALUES (?, ?, ?, NOW())";
266+
std::string classMysql = "INSERT INTO users(username, password, avatar ,friends, createtime) VALUES (?, ?, ?,? , NOW())";
267267
sql::PreparedStatement *ptool = con->prepareStatement(classMysql);
268268

269269
ptool->setString(1, username);
270270
ptool->setString(2, passwd);
271271
ptool->setInt(3, avatar);
272+
ptool->setString(4, "FlypenTeam");
272273
ptool->executeUpdate();
273274

274275
delete ptool;
@@ -459,7 +460,7 @@ Json::Value sql_find_my_msg(const std::string& me, const std::string& connect_ty
459460
updateStmt->executeUpdate();
460461
delete updateStmt;
461462
}
462-
else
463+
if(res->getString("receiver")==me)
463464
{
464465
sql::PreparedStatement *updateStmt = con->prepareStatement(sql0To1_rec);
465466
updateStmt->setInt(1, id);
@@ -518,4 +519,5 @@ void set_avatar(const std::string& person, int avatar)
518519
updateStatement->setInt(1, avatar);
519520
updateStatement->setString(2, person);
520521
updateStatement->execute();
522+
delete con;
521523
}

mysql.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ void sql_unlocked(const std::string& DeleteName);
88
void sql_add(const std::string& username, const std::string& passwd, int avatar);
99
bool sql_check(const std::string&, const std::string& passwd = "@DEFAULT@");
1010
void sql_addhistory(const std::string&, const std::string&, const std::string&, const std::string&);
11-
void sql_addconnect(std::string connectptr);
12-
1311
void sql_addrequest(const std::string& send, const std::string& receiver);
1412
void sql_process_request(const std::string&, const std::string&, const std::string&);
1513
Json::Value sql_find_my_msg(const std::string&, const std::string&);

user_controller.cc

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,13 @@
77
using namespace drogon;
88

99
typedef void (*HandlerFunc)(const Json::Value &, std::string *, int *);
10+
void userInit(std::string username)
11+
{
12+
std::string sender="FlypenTeam";
13+
std::string message="Welcome to flypen! We are glad to see you here!";
14+
sql_addhistory( sender, username, message, "0");
15+
return ;
16+
}
1017

1118
void Handle(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)> &&callback, HandlerFunc handler)
1219
{
@@ -70,7 +77,9 @@ void registerUser(const Json::Value &req_json, std::string *msg, int *code)
7077
if (sql_check(req_json["username"].asString()))
7178
{
7279
sql_add(req_json["username"].asString(), sha256(req_json["password"].asString()), req_json["avatar"].asInt());
80+
7381
*msg = "Sign up Success";
82+
userInit(req_json["username"].asString());
7483
*code = 200;
7584
}
7685
else
@@ -86,6 +95,7 @@ void loginUser(const Json::Value &req_json, std::string *msg, int *code)
8695
{
8796
*msg = "Login Success";
8897
*code = 200;
98+
std::cout<<"INFO: "<<req_json["username"].asString()<<" login"<<std::endl;
8999
}
90100
else
91101
{
@@ -107,4 +117,4 @@ void avatar(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr
107117
res->setBody("Success");
108118

109119
callback(res);
110-
}
120+
}

user_controller.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@ void Handle(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr
1010
void registerUser(const Json::Value &req_json, std::string *msg, int *code);
1111
void loginUser(const Json::Value &req_json, std::string *msg, int *code);
1212
void avatar(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)> &&callback);
13+
void userInit(std::string username);
1314
#endif

0 commit comments

Comments
 (0)