diff --git a/googletalk.go b/googletalk.go deleted file mode 100644 index 229e33d..0000000 --- a/googletalk.go +++ /dev/null @@ -1,66 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "log" - "net" - "xmpp" -) - -var ( - jid = flag.String("jid", "", "JID") - pass = flag.String("pass", "", "Password") -) - -func main() { - - flag.Parse() - jid, _ := xmpp.ParseJID(*jid) - pass := *pass - - // Lookup XMPP client net addr. - addr, err := xmppHomeAddr(jid) - if err != nil { - log.Fatal(err) - } - - // Create stream. - stream, err := xmpp.NewStream(addr) - if err != nil { - log.Fatal(err) - } - - // Configure stream as client. - x, err := xmpp.NewClientXMPP(stream, jid, pass, nil) - if err != nil { - log.Fatal(err) - } - - // Signal presence. - x.Send(xmpp.Presence{}) - - for { - stanza, err := x.Recv() - if err != nil { - log.Fatal(err) - } - log.Printf("recv: %v", stanza) - } -} - -// Get XMPP server addr from DNS SRV entry. -func xmppHomeAddr(jid xmpp.JID) (addr string, err error) { - - _, addrs, err := net.LookupSRV("xmpp-client", "tcp", jid.Domain) - if err != nil { - return - } - - if len(addrs) == 0 { - err = fmt.Errorf("No addrs for %s", jid.Domain) - return - } - - return fmt.Sprintf("%s:%d", addrs[0].Target, addrs[0].Port), nil -} diff --git a/tail.go b/tail.go new file mode 100644 index 0000000..c24b77b --- /dev/null +++ b/tail.go @@ -0,0 +1,62 @@ +package main + +import ( + "flag" + "log" + "xmpp" +) + +var ( + addr = "" + skipverify = false + jid = "" + pass = "" +) + +func init() { + flag.StringVar(&addr, "addr", "", "XMPP server address, :. Optional") + flag.BoolVar(&skipverify, "skipverify", false, "Skip TLS certificate verification.") + flag.StringVar(&jid, "jid", "", "User's JID, e.g. alice@wonderland.lit/chat.") + flag.StringVar(&pass, "pass", "", "User's password.") +} + +func main() { + + // Parse args + flag.Parse() + jid, _ := xmpp.ParseJID(jid) + + // Lookup home server TCP addr if not explicitly set. + if addr == "" { + if addrs, err := xmpp.HomeServerAddrs(jid); err != nil { + log.Fatal(err) + } else { + addr = addrs[0] + } + } + + // Create stream. + stream, err := xmpp.NewStream(addr) + if err != nil { + log.Fatal(err) + } + + // Configure stream as client. + config := xmpp.ClientConfig{InsecureSkipVerify: skipverify} + x, err := xmpp.NewClientXMPP(stream, jid, pass, &config) + if err != nil { + log.Fatal(err) + } + + // Signal presence. + x.Send(xmpp.Presence{}) + + // Log anything that arrives. + for { + stanza, err := x.Recv() + if err != nil { + log.Fatal(err) + } + log.Printf("recv: %T %v", stanza, stanza) + } +}