summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFreeArtMan <dos21h@gmail.com>2017-09-24 11:55:09 +0100
committerFreeArtMan <dos21h@gmail.com>2017-09-24 11:55:09 +0100
commit5de1c5ba999dba7da45316d3c1f2592c0e0e4804 (patch)
tree58e2fdc46c9b8b43598acdfad479bda9359b1df9
parent1dcf41797bda73d9c9c286d1eff8309ee2148e13 (diff)
downloadagni-5de1c5ba999dba7da45316d3c1f2592c0e0e4804.tar.gz
agni-5de1c5ba999dba7da45316d3c1f2592c0e0e4804.zip
Rearranged code for more IPC protocols
-rw-r--r--agni.c6
-rw-r--r--cmd/cmd_todo.c10
-rw-r--r--cmd/cmd_todo.h17
-rw-r--r--config_cmds.h47
-rw-r--r--nbrpc_call.c49
-rw-r--r--nbrpc_call.h40
-rw-r--r--nbrpc_event.c (renamed from nbrpc.c)41
-rw-r--r--nbrpc_event.h (renamed from nbrpc.h)20
-rw-r--r--sock_conn.c2
-rw-r--r--tbl_qcmd.h4
10 files changed, 211 insertions, 25 deletions
diff --git a/agni.c b/agni.c
index f89dc17..b8fa534 100644
--- a/agni.c
+++ b/agni.c
@@ -34,7 +34,7 @@
#include "arg.h"
-#include "nbrpc.h"
+#include "nbrpc_event.h"
/*
no defence programming, no error checking, no argument checking just PoC
@@ -598,7 +598,7 @@ int th_start_client(void *data)
printf("Reconnect in 10 sec\n");
sleep(10);
}
- sleep(1);
+ //sleep(1);
}
//send some commands to irc to register nick
snprintf(cmd_buf, TH_CONN_BUF_SZ, "USER %s 0 0 :%s\r\n", cfg->user, cfg->user);
@@ -618,7 +618,7 @@ int th_start_client(void *data)
printf("Reconnect in 10 sec\n");
sleep(10);
}
- sleep(1);
+ //sleep(1);
}
//send some commands to irc to register nick
snprintf(cmd_buf, TH_CONN_BUF_SZ, "USER %s 0 0 :%s\r\n", cfg->user, cfg->user);
diff --git a/cmd/cmd_todo.c b/cmd/cmd_todo.c
new file mode 100644
index 0000000..0f3ae58
--- /dev/null
+++ b/cmd/cmd_todo.c
@@ -0,0 +1,10 @@
+#include "cmd_todo.h"
+
+void *cmd_todo(void *data)
+{
+ char *ret = NULL;
+
+
+
+ return ret;
+}
diff --git a/cmd/cmd_todo.h b/cmd/cmd_todo.h
new file mode 100644
index 0000000..b5227e7
--- /dev/null
+++ b/cmd/cmd_todo.h
@@ -0,0 +1,17 @@
+#ifndef __CMD_TODO_H
+#define __CMD_TODO_H
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <time.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include "util.h"
+#include "debug.h"
+
+void *cmd_todo(void *data);
+
+#endif \ No newline at end of file
diff --git a/config_cmds.h b/config_cmds.h
index a123ec8..e532d64 100644
--- a/config_cmds.h
+++ b/config_cmds.h
@@ -1,8 +1,13 @@
#ifndef __CONFIG_CMDS_H
#define __CONFIG_CMDS_H
+#define CMD_T_SIMPLE 0
+#define CMD_T_RPC 1
+#define CMD_T_LUA 2
+
typedef struct single_cmd_def
{
+ int type;
char *name;
void *(*callback)(void *);
} single_cmd_def;
@@ -15,24 +20,30 @@ typedef struct single_cmd_def
//nothing else comaptible will be added, as its not about "standarts"
single_cmd_def confgi_cmd_list[] =
{
- {"DATE",cmd_date},
- {"UPTIME",cmd_uptime},
- {"VERSION",cmd_version}, {"!version",cmd_version},
- {"PING",cmd_ping}, {"!ping",cmd_ping},
- {"LOADAVG",cmd_loadavg},
- {"RUSE",cmd_rusage},
- {"CMD",cmd_cmd}, {"!echo",cmd_cmd},
- {"SHA1",cmd_sha1},
- {"COOKIE",cmd_cookie},
- {"BOTU",cmd_botu}, {"!uptime",cmd_botu},
- {"FIR1P",cmd_fir1p},
- {"RAND",cmd_rand},
- {"RANDC",cmd_rand_libc},
- {"FIR",cmd_fir},
- {"HELP",cmd_help},
- {"SPI",cmd_spi},
- {"STAT",cmd_stat},
- {NULL,NULL}
+ //simple echo response commands
+ {CMD_T_SIMPLE,"DATE",cmd_date},
+ {CMD_T_SIMPLE,"UPTIME",cmd_uptime},
+ {CMD_T_SIMPLE,"VERSION",cmd_version}, {CMD_T_SIMPLE,"!version",cmd_version},
+ {CMD_T_SIMPLE,"PING",cmd_ping}, {CMD_T_SIMPLE,"!ping",cmd_ping},
+ {CMD_T_SIMPLE,"LOADAVG",cmd_loadavg},
+ {CMD_T_SIMPLE,"RUSE",cmd_rusage},
+ {CMD_T_SIMPLE,"CMD",cmd_cmd}, {CMD_T_SIMPLE,"!echo",cmd_cmd},
+ {CMD_T_SIMPLE,"SHA1",cmd_sha1},
+ {CMD_T_SIMPLE,"COOKIE",cmd_cookie},
+ {CMD_T_SIMPLE,"BOTU",cmd_botu}, {CMD_T_SIMPLE,"!uptime",cmd_botu},
+ {CMD_T_SIMPLE,"FIR1P",cmd_fir1p},
+ {CMD_T_SIMPLE,"RAND",cmd_rand},
+ {CMD_T_SIMPLE,"RANDC",cmd_rand_libc},
+ {CMD_T_SIMPLE,"FIR",cmd_fir},
+ {CMD_T_SIMPLE,"HELP",cmd_help},
+ {CMD_T_SIMPLE,"SPI",cmd_spi},
+ {CMD_T_SIMPLE,"STAT",cmd_stat},
+
+ //more complicated command
+ {CMD_T_RPC,"TODO",cmd_todo},
+
+
+ {0,NULL,NULL}
};
diff --git a/nbrpc_call.c b/nbrpc_call.c
new file mode 100644
index 0000000..3fddde7
--- /dev/null
+++ b/nbrpc_call.c
@@ -0,0 +1,49 @@
+#include "nbrpc_call.h"
+
+rpc_call_request* rpc_call_req_new(char *method, char *params, int id)
+{
+
+}
+
+
+rpc_call_response* rpc_call_resp_new(char *result, char *error, int id)
+{
+
+}
+
+
+int rpc_call_req_free(rpc_call_request *req)
+{
+
+}
+
+
+int rpc_call_resp_free(rpc_call_response *resp)
+{
+
+}
+
+
+int rpc_call_req_marsh( rpc_call_request *req, netbyte_store **nb_req)
+{
+
+}
+
+
+int rpc_call_resp_marsh( rpc_call_response *resp, netbyte_store **nb_resp)
+{
+
+}
+
+
+int rpc_call_req_unmarsh( netbyte_store *nb_req, rpc_call_request **req)
+{
+
+}
+
+
+int rpc_call_resp_unmarsh(netbyte_store *nb_resp, rpc_call_response **resp)
+{
+
+}
+
diff --git a/nbrpc_call.h b/nbrpc_call.h
new file mode 100644
index 0000000..183f911
--- /dev/null
+++ b/nbrpc_call.h
@@ -0,0 +1,40 @@
+#ifndef __AGNI_NBRPC_CALL_H
+#define __AGNI_NBRPC_CALL_H
+
+#include <netbytes.h>
+
+#include <mq_ntf.h>
+
+typedef struct rpc_call_request
+{
+ char *method;
+ char *params;
+ char *user;
+ char *mask;
+ char *server;
+ int id;
+} rpc_call_request;
+
+typedef struct rpc_call_response
+{
+ char *result;
+ char *error;
+ char *user;
+ char *mask;
+ char *server;
+ int id;
+} rpc_call_response;
+
+rpc_call_request* rpc_call_req_new(char *method, char *params, int id);
+rpc_call_response* rpc_call_resp_new(char *result, char *error, int id);
+
+int rpc_call_req_free(rpc_call_request *req);
+int rpc_call_resp_free(rpc_call_response *resp);
+
+int rpc_call_req_marsh( rpc_call_request *req, netbyte_store **nb_req);
+int rpc_call_resp_marsh( rpc_call_response *resp, netbyte_store **nb_resp);
+
+int rpc_call_req_unmarsh( netbyte_store *nb_req, rpc_call_request **req);
+int rpc_call_resp_unmarsh(netbyte_store *nb_resp, rpc_call_response **resp);
+
+#endif \ No newline at end of file
diff --git a/nbrpc.c b/nbrpc_event.c
index 9adde5d..dc5cddd 100644
--- a/nbrpc.c
+++ b/nbrpc_event.c
@@ -1,4 +1,4 @@
-#include "nbrpc.h"
+#include "nbrpc_event.h"
extern char* alloc_new_str(char *);
extern char *alloc_new_str_s(char *, size_t);
@@ -229,4 +229,41 @@ int rpc_resp_unmarsh(netbyte_store *nb_resp, rpc_response **resp)
*resp = __resp;
return 0;
-} \ No newline at end of file
+}
+
+
+int rpc_req_set_user(rpc_request *req)
+{
+
+}
+
+
+int rpc_resp_set_user(rpc_response *resp)
+{
+
+}
+
+
+int rpc_req_set_mask(rpc_request *req)
+{
+
+}
+
+
+int rpc_resp_set_mask(rpc_response *resp)
+{
+
+}
+
+
+int rpc_req_set_server(rpc_request *req)
+{
+
+}
+
+
+int rpc_resp_set_server(rpc_response *resp)
+{
+
+}
+
diff --git a/nbrpc.h b/nbrpc_event.h
index 2c7b479..5f3657a 100644
--- a/nbrpc.h
+++ b/nbrpc_event.h
@@ -3,12 +3,15 @@
#include <netbytes.h>
-#include "mq_ntf.h"
+#include <mq_ntf.h>
typedef struct rpc_request
{
char *method;
char *params;
+ char *user;
+ char *mask;
+ char *server;
int id;
} rpc_request;
@@ -16,15 +19,30 @@ typedef struct rpc_response
{
char *result;
char *error;
+ char *user;
+ char *mask;
+ char *server;
int id;
} rpc_response;
rpc_request* rpc_req_new(char *method, char *params, int id);
rpc_response* rpc_resp_new(char *result, char *error, int id);
+
+int rpc_req_set_user(rpc_request *req);
+int rpc_resp_set_user(rpc_response *resp);
+
+int rpc_req_set_mask(rpc_request *req);
+int rpc_resp_set_mask(rpc_response *resp);
+
+int rpc_req_set_server(rpc_request *req);
+int rpc_resp_set_server(rpc_response *resp);
+
int rpc_req_free(rpc_request *req);
int rpc_resp_free(rpc_response *resp);
+
int rpc_req_marsh( rpc_request *req, netbyte_store **nb_req);
int rpc_resp_marsh( rpc_response *resp, netbyte_store **nb_resp);
+
int rpc_req_unmarsh( netbyte_store *nb_req, rpc_request **req);
int rpc_resp_unmarsh(netbyte_store *nb_resp, rpc_response **resp);
diff --git a/sock_conn.c b/sock_conn.c
index 0c206ea..c06bcb2 100644
--- a/sock_conn.c
+++ b/sock_conn.c
@@ -303,7 +303,7 @@ int irc_connect( char *hostname, char *port )
int irc_open(char *hostname, char *port, irc_conn *conn)
{
int fd, fret;
- struct addrinfo serv, *res;
+ struct addrinfo serv, *res=NULL;//_res, *res=&_res;
if (conn == NULL)
{
diff --git a/tbl_qcmd.h b/tbl_qcmd.h
index 26f805e..6bf799a 100644
--- a/tbl_qcmd.h
+++ b/tbl_qcmd.h
@@ -15,6 +15,10 @@
#define EXEC_CURRENT 0 //executes in current thread
#define EXEC_SEPERATE 1 //executes in seperate thread
+#define TBL_T_SIMPLE 0 //simple command that just passes params to callback nothing else
+#define TBL_T_RPC 1 //send more params and uses rpc for command
+#define TBL_T_LUA 2 //send commands to lua interpreter
+
/*
Fields:
*/