Skip to content

Commit

Permalink
fix JoinHostPort
Browse files Browse the repository at this point in the history
  • Loading branch information
xxf098 committed Jan 15, 2023
1 parent e5f5bc6 commit ab3e625
Show file tree
Hide file tree
Showing 6 changed files with 19 additions and 11 deletions.
10 changes: 6 additions & 4 deletions config/parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ import (
"encoding/base64"
"encoding/json"
"fmt"
"net"
"net/url"
"strconv"
"strings"

"github.com/xxf098/lite-proxy/common/structure"
Expand All @@ -31,7 +33,7 @@ func ParseProxy(mapping map[string]interface{}, namePrefix string) (string, erro
break
}
auth := fmt.Sprintf("%s:%s", ssOption.Cipher, ssOption.Password)
link = fmt.Sprintf("ss://%s@%s:%d", base64.StdEncoding.EncodeToString([]byte(auth)), ssOption.Server, ssOption.Port)
link = fmt.Sprintf("ss://%s@%s", base64.StdEncoding.EncodeToString([]byte(auth)), net.JoinHostPort(ssOption.Server, strconv.Itoa(ssOption.Port)))
if len(ssOption.Name) > 0 {
link = fmt.Sprintf("%s#%s", link, url.QueryEscape(ssOption.Name))
}
Expand All @@ -42,7 +44,7 @@ func ParseProxy(mapping map[string]interface{}, namePrefix string) (string, erro
break
}
password := base64.StdEncoding.EncodeToString([]byte(ssrOption.Password))
link = fmt.Sprintf("%s:%d:%s:%s:%s:%s", ssrOption.Server, ssrOption.Port, ssrOption.Protocol, ssrOption.Cipher, ssrOption.Obfs, password)
link = fmt.Sprintf("%s:%s:%s:%s:%s", net.JoinHostPort(ssrOption.Server, strconv.Itoa(ssrOption.Port)), ssrOption.Protocol, ssrOption.Cipher, ssrOption.Obfs, password)
remarks := base64.StdEncoding.EncodeToString([]byte(ssrOption.Name))

obfsParam := base64.StdEncoding.EncodeToString([]byte(ssrOption.ObfsParam))
Expand Down Expand Up @@ -118,7 +120,7 @@ func ParseProxy(mapping map[string]interface{}, namePrefix string) (string, erro
break
}

link = fmt.Sprintf("trojan://%s@%s:%d", trojanOption.Password, trojanOption.Server, trojanOption.Port)
link = fmt.Sprintf("trojan://%s@%s", trojanOption.Password, net.JoinHostPort(trojanOption.Server, strconv.Itoa(trojanOption.Port)))
query := []string{}
// allowInsecure
if trojanOption.SkipCertVerify {
Expand Down Expand Up @@ -162,7 +164,7 @@ func ParseProxy(mapping map[string]interface{}, namePrefix string) (string, erro
if err != nil {
break
}
link = fmt.Sprintf("http://%s@%s:%d", httpOption.Password, httpOption.Server, httpOption.Port)
link = fmt.Sprintf("http://%s@%s", httpOption.Password, net.JoinHostPort(httpOption.Server, strconv.Itoa(httpOption.Port)))
query := []string{}
query = append(query, fmt.Sprintf("tls=%t", httpOption.TLS))
if len(httpOption.UserName) > 0 {
Expand Down
4 changes: 2 additions & 2 deletions config/shadowsocksr.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package config

import (
"errors"
"fmt"
"net"
"net/url"
"regexp"
"strconv"
Expand Down Expand Up @@ -77,7 +77,7 @@ func SSRLinkToSSROption(link string) (*outbound.ShadowSocksROption, error) {
remarks, err := utils.DecodeB64(rawQuery.Get("remarks"))
if err == nil {
if remarks == "" {
remarks = fmt.Sprintf("%s:%d", ssrOption.Server, ssrOption.Port)
remarks = net.JoinHostPort(ssrOption.Server, strconv.Itoa(ssrOption.Port))
}
ssrOption.Remarks = remarks
ssrOption.Name = remarks
Expand Down
4 changes: 3 additions & 1 deletion core/core.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import (
"errors"
"fmt"
"log"
"net"
"strconv"
"time"

"github.com/xxf098/lite-proxy/config"
Expand Down Expand Up @@ -52,7 +54,7 @@ func StartInstance(c Config) (*proxy.Proxy, error) {
Attempts: c.Ping,
TimeOut: 1200 * time.Millisecond,
}
info := fmt.Sprintf("%s %s:%d", cfg.Remarks, cfg.Server, cfg.Port)
info := fmt.Sprintf("%s %s", cfg.Remarks, net.JoinHostPort(cfg.Server, strconv.Itoa(cfg.Port)))
if elapse, err := request.PingLinkInternal(link, opt); err == nil {
info = fmt.Sprintf("%s \033[32m%dms\033[0m", info, elapse)
} else {
Expand Down
3 changes: 2 additions & 1 deletion proxy/proxy.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"fmt"
"io"
"net"
"strconv"
"time"

"github.com/xxf098/lite-proxy/common"
Expand Down Expand Up @@ -60,7 +61,7 @@ func (p *Proxy) relayConnLoop() {
if networkType == "" {
networkType = "tcp"
}
add := fmt.Sprintf("%s:%d", addr.IP.String(), addr.Port)
add := net.JoinHostPort(addr.IP.String(), strconv.Itoa(addr.Port))
outbound, err = net.Dial(networkType, add)
} else {
outbound, err = p.sink.DialConn(addr, nil)
Expand Down
6 changes: 4 additions & 2 deletions web/msg.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ package web
import (
"encoding/json"
"fmt"
"net"
"strconv"
"strings"

"github.com/xxf098/lite-proxy/config"
Expand Down Expand Up @@ -48,7 +50,7 @@ func gotserverMsg(id int, link string, groupName string) []byte {
if err == nil {
msg.Group = groupName
msg.Remarks = cfg.Remarks
msg.Server = fmt.Sprintf("%s:%d", cfg.Server, cfg.Port)
msg.Server = net.JoinHostPort(cfg.Server, strconv.Itoa(cfg.Port))
msg.Protocol = cfg.Protocol
if cfg.Protocol == "vmess" && cfg.Net != "" {
msg.Protocol = fmt.Sprintf("%s/%s", cfg.Protocol, cfg.Net)
Expand All @@ -68,7 +70,7 @@ func gotserversMsg(startID int, links []string, groupName string) []byte {
if err == nil {
msg.Group = groupName
msg.Remarks = cfg.Remarks
msg.Server = fmt.Sprintf("%s:%d", cfg.Server, cfg.Port)
msg.Server = net.JoinHostPort(cfg.Server, strconv.Itoa(cfg.Port))
msg.Protocol = cfg.Protocol
if (cfg.Protocol == "vmess" || cfg.Protocol == "trojan") && cfg.Net != "" {
msg.Protocol = fmt.Sprintf("%s/%s", cfg.Protocol, cfg.Net)
Expand Down
3 changes: 2 additions & 1 deletion web/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
"net/http"
"net/url"
"os"
"strconv"
"strings"
"time"

Expand All @@ -33,7 +34,7 @@ func ServeFile(port int) error {
http.HandleFunc("/generateResult", generateResult)
log.Printf("Start server at http://127.0.0.1:%d\n", port)
if ipAddr, err := localIP(); err == nil {
log.Printf("Start server at http://%s:%d", ipAddr.String(), port)
log.Printf("Start server at http://%s", net.JoinHostPort(ipAddr.String(), strconv.Itoa(port)))
}
err := http.ListenAndServe(fmt.Sprintf(":%d", port), nil)
return err
Expand Down

0 comments on commit ab3e625

Please sign in to comment.