]> Sergey Matveev's repositories - gofingerd.git/blob - main.go
Initial commit
[gofingerd.git] / main.go
1 package main
2
3 import (
4         "bufio"
5         "fmt"
6         "io"
7         "log"
8         "net/textproto"
9         "os"
10         "regexp"
11 )
12
13 func main() {
14         log.SetFlags(log.Lshortfile)
15         log.SetPrefix(fmt.Sprintf(
16                 "[%s]:%s ", os.Getenv("TCPREMOTEIP"), os.Getenv("TCPREMOTEPORT"),
17         ))
18         br := bufio.NewReaderSize(os.Stdin, 1<<10)
19         tr := textproto.NewReader(br)
20         q, err := tr.ReadLine()
21         if err != nil {
22                 log.Fatalln(err)
23         }
24         if q == "" {
25                 q = "@"
26         } else {
27                 re := regexp.MustCompile("^[a-z0-9-.]+$")
28                 if !re.MatchString(q) {
29                         log.Fatalln("bad query")
30                 }
31         }
32         fd, err := os.Open(q)
33         if err != nil {
34                 log.Fatalln(err)
35         }
36         if _, err = io.Copy(os.Stdout, fd); err != nil {
37                 log.Fatalln(err)
38         }
39         log.Print(q)
40 }