init
This commit is contained in:
53
examples/forward/udp/cli.go
Normal file
53
examples/forward/udp/cli.go
Normal file
@ -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)
|
||||
}
|
||||
}
|
57
examples/forward/udp/direct.go
Normal file
57
examples/forward/udp/direct.go
Normal file
@ -0,0 +1,57 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"log"
|
||||
"time"
|
||||
|
||||
"github.com/ginuerzh/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() {
|
||||
udpDirectForwardServer()
|
||||
}
|
||||
|
||||
func udpDirectForwardServer() {
|
||||
ln, err := gost.UDPDirectForwardListener(laddr, time.Second*30)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
h := gost.UDPDirectForwardHandler(
|
||||
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(),
|
||||
},
|
||||
})),
|
||||
*/
|
||||
)
|
||||
s := &gost.Server{ln}
|
||||
log.Fatal(s.Serve(h))
|
||||
}
|
60
examples/forward/udp/remote.go
Normal file
60
examples/forward/udp/remote.go
Normal file
@ -0,0 +1,60 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"log"
|
||||
"time"
|
||||
|
||||
"github.com/ginuerzh/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() {
|
||||
udpRemoteForwardServer()
|
||||
}
|
||||
|
||||
func udpRemoteForwardServer() {
|
||||
ln, err := gost.UDPRemoteForwardListener(
|
||||
laddr,
|
||||
/*
|
||||
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(),
|
||||
},
|
||||
}),
|
||||
*/
|
||||
nil,
|
||||
time.Second*30)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
h := gost.UDPRemoteForwardHandler(
|
||||
faddr,
|
||||
)
|
||||
s := &gost.Server{ln}
|
||||
log.Fatal(s.Serve(h))
|
||||
}
|
44
examples/forward/udp/srv.go
Normal file
44
examples/forward/udp/srv.go
Normal file
@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user