| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- package http
- import (
- "net"
- "net/http"
- "strings"
- "github.com/v2ray/v2ray-core/app"
- _ "github.com/v2ray/v2ray-core/common/log"
- v2net "github.com/v2ray/v2ray-core/common/net"
- )
- type HttpProxyServer struct {
- accepting bool
- dispatcher app.PacketDispatcher
- config Config
- }
- func NewHttpProxyServer(dispatcher app.PacketDispatcher, config Config) *HttpProxyServer {
- return &HttpProxyServer{
- dispatcher: dispatcher,
- config: config,
- }
- }
- func (this *HttpProxyServer) Listen(port v2net.Port) error {
- server := http.Server{
- Addr: ":" + port.String(),
- Handler: this,
- }
- return server.ListenAndServe()
- }
- func (this *HttpProxyServer) ServeHTTP(w http.ResponseWriter, request *http.Request) {
- if strings.ToUpper(request.Method) == "CONNECT" {
- host, port, err := net.SplitHostPort(request.URL.Host)
- if err != nil {
- if strings.Contains(err.(*net.AddrError).Err, "missing port") {
- host = request.URL.Host
- port = "80"
- } else {
- http.Error(w, "Bad Request", 400)
- return
- }
- }
- _ = host + port
- } else {
- }
- }
- func (this *HttpProxyServer) handleConnect(response http.ResponseWriter, request *http.Request) {
- }
|