⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 proxy.h

📁 大名鼎鼎的远程登录软件putty的Symbian版源码
💻 H
字号:
/* * Network proxy abstraction in PuTTY * * A proxy layer, if necessary, wedges itself between the * network code and the higher level backend. * * Supported proxies: HTTP CONNECT, generic telnet, SOCKS 4 & 5 */#ifndef PUTTY_PROXY_H#define PUTTY_PROXY_H#define PROXY_ERROR_GENERAL 8000#define PROXY_ERROR_UNEXPECTED 8001typedef struct Socket_proxy_tag * Proxy_Socket;struct Socket_proxy_tag {    const struct socket_function_table *fn;    /* the above variable absolutely *must* be the first in this structure */    char * error;    Socket sub_socket;    Plug plug;    SockAddr remote_addr;    int remote_port;    bufchain pending_output_data;    bufchain pending_oob_output_data;    int pending_flush;    bufchain pending_input_data;#define PROXY_STATE_NEW    -1#define PROXY_STATE_ACTIVE  0    int state; /* proxy states greater than 0 are implementation		* dependent, but represent various stages/states		* of the initialization/setup/negotiation with the		* proxy server.		*/    int freeze; /* should we freeze the underlying socket when		 * we are done with the proxy negotiation? this		 * simply caches the value of sk_set_frozen calls.		 */#define PROXY_CHANGE_NEW      -1#define PROXY_CHANGE_CLOSING   0#define PROXY_CHANGE_SENT      1#define PROXY_CHANGE_RECEIVE   2#define PROXY_CHANGE_ACCEPTING 3    /* something has changed (a call from the sub socket     * layer into our Proxy Plug layer, or we were just     * created, etc), so the proxy layer needs to handle     * this change (the type of which is the second argument)     * and further the proxy negotiation process.     */    int (*negotiate) (Proxy_Socket /* this */, int /* change type */);    /* current arguments of plug handlers     * (for use by proxy's negotiate function)     */    /* closing */    const char *closing_error_msg;    int closing_error_code;    int closing_calling_back;    /* receive */    int receive_urgent;    char *receive_data;    int receive_len;    /* sent */    int sent_bufsize;    /* accepting */    OSSocket accepting_sock;    /* configuration, used to look up proxy settings */    Config cfg;    /* CHAP transient data */    int chap_num_attributes;    int chap_num_attributes_processed;    int chap_current_attribute;    int chap_current_datalen;};typedef struct Plug_proxy_tag * Proxy_Plug;struct Plug_proxy_tag {    const struct plug_function_table *fn;    /* the above variable absolutely *must* be the first in this structure */    Proxy_Socket proxy_socket;};extern void proxy_activate (Proxy_Socket);extern int proxy_http_negotiate (Proxy_Socket, int);extern int proxy_telnet_negotiate (Proxy_Socket, int);extern int proxy_socks4_negotiate (Proxy_Socket, int);extern int proxy_socks5_negotiate (Proxy_Socket, int);/* * This may be reused by local-command proxies on individual * platforms. */char *format_telnet_command(SockAddr addr, int port, const Config *cfg);/* * These are implemented in cproxy.c or nocproxy.c, depending on * whether encrypted proxy authentication is available. */extern void proxy_socks5_offerencryptedauth(char *command, int *len);extern int proxy_socks5_handlechap (Proxy_Socket p);extern int proxy_socks5_selectchap(Proxy_Socket p);#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -