some cleanup
This commit is contained in:
parent
ad9ce0d2d0
commit
f66d895326
@ -113,10 +113,9 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
bool isLoggedIn = false;
|
bool isLoggedIn = false;
|
||||||
std::string loggedInUsername;
|
std::string loggedInUsername;
|
||||||
std::string loggedInPassword;
|
|
||||||
|
|
||||||
do {
|
do {
|
||||||
printf("Please specify a command (LOGIN, SEND, LIST, READ, DEL, QUIT): ");
|
printf("Please specify a command (%s): ", isLoggedIn ? "SEND, LIST, READ, DEL, QUIT" : "LOGIN, QUIT");
|
||||||
if (fgets(buffer, BUF - 1, stdin) != NULL) {
|
if (fgets(buffer, BUF - 1, stdin) != NULL) {
|
||||||
size = strlen(buffer);
|
size = strlen(buffer);
|
||||||
if (buffer[size - 2] == '\r' && buffer[size - 1] == '\n')
|
if (buffer[size - 2] == '\r' && buffer[size - 1] == '\n')
|
||||||
@ -138,7 +137,8 @@ int main(int argc, char **argv)
|
|||||||
else if (strcmp(buffer, "DEL") == 0) cmd = DEL;
|
else if (strcmp(buffer, "DEL") == 0) cmd = DEL;
|
||||||
else if (strcmp(buffer, "QUIT") == 0) break;
|
else if (strcmp(buffer, "QUIT") == 0) break;
|
||||||
|
|
||||||
char username[BUF], msgNum[10];
|
char msgNum[10];
|
||||||
|
std::string username, password;
|
||||||
|
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
case LOGIN:
|
case LOGIN:
|
||||||
@ -148,14 +148,13 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
printf("LDAP Username: ");
|
printf("LDAP Username: ");
|
||||||
fgets(buffer, BUF - 1, stdin);
|
fgets(buffer, BUF - 1, stdin);
|
||||||
loggedInUsername = buffer;
|
username = buffer;
|
||||||
loggedInUsername.pop_back();
|
username.pop_back();
|
||||||
|
|
||||||
printf("Password: ");
|
printf("Password: ");
|
||||||
loggedInPassword = getpass();
|
password = getpass();
|
||||||
|
|
||||||
snprintf(buffer, sizeof(buffer), "LOGIN\n%s\n%s\n", loggedInUsername.c_str(), loggedInPassword.c_str());
|
snprintf(buffer, sizeof(buffer), "LOGIN\n%s\n%s\n", username.c_str(), password.c_str());
|
||||||
isLoggedIn = true;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SEND:
|
case SEND:
|
||||||
@ -177,14 +176,15 @@ int main(int argc, char **argv)
|
|||||||
break;
|
break;
|
||||||
strcat(message, line);
|
strcat(message, line);
|
||||||
}
|
}
|
||||||
snprintf(buffer, sizeof(buffer), "SEND\n%s\n%s\n%s\n%s.\n", loggedInUsername.c_str(), receiver, subject, message);
|
snprintf(buffer, sizeof(buffer), "SEND\n%s%s%s.\n", receiver, subject, message);
|
||||||
break;
|
break;
|
||||||
case LIST:
|
case LIST:
|
||||||
if (!isLoggedIn) {
|
if (!isLoggedIn) {
|
||||||
printf("Please login first.\n");
|
printf("Please login first.\n");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
snprintf(buffer, sizeof(buffer), "LIST\n%s", loggedInUsername.c_str());
|
snprintf(buffer, sizeof(buffer), "LIST\n");
|
||||||
|
printf("%s", buffer);
|
||||||
break;
|
break;
|
||||||
case READ:
|
case READ:
|
||||||
if (!isLoggedIn) {
|
if (!isLoggedIn) {
|
||||||
@ -193,7 +193,7 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
printf("Message Number: ");
|
printf("Message Number: ");
|
||||||
fgets(msgNum, 9, stdin);
|
fgets(msgNum, 9, stdin);
|
||||||
snprintf(buffer, sizeof(buffer), "READ\n%s\n%s", loggedInUsername.c_str(), msgNum);
|
snprintf(buffer, sizeof(buffer), "READ\n%s", msgNum);
|
||||||
break;
|
break;
|
||||||
case DEL:
|
case DEL:
|
||||||
if (!isLoggedIn) {
|
if (!isLoggedIn) {
|
||||||
@ -202,7 +202,7 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
printf("Message Number: ");
|
printf("Message Number: ");
|
||||||
fgets(msgNum, 9, stdin);
|
fgets(msgNum, 9, stdin);
|
||||||
snprintf(buffer, sizeof(buffer), "DEL\n%s\n%s", loggedInUsername.c_str(), msgNum);
|
snprintf(buffer, sizeof(buffer), "DEL\n%s", msgNum);
|
||||||
break;
|
break;
|
||||||
case QUIT:
|
case QUIT:
|
||||||
// should never be reached;
|
// should never be reached;
|
||||||
@ -258,6 +258,12 @@ int main(int argc, char **argv)
|
|||||||
{
|
{
|
||||||
buffer[size] = '\0';
|
buffer[size] = '\0';
|
||||||
printf("<< %s\n", buffer); // ignore error
|
printf("<< %s\n", buffer); // ignore error
|
||||||
|
|
||||||
|
if (cmd == LOGIN && strcmp("OK\n", buffer) == 0) {
|
||||||
|
loggedInUsername = username;
|
||||||
|
isLoggedIn = true;
|
||||||
|
}
|
||||||
|
|
||||||
/*if (strcmp("OK", buffer) != 0) // needs proper verification, since responses vary between commands
|
/*if (strcmp("OK", buffer) != 0) // needs proper verification, since responses vary between commands
|
||||||
{
|
{
|
||||||
fprintf(stderr, "<< Server error occured, abort\n");
|
fprintf(stderr, "<< Server error occured, abort\n");
|
||||||
|
|||||||
@ -225,6 +225,8 @@ void *clientCommunication(void *data)
|
|||||||
|
|
||||||
std::string incomplete_message = "";
|
std::string incomplete_message = "";
|
||||||
|
|
||||||
|
std::string loggedInUsername;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
std::string response;
|
std::string response;
|
||||||
|
|
||||||
@ -271,8 +273,6 @@ void *clientCommunication(void *data)
|
|||||||
else if (iequals(lines.at(0), "QUIT")) break;
|
else if (iequals(lines.at(0), "QUIT")) break;
|
||||||
else continue; // TODO: error message
|
else continue; // TODO: error message
|
||||||
|
|
||||||
std::string loggedInUsername;
|
|
||||||
|
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
case LOGIN:
|
case LOGIN:
|
||||||
response = cmdLOGIN(lines, loggedInUsername);
|
response = cmdLOGIN(lines, loggedInUsername);
|
||||||
@ -463,12 +463,13 @@ std::string cmdSEND(std::vector<std::string>& received, const std::string& logge
|
|||||||
|
|
||||||
std::string cmdLIST(std::vector<std::string>& received, const std::string& loggedInUsername) {
|
std::string cmdLIST(std::vector<std::string>& received, const std::string& loggedInUsername) {
|
||||||
if (loggedInUsername.empty()) {
|
if (loggedInUsername.empty()) {
|
||||||
|
printf("%s %zu\n", loggedInUsername.c_str(), received.size());
|
||||||
return "ERR\n";
|
return "ERR\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
user* currentUser = user_handler::getInstance().getUser(loggedInUsername);
|
user* currentUser = user_handler::getInstance().getUser(loggedInUsername);
|
||||||
if (currentUser == nullptr) {
|
if (currentUser == nullptr) {
|
||||||
return "ERR\n";
|
return "0\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
maillist inbox = currentUser->getMails();
|
maillist inbox = currentUser->getMails();
|
||||||
@ -484,6 +485,7 @@ std::string cmdLIST(std::vector<std::string>& received, const std::string& logge
|
|||||||
|
|
||||||
std::string cmdREAD(std::vector<std::string>& received, const std::string& loggedInUsername) {
|
std::string cmdREAD(std::vector<std::string>& received, const std::string& loggedInUsername) {
|
||||||
if (loggedInUsername.empty() || received.size() < 2) {
|
if (loggedInUsername.empty() || received.size() < 2) {
|
||||||
|
printf("%s %zu\n", loggedInUsername.c_str(), received.size());
|
||||||
return "ERR\n";
|
return "ERR\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -509,6 +511,7 @@ std::string cmdREAD(std::vector<std::string>& received, const std::string& logge
|
|||||||
|
|
||||||
std::string cmdDEL(std::vector<std::string>& received, const std::string& loggedInUsername) {
|
std::string cmdDEL(std::vector<std::string>& received, const std::string& loggedInUsername) {
|
||||||
if (loggedInUsername.empty() || received.size() < 2) {
|
if (loggedInUsername.empty() || received.size() < 2) {
|
||||||
|
printf("%s %zu\n", loggedInUsername.c_str(), received.size());
|
||||||
return "ERR\n";
|
return "ERR\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user