mirror of
https://github.com/SunBK201/UA3F.git
synced 2025-12-19 02:08:32 +00:00
demo
This commit is contained in:
parent
6bc8f0a87c
commit
39485b2763
23
cmd/ua3f.go
23
cmd/ua3f.go
@ -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
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user