mirror of https://github.com/ginuerzh/gost
11 changed files with 482 additions and 38 deletions
@ -0,0 +1,53 @@ |
|||
package main |
|||
|
|||
import ( |
|||
"flag" |
|||
"log" |
|||
"net" |
|||
"time" |
|||
) |
|||
|
|||
var ( |
|||
concurrency int |
|||
saddr string |
|||
) |
|||
|
|||
func init() { |
|||
log.SetFlags(log.LstdFlags | log.Lshortfile) |
|||
|
|||
flag.StringVar(&saddr, "S", ":18080", "server address") |
|||
flag.IntVar(&concurrency, "c", 1, "Number of multiple echo to make at a time") |
|||
flag.Parse() |
|||
} |
|||
|
|||
func main() { |
|||
for i := 0; i < concurrency; i++ { |
|||
go udpEchoLoop() |
|||
} |
|||
select{} |
|||
} |
|||
|
|||
func udpEchoLoop() { |
|||
addr, err := net.ResolveUDPAddr("udp", saddr) |
|||
if err != nil { |
|||
log.Fatal(err) |
|||
} |
|||
conn, err := net.DialUDP("udp", nil, addr) |
|||
if err != nil { |
|||
log.Fatal(err) |
|||
} |
|||
|
|||
msg := []byte(`abcdefghijklmnopqrstuvwxyz`) |
|||
for { |
|||
if _, err := conn.Write(msg); err != nil { |
|||
log.Fatal(err) |
|||
} |
|||
b := make([]byte, 1024) |
|||
_, err := conn.Read(b) |
|||
if err != nil { |
|||
log.Fatal(err) |
|||
} |
|||
// log.Println(string(b[:n]))
|
|||
time.Sleep(100 * time.Millisecond) |
|||
} |
|||
} |
|||
@ -0,0 +1,56 @@ |
|||
package main |
|||
|
|||
import ( |
|||
"flag" |
|||
"log" |
|||
"net/url" |
|||
"time" |
|||
|
|||
"github.com/ginuerzh/gost/gost" |
|||
) |
|||
|
|||
var ( |
|||
laddr, faddr string |
|||
quiet bool |
|||
) |
|||
|
|||
func init() { |
|||
log.SetFlags(log.LstdFlags | log.Lshortfile) |
|||
|
|||
flag.StringVar(&laddr, "L", ":18080", "listen address") |
|||
flag.StringVar(&faddr, "F", ":8080", "forward address") |
|||
flag.BoolVar(&quiet, "q", false, "quiet mode") |
|||
flag.BoolVar(&gost.Debug, "d", false, "debug mode") |
|||
flag.Parse() |
|||
|
|||
if quiet { |
|||
gost.SetLogger(&gost.NopLogger{}) |
|||
} |
|||
} |
|||
func main() { |
|||
udpForwardServer() |
|||
} |
|||
|
|||
func udpForwardServer() { |
|||
s := &gost.Server{} |
|||
ln, err := gost.UDPForwardListener(laddr, time.Second*3) |
|||
if err != nil { |
|||
log.Fatal(err) |
|||
} |
|||
h := gost.UDPForwardHandler( |
|||
faddr, |
|||
gost.ChainHandlerOption(gost.NewChain(gost.Node{ |
|||
Protocol: "socks5", |
|||
Transport: "tcp", |
|||
Addr: ":11080", |
|||
User: url.UserPassword("admin", "123456"), |
|||
Client: &gost.Client{ |
|||
Connector: gost.SOCKS5Connector( |
|||
url.UserPassword("admin", "123456"), |
|||
), |
|||
Transporter: gost.TCPTransporter(), |
|||
}, |
|||
})), |
|||
) |
|||
log.Fatal(s.Serve(ln, h)) |
|||
} |
|||
@ -0,0 +1,44 @@ |
|||
package main |
|||
|
|||
import ( |
|||
"flag" |
|||
"log" |
|||
"net" |
|||
) |
|||
|
|||
var ( |
|||
laddr string |
|||
) |
|||
|
|||
func init() { |
|||
log.SetFlags(log.LstdFlags | log.Lshortfile) |
|||
|
|||
flag.StringVar(&laddr, "L", ":8080", "listen address") |
|||
flag.Parse() |
|||
} |
|||
func main() { |
|||
udpEchoServer() |
|||
} |
|||
|
|||
func udpEchoServer() { |
|||
addr, err := net.ResolveUDPAddr("udp", laddr) |
|||
if err != nil { |
|||
log.Fatal(err) |
|||
} |
|||
conn, err := net.ListenUDP("udp", addr) |
|||
if err != nil { |
|||
log.Fatal(err) |
|||
} |
|||
|
|||
for { |
|||
b := make([]byte, 1024) |
|||
n, raddr, err := conn.ReadFromUDP(b) |
|||
if err != nil { |
|||
log.Fatal(err) |
|||
} |
|||
if _, err = conn.WriteToUDP(b[:n], raddr); err != nil { |
|||
log.Fatal(err) |
|||
} |
|||
|
|||
} |
|||
} |
|||
Loading…
Reference in new issue