16 changed files with 690 additions and 1695 deletions
Unified 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