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 (
|
const (
|
||||||
Version = "v0.3.8"
|
Version = "v1.0-dev"
|
||||||
configurationFilePath = "xmpp4steam.cfg"
|
configurationFilePath = "xmpp4steam.cfg"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -53,6 +53,6 @@ func main() {
|
||||||
|
|
||||||
xmpp.Disconnect()
|
xmpp.Disconnect()
|
||||||
|
|
||||||
time.Sleep(1 * time.Second)
|
|
||||||
log.Println("Exit main()")
|
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) {
|
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
|
||||||
|
|
@ -42,12 +42,12 @@ func execCommandAdHoc(iq *xmpp.Iq) {
|
||||||
adHoc := &xmpp.AdHocCommand{}
|
adHoc := &xmpp.AdHocCommand{}
|
||||||
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."}
|
||||||
|
|
@ -103,8 +103,8 @@ func execCommandAdHoc(iq *xmpp.Iq) {
|
||||||
} 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"}
|
||||||
|
|
@ -185,8 +185,8 @@ func execCommandAdHoc(iq *xmpp.Iq) {
|
||||||
} 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)
|
||||||
comp.Out <- reply
|
comp.Out <- reply
|
||||||
}
|
}
|
||||||
|
|
|
||||||
52
xmpp/xmpp.go
52
xmpp/xmpp.go
|
|
@ -80,28 +80,44 @@ func mainXMPP() {
|
||||||
}
|
}
|
||||||
|
|
||||||
case *xmpp.Iq:
|
case *xmpp.Iq:
|
||||||
|
jidBare := strings.SplitN(v.To, "/", 2)[0]
|
||||||
|
|
||||||
switch v.PayloadName().Space {
|
switch v.PayloadName().Space {
|
||||||
case xmpp.NsDiscoItems:
|
case xmpp.NSDiscoItems:
|
||||||
execDiscoCommand(v)
|
if jidBare == jid.Domain {
|
||||||
|
execDiscoCommand(v)
|
||||||
|
} else {
|
||||||
|
sendNotSupportedFeature(v)
|
||||||
|
}
|
||||||
|
|
||||||
case xmpp.NodeAdHocCommand:
|
case xmpp.NodeAdHocCommand:
|
||||||
execCommandAdHoc(v)
|
if jidBare == jid.Domain {
|
||||||
|
execCommandAdHoc(v)
|
||||||
|
} else {
|
||||||
|
sendNotSupportedFeature(v)
|
||||||
|
}
|
||||||
|
|
||||||
case xmpp.NsVCardTemp:
|
case xmpp.NSVCardTemp:
|
||||||
reply := v.Response(xmpp.IqTypeResult)
|
if jidBare == jid.Domain {
|
||||||
vcard := &xmpp.VCard{}
|
reply := v.Response(xmpp.IQTypeResult)
|
||||||
reply.PayloadEncode(vcard)
|
vcard := &xmpp.VCard{}
|
||||||
comp.Out <- reply
|
reply.PayloadEncode(vcard)
|
||||||
|
comp.Out <- reply
|
||||||
|
} else {
|
||||||
|
sendNotSupportedFeature(v)
|
||||||
|
}
|
||||||
|
|
||||||
case xmpp.NsJabberClient:
|
case xmpp.NSJabberClient:
|
||||||
reply := v.Response(xmpp.IqTypeResult)
|
if jidBare == jid.Domain {
|
||||||
reply.PayloadEncode(&xmpp.SoftwareVersion{Name: "go-xmpp4steam", Version: SoftVersion})
|
reply := v.Response(xmpp.IQTypeResult)
|
||||||
comp.Out <- reply
|
reply.PayloadEncode(&xmpp.SoftwareVersion{Name: "go-xmpp4steam", Version: SoftVersion})
|
||||||
|
comp.Out <- reply
|
||||||
|
} else {
|
||||||
|
sendNotSupportedFeature(v)
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
reply := v.Response(xmpp.IqTypeError)
|
sendNotSupportedFeature(v)
|
||||||
reply.PayloadEncode(xmpp.NewError("cancel", xmpp.FeatureNotImplemented, ""))
|
|
||||||
comp.Out <- reply
|
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
@ -120,6 +136,12 @@ func must(v interface{}, err error) interface{} {
|
||||||
return v
|
return v
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func sendNotSupportedFeature(iq *xmpp.Iq) {
|
||||||
|
reply := iq.Response(xmpp.IQTypeError)
|
||||||
|
reply.PayloadEncode(xmpp.NewError("cancel", xmpp.FeatureNotImplemented, ""))
|
||||||
|
comp.Out <- reply
|
||||||
|
}
|
||||||
|
|
||||||
func Disconnect() {
|
func Disconnect() {
|
||||||
log.Printf("%sXMPP disconnect", LogInfo)
|
log.Printf("%sXMPP disconnect", LogInfo)
|
||||||
for _, u := range MapGatewayInfo {
|
for _, u := range MapGatewayInfo {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue