This commit is contained in:
huhu415 2024-09-22 12:26:50 +08:00
parent 6bc8f0a87c
commit 39485b2763

View File

@ -1,17 +1,19 @@
package main package main
import ( import (
"bufio"
"bytes"
"encoding/binary" "encoding/binary"
"errors" "errors"
"flag" "flag"
"fmt" "fmt"
"io" "io"
"net" "net"
dhttp "net/http"
"slices" "slices"
"strings" "strings"
"time" "time"
"ua3f/http" "ua3f/http"
"ua3f/log"
"github.com/hashicorp/golang-lru/v2/expirable" "github.com/hashicorp/golang-lru/v2/expirable"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
@ -50,7 +52,8 @@ func main() {
flag.StringVar(&loglevel, "l", "info", "Log level (default: info)") flag.StringVar(&loglevel, "l", "info", "Log level (default: info)")
flag.Parse() flag.Parse()
log.SetLogConf(loglevel) logrus.SetLevel(logrus.DebugLevel)
logrus.SetReportCaller(true) // log.SetLogConf(loglevel)
logrus.Info("UA3F v" + version) logrus.Info("UA3F v" + version)
logrus.Info(fmt.Sprintf("Port: %d", port)) logrus.Info(fmt.Sprintf("Port: %d", port))
@ -392,6 +395,7 @@ func CopyPileline(dst io.Writer, src io.Reader, destAddrPort string) {
} }
return return
} }
logrus.Debug(fmt.Sprintf("[%s][%s] read %d in first phase, %s", destAddrPort, src.(*net.TCPConn).RemoteAddr().String(), string(buf)))
if nr == 0 { if nr == 0 {
logrus.Debug(fmt.Sprintf("[%s][%s] read 0 in first phase", destAddrPort, src.(*net.TCPConn).RemoteAddr().String())) logrus.Debug(fmt.Sprintf("[%s][%s] read 0 in first phase", destAddrPort, src.(*net.TCPConn).RemoteAddr().String()))
return return
@ -413,6 +417,21 @@ func CopyPileline(dst io.Writer, src io.Reader, destAddrPort string) {
} }
for { for {
parser := http.NewHTTPParser() parser := http.NewHTTPParser()
reader := bufio.NewReader(bytes.NewReader(buf[0:nr]))
r, err := dhttp.ReadRequest(reader)
if err != nil {
logrus.Debug(fmt.Sprintf("[%s][%s] read error in http request: %v", destAddrPort, src.(*net.TCPConn).RemoteAddr().String(), err))
return
}
logrus.Debugf("[%s][%s] HTTP Request: %s %s %s", destAddrPort, src.(*net.TCPConn).RemoteAddr().String(), r.Method, r.URL, r.Proto)
r.Header.Set("User-Agent", "123123123123123123")
logrus.Debugf("%v", r.Header)
if err := r.Write(dst); err != nil {
logrus.Debug(fmt.Sprintf("[%s][%s] write http request error: %v", destAddrPort, src.(*net.TCPConn).RemoteAddr().String(), err))
return
}
continue
httpBodyOffset, err := parser.Parse(buf[0:nr]) httpBodyOffset, err := parser.Parse(buf[0:nr])
for err == http.ErrMissingData { for err == http.ErrMissingData {
var m int var m int