From 6856c5dcaa26107cf8d2cbbcfec3a402e61a515e Mon Sep 17 00:00:00 2001 From: Neale Pickett Date: Tue, 31 Dec 2013 00:35:21 +0000 Subject: [PATCH] Is Ginnie playing Minecraft? --- Makefile | 4 ++++ mineping.cgi.go | 51 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 mineping.cgi.go diff --git a/Makefile b/Makefile index 3a49664..0c12c57 100644 --- a/Makefile +++ b/Makefile @@ -21,6 +21,7 @@ PLAIN = . papers poems misc TARGETS = html copy TARGETS += $(DESTDIR)/tmp $(DESTDIR)/footer.html $(DESTDIR)/projects TARGETS += $(DESTDIR)/geneweb.cgi +TARGETS += $(DESTDIR)/mp.cgi all: default @@ -50,6 +51,9 @@ $(DESTDIR)/geneweb.cgi: geneweb.c $(DESTDIR)/g.cgi: g.cgi.c $(CC) -o $@ $< +$(DESTDIR)/mp.cgi: mineping.cgi.go + go build -o $@ $< + $(DESTDIR)/%-sm.jpg: %.jpg jpegtopnm $< | pnmscale -xysize 600 600 | pnmtojpeg > $@ diff --git a/mineping.cgi.go b/mineping.cgi.go new file mode 100644 index 0000000..8cce56f --- /dev/null +++ b/mineping.cgi.go @@ -0,0 +1,51 @@ +package main + +import ( + "net" + "fmt" + "time" +) + +const MAGIC = "\x00\xff\xff\x00\xfe\xfe\xfe\xfe\xfd\xfd\xfd\xfd\x12\x34\x56\x78" + +func isAlive() bool { + conn, err := net.Dial("udp", "h.woozle.org:30919") + if err != nil { + return false + } + + conn.SetReadDeadline(time.Now().Add(5 * time.Second)) + + pkt := "\x01" + "\x00\x00\x00\x00MERF" + MAGIC + conn.Write([]byte(pkt)) + + resp := make([]byte, 40) + rlen, err := conn.Read(resp) + if (err != nil) || (rlen == 0) { + return false + } + + return true +} + +func main() { + fmt.Println("Content-type: text/html") + fmt.Println("") + fmt.Println("") + fmt.Println("") + fmt.Println("") + fmt.Println("") + fmt.Println("") + fmt.Println("Is Ginnie playing Minecraft PE?") + fmt.Println("") + fmt.Println("

Is Ginnie playing Minecraft PE?

") + fmt.Println("

") + if isAlive() { + fmt.Println("yes") + } else { + fmt.Println("no") + } + fmt.Println("

") + fmt.Println("

Use the external server h.woozle.org port 30919 to connect

") + fmt.Println("") +}