1
0
kpmy 9 жил өмнө
parent
commit
c72e3fb646
3 өөрчлөгдсөн 107 нэмэгдсэн , 101 устгасан
  1. 0 77
      client/main.go
  2. 107 0
      muc-client/main.go
  3. 0 24
      xep_test.go

+ 0 - 77
client/main.go

@@ -1,77 +0,0 @@
-package main
-
-import (
-	"bytes"
-	"flag"
-	"log"
-	"strings"
-	"xep/c2s/actors"
-	"xep/c2s/actors/steps"
-	"xep/c2s/stream"
-	"xep/entity"
-	"xep/units"
-)
-
-var user string
-var pwd string
-var server string
-var resource string
-
-func init() {
-	flag.StringVar(&user, "u", "goxep", "-u=user")
-	flag.StringVar(&server, "s", "xmpp.ru", "-s=server")
-	flag.StringVar(&resource, "r", "go", "-r=resource")
-	flag.StringVar(&pwd, "p", "GogogOg0", "-p=password")
-	log.SetFlags(0)
-}
-
-func conv(fn func(entity.Entity)) func(*bytes.Buffer) *bytes.Buffer {
-	return func(in *bytes.Buffer) (out *bytes.Buffer) {
-		if _e, err := entity.Consume(in); err == nil {
-			switch e := _e.(type) {
-			case *entity.Message:
-				fn(e)
-			}
-		} else {
-			log.Println("ERROR", err)
-			log.Println(string(in.Bytes()))
-			log.Println()
-		}
-		return
-	}
-}
-
-func main() {
-	flag.Parse()
-	s := &units.Server{Name: server}
-	c := &units.Client{Name: user, Server: s}
-	st := stream.New(s)
-	if err := stream.Dial(st); err == nil {
-		errHandler := func(err error) {
-			log.Fatal(err)
-		}
-		neg := &steps.Negotiation{}
-		actors.With(st).Do(steps.Starter, errHandler).Do(neg.Act(), errHandler).Run()
-		if neg.HasMechanism("PLAIN") {
-			auth := &steps.PlainAuth{Client: c, Pwd: pwd}
-			neg := &steps.Negotiation{}
-			bind := &steps.Bind{Rsrc: resource}
-			actors.With(st).Do(auth.Act(), errHandler).Do(steps.Starter).Do(neg.Act()).Do(bind.Act()).Do(steps.Session).Run()
-			actors.With(st).Do(steps.InitialPresence).Run()
-			actors.With(st).Do(func(st stream.Stream) error {
-				actors.With(st).Do(steps.PresenceTo("golang@conference.jabber.ru/xep")).Run()
-				for {
-					st.Ring(conv(func(_e entity.Entity) {
-						switch e := _e.(type) {
-						case *entity.Message:
-							log.Println(strings.TrimPrefix(e.From, "golang@conference.jabber.ru/"))
-							log.Println(e.Body)
-						}
-					}), 0)
-				}
-			}).Run()
-		}
-	} else {
-		log.Fatal(err)
-	}
-}

+ 107 - 0
muc-client/main.go

@@ -0,0 +1,107 @@
+package main
+
+import (
+	"bytes"
+	"flag"
+	"github.com/ivpusic/golog"
+	"github.com/ivpusic/neo"
+	"github.com/ivpusic/neo-cors"
+	"github.com/ivpusic/neo/middlewares/logger"
+	"github.com/skratchdot/open-golang/open"
+	"log"
+	"strings"
+	"sync"
+	"time"
+	"xep/c2s/actors"
+	"xep/c2s/actors/steps"
+	"xep/c2s/stream"
+	"xep/entity"
+	"xep/units"
+)
+
+var (
+	user     string
+	pwd      string
+	server   string
+	resource string
+	neo_log  = golog.GetLogger("application")
+)
+
+func init() {
+	flag.StringVar(&user, "u", "goxep", "-u=user")
+	flag.StringVar(&server, "s", "xmpp.ru", "-s=server")
+	flag.StringVar(&resource, "r", "go", "-r=resource")
+	flag.StringVar(&pwd, "p", "GogogOg0", "-p=password")
+	log.SetFlags(0)
+}
+
+func conv(fn func(entity.Entity)) func(*bytes.Buffer) *bytes.Buffer {
+	return func(in *bytes.Buffer) (out *bytes.Buffer) {
+		if _e, err := entity.Consume(in); err == nil {
+			switch e := _e.(type) {
+			case *entity.Message:
+				fn(e)
+			}
+		} else {
+			log.Println("ERROR", err)
+			log.Println(string(in.Bytes()))
+			log.Println()
+		}
+		return
+	}
+}
+
+func main() {
+	flag.Parse()
+	s := &units.Server{Name: server}
+	c := &units.Client{Name: user, Server: s}
+	wg := new(sync.WaitGroup)
+	wg.Add(1)
+	go func() {
+		st := stream.New(s)
+		if err := stream.Dial(st); err == nil {
+			errHandler := func(err error) {
+				log.Fatal(err)
+			}
+			neg := &steps.Negotiation{}
+			actors.With(st).Do(steps.Starter, errHandler).Do(neg.Act(), errHandler).Run()
+			if neg.HasMechanism("PLAIN") {
+				auth := &steps.PlainAuth{Client: c, Pwd: pwd}
+				neg := &steps.Negotiation{}
+				bind := &steps.Bind{Rsrc: resource}
+				actors.With(st).Do(auth.Act(), errHandler).Do(steps.Starter).Do(neg.Act()).Do(bind.Act()).Do(steps.Session).Run()
+				actors.With(st).Do(steps.InitialPresence).Run()
+				actors.With(st).Do(func(st stream.Stream) error {
+					actors.With(st).Do(steps.PresenceTo("golang@conference.jabber.ru/xep")).Run()
+					for {
+						st.Ring(conv(func(_e entity.Entity) {
+							switch e := _e.(type) {
+							case *entity.Message:
+								log.Println(strings.TrimPrefix(e.From, "golang@conference.jabber.ru/"))
+								log.Println(e.Body)
+							}
+						}), 0)
+					}
+				}).Run()
+			}
+			wg.Done()
+		} else {
+			log.Fatal(err)
+		}
+	}()
+	go func() {
+		app := neo.App()
+		app.Use(logger.Log)
+		app.Use(cors.Init())
+		app.Get("/", func(ctx *neo.Ctx) {
+			ctx.Res.Text("I am Neo Programmer", 200)
+		})
+		app.Start()
+		wg.Done()
+	}()
+	go func() {
+		time.Sleep(time.Duration(time.Millisecond * 200))
+		open.Start("http://localhost:3000")
+	}()
+	wg.Wait()
+}

+ 0 - 24
xep_test.go

@@ -1,24 +0,0 @@
-package main
-
-import (
-	"log"
-	"net"
-	"testing"
-)
-
-func TestConnection(t *testing.T){
-	if c, err:=net.Dial("tcp", "jabber.ru:5222"); err==nil{
-		c.Write([]byte(`<?xml version='1.0'?>
-   <stream:stream
-       from='uni0n@xmpp.ru'
-       to='xmpp.ru'
-       version='1.0'
-       xml:lang='en'
-       xmlns='jabber:client'
-       xmlns:stream='http://etherx.jabber.org/streams'>`))
-		buf:=make([]byte, 256)
-		c.Read(buf);
-		log.Println(string(buf))
-		c.Close()
-	}
-}