24 #include "../misc/prefs.h" 26 #include "../base/kb.h" 27 #include "../misc/plugutils.h" 41 #include "../misc/www_funcs.h" 60 _http_req (
lex_ctxt * lexic,
char *keyword)
73 char content_l_str[32];
78 if (item == NULL || port < 0)
81 "Error : http_* functions have the following syntax :\n");
82 nasl_perror (lexic,
"http_*(port:<port>, item:<item> [, data:<data>]\n");
86 if (port <= 0 || port > 65535)
88 nasl_perror (lexic,
"http_req: invalid value %d for port parameter\n",
94 g_snprintf (tmp,
sizeof (tmp),
"/tmp/http/auth/%d", port);
95 auth = kb_item_get_str (
kb, tmp);
98 auth = kb_item_get_str (
kb,
"http/auth");
100 g_snprintf (tmp,
sizeof (tmp),
"http/%d", port);
101 ver = kb_item_get_int (
kb, tmp);
106 *content_l_str =
'\0';
111 g_snprintf (content_l_str,
sizeof (content_l_str),
112 "Content-Length: %d\r\n", cl);
120 if ((ver <= 0) || (ver == 11))
122 char *hostname, *ua, *hostheader;
125 if (hostname == NULL)
127 ua = kb_item_get_str (
kb,
"http/user-agent");
128 #define OPENVAS_USER_AGENT "Mozilla/5.0 [en] (X11, U; OpenVAS)" 133 while (isspace (*ua))
149 if (port == 80 || port == 443)
150 hostheader = g_strdup (hostname);
152 hostheader = g_strdup_printf (
"%s:%d", hostname, port);
156 strlen (url) + strlen (hostname) + al + cl + strlen (ua) + 1024;
157 str = g_malloc0 (str_length);
159 g_snprintf (str, str_length,
"%s\r\n\ 160 Connection: Close\r\n\ 162 Pragma: no-cache\r\n\ 163 Cache-Control: no-cache\r\n\ 165 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*\r\n\ 166 Accept-Language: en\r\n\ 167 Accept-Charset: iso-8859-1,*,utf-8\r\n", url, hostheader, ua);
178 str_length = strlen (url) + al + cl + 120;
179 str = g_malloc0 (str_length);
180 g_strlcpy (str, url, str_length);
186 g_strlcat (str, auth, str_length);
187 g_strlcat (str,
"\r\n", str_length);
191 g_strlcat (str, content_l_str, str_length);
193 g_strlcat (str,
"\r\n", str_length);
197 g_strlcat (str, data, str_length);
202 retc->
size = strlen (str);
216 return _http_req (lexic,
"GET");
228 return _http_req (lexic,
"HEAD");
239 return _http_req (lexic,
"POST");
248 return _http_req (lexic,
"DELETE");
257 return _http_req (lexic,
"PUT");
267 const char *path =
prefs_get (
"cgi_path");
271 path =
"/cgi-bin:/scripts";
275 retc->
size = strlen (path);
tree_cell * nasl_open_sock_tcp_bufsz(lex_ctxt *lexic, int bufsz)
tree_cell * http_get(lex_ctxt *lexic)
tree_cell * http_open_socket(lex_ctxt *lexic)
#define OPENVAS_USER_AGENT
tree_cell * http_delete(lex_ctxt *lexic)
char * plug_get_host_fqdn(struct arglist *desc)
long int get_int_local_var_by_name(lex_ctxt *, const char *, int)
const gchar * prefs_get(const gchar *key)
Get a string preference value via a key.
char * get_str_local_var_by_name(lex_ctxt *, const char *)
tree_cell * cgibin(lex_ctxt *lexic)
tree_cell * http_head(lex_ctxt *lexic)
kb_t plug_get_kb(struct arglist *args)
Top-level KB. This is to be inherited by KB implementations.
tree_cell * nasl_close_socket(lex_ctxt *lexic)
void nasl_perror(lex_ctxt *lexic, char *msg,...)
tree_cell * http_close_socket(lex_ctxt *lexic)
tree_cell * alloc_tree_cell(int lnb, char *s)
tree_cell * http_post(lex_ctxt *lexic)
char * build_encode_URL(struct arglist *data, char *method, char *path, char *name, char *httpver)
struct arglist * script_infos
tree_cell * http_put(lex_ctxt *lexic)