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) }