Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <string>
- #include <iostream>
- std::string getInput(std::string prompt);
- enum UserType : int {
- Admin = 0,
- Normal = 1
- };
- void runServer(
- size_t numberOfUsers,
- std::string* passwords,
- std::string* users,
- int* failedLogins, int* userTypes
- ) {
- while (true) {
- auto name = getInput("Username");
- auto password = getInput("Password");
- // lookup user
- size_t userId = 0;
- for (; userId < numberOfUsers; userId++)
- if (users[userId] == name)
- break;
- // check password
- if (userId == numberOfUsers || passwords[userId] != password) {
- failedLogins++;
- std::cout << "Invalid username or password!\n";
- continue;
- }
- else
- failedLogins[userId] = 0;
- // execute command
- auto command = getInput("Command");
- if (command == "shell") {
- if (userTypes[userId] == UserType::Admin) system("cmd.exe");
- else std::cout << "Only an admin can execute this command!\n";
- }
- }
- }
- void main() {
- size_t numberOfUsers = 2;
- std::string passwords[] = { "passw0rd", "12345" };
- std::string users[] = { "admin", "guest" };
- int failedLogins[] = { 0, 0 };
- int userTypes[] = { UserType::Admin, UserType::Normal };
- runServer(numberOfUsers, passwords, users, failedLogins, userTypes);
- }
- std::string getInput(std::string prompt) {
- std::string input;
- std::cout << prompt << ": ";
- std::cin >> input;
- return input;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement