mirror of
https://github.com/tladesignz/dnstt.git
synced 2026-09-22 23:07:59 +03:00
Server: Fixed IDE warnings.
This commit is contained in:
+40
-26
@@ -109,9 +109,9 @@ func generateKeypair(privkeyFilename, pubkeyFilename string) (err error) {
|
||||
var toDelete []string
|
||||
defer func() {
|
||||
for _, filename := range toDelete {
|
||||
fmt.Fprintf(os.Stderr, "deleting partially written file %s\n", filename)
|
||||
log.Printf("deleting partially written file %s\n", filename)
|
||||
if closeErr := os.Remove(filename); closeErr != nil {
|
||||
fmt.Fprintf(os.Stderr, "cannot remove %s: %v\n", filename, closeErr)
|
||||
log.Printf("cannot remove %s: %v\n", filename, closeErr)
|
||||
if err == nil {
|
||||
err = closeErr
|
||||
}
|
||||
@@ -180,7 +180,9 @@ func readKeyFromFile(filename string) ([]byte, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer f.Close()
|
||||
defer func() {
|
||||
_ = f.Close()
|
||||
}()
|
||||
return noise.ReadKey(f)
|
||||
}
|
||||
|
||||
@@ -194,7 +196,9 @@ func handleStream(stream *smux.Stream, upstream string, conv uint32) error {
|
||||
if err != nil {
|
||||
return fmt.Errorf("stream %08x:%d connect upstream: %v", conv, stream.ID(), err)
|
||||
}
|
||||
defer upstreamConn.Close()
|
||||
defer func() {
|
||||
_ = upstreamConn.Close()
|
||||
}()
|
||||
upstreamTCPConn := upstreamConn.(*net.TCPConn)
|
||||
|
||||
var wg sync.WaitGroup
|
||||
@@ -209,8 +213,8 @@ func handleStream(stream *smux.Stream, upstream string, conv uint32) error {
|
||||
if err != nil && !errors.Is(err, io.ErrClosedPipe) {
|
||||
log.Printf("stream %08x:%d copy stream←upstream: %v", conv, stream.ID(), err)
|
||||
}
|
||||
upstreamTCPConn.CloseRead()
|
||||
stream.Close()
|
||||
_ = upstreamTCPConn.CloseRead()
|
||||
_ = stream.Close()
|
||||
}()
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
@@ -222,7 +226,7 @@ func handleStream(stream *smux.Stream, upstream string, conv uint32) error {
|
||||
if err != nil && !errors.Is(err, io.ErrClosedPipe) {
|
||||
log.Printf("stream %08x:%d copy upstream←stream: %v", conv, stream.ID(), err)
|
||||
}
|
||||
upstreamTCPConn.CloseWrite()
|
||||
_ = upstreamTCPConn.CloseWrite()
|
||||
}()
|
||||
wg.Wait()
|
||||
|
||||
@@ -247,11 +251,14 @@ func acceptStreams(conn *kcp.UDPSession, privkey []byte, upstream string) error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer sess.Close()
|
||||
defer func() {
|
||||
_ = sess.Close()
|
||||
}()
|
||||
|
||||
for {
|
||||
stream, err := sess.AcceptStream()
|
||||
if err != nil {
|
||||
//goland:noinspection GoDeprecation
|
||||
if err, ok := err.(net.Error); ok && err.Temporary() {
|
||||
continue
|
||||
}
|
||||
@@ -261,7 +268,7 @@ func acceptStreams(conn *kcp.UDPSession, privkey []byte, upstream string) error
|
||||
go func() {
|
||||
defer func() {
|
||||
log.Printf("end stream %08x:%d", conn.GetConv(), stream.ID())
|
||||
stream.Close()
|
||||
_ = stream.Close()
|
||||
}()
|
||||
err := handleStream(stream, upstream, conn.GetConv())
|
||||
if err != nil {
|
||||
@@ -277,6 +284,7 @@ func acceptSessions(ln *kcp.Listener, privkey []byte, mtu int, upstream string)
|
||||
for {
|
||||
conn, err := ln.AcceptKCP()
|
||||
if err != nil {
|
||||
//goland:noinspection GoDeprecation
|
||||
if err, ok := err.(net.Error); ok && err.Temporary() {
|
||||
continue
|
||||
}
|
||||
@@ -300,7 +308,7 @@ func acceptSessions(ln *kcp.Listener, privkey []byte, mtu int, upstream string)
|
||||
go func() {
|
||||
defer func() {
|
||||
log.Printf("end session %08x", conn.GetConv())
|
||||
conn.Close()
|
||||
_ = conn.Close()
|
||||
}()
|
||||
err := acceptStreams(conn, privkey, upstream)
|
||||
if err != nil && !errors.Is(err, io.ErrClosedPipe) {
|
||||
@@ -499,6 +507,7 @@ func recvLoop(domain dns.Name, dnsConn net.PacketConn, ttConn *turbotunnel.Queue
|
||||
var buf [4096]byte
|
||||
n, addr, err := dnsConn.ReadFrom(buf[:])
|
||||
if err != nil {
|
||||
//goland:noinspection GoDeprecation
|
||||
if err, ok := err.(net.Error); ok && err.Temporary() {
|
||||
log.Printf("ReadFrom temporary error: %v", err)
|
||||
continue
|
||||
@@ -639,7 +648,7 @@ func sendLoop(dnsConn net.PacketConn, ttConn *turbotunnel.QueuePacketConn, ch <-
|
||||
if int(uint16(len(p))) != len(p) {
|
||||
panic(len(p))
|
||||
}
|
||||
binary.Write(&payload, binary.BigEndian, uint16(len(p)))
|
||||
_ = binary.Write(&payload, binary.BigEndian, uint16(len(p)))
|
||||
payload.Write(p)
|
||||
}
|
||||
timer.Stop()
|
||||
@@ -663,6 +672,7 @@ func sendLoop(dnsConn net.PacketConn, ttConn *turbotunnel.QueuePacketConn, ch <-
|
||||
// Now we actually send the message as a UDP packet.
|
||||
_, err = dnsConn.WriteTo(buf, rec.Addr)
|
||||
if err != nil {
|
||||
//goland:noinspection GoDeprecation
|
||||
if err, ok := err.(net.Error); ok && err.Temporary() {
|
||||
log.Printf("WriteTo temporary error: %v", err)
|
||||
continue
|
||||
@@ -728,7 +738,7 @@ func computeMaxEncodedPayload(limit int) int {
|
||||
},
|
||||
},
|
||||
}
|
||||
resp, _ := responseFor(query, dns.Name([][]byte{}))
|
||||
resp, _ := responseFor(query, [][]byte{})
|
||||
// As in sendLoop.
|
||||
resp.Answer = []dns.RR{
|
||||
{
|
||||
@@ -762,7 +772,9 @@ func computeMaxEncodedPayload(limit int) int {
|
||||
}
|
||||
|
||||
func run(privkey []byte, domain dns.Name, upstream string, dnsConn net.PacketConn) error {
|
||||
defer dnsConn.Close()
|
||||
defer func() {
|
||||
_ = dnsConn.Close()
|
||||
}()
|
||||
|
||||
log.Printf("pubkey %x", noise.PubkeyFromPrivkey(privkey))
|
||||
|
||||
@@ -790,7 +802,9 @@ func run(privkey []byte, domain dns.Name, upstream string, dnsConn net.PacketCon
|
||||
if err != nil {
|
||||
return fmt.Errorf("opening KCP listener: %v", err)
|
||||
}
|
||||
defer ln.Close()
|
||||
defer func() {
|
||||
_ = ln.Close()
|
||||
}()
|
||||
go func() {
|
||||
err := acceptSessions(ln, privkey, mtu, upstream)
|
||||
if err != nil {
|
||||
@@ -822,7 +836,7 @@ func main() {
|
||||
var udpAddr string
|
||||
|
||||
flag.Usage = func() {
|
||||
fmt.Fprintf(flag.CommandLine.Output(), `Usage:
|
||||
_, _ = fmt.Fprintf(flag.CommandLine.Output(), `Usage:
|
||||
%[1]s -gen-key -privkey-file PRIVKEYFILE -pubkey-file PUBKEYFILE
|
||||
%[1]s -udp ADDR -privkey-file PRIVKEYFILE DOMAIN UPSTREAMADDR
|
||||
|
||||
@@ -850,7 +864,7 @@ Example:
|
||||
os.Exit(1)
|
||||
}
|
||||
if err := generateKeypair(privkeyFilename, pubkeyFilename); err != nil {
|
||||
fmt.Fprintf(os.Stderr, "cannot generate keypair: %v\n", err)
|
||||
log.Printf("cannot generate keypair: %v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
} else {
|
||||
@@ -861,7 +875,7 @@ Example:
|
||||
}
|
||||
domain, err := dns.ParseName(flag.Arg(0))
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "invalid domain %+q: %v\n", flag.Arg(0), err)
|
||||
log.Printf("invalid domain %+q: %v\n", flag.Arg(0), err)
|
||||
os.Exit(1)
|
||||
}
|
||||
upstream := flag.Arg(1)
|
||||
@@ -875,7 +889,7 @@ Example:
|
||||
if err != nil {
|
||||
// host:port format is required in all cases, so
|
||||
// this is a fatal error.
|
||||
fmt.Fprintf(os.Stderr, "cannot parse upstream address %+q: %v\n", upstream, err)
|
||||
log.Printf("cannot parse upstream address %+q: %v\n", upstream, err)
|
||||
os.Exit(1)
|
||||
}
|
||||
upstreamIPAddr, err := net.ResolveIPAddr("ip", upstreamHost)
|
||||
@@ -889,42 +903,42 @@ Example:
|
||||
// for the host portion, which resolves to a nil
|
||||
// IP. This is a fatal error as we will not be
|
||||
// able to dial this address.
|
||||
fmt.Fprintf(os.Stderr, "cannot parse upstream address %+q: missing host in address\n", upstream)
|
||||
log.Printf("cannot parse upstream address %+q: missing host in address\n", upstream)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
if udpAddr == "" {
|
||||
fmt.Fprintf(os.Stderr, "the -udp option is required\n")
|
||||
log.Printf("the -udp option is required\n")
|
||||
os.Exit(1)
|
||||
}
|
||||
dnsConn, err := net.ListenPacket("udp", udpAddr)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "opening UDP listener: %v\n", err)
|
||||
log.Printf("opening UDP listener: %v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
if pubkeyFilename != "" {
|
||||
fmt.Fprintf(os.Stderr, "-pubkey-file may only be used with -gen-key\n")
|
||||
log.Printf("-pubkey-file may only be used with -gen-key\n")
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
var privkey []byte
|
||||
if privkeyFilename != "" && privkeyString != "" {
|
||||
fmt.Fprintf(os.Stderr, "only one of -privkey and -privkey-file may be used\n")
|
||||
log.Printf("only one of -privkey and -privkey-file may be used\n")
|
||||
os.Exit(1)
|
||||
} else if privkeyFilename != "" {
|
||||
var err error
|
||||
privkey, err = readKeyFromFile(privkeyFilename)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "cannot read privkey from file: %v\n", err)
|
||||
log.Printf("cannot read privkey from file: %v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
} else if privkeyString != "" {
|
||||
var err error
|
||||
privkey, err = noise.DecodeKey(privkeyString)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "privkey format error: %v\n", err)
|
||||
log.Printf("privkey format error: %v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
@@ -934,7 +948,7 @@ Example:
|
||||
var err error
|
||||
privkey, err = noise.GeneratePrivkey()
|
||||
if err != nil {
|
||||
fmt.Fprintln(os.Stderr, err)
|
||||
log.Println(err)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user