|
@@ -14,9 +14,11 @@ CmdMan::CmdMan(FileMan &fm, void (*dpf)(string)) : fileman(fm) {
|
|
|
wbuilder.settings_["indentation"] = "";
|
|
|
reader = rbuilder.newCharReader();
|
|
|
|
|
|
+
|
|
|
+ doversion = false;
|
|
|
+ loginpossible = false;
|
|
|
dologin = false;
|
|
|
dosignup = false;
|
|
|
- doversion = false;
|
|
|
|
|
|
/* initialize execute command map */
|
|
|
execmap["help"] = &CmdMan::cmdHelp;
|
|
@@ -87,7 +89,7 @@ CmdMan::CmdRet CmdMan::cmdDisconnect(vector<string> args) {
|
|
|
DEBUGPRINT(string(__PRETTY_FUNCTION__) + " begin");
|
|
|
Json::Value root;
|
|
|
retval.type = send;
|
|
|
- if(dologin) {
|
|
|
+ if(loginpossible) {
|
|
|
// not logged in, send appropriate login message instead of normal close
|
|
|
root["login"] = false;
|
|
|
root["user"] = "";
|
|
@@ -230,7 +232,7 @@ CmdMan::CmdRet CmdMan::execute(string cmd, vector<string> args) {
|
|
|
retval.msg = root;
|
|
|
return retval;
|
|
|
}
|
|
|
- else if(dologin) {
|
|
|
+ else if(loginpossible || dologin || dosignup) {
|
|
|
DEBUGPRINT("execute does login");
|
|
|
DEBUGPRINT(string("comparison is ") + std::to_string(cmd.compare("login") && cmd.compare("signup") && cmd.compare("disconnect") && cmd.compare("help")));
|
|
|
if(cmd.compare("login") && cmd.compare("signup") && cmd.compare("disconnect") && cmd.compare("help")) {
|
|
@@ -249,15 +251,23 @@ CmdMan::CmdRet CmdMan::cmdLogin(vector<string> args) {
|
|
|
CmdRet retval;
|
|
|
DEBUGPRINT(string(__PRETTY_FUNCTION__) + " begin");
|
|
|
Json::Value root;
|
|
|
- root["user"] = args[0];
|
|
|
- root["pass"] = args[1];
|
|
|
- root["login"] = true;
|
|
|
- root["cancel"] = false;
|
|
|
- retval.type = send;
|
|
|
+
|
|
|
+ if(loginpossible) {
|
|
|
+ dologin = true;
|
|
|
+ loginpossible = false;
|
|
|
+ root["user"] = args[0];
|
|
|
+ root["pass"] = args[1];
|
|
|
+ root["login"] = true;
|
|
|
+ root["cancel"] = false;
|
|
|
+ retval.type = send;
|
|
|
+ } else {
|
|
|
+ root["command"] = "login";
|
|
|
+ root["error"] = "Login not possible, because you already requested a login or you are logged in";
|
|
|
+ root["accept"] = false;
|
|
|
+ retval.type = error;
|
|
|
+ }
|
|
|
+
|
|
|
retval.msg = root;
|
|
|
-
|
|
|
- // dologin already set by handleVersion, so no need here
|
|
|
-
|
|
|
return retval;
|
|
|
}
|
|
|
|
|
@@ -265,17 +275,23 @@ CmdMan::CmdRet CmdMan::cmdSignup(vector<string> args) {
|
|
|
CmdRet retval;
|
|
|
DEBUGPRINT(string(__PRETTY_FUNCTION__) + " begin");
|
|
|
Json::Value root;
|
|
|
- root["user"] = args[0];
|
|
|
- root["pass"] = args[1];
|
|
|
- root["login"] = false;
|
|
|
- root["cancel"] = false;
|
|
|
- retval.type = send;
|
|
|
+
|
|
|
+ if(loginpossible) {
|
|
|
+ dosignup = true;
|
|
|
+ loginpossible = false;
|
|
|
+ root["user"] = args[0];
|
|
|
+ root["pass"] = args[1];
|
|
|
+ root["login"] = true;
|
|
|
+ root["cancel"] = false;
|
|
|
+ retval.type = send;
|
|
|
+ } else {
|
|
|
+ root["command"] = "signup";
|
|
|
+ root["error"] = "Signup not possible, because you already requested a login or you are logged in";
|
|
|
+ root["accept"] = false;
|
|
|
+ retval.type = error;
|
|
|
+ }
|
|
|
+
|
|
|
retval.msg = root;
|
|
|
-
|
|
|
- // set dosignin to differentiate from only logging in
|
|
|
- // note: dologin was also set (by handleVersion)
|
|
|
- dosignup = true;
|
|
|
-
|
|
|
return retval;
|
|
|
}
|
|
|
|
|
@@ -569,7 +585,7 @@ CmdMan::CmdRet CmdMan::handleVersion(Json::Value root) {
|
|
|
retval.type = print | seton;
|
|
|
output["accept"] = true;
|
|
|
doversion = false;
|
|
|
- dologin = true;
|
|
|
+ loginpossible = true;
|
|
|
}
|
|
|
retval.msg = output;
|
|
|
|
|
@@ -587,6 +603,8 @@ CmdMan::CmdRet CmdMan::handleLogin(Json::Value root) {
|
|
|
retval.type = error;
|
|
|
output["error"] = root["error"].asString();
|
|
|
output["accept"] = false;
|
|
|
+ loginpossible = true;
|
|
|
+ dologin = false;
|
|
|
} else {
|
|
|
retval.type = print | seton;
|
|
|
output["error"] = "";
|
|
@@ -609,11 +627,12 @@ CmdMan::CmdRet CmdMan::handleSignup(Json::Value root) {
|
|
|
retval.type = error;
|
|
|
output["error"] = root["error"].asString();
|
|
|
output["accept"] = false;
|
|
|
+ loginpossible = true;
|
|
|
+ dosignup = false;
|
|
|
} else {
|
|
|
retval.type = print | seton;
|
|
|
output["error"] = "";
|
|
|
output["accept"] = true;
|
|
|
- dologin = false;
|
|
|
dosignup = false;
|
|
|
}
|
|
|
retval.msg = output;
|