From e48cbae59bedd5cbdfb701cd772111cc1f749e5f Mon Sep 17 00:00:00 2001 From: cubicroot Date: Wed, 9 Feb 2022 20:17:55 +0100 Subject: [PATCH 1/8] send first message via mautrix --- go.mod | 9 ++--- go.sum | 61 +++++++++++++++++++++++++++++ internal/dispatcher/dispatcher.go | 27 +++++++++++-- internal/dispatcher/notification.go | 15 +++++-- 4 files changed, 101 insertions(+), 11 deletions(-) diff --git a/go.mod b/go.mod index 51ba480..bda3193 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.16 require ( github.com/alexedwards/argon2id v0.0.0-20201228115903-cf543ebc1f7b github.com/gin-contrib/location v0.0.2 - github.com/gin-gonic/gin v1.7.0 + github.com/gin-gonic/gin v1.7.7 github.com/golang/protobuf v1.4.3 // indirect github.com/gomarkdown/markdown v0.0.0-20210408062403-ad838ccf8cdd github.com/google/go-cmp v0.5.0 // indirect @@ -13,15 +13,14 @@ require ( github.com/json-iterator/go v1.1.10 // indirect github.com/leodido/go-urn v1.2.1 // indirect github.com/matrix-org/gomatrix v0.0.0-20200827122206-7dd5e2a05bcd - github.com/mattn/go-sqlite3 v1.14.6 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.1 // indirect github.com/stretchr/testify v1.7.0 github.com/ugorji/go v1.2.4 // indirect - golang.org/x/sys v0.0.0-20210608053332-aa57babbf139 // indirect golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect gopkg.in/yaml.v2 v2.4.0 gorm.io/driver/mysql v1.0.4 - gorm.io/driver/sqlite v1.1.4 - gorm.io/gorm v1.20.12 + gorm.io/driver/sqlite v1.2.6 + gorm.io/gorm v1.22.3 + maunium.net/go/mautrix v0.10.10 ) diff --git a/go.sum b/go.sum index df6944d..a4c11ac 100644 --- a/go.sum +++ b/go.sum @@ -1,10 +1,23 @@ github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/alexedwards/argon2id v0.0.0-20201228115903-cf543ebc1f7b h1:jEg+fE+POnmUy40B+aSKEPqZDmsdl55hZU0YKXEzz1k= github.com/alexedwards/argon2id v0.0.0-20201228115903-cf543ebc1f7b/go.mod h1:Kmn5t2Rb93Q4NTprN4+CCgARGvigKMJyxP0WckpTUp0= +github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= +github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= +github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= +github.com/btcsuite/btcutil v1.0.2 h1:9iZ1Terx9fMIOtq1VrwdqfsATL9MC2l8ZrUY6YZ2uts= +github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts= +github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= +github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= +github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= +github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= +github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= +github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/gin-contrib/location v0.0.2 h1:QZKh1+K/LLR4KG/61eIO3b7MLuKi8tytQhV6texLgP4= github.com/gin-contrib/location v0.0.2/go.mod h1:NGoidiRlf0BlA/VKSVp+g3cuSMeTmip/63PhEjRhUAc= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= @@ -12,6 +25,8 @@ github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= github.com/gin-gonic/gin v1.7.0 h1:jGB9xAJQ12AIGNB4HguylppmDK1Am9ppF7XnGXXJuoU= github.com/gin-gonic/gin v1.7.0/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY= +github.com/gin-gonic/gin v1.7.7 h1:3DoBmSbJbZAWqXJC3SLjAPfutPJJRN1U5pALB7EeTTs= +github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U= github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= @@ -23,6 +38,7 @@ github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7a github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= @@ -39,15 +55,23 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jinzhu/configor v1.2.1 h1:OKk9dsR8i6HPOCZR8BcMtcEImAFjIhbJFZNyn5GCZko= github.com/jinzhu/configor v1.2.1/go.mod h1:nX89/MOmDba7ZX7GCyU/VIaQ2Ar2aizBl2d3JLF/rDc= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= github.com/jinzhu/now v1.1.1 h1:g39TucaRWyV3dwDO++eEc6qf8TVIQ/Da48WmqjZ3i7E= github.com/jinzhu/now v1.1.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/jinzhu/now v1.1.2 h1:eVKgfIdy9b6zbWBMgFpfDPoAMifwSZagU9HmEU6zgiI= +github.com/jinzhu/now v1.1.2/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= @@ -58,20 +82,31 @@ github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Ky github.com/mattn/go-sqlite3 v1.14.5/go.mod h1:WVKg1VTActs4Qso6iwGbiFih2UIHo0ENGwNd0Lj+XmI= github.com/mattn/go-sqlite3 v1.14.6 h1:dNPt6NO46WmLVt2DLNpwczCmdV5boIZ6g/tlDrlRUbg= github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= +github.com/mattn/go-sqlite3 v1.14.9/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= +github.com/mattn/go-sqlite3 v1.14.10 h1:MLn+5bFRlWMGoSRmJour3CL1w/qL96mvipqpwQW/Sfk= +github.com/mattn/go-sqlite3 v1.14.10/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/tidwall/gjson v1.10.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/sjson v1.2.3/go.mod h1:5WdjKx3AQMvCJ4RG6/2UYT7dLrGvJUV1x4jdTAyGvZs= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go v1.2.4 h1:cTciPbZ/VSOzCLKclmssnfQ/jyoVyOcJ3aoJyUV1Urc= github.com/ugorji/go v1.2.4/go.mod h1:EuaSCk8iZMdIspsu6HXH7X2UGKw1ezO4wCfGszGmmo4= @@ -79,20 +114,36 @@ github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLY github.com/ugorji/go/codec v1.2.4 h1:C5VurWRRCKjuENsbM6GYVw8W++WVW9rSxoACKIvxzz8= github.com/ugorji/go/codec v1.2.4/go.mod h1:bWBu1+kIRWcF8uMklKaJrR6fTWQOwAlrIzX22pHwryA= golang.org/dl v0.0.0-20190829154251-82a15e2f2ead/go.mod h1:IUMfjQLJQd4UTqG1Z90tenwKoCX93Gn3MAQJMOSBsDQ= +golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/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-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad h1:DN0cp81fZ3njFcrLCytUHRSUkqBjfTo4Tx9RJTWs0EY= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3 h1:0es+/5331RGQPcXlMfP+WrnIIS6dNnNRe0WB02W0F4M= +golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211216030914-fe4d6282115f h1:hEYJvxw1lSnWIl8X9ofsYMklzaDs90JI2az5YMd4fPM= +golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 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-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210608053332-aa57babbf139 h1:C+AwYEtBp/VQwoLntUmQ/yx3MS9vmZaKNdw5eOpoQe8= golang.org/x/sys v0.0.0-20210608053332-aa57babbf139/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 h1:SrN+KX8Art/Sf4HNj6Zcz06G7VEz+7w9tdXTPOZ7+l4= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 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/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= @@ -106,6 +157,9 @@ google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyz google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= @@ -116,6 +170,13 @@ gorm.io/driver/mysql v1.0.4 h1:TATTzt+kR+IV0+h3iUB3dHUe8omCvQ0rOkmfCsUBohk= gorm.io/driver/mysql v1.0.4/go.mod h1:MEgp8tk2n60cSBCq5iTcPDw3ns8Gs+zOva9EUhkknTs= gorm.io/driver/sqlite v1.1.4 h1:PDzwYE+sI6De2+mxAneV9Xs11+ZyKV6oxD3wDGkaNvM= gorm.io/driver/sqlite v1.1.4/go.mod h1:mJCeTFr7+crvS+TRnWc5Z3UvwxUN1BGBLMrf5LA9DYw= +gorm.io/driver/sqlite v1.2.6 h1:SStaH/b+280M7C8vXeZLz/zo9cLQmIGwwj3cSj7p6l4= +gorm.io/driver/sqlite v1.2.6/go.mod h1:gyoX0vHiiwi0g49tv+x2E7l8ksauLK0U/gShcdUsjWY= gorm.io/gorm v1.20.7/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= gorm.io/gorm v1.20.12 h1:ebZ5KrSHzet+sqOCVdH9mTjW91L298nX3v5lVxAzSUY= gorm.io/gorm v1.20.12/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= +gorm.io/gorm v1.22.3 h1:/JS6z+GStEQvJNW3t1FTwJwG/gZ+A7crFdRqtvG5ehA= +gorm.io/gorm v1.22.3/go.mod h1:F+OptMscr0P2F2qU97WT1WimdH9GaQPoDW7AYd5i2Y0= +maunium.net/go/maulogger/v2 v2.3.2/go.mod h1:TYWy7wKwz/tIXTpsx8G3mZseIRiC5DoMxSZazOHy68A= +maunium.net/go/mautrix v0.10.10 h1:aaEuVopM3rkgOxL8Ldn2E8vcIIfKDE+tBfX/uPCRFWs= +maunium.net/go/mautrix v0.10.10/go.mod h1:4XljZZGZiIlpfbQ+Tt2ykjapskJ8a7Z2i9y/+YaceF8= diff --git a/internal/dispatcher/dispatcher.go b/internal/dispatcher/dispatcher.go index 735c072..73021fd 100644 --- a/internal/dispatcher/dispatcher.go +++ b/internal/dispatcher/dispatcher.go @@ -5,6 +5,8 @@ import ( "github.com/matrix-org/gomatrix" "github.com/pushbits/server/internal/configuration" + "maunium.net/go/mautrix" + "maunium.net/go/mautrix/id" ) var ( @@ -13,14 +15,16 @@ var ( // Dispatcher holds information for sending notifications to clients. type Dispatcher struct { - client *gomatrix.Client - formatting configuration.Formatting + client *gomatrix.Client // TODO get rid of this client as a dependency + mautrixClient *mautrix.Client + formatting configuration.Formatting } // Create instanciates a dispatcher connection. func Create(homeserver, username, password string, formatting configuration.Formatting) (*Dispatcher, error) { log.Println("Setting up dispatcher.") + // TODO remove from here client, err := gomatrix.NewClient(homeserver, "", "") if err != nil { return nil, err @@ -36,8 +40,25 @@ func Create(homeserver, username, password string, formatting configuration.Form } client.SetCredentials(response.UserID, response.AccessToken) + // To here - return &Dispatcher{client: client, formatting: formatting}, nil + matrixClient, err := mautrix.NewClient(homeserver, "", "") + if err != nil { + return nil, err + } + + _, err = matrixClient.Login(&mautrix.ReqLogin{ + Type: "m.login.password", + Identifier: mautrix.UserIdentifier{Type: mautrix.IdentifierTypeUser, User: username}, + Password: password, + DeviceID: id.DeviceID("my-device"), // TODO make device ID configurable + StoreCredentials: true, + }) + if err != nil { + return nil, err + } + + return &Dispatcher{client: client, formatting: formatting, mautrixClient: matrixClient}, nil } // Close closes the dispatcher connection. diff --git a/internal/dispatcher/notification.go b/internal/dispatcher/notification.go index 67dcad9..40453d0 100644 --- a/internal/dispatcher/notification.go +++ b/internal/dispatcher/notification.go @@ -10,6 +10,8 @@ import ( "github.com/matrix-org/gomatrix" "github.com/pushbits/server/internal/model" "github.com/pushbits/server/internal/pberrors" + "maunium.net/go/mautrix/event" + "maunium.net/go/mautrix/id" ) // MessageFormat is a matrix message format @@ -50,7 +52,7 @@ type NewContent struct { } // SendNotification sends a notification to the specified user. -func (d *Dispatcher) SendNotification(a *model.Application, n *model.Notification) (id string, err error) { +func (d *Dispatcher) SendNotification(a *model.Application, n *model.Notification) (eventId string, err error) { log.Printf("Sending notification to room %s.", a.MatrixID) plainMessage := strings.TrimSpace(n.Message) @@ -61,9 +63,16 @@ func (d *Dispatcher) SendNotification(a *model.Application, n *model.Notificatio text := fmt.Sprintf("%s\n\n%s", plainTitle, plainMessage) formattedText := fmt.Sprintf("%s %s", title, message) - respSendEvent, err := d.client.SendFormattedText(a.MatrixID, text, formattedText) + messageEvent := &MessageEvent{ + Body: text, + FormattedBody: formattedText, + MsgType: MsgTypeText, + Format: MessageFormatHTML, + } + + evt, err := d.mautrixClient.SendMessageEvent(id.RoomID(a.MatrixID), event.EventMessage, &messageEvent) - return respSendEvent.EventID, err + return evt.EventID.String(), err } // DeleteNotification sends a notification to the specified user that another notificaion is deleted From 855e20978ee8036462606f1603acb7888a0d19e1 Mon Sep 17 00:00:00 2001 From: cubicroot Date: Wed, 9 Feb 2022 20:38:24 +0100 Subject: [PATCH 2/8] Move all message sending to mautrix --- internal/dispatcher/dispatcher.go | 4 ++-- internal/dispatcher/notification.go | 29 +++++++++++++++-------------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/internal/dispatcher/dispatcher.go b/internal/dispatcher/dispatcher.go index 73021fd..8ddb7d5 100644 --- a/internal/dispatcher/dispatcher.go +++ b/internal/dispatcher/dispatcher.go @@ -65,8 +65,8 @@ func Create(homeserver, username, password string, formatting configuration.Form func (d *Dispatcher) Close() { log.Printf("Logging out.") - d.client.Logout() - d.client.ClearCredentials() + d.mautrixClient.Logout() + d.mautrixClient.ClearCredentials() log.Printf("Successfully logged out.") } diff --git a/internal/dispatcher/notification.go b/internal/dispatcher/notification.go index 40453d0..3df5560 100644 --- a/internal/dispatcher/notification.go +++ b/internal/dispatcher/notification.go @@ -7,11 +7,12 @@ import ( "strings" "github.com/gomarkdown/markdown" - "github.com/matrix-org/gomatrix" "github.com/pushbits/server/internal/model" "github.com/pushbits/server/internal/pberrors" + "maunium.net/go/mautrix" "maunium.net/go/mautrix/event" "maunium.net/go/mautrix/id" + mId "maunium.net/go/mautrix/id" ) // MessageFormat is a matrix message format @@ -99,7 +100,7 @@ func (d *Dispatcher) DeleteNotification(a *model.Application, n *model.DeleteNot newBody := fmt.Sprintf("%s\n- deleted", oldBody) newFormattedBody := fmt.Sprintf("%s
- deleted", oldFormattedBody) - _, err = d.replaceMessage(a, newBody, newFormattedBody, deleteMessage.ID, oldBody, oldFormattedBody) + _, err = d.replaceMessage(a, newBody, newFormattedBody, deleteMessage.ID.String(), oldBody, oldFormattedBody) if err != nil { return err @@ -177,25 +178,25 @@ func (d *Dispatcher) coloredText(color string, text string) string { } // Searches in the messages list for the given id -func (d *Dispatcher) getMessage(a *model.Application, id string) (gomatrix.Event, error) { +func (d *Dispatcher) getMessage(a *model.Application, id string) (*event.Event, error) { start := "" end := "" maxPages := 10 // maximum pages to request (10 messages per page) for i := 0; i < maxPages; i++ { - messages, _ := d.client.Messages(a.MatrixID, start, end, 'b', 10) + messages, _ := d.mautrixClient.Messages(mId.RoomID(a.MatrixID), start, end, 'b', nil, 10) for _, event := range messages.Chunk { - if event.ID == id { + if event.ID.String() == id { return event, nil } } start = messages.End } - return gomatrix.Event{}, pberrors.ErrorMessageNotFound + return &event.Event{}, pberrors.ErrorMessageNotFound } // Replaces the content of a matrix message -func (d *Dispatcher) replaceMessage(a *model.Application, newBody, newFormattedBody string, messageID string, oldBody, oldFormattedBody string) (*gomatrix.RespSendEvent, error) { +func (d *Dispatcher) replaceMessage(a *model.Application, newBody, newFormattedBody string, messageID string, oldBody, oldFormattedBody string) (*mautrix.RespSendEvent, error) { newMessage := NewContent{ Body: newBody, FormattedBody: newFormattedBody, @@ -217,7 +218,7 @@ func (d *Dispatcher) replaceMessage(a *model.Application, newBody, newFormattedB Format: MessageFormatHTML, } - sendEvent, err := d.client.SendMessageEvent(a.MatrixID, "m.room.message", replaceEvent) + sendEvent, err := d.mautrixClient.SendMessageEvent(mId.RoomID(a.MatrixID), event.EventMessage, &replaceEvent) if err != nil { log.Println(err) @@ -228,7 +229,7 @@ func (d *Dispatcher) replaceMessage(a *model.Application, newBody, newFormattedB } // Sends a notification in response to another matrix message event -func (d *Dispatcher) respondToMessage(a *model.Application, body, formattedBody string, respondMessage gomatrix.Event) (*gomatrix.RespSendEvent, error) { +func (d *Dispatcher) respondToMessage(a *model.Application, body, formattedBody string, respondMessage *event.Event) (*mautrix.RespSendEvent, error) { oldBody, oldFormattedBody, err := bodiesFromMessage(respondMessage) if err != nil { @@ -247,19 +248,19 @@ func (d *Dispatcher) respondToMessage(a *model.Application, body, formattedBody } notificationReply := make(map[string]string) - notificationReply["event_id"] = respondMessage.ID + notificationReply["event_id"] = respondMessage.ID.String() notificationRelation := RelatesTo{ InReplyTo: notificationReply, } notificationEvent.RelatesTo = notificationRelation - return d.client.SendMessageEvent(a.MatrixID, "m.room.message", notificationEvent) + return d.mautrixClient.SendMessageEvent(id.RoomID(a.MatrixID), event.EventMessage, ¬ificationEvent) } // Extracts body and formatted body from a matrix message event -func bodiesFromMessage(message gomatrix.Event) (body, formattedBody string, err error) { - if val, ok := message.Content["body"]; ok { +func bodiesFromMessage(message *event.Event) (body, formattedBody string, err error) { + if val, ok := message.Content.Raw["body"]; ok { body, ok := val.(string) if !ok { @@ -272,7 +273,7 @@ func bodiesFromMessage(message gomatrix.Event) (body, formattedBody string, err return "", "", pberrors.ErrorMessageNotFound } - if val, ok := message.Content["formatted_body"]; ok { + if val, ok := message.Content.Raw["formatted_body"]; ok { body, ok := val.(string) if !ok { return "", "", pberrors.ErrorMessageNotFound From bb5755cfd37d0ef448e1a0ce2b6eca51c233e7ed Mon Sep 17 00:00:00 2001 From: cubicroot Date: Thu, 10 Feb 2022 20:20:16 +0100 Subject: [PATCH 3/8] completely move to mautrix --- internal/dispatcher/application.go | 40 +++++++++++++++-------------- internal/dispatcher/dispatcher.go | 22 +--------------- internal/dispatcher/notification.go | 5 ++-- 3 files changed, 24 insertions(+), 43 deletions(-) diff --git a/internal/dispatcher/application.go b/internal/dispatcher/application.go index 8728a7d..56fd41c 100644 --- a/internal/dispatcher/application.go +++ b/internal/dispatcher/application.go @@ -5,8 +5,10 @@ import ( "log" "github.com/pushbits/server/internal/model" + "maunium.net/go/mautrix" - "github.com/matrix-org/gomatrix" + "maunium.net/go/mautrix/event" + mId "maunium.net/go/mautrix/id" ) func buildRoomTopic(id uint) string { @@ -17,44 +19,44 @@ func buildRoomTopic(id uint) string { func (d *Dispatcher) RegisterApplication(id uint, name, token, user string) (string, error) { log.Printf("Registering application %s, notifications will be relayed to user %s.\n", name, user) - response, err := d.client.CreateRoom(&gomatrix.ReqCreateRoom{ - Invite: []string{user}, + resp, err := d.mautrixClient.CreateRoom(&mautrix.ReqCreateRoom{ + Visibility: "private", + Invite: []mId.UserID{mId.UserID(user)}, IsDirect: true, Name: name, Preset: "private_chat", Topic: buildRoomTopic(id), - Visibility: "private", }) if err != nil { log.Print(err) return "", err } - log.Printf("Application %s is now relayed to room with ID %s.\n", name, response.RoomID) + log.Printf("Application %s is now relayed to room with ID %s.\n", name, resp.RoomID.String()) - return response.RoomID, err + return resp.RoomID.String(), err } // DeregisterApplication deletes a channel for an application. func (d *Dispatcher) DeregisterApplication(a *model.Application, u *model.User) error { log.Printf("Deregistering application %s (ID %d) with Matrix ID %s.\n", a.Name, a.ID, a.MatrixID) - kickUser := &gomatrix.ReqKickUser{ - Reason: "This application was deleted", - UserID: u.MatrixID, - } - // The user might have left the channel, but we can still try to remove them. - if _, err := d.client.KickUser(a.MatrixID, kickUser); err != nil { + + if _, err := d.mautrixClient.KickUser(mId.RoomID(a.MatrixID), &mautrix.ReqKickUser{ + Reason: "This application was deleted", + UserID: mId.UserID(a.MatrixID), + }); err != nil { log.Print(err) + return err } - if _, err := d.client.LeaveRoom(a.MatrixID); err != nil { + if _, err := d.mautrixClient.LeaveRoom(mId.RoomID(a.MatrixID)); err != nil { log.Print(err) return err } - if _, err := d.client.ForgetRoom(a.MatrixID); err != nil { + if _, err := d.mautrixClient.ForgetRoom(mId.RoomID(a.MatrixID)); err != nil { log.Print(err) return err } @@ -63,7 +65,7 @@ func (d *Dispatcher) DeregisterApplication(a *model.Application, u *model.User) } func (d *Dispatcher) sendRoomEvent(roomID, eventType string, content interface{}) error { - if _, err := d.client.SendStateEvent(roomID, eventType, "", content); err != nil { + if _, err := d.mautrixClient.SendStateEvent(mId.RoomID(roomID), event.NewEventType(eventType), "", content); err != nil { log.Print(err) return err } @@ -96,7 +98,7 @@ func (d *Dispatcher) UpdateApplication(a *model.Application) error { // IsOrphan checks if the user is still connected to the channel. func (d *Dispatcher) IsOrphan(a *model.Application, u *model.User) (bool, error) { - resp, err := d.client.JoinedMembers(a.MatrixID) + resp, err := d.mautrixClient.JoinedMembers(mId.RoomID(a.MatrixID)) if err != nil { return false, err } @@ -104,7 +106,7 @@ func (d *Dispatcher) IsOrphan(a *model.Application, u *model.User) (bool, error) found := false for userID := range resp.Joined { - found = found || (userID == u.MatrixID) + found = found || (userID.String() == u.MatrixID) } return !found, nil @@ -112,8 +114,8 @@ func (d *Dispatcher) IsOrphan(a *model.Application, u *model.User) (bool, error) // RepairApplication re-invites the user to the channel. func (d *Dispatcher) RepairApplication(a *model.Application, u *model.User) error { - _, err := d.client.InviteUser(a.MatrixID, &gomatrix.ReqInviteUser{ - UserID: u.MatrixID, + _, err := d.mautrixClient.InviteUser(mId.RoomID(a.MatrixID), &mautrix.ReqInviteUser{ + UserID: mId.UserID(u.MatrixID), }) if err != nil { return err diff --git a/internal/dispatcher/dispatcher.go b/internal/dispatcher/dispatcher.go index 8ddb7d5..576fb91 100644 --- a/internal/dispatcher/dispatcher.go +++ b/internal/dispatcher/dispatcher.go @@ -3,7 +3,6 @@ package dispatcher import ( "log" - "github.com/matrix-org/gomatrix" "github.com/pushbits/server/internal/configuration" "maunium.net/go/mautrix" "maunium.net/go/mautrix/id" @@ -15,7 +14,6 @@ var ( // Dispatcher holds information for sending notifications to clients. type Dispatcher struct { - client *gomatrix.Client // TODO get rid of this client as a dependency mautrixClient *mautrix.Client formatting configuration.Formatting } @@ -24,24 +22,6 @@ type Dispatcher struct { func Create(homeserver, username, password string, formatting configuration.Formatting) (*Dispatcher, error) { log.Println("Setting up dispatcher.") - // TODO remove from here - client, err := gomatrix.NewClient(homeserver, "", "") - if err != nil { - return nil, err - } - - response, err := client.Login(&gomatrix.ReqLogin{ - Type: loginType, - User: username, - Password: password, - }) - if err != nil { - return nil, err - } - - client.SetCredentials(response.UserID, response.AccessToken) - // To here - matrixClient, err := mautrix.NewClient(homeserver, "", "") if err != nil { return nil, err @@ -58,7 +38,7 @@ func Create(homeserver, username, password string, formatting configuration.Form return nil, err } - return &Dispatcher{client: client, formatting: formatting, mautrixClient: matrixClient}, nil + return &Dispatcher{formatting: formatting, mautrixClient: matrixClient}, nil } // Close closes the dispatcher connection. diff --git a/internal/dispatcher/notification.go b/internal/dispatcher/notification.go index 3df5560..0f94aa6 100644 --- a/internal/dispatcher/notification.go +++ b/internal/dispatcher/notification.go @@ -11,7 +11,6 @@ import ( "github.com/pushbits/server/internal/pberrors" "maunium.net/go/mautrix" "maunium.net/go/mautrix/event" - "maunium.net/go/mautrix/id" mId "maunium.net/go/mautrix/id" ) @@ -71,7 +70,7 @@ func (d *Dispatcher) SendNotification(a *model.Application, n *model.Notificatio Format: MessageFormatHTML, } - evt, err := d.mautrixClient.SendMessageEvent(id.RoomID(a.MatrixID), event.EventMessage, &messageEvent) + evt, err := d.mautrixClient.SendMessageEvent(mId.RoomID(a.MatrixID), event.EventMessage, &messageEvent) return evt.EventID.String(), err } @@ -255,7 +254,7 @@ func (d *Dispatcher) respondToMessage(a *model.Application, body, formattedBody } notificationEvent.RelatesTo = notificationRelation - return d.mautrixClient.SendMessageEvent(id.RoomID(a.MatrixID), event.EventMessage, ¬ificationEvent) + return d.mautrixClient.SendMessageEvent(mId.RoomID(a.MatrixID), event.EventMessage, ¬ificationEvent) } // Extracts body and formatted body from a matrix message event From a1558f6f638655f716286841e6994558a39e0363 Mon Sep 17 00:00:00 2001 From: cubicroot Date: Thu, 10 Feb 2022 20:25:41 +0100 Subject: [PATCH 4/8] remove unused var --- internal/dispatcher/dispatcher.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/internal/dispatcher/dispatcher.go b/internal/dispatcher/dispatcher.go index 576fb91..26acdf0 100644 --- a/internal/dispatcher/dispatcher.go +++ b/internal/dispatcher/dispatcher.go @@ -8,10 +8,6 @@ import ( "maunium.net/go/mautrix/id" ) -var ( - loginType = "m.login.password" -) - // Dispatcher holds information for sending notifications to clients. type Dispatcher struct { mautrixClient *mautrix.Client @@ -28,7 +24,7 @@ func Create(homeserver, username, password string, formatting configuration.Form } _, err = matrixClient.Login(&mautrix.ReqLogin{ - Type: "m.login.password", + Type: mautrix.AuthTypePassword, Identifier: mautrix.UserIdentifier{Type: mautrix.IdentifierTypeUser, User: username}, Password: password, DeviceID: id.DeviceID("my-device"), // TODO make device ID configurable From 728c84676cdbed66481c3cbe0bfea06faa3b2344 Mon Sep 17 00:00:00 2001 From: cubicroot Date: Fri, 11 Feb 2022 22:10:05 +0100 Subject: [PATCH 5/8] multiple smaller fixes and improvements --- internal/authentication/token.go | 2 +- internal/dispatcher/application.go | 2 +- internal/dispatcher/dispatcher.go | 2 +- internal/dispatcher/notification.go | 24 ++++++------------------ 4 files changed, 9 insertions(+), 21 deletions(-) diff --git a/internal/authentication/token.go b/internal/authentication/token.go index 6edda01..73ea007 100644 --- a/internal/authentication/token.go +++ b/internal/authentication/token.go @@ -7,7 +7,7 @@ import ( var ( tokenCharacters = []byte("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789") - regularTokenLength = 64 // This length includes the prefix (one character). + regularTokenLength = 63 // This length includes the prefix (one character). compatTokenLength = 15 // This length includes the prefix (one character). applicationTokenPrefix = "A" ) diff --git a/internal/dispatcher/application.go b/internal/dispatcher/application.go index 56fd41c..4e27034 100644 --- a/internal/dispatcher/application.go +++ b/internal/dispatcher/application.go @@ -45,7 +45,7 @@ func (d *Dispatcher) DeregisterApplication(a *model.Application, u *model.User) if _, err := d.mautrixClient.KickUser(mId.RoomID(a.MatrixID), &mautrix.ReqKickUser{ Reason: "This application was deleted", - UserID: mId.UserID(a.MatrixID), + UserID: mId.UserID(u.MatrixID), }); err != nil { log.Print(err) return err diff --git a/internal/dispatcher/dispatcher.go b/internal/dispatcher/dispatcher.go index 26acdf0..577c837 100644 --- a/internal/dispatcher/dispatcher.go +++ b/internal/dispatcher/dispatcher.go @@ -27,7 +27,7 @@ func Create(homeserver, username, password string, formatting configuration.Form Type: mautrix.AuthTypePassword, Identifier: mautrix.UserIdentifier{Type: mautrix.IdentifierTypeUser, User: username}, Password: password, - DeviceID: id.DeviceID("my-device"), // TODO make device ID configurable + DeviceID: id.DeviceID("pushbits"), StoreCredentials: true, }) if err != nil { diff --git a/internal/dispatcher/notification.go b/internal/dispatcher/notification.go index 0f94aa6..aa1c077 100644 --- a/internal/dispatcher/notification.go +++ b/internal/dispatcher/notification.go @@ -259,27 +259,15 @@ func (d *Dispatcher) respondToMessage(a *model.Application, body, formattedBody // Extracts body and formatted body from a matrix message event func bodiesFromMessage(message *event.Event) (body, formattedBody string, err error) { - if val, ok := message.Content.Raw["body"]; ok { - body, ok := val.(string) - - if !ok { - return "", "", pberrors.ErrorMessageNotFound - } - - formattedBody = body - - } else { + msgContent := message.Content.AsMessage() + if msgContent == nil { return "", "", pberrors.ErrorMessageNotFound } - if val, ok := message.Content.Raw["formatted_body"]; ok { - body, ok := val.(string) - if !ok { - return "", "", pberrors.ErrorMessageNotFound - } - - formattedBody = body + formattedBody = msgContent.FormattedBody + if formattedBody == "" { + formattedBody = msgContent.Body } - return body, formattedBody, nil + return msgContent.Body, formattedBody, nil } From 87c339695db1ace0f3e4600e55981875b9448f94 Mon Sep 17 00:00:00 2001 From: cubicroot Date: Fri, 11 Feb 2022 22:10:37 +0100 Subject: [PATCH 6/8] wording --- internal/dispatcher/dispatcher.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/dispatcher/dispatcher.go b/internal/dispatcher/dispatcher.go index 577c837..25d5df5 100644 --- a/internal/dispatcher/dispatcher.go +++ b/internal/dispatcher/dispatcher.go @@ -27,7 +27,7 @@ func Create(homeserver, username, password string, formatting configuration.Form Type: mautrix.AuthTypePassword, Identifier: mautrix.UserIdentifier{Type: mautrix.IdentifierTypeUser, User: username}, Password: password, - DeviceID: id.DeviceID("pushbits"), + DeviceID: id.DeviceID("PushBits"), StoreCredentials: true, }) if err != nil { From eef62f405825e825f7779ea545de08306224c50c Mon Sep 17 00:00:00 2001 From: cubicroot Date: Sun, 13 Feb 2022 13:18:13 +0100 Subject: [PATCH 7/8] Use #39 --- internal/authentication/token.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/authentication/token.go b/internal/authentication/token.go index 1203fc6..7e91d6f 100644 --- a/internal/authentication/token.go +++ b/internal/authentication/token.go @@ -7,7 +7,7 @@ import ( var ( tokenCharacters = []byte("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789") - regularTokenLength = 63 // This length includes the prefix (one character). + regularTokenLength = 64 // This length includes the prefix (one character). compatTokenLength = 15 // This length includes the prefix (one character). applicationTokenPrefix = "A" ) From 4e8c477ae3f59c25d12545475ad6bd0a32591433 Mon Sep 17 00:00:00 2001 From: cubicroot Date: Sun, 13 Mar 2022 18:25:04 +0100 Subject: [PATCH 8/8] remove gomatrix dependency and clean up --- go.mod | 1 - go.sum | 2 -- internal/dispatcher/dispatcher.go | 2 +- internal/dispatcher/notification.go | 6 +++--- 4 files changed, 4 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index bda3193..ddd65f8 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,6 @@ require ( github.com/jinzhu/configor v1.2.1 github.com/json-iterator/go v1.1.10 // indirect github.com/leodido/go-urn v1.2.1 // indirect - github.com/matrix-org/gomatrix v0.0.0-20200827122206-7dd5e2a05bcd github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.1 // indirect github.com/stretchr/testify v1.7.0 diff --git a/go.sum b/go.sum index a4c11ac..8fa442a 100644 --- a/go.sum +++ b/go.sum @@ -75,8 +75,6 @@ github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6 github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= -github.com/matrix-org/gomatrix v0.0.0-20200827122206-7dd5e2a05bcd h1:xVrqJK3xHREMNjwjljkAUaadalWc0rRbmVuQatzmgwg= -github.com/matrix-org/gomatrix v0.0.0-20200827122206-7dd5e2a05bcd/go.mod h1:/gBX06Kw0exX1HrwmoBibFA98yBk/jxKpGVeyQbff+s= github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-sqlite3 v1.14.5/go.mod h1:WVKg1VTActs4Qso6iwGbiFih2UIHo0ENGwNd0Lj+XmI= diff --git a/internal/dispatcher/dispatcher.go b/internal/dispatcher/dispatcher.go index 528ba09..ec9b8c4 100644 --- a/internal/dispatcher/dispatcher.go +++ b/internal/dispatcher/dispatcher.go @@ -40,7 +40,7 @@ func Create(homeserver, username, password string, formatting configuration.Form // Close closes the dispatcher connection. func (d *Dispatcher) Close() { log.Printf("Logging out.") - + _, err := d.mautrixClient.Logout() if err != nil { log.Printf("Error while logging out: %s", err) diff --git a/internal/dispatcher/notification.go b/internal/dispatcher/notification.go index aa1c077..b23bca6 100644 --- a/internal/dispatcher/notification.go +++ b/internal/dispatcher/notification.go @@ -264,9 +264,9 @@ func bodiesFromMessage(message *event.Event) (body, formattedBody string, err er return "", "", pberrors.ErrorMessageNotFound } - formattedBody = msgContent.FormattedBody - if formattedBody == "" { - formattedBody = msgContent.Body + formattedBody = msgContent.Body + if msgContent.FormattedBody != "" { + formattedBody = msgContent.FormattedBody } return msgContent.Body, formattedBody, nil