本文整理汇总了Golang中github.com/shadowsocks/shadowsocks-go/shadowsocks.NewCipher函数的典型用法代码示例。如果您正苦于以下问题:Golang NewCipher函数的具体用法?Golang NewCipher怎么用?Golang NewCipher使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewCipher函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: parseServerConfig
func parseServerConfig(config *ss.Config) {
if len(config.ServerPassword) == 0 {
// only one encryption table
cipher, err := ss.NewCipher(config.Method, config.Password)
if err != nil {
log.Fatal("Failed generating ciphers:", err)
}
srvPort := strconv.Itoa(config.ServerPort)
srvArr := config.GetServerArray()
n := len(srvArr)
servers.srvCipher = make([]*ServerCipher, n)
for i, s := range srvArr {
if ss.HasPort(s) {
log.Println("ignore server_port option for server", s)
servers.srvCipher[i] = &ServerCipher{s, cipher}
} else {
servers.srvCipher[i] = &ServerCipher{s + ":" + srvPort, cipher}
}
}
} else {
// multiple servers
n := len(config.ServerPassword)
servers.srvCipher = make([]*ServerCipher, n)
cipherCache := make(map[string]ss.Cipher)
i := 0
for _, serverInfo := range config.ServerPassword {
if len(serverInfo) < 2 || len(serverInfo) > 3 {
log.Fatalf("server %v syntax error\n", serverInfo)
}
server := serverInfo[0]
passwd := serverInfo[1]
encmethod := ""
if len(serverInfo) == 3 {
encmethod = serverInfo[2]
}
if !ss.HasPort(server) {
log.Fatalf("no port for server %s, please specify port in the form of %s:port\n", server, server)
}
cipher, ok := cipherCache[passwd]
if !ok {
var err error
cipher, err = ss.NewCipher(encmethod, passwd)
if err != nil {
log.Fatal("Failed generating ciphers:", err)
}
cipherCache[passwd] = cipher
}
servers.srvCipher[i] = &ServerCipher{server, cipher}
i++
}
}
servers.failCnt = make([]int, len(servers.srvCipher))
for _, se := range servers.srvCipher {
log.Println("available remote server", se.server)
}
return
}
开发者ID:jameszhl,项目名称:shadowsocks-go,代码行数:59,代码来源:local.go
示例2: initServers
func initServers(config *ss.Config) {
if len(config.ServerPassword) == 0 {
// only one encryption table
cipher, err := ss.NewCipher(config.Password)
if err != nil {
log.Fatal("Failed generating ciphers:", err)
}
srvPort := strconv.Itoa(config.ServerPort)
srvArr := config.GetServerArray()
n := len(srvArr)
servers.srvCipher = make([]*ServerCipher, n, n)
for i, s := range srvArr {
if ss.HasPort(s) {
log.Println("ignore server_port option for server", s)
servers.srvCipher[i] = &ServerCipher{s, cipher}
} else {
servers.srvCipher[i] = &ServerCipher{s + ":" + srvPort, cipher}
}
}
} else {
n := len(config.ServerPassword)
servers.srvCipher = make([]*ServerCipher, n, n)
cipherCache := make(map[string]ss.Cipher)
i := 0
for s, passwd := range config.ServerPassword {
if !ss.HasPort(s) {
log.Fatal("no port for server %s, please specify port in the form of %s:port", s, s)
}
cipher, ok := cipherCache[passwd]
if !ok {
var err error
cipher, err = ss.NewCipher(passwd)
if err != nil {
log.Fatal("Failed generating ciphers:", err)
}
cipherCache[passwd] = cipher
}
servers.srvCipher[i] = &ServerCipher{s, cipher}
i++
}
}
for _, se := range servers.srvCipher {
log.Println("available remote server", se.server)
}
return
}
开发者ID:code2u,项目名称:shadowsocks-go,代码行数:48,代码来源:local.go
示例3: clientMethodSelected
func clientMethodSelected(method uint8, conn net.Conn) (net.Conn, error) {
switch method {
case gosocks5.MethodUserPass:
user, pass := parseUserPass(Password)
if err := clientSocksAuth(conn, user, pass); err != nil {
return nil, err
}
case MethodTLS, MethodTLSAuth:
conn = tls.Client(conn, &tls.Config{InsecureSkipVerify: true})
if method == MethodTLSAuth {
if len(Password) == 0 {
return nil, ErrEmptyAuth
}
if err := clientSocksAuth(conn, "", Password); err != nil {
return nil, err
}
}
case MethodAES128, MethodAES192, MethodAES256,
MethodDES, MethodBF, MethodCAST5, MethodRC4MD5, MethodRC4, MethodTable:
cipher, err := shadowsocks.NewCipher(Methods[method], Password)
if err != nil {
log.Println(err)
return nil, err
}
conn = shadowsocks.NewConn(conn, cipher)
case gosocks5.MethodNoAcceptable:
return nil, gosocks5.ErrBadMethod
}
return conn, nil
}
开发者ID:Weeker,项目名称:gost,代码行数:31,代码来源:client.go
示例4: serverMethodSelected
func serverMethodSelected(method uint8, conn net.Conn) (net.Conn, error) {
switch method {
case MethodTLS:
var cert tls.Certificate
var err error
if len(CertFile) == 0 || len(KeyFile) == 0 {
cert, err = tls.X509KeyPair([]byte(rawCert), []byte(rawKey))
} else {
cert, err = tls.LoadX509KeyPair(CertFile, KeyFile)
}
if err != nil {
return nil, err
}
conn = tls.Server(conn, &tls.Config{Certificates: []tls.Certificate{cert}})
if err := svrTLSAuth(conn); err != nil {
return nil, err
}
case MethodAES128, MethodAES192, MethodAES256,
MethodDES, MethodBF, MethodCAST5, MethodRC4MD5, MethodRC4, MethodTable:
cipher, err := shadowsocks.NewCipher(Methods[method], Password)
if err != nil {
return nil, err
}
conn = shadowsocks.NewConn(conn, cipher)
case gosocks5.MethodNoAcceptable:
return nil, gosocks5.ErrBadMethod
}
return conn, nil
}
开发者ID:gitHubOffical,项目名称:gost,代码行数:32,代码来源:socks5.go
示例5: handleShadow
func handleShadow(conn net.Conn, arg Args) {
if arg.User != nil {
method := arg.User.Username()
password, _ := arg.User.Password()
cipher, err := shadowsocks.NewCipher(method, password)
if err != nil {
glog.V(LWARNING).Infoln("shadowsocks:", err)
return
}
conn = shadowsocks.NewConn(conn, cipher)
}
addr, extra, err := getShadowRequest(conn)
if err != nil {
glog.V(LWARNING).Infoln("shadowsocks:", err)
return
}
glog.V(LINFO).Infoln("shadowsocks connect:", addr.String())
sconn, err := Connect(addr.String())
if err != nil {
glog.V(LWARNING).Infoln("shadowsocks:", err)
return
}
defer sconn.Close()
if extra != nil {
if _, err := sconn.Write(extra); err != nil {
glog.V(LWARNING).Infoln("shadowsocks:", err)
return
}
}
Transport(conn, sconn)
}
开发者ID:raoxiangrong,项目名称:gost,代码行数:35,代码来源:ss.go
示例6: run
func run(port, password string) {
ln, err := net.Listen("tcp", ":"+port)
if err != nil {
log.Printf("error listening port %v: %v\n", port, err)
return
}
passwdManager.add(port, password, ln)
var cipher *ss.Cipher
log.Printf("server listening port %v ...\n", port)
for {
conn, err := ln.Accept()
if err != nil {
// listener maybe closed to update password
debug.Printf("accept error: %v\n", err)
return
}
// Creating cipher upon first connection.
if cipher == nil {
log.Println("creating cipher for port:", port)
cipher, err = ss.NewCipher(config.Method, password)
if err != nil {
log.Printf("Error generating cipher for port: %s %v\n", port, err)
conn.Close()
continue
}
}
go handleConnection(ss.NewConn(conn, cipher.Copy()))
}
}
开发者ID:WaylandGod,项目名称:shadowsocks-go,代码行数:29,代码来源:server.go
示例7: initCipher
func (sp *shadowsocksParent) initCipher(passwd, method string) {
cipher, err := ss.NewCipher(method, passwd)
if err != nil {
Fatal("creating shadowsocks cipher:", err)
}
sp.cipher = cipher
}
开发者ID:qiaoxueshi,项目名称:cow,代码行数:7,代码来源:parent_proxy.go
示例8: runWithCustomMethod
func runWithCustomMethod(user user.User) {
// port, password string, Cipher *ss.Cipher
port := strconv.Itoa(user.GetPort())
password := user.GetPasswd()
ln, err := net.Listen("tcp", ":"+port)
if err != nil {
Log.Error(fmt.Sprintf("error listening port %v: %v\n", port, err))
os.Exit(1)
}
passwdManager.add(port, password, ln)
cipher, err := user.GetCipher()
if err != nil {
return
}
Log.Info(fmt.Sprintf("server listening port %v ...\n", port))
for {
conn, err := ln.Accept()
if err != nil {
// listener maybe closed to update password
Log.Debug(fmt.Sprintf("accept error: %v\n", err))
return
}
// Creating cipher upon first connection.
if cipher == nil {
Log.Debug("creating cipher for port:", port)
cipher, err = ss.NewCipher(user.GetMethod(), password)
if err != nil {
Log.Error(fmt.Sprintf("Error generating cipher for port: %s %v\n", port, err))
conn.Close()
continue
}
}
go handleConnection(user, ss.NewConn(conn, cipher.Copy()))
}
}
开发者ID:bg4kks,项目名称:shadowsocks-go,代码行数:35,代码来源:func.go
示例9: newMeowProxy
func newMeowProxy(method, passwd, addr string) *meowProxy {
cipher, err := ss.NewCipher(method, passwd)
if err != nil {
Fatal("can't initialize meow proxy server", err)
}
return &meowProxy{addr, method, passwd, cipher}
}
开发者ID:sbyinin,项目名称:MEOW,代码行数:7,代码来源:proxy.go
示例10: newCowParent
func newCowParent(srv, method, passwd string) *cowParent {
cipher, err := ss.NewCipher(method, passwd)
if err != nil {
Fatal("create cow cipher:", err)
}
return &cowParent{srv, method, passwd, cipher}
}
开发者ID:phoenix,项目名称:cow,代码行数:7,代码来源:parent_proxy.go
示例11: initCipher
func (sp *shadowsocksParent) initCipher(method, passwd string) {
sp.method = method
sp.passwd = passwd
cipher, err := ss.NewCipher(method, passwd)
if err != nil {
Fatal("create shadowsocks cipher:", err)
}
sp.cipher = cipher
}
开发者ID:phoenix,项目名称:cow,代码行数:9,代码来源:parent_proxy.go
示例12: init
func init() {
proxyTransports["http"] = func(proxyURL *url.URL) (*http.Transport, error) {
return &http.Transport{
Proxy: func(req *http.Request) (*url.URL, error) {
return proxyURL, nil
},
}, nil
}
proxyTransports["socks5"] = func(proxyURL *url.URL) (*http.Transport, error) {
ph, err := proxy.FromURL(proxyURL, proxy.Direct)
if err != nil {
return nil, err
}
return &http.Transport{
Dial: ph.Dial,
}, nil
}
proxyTransports["socks4"] = func(proxyURL *url.URL) (*http.Transport, error) {
dialSocksProxy := socks.DialSocksProxy(socks.SOCKS4A, proxyURL.Host)
return &http.Transport{
Dial: dialSocksProxy,
}, nil
}
proxyTransports["socks4a"] = func(proxyURL *url.URL) (*http.Transport, error) {
dialSocksProxy := socks.DialSocksProxy(socks.SOCKS4A, proxyURL.Host)
return &http.Transport{
Dial: dialSocksProxy,
}, nil
}
//shadowsocks
proxyTransports["ss"] = func(proxyURL *url.URL) (*http.Transport, error) {
if proxyURL.User == nil {
return nil, fmt.Errorf("wrong shadowsocks uri,need method and passwd")
}
psw, _ := proxyURL.User.Password()
cipher, err := ss.NewCipher(proxyURL.User.Username(), psw)
if err != nil {
return nil, err
}
serverAddr := proxyURL.Host
return &http.Transport{
Dial: func(_, addr string) (net.Conn, error) {
return ss.Dial(addr, serverAddr, cipher.Copy())
},
// DialTLS:func(_, addr string) (net.Conn, error) {
// return ss.Dial(addr, serverAddr, cipher.Copy())
// },
}, nil
}
}
开发者ID:hidu,项目名称:proxy-manager,代码行数:56,代码来源:client.go
示例13: forward
func forward(conn net.Conn, arg Args) (net.Conn, error) {
var err error
if glog.V(LINFO) {
proto := arg.Protocol
if proto == "default" {
proto = "http" // default is http
}
glog.Infof("forward: %s/%s %s", proto, arg.Transport, arg.Addr)
}
switch arg.Transport {
case "ws": // websocket connection
conn, err = wsClient(conn, arg.Addr)
if err != nil {
return nil, err
}
case "tls": // tls connection
conn = tls.Client(conn, &tls.Config{InsecureSkipVerify: true})
case "tcp":
fallthrough
default:
}
switch arg.Protocol {
case "socks", "socks5":
selector := &clientSelector{
methods: []uint8{
gosocks5.MethodNoAuth,
gosocks5.MethodUserPass,
MethodTLS,
},
arg: arg,
}
c := gosocks5.ClientConn(conn, selector)
if err := c.Handleshake(); err != nil {
return nil, err
}
conn = c
case "ss": // shadowsocks
if arg.User != nil {
method := arg.User.Username()
password, _ := arg.User.Password()
cipher, err := shadowsocks.NewCipher(method, password)
if err != nil {
return nil, err
}
conn = shadowsocks.NewConn(conn, cipher)
}
case "http":
fallthrough
default:
}
return conn, nil
}
开发者ID:raoxiangrong,项目名称:gost,代码行数:54,代码来源:conn.go
示例14: GetCipher
func (u User) GetCipher() (*ss.Cipher, error, bool) {
method := u.Method
auth := false
if strings.HasSuffix(method, "-auth") {
method = method[:len(method)-5]
auth = true
}
s, e := ss.NewCipher(method, u.Passwd)
return s, e, auth
}
开发者ID:ywengineer,项目名称:shadowsocks-go,代码行数:11,代码来源:user.go
示例15: Dial
func (s *SSDialer) Dial(network, addr string) (c net.Conn, err error) {
cipher, err := ss.NewCipher(s.Method, s.Password)
if err != nil {
return nil, err
}
ssConn, err := ss.Dial(addr, s.Host, cipher)
if err != nil {
return nil, err
}
return ssConn, nil
}
开发者ID:hyqhyq3,项目名称:through,代码行数:11,代码来源:ss_dialer.go
示例16: initCipher
func (sp *shadowsocksParent) initCipher(method, passwd string) error {
if method == "table" {
method = ""
}
sp.method = method
sp.passwd = passwd
cipher, err := ss.NewCipher(method, passwd)
if err != nil {
return err
}
sp.cipher = cipher
return nil
}
开发者ID:gale320,项目名称:cow,代码行数:13,代码来源:parent_proxy.go
示例17: New
func New(conf *ProxyConfig) (ps *ProxyServer, err error) {
ps = &ProxyServer{
config: conf,
joins: make(chan net.Conn),
stop: make(chan bool),
Stopped: true,
}
ps.Cip, err = ss.NewCipher(conf.Method, conf.EncrStr)
if err != nil {
err = errors.Newf("create cipher error: %v", err)
}
return
}
开发者ID:udo-tech-team,项目名称:mus,代码行数:13,代码来源:proxy.go
示例18: runWithCustomMethod
func runWithCustomMethod(user user.User) {
// port, password string, Cipher *ss.Cipher
port := strconv.Itoa(user.GetPort())
// 检测端口是否已存在
_, ok := passwdManager.get(port)
// 如果存在
if ok {
return
}
password := user.GetPasswd()
ln, err := net.Listen("tcp", ":"+port)
if err != nil {
Log.Error(fmt.Sprintf("error listening port %v: %v\n", port, err))
// os.Exit(1)
return
}
passwdManager.add(port, password, ln)
cipher, err, auth := user.GetCipher()
if err != nil {
return
}
Log.Info(fmt.Sprintf("server listening port %v ...\n", port))
for {
conn, err := ln.Accept()
if err != nil {
// listener maybe closed to update password
Log.Debug(fmt.Sprintf("accept error: %v\n", err))
return
}
// Creating cipher upon first connection.
if cipher == nil {
Log.Debug("creating cipher for port:", port)
method := user.GetMethod()
if strings.HasSuffix(method, "-auth") {
method = method[:len(method)-5]
auth = true
} else {
auth = false
}
cipher, err = ss.NewCipher(method, password)
if err != nil {
Log.Error(fmt.Sprintf("Error generating cipher for port: %s %v\n", port, err))
conn.Close()
continue
}
}
go handleConnection(user, ss.NewConn(conn, cipher.Copy()), auth)
}
}
开发者ID:ywengineer,项目名称:shadowsocks-go,代码行数:51,代码来源:func.go
示例19: serverMethodSelected
func serverMethodSelected(method uint8, conn net.Conn) (net.Conn, error) {
//log.Println(method)
switch method {
case gosocks5.MethodUserPass:
var username, password string
if listenUrl != nil && listenUrl.User != nil {
username = listenUrl.User.Username()
password, _ = listenUrl.User.Password()
}
if err := serverSocksAuth(conn, username, password); err != nil {
return nil, err
}
case MethodTLS, MethodTLSAuth:
var cert tls.Certificate
var err error
if len(CertFile) == 0 || len(KeyFile) == 0 {
cert, err = tls.X509KeyPair([]byte(rawCert), []byte(rawKey))
} else {
cert, err = tls.LoadX509KeyPair(CertFile, KeyFile)
}
if err != nil {
return nil, err
}
conn = tls.Server(conn, &tls.Config{Certificates: []tls.Certificate{cert}})
if method == MethodTLSAuth {
// password is mandatory
if len(Password) == 0 {
return nil, ErrEmptyAuth
}
if err := serverSocksAuth(conn, "", Password); err != nil {
return nil, err
}
}
case MethodAES128, MethodAES192, MethodAES256,
MethodDES, MethodBF, MethodCAST5, MethodRC4MD5, MethodRC4, MethodTable:
cipher, err := shadowsocks.NewCipher(Methods[method], Password)
if err != nil {
return nil, err
}
conn = shadowsocks.NewConn(conn, cipher)
case gosocks5.MethodNoAcceptable:
return nil, gosocks5.ErrBadMethod
}
return conn, nil
}
开发者ID:killtime1215,项目名称:gost,代码行数:50,代码来源:socks5.go
示例20: runUDP
func runUDP(port string, password [3]string) {
addr, _ := net.ResolveUDPAddr(netUdp, ":"+port)
conn, err := net.ListenUDP(netUdp, addr)
if err != nil {
log.Printf("error listening udp port %v: %v\n", port, err)
return
}
passwdManager.addUDP(port, password, conn)
log.Printf("server listening udp port %v ...\n", port)
defer conn.Close()
var cipher *ss.Cipher
cipher, err = ss.NewCipher(config.Method, password[0])
if err != nil {
log.Printf("Error generating cipher for udp port: %s %v\n", port, err)
conn.Close()
}
ss.HandleUDPConnection(ss.NewUDPConn(conn, cipher.Copy()), password[1])
}
开发者ID:better0332,项目名称:my-shadowsocks-go,代码行数:18,代码来源:server.go
注:本文中的github.com/shadowsocks/shadowsocks-go/shadowsocks.NewCipher函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论