X-Git-Url: http://git.maemo.org/git/?p=mnenc;a=blobdiff_plain;f=mnencd.cpp;h=ddc89e21590edebc3bddd3f9ff77b3c31612e72c;hp=b41943249f518af498b8e4957bcd73d206a241bf;hb=29a4076ab4f859e49ed17f0a2a804e67606550b9;hpb=4d430223b2b38f9899844bc55e66aace6bb80fe1 diff --git a/mnencd.cpp b/mnencd.cpp index b419432..ddc89e2 100644 --- a/mnencd.cpp +++ b/mnencd.cpp @@ -26,7 +26,7 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ - +#include #include #include #include @@ -40,63 +40,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include "mnenc.hpp" #include "password.hpp" - -std::string remove_char(std::string str, char c) { - std::string::size_type k = 0; - while((k=str.find(c,k))!=str.npos) { - str.erase(k, 1); - } - return str; -} - -std::string remove_chars(std::string str) { - std::string chars = " \t\n\b\a-?+\\{[]}'*'"; - for(int i = 0; i < (signed) chars.size(); i++) { - str = remove_char(str, chars[i]); - } - - return str; -} - -std::string make_filename(std::string user, std::string app) { - return remove_chars(app + user); -} -std::string get_password(std::string masterpasswd, std::string user, std::string app) { - mnenc menc = mnenc(); - menc.genkey(masterpasswd); - std::string key = menc.get_key(); - password pw = password("", "", key); - pw.from_file(make_filename(user, app)); - return menc.decrypt(key, pw.get_enc()); -} - -void put_password(std::string masterpasswd, std::string passwd, std::string user, std::string app) { - mnenc menc = mnenc(); - menc.genkey(masterpasswd); - std::string key = menc.get_key(); - password pw = password(menc.encrypt(key, passwd ), "", key); - pw.to_file(make_filename(user, app)); -} - -std::string do_something(std::string str) { - //Nothing here yet - return "Blahonga"; -} - -std::string m_read() { - std::string str; - std::ifstream is("fife"); - getline(is, str); - is.close(); - return str; -} - -void m_send(std::string message) { - std::ofstream os("fife"); - os << message; - os.close(); -} - +#include "mnencd.hpp" int main(int argc, char** argv) { /* Our process ID and Session ID */ @@ -117,17 +61,34 @@ int main(int argc, char** argv) { umask(0); /* Open any logs here */ - + std::string name, dirname; + name = getenv("USER"); + dirname = "/home/" + name + "/.mnenc/"; + if(mkdir(dirname.c_str(), S_IRWXU | S_IRWXG | S_IRWXO ) < 0) { + if(errno != EEXIST) { + exit(EXIT_FAILURE); + } + } + /*This is log stuff */ + std::string logname = "/home/" + name + "/.mnenc/log"; + std::ofstream log; //Log stream + log.open(logname.c_str(), ios::app); // open log + time_t rawtime; //Time stuff here + struct tm * timeinfo; + time ( &rawtime ); + timeinfo = localtime ( &rawtime ); + std::string current_time = asctime (timeinfo); //Holds current time + /* Create a new SID for the child process */ sid = setsid(); if (sid < 0) { - /* Log the failure */ + log << current_time << ": Unable to create a new SID for the child process\n"; exit(EXIT_FAILURE); } /* Change the current working directory */ - if ((chdir("/home/micke/.fifo")) < 0) { - /* Log the failure */ + if ((chdir("/tmp/")) < 0) { + log << current_time << ": Could not change to /tmp\n"; exit(EXIT_FAILURE); } @@ -137,14 +98,16 @@ int main(int argc, char** argv) { close(STDERR_FILENO); /* Daemon-specific initialization goes here */ + mkfifo("./mnencdfifo", 0777); //This is the fifo for communications + signal(SIGTERM, term); // register a SIGTERM handler + log.close(); //Closing log - mkfifo("./fife", 0777); - /* The Big Loop */ while (1) { - m_send(do_something(m_read())); + std::string request = m_read(); + std::string reply = do_something(request); + m_send(reply); sleep(1); /* wait 1 second*/ } - unlink("fife"); exit(EXIT_SUCCESS); }