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() {
for {
authCode := <- xmpp.ChanAuthCode
authCode := <-xmpp.ChanAuthCode
steam.AuthCode = authCode
steam.Disconnect()
time.Sleep(2 * time.Second)

View File

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

View File

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