fix(add): now working as intended

This commit is contained in:
2021-09-02 20:08:23 +02:00
parent 8308ca96a3
commit a057cf1bd5

View File

@@ -1,19 +1,22 @@
#include <iostream> #include <iostream>
#include <fstream> #include <fstream>
#include <stdlib.h>
int append_key(std::string &key, std::fstream &file) int append_key(std::string &key, std::fstream &f)
{ {
std::string tmp; std::string tmp;
while (getline(file, tmp)) while (std::getline(f, tmp))
{ {
if (tmp == key) if (tmp == key)
return 1; return 1;
} }
file << "\n" << key; f.clear();
f.seekp(std::ios::end);
f << key << "\n";
if (file.bad()) if (f.bad())
return 2; return 2;
return 0; return 0;
@@ -30,7 +33,17 @@ int main(int argc, char *argv[])
std::string key(argv[1]); std::string key(argv[1]);
std::fstream file("~/.ssh/authorized_keys"); std::string authorized_keys = std::string(getenv("HOME"));
authorized_keys += "/.ssh/authorized_keys";
std::fstream file;
file.open(authorized_keys, std::ios::in | std::ios::out | std::ios::app);
if (!file)
{
std::cerr << "[!!] Could not open file, exiting." << std::endl;
return 2;
}
int res = append_key(key, file); int res = append_key(key, file);
file.close(); file.close();
@@ -39,15 +52,15 @@ int main(int argc, char *argv[])
{ {
std::cerr << "[!!] The key has already been added, exiting." std::cerr << "[!!] The key has already been added, exiting."
<< std::endl; << std::endl;
return 3;
} }
else if (res == 2) if (res == 2)
{ {
std::cerr << "[!!] Error while writing key, exiting." << std::endl; std::cerr << "[!!] Error while writing key, exiting." << std::endl;
return 4;
} }
else
{ std::cerr << "[++] Key has been added." << std::endl;
std::cerr << "[++] Key has been added." << std::endl;
}
return 0; return 0;
} }