easyss

package module
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 25, 2020 License: MIT Imports: 24 Imported by: 0

README

easyss

easyss是一款兼容socks5的安全上网工具,目标是使访问国外技术网站更流畅免受干扰。

有报道表明访问国外技术网站正变得越来越困难,即使用了一些常用代理技术也面临被干扰的可能性。 为了以防万一,提前准备,重新实现了一套协议以加快访问速度和对抗嗅探。

特性

  • 支持SOCKS5,HTTP(S)代理协议

  • (只)支持(AEAD类型)高强度加密通信, 如aes-256-gcm, chacha20-poly1305

  • http2帧格式交互 (更灵活通用, 更易扩展)

  • 支持tcp连接池 (默认启用,大幅降低请求延迟)

  • 自动pac代理, (可选)支持全局模式, 支持系统托盘图标管理 (thanks lantern)

当前版本

v1.0

TODO

  • 支持手机端

下载安装

在release页面直接下载(各平台)编译好的二进制文件

点我去下载

或者 go get 安装最新开发版(version 1.11+ is required)
apt-get install libgtk-3-dev libappindicator3-dev -y

# 安装客户端程序
go get github.com/nange/easyss/cmd/client-server 

# 安装服务端程序
go get github.com/nange/easyss/cmd/remote-server 

用法

客户端

copy本项目中的config.json文件和上面下载的二进制文件放同一目录. 打开config.json文件, 修改里面对应的项:

  • server: 服务器域名(必填)
  • server_port: 服务器对应端口(必填)
  • local_port: 本地监听端口(默认1080)
  • password: 通信加密密钥(必填)
  • method: 通信加密方式(默认aes-256-gcm)
  • timeout: 超时时间,单位秒

修改完成后, 双击二进制文件,程序会自动启动,托盘会出现easyss的图标,如下:

托盘图标

右键图标可选择全局模式.

服务器端

和客户端一样, 先把二进制和config.json文件放同一目录. 修改config.json文件, 其中server_port和password必填, 执行:

./remote-server
docker部署

docker run -d --name easyss -p yourport:yourport nange/docker-easyss:latest -p yourport -k yourpassword

LICENSE

MIT License

Documentation

Index

Constants

View Source
const (
	LogMaxAge       = 24 * time.Hour
	LogRotationTime = 12 * time.Hour
)
View Source
const (
	ESTABLISHED state = iota
	FIN_WAIT1
	FIN_WAIT2
	LAST_ACK
	CLOSING
	CLOSE_WAIT
	TIME_WAIT
	CLOSED
)

Variables

This section is empty.

Functions

func Daemon

func Daemon(godaemon bool)

func DecodeCipherMethod

func DecodeCipherMethod(b byte) string

func EncodeCipherMethod

func EncodeCipherMethod(m string) byte

func PrintVersion

func PrintVersion()

func UpdateConfig

func UpdateConfig(old, ne *Config)

Types

type Config

type Config struct {
	Server     string `json:"server"`
	ServerPort int    `json:"server_port"`
	LocalPort  int    `json:"local_port"`
	Password   string `json:"password"`
	Method     string `json:"method"` // encryption method
	Timeout    int    `json:"timeout"`
}

func ParseConfig

func ParseConfig(path string) (config *Config, err error)

type ConnState

type ConnState struct {
	// contains filtered or unexported fields
}

func NewConnState

func NewConnState(s state, buf []byte) *ConnState

func (*ConnState) CloseWait

func (cs *ConnState) CloseWait(conn io.ReadWriteCloser) *ConnState

func (*ConnState) Closed

func (cs *ConnState) Closed(conn io.ReadWriteCloser) *ConnState

func (*ConnState) Closing

func (cs *ConnState) Closing(conn io.ReadWriteCloser) *ConnState

func (*ConnState) FINWait1

func (cs *ConnState) FINWait1(conn io.ReadWriteCloser) *ConnState

func (*ConnState) FINWait2

func (cs *ConnState) FINWait2(conn io.ReadWriteCloser) *ConnState

func (*ConnState) LastACK

func (cs *ConnState) LastACK(conn io.ReadWriteCloser) *ConnState

func (*ConnState) TimeWait

func (cs *ConnState) TimeWait(conn io.ReadWriteCloser) *ConnState

type ConnStateFn

type ConnStateFn func(conn io.ReadWriteCloser) *ConnState

type Easyss

type Easyss struct {
	LogFileWriter io.Writer
	// contains filtered or unexported fields
}

func New

func New(config *Config) (*Easyss, error)

func (*Easyss) Close

func (ss *Easyss) Close()

func (*Easyss) GetLogFileFullPathName

func (ss *Easyss) GetLogFileFullPathName() string

func (*Easyss) HttpLocal

func (ss *Easyss) HttpLocal()

func (*Easyss) InitTcpPool

func (ss *Easyss) InitTcpPool() error

func (*Easyss) Local

func (ss *Easyss) Local()

func (*Easyss) LocalAddr added in v1.1.0

func (ss *Easyss) LocalAddr() string

func (*Easyss) LocalPort

func (ss *Easyss) LocalPort() int

func (*Easyss) Remote

func (ss *Easyss) Remote()

func (*Easyss) ServerPort

func (ss *Easyss) ServerPort() int

func (*Easyss) TCPHandle added in v1.1.0

func (ss *Easyss) TCPHandle(s *socks5.Server, conn *net.TCPConn, r *socks5.Request) error

func (*Easyss) UDPHandle added in v1.1.0

func (ss *Easyss) UDPHandle(s *socks5.Server, addr *net.UDPAddr, d *socks5.Datagram) error

type Statistics added in v1.1.0

type Statistics struct {
	BytesSend   int64
	BytesRecive int64
}

Directories

Path Synopsis
cmd
client-server command
remote-server command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL