7
7
#include < iostream>
8
8
#include < stdexcept>
9
9
#include < string>
10
- std::string return_status (std::string result, std::string command)
10
+ std::string return_status (std::string result, std::string command,Json::Value &res_json )
11
11
{
12
- if (result != " " )
13
- result = " success" ;
12
+ if (result != " " ){
13
+ result = command + " success" ;
14
+ res_json[" code" ] = 200 ;
15
+ }
14
16
else
15
- result = " error in :" + command;
17
+ {
18
+ result = " Error in :" + command;
19
+ res_json[" code" ] = 400 ;
20
+ }
21
+
16
22
return result;
17
23
}
18
24
void add_lock (const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback)
@@ -58,73 +64,90 @@ std::string shell_commands(const char *cmd)
58
64
59
65
void commandsCtrl (const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback)
60
66
{
61
-
62
- enum Command
63
- {
64
- tree,
65
- cp,
66
- mv,
67
- rm,
68
- mkdir,
69
- touch,
70
- cat
71
- } command;
72
- char *pathvar;
73
- pathvar = getenv (" PWD" );
74
-
75
- command = static_cast <Command>(stoi (req->getJsonObject ()->get (" command" , " " ).asString ()));
76
- std::string params1 = req->getJsonObject ()->get (" params" , " " )[0 ].asString ();
77
- std::string params2 = req->getJsonObject ()->get (" params" , " " )[1 ].asString ();
67
+ auto res = HttpResponse::newHttpResponse ();
78
68
std::string result;
79
- switch (command)
80
- {
81
- case tree:
82
- result = shell_commands ((" cd " + std::string (pathvar) + " /.. " + " &&" + " tree -J root" ).c_str ());
83
- break ;
84
- case cp:
85
- result = shell_commands ((" cp -v " + std::string (pathvar) + " /../root/" + params1 + " " + std::string (pathvar) + " /../root/" + params2).c_str ());
86
- result = return_status (result, " cp" );
69
+ Json::Value res_json;
70
+ Json::FastWriter writer;
71
+ res->addHeader (" Access-Control-Allow-Origin" , " *" );
72
+ if (jwtVerify (req)){
73
+ enum Command
74
+ {
75
+ tree,
76
+ cp,
77
+ mv,
78
+ rm,
79
+ mkdir,
80
+ touch,
81
+ cat
82
+ } command;
83
+ char *pathvar;
84
+ pathvar = getenv (" PWD" );
87
85
88
- break ;
89
- case mv:
90
- result = shell_commands ((" mv -v " + std::string (pathvar) + " /../root/" + params1 + " " + std::string (pathvar) + " /../root/" + params2).c_str ());
91
- result = return_status (result, " mv" );
92
- break ;
93
- case rm:
94
- if (params1.find (" .." ) != std::string::npos)
86
+ command = static_cast <Command>(stoi (req->getJsonObject ()->get (" command" , " " ).asString ()));
87
+ std::string params1 = req->getJsonObject ()->get (" params" , " " )[0 ].asString ();
88
+ std::string params2 = req->getJsonObject ()->get (" params" , " " )[1 ].asString ();
89
+ switch (command)
95
90
{
96
- result = " error:result in wrong directory" ;
91
+ case tree:
92
+ result = shell_commands ((" cd " + std::string (pathvar) + " /.. " + " &&" + " tree -J root" ).c_str ());
97
93
break ;
98
- }
99
- result = shell_commands ((" rm -rf -v " + std::string (pathvar) + " /../root/" + params1).c_str ());
100
- result = return_status (result, " rm" );
101
- break ;
102
- case mkdir:
103
- result = shell_commands ((" mkdir -v " + std::string (pathvar) + " /../root/" + params1).c_str ());
104
- result = return_status (result, " mkdir" );
105
- break ;
106
- case touch:
107
- if (" " == shell_commands ((" ls -l " + std::string (pathvar) + " /../root/" + params1 + " grep ^- " ).c_str ()))
108
- {
109
- result = shell_commands ((" touch " + std::string (pathvar) + " /../root/" + params1).c_str ());
110
- result = " success" ;
111
- }
94
+ case cp:
95
+ result = shell_commands ((" cp -v " + std::string (pathvar) + " /../root/" + params1 + " " + std::string (pathvar) + " /../root/" + params2).c_str ());
96
+ result = return_status (result, " cp" ,res_json);
112
97
113
- else
114
- {
115
- result = " error:file already exists" ;
98
+ break ;
99
+ case mv:
100
+ result = shell_commands ((" mv -v " + std::string (pathvar) + " /../root/" + params1 + " " + std::string (pathvar) + " /../root/" + params2).c_str ());
101
+ result = return_status (result, " mv" ,res_json);
102
+ break ;
103
+ case rm:
104
+ if (params1.find (" .." ) != std::string::npos)
105
+ {
106
+ result = " error:result in wrong directory" ;
107
+ res_json[" code" ] = 400 ;
108
+ break ;
109
+ }
110
+ result = shell_commands ((" rm -rf -v " + std::string (pathvar) + " /../root/" + params1).c_str ());
111
+ result = return_status (result, " rm" ,res_json);
112
+ break ;
113
+ case mkdir:
114
+ result = shell_commands ((" mkdir -v " + std::string (pathvar) + " /../root/" + params1).c_str ());
115
+ result = return_status (result, " mkdir" ,res_json);
116
+ break ;
117
+ case touch:
118
+ if (" " == shell_commands ((" ls -l " + std::string (pathvar) + " /../root/" + params1 + " grep ^- " ).c_str ()))
119
+ {
120
+ result = shell_commands ((" touch " + std::string (pathvar) + " /../root/" + params1).c_str ());
121
+ result = " success" ;
122
+ res_json[" code" ] = 200 ;
123
+ }
124
+
125
+ else
126
+ {
127
+ result = " error:file already exists" ;
128
+ res_json[" code" ] = 400 ;
129
+ }
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 ;
116
139
}
117
- break ;
118
- case cat:
119
- result = shell_commands ((" cat " + std::string (pathvar) + " /../root/" + params1).c_str ());
120
- break ;
121
- default :
122
- result = " error:command not found" ;
123
- break ;
124
140
}
125
- auto res = HttpResponse::newHttpResponse ();
141
+ else
142
+ {
143
+ result = " No Authorization" ;
144
+ res_json[" code" ] = 401 ;
145
+ }
146
+ res_json[" message" ] = result;
147
+
126
148
res->addHeader (" Access-Control-Allow-Origin" , " *" );
127
- res->setBody (result);
149
+ auto output = writer.write (res_json);
150
+ res->setBody (output);
128
151
callback (res);
129
152
}
130
153
// void genTree(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)> &&callback)
@@ -152,6 +175,7 @@ void commandsCtrl(const HttpRequestPtr &req, std::function<void(const HttpRespon
152
175
void saveFile (const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback)
153
176
{
154
177
auto res = HttpResponse::newHttpResponse ();
178
+ res->addHeader (" Access-Control-Allow-Origin" , " *" );
155
179
if (jwtVerify (req))
156
180
{
157
181
auto body = req->getBody ();
@@ -172,7 +196,7 @@ void saveFile(const HttpRequestPtr &req, std::function<void(const HttpResponsePt
172
196
173
197
sql_unlocked (filename);
174
198
175
- res-> addHeader ( " Access-Control-Allow-Origin " , " * " );
199
+
176
200
res->setBody (" success" );
177
201
callback (res);
178
202
}
0 commit comments