mirror of
https://github.com/nadoo/glider.git
synced 2025-02-23 17:35:40 +08:00
http: add basic auth in client mode
This commit is contained in:
parent
7a9609771f
commit
632f45448b
@ -35,7 +35,7 @@ DNS Forwarding Server(udp2tcp):
|
||||
- Add resolved IPs to proxy rules
|
||||
- Add resolved IPs to ipset
|
||||
|
||||
Ipset Management:
|
||||
IPSet Management:
|
||||
- Add ip/cidrs from rule files on startup
|
||||
- Add resolved ips for domains from rule files by dns forwarding server
|
||||
|
||||
@ -47,7 +47,7 @@ General:
|
||||
- Rule proxy based on destinations: [Config Examples](config/examples)
|
||||
|
||||
TODO:
|
||||
- [x] UDP over TCP Tunnel (client <-udp-> uottun <-tcp-> ss <-udp-> target)
|
||||
- [x] UDP over TCP Tunnel (client <--udp--> glider/uottun <--tcp--> ss <--udp--> target)
|
||||
- [ ] Transparent UDP proxy (linux tproxy)
|
||||
- [ ] TUN/TAP device support
|
||||
- [ ] Code refactoring: support proxy registering so it can be pluggable
|
||||
|
@ -40,7 +40,7 @@ func DialerFromURL(s string, cDialer Dialer) (Dialer, error) {
|
||||
|
||||
switch u.Scheme {
|
||||
case "http":
|
||||
return NewHTTP(addr, cDialer, nil)
|
||||
return NewHTTP(addr, user, pass, cDialer, nil)
|
||||
case "socks5":
|
||||
return NewSOCKS5(addr, user, pass, cDialer, nil)
|
||||
case "ss":
|
||||
|
13
http.go
13
http.go
@ -6,6 +6,7 @@ package main
|
||||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"encoding/base64"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
@ -20,13 +21,18 @@ import (
|
||||
type HTTP struct {
|
||||
*Forwarder // as client
|
||||
sDialer Dialer // dialer for server
|
||||
|
||||
user string
|
||||
password string
|
||||
}
|
||||
|
||||
// NewHTTP returns a http proxy.
|
||||
func NewHTTP(addr string, cDialer Dialer, sDialer Dialer) (*HTTP, error) {
|
||||
func NewHTTP(addr, user, pass string, cDialer Dialer, sDialer Dialer) (*HTTP, error) {
|
||||
s := &HTTP{
|
||||
Forwarder: NewForwarder(addr, cDialer),
|
||||
sDialer: sDialer,
|
||||
user: user,
|
||||
password: pass,
|
||||
}
|
||||
|
||||
return s, nil
|
||||
@ -186,6 +192,11 @@ func (s *HTTP) Dial(network, addr string) (net.Conn, error) {
|
||||
rc.Write([]byte("CONNECT " + addr + " HTTP/1.0\r\n"))
|
||||
// c.Write([]byte("Proxy-Connection: Keep-Alive\r\n"))
|
||||
|
||||
if s.user != "" && s.password != "" {
|
||||
auth := s.user + ":" + s.password
|
||||
rc.Write([]byte("Authorization: Basic " + base64.StdEncoding.EncodeToString([]byte(auth)) + "\r\n"))
|
||||
}
|
||||
|
||||
var b [1024]byte
|
||||
n, err := rc.Read(b[:])
|
||||
if bytes.Contains(b[:n], []byte("200")) {
|
||||
|
2
mixed.go
2
mixed.go
@ -33,7 +33,7 @@ func NewMixedProxy(addr, user, pass string, sDialer Dialer) (*MixedProxy, error)
|
||||
addr: addr,
|
||||
}
|
||||
|
||||
p.http, _ = NewHTTP(addr, nil, sDialer)
|
||||
p.http, _ = NewHTTP(addr, user, pass, nil, sDialer)
|
||||
p.socks5, _ = NewSOCKS5(addr, user, pass, nil, sDialer)
|
||||
|
||||
return p, nil
|
||||
|
@ -40,7 +40,7 @@ func ServerFromURL(s string, sDialer Dialer) (Server, error) {
|
||||
case "mixed":
|
||||
return NewMixedProxy(addr, user, pass, sDialer)
|
||||
case "http":
|
||||
return NewHTTP(addr, nil, sDialer)
|
||||
return NewHTTP(addr, user, pass, nil, sDialer)
|
||||
case "socks5":
|
||||
return NewSOCKS5(addr, user, pass, nil, sDialer)
|
||||
case "ss":
|
||||
|
Loading…
Reference in New Issue
Block a user