From 4b110aaa04fdf06d87ae694c42bf802a45938217 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorben=20G=C3=BCnther?= Date: Sat, 27 Feb 2021 17:56:25 +0100 Subject: [PATCH] Update dependencies I mainly looked at the differences between the old version of the echobot and the new one. --- go.mod | 9 +++++---- go.sum | 35 ++++++++++++++++++----------------- main.go | 33 +++++++++++++++++++++------------ 3 files changed, 44 insertions(+), 33 deletions(-) diff --git a/go.mod b/go.mod index 5e4b177..ee3974e 100644 --- a/go.mod +++ b/go.mod @@ -1,11 +1,12 @@ module github.com/tmsmr/xmpp-webhook require ( - golang.org/x/crypto v0.0.0-20191029031824-8986dd9e96cf // indirect - golang.org/x/net v0.0.0-20191028085509-fe3aa8a45271 // indirect + golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 // indirect + golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 // indirect + golang.org/x/text v0.3.5 // indirect mellium.im/sasl v0.2.2-0.20190711145101-7aedd692081c - mellium.im/xmlstream v0.14.0 - mellium.im/xmpp v0.14.0 + mellium.im/xmlstream v0.15.2 + mellium.im/xmpp v0.18.0 ) go 1.13 diff --git a/go.sum b/go.sum index da1ae05..383f361 100644 --- a/go.sum +++ b/go.sum @@ -1,34 +1,35 @@ golang.org/x/crypto v0.0.0-20180910181607-0e37d006457b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4 h1:HuIa8hRrWRSrqYzx1qI49NNxhdi2PrY7gxVSq1JjLDc= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191029031824-8986dd9e96cf h1:fnPsqIDRbCSgumaMCRpoIoF2s4qxv0xSSS0BVZUE/ss= -golang.org/x/crypto v0.0.0-20191029031824-8986dd9e96cf/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 h1:/ZScEX8SfEmUGRHs0gxpqteO5nfNW6axyZbBdw9A12g= +golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/image v0.0.0-20181116024801-cd38e8056d9b/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80 h1:Ao/3l156eZf2AW5wK8a7/smtodRU+gha3+BeqJ69lRk= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191028085509-fe3aa8a45271 h1:N66aaryRB3Ax92gH0v3hp1QYZ3zWWCCUR/j8Ifh45Ss= -golang.org/x/net v0.0.0-20191028085509-fe3aa8a45271/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 h1:qWPm9rbaAMKs8Bq/9LRpbMqxWRVUAQwMI9fVrssnTfw= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210110051926-789bb1bd4061 h1:DQmQoKxQWtyybCtX/3dIuDBcAhFszqq8YiNeS6sNu1c= +golang.org/x/sys v0.0.0-20210110051926-789bb1bd4061/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5 h1:i6eZZ+zk0SOf0xgBpEpPD18qWcJda6q1sxt3S0kzyUQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= mellium.im/reader v0.1.0 h1:UUEMev16gdvaxxZC7fC08j7IzuDKh310nB6BlwnxTww= mellium.im/reader v0.1.0/go.mod h1:F+X5HXpkIfJ9EE1zHQG9lM/hO946iYAmU7xjg5dsQHI= mellium.im/sasl v0.2.1/go.mod h1:ROaEDLQNuf9vjKqE1SrAfnsobm2YKXT1gnN1uDp1PjQ= mellium.im/sasl v0.2.2-0.20190711145101-7aedd692081c h1:NjXK0TtVdkGhEghhYh3eA/f5nR/VRRrW1MrEEp1rq90= mellium.im/sasl v0.2.2-0.20190711145101-7aedd692081c/go.mod h1:rTgGBJL0QZ3h4jRSAXRDTRB7h1b8GyyFpEG2t9Tp9ws= -mellium.im/xmlstream v0.13.5/go.mod h1:O7wqreSmFi1LOh4RiK7r2j4H4pYDgzo1qv5ZkYJZ7Ns= -mellium.im/xmlstream v0.13.6-0.20190729223506-de1fca5bec8b h1:Eh7dHb+bM/m0aj9PC7vXH2OnBXXTfokOF0PJ2QK1DBo= -mellium.im/xmlstream v0.13.6-0.20190729223506-de1fca5bec8b/go.mod h1:O7wqreSmFi1LOh4RiK7r2j4H4pYDgzo1qv5ZkYJZ7Ns= -mellium.im/xmlstream v0.14.0 h1:vTljQmcFQq7LEb+LJQV0VI8wnuFnzBy1AnfUbA4SrL8= -mellium.im/xmlstream v0.14.0/go.mod h1:O7wqreSmFi1LOh4RiK7r2j4H4pYDgzo1qv5ZkYJZ7Ns= -mellium.im/xmpp v0.13.1-0.20190803132429-9960aecd011f h1:Q40MWD6EXk+EmCHwMYr8YhYgKxETCQkF8jJNQ77ugyA= -mellium.im/xmpp v0.13.1-0.20190803132429-9960aecd011f/go.mod h1:ypSrEi/KFrDk9fu4JpQ8HKPFtlkVrhYCk1aObOMAof0= -mellium.im/xmpp v0.14.0 h1:pmeTKOze9IUD6VsYDjiKOdhQMb7+1Pc1loJnTDuRip0= -mellium.im/xmpp v0.14.0/go.mod h1:ZDObIk4gKWVdH45mRgna7UGRGa8xnzsvBnpCa4ujTAA= +mellium.im/xmlstream v0.15.2-0.20201219131358-a51cc5cf8151/go.mod h1:7SUlP7f2qnMczK+Cu/OFgqaIhldMolVjo8np7xG41D0= +mellium.im/xmlstream v0.15.2 h1:RleOK10lEsVtzpEZsJeRl4Iu0iC5SQnTQIGJZ7ZHGEc= +mellium.im/xmlstream v0.15.2/go.mod h1:7SUlP7f2qnMczK+Cu/OFgqaIhldMolVjo8np7xG41D0= +mellium.im/xmpp v0.18.0 h1:mm4zgK+7XkVpOKrM6d7d9ssmvH9Z67+16ODU9Rx4fqU= +mellium.im/xmpp v0.18.0/go.mod h1:T1xCJIP9JyIIO4SSLlfj6zUi/58g22rFL6eojGwlJig= diff --git a/main.go b/main.go index 61a21a7..de283a5 100644 --- a/main.go +++ b/main.go @@ -4,18 +4,19 @@ import ( "context" "crypto/tls" "encoding/xml" - "github.com/tmsmr/xmpp-webhook/parser" "io" "log" + "net/http" + "os" + "strings" + + "github.com/tmsmr/xmpp-webhook/parser" "mellium.im/sasl" "mellium.im/xmlstream" "mellium.im/xmpp" "mellium.im/xmpp/dial" "mellium.im/xmpp/jid" "mellium.im/xmpp/stanza" - "net/http" - "os" - "strings" ) func panicOnErr(err error) { @@ -46,16 +47,21 @@ func initXMPP(address jid.JID, pass string, skipTLSVerify bool, useXMPPS bool) ( if !skipTLSVerify { tlsConfig.ServerName = address.Domainpart() } - return xmpp.NegotiateSession( + return xmpp.NewSession( context.TODO(), address.Domain(), address, conn, - false, - xmpp.NewNegotiator(xmpp.StreamConfig{Features: []xmpp.StreamFeature{ - xmpp.BindResource(), - xmpp.StartTLS(false, &tlsConfig), - xmpp.SASL("", pass, sasl.ScramSha256Plus, sasl.ScramSha256, sasl.ScramSha1Plus, sasl.ScramSha1, sasl.Plain), + 0, + xmpp.NewNegotiator(xmpp.StreamConfig{Features: func(_ *xmpp.Session, f ...xmpp.StreamFeature) []xmpp.StreamFeature { + if f != nil { + return f + } + return []xmpp.StreamFeature{ + xmpp.BindResource(), + xmpp.StartTLS(&tlsConfig), + xmpp.SASL("", pass, sasl.ScramSha1Plus, sasl.ScramSha1, sasl.Plain), + } }}), ) } @@ -95,7 +101,7 @@ func main() { defer closeXMPP(xmppSession) // send initial presence - panicOnErr(xmppSession.Send(context.TODO(), stanza.WrapPresence(jid.JID{}, stanza.AvailablePresence, nil))) + panicOnErr(xmppSession.Send(context.TODO(), stanza.Presence{Type: stanza.AvailablePresence}.Wrap(nil))) // listen for messages and echo them go func() { @@ -138,6 +144,9 @@ func main() { // create chan for messages (webhooks -> xmpp) messages := make(chan string) + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + // wait for messages from the webhooks and send them to all receivers go func() { for m := range messages { @@ -145,7 +154,7 @@ func main() { recipient, err := jid.Parse(r) panicOnErr(err) // try to send message, ignore errors - _ = xmppSession.Encode(MessageBody{ + _ = xmppSession.Encode(ctx, MessageBody{ Message: stanza.Message{ To: recipient, From: myjid,