Giter Site home page Giter Site logo

shadowsocks-java's Introduction

shadowsocks-java

A implementation of Shadowsocks in Java base on netty4 framework.

Features

  • AEAD Ciphers support
  • TCP & UDP full support
  • DNS proxy optimization

Environment

  • JRE8

Install

  1. download shadowsocks-netty-x.x.x-bin.zip
  2. unzip shadowsocks-netty-x.x.x-bin.zip
  3. run

as ssserver

java -jar shadowsocks-netty-x.x.x.jar -s -conf="conf/config-example-server.json"

as ssclient

java -jar shadowsocks-netty-x.x.x.jar -c --conf="conf/config-example-client.json"

Config file as python port

Create configuration file and run

Build

  1. import as maven project
  2. maven package

TODO

  • ssr obfs features implementation(maybe no use,but for fun)
  • performance optimization
  • rate limit

shadowsocks-java's People

Contributors

dependabot[bot] avatar thomasperkins1123 avatar tlbcc avatar tongxiji avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

shadowsocks-java's Issues

关于启停端口的问题

目前的代码里面不同的端口是共用一个bossGroup和workerGroup,
如果要给某个端口单独停止掉的话,是不是其他端口也会被shutdown掉?

如果是这样的话,是不是要给每个端口去单独分配bossGroup和workerGroup 呢?

开启http_simple情况下的一个bug

问题:

开启http_simple情况下,SSCipherCodec 的入站的时候,最后会收到一个LastHttpContent的msg,
如下图所示,按照现在的代码就直接抛出exception了

查了下网上说是这么个玩意

解决方案:

我是在SSCipherCodec类 decode的时候,加了个判断直接把它return掉了,不知道这样处理对不对啊?
else if (msg instanceof LastHttpContent){ return; }

研究学习

代码跑了下,手机测试无法使用,进去后直接进入

 protected void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception {
        boolean isUdp = ctx.channel().attr(SSCommon.IS_UDP).get();

        if (isUdp) {
            DatagramPacket udpRaw = ((DatagramPacket) msg);
            if (udpRaw.content().readableBytes() < 4) { //no cipher, min size = 1 + 1 + 2 ,[1-byte type][variable-length host][2-byte port]
                return;
            }
            ctx.channel().attr(SSCommon.RemoteAddr).set(udpRaw.sender());
            ctx.fireChannelRead(udpRaw.content());
        } else {
            ctx.channel().attr(SSCommon.RemoteAddr).set((InetSocketAddress) ctx.channel().remoteAddress());
            ctx.channel().pipeline().remove(this);
            ctx.fireChannelRead(msg);
        }
    }

总是进入到else然后测试中就没有结果了,我们的网络可以直接访问google的结果不行了。。。

加混淆这个特性,在Windows上是怎么玩的

如题,我是在ss的客户端上用了一个simple-obfs的插件,然后用这个java服务端开启http_simple混淆,但是好像用不了

ERROR SSProtocolCodec - client /127.0.0.1:54086,error :java.lang.ArrayIndexOutOfBoundsException
SSProtocolCodec - client /127.0.0.1:54086,error :java.lang.NullPointerException

rc4-md5 数组越界问题

看日志上面经常有IndexOutOfBoundsException抛出来,定位到错误代码具体如下
(我的Rc4Md5Crypt里面有改动过,具体行数和你的应该不一样)

在 Rc4Md5Crypt 类里面

打印出来的size如下
iv size:14, bts size:32, _keyLength:16, _ivLength:16

感觉应该是 iv 的数组越界了,但是不知道是什么情况下触发的,
感觉应该是 _ivLength 没有及时更新导致的
对加密这块不是很懂,看代码里面getIVLength固定值写死是16,不知道上面iv 的length为啥变成14了
我猜测的解决方案如下,不知道对不对。。。。?

请教一个问题

我看百度上面shadowsocks协议的有握手阶段,会发送账号密码等信息 ,握手之后进行请求,但是我debug始终没有收到握手的协议。这个可能是什么原因?

[功能]多用户

希望能添加多用户的配置,单端口多用户或单端口单用户。

key

how get key from password

有个降低延迟的想法

在local和server之间维持n个长期活跃的连接,类似于CachedThreadPool这样,减少建立连接的开销,不知道这样的想法是不是可行?

java版本的内存占用还是很多的啊

进程启动后,用jmap测了下java对象所占用的内存其实没多少,
但是最后java进程占用的总内存大概是python版的2倍以上(启动相同的端口数目情况下)
java版本的文件句柄有这么吃内存么 = = 。。。。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.