1
0
Fork 0
This commit is contained in:
Chteufleur 2016-04-09 13:50:19 +02:00
parent abfe6de004
commit 7f76a35240
3 changed files with 56 additions and 59 deletions

View File

@ -131,7 +131,7 @@ func gatewayXmppSteamMessage() {
func gatewayXmppSteamAuthCode() { func gatewayXmppSteamAuthCode() {
for { for {
authCode := <- xmpp.ChanAuthCode authCode := <-xmpp.ChanAuthCode
steam.AuthCode = authCode steam.AuthCode = authCode
steam.Disconnect() steam.Disconnect()
time.Sleep(2 * time.Second) time.Sleep(2 * time.Second)

View File

@ -6,26 +6,23 @@ import (
"log" "log"
) )
const ( const (
CommandAuthcode = "steamAuthCodeCommand" CommandAuthcode = "steamAuthCodeCommand"
) )
var ( var (
ChanAuthCode = make(chan string) ChanAuthCode = make(chan string)
) )
func execDiscoCommand(iq *xmpp.Iq) { func execDiscoCommand(iq *xmpp.Iq) {
log.Printf("%sDiscovery item iq received", LogInfo) log.Printf("%sDiscovery item iq received", LogInfo)
reply := iq.Response(xmpp.IqTypeResult) reply := iq.Response(xmpp.IqTypeResult)
discoItem := &xmpp.DiscoItems{Node: xmpp.NodeAdHocCommand} discoItem := &xmpp.DiscoItems{Node: xmpp.NodeAdHocCommand}
// Add available commands // Add available commands
discoI := &xmpp.DiscoItem{JID: jid.Domain, Node: CommandAuthcode, Name: "Add Auth Code"} discoI := &xmpp.DiscoItem{JID: jid.Domain, Node: CommandAuthcode, Name: "Add Auth Code"}
discoItem.Item = append(discoItem.Item, *discoI) discoItem.Item = append(discoItem.Item, *discoI)
reply.PayloadEncode(discoItem) reply.PayloadEncode(discoItem)
comp.Out <- reply comp.Out <- reply
} }
@ -35,58 +32,58 @@ func execCommandAdHoc(iq *xmpp.Iq) {
iq.PayloadDecode(adHoc) iq.PayloadDecode(adHoc)
if adHoc.SessionId == "" && adHoc.Action == xmpp.ActionAdHocExecute { if adHoc.SessionId == "" && adHoc.Action == xmpp.ActionAdHocExecute {
// First step in the command // First step in the command
log.Printf("%sAd-Hoc command (Node : %s). First step.", LogInfo, adHoc.Node) log.Printf("%sAd-Hoc command (Node : %s). First step.", LogInfo, adHoc.Node)
reply := iq.Response(xmpp.IqTypeResult) reply := iq.Response(xmpp.IqTypeResult)
cmd := &xmpp.AdHocCommand{Node: adHoc.Node, Status: xmpp.StatusAdHocExecute, SessionId: xmpp.SessionId()} cmd := &xmpp.AdHocCommand{Node: adHoc.Node, Status: xmpp.StatusAdHocExecute, SessionId: xmpp.SessionId()}
if adHoc.Node == CommandAuthcode { if adHoc.Node == CommandAuthcode {
// Command Auth Code // Command Auth Code
cmdXForm := &xmpp.AdHocXForm{Type: xmpp.TypeAdHocForm, Title: "Steam Auth Code", Instructions: "Please provide the auth code that Steam sended to you."} cmdXForm := &xmpp.AdHocXForm{Type: xmpp.TypeAdHocForm, Title: "Steam Auth Code", Instructions: "Please provide the auth code that Steam sended to you."}
field := &xmpp.AdHocField{Var: "code", Label: "Auth Code", Type: xmpp.TypeAdHocFieldTextSingle} field := &xmpp.AdHocField{Var: "code", Label: "Auth Code", Type: xmpp.TypeAdHocFieldTextSingle}
cmdXForm.Fields = append(cmdXForm.Fields, *field) cmdXForm.Fields = append(cmdXForm.Fields, *field)
cmd.XForm = *cmdXForm cmd.XForm = *cmdXForm
} }
reply.PayloadEncode(cmd) reply.PayloadEncode(cmd)
comp.Out <- reply comp.Out <- reply
} else if adHoc.Action == xmpp.ActionAdHocExecute { } else if adHoc.Action == xmpp.ActionAdHocExecute {
// Last step in the command // Last step in the command
log.Printf("%sAd-Hoc command (Node : %s). Last step.", LogInfo, adHoc.Node) log.Printf("%sAd-Hoc command (Node : %s). Last step.", LogInfo, adHoc.Node)
reply := iq.Response(xmpp.IqTypeResult) reply := iq.Response(xmpp.IqTypeResult)
cmd := &xmpp.AdHocCommand{Node: adHoc.Node, Status: xmpp.StatusAdHocCompleted, SessionId: adHoc.SessionId} cmd := &xmpp.AdHocCommand{Node: adHoc.Node, Status: xmpp.StatusAdHocCompleted, SessionId: adHoc.SessionId}
if adHoc.Node == CommandAuthcode && adHoc.XForm.Type == xmpp.TypeAdHocSubmit { if adHoc.Node == CommandAuthcode && adHoc.XForm.Type == xmpp.TypeAdHocSubmit {
cmdXForm := &xmpp.AdHocXForm{Type: xmpp.TypeAdHocResult, Title: "Steam Auth Code "} cmdXForm := &xmpp.AdHocXForm{Type: xmpp.TypeAdHocResult, Title: "Steam Auth Code "}
cmd.XForm = *cmdXForm cmd.XForm = *cmdXForm
note := &xmpp.AdHocNote{Type: xmpp.TypeAdHocNoteInfo} note := &xmpp.AdHocNote{Type: xmpp.TypeAdHocNoteInfo}
// Command Auth Code // Command Auth Code
authCode := "" authCode := ""
fields := adHoc.XForm.Fields fields := adHoc.XForm.Fields
for _, field := range fields { for _, field := range fields {
if field.Var == "code" { if field.Var == "code" {
authCode = field.Value authCode = field.Value
break break
} }
} }
if authCode != "" { if authCode != "" {
// Succeded // Succeded
ChanAuthCode <- authCode ChanAuthCode <- authCode
note.Value = "Commande effectuée avec succes !" note.Value = "Commande effectuée avec succes !"
} else { } else {
// Failed // Failed
note.Value = "Une erreur c'est produite à l'exécution de la commande…" note.Value = "Une erreur c'est produite à l'exécution de la commande…"
} }
cmd.Note = *note cmd.Note = *note
} }
reply.PayloadEncode(cmd) reply.PayloadEncode(cmd)
comp.Out <- reply comp.Out <- reply
} else if adHoc.Action == xmpp.ActionAdHocCancel { } else if adHoc.Action == xmpp.ActionAdHocCancel {
// command canceled // command canceled
log.Printf("%sAd-Hoc command (Node : %s). Command canceled.", LogInfo, adHoc.Node) log.Printf("%sAd-Hoc command (Node : %s). Command canceled.", LogInfo, adHoc.Node)
reply := iq.Response(xmpp.IqTypeResult) reply := iq.Response(xmpp.IqTypeResult)
cmd := &xmpp.AdHocCommand{Node: adHoc.Node, Status: xmpp.StatusAdHocCanceled, SessionId: adHoc.SessionId} cmd := &xmpp.AdHocCommand{Node: adHoc.Node, Status: xmpp.StatusAdHocCanceled, SessionId: adHoc.SessionId}
reply.PayloadEncode(cmd) reply.PayloadEncode(cmd)

View File

@ -132,17 +132,17 @@ func SendPresence(status, tpye, message string) {
} }
func SendPresenceFrom(status, tpye, from, message, nick string) { func SendPresenceFrom(status, tpye, from, message, nick string) {
/* /*
if message == "" { if message == "" {
comp.Out <- xmpp.Presence{To: PreferedJID, From: from, Show: status, Type: tpye, Nick: nick} comp.Out <- xmpp.Presence{To: PreferedJID, From: from, Show: status, Type: tpye, Nick: nick}
} else if nick == "" { } else if nick == "" {
comp.Out <- xmpp.Presence{To: PreferedJID, From: from, Show: status, Type: tpye, Status: message} comp.Out <- xmpp.Presence{To: PreferedJID, From: from, Show: status, Type: tpye, Status: message}
} else if nick == "" { } else if nick == "" {
comp.Out <- xmpp.Presence{To: PreferedJID, From: from, Show: status, Type: tpye} comp.Out <- xmpp.Presence{To: PreferedJID, From: from, Show: status, Type: tpye}
} else { } else {
comp.Out <- xmpp.Presence{To: PreferedJID, From: from, Show: status, Type: tpye, Status: message, Nick: nick} comp.Out <- xmpp.Presence{To: PreferedJID, From: from, Show: status, Type: tpye, Status: message, Nick: nick}
} }
*/ */
p := xmpp.Presence{To: PreferedJID, From: from} p := xmpp.Presence{To: PreferedJID, From: from}
if status != "" { if status != "" {