Refactor: stats -> restapi

This commit is contained in:
xjasonlyu
2022-03-29 19:25:45 +08:00
parent e6911cb6fb
commit b166ed5e66
11 changed files with 50 additions and 36 deletions

View File

@@ -3,6 +3,7 @@ package engine
import (
"encoding/base64"
"fmt"
"net"
"net/url"
"strings"
@@ -13,6 +14,33 @@ import (
"github.com/xjasonlyu/tun2socks/v2/proxy/proto"
)
func parseRestAPI(s string) (*url.URL, error) {
if !strings.Contains(s, "://") {
s = fmt.Sprintf("%s://%s", "http", s)
}
u, err := url.Parse(s)
if err != nil {
return nil, err
}
addr, err := net.ResolveTCPAddr("tcp", u.Host)
if err != nil {
return nil, err
}
if addr.IP == nil {
addr.IP = net.IPv4zero /* default: 0.0.0.0 */
}
u.Host = addr.String()
switch u.Scheme {
case "http":
return u, nil
default:
return nil, fmt.Errorf("unsupported scheme: %s", u.Scheme)
}
}
func parseDevice(s string, mtu uint32) (device.Device, error) {
if !strings.Contains(s, "://") {
s = fmt.Sprintf("%s://%s", tun.Driver /* default driver */, s)