From 9d84e9646263362c9c3a724a8eec48a7493e7bf1 Mon Sep 17 00:00:00 2001 From: Alexandre CHAZAL Date: Thu, 2 Sep 2021 19:10:41 +0200 Subject: [PATCH] feat(add): create add script --- src/add-sshkey.cc | 53 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/add-sshkey.cc 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; +}