easyss

package module
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Dec 9, 2019 License: MIT Imports: 20 Imported by: 0

README

easyss

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

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

特性

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

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

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

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

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

当前版本

v1.0

TODO

  • 添加UDP转发支持
  • 支持手机端

下载安装

在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: 服务器ip或者域名(必填)
  • 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

View Source
var (
	ErrInvalidUDPData = errors.New("invalid udp data")
)

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) LocalPort

func (ss *Easyss) LocalPort() int

func (*Easyss) Remote

func (ss *Easyss) Remote()

func (*Easyss) ServerPort

func (ss *Easyss) ServerPort() int

func (*Easyss) UDPLocal

func (ss *Easyss) UDPLocal()

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