optimise code.

This commit is contained in:
NNdroid 2023-07-14 14:46:03 +08:00
parent 0e83cdbc27
commit af319b013d
5 changed files with 36 additions and 9 deletions

View File

@ -156,7 +156,7 @@ func GetSrcKey(packet []byte) string {
return key return key
} }
// GetdstKey returns the destination key of the packets // GetDstKey returns the destination key of the packets
func GetDstKey(packet []byte) string { func GetDstKey(packet []byte) string {
key := "" key := ""
if IsIPv4(packet) && len(packet) >= 20 { if IsIPv4(packet) && len(packet) >= 20 {
@ -167,7 +167,7 @@ func GetDstKey(packet []byte) string {
return key return key
} }
// ExecuteCommand executes the given command // ExecCmd executes the given command
func ExecCmd(c string, args ...string) string { func ExecCmd(c string, args ...string) string {
//log.Printf("exec %v %v", c, args) //log.Printf("exec %v %v", c, args)
cmd := exec.Command(c, args...) cmd := exec.Command(c, args...)
@ -214,6 +214,19 @@ func GetDefaultHttpResponse() []byte {
return []byte("HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\nContent-Length: 6\r\nConnection: keep-alive\r\nCache-Control: no-cache\r\nCF-Cache-Status: DYNAMIC\r\nServer: cloudflare\r\n\r\nfollow") return []byte("HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\nContent-Length: 6\r\nConnection: keep-alive\r\nCache-Control: no-cache\r\nCF-Cache-Status: DYNAMIC\r\nServer: cloudflare\r\n\r\nfollow")
} }
func GetDefaultHttpHandleFunc() http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
w.Header().Set("Content-Type", "text/plain")
w.Header().Set("Content-Length", "6")
w.Header().Set("Connection", "keep-alive")
w.Header().Set("Cache-Control", "no-cache")
w.Header().Set("CF-Cache-Status", "DYNAMIC")
w.Header().Set("Server", "cloudflare")
w.Write([]byte("follow"))
})
}
// PrintErr returns the error log // PrintErr returns the error log
func PrintErr(err error, enableVerbose bool) { func PrintErr(err error, enableVerbose bool) {
if !enableVerbose { if !enableVerbose {

View File

@ -22,8 +22,8 @@ import (
// StartServer starts the h1 server // StartServer starts the h1 server
func StartServer(iFace *water.Interface, config config.Config) { func StartServer(iFace *water.Interface, config config.Config) {
log.Printf("vtun h1 server started on %v", config.LocalAddr) log.Printf("vtun h1 server started on %v", config.LocalAddr)
websrv := NewHandle(http.NotFoundHandler()) webSrv := NewHandle(netutil.GetDefaultHttpHandleFunc())
http.Handle("/", websrv) http.Handle("/", webSrv)
srv := &http.Server{Addr: config.LocalAddr, Handler: nil} srv := &http.Server{Addr: config.LocalAddr, Handler: nil}
go func(srv *http.Server) { go func(srv *http.Server) {
var err error var err error
@ -53,7 +53,7 @@ func StartServer(iFace *water.Interface, config config.Config) {
go toClient(config, iFace) go toClient(config, iFace)
// client -> server // client -> server
for { for {
conn, err := websrv.Accept() conn, err := webSrv.Accept()
if err != nil { if err != nil {
continue continue
} }

View File

@ -32,7 +32,7 @@ func ExistClientIP(ip string) bool {
return ok return ok
} }
// keepAlive keeps the client ip alive // KeepAliveClientIP keeps the client ip alive
func KeepAliveClientIP(ip string) { func KeepAliveClientIP(ip string) {
if ExistClientIP(ip) { if ExistClientIP(ip) {
_register.Increment(ip, 1) _register.Increment(ip, 1)
@ -67,7 +67,7 @@ func PickClientIP(cidr string) (clientIP string, prefixLength string) {
// ListClientIPs returns the client ips in the register // ListClientIPs returns the client ips in the register
func ListClientIPs() []string { func ListClientIPs() []string {
result := []string{} var result []string
for k := range _register.Items() { for k := range _register.Items() {
result = append(result, k) result = append(result, k)
} }
@ -82,7 +82,7 @@ func addressCount(network *net.IPNet) uint64 {
// incr increments the ip by 1 // incr increments the ip by 1
func incr(IP net.IP) net.IP { func incr(IP net.IP) net.IP {
IP = checkIPv4(IP) //IP = checkIPv4(IP)
incIP := make([]byte, len(IP)) incIP := make([]byte, len(IP))
copy(incIP, IP) copy(incIP, IP)
for j := len(incIP) - 1; j >= 0; j-- { for j := len(incIP) - 1; j >= 0; j-- {
@ -101,3 +101,11 @@ func checkIPv4(ip net.IP) net.IP {
} }
return ip return ip
} }
// checkIPv6 checks if the ip is IPv6
func checkIPv6(ip net.IP) net.IP {
if v6 := ip.To16(); v6 != nil {
return v6
}
return ip
}

View File

@ -39,7 +39,13 @@ func StartServer(iface *water.Interface, config config.Config) {
}) })
http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) { http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
w.WriteHeader(200) w.WriteHeader(http.StatusOK)
w.Header().Set("Content-Type", "text/plain")
w.Header().Set("Content-Length", "6")
w.Header().Set("Connection", "keep-alive")
w.Header().Set("Cache-Control", "no-cache")
w.Header().Set("CF-Cache-Status", "DYNAMIC")
w.Header().Set("Server", "cloudflare")
w.Write([]byte(`follow`)) w.Write([]byte(`follow`))
}) })