+package main
+
+import (
+ "bufio"
+ "fmt"
+ "io"
+ "log"
+ "net/textproto"
+ "os"
+ "regexp"
+)
+
+func main() {
+ log.SetFlags(log.Lshortfile)
+ log.SetPrefix(fmt.Sprintf(
+ "[%s]:%s ", os.Getenv("TCPREMOTEIP"), os.Getenv("TCPREMOTEPORT"),
+ ))
+ br := bufio.NewReaderSize(os.Stdin, 1<<10)
+ tr := textproto.NewReader(br)
+ q, err := tr.ReadLine()
+ if err != nil {
+ log.Fatalln(err)
+ }
+ if q == "" {
+ q = "@"
+ } else {
+ re := regexp.MustCompile("^[a-z0-9-.]+$")
+ if !re.MatchString(q) {
+ log.Fatalln("bad query")
+ }
+ }
+ fd, err := os.Open(q)
+ if err != nil {
+ log.Fatalln(err)
+ }
+ if _, err = io.Copy(os.Stdout, fd); err != nil {
+ log.Fatalln(err)
+ }
+ log.Print(q)
+}