/
server.go
49 lines (37 loc) · 1.11 KB
/
server.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package main
import (
"net"
log "github.com/Sirupsen/logrus"
"github.com/jessevdk/go-flags"
)
var opts struct {
Port int `short:"p" long:"port" default:"6969" description:"port to listen to."`
Buffer int `short:"b" long:"buffer" default:"1024" description:"buffer size. default 1024"`
Quiet bool `short:"q" long:"quiet" description:"print less logging information"`
}
func init() {
_, err := flags.Parse(&opts)
errorCheck(err, "init", true)
if opts.Quiet {
log.SetLevel(log.WarnLevel)
}
formatter := &log.TextFormatter{
ForceColors: true,
FullTimestamp: true,
TimestampFormat: "15:04:05",
}
log.SetFormatter(formatter)
}
func main() {
server := NewServer()
udpConn, err := net.ListenUDP("udp4", &net.UDPAddr{IP: net.IPv4zero, Port: opts.Port})
errorCheck(err, "main", true)
server.connection = udpConn
defer server.connection.Close()
log.Printf("Starting AFTP Server %s:%d", GetLocalIP(), opts.Port)
go server.readFromSocket(opts.Buffer + 128)
go server.processPackets()
go server.processMessages()
//block indefinitely. the server will respond when someone writes to it
select {}
}