mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-09-21 21:44:58 +02:00
Split socks_request_t into its own header.
This commit is contained in:
parent
ad52fe7e88
commit
8b7df72359
@ -62,6 +62,7 @@
|
|||||||
#include "entry_connection_st.h"
|
#include "entry_connection_st.h"
|
||||||
#include "or_circuit_st.h"
|
#include "or_circuit_st.h"
|
||||||
#include "origin_circuit_st.h"
|
#include "origin_circuit_st.h"
|
||||||
|
#include "socks_request_st.h"
|
||||||
|
|
||||||
static void circuit_expire_old_circuits_clientside(void);
|
static void circuit_expire_old_circuits_clientside(void);
|
||||||
static void circuit_increment_failure_count(void);
|
static void circuit_increment_failure_count(void);
|
||||||
|
@ -119,6 +119,7 @@
|
|||||||
#include "listener_connection_st.h"
|
#include "listener_connection_st.h"
|
||||||
#include "or_connection_st.h"
|
#include "or_connection_st.h"
|
||||||
#include "port_cfg_st.h"
|
#include "port_cfg_st.h"
|
||||||
|
#include "socks_request_st.h"
|
||||||
|
|
||||||
static connection_t *connection_listener_new(
|
static connection_t *connection_listener_new(
|
||||||
const struct sockaddr *listensockaddr,
|
const struct sockaddr *listensockaddr,
|
||||||
|
@ -102,6 +102,7 @@
|
|||||||
#include "entry_connection_st.h"
|
#include "entry_connection_st.h"
|
||||||
#include "or_circuit_st.h"
|
#include "or_circuit_st.h"
|
||||||
#include "origin_circuit_st.h"
|
#include "origin_circuit_st.h"
|
||||||
|
#include "socks_request_st.h"
|
||||||
|
|
||||||
#ifdef HAVE_LINUX_TYPES_H
|
#ifdef HAVE_LINUX_TYPES_H
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
|
@ -90,6 +90,7 @@
|
|||||||
#include "rend_authorized_client_st.h"
|
#include "rend_authorized_client_st.h"
|
||||||
#include "rend_encoded_v2_service_descriptor_st.h"
|
#include "rend_encoded_v2_service_descriptor_st.h"
|
||||||
#include "rend_service_descriptor_st.h"
|
#include "rend_service_descriptor_st.h"
|
||||||
|
#include "socks_request_st.h"
|
||||||
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
#include <pwd.h>
|
#include <pwd.h>
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
#include "control_connection_st.h"
|
#include "control_connection_st.h"
|
||||||
#include "entry_connection_st.h"
|
#include "entry_connection_st.h"
|
||||||
#include "listener_connection_st.h"
|
#include "listener_connection_st.h"
|
||||||
|
#include "socks_request_st.h"
|
||||||
|
|
||||||
#include <event2/dns.h>
|
#include <event2/dns.h>
|
||||||
#include <event2/dns_compat.h>
|
#include <event2/dns_compat.h>
|
||||||
|
@ -294,6 +294,7 @@ ORHEADERS = \
|
|||||||
src/or/scheduler.h \
|
src/or/scheduler.h \
|
||||||
src/or/server_port_cfg_st.h \
|
src/or/server_port_cfg_st.h \
|
||||||
src/or/shared_random_client.h \
|
src/or/shared_random_client.h \
|
||||||
|
src/or/socks_request_st.h \
|
||||||
src/or/statefile.h \
|
src/or/statefile.h \
|
||||||
src/or/status.h \
|
src/or/status.h \
|
||||||
src/or/torcert.h \
|
src/or/torcert.h \
|
||||||
|
@ -125,6 +125,7 @@
|
|||||||
#include "entry_connection_st.h"
|
#include "entry_connection_st.h"
|
||||||
#include "or_connection_st.h"
|
#include "or_connection_st.h"
|
||||||
#include "port_cfg_st.h"
|
#include "port_cfg_st.h"
|
||||||
|
#include "socks_request_st.h"
|
||||||
|
|
||||||
#ifdef HAVE_SYSTEMD
|
#ifdef HAVE_SYSTEMD
|
||||||
# if defined(__COVERITY__) && !defined(__INCLUDE_LEVEL__)
|
# if defined(__COVERITY__) && !defined(__INCLUDE_LEVEL__)
|
||||||
|
48
src/or/or.h
48
src/or/or.h
@ -3587,54 +3587,6 @@ typedef struct {
|
|||||||
#define SOCKS_COMMAND_IS_RESOLVE(c) ((c)==SOCKS_COMMAND_RESOLVE || \
|
#define SOCKS_COMMAND_IS_RESOLVE(c) ((c)==SOCKS_COMMAND_RESOLVE || \
|
||||||
(c)==SOCKS_COMMAND_RESOLVE_PTR)
|
(c)==SOCKS_COMMAND_RESOLVE_PTR)
|
||||||
|
|
||||||
/** State of a SOCKS request from a user to an OP. Also used to encode other
|
|
||||||
* information for non-socks user request (such as those on TransPort and
|
|
||||||
* DNSPort) */
|
|
||||||
struct socks_request_t {
|
|
||||||
/** Which version of SOCKS did the client use? One of "0, 4, 5" -- where
|
|
||||||
* 0 means that no socks handshake ever took place, and this is just a
|
|
||||||
* stub connection (e.g. see connection_ap_make_link()). */
|
|
||||||
uint8_t socks_version;
|
|
||||||
/** If using socks5 authentication, which authentication type did we
|
|
||||||
* negotiate? currently we support 0 (no authentication) and 2
|
|
||||||
* (username/password). */
|
|
||||||
uint8_t auth_type;
|
|
||||||
/** What is this stream's goal? One of the SOCKS_COMMAND_* values */
|
|
||||||
uint8_t command;
|
|
||||||
/** Which kind of listener created this stream? */
|
|
||||||
uint8_t listener_type;
|
|
||||||
size_t replylen; /**< Length of <b>reply</b>. */
|
|
||||||
uint8_t reply[MAX_SOCKS_REPLY_LEN]; /**< Write an entry into this string if
|
|
||||||
* we want to specify our own socks reply,
|
|
||||||
* rather than using the default socks4 or
|
|
||||||
* socks5 socks reply. We use this for the
|
|
||||||
* two-stage socks5 handshake.
|
|
||||||
*/
|
|
||||||
char address[MAX_SOCKS_ADDR_LEN]; /**< What address did the client ask to
|
|
||||||
connect to/resolve? */
|
|
||||||
uint16_t port; /**< What port did the client ask to connect to? */
|
|
||||||
unsigned int has_finished : 1; /**< Has the SOCKS handshake finished? Used to
|
|
||||||
* make sure we send back a socks reply for
|
|
||||||
* every connection. */
|
|
||||||
unsigned int got_auth : 1; /**< Have we received any authentication data? */
|
|
||||||
/** If this is set, we will choose "no authentication" instead of
|
|
||||||
* "username/password" authentication if both are offered. Used as input to
|
|
||||||
* parse_socks. */
|
|
||||||
unsigned int socks_prefer_no_auth : 1;
|
|
||||||
|
|
||||||
/** Number of bytes in username; 0 if username is NULL */
|
|
||||||
size_t usernamelen;
|
|
||||||
/** Number of bytes in password; 0 if password is NULL */
|
|
||||||
uint8_t passwordlen;
|
|
||||||
/** The negotiated username value if any (for socks5), or the entire
|
|
||||||
* authentication string (for socks4). This value is NOT nul-terminated;
|
|
||||||
* see usernamelen for its length. */
|
|
||||||
char *username;
|
|
||||||
/** The negotiated password value if any (for socks5). This value is NOT
|
|
||||||
* nul-terminated; see passwordlen for its length. */
|
|
||||||
char *password;
|
|
||||||
};
|
|
||||||
|
|
||||||
/********************************* circuitbuild.c **********************/
|
/********************************* circuitbuild.c **********************/
|
||||||
|
|
||||||
/** How many hops does a general-purpose circuit have by default? */
|
/** How many hops does a general-purpose circuit have by default? */
|
||||||
|
@ -14,6 +14,8 @@
|
|||||||
#include "proto_socks.h"
|
#include "proto_socks.h"
|
||||||
#include "reasons.h"
|
#include "reasons.h"
|
||||||
|
|
||||||
|
#include "socks_request_st.h"
|
||||||
|
|
||||||
static void socks_request_set_socks5_error(socks_request_t *req,
|
static void socks_request_set_socks5_error(socks_request_t *req,
|
||||||
socks5_reply_status_t reason);
|
socks5_reply_status_t reason);
|
||||||
|
|
||||||
|
@ -87,6 +87,7 @@
|
|||||||
#include "entry_connection_st.h"
|
#include "entry_connection_st.h"
|
||||||
#include "or_circuit_st.h"
|
#include "or_circuit_st.h"
|
||||||
#include "origin_circuit_st.h"
|
#include "origin_circuit_st.h"
|
||||||
|
#include "socks_request_st.h"
|
||||||
|
|
||||||
static edge_connection_t *relay_lookup_conn(circuit_t *circ, cell_t *cell,
|
static edge_connection_t *relay_lookup_conn(circuit_t *circ, cell_t *cell,
|
||||||
cell_direction_t cell_direction,
|
cell_direction_t cell_direction,
|
||||||
|
59
src/or/socks_request_st.h
Normal file
59
src/or/socks_request_st.h
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
/* Copyright (c) 2001 Matej Pfajfar.
|
||||||
|
* Copyright (c) 2001-2004, Roger Dingledine.
|
||||||
|
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
|
||||||
|
* Copyright (c) 2007-2017, The Tor Project, Inc. */
|
||||||
|
/* See LICENSE for licensing information */
|
||||||
|
|
||||||
|
#ifndef SOCKS_REQUEST_ST_H
|
||||||
|
#define SOCKS_REQUEST_ST_H
|
||||||
|
|
||||||
|
/** State of a SOCKS request from a user to an OP. Also used to encode other
|
||||||
|
* information for non-socks user request (such as those on TransPort and
|
||||||
|
* DNSPort) */
|
||||||
|
struct socks_request_t {
|
||||||
|
/** Which version of SOCKS did the client use? One of "0, 4, 5" -- where
|
||||||
|
* 0 means that no socks handshake ever took place, and this is just a
|
||||||
|
* stub connection (e.g. see connection_ap_make_link()). */
|
||||||
|
uint8_t socks_version;
|
||||||
|
/** If using socks5 authentication, which authentication type did we
|
||||||
|
* negotiate? currently we support 0 (no authentication) and 2
|
||||||
|
* (username/password). */
|
||||||
|
uint8_t auth_type;
|
||||||
|
/** What is this stream's goal? One of the SOCKS_COMMAND_* values */
|
||||||
|
uint8_t command;
|
||||||
|
/** Which kind of listener created this stream? */
|
||||||
|
uint8_t listener_type;
|
||||||
|
size_t replylen; /**< Length of <b>reply</b>. */
|
||||||
|
uint8_t reply[MAX_SOCKS_REPLY_LEN]; /**< Write an entry into this string if
|
||||||
|
* we want to specify our own socks reply,
|
||||||
|
* rather than using the default socks4 or
|
||||||
|
* socks5 socks reply. We use this for the
|
||||||
|
* two-stage socks5 handshake.
|
||||||
|
*/
|
||||||
|
char address[MAX_SOCKS_ADDR_LEN]; /**< What address did the client ask to
|
||||||
|
connect to/resolve? */
|
||||||
|
uint16_t port; /**< What port did the client ask to connect to? */
|
||||||
|
unsigned int has_finished : 1; /**< Has the SOCKS handshake finished? Used to
|
||||||
|
* make sure we send back a socks reply for
|
||||||
|
* every connection. */
|
||||||
|
unsigned int got_auth : 1; /**< Have we received any authentication data? */
|
||||||
|
/** If this is set, we will choose "no authentication" instead of
|
||||||
|
* "username/password" authentication if both are offered. Used as input to
|
||||||
|
* parse_socks. */
|
||||||
|
unsigned int socks_prefer_no_auth : 1;
|
||||||
|
|
||||||
|
/** Number of bytes in username; 0 if username is NULL */
|
||||||
|
size_t usernamelen;
|
||||||
|
/** Number of bytes in password; 0 if password is NULL */
|
||||||
|
uint8_t passwordlen;
|
||||||
|
/** The negotiated username value if any (for socks5), or the entire
|
||||||
|
* authentication string (for socks4). This value is NOT nul-terminated;
|
||||||
|
* see usernamelen for its length. */
|
||||||
|
char *username;
|
||||||
|
/** The negotiated password value if any (for socks5). This value is NOT
|
||||||
|
* nul-terminated; see passwordlen for its length. */
|
||||||
|
char *password;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -16,6 +16,7 @@
|
|||||||
#include "torlog.h"
|
#include "torlog.h"
|
||||||
|
|
||||||
#include "entry_connection_st.h"
|
#include "entry_connection_st.h"
|
||||||
|
#include "socks_request_st.h"
|
||||||
|
|
||||||
#include "fuzzing.h"
|
#include "fuzzing.h"
|
||||||
|
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
#include "dir_connection_st.h"
|
#include "dir_connection_st.h"
|
||||||
#include "entry_connection_st.h"
|
#include "entry_connection_st.h"
|
||||||
#include "or_connection_st.h"
|
#include "or_connection_st.h"
|
||||||
|
#include "socks_request_st.h"
|
||||||
|
|
||||||
static void * test_conn_get_basic_setup(const struct testcase_t *tc);
|
static void * test_conn_get_basic_setup(const struct testcase_t *tc);
|
||||||
static int test_conn_get_basic_teardown(const struct testcase_t *tc,
|
static int test_conn_get_basic_teardown(const struct testcase_t *tc,
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
#include "rendcache.h"
|
#include "rendcache.h"
|
||||||
|
|
||||||
#include "entry_connection_st.h"
|
#include "entry_connection_st.h"
|
||||||
|
#include "socks_request_st.h"
|
||||||
|
|
||||||
static void *
|
static void *
|
||||||
entryconn_rewrite_setup(const struct testcase_t *tc)
|
entryconn_rewrite_setup(const struct testcase_t *tc)
|
||||||
|
@ -42,6 +42,7 @@
|
|||||||
#include "dir_connection_st.h"
|
#include "dir_connection_st.h"
|
||||||
#include "entry_connection_st.h"
|
#include "entry_connection_st.h"
|
||||||
#include "origin_circuit_st.h"
|
#include "origin_circuit_st.h"
|
||||||
|
#include "socks_request_st.h"
|
||||||
|
|
||||||
static int
|
static int
|
||||||
mock_connection_ap_handshake_send_begin(entry_connection_t *ap_conn)
|
mock_connection_ap_handshake_send_begin(entry_connection_t *ap_conn)
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
#include "crypt_path_st.h"
|
#include "crypt_path_st.h"
|
||||||
#include "entry_connection_st.h"
|
#include "entry_connection_st.h"
|
||||||
#include "origin_circuit_st.h"
|
#include "origin_circuit_st.h"
|
||||||
|
#include "socks_request_st.h"
|
||||||
|
|
||||||
static int srm_ncalls;
|
static int srm_ncalls;
|
||||||
static entry_connection_t *srm_conn;
|
static entry_connection_t *srm_conn;
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#include "proto_socks.h"
|
#include "proto_socks.h"
|
||||||
#include "test.h"
|
#include "test.h"
|
||||||
#include "log_test_helpers.h"
|
#include "log_test_helpers.h"
|
||||||
|
#include "socks_request_st.h"
|
||||||
|
|
||||||
typedef struct socks_test_data_t {
|
typedef struct socks_test_data_t {
|
||||||
socks_request_t *req;
|
socks_request_t *req;
|
||||||
|
Loading…
Reference in New Issue
Block a user