package server import ( //"crypto/rsa" "git.mascherari.press/cwtch/server/fetch" "git.mascherari.press/cwtch/server/listen" "git.mascherari.press/cwtch/server/send" "git.mascherari.press/cwtch/storage" "github.com/s-rah/go-ricochet/application" "github.com/s-rah/go-ricochet/channels" "github.com/s-rah/go-ricochet/utils" "log" //"time" ) type Server struct { } func (s *Server) Run(privateKeyFile string) { cwtchserver := new(application.RicochetApplication) pk, err := utils.LoadPrivateKeyFromFile(privateKeyFile) if err != nil { log.Fatalf("error reading private key file: %v", err) } l, err := application.SetupOnion("127.0.0.1:9051", "tcp4", "", pk, 9878) if err != nil { log.Fatalf("error setting up onion service: %v", err) } af := application.ApplicationInstanceFactory{} af.Init() ms := new(storage.MessageStore) ms.Init("cwtch.messages") af.AddHandler("im.cwtch.server.listen", func(rai *application.ApplicationInstance) func() channels.Handler { si := new(Instance) si.Init(rai, cwtchserver, ms) return func() channels.Handler { cslc := new(listen.CwtchServerListenChannel) return cslc } }) af.AddHandler("im.cwtch.server.fetch", func(rai *application.ApplicationInstance) func() channels.Handler { si := new(Instance) si.Init(rai, cwtchserver, ms) return func() channels.Handler { cssc := new(fetch.CwtchServerFetchChannel) cssc.Handler = si return cssc } }) af.AddHandler("im.cwtch.server.send", func(rai *application.ApplicationInstance) func() channels.Handler { si := new(Instance) si.Init(rai, cwtchserver, ms) return func() channels.Handler { cssc := new(send.CwtchServerSendChannel) cssc.Handler = si return cssc } }) cwtchserver.Init(pk, af, new(application.AcceptAllContactManager)) log.Printf("cwtch server running on cwtch:%s", l.Addr().String()[0:16]) cwtchserver.Run(l) }