[Openvas-commits] r1250 - in trunk/openvas-server: . openvasd
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Sun Aug 31 21:19:56 CEST 2008
Author: jan
Date: 2008-08-31 21:19:54 +0200 (Sun, 31 Aug 2008)
New Revision: 1250
Modified:
trunk/openvas-server/ChangeLog
trunk/openvas-server/openvasd/ntp_11.c
trunk/openvas-server/openvasd/otp_1_0.c
trunk/openvas-server/openvasd/otp_1_0.h
Log:
* openvasd/otp_1_0.c (otp_1_0_get_client_request): New method.
* openvasd/otp_1_0.h: Added proto for
otp_1_0_get_client_request and added client_request_t.
* openvasd/ntp_11.c (ntp_11_parse_input): Reorganized
parsing into a switch-case design. This simplified the code
and several memory leaks were eliminated.
Modified: trunk/openvas-server/ChangeLog
===================================================================
--- trunk/openvas-server/ChangeLog 2008-08-30 11:02:40 UTC (rev 1249)
+++ trunk/openvas-server/ChangeLog 2008-08-31 19:19:54 UTC (rev 1250)
@@ -1,3 +1,14 @@
+2008-08-31 Jan-Oliver Wagner <jan-oliver.wagner at intevation.de>
+
+ * openvasd/otp_1_0.c (otp_1_0_get_client_request): New method.
+
+ * openvasd/otp_1_0.h: Added proto for
+ otp_1_0_get_client_request and added client_request_t.
+
+ * openvasd/ntp_11.c (ntp_11_parse_input): Reorganized
+ parsing into a switch-case design. This simplified the code
+ and several memory leaks were eliminated.
+
2008-08-30 Jan-Oliver Wagner <jan-oliver.wagner at intevation.de>
Start the otp 1.0 module with a first simple method.
Modified: trunk/openvas-server/openvasd/ntp_11.c
===================================================================
--- trunk/openvas-server/openvasd/ntp_11.c 2008-08-30 11:02:40 UTC (rev 1249)
+++ trunk/openvas-server/openvasd/ntp_11.c 2008-08-31 19:19:54 UTC (rev 1250)
@@ -79,6 +79,7 @@
char * str;
int input_len = strlen(input);
char * orig = emalloc(input_len + 1);
+ int result = 1; /* default return value is 1 */
strncpy(orig, input, input_len);
@@ -99,92 +100,88 @@
if(input[strlen(input) - 1] == '\n')
input[strlen(input) - 1] = '\0';
-
+
+ switch(otp_1_0_get_client_request(input)) {
+ case CREQ_ATTACHED_FILE:
+ ntp_11_recv_file(globals);
+ break;
+
+ case CREQ_LONG_ATTACK:
+ result = ntp_11_long_attack(globals, orig);
+ break;
+
+ case CREQ_NEW_ATTACK:
+ result = ntp_11_new_attack(globals, orig);
+ break;
+
+ case CREQ_OPENVAS_VERSION:
+ otp_1_0_server_openvas_version(globals);
+ break;
+
+ case CREQ_PLUGIN_INFO: {
+ char * t, *s;
+ t = strstr(&(str[1]), " <|> ");
+ if( t == NULL ) {
+ result = -1;
+ break;
+ }
+ s = t + 5;
+ plugin_send_infos(globals, atoi(s));
+ break;
+ }
+
+ case CREQ_PREFERENCES:
+ ntp_11_prefs(globals);
+ break;
+
+ case CREQ_RULES:
+ ntp_11_rules(globals);
+ break;
+
#ifdef ENABLE_SAVE_TESTS
- if(!strcmp(input, "SESSIONS_LIST")){
- ntp_11_list_sessions(globals);
- efree(&orig);
- return 1;
- }
- if(!strcmp(input, "SESSION_DELETE")) {
- ntp_11_delete_session(globals, orig);
- efree(&orig);
- return 1;
- }
-
- if(!strcmp(input, "SESSION_RESTORE")) {
- int n = ntp_11_restore_session(globals, orig);
- efree(&orig);
- return n;
- }
-#endif
+ case CREQ_SESSIONS_LIST:
+ ntp_11_list_sessions(globals);
+ break;
- if(!strcmp(input, "OPENVAS_VERSION")) {
- otp_1_0_server_openvas_version(globals);
- return 1;
- }
+ case CREQ_SESSION_DELETE:
+ ntp_11_delete_session(globals, orig);
+ break;
- if(!strcmp(input, "ATTACHED_FILE")) {
- ntp_11_recv_file(globals);
- efree(&orig);
- return 1;
- }
- if(!strcmp(input, "PLUGIN_INFO")) {
- char * t, *s;
- t = strstr(&(str[1]), " <|> ");
- if( t == NULL )
- return -1;
+ case CREQ_SESSION_RESTORE:
+ result = ntp_11_restore_session(globals, orig);
+ break;
+#endif
- s = t + 5;
- plugin_send_infos(globals, atoi(s));
- return 1;
- }
+ case CREQ_STOP_WHOLE_TEST:
+ log_write("Stopping the whole test (requested by client)");
+ hosts_stop_all();
+ result = NTP_STOP_WHOLE_TEST;
+ break;
- if(!strcmp(input, "LONG_ATTACK")){
- int code = ntp_11_long_attack(globals, orig);
- efree(&orig);
- return code;
- }
- if(!strcmp(input, "PREFERENCES")){
- ntp_11_prefs(globals);
- efree(&orig);
- return 1;
- }
- if(!strcmp(input, "RULES")){
- ntp_11_rules(globals);
- efree(&orig);
- return 1;
- }
- if(!strcmp(input, "NEW_ATTACK")){
- int n = ntp_11_new_attack(globals, orig);
- efree(&orig);
- return n;
+ case CREQ_STOP_ATTACK: {
+ char * t, *s;
+ char * user = (char*)arg_get_value(globals, "user");
+ s = str + 5;
+ t = strstr(s, " <|> ");
+ if(t == NULL) {
+ result = -1;
+ break;
+ }
+ t[0] = '\0';
+ log_write("user %s : stopping attack against %s\n", user, s);
+ hosts_stop_host(globals, s);
+ ntp_1x_timestamp_host_scan_interrupted(globals, s);
+ ntp_11_show_end(globals, s, 0);
+ break;
+ }
+
+ case CREQ_UNKNOWN:
+ break;
}
- if(!strcmp(input, "STOP_WHOLE_TEST")){
- log_write("Stopping the whole test (requested by client)");
- hosts_stop_all();
- efree(&orig);
- return NTP_STOP_WHOLE_TEST;
- }
- if(!strcmp(input, "STOP_ATTACK")) {
- char * t, *s;
- char * user = (char*)arg_get_value(globals, "user");
- s = str + 5;
- t = strstr(s, " <|> ");
- if(t == NULL)
- return -1;
- t[0] = '\0';
- log_write("user %s : stopping attack against %s\n", user, s);
- hosts_stop_host(globals, s);
- ntp_1x_timestamp_host_scan_interrupted(globals, s);
- ntp_11_show_end(globals, s, 0);
- }
-
- efree(&orig);
- return 1;
}
+
efree(&orig);
- return 1;
+ return(result);
}
static int
Modified: trunk/openvas-server/openvasd/otp_1_0.c
===================================================================
--- trunk/openvas-server/openvasd/otp_1_0.c 2008-08-30 11:02:40 UTC (rev 1249)
+++ trunk/openvas-server/openvasd/otp_1_0.c 2008-08-31 19:19:54 UTC (rev 1250)
@@ -23,8 +23,35 @@
*
*/
+#include <string.h>
+
#include <corevers.h>
+#include <network.h>
+#include "otp_1_0.h"
+
+/* Find the enum identifier for the client request which is given
+ * as string.
+ */
+client_request_t otp_1_0_get_client_request(str)
+ char * str;
+{
+ if (!strcmp(str, "ATTACHED_FILE")) return(CREQ_ATTACHED_FILE);
+ if (!strcmp(str, "LONG_ATTACK")) return(CREQ_LONG_ATTACK);
+ if (!strcmp(str, "NEW_ATTACK")) return(CREQ_NEW_ATTACK);
+ if (!strcmp(str, "OPENVAS_VERSION")) return(CREQ_OPENVAS_VERSION);
+ if (!strcmp(str, "PLUGIN_INFO")) return(CREQ_PLUGIN_INFO);
+ if (!strcmp(str, "PREFERENCES")) return(CREQ_PREFERENCES);
+ if (!strcmp(str, "RULES")) return(CREQ_RULES);
+ if (!strcmp(str, "SESSIONS_LIST")) return(CREQ_SESSIONS_LIST);
+ if (!strcmp(str, "SESSION_DELETE")) return(CREQ_SESSION_DELETE);
+ if (!strcmp(str, "SESSION_RESTORE")) return(CREQ_SESSION_RESTORE);
+ if (!strcmp(str, "STOP_ATTACK")) return(CREQ_STOP_ATTACK);
+ if (!strcmp(str, "STOP_WHOLE_TEST")) return(CREQ_STOP_WHOLE_TEST);
+
+ return(CREQ_UNKNOWN);
+}
+
/* Send server response OPENVAS_VERSION
*/
void otp_1_0_server_openvas_version(globals)
Modified: trunk/openvas-server/openvasd/otp_1_0.h
===================================================================
--- trunk/openvas-server/openvasd/otp_1_0.h 2008-08-30 11:02:40 UTC (rev 1249)
+++ trunk/openvas-server/openvasd/otp_1_0.h 2008-08-31 19:19:54 UTC (rev 1250)
@@ -26,6 +26,24 @@
#ifndef _OTP_1_0_H
#define _OTP_1_0_H
+typedef enum {
+ CREQ_UNKNOWN,
+ CREQ_ATTACHED_FILE,
+ CREQ_LONG_ATTACK,
+ CREQ_NEW_ATTACK,
+ CREQ_OPENVAS_VERSION,
+ CREQ_PLUGIN_INFO,
+ CREQ_PREFERENCES,
+ CREQ_RULES,
+ CREQ_SESSIONS_LIST,
+ CREQ_SESSION_DELETE,
+ CREQ_SESSION_RESTORE,
+ CREQ_STOP_ATTACK,
+ CREQ_STOP_WHOLE_TEST
+} client_request_t;
+
+client_request_t otp_1_0_get_client_request(char *);
+
void otp_1_0_server_openvas_version(struct arglist *);
#endif
More information about the Openvas-commits
mailing list