Browse Source

plugin: socks5 support user password auth, close #484

fatedier 7 years ago
parent
commit
41c41789b6
2 changed files with 21 additions and 4 deletions
  1. 8 1
      conf/frpc_full.ini
  2. 13 3
      models/plugin/socks5.go

+ 8 - 1
conf/frpc_full.ini

@@ -142,9 +142,16 @@ plugin = http_proxy
 plugin_http_user = abc
 plugin_http_passwd = abc
 
-[plugin_static_file]
+[plugin_socks5]
 type = tcp
 remote_port = 6005
+plugin = socks5
+plugin_user = abc
+plugin_passwd = abc
+
+[plugin_static_file]
+type = tcp
+remote_port = 6006
 plugin = static_file
 plugin_local_path = /var/www/blog
 plugin_strip_prefix = static

+ 13 - 3
models/plugin/socks5.go

@@ -32,13 +32,23 @@ func init() {
 
 type Socks5Plugin struct {
 	Server *gosocks5.Server
+
+	user   string
+	passwd string
 }
 
 func NewSocks5Plugin(params map[string]string) (p Plugin, err error) {
-	sp := &Socks5Plugin{}
-	sp.Server, err = gosocks5.New(&gosocks5.Config{
+	user := params["plugin_user"]
+	passwd := params["plugin_passwd"]
+
+	cfg := &gosocks5.Config{
 		Logger: log.New(ioutil.Discard, "", log.LstdFlags),
-	})
+	}
+	if user != "" || passwd != "" {
+		cfg.Credentials = gosocks5.StaticCredentials(map[string]string{user: passwd})
+	}
+	sp := &Socks5Plugin{}
+	sp.Server, err = gosocks5.New(cfg)
 	p = sp
 	return
 }