forked from chteufleur/go-xmpp4steam
Disable commands on Steam user + adaptation to library modifications
This commit is contained in:
parent
0ffd5de65c
commit
271f431de2
4
main.go
4
main.go
|
|
@ -15,7 +15,7 @@ import (
|
|||
)
|
||||
|
||||
const (
|
||||
Version = "v0.3.8"
|
||||
Version = "v1.0-dev"
|
||||
configurationFilePath = "xmpp4steam.cfg"
|
||||
)
|
||||
|
||||
|
|
@ -53,6 +53,6 @@ func main() {
|
|||
|
||||
xmpp.Disconnect()
|
||||
|
||||
time.Sleep(1 * time.Second)
|
||||
log.Println("Exit main()")
|
||||
time.Sleep(1 * time.Second)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
{"Addresses":[{"IP":"162.254.197.41","Port":27020},{"IP":"146.66.152.11","Port":27019},{"IP":"146.66.152.10","Port":27017},{"IP":"162.254.197.42","Port":27019},{"IP":"162.254.197.41","Port":27018},{"IP":"162.254.197.41","Port":27017},{"IP":"162.254.197.40","Port":27019},{"IP":"146.66.152.11","Port":27020},{"IP":"146.66.152.10","Port":27018},{"IP":"146.66.152.11","Port":27017},{"IP":"162.254.197.41","Port":27021},{"IP":"162.254.197.41","Port":27019},{"IP":"162.254.197.42","Port":27018},{"IP":"162.254.197.42","Port":27020},{"IP":"146.66.152.10","Port":27019},{"IP":"146.66.152.10","Port":27020},{"IP":"162.254.197.40","Port":27020},{"IP":"162.254.197.42","Port":27017},{"IP":"162.254.197.40","Port":27021},{"IP":"146.66.152.11","Port":27018},{"IP":"162.254.197.40","Port":27018},{"IP":"162.254.197.42","Port":27021},{"IP":"162.254.197.40","Port":27017},{"IP":"162.254.196.41","Port":27017},{"IP":"162.254.196.40","Port":27018},{"IP":"162.254.196.40","Port":27020},{"IP":"162.254.196.41","Port":27019},{"IP":"162.254.196.43","Port":27019},{"IP":"162.254.196.42","Port":27017},{"IP":"162.254.196.42","Port":27021},{"IP":"162.254.196.40","Port":27017},{"IP":"162.254.196.41","Port":27021},{"IP":"162.254.196.42","Port":27019},{"IP":"162.254.196.43","Port":27021},{"IP":"162.254.196.42","Port":27020},{"IP":"162.254.196.42","Port":27018},{"IP":"162.254.196.40","Port":27019},{"IP":"162.254.196.43","Port":27017},{"IP":"162.254.196.41","Port":27020},{"IP":"162.254.196.43","Port":27020},{"IP":"162.254.196.43","Port":27018},{"IP":"162.254.196.41","Port":27018},{"IP":"185.25.180.15","Port":27019},{"IP":"146.66.155.8","Port":27020},{"IP":"185.25.182.10","Port":27019},{"IP":"185.25.182.10","Port":27020},{"IP":"185.25.180.15","Port":27018},{"IP":"185.25.182.10","Port":27018},{"IP":"146.66.155.8","Port":27017},{"IP":"155.133.242.8","Port":27018},{"IP":"185.25.182.10","Port":27017},{"IP":"185.25.180.15","Port":27017},{"IP":"155.133.242.8","Port":27017},{"IP":"155.133.242.9","Port":27018},{"IP":"155.133.242.8","Port":27019},{"IP":"146.66.155.8","Port":27018},{"IP":"146.66.155.8","Port":27019},{"IP":"155.133.242.8","Port":27020},{"IP":"185.25.180.14","Port":27020},{"IP":"155.133.242.9","Port":27019},{"IP":"185.25.180.14","Port":27017},{"IP":"185.25.180.15","Port":27020},{"IP":"155.133.242.9","Port":27020},{"IP":"185.25.180.14","Port":27019},{"IP":"155.133.242.9","Port":27017},{"IP":"185.25.180.14","Port":27018},{"IP":"162.254.196.40","Port":27021},{"IP":"208.78.164.9","Port":27017},{"IP":"208.78.164.13","Port":27018},{"IP":"208.78.164.10","Port":27018},{"IP":"208.78.164.13","Port":27017},{"IP":"208.78.164.14","Port":27018},{"IP":"208.78.164.14","Port":27019},{"IP":"208.78.164.13","Port":27019},{"IP":"208.78.164.9","Port":27018},{"IP":"208.78.164.12","Port":27019},{"IP":"208.78.164.14","Port":27017},{"IP":"208.78.164.11","Port":27019},{"IP":"208.78.164.9","Port":27019},{"IP":"208.78.164.12","Port":27017}]}
|
||||
{"Addresses":[{"IP":"146.66.152.11","Port":27020},{"IP":"162.254.197.41","Port":27020},{"IP":"162.254.197.40","Port":27019},{"IP":"162.254.197.41","Port":27017},{"IP":"146.66.152.10","Port":27020},{"IP":"146.66.152.11","Port":27017},{"IP":"146.66.152.11","Port":27019},{"IP":"146.66.152.10","Port":27018},{"IP":"162.254.197.42","Port":27021},{"IP":"162.254.197.42","Port":27020},{"IP":"162.254.197.42","Port":27018},{"IP":"162.254.197.41","Port":27019},{"IP":"162.254.197.40","Port":27020},{"IP":"146.66.152.10","Port":27017},{"IP":"162.254.197.42","Port":27017},{"IP":"162.254.197.41","Port":27021},{"IP":"162.254.197.40","Port":27021},{"IP":"162.254.197.41","Port":27018},{"IP":"146.66.152.11","Port":27018},{"IP":"146.66.152.10","Port":27019},{"IP":"162.254.197.40","Port":27018},{"IP":"162.254.197.40","Port":27017},{"IP":"162.254.197.42","Port":27019},{"IP":"162.254.196.42","Port":27021},{"IP":"162.254.196.42","Port":27019},{"IP":"162.254.196.43","Port":27018},{"IP":"162.254.196.41","Port":27018},{"IP":"162.254.196.43","Port":27020},{"IP":"162.254.196.42","Port":27020},{"IP":"162.254.196.41","Port":27017},{"IP":"162.254.196.42","Port":27018},{"IP":"162.254.196.41","Port":27019},{"IP":"162.254.196.41","Port":27020},{"IP":"162.254.196.42","Port":27017},{"IP":"162.254.196.40","Port":27021},{"IP":"162.254.196.43","Port":27021},{"IP":"162.254.196.40","Port":27020},{"IP":"162.254.196.40","Port":27017},{"IP":"162.254.196.41","Port":27021},{"IP":"162.254.196.40","Port":27018},{"IP":"162.254.196.40","Port":27019},{"IP":"162.254.196.43","Port":27019},{"IP":"162.254.196.43","Port":27017},{"IP":"146.66.155.8","Port":27019},{"IP":"155.133.242.9","Port":27019},{"IP":"185.25.180.14","Port":27020},{"IP":"185.25.182.10","Port":27020},{"IP":"185.25.180.14","Port":27019},{"IP":"146.66.155.8","Port":27020},{"IP":"146.66.155.8","Port":27018},{"IP":"185.25.180.15","Port":27020},{"IP":"155.133.242.9","Port":27018},{"IP":"155.133.242.9","Port":27020},{"IP":"146.66.155.8","Port":27017},{"IP":"185.25.182.10","Port":27017},{"IP":"185.25.182.10","Port":27018},{"IP":"185.25.180.14","Port":27018},{"IP":"185.25.180.14","Port":27017},{"IP":"155.133.242.9","Port":27017},{"IP":"155.133.242.8","Port":27017},{"IP":"185.25.180.15","Port":27018},{"IP":"185.25.182.10","Port":27019},{"IP":"185.25.180.15","Port":27017},{"IP":"155.133.242.8","Port":27019},{"IP":"185.25.180.15","Port":27019},{"IP":"155.133.242.8","Port":27018},{"IP":"155.133.242.8","Port":27020},{"IP":"208.78.164.12","Port":27018},{"IP":"208.78.164.9","Port":27017},{"IP":"208.78.164.9","Port":27019},{"IP":"208.78.164.13","Port":27019},{"IP":"208.78.164.12","Port":27019},{"IP":"208.78.164.10","Port":27018},{"IP":"208.78.164.14","Port":27017},{"IP":"208.78.164.11","Port":27019},{"IP":"208.78.164.13","Port":27018},{"IP":"208.78.164.12","Port":27017},{"IP":"208.78.164.11","Port":27018},{"IP":"208.78.164.10","Port":27017},{"IP":"208.78.164.9","Port":27018}]}
|
||||
|
|
@ -21,7 +21,7 @@ var (
|
|||
|
||||
func execDiscoCommand(iq *xmpp.Iq) {
|
||||
log.Printf("%sDiscovery item iq received", LogInfo)
|
||||
reply := iq.Response(xmpp.IqTypeResult)
|
||||
reply := iq.Response(xmpp.IQTypeResult)
|
||||
discoItem := &xmpp.DiscoItems{Node: xmpp.NodeAdHocCommand}
|
||||
|
||||
// Add available commands
|
||||
|
|
@ -42,12 +42,12 @@ func execCommandAdHoc(iq *xmpp.Iq) {
|
|||
adHoc := &xmpp.AdHocCommand{}
|
||||
iq.PayloadDecode(adHoc)
|
||||
|
||||
if adHoc.SessionId == "" && adHoc.Action == xmpp.ActionAdHocExecute {
|
||||
if adHoc.SessionID == "" && adHoc.Action == xmpp.ActionAdHocExecute {
|
||||
// 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()}
|
||||
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."}
|
||||
|
|
@ -103,8 +103,8 @@ func execCommandAdHoc(iq *xmpp.Iq) {
|
|||
} 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}
|
||||
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"}
|
||||
|
|
@ -185,8 +185,8 @@ func execCommandAdHoc(iq *xmpp.Iq) {
|
|||
} else if adHoc.Action == xmpp.ActionAdHocCancel {
|
||||
// command canceled
|
||||
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 := iq.Response(xmpp.IQTypeResult)
|
||||
cmd := &xmpp.AdHocCommand{Node: adHoc.Node, Status: xmpp.StatusAdHocCanceled, SessionID: adHoc.SessionID}
|
||||
reply.PayloadEncode(cmd)
|
||||
comp.Out <- reply
|
||||
}
|
||||
|
|
|
|||
52
xmpp/xmpp.go
52
xmpp/xmpp.go
|
|
@ -80,28 +80,44 @@ func mainXMPP() {
|
|||
}
|
||||
|
||||
case *xmpp.Iq:
|
||||
jidBare := strings.SplitN(v.To, "/", 2)[0]
|
||||
|
||||
switch v.PayloadName().Space {
|
||||
case xmpp.NsDiscoItems:
|
||||
execDiscoCommand(v)
|
||||
case xmpp.NSDiscoItems:
|
||||
if jidBare == jid.Domain {
|
||||
execDiscoCommand(v)
|
||||
} else {
|
||||
sendNotSupportedFeature(v)
|
||||
}
|
||||
|
||||
case xmpp.NodeAdHocCommand:
|
||||
execCommandAdHoc(v)
|
||||
if jidBare == jid.Domain {
|
||||
execCommandAdHoc(v)
|
||||
} else {
|
||||
sendNotSupportedFeature(v)
|
||||
}
|
||||
|
||||
case xmpp.NsVCardTemp:
|
||||
reply := v.Response(xmpp.IqTypeResult)
|
||||
vcard := &xmpp.VCard{}
|
||||
reply.PayloadEncode(vcard)
|
||||
comp.Out <- reply
|
||||
case xmpp.NSVCardTemp:
|
||||
if jidBare == jid.Domain {
|
||||
reply := v.Response(xmpp.IQTypeResult)
|
||||
vcard := &xmpp.VCard{}
|
||||
reply.PayloadEncode(vcard)
|
||||
comp.Out <- reply
|
||||
} else {
|
||||
sendNotSupportedFeature(v)
|
||||
}
|
||||
|
||||
case xmpp.NsJabberClient:
|
||||
reply := v.Response(xmpp.IqTypeResult)
|
||||
reply.PayloadEncode(&xmpp.SoftwareVersion{Name: "go-xmpp4steam", Version: SoftVersion})
|
||||
comp.Out <- reply
|
||||
case xmpp.NSJabberClient:
|
||||
if jidBare == jid.Domain {
|
||||
reply := v.Response(xmpp.IQTypeResult)
|
||||
reply.PayloadEncode(&xmpp.SoftwareVersion{Name: "go-xmpp4steam", Version: SoftVersion})
|
||||
comp.Out <- reply
|
||||
} else {
|
||||
sendNotSupportedFeature(v)
|
||||
}
|
||||
|
||||
default:
|
||||
reply := v.Response(xmpp.IqTypeError)
|
||||
reply.PayloadEncode(xmpp.NewError("cancel", xmpp.FeatureNotImplemented, ""))
|
||||
comp.Out <- reply
|
||||
sendNotSupportedFeature(v)
|
||||
}
|
||||
|
||||
default:
|
||||
|
|
@ -120,6 +136,12 @@ func must(v interface{}, err error) interface{} {
|
|||
return v
|
||||
}
|
||||
|
||||
func sendNotSupportedFeature(iq *xmpp.Iq) {
|
||||
reply := iq.Response(xmpp.IQTypeError)
|
||||
reply.PayloadEncode(xmpp.NewError("cancel", xmpp.FeatureNotImplemented, ""))
|
||||
comp.Out <- reply
|
||||
}
|
||||
|
||||
func Disconnect() {
|
||||
log.Printf("%sXMPP disconnect", LogInfo)
|
||||
for _, u := range MapGatewayInfo {
|
||||
|
|
|
|||
Loading…
Reference in New Issue