blob: f1fd110fdd1933cf57eced9d0a8b4ca6bb61b6a6 [file] [log] [blame]
package main
import (
"bufio"
"io"
"log"
"net"
"os"
"os/exec"
)
func main() {
if len(os.Args) > 1 && os.Args[1] == "serve" {
serve()
}
finger()
}
func finger() {
c, err := net.Dial("tcp", "localhost:finger")
if err != nil {
log.Fatal(err)
}
io.WriteString(c, "rsc\n")
io.Copy(os.Stdout, c)
}
func serve() {
l, err := net.Listen("tcp", "localhost:finger")
if err != nil {
log.Fatal(err)
}
for {
c, err := l.Accept()
if err != nil {
log.Fatal(err)
}
go serveConn(c)
}
}
func serveConn(c net.Conn) {
defer c.Close()
b := bufio.NewReader(c)
l, err := b.ReadString('\n')
if err != nil {
return
}
cmd := exec.Command("finger", l[:len(l)-1])
cmd.Stdout = c
cmd.Stderr = c
cmd.Run()
}