finish enough barebones odClient to attempt connection (move to seperate pacakge so doesnt get gomobile.bind
This commit is contained in:
parent
5085a1d08c
commit
1fdbd0f7f7
|
@ -0,0 +1,97 @@
|
||||||
|
package ODClient
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/s-rah/go-ricochet/connection"
|
||||||
|
"time"
|
||||||
|
"log"
|
||||||
|
"github.com/s-rah/go-ricochet/channels"
|
||||||
|
"github.com/s-rah/go-ricochet/utils"
|
||||||
|
"github.com/s-rah/go-ricochet"
|
||||||
|
)
|
||||||
|
|
||||||
|
type ODClient struct {
|
||||||
|
connection.AutoConnectionHandler
|
||||||
|
recvMessages chan string
|
||||||
|
sendMessages chan string
|
||||||
|
deviceName string
|
||||||
|
deviceLevel int
|
||||||
|
batteryLevel string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (odClient *ODClient) Connect(privateKeyData string, serverAddr string) error {
|
||||||
|
log.Println("ODCLient.Connect()")
|
||||||
|
privateKey, err := utils.ParsePrivateKey([]byte(privateKeyData))
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal("error parsing private key: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
odClient.Init(privateKey, serverAddr)
|
||||||
|
|
||||||
|
odClient.RegisterChannelHandler("im.ricochet.contact.request", func() channels.Handler {
|
||||||
|
contact := new(channels.ContactRequestChannel)
|
||||||
|
contact.Handler = odClient
|
||||||
|
return contact
|
||||||
|
})
|
||||||
|
|
||||||
|
odClient.RegisterChannelHandler("im.ricochet.chat", func() channels.Handler {
|
||||||
|
chat := new(channels.ChatChannel)
|
||||||
|
chat.Handler = odClient
|
||||||
|
return chat
|
||||||
|
})
|
||||||
|
|
||||||
|
odClient.recvMessages = make(chan string)
|
||||||
|
odClient.sendMessages = make(chan string)
|
||||||
|
|
||||||
|
log.Println("ODClient connecting...")
|
||||||
|
conn, err := goricochet.Open(serverAddr)
|
||||||
|
if err != nil {
|
||||||
|
log.Println("Error connecting %v", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
log.Println("ODCleint connected!")
|
||||||
|
_, err = connection.HandleOutboundConnection(conn).ProcessAuthAsClient(privateKey)
|
||||||
|
if err != nil {
|
||||||
|
log.Println("Error handling auth: %v", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
log.Println("ODClient: Authenticated!")
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
/************* Chat Channel Handler ********/
|
||||||
|
|
||||||
|
// ChatMessage passes the response to recvMessages.
|
||||||
|
func (odc *ODClient) ChatMessage(messageID uint32, when time.Time, message string) bool {
|
||||||
|
log.Printf("Received Message: %s", message)
|
||||||
|
odc.recvMessages <- message
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
// ChatMessageAck does nothing.
|
||||||
|
func (odc *ODClient) ChatMessageAck(messageID uint32) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/************* Contact Channel Handler ********/
|
||||||
|
|
||||||
|
// GetContactDetails is purposely empty
|
||||||
|
func (odc *ODClient) GetContactDetails() (string, string) {
|
||||||
|
return "", ""
|
||||||
|
}
|
||||||
|
|
||||||
|
// ContactRequest denies any contact request.
|
||||||
|
func (odc *ODClient) ContactRequest(name string, message string) string {
|
||||||
|
return "Rejected"
|
||||||
|
}
|
||||||
|
|
||||||
|
// ContactRequestRejected purposly does nothing.
|
||||||
|
func (odc *ODClient) ContactRequestRejected() {
|
||||||
|
}
|
||||||
|
|
||||||
|
// ContactRequestAccepted purposly does nothing.
|
||||||
|
func (odc *ODClient) ContactRequestAccepted() {
|
||||||
|
}
|
||||||
|
|
||||||
|
// ContactRequestError purposly does nothing.
|
||||||
|
func (odc *ODClient) ContactRequestError() {
|
||||||
|
}
|
|
@ -8,7 +8,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
"github.com/yawning/bulb/utils/pkcs1"
|
"github.com/yawning/bulb/utils/pkcs1"
|
||||||
"crypto/rsa"
|
"crypto/rsa"
|
||||||
"github.com/s-rah/go-ricochet/channels"
|
"github.com/dballard/goRicochetMobile/ODClient"
|
||||||
)
|
)
|
||||||
|
|
||||||
func GeneratePrivateKey() (string, error) {
|
func GeneratePrivateKey() (string, error) {
|
||||||
|
@ -37,31 +37,12 @@ func TestNet() (ok bool, ex error) {
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func ODClientConnect(privateKeyData string, serverAddr string) {
|
func ODClientConnect(privateKey string, serverAddr string) error {
|
||||||
privateKey, err := utils.ParsePrivateKey([]byte(privateKeyData))
|
odClient := new(ODClient.ODClient)
|
||||||
if err != nil {
|
err := odClient.Connect(privateKey, serverAddr)
|
||||||
log.Fatal("error parsing private key: %v", err)
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
odClient := new(ODClient)
|
|
||||||
odClient.Init(privateKey, serverAddr)
|
|
||||||
|
|
||||||
odClient.RegisterChannelHandler("im.ricochet.contact.request", func() channels.Handler {
|
|
||||||
contact := new(channels.ContactRequestChannel)
|
|
||||||
contact.Handler = odClient
|
|
||||||
return contact
|
|
||||||
})
|
|
||||||
|
|
||||||
odClient.RegisterChannelHandler("im.ricochet.chat", func() channels.Handler {
|
|
||||||
chat := new(channels.ChatChannel)
|
|
||||||
chat.Handler = odClient
|
|
||||||
return chat
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/******** Testing by standing up an echobot ******/
|
/******** Testing by standing up an echobot ******/
|
||||||
|
|
||||||
func EchoBot(privateKeyData string) {
|
func EchoBot(privateKeyData string) {
|
||||||
|
|
52
odClient.go
52
odClient.go
|
@ -1,52 +0,0 @@
|
||||||
package goRicochetMobile
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/s-rah/go-ricochet/connection"
|
|
||||||
"time"
|
|
||||||
"log"
|
|
||||||
)
|
|
||||||
|
|
||||||
type ODClient struct {
|
|
||||||
connection.AutoConnectionHandler
|
|
||||||
messages chan string
|
|
||||||
deviceName string
|
|
||||||
deviceLevel int
|
|
||||||
batteryLevel string
|
|
||||||
}
|
|
||||||
|
|
||||||
/************* Chat Channel Handler ********/
|
|
||||||
|
|
||||||
// ChatMessage passes the response to messages.
|
|
||||||
func (odc *ODClient) ChatMessage(messageID uint32, when time.Time, message string) bool {
|
|
||||||
log.Printf("Received Message: %s", message)
|
|
||||||
odc.messages <- message
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
// ChatMessageAck does nothing.
|
|
||||||
func (odc *ODClient) ChatMessageAck(messageID uint32) {
|
|
||||||
}
|
|
||||||
|
|
||||||
/************* Contact Channel Handler ********/
|
|
||||||
|
|
||||||
// GetContactDetails is purposely empty
|
|
||||||
func (odc *ODClient) GetContactDetails() (string, string) {
|
|
||||||
return "", ""
|
|
||||||
}
|
|
||||||
|
|
||||||
// ContactRequest denies any contact request.
|
|
||||||
func (odc *ODClient) ContactRequest(name string, message string) string {
|
|
||||||
return "Rejected"
|
|
||||||
}
|
|
||||||
|
|
||||||
// ContactRequestRejected purposly does nothing.
|
|
||||||
func (odc *ODClient) ContactRequestRejected() {
|
|
||||||
}
|
|
||||||
|
|
||||||
// ContactRequestAccepted purposly does nothing.
|
|
||||||
func (odc *ODClient) ContactRequestAccepted() {
|
|
||||||
}
|
|
||||||
|
|
||||||
// ContactRequestError purposly does nothing.
|
|
||||||
func (odc *ODClient) ContactRequestError() {
|
|
||||||
}
|
|
Loading…
Reference in New Issue