From 9095638867f7d37f7aefab5745f574451106932f Mon Sep 17 00:00:00 2001 From: "nedim.uka" Date: Wed, 15 Sep 2021 20:11:55 +0200 Subject: [PATCH] Loaded credentials from input json file --- .gitignore | 3 ++- services/xmppsService.go | 46 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 600d2d3..fe4152d 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -.vscode \ No newline at end of file +.vscode +input.json \ No newline at end of file diff --git a/services/xmppsService.go b/services/xmppsService.go index 572a8dc..9086a52 100644 --- a/services/xmppsService.go +++ b/services/xmppsService.go @@ -2,7 +2,9 @@ package services import ( "crypto/tls" + "encoding/json" "fmt" + "io/ioutil" "log" "os" "time" @@ -51,6 +53,15 @@ type XMPPClient struct { Client *xmpp.Client } +// ClientCredentials - credentials info for client configuration +type ClientCredentials struct { + Jid string `json:"username"` + Credential string `json:"password"` + Host string `json:"host"` + Port int `json:"port"` + Ping int `json:"ping"` +} + // Instance - get instance of xmpp service func Instance() *XMPPService { return &xmppService @@ -66,6 +77,15 @@ func Init() { } xmppService.Router.HandleFunc("message", handleMessage) + //Get Client credentials from file + clientCredentials, err := getClientConfigsFromFile(appConfig.AppConfig.Credentials.CredentialsFileLocation) + + if err != nil { + log.Fatalf("Unable to load credentials from file path %v, ERROR : %v TERMINATING", appConfig.AppConfig.Credentials.CredentialsFileLocation, err) + } + + log.Printf("Client credentials length %v", len(clientCredentials)) + xmppService.XMPPClients = make([]XMPPClient, 0) xmppClient := XMPPClient{ Config: xmpp.Config{ @@ -115,6 +135,32 @@ func SendOnlinePresenceStanza(client *xmpp.Client, jid string) error { } } +func getClientConfigsFromFile(filePath string) ([]ClientCredentials, error) { + + var clientCredentials []ClientCredentials + + f, err := os.Open(filePath) + if err != nil { + return clientCredentials, err + } + defer f.Close() + + byteValue, err := ioutil.ReadAll(f) + + if err != nil { + return clientCredentials, err + } + + err = json.Unmarshal(byteValue, &clientCredentials) + + if err != nil { + return clientCredentials, err + } + + return clientCredentials, nil + +} + func handleMessage(s xmpp.Sender, p stanza.Packet) { log.Printf("Handle message") msg, ok := p.(stanza.Message)