summaryrefslogtreecommitdiff
path: root/decoders/http/http_decoder_tunnel.c
diff options
context:
space:
mode:
Diffstat (limited to 'decoders/http/http_decoder_tunnel.c')
-rw-r--r--decoders/http/http_decoder_tunnel.c116
1 files changed, 0 insertions, 116 deletions
diff --git a/decoders/http/http_decoder_tunnel.c b/decoders/http/http_decoder_tunnel.c
deleted file mode 100644
index a6abda8..0000000
--- a/decoders/http/http_decoder_tunnel.c
+++ /dev/null
@@ -1,116 +0,0 @@
-#include <assert.h>
-#include <stdio.h>
-#include <string.h>
-#include <strings.h>
-#include <unistd.h>
-#include "http_decoder_private.h"
-#include "llhttp.h"
-
-struct http_tunnel_message
-{
- enum http_tunnel_message_type type;
- hstring tunnel_payload;
-};
-
-int httpd_tunnel_identify(struct http_decoder_env *httpd_env, int curdir, struct http_decoder_half_data *hfdata)
-{
- if (0 == httpd_env->hd_cfg.proxy_enable)
- {
- return 0;
- }
-
- if (FLOW_TYPE_C2S == curdir)
- {
- struct http_request_line reqline = {};
- http_decoder_half_data_get_request_line(hfdata, &reqline);
- if (0 == http_strncasecmp_safe("CONNECT", (char *)reqline.method,
- 7, reqline.method_len))
- {
- return 1;
- }
- }
- else
- {
- struct http_response_line resline = {};
- http_decoder_half_data_get_response_line(hfdata, &resline);
- if (resline.status_code == HTTP_STATUS_OK && 0 == http_strncasecmp_safe("Connection established", (char *)resline.status,
- strlen("Connection established"), resline.status_len))
- {
- return 1;
- }
- }
-
- return 0;
-}
-
-int httpd_is_tunnel_session(const struct http_decoder_env *httpd_env, const struct http_decoder_exdata *ex_data)
-{
- if (0 == httpd_env->hd_cfg.proxy_enable)
- {
- return 0;
- }
- return (ex_data && ex_data->tunnel_state != HTTP_TUN_NON);
-}
-
-int httpd_in_tunnel_transmitting(const struct http_decoder_env *httpd_env, struct http_decoder_exdata *ex_data)
-{
- if (0 == httpd_env->hd_cfg.proxy_enable)
- {
- return 0;
- }
- return (ex_data && ex_data->tunnel_state >= HTTP_TUN_INNER_STARTING);
-}
-
-enum http_tunnel_message_type httpd_tunnel_state_to_msg(const struct http_decoder_exdata *ex_data)
-{
- if (ex_data->tunnel_state == HTTP_TUN_INNER_STARTING)
- {
- return HTTP_TUNNEL_OPENING;
- }
- if (ex_data->tunnel_state == HTTP_TUN_INNER_TRANS)
- {
- return HTTP_TUNNEL_ACTIVE;
- }
- return HTTP_TUNNEL_MSG_MAX;
-}
-
-void httpd_tunnel_state_update(struct http_decoder_exdata *ex_data)
-{
- if (ex_data->tunnel_state == HTTP_TUN_INNER_STARTING)
- {
- ex_data->tunnel_state = HTTP_TUN_INNER_TRANS;
- }
-}
-
-void http_decoder_push_tunnel_data(struct session *sess, const struct http_decoder_exdata *exdata, enum http_tunnel_message_type type, const char *payload, uint16_t payload_len)
-{
- struct http_tunnel_message *tmsg = (struct http_tunnel_message *)CALLOC(struct http_tunnel_message, 1);
- tmsg->type = type;
- tmsg->tunnel_payload.iov_base = (char *)payload;
- tmsg->tunnel_payload.iov_len = payload_len;
- session_mq_publish_message(sess, exdata->pub_topic_id, tmsg);
-}
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
- void http_tunnel_message_get_payload(const struct http_tunnel_message *tmsg,
- hstring *tunnel_payload)
- {
- if (unlikely(NULL == tmsg || tunnel_payload == NULL))
- {
- return;
- }
- tunnel_payload->iov_base = tmsg->tunnel_payload.iov_base;
- tunnel_payload->iov_len = tmsg->tunnel_payload.iov_len;
- }
-
- enum http_tunnel_message_type http_tunnel_message_type_get(const struct http_tunnel_message *tmsg)
- {
- return tmsg->type;
- }
-
-#ifdef __cplusplus
-}
-#endif