16 changed files with 690 additions and 1695 deletions
Split View
Diff Options
-
1acl/delegation.acl
-
2src/Makefile.am
-
5src/cache.c
-
337src/local.c
-
92src/local.h
-
44src/netutils.c
-
3src/netutils.h
-
3src/plugin.c
-
324src/redir.c
-
76src/redir.h
-
601src/relay.c
-
5src/relay.h
-
403src/server.c
-
115src/server.h
-
295src/tunnel.c
-
79src/tunnel.h
@ -1,92 +0,0 @@ |
|||
/* |
|||
* local.h - Define the client's buffers and callbacks |
|||
* |
|||
* Copyright (C) 2013 - 2019, Max Lv <max.c.lv@gmail.com> |
|||
* |
|||
* This file is part of the shadowsocks-libev. |
|||
* |
|||
* shadowsocks-libev is free software; you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation; either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* shadowsocks-libev is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with shadowsocks-libev; see the file COPYING. If not, see |
|||
* <http://www.gnu.org/licenses/>. |
|||
*/ |
|||
|
|||
#ifndef _LOCAL_H |
|||
#define _LOCAL_H |
|||
|
|||
#include <libcork/ds.h> |
|||
|
|||
#ifdef HAVE_LIBEV_EV_H |
|||
#include <libev/ev.h> |
|||
#else |
|||
#include <ev.h> |
|||
#endif |
|||
|
|||
#ifdef __MINGW32__ |
|||
#include "winsock.h" |
|||
#endif |
|||
|
|||
#include "crypto.h" |
|||
#include "jconf.h" |
|||
#include "protocol.h" |
|||
|
|||
#include "common.h" |
|||
|
|||
typedef struct server_ctx { |
|||
ev_io io; |
|||
int connected; |
|||
struct server *server; |
|||
} server_ctx_t; |
|||
|
|||
typedef struct server { |
|||
int fd; |
|||
int stage; |
|||
|
|||
struct server_ctx *recv_ctx; |
|||
struct server_ctx *send_ctx; |
|||
struct listen_ctx *listen_ctx; |
|||
struct remote *remote; |
|||
|
|||
buffer_t *buf; |
|||
buffer_t *abuf; |
|||
|
|||
struct cork_dllist_item entries; |
|||
} server_t; |
|||
|
|||
typedef struct remote_ctx { |
|||
ev_io io; |
|||
ev_timer watcher; |
|||
int connected; |
|||
struct remote *remote; |
|||
} remote_ctx_t; |
|||
|
|||
typedef struct remote { |
|||
int fd; |
|||
int direct; |
|||
#ifdef TCP_FASTOPEN_WINSOCK |
|||
OVERLAPPED olap; |
|||
int connect_ex_done; |
|||
#endif |
|||
|
|||
buffer_t *buf; |
|||
|
|||
crypto_t *crypto; |
|||
cipher_ctx_t *e_ctx; |
|||
cipher_ctx_t *d_ctx; |
|||
|
|||
struct remote_ctx *recv_ctx; |
|||
struct remote_ctx *send_ctx; |
|||
struct server *server; |
|||
struct sockaddr_storage *addr; |
|||
} remote_t; |
|||
|
|||
#endif // _LOCAL_H |
@ -1,76 +0,0 @@ |
|||
/* * redir.h - Define the redirector's buffers and callbacks |
|||
* |
|||
* Copyright (C) 2013 - 2019, Max Lv <max.c.lv@gmail.com> |
|||
* |
|||
* This file is part of the shadowsocks-libev. |
|||
* |
|||
* shadowsocks-libev is free software; you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation; either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* shadowsocks-libev is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with shadowsocks-libev; see the file COPYING. If not, see |
|||
* <http://www.gnu.org/licenses/>. |
|||
*/ |
|||
|
|||
#ifndef _REDIR_H |
|||
#define _REDIR_H |
|||
|
|||
#ifdef HAVE_LIBEV_EV_H |
|||
#include <libev/ev.h> |
|||
#else |
|||
#include <ev.h> |
|||
#endif |
|||
|
|||
#include "crypto.h" |
|||
#include "jconf.h" |
|||
|
|||
typedef struct server_ctx { |
|||
ev_io io; |
|||
int connected; |
|||
struct server *server; |
|||
} server_ctx_t; |
|||
|
|||
typedef struct server { |
|||
int fd; |
|||
|
|||
buffer_t *buf; |
|||
buffer_t *abuf; |
|||
|
|||
struct server_ctx *recv_ctx; |
|||
struct server_ctx *send_ctx; |
|||
struct listen_ctx *listen_ctx; |
|||
struct remote *remote; |
|||
|
|||
ssocks_addr_t destaddr; |
|||
ev_timer delayed_connect_watcher; |
|||
} server_t; |
|||
|
|||
typedef struct remote_ctx { |
|||
ev_io io; |
|||
ev_timer watcher; |
|||
int connected; |
|||
struct remote *remote; |
|||
} remote_ctx_t; |
|||
|
|||
typedef struct remote { |
|||
int fd; |
|||
buffer_t *buf; |
|||
|
|||
crypto_t *crypto; |
|||
cipher_ctx_t *e_ctx; |
|||
cipher_ctx_t *d_ctx; |
|||
struct remote_ctx *recv_ctx; |
|||
struct remote_ctx *send_ctx; |
|||
struct server *server; |
|||
uint32_t counter; |
|||
struct sockaddr *addr; |
|||
} remote_t; |
|||
|
|||
#endif // _REDIR_H |
@ -1,115 +0,0 @@ |
|||
/* |
|||
* server.h - Define shadowsocks server's buffers and callbacks |
|||
* |
|||
* Copyright (C) 2013 - 2019, Max Lv <max.c.lv@gmail.com> |
|||
* |
|||
* This file is part of the shadowsocks-libev. |
|||
* |
|||
* shadowsocks-libev is free software; you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation; either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* shadowsocks-libev is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with shadowsocks-libev; see the file COPYING. If not, see |
|||
* <http://www.gnu.org/licenses/>. |
|||
*/ |
|||
|
|||
#ifndef _SERVER_H |
|||
#define _SERVER_H |
|||
|
|||
#include <time.h> |
|||
#include <libcork/ds.h> |
|||
|
|||
#ifdef HAVE_LIBEV_EV_H |
|||
#include <libev/ev.h> |
|||
#else |
|||
#include <ev.h> |
|||
#endif |
|||
|
|||
#ifdef __MINGW32__ |
|||
#include "winsock.h" |
|||
#endif |
|||
|
|||
#include "crypto.h" |
|||
#include "jconf.h" |
|||
#include "resolv.h" |
|||
#include "netutils.h" |
|||
|
|||
#include "common.h" |
|||
|
|||
typedef struct server_ctx { |
|||
ev_io io; |
|||
ev_timer watcher; |
|||
int connected; |
|||
struct server *server; |
|||
} server_ctx_t; |
|||
|
|||
#ifdef USE_NFCONNTRACK_TOS |
|||
|
|||
#include <libnetfilter_conntrack/libnetfilter_conntrack.h> |
|||
#include <libnetfilter_conntrack/libnetfilter_conntrack_tcp.h> |
|||
|
|||
struct dscptracker { |
|||
struct nf_conntrack *ct; |
|||
long unsigned int mark; |
|||
unsigned int dscp; |
|||
unsigned int packet_count; |
|||
}; |
|||
|
|||
#endif |
|||
|
|||
struct query; |
|||
|
|||
typedef struct server { |
|||
int fd; |
|||
int stage; |
|||
int frag; |
|||
|
|||
buffer_t *buf; |
|||
|
|||
crypto_t *crypto; |
|||
cipher_ctx_t *e_ctx; |
|||
cipher_ctx_t *d_ctx; |
|||
struct server_ctx *recv_ctx; |
|||
struct server_ctx *send_ctx; |
|||
struct listen_ctx *listen_ctx; |
|||
struct remote *remote; |
|||
|
|||
struct query *query; |
|||
|
|||
struct cork_dllist_item entries; |
|||
#ifdef USE_NFCONNTRACK_TOS |
|||
struct dscptracker *tracker; |
|||
#endif |
|||
} server_t; |
|||
|
|||
typedef struct query { |
|||
server_t *server; |
|||
char hostname[MAX_HOSTNAME_LEN]; |
|||
} query_t; |
|||
|
|||
typedef struct remote_ctx { |
|||
ev_io io; |
|||
int connected; |
|||
struct remote *remote; |
|||
} remote_ctx_t; |
|||
|
|||
typedef struct remote { |
|||
int fd; |
|||
#ifdef TCP_FASTOPEN_WINSOCK |
|||
OVERLAPPED olap; |
|||
int connect_ex_done; |
|||
#endif |
|||
buffer_t *buf; |
|||
struct remote_ctx *recv_ctx; |
|||
struct remote_ctx *send_ctx; |
|||
struct server *server; |
|||
} remote_t; |
|||
|
|||
#endif // _SERVER_H |
@ -1,79 +0,0 @@ |
|||
/* |
|||
* tunnel.h - Define tunnel's buffers and callbacks |
|||
* |
|||
* Copyright (C) 2013 - 2019, Max Lv <max.c.lv@gmail.com> |
|||
* |
|||
* This file is part of the shadowsocks-libev. |
|||
* |
|||
* shadowsocks-libev is free software; you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation; either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* shadowsocks-libev is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with shadowsocks-libev; see the file COPYING. If not, see |
|||
* <http://www.gnu.org/licenses/>. |
|||
*/ |
|||
|
|||
#ifndef _TUNNEL_H |
|||
#define _TUNNEL_H |
|||
|
|||
#ifdef HAVE_LIBEV_EV_H |
|||
#include <libev/ev.h> |
|||
#else |
|||
#include <ev.h> |
|||
#endif |
|||
|
|||
#ifdef __MINGW32__ |
|||
#include "winsock.h" |
|||
#endif |
|||
|
|||
#include "crypto.h" |
|||
#include "jconf.h" |
|||
|
|||
#include "common.h" |
|||
|
|||
typedef struct server_ctx { |
|||
ev_io io; |
|||
int connected; |
|||
struct server *server; |
|||
} server_ctx_t; |
|||
|
|||
typedef struct server { |
|||
int fd; |
|||
|
|||
buffer_t *buf; |
|||
|
|||
struct server_ctx *recv_ctx; |
|||
struct server_ctx *send_ctx; |
|||
struct remote *remote; |
|||
|
|||
struct listen_ctx *listener; |
|||
} server_t; |
|||
|
|||
typedef struct remote_ctx { |
|||
ev_io io; |
|||
ev_timer watcher; |
|||
int connected; |
|||
struct remote *remote; |
|||
} remote_ctx_t; |
|||
|
|||
typedef struct remote { |
|||
int fd; |
|||
#ifdef TCP_FASTOPEN_WINSOCK |
|||
OVERLAPPED olap; |
|||
int connect_ex_done; |
|||
#endif |
|||
buffer_t *buf; |
|||
struct remote_ctx *recv_ctx; |
|||
struct remote_ctx *send_ctx; |
|||
struct server *server; |
|||
struct sockaddr *addr; |
|||
} remote_t; |
|||
|
|||
#endif // _TUNNEL_H |
Write
Preview
Loading…
Cancel
Save