diff --git a/src/add-sshkey.cc b/src/add-sshkey.cc new file mode 100644 index 0000000..fe67842 --- /dev/null +++ b/src/add-sshkey.cc @@ -0,0 +1,53 @@ +#include +#include + +int append_key(std::string &key, std::fstream &file) +{ + std::string tmp; + + while (getline(file, tmp)) + { + if (tmp == key) + return 1; + } + + file << "\n" << key; + + if (file.bad()) + return 2; + + return 0; +} + +int main(int argc, char *argv[]) +{ + if (argc != 2) + { + std::cerr << "[!!] This program needs one (1) argument to work, exiting." + << std::endl; + return 1; + } + + std::string key(argv[1]); + + std::fstream file("~/.ssh/authorized_keys"); + + int res = append_key(key, file); + file.close(); + + if (res == 1) + { + std::cerr << "[!!] The key has already been added, exiting."i + << std::endl; + } + else if (res == 2) + { + std::cerr << "[!!] Error while writing key, exiting." << std::endl; + } + else + { + std::cerr << "[++] Key has been added." << std::endl; + } + + return 0; +}