aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--daemon/daemon_aux.c34
-rw-r--r--daemon/daemon_aux.h3
-rw-r--r--daemon/mutatorclient.c2
-rw-r--r--daemon/mutatord.c21
-rw-r--r--daemon/mutatord.h4
5 files changed, 40 insertions, 24 deletions
diff --git a/daemon/daemon_aux.c b/daemon/daemon_aux.c
index 3dbb01a..cce2372 100644
--- a/daemon/daemon_aux.c
+++ b/daemon/daemon_aux.c
@@ -33,7 +33,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.*
#include <arpa/inet.h>
#include <unistd.h>
/**********************************************************************************************************************/
-int mutator_server(void)
+int mutator_server(FILE* log_file)
{
int socket_desc, client_sock, socketlength, read_size;
struct sockaddr_in server, client;
@@ -41,16 +41,16 @@ int mutator_server(void)
char client_message[2000];
FILE* clientistream;
char runresponse[4000];
- char NOOUT[]="command did not return any output. could be an error or not.";
+ char NOOUT[]="command did not return any output. could be an error or not.\n";
/*create socket*/
socket_desc = socket(AF_INET, SOCK_STREAM, 0);
if (socket_desc < 0)
{
- printf("could not create socket.");
+ fprintf(log_file, "%s", "could not create socket.\n");
}
- puts ("socket created.");
+ fprintf (log_file, "%s", "socket created.\n");
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
@@ -59,17 +59,17 @@ int mutator_server(void)
/*Bind*/
if (bind(socket_desc, (struct sockaddr*)&server, sizeof(server)) < 0)
{
- perror("bind failed.error.");
+ perror("bind failed.error.\n");
return 1;
}
- puts("bind done.");
+ fprintf(log_file, "%s", "bind done.\n");
/*Listen*/
listen(socket_desc, 3);
/*Accept incoming connection*/
- puts("Waiting for incoming connections...");
+ fprintf(log_file, "%s", "Waiting for incoming connections...\n");
socketlength = sizeof(struct sockaddr_in);
/*accept incoming connection from client*/
@@ -80,14 +80,14 @@ int mutator_server(void)
perror("could not accept incoming client.");
return 1;
}
- puts("connection accpeted.");
+ fprintf(log_file, "%s", "connection accpeted.\n");
/*recieve a message from client*/
while((read_size = recv(client_sock, client_message, 2000, 0)) > 0)
{
fflush(stdin);
- puts("got command from client.");
+ fprintf(log_file, "%s","got command from client.\n");
/*open pipe, run command*/
clientistream = popen(client_message, "r");
@@ -96,7 +96,7 @@ int mutator_server(void)
{
perror("client command did not run successfully.");
}
- puts ("task completed.");
+ fprintf(log_file, "%s", "task completed.\n");
for (int i = 0; i < 2000; ++i)
{
@@ -114,31 +114,33 @@ int mutator_server(void)
while (fgets(runresponse, sizeof(runresponse), clientistream) != NULL)
{
#if defined(__DBG)
- puts("command stdout:");
- puts(runresponse);
+ fscanf(log_file, "%s", "command stdout:");
+ fscanf(log_file, "%s", runresponse);
#endif
write(client_sock, runresponse, strlen(runresponse));
+ fprintf(log_file, "%s", runresponse);
}
- puts("response sent to client.");
+ fprintf(log_file, "%s", "response sent to client.\n");
fflush(stdout);
/*close pipe*/
pclose(clientistream);
#if defined(__DBG)
- puts("checkpoint 1");
+ fprintf(log_file, "%s", "checkpoint 1\n");
#endif
}
#if defined(__DBG)
- puts("checkpoint 10");
+ fprintf(log_file, "%s", "checkpoint 10\n");
#endif
if (read_size == 0)
{
- puts("client disconnected");
+ fprintf(log_file, "%s", "client disconnected\n");
fflush(stdout);
+ fprintf(log_file, "%s", "closing log file\n");
}
else if (read_size == -1)
{
diff --git a/daemon/daemon_aux.h b/daemon/daemon_aux.h
index 09b504d..04a504d 100644
--- a/daemon/daemon_aux.h
+++ b/daemon/daemon_aux.h
@@ -22,9 +22,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.*
#define __MUTATOR_AUX_SERVER_H
/**********************************************************************************************************************/
/*headers*/
+#include <stdio.h>
/**********************************************************************************************************************/
/*function prototypes*/
-int mutator_server(void);
+int mutator_server(FILE* log_file);
#endif
/*last line intentionally left blank*/
diff --git a/daemon/mutatorclient.c b/daemon/mutatorclient.c
index 656e62e..9177024 100644
--- a/daemon/mutatorclient.c
+++ b/daemon/mutatorclient.c
@@ -20,7 +20,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.*
/**********************************************************************************************************************/
/*macros*/
#define __DBG
-#if 0
+#if 1
#undef __DBG
#endif
/**********************************************************************************************************************/
diff --git a/daemon/mutatord.c b/daemon/mutatord.c
index a0db5ba..edffe34 100644
--- a/daemon/mutatord.c
+++ b/daemon/mutatord.c
@@ -46,14 +46,21 @@ void time_n_date(FILE* infile)
fprintf(infile, "%s", ctime(&tnd));
}
-void signal_callback_handler(int signum)
+void sigint_callback_handler(int signum)
{
exit(signum);
}
+void sigterm_callback_handler(int signum)
+{
+ //fclose(infile);
+ exit(signum);
+}
+
int main(void)
{
- //signal(SIGINT, signal_callback_handler);
+ signal(SIGINT, sigint_callback_handler);
+ signal(SIGTERM, sigterm_callback_handler);
/*getting a process ID*/
pid_t pid;
@@ -87,6 +94,8 @@ int main(void)
exit(EXIT_SUCCESS);
}
+ /*i don't have a bellybutton so we're fine.*/
+
umask(0);
fprintf(mut_log, "%s", "set umask to 0.\n");
@@ -125,11 +134,13 @@ int main(void)
{
fprintf(mut_log, "%s", "running server...\n");
//sleep(1);
- server_exit_code = mutator_server();
- fprintf(mut_log, "%s%d", "server terminated with exit code ", server_exit_code);
+ server_exit_code = mutator_server(mut_log);
+ fprintf(mut_log, "%s%d%s", "server terminated with exit code ", server_exit_code, "\n");
+ fprintf (mut_log, "%s", "closing down server\n");
+ fclose(mut_log);
}
- /*these obviously will never run. theyre just a reminder that i need to handle the gracefull shutdown*/
+ /*@DEVI-these obviously will never run. theyre just a reminder that i need to handle the gracefull shutdown*/
fclose(mut_log);
exit(EXIT_SUCCESS);
}
diff --git a/daemon/mutatord.h b/daemon/mutatord.h
index 2f7bf5e..05df279 100644
--- a/daemon/mutatord.h
+++ b/daemon/mutatord.h
@@ -25,7 +25,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.*
#include <stdio.h>
/**********************************************************************************************************************/
/*function prototypes*/
-void signal_callback_handler(int signum);
+void sigint_callback_handler(int signum);
+
+void sigterm_callbacl_handler(int signum);
void time_n_date(FILE* infile);