diff --git a/pillar/role/matrix.sls b/pillar/role/matrix.sls index 0ca3d92..5416d3f 100644 --- a/pillar/role/matrix.sls +++ b/pillar/role/matrix.sls @@ -5,13 +5,23 @@ include: profile: matrix: - discord_client_id: 672058964707377152 - discord_appservice_id: 330d1b6dcdf6a2217454f8227d2a960030d341a8baca5fa5c40f4081b6f40acd - discord_homeserver_token: c86278c9ee856a30120578811404ab9f87ab14e4ee245811cf008c78eb1d0c82 - discord_appservice_token: f23cb935c48801d921142fc0011d952b7108874eaae9182e5f229cdf9a1e81ab database_host: postgresql.infra.opensuse.org database_name: matrix database_user: matrix + appservices: + discord: + repo: https://github.com/Half-Shot/matrix-appservice-discord.git + port: 9001 + client_id: 672058964707377152 + appservice_id: 330d1b6dcdf6a2217454f8227d2a960030d341a8baca5fa5c40f4081b6f40acd + webhook: + repo: https://github.com/turt2live/matrix-appservice-webhooks + port: 9002 + appservice_id: f4de7550133374c703c4cd64c5898cf1b82b65d4a5c2aca93863ee1fb859df91 + irc: + repo: https://github.com/matrix-org/matrix-appservice-irc + port: 9003 + appservice_id: 1deb544b666b3aba1d9d49d3d4785eeb2fb2befa24e0743c91e6290866003c33 sudoers: included_files: diff --git a/pillar/secrets/role/matrix.sls b/pillar/secrets/role/matrix.sls index 70fa4b2..5da5d1b 100644 --- a/pillar/secrets/role/matrix.sls +++ b/pillar/secrets/role/matrix.sls @@ -362,96 +362,936 @@ profile: iDxtdmWgY2kllYYu7mBjR7Lmy3R4vqJDF0RQioyj =0XBC -----END PGP MESSAGE----- - discord_bot_token: | - -----BEGIN PGP MESSAGE----- - - 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 - =qlTU - -----END PGP MESSAGE----- + appservices: + discord: + homeserver_token: | + -----BEGIN PGP MESSAGE----- + + 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 + =BADs + -----END PGP MESSAGE----- + appservice_token: | + -----BEGIN PGP MESSAGE----- + + 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 + =Pel3 + -----END PGP MESSAGE----- + bot_token: | + -----BEGIN PGP MESSAGE----- + + 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 + =qlTU + -----END PGP MESSAGE----- + irc: + homeserver_token: | + -----BEGIN PGP MESSAGE----- + + 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 + =umxT + -----END PGP MESSAGE----- + appservice_token: | + -----BEGIN PGP MESSAGE----- + + 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 + =0c9n + -----END PGP MESSAGE----- + bot_password: | + -----BEGIN PGP MESSAGE----- + + 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 + =YYAO + -----END PGP MESSAGE----- + pass_enc_key: + -----BEGIN PGP MESSAGE----- + + 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 + Wo6ypyJd8xqZ7SvroGZZl+E= + =EbP5 + -----END PGP MESSAGE----- + webhook: + homeserver_token: | + -----BEGIN PGP MESSAGE----- + + hQQOA7A9CHm0S6RyEA/+IYjFOPGGr/4jpCUsFgc51+P1vbMMq8FU0SJYeHd/3CZH + KjGDNl1rhrZrPPu2bWgz7Yy0NSFHlSReuAzbBMHvwqJMLikUYi4qqbV+aKUDn+Gr + sAbfR4DPRTLcVAJBRBGknuW7nY9hihRlDFIUYoEO2sW06A3pX4377DRWC6iWlGFW + CLRC3TUxTdSemhfZ0r7360T4Ularo5wl9yLIIL0rgTmgNSqhVgY61yWDTBXG4B/I + xrbwyzqht1f9D8DDA5pu07qK6ypAcmTnc7lSGWOtCaud7rvsv+4DLpW7VCZy9rXQ + jgFmYifiXSEEctZHZiSAaxXXRF9JubkvEhWFHjhbHGdeqeLBq8waojLnd+bhQ6pZ + KgRAVqGWSt6fjhEiEmR9YePzEe6K95tF8Ud+9zBWrrers3F5IcQzfauSFlgRIOQ5 + GkuFutviKMY5Z91ArGPsjSM4lCS/KuHj8uTRIZcFSvC1+kIHWr2Hh+A80wvjqLIF + W5I7eRBIgM7C+cmRtjA5OfavLarD8NtldhOMWAS8sq9RPIOw9v9up96yiKSt1Krw + kGi+eefGoG+EVFVsRerFmnuoH/vz4S67OArYbsK8YRt/qQOc2MWd0W36WsBhV36R + k1bbMpGyGn58+x1rD1Ho8QYVbd6gdFI8i/jhfHYh70rifKwS7Tb3UVQXZq4P/CMP + /jqHAmKlA7DOR2JETFFuhnfRoFsNVM6q6TCqj2/VPP/9oC6iI5DVi1pcggAkzFQ3 + 10uoWtJ1n6PyCiAGlRMyszGB43KdQP+/NLeSqjPFpSMJ6glbkbRaklRXuQEbdxfW + LCvlu6FrtPBgQCXXcNoxVfOuviwZZRListedlpo3B++ej+ekhmUs3FhgE91YCWf5 + mavyDP0S16VbDstcanhCm9lENgGf/bg4HvA+lx23dySYkdnFlN2mzg4NypaX6YPU + iO98GzRrYL/0q7gNznOB7RY4Q+UKbZMsm16DFM28xiXg8GfM+chVm470N+/TvdhC + uNEpClr80lY6tamMEeR/hW27634vKD2rzPP6wd0we/X40hzEoY+9T9UrfpAZ11vq + 58YSq8/X14/p/EF1SfD06wHV18qOKMpLIiMNduP/C8AdhRASMMkXtrj0E07wL4tn + Z155/Dh+eRuOM323QqGvTLXgi0EtGtMBGqFMLC1LKR+p430Bzw0Fe1ymuQDXtlme + ox0PqBr5py6cJJ4AWHpRMaA9T0obNoA7TFxJMYRmxS+T2f0Exldd65+W4ww9Ib+j + EuXXnHk/iqAzxvdTVfPlgYoCHDy0hHUcveulxPAVMrdwqZP3flxJhZvUW8TMRPzC + hrpjzfHEFzgTyXeGqXPFFtpn5c53Rmrik8czrUZRvzfRhQIMA8amgupjyC8cAQ// + X41mJpV3w6CLoOdHv2NEfwVRbatRhiLj5Ex7rA2QziI2E5Xryrv9CDV1rqZkd4Of + 10PdsVlqweQpjYjj9uMzo9LFF5lSiFyjFMadd0l13pFR+2f6M63K3hrTA4O9wG1L + I1Hb60yaGPkps1ZRUUJgEb66O0FxF7rVEceJiJL70U+7VmI+IgDI8qf0xMIE+2oK + pLM2ZgGdkyoetWwzWVavQxfwbqSgIQ/U1d2MsqPfJcVMHG559nx1VKijO9Wf87IX + ost9DjBx7sn6wx5TNjoNiY1OkQ4QAuYL9WwZ6KadQAl01I/RW7NHvb6tNnKxlKSf + 5QIC13qs6xWu+uwkztdOia39BZWKf+lOdOMypquMZ2oRmAIUmXZTgkDkZ9TMiNhd + cUv21VBaQG5hfz9J8pKvo9LtwSXZpgdyIFyd7s+6gSi7oo24X3ZQvtnC/aM38h+h + Zf60SG/Khs4m4SwOQc94zYJ7agSAB3Kmmq0EJ09KlU20/WDkYMt36Pe+py1mNzfe + LIVJAeYG/M4c6pkhwSnWpqvhBYXG8N3GcK6JHAGhJ/kw/Po8yT3KjiTN+GiyYsbi + cROSnekfKj0Gz1DqbKnER0kz8Zd5ov4yrX6AkbnKute5uyPaED7ET6b9wrv36E2/ + ki55DSt/0xh/VemuqGbv49bpPbrQ4qeuIRbIDsIGLdeFAQ4DslgfDDfB4G8QA/9p + 1Ai8fpPSzv0jSX4ZqG11wbF85jepKx84yhywdlTUbmAEhd6keL8oXSd/mUY7UvSu + k77aCQXVmQdaM18l60dAYncDa0UiaaU9BXwgwSeANN4+R3T838cQcquKRCRmNLRF + ZT3921NWSy+6+4eYhn5+93/TjIXwY9vqBej1uR+QCAQAgVn7w9iB2e+c3zTeLT1X + gilIY3B13f8tiJvjUUlw6aaSnCTNtux4T1yLilFrkZNGPB+YhBGaK1X2HaKjKiog + XJ0XvL8pYPu7W7Vfk6nhpndsHN+/0K+P/yJqjalIGrqee0T5sdG+st2GEE8/66wK + bnBWzGGKAKY7n7tDsdw4jvKFAg4DiLcKbyvsTOYQCACqJ4H3cpIbp0W41bbTL5pH + XP3eZt0JrWuj1vUBRzVsIi3eIeDBW/ISu6Jd3mxCKOvmbWmMIlP1dtkoJEt/dotb + e+KnI9TB45V3+vKWWXgZoqNvnUx2EPEiexjawgraogfONXTyPTUANrohGNIvXmQI + 6hSkgYrqADKIuziuzNuIktKajXZ9MgapL+RzSyPlBRtZeDxeDttoYIHMnUKCwUeU + Uozg4kTSh9UuPyFuhZmXT59rNRiHzUaoLgD260p452/+34b4Mj9puUvjbtIkk0e3 + p8oegpNXtNBnzrwxdzEqS9wVAUmmjITl8TPMmmp08Y9/3TLu6yUg9Pg/qHmu+UFe + CAC35+RTpSog5eAmBg8OXFNloKmpLtRIG+7tpqDDHeqWyoCKik2gOqJJ5+lhIrcu + HljmuzZ/5RwlQ1NC3CVbrZEcm5iBiwUFCfdrAG6o4udaVwCKeU3lC5LdreF6fQO5 + 8LhsAxhVlPuqz/58cTnzsjHE0pSg2cS3u9OLvt3zmkA5BbB3KqZNRnl3sYpUCYUI + YE6CWGE5xd+lw83ip9aBLAEbKuTsFqrb3QbMYVcF2aeIXl41xHEIHkEtwqr6cvH1 + FCdhnx8rJjyxnHsXnaCKPNFsklYVj7wWa5ws6FZUAEBnjep9ApZJDOaJqbkH6u8c + exN5udSkn6h9x+MHXulwPflkhQIMA1tQWD9t5xGsAQ/+I4dSSmW6CkwBu7vuEamA + BMo1g6vyPV3BC1t4FM8n4IG9v+fZ9Vw3FheK0KdNaYCrAVoj7Prqtx3aO7fwAnxx + reb2y6+Nlb3NWK/Z1C9ZzA2+LwgnnW7xZRLTFD1p+zTsWvn5FCP26e0PKkCscIxS + 7g4XbCXyFP2rXQtkPgd7mpoj/AX0NV/CUMZl3QYJKoLNaYHkqz4jKYNeQyFMuDvZ + 97WbXcQILtMaTdcpR+48MCyroUaUfpF/ggiG8YOVO1yoFS5G9W/MqpWqlbnoQ3Y/ + ZjWqLNVjzwy2XT2fLvnNCZK+X9i60jnrvJouVK4HbyAvzY65biTsmJIrCZSN0QpD + tjlzKn9aj13r/Qv3HxYnPMHF4sOtnCMYieUNujKnsZe6pphiX0O6+hbUMxZ6ix9h + YRJOWaxhm33ZK3BqgTy6KjysR+e8fmbSD7C/4HCkWBv5kqoGKVO/08HnVGr577b9 + 4yynPY8KdmTQs/0xv39Exvx+U05lO9ELnk+OxgAW8YogMnxgeuM2P7pdCnXX+Q9X + 0DvlPSY3paUYd5LdQonGya22Arosy/VekbRMb1SjBAHUAVKYBGd2oKvSw5xS7XVw + Y504JamNSCfoPBP94LUq7dBLY1UDhW8ovv88ru5VOHRcudVhq8T9TKb6L5xRjckx + vSh9Gd6y82RK+Dga0+yTpaSFAgwDcaIHBQt0xN0BD/9lDqlOGT8awQty1liesJwE + gPjiB93Pr5KbdNTRyBVYQRJ1UUnXzrRDXgw18SKFqwx9NVbGLY+nrGIIRqRYS5Rb + pN8d+Jrn3n+CBErIXnRNZYDTTtctZedvDGCtGwjzLNrNBmhePGw/0Q4vP58qvAML + DL1y4ScwXQwCSBgJIs7XwWwvC4bLhiJBh6B+s7Mjn2jZC8pUqfb/gliyumrQ9Lrz + hnXvY7MwE82Q1Nw6Q5JZ98/j4Idv1vpFs/4P/kazjmKIlieFQBS/KjAT8hI/iiZq + t08QdLVdz/FOuQfGjFzuJQeCZKWRI3cVyqIY9PXvcYyZlL/cJQwjr5Mb4ruhxfPk + l5po0fSpsT7PMmb6DDHqmBcOsQjSOhJp/FhfvMHq9+2wYJaQl28Iu39B45ZMv31B + PPzOoAugz4ZNSTjLpBN+qWb0H2mt5UmLhri96C3lMnlRTIyvhzZw8lFEQO6mOKep + v6alLzwpDa2J1atZ5kvTEz6OQsOYVRUe/J9IKbgdA7V6hAzgboia3RQIz93I0o8Q + OGsDk6czAx2tOjHv+cCcy/vJqvNYkx61SPTZYGQPhF+YIAkAoaDGthh/kq1KyEZb + 79A1Ik+uHEXUkeu7+aBZdv6khtEuyPLlcTM5fW+QI45T1EG9KO3LG8zg76C0NF7n + d9BD/x/tq39UHk6NYGDXgIUCDAOs8M4KG6xpkQEP/31laFBaLd2uAUnUb9+TSYgS + aXd52Bb4jAVAf5kj3o4bEgZ/wrgDrid67G7OoU3ita5PpuyCPGyOvMp5HoV01FQl + SpwPMAERGQpHOSigUHEe7pQGzCxGtSIt0OCsbRD6QD+Qqe1iwAwaswz7ZaSPxq4v + 1J1VbYYXws+pEmgdCZC7XtPvGFR4t73Zv5qP0QxG5RLYeIagHZ3GAXx9pc4sU2cx + IZEZZORcNUNhrbnDBAXkqkbD/wkS+rD3W7692hW4xOl06um+uyLdaZUBe0W6oP6s + OIjiweyTYk3UlZTY6eUHG6B84kPPlw9UuHwcOdU2cZRpBAMfY1p6oMnXXaMkVf6I + Ws/wcB3WMGV1/iPutdG3SXR5xAUAoVsp5oVs+4B8WD9eK+4+uZCRfVqoEMhpzoxE + AhZOtFgWcjh5D8lYfQv3vEw6ovHz2VdOQo/GJkuHbddjLAzactEgfnl8FgXWm7U7 + 70wgzcvExQ1YTFkb3yMldv8CWR7HCLJc2sV8XB2KWErTgeBBYnH2og6l5yoXwUBO + WVTfBbRnDpXyOzYR05xsaGECDiPWkqEAEsXihMo6/SXnMf0XKuDNqG+QAdhKRn9D + pMMaRX6FDM/hDPkfp1mDX6hJa0dWk00gs0RsXo7xj1sZASTJVlL4f1wzazSkWoxn + Sqa7nRzKaBWSqNgh6Qrn0nUBiHHuoodAX7bd6B0bNag66pEQMUCNBaNHvDlZV+4q + v1A6oOCHdmbkLOaA3Dpv83GDuktku7ZsQ6j7a806/02viUpZfxGxfwqAs5dnqdmB + WuY5EnIJE1ArYh4pWWRNXjnZQ0WxeXS++4DCid1R8p85b+jYGbQ= + =TiYK + -----END PGP MESSAGE----- + appservice_token: | + -----BEGIN PGP MESSAGE----- + + hQQOA7A9CHm0S6RyEA/7BpwUE3985aqpA2HgRIanhKvoPNQShnRPf06Lp32Lqp5i + TldYahc4JmVvJtYhJUYxIp3NF4uDqxGLhXB98Psf/X0diS0Kov30aP6sFIeznPl+ + 0VTL93Bhu4CxB1A5tdHuAYTA8raUIQ2H74BY+2i70Rp0OOo/5RokrU+UPirOCoeY + GXbD4YEiSdItduP15NMnl/UldF+0XfSSLk+1tTLjo39AJnjVSRGI8N1ASLtSgk2m + 5u/9OOMVSR7OzuWI2ygI/rmBAOX0SX2GSiYhbzD2vb45yi53gUQgQZHf6makxWVt + e7AX76IsZ/5Vldm1fE7z5O61pk0nDX2oNkzYcy1qhZz/BZVY0NI7RKHu3yRl3T33 + 4ojeTgHV71O+UUNurloFP3XPzIky4Mmo0k+TCY2nuP/HS1Z/BEKEp4y1+avQjIZX + VfeKtoBEE4QYjIcy8IF3G6sHEC/tw8FQmAiGWvH12d9q30fdc9kBfdC3BwELAXd4 + PdgFH7NOKP6WdEvgG+sKYdRfP3pN6cg8itbYSeTc3loez2xOX/JPPceTioqDJvK/ + U7Xh2y1r1H1ZJygaNjkn+ogdrI2fDuI3C3dat2oXBIQyezzUdYYaC8o4lq1VJtoH + Xh9AceBdAGMbZEY+PfKL3ilB0qwAKlY7jrQlz+5s9YjppnY7WfPR5Twvn7gYPtMP + /jULDhpO5SUPGqB7o6QYqQ5ABJHNqG5VFuKZiJqOuhMZ3yZUM18UmHc9Xl7AF2Kl + tUKoO12jvvEtr3Bw9uUXXVqAtsgOwNs15n1KF+wd5kvOdOwhrBHwBV26v2zaYI0p + z4YZ2u1VdFE1trMbM3Lq9DZt7aR9cynQVdOtz1t8jr8YBeuPOl4UJ4jUqKrQMECx + zAhpo3ULEMfkkS8THSY8gOUDy3gD0zEXokZrvr/qe7Zode8SrW5O8zTgPYhLedfS + zmRKsu716KHmRLgXwIT8DJpcsWc59r1HWC3ia9i5xC/hK70NA1pI6Yvn2uRhXe7N + 3c2bvTiXMfrKbMBQWhE1ClIjQq5FD2u3nZCnWohB4yxl+ViHp/Z9p41qb02ldqtl + dNlc0tINUU7eIIvJAq4Ci74fuGk0BGlHj/ZJN7DMkevFYJh9KeLbtn/oM5pe8CFc + mDfXWqyOhKfK9VEO9c31LbLbHGZf+aDBXDAfNDJHgtPofz/uoPhw4hNvTeBV1i3P + efsRbIQE1la9qFSvIONBYMaautSuUJ4WpjU3rcAFcpNYDXUNMkayYWQ3O6qxT/df + xDOi0f1FoWevF7Daj6kfoFMXanFlS20hald/BMt47GPybR+pBAKm3kFTHnKcsBlZ + ZfKdq08EYRKS8ynTFcZf2L0nIQPnwOvDGoHE3TPuxR+ihQIMA8amgupjyC8cAQ/+ + Lf3iL7woR++1uXOQ5Dn35/7vjsVcs4Nqp70AmHSl4kA4IvC6Xdo8/tWdfg+tKz3g + 6jDFVjVmDg9DaCbaxz0GzFNc9yYxOdcGH2d8MtLCZysh9eujXoPEuT1QGeE0g+U2 + tiRZckJ0i8ov7WiE3OKuU1S8pJ7ENuiz70G4CoqMTmmawlupFOgFxZxzPWyS+UlR + QKM7BbWTxGWyrco6c9yhoPsemZ8KqXVWNJELajLUUZC4G2rp1RTRPEcBPVSWamNq + ORvVgA57AtgXSm8rRNQbfpOSdPPCEz0+Iw9KrgMUw9dlui9XIbMi6zkJ0zniC1HQ + b9XXeZFMxrCBdu+y34D+PgEoB5I2uJmVfi+zCSkrMXmn1omyltPX+Hir6XlLoiJJ + n0WtnlkIl4x10dRTWl8vcYwrfSPK53h5aAbAEW1o4qz4Hft0PsmCdHTH1GFIRePm + je9RvC64JleF1wkl61u10FN56dyaKbKicLu9B1t7esATohwHTow2+/XSNedlq+f9 + n45Zc0P6UawUv5mXrgscTW6jPkZ5G0IPyAww8czBy9Nzin6ciNdt7um2k0GXRRht + Ei49WoRf0EyGuwJLA9caO58JEkoBnVTkNrXUq7/Yz/hxx1XBh771trnXyU8lDZA0 + EiYTm59Cwir4ep0BPZc5r4PK7PbS3MR31nAUS9X92+aFAQ4DslgfDDfB4G8QBAC2 + xlOkFMNIzROdmOAL/rmUaLZgtr92ZXcE82LiDrm8FQe8AT5tDUqQHeMpT+dviou5 + O453Zr+1EmgYl4NOmPcacbZFRBsLskrWE4kzbPIN+K+fWCKa3a60maQF6JDFNW1v + eG7i03hmKrZKW1iSxewzd+GoiO02aNf+dkPf68emZgQAhJsuKTZXoatmxPihpQqD + VIXqRHR2CyJ/n7Dv3bs/lGi0tOVa8/M7AT3Gw5f2lQKzroIurXeG4hGIm+govk0C + /ahST4quvbWaYumwFaI4lSHckX2Qu2RLRXsJUUjasCvJ5ZJsDmA9qIEgWLe66D2o + joPaK9QwlJH1GKhfeLFCW/OFAg4DiLcKbyvsTOYQB/9Kvo9gm1VUWaT1KykEGOR1 + a/R8lJDPczDcwhQzkKTN3SSWREh6xYNphAkSYc/eFRHSAr4SbHQhmTD+qg/f86a4 + iW58lqYlXVluaGpYG9x11yH0whQn8hAYFfYCDl+IQxeakplwCXKeSwidc3LVYgvt + LZOv6ROeFf628V9WiNYMlUtnxfshObh6HI28EZLYwyQKNi5DzEsarJ20Ly3BkBbd + fkEkQE2NkasLmMJgnYUG2SRdBJ2YSLB1+4GgKEW5MVLcwsTtEYyh/wmkyCPko8vJ + /GdMOTXZsHFsyWLJlGqSO01r6EhJrwCmjiVFh8q3zyO5S259HcyYA+Z/p7jBZW6f + CACVtzcTodiJaWlX8LcYd2dKjd7SkwYllelrzIRLtygEVBLXkzilM1B7VvtZA1JD + PnOVl1blyney3xzrZsbFKXd5yDGJcv5A7gT/lNm5LUMbP5uYyf1ciF+TCr1F8bR8 + xROvH5W1YZrn/ejw+AwrJNMp/qCU6g1mjCoNf33fCc+PP0lzkdb3KeOHCKmMmPHc + M8n4zMvdghepu5jHSfxOy45nID41CbU+RpmpuTRxejj+ta+oCF1jHMzqtYtjk+9h + COn1bbFg+tJc/dt/UMwu9cGsWBW0BQ5vB0qs5bqCvx8l8VrPCk7LLI9Luw9lBdNX + gxfLHxZFHC67x35NzAwsxlXVhQIMA1tQWD9t5xGsARAAqzrj7/6NeRkT/FK6OX9h + +9mOTPbkTv6BcyoAqttvWgCg1kEZQL9XQ16Vue/kJoDvH4dAvDkq5DcB8mJW2kHi + 0u14HvLT5y4Ng0QRjO8VsLryfrjD+D0YazJIaahdlkquoLm5sV8nu9gKJf22dEN/ + lLHIIJIn6aCJGWtcgL2xoTHCaTVbrTLm0Nxy62xLz8YrMEFtGtZSy5HZgBVaCmvX + 0m6AaTzvttg8Pfg/hAuFwJejUoalAhCJxLp9iQkdj17yhl0EgVRvaztoO7lL6Rza + LRwXfSevNJ1O1h5U2chHDqpvnk7q0v4KMpEmJ+x/TSVX1J9js4r/tYAyY66ESUjB + 9eIxVqBsKW36S2b8OHQtLTWzZ9g+1KcJf5/Y3xN64jgUTXze3Q0lY690erZclodz + I4VoQ9eONtfJkn0oBopToS7ODo7DPOGe5f34SEbEJ3w4p8M7iZNl2NZ2/AX0+Y6Y + C0TGcqAd2bDCMIVGkYoZabOHJTwHFuTq1rVvEy2tyYoYEclgOUSEvWlncmbIfSVN + LxMkw0Ht3z6tCDCuPoARZegFU3h2PTe/WVFTu2AwJrejHpAg9jMLyVOE9HrGN8EE + xwk28/J55QJqt4Xe2I4x918lELlFVQSrmnj2R5IfdlXgWKHp/zEwCrWvw6acFXqV + guIxG8UnnW3cP2LPDLT71G2FAgwDcaIHBQt0xN0BD/9IF1+ExWGLelgEjaPBURpJ + NDUprhTGpgFxTjDxDZHZt4hE61PvYPJ8WVYyhzlBrR4XKPoSJcIJ9D6xFSFxk+x4 + /RKFqq/NE72tSvhzVk8JMRzVbl+6Jy2G1YrwlYpQwkhxvolyr+ngbH2wQmV8xf5F + EMezMfhCGtCG5EZy1DCcvPh/4G3U/lYHWS4hjt3SDJfah0ouinYWhTPMlhYlUL64 + +3faZsl5TCQCcG1jXSvMXCAYE6nt1KZpwgL5dBU8yyRh+rI/S/m4NMt8RXzz+oMT + Kds+D/JH4/QEJdDcfFpSOR5pOMrepiuHuwexyJ+2QIGLU0Tg2NLcWwrv/Bqg9jUD + Tu3DocKO5LpJr2bZuBWvpO3QENEFHNh+9UjmzBc8t52iGK3rpgy6wYzfLRapsQrz + 6GtyToImd/u9Xzgr/V7N03eeP0gaZUWzxt+T4/WIzQ5BEbLB4ysnECIJ+YLV1/XA + UnUYvhoh2qtMPpBJAvj/W519zB1f5WW/Ofusb7cCy+PjPdBz1LGfxe5RmwsUAqrS + A5iI66Z6hHCOD0Z3nmbcFWhIrZTZrZIc/D+FwmkBW7fYpyyYOWLwAKcLi9DCzE0l + vP8GSuf2n1qdSHpRyrz08lvDjYbOMkDCAt+bX4BGXDsXgmrBsirhrYViFmHIj0Fx + 8dMQ9HhEN66MJsnWuzPoCIUCDAOs8M4KG6xpkQEQAJel71G8hBwlqg2Hex8Yhy2c + 4x5VJvzuZqDZGyAC+9WZkNqgNQzF4FDAVxEH1RuqF618QlXXJKsr6ENakcR6H9co + 0MQtAWK8K+0hrrzrDlHRpXG/SD/BTCsEd9hKEidZpJXLp2sqbSweGPqu7A9IkfA1 + NSH41mmXzl4AAt79mUW36GZ278gsBLs06Id9pGikbUWSQt06OkyPZpD4t8FnJPNk + gCv1vJHBSrujWsO1Y05Iv/BGIjCL2pKTXV8jrs8aFtBVkvOTPw+gzHjAXU6hG+b1 + PyENnzqV/vWSIVcqcqlYHhHppxH5Ru7K7/XeQwWb4mPc2BurHMxafJMR5xkYmLWU + VCm8ctz951zHJvtHanujWKmJyHyFsn5/gmXw6ltYdsbpqEYaIRBb7f/lpSPG6F7J + N92g5vHxRkUUXLoJJ+r8yT5Pi4W+D9VrqKli3C7n1hM4aNlaZZgHTDHDWfAW0jbo + M6ohubGWIpCixByiHazDcdASLxG8vQpJrPgJehSM3zgVg595Fy8khdCtg0oksu7p + ooAtWCu2pzSoWnD3Z/qA55GiOJKQCS1I+7SE7h20nQzLNFHaElKHuK7J9JPTHGMO + rn5fgae8raVrSPj1EWW/xJsRmeBUS4O2Luf4CHP5b4NFDdPAuK98UgTB2Vu34PfG + 7gszC257p0GbH2uz4eHl0nIBM7vU6KTR1sU5uZTAmSZ+E7ewGFaVJp/CqfjycHpc + 2SpVhoqDjqBQ5/U3aKihzk8FMYgC2cw09RpHPIgnbqFBQA+e7VK4NA8D3AinAMIt + QOnfzfjp1lq23vYcn8eyTNQX5Pk5+Z4S2XA6QGCpsTjiGsY= + =/rY2 + -----END PGP MESSAGE----- + secret: | + -----BEGIN PGP MESSAGE----- + + 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 + =WgeA + -----END PGP MESSAGE----- postgres: users: diff --git a/salt/profile/matrix/appservice.sls b/salt/profile/matrix/appservice.sls new file mode 100644 index 0000000..596ba38 --- /dev/null +++ b/salt/profile/matrix/appservice.sls @@ -0,0 +1,70 @@ +{% set roles = salt['grains.get']('roles', []) %} + +discord_pgks: + pkg.installed: + - pkgs: + - git + - nodejs10 + - npm10 + - nodejs-common + - make + - gcc + - gcc-c++ + +/var/lib/matrix-synapse/discord: + file.directory: + - user: synapse + +https://github.com/Half-Shot/matrix-appservice-discord.git: + git.latest: + - branch: master + - target: /var/lib/matrix-synapse/discord/ + - rev: master + - user: synapse + +discord_conf_file: + file.managed: + - name: /var/lib/matrix-synapse/discord/config.yaml + - source: salt://profile/matrix/files/config-discord.yaml + - template: jinja + - user: synapse + - require: + - file: /var/lib/matrix-synapse/discord + - require_in: + - service: discord_service + - watch_in: + - module: discord_restart + +discord_appservice_file: + file.managed: + - name: /var/lib/matrix-synapse/discord/discord-registration.yaml + - source: salt://profile/matrix/files/appservice-discord.yaml + - user: synapse + - template: jinja + - require: + - file: /var/lib/matrix-synapse/discord + - watch_in: + - module: discord_restart + +discord_boostrap: + cmd.run: + - name: npm install + - cwd: /var/lib/matrix-synapse/discord + - runas: synapse + - env: + - NODE_VERSION: 10 + +discord_build: + cmd.run: + - name: npm run build + - cwd: /var/lib/matrix-synapse/discord + - runas: synapse + - env: + - NODE_VERSION: 10 + +discord_systemd_file: + file.managed: + - name: /etc/systemd/system/discord.service + - source: salt://profile/matrix/files/discord.service + - require_in: + - service: discord_service diff --git a/salt/profile/matrix/config.sls b/salt/profile/matrix/config.sls index 45cae55..03bc4e8 100644 --- a/salt/profile/matrix/config.sls +++ b/salt/profile/matrix/config.sls @@ -20,16 +20,6 @@ synapse_conf_file: - watch_in: - module: synapse_restart -synapse_appservice_discord_file: - file.managed: - - name: /etc/matrix-synapse/appservices/appservice-discord.yaml - - source: salt://profile/matrix/files/appservice-discord.yaml - - template: jinja - - require: - - file: /var/lib/matrix-synapse/discord - - watch_in: - - module: discord_restart - synapse_log_conf_file: file.managed: - name: /etc/matrix-synapse/log.yaml @@ -46,3 +36,9 @@ synapse_log_conf_file: - contents_pillar: profile:matrix:signing_key - mode: 600 - user: synapse + +/etc/matrix-synapse/irc_password.pem: + file.managed: + - contents_pillar: profile:matrix:appservices:irc:pass_enc_key + - mode: 600 + - user: synapse diff --git a/salt/profile/matrix/discord.sls b/salt/profile/matrix/discord.sls deleted file mode 100644 index 596ba38..0000000 --- a/salt/profile/matrix/discord.sls +++ /dev/null @@ -1,70 +0,0 @@ -{% set roles = salt['grains.get']('roles', []) %} - -discord_pgks: - pkg.installed: - - pkgs: - - git - - nodejs10 - - npm10 - - nodejs-common - - make - - gcc - - gcc-c++ - -/var/lib/matrix-synapse/discord: - file.directory: - - user: synapse - -https://github.com/Half-Shot/matrix-appservice-discord.git: - git.latest: - - branch: master - - target: /var/lib/matrix-synapse/discord/ - - rev: master - - user: synapse - -discord_conf_file: - file.managed: - - name: /var/lib/matrix-synapse/discord/config.yaml - - source: salt://profile/matrix/files/config-discord.yaml - - template: jinja - - user: synapse - - require: - - file: /var/lib/matrix-synapse/discord - - require_in: - - service: discord_service - - watch_in: - - module: discord_restart - -discord_appservice_file: - file.managed: - - name: /var/lib/matrix-synapse/discord/discord-registration.yaml - - source: salt://profile/matrix/files/appservice-discord.yaml - - user: synapse - - template: jinja - - require: - - file: /var/lib/matrix-synapse/discord - - watch_in: - - module: discord_restart - -discord_boostrap: - cmd.run: - - name: npm install - - cwd: /var/lib/matrix-synapse/discord - - runas: synapse - - env: - - NODE_VERSION: 10 - -discord_build: - cmd.run: - - name: npm run build - - cwd: /var/lib/matrix-synapse/discord - - runas: synapse - - env: - - NODE_VERSION: 10 - -discord_systemd_file: - file.managed: - - name: /etc/systemd/system/discord.service - - source: salt://profile/matrix/files/discord.service - - require_in: - - service: discord_service diff --git a/salt/profile/matrix/files/appservice-discord.yaml b/salt/profile/matrix/files/appservice-discord.yaml index 081314b..94b8ba5 100644 --- a/salt/profile/matrix/files/appservice-discord.yaml +++ b/salt/profile/matrix/files/appservice-discord.yaml @@ -1,6 +1,6 @@ -id: {{ pillar['profile']['matrix']['discord_appservice_id'] }} -hs_token: {{ pillar['profile']['matrix']['discord_homeserver_token'] }} -as_token: {{ pillar['profile']['matrix']['discord_appservice_token'] }} +id: {{ pillar['profile']['matrix']['appservices']['discord']['appservice_id'] }} +hs_token: {{ pillar['profile']['matrix']['appservices']['discord']['homeserver_token'] }} +as_token: {{ pillar['profile']['matrix']['appservices']['discord']['appservice_token'] }} namespaces: users: - exclusive: true @@ -9,7 +9,7 @@ namespaces: - exclusive: true regex: '#_discord_.*' rooms: [] -url: 'http://localhost:9005' +url: 'http://localhost:9001' sender_localpart: _discord_bot rate_limited: false protocols: diff --git a/salt/profile/matrix/files/appservice-irc.yaml b/salt/profile/matrix/files/appservice-irc.yaml new file mode 100644 index 0000000..5239e90 --- /dev/null +++ b/salt/profile/matrix/files/appservice-irc.yaml @@ -0,0 +1,14 @@ +id: {{ pillar['profile']['matrix']['appservices']['irc']['appservice_id'] }} +hs_token: {{ pillar['profile']['matrix']['appservices']['irc']['homeserver_token'] }} +as_token: {{ pillar['profile']['matrix']['appservices']['irc']['appservice_token'] }} +namespaces: + users: + - exclusive: true + regex: '@freenode_.*:opensuse\.org' + aliases: [] + rooms: [] +url: 'http://localhost:9003' +sender_localpart: appservice-irc +rate_limited: false +protocols: + - irc diff --git a/salt/profile/matrix/files/appservice-webhook.yaml b/salt/profile/matrix/files/appservice-webhook.yaml new file mode 100644 index 0000000..8bf1e86 --- /dev/null +++ b/salt/profile/matrix/files/appservice-webhook.yaml @@ -0,0 +1,13 @@ +id: {{ pillar['profile']['matrix']['appservices']['webhook']['appservice_id'] }} +hs_token: {{ pillar['profile']['matrix']['appservices']['webhook']['homeserver_token'] }} +as_token: {{ pillar['profile']['matrix']['appservices']['webhook']['appservice_token'] }} +namespaces: + users: + - exclusive: true + regex: '@_webhook.*' + aliases: [] + rooms: [] +url: 'http://localhost:9002' # you may need to change this (this should point at the bridge) +sender_localpart: _webhook +rate_limited: false +protocols: null diff --git a/salt/profile/matrix/files/appservice.service b/salt/profile/matrix/files/appservice.service new file mode 100644 index 0000000..2efe2ea --- /dev/null +++ b/salt/profile/matrix/files/appservice.service @@ -0,0 +1,16 @@ +[Unit] +Description=Matrix Appservice {{ dir }} + +[Service] +Type=simple +Restart=on-failure +RestartSec=3 + +User=synapse +Group=synapse +WorkingDirectory=/var/lib/matrix-synapse/{{ dir }}/ +Environment="NODE_VERSION=10" +ExecStart=/usr/bin/npm start -c config.yaml -f {{ dir }}-registration.yaml -p {{ port }} + +[Install] +WantedBy=multi-user.target diff --git a/salt/profile/matrix/files/config-discord.yaml b/salt/profile/matrix/files/config-discord.yaml index 2b3a10a..66e4a69 100644 --- a/salt/profile/matrix/files/config-discord.yaml +++ b/salt/profile/matrix/files/config-discord.yaml @@ -33,8 +33,8 @@ bridge: disableHereMentions: true # Authentication configuration for the discord bot. auth: - clientID: "{{ pillar['profile']['matrix']['discord_client_id'] }}" - botToken: "{{ pillar['profile']['matrix']['discord_bot_token'] }}" + clientID: "{{ pillar['profile']['matrix']['appservices']['discord']['client_id'] }}" + botToken: "{{ pillar['profile']['matrix']['appservices']['discord']['bot_token'] }}" logging: # What level should the logger output to the console at. console: "warn" #silly, verbose, info, http, warn, error, silent @@ -57,7 +57,7 @@ database: # If you are migrating, see https://github.com/Half-Shot/matrix-appservice-discord/blob/master/docs/howto.md#migrate-to-postgres-from-sqlite # WARNING: You will almost certainly be fine with sqlite unless your bridge # is in heavy demand and you suffer from IO slowness. - filename: "discord.db" + # filename: "discord.db" # connString: "postgresql://user:password@localhost/database_name" room: # Set the default visibility of alias rooms, defaults to "public". diff --git a/salt/profile/matrix/files/config-irc.yaml b/salt/profile/matrix/files/config-irc.yaml new file mode 100644 index 0000000..410d5be --- /dev/null +++ b/salt/profile/matrix/files/config-irc.yaml @@ -0,0 +1,505 @@ +# Configuration specific to AS registration. Unless other marked, all fields +# are *REQUIRED*. +homeserver: + # The URL to the home server for client-server API calls, also used to form the + # media URLs as displayed in bridged IRC channels: + url: "https://matrix.opensuse.org:8448" + # + # The URL of the homeserver hosting media files. This is only used to transform + # mxc URIs to http URIs when bridging m.room.[file|image] events. Optional. By + # default, this is the homeserver URL, specified above. + # + # media_url: "http://media.repo:8008" + + # Drop Matrix messages which are older than this number of seconds, according to + # the event's origin_server_ts. + # If the bridge is down for a while, the homeserver will attempt to send all missed + # events on reconnection. These events may be hours old, which can be confusing to + # IRC users if they are then bridged. This option allows these old messages to be + # dropped. + # CAUTION: This is a very coarse heuristic. Federated homeservers may have different + # clock times and hence produce different origin_server_ts values, which may be old + # enough to cause *all* events from the homeserver to be dropped. + # Default: 0 (don't ever drop) + # dropMatrixMessagesAfterSecs: 300 # 5 minutes + + # The 'domain' part for user IDs on this home server. Usually (but not always) + # is the "domain name" part of the HS URL. + domain: "opensuse.org" + + # Should presence be enabled for matrix clients on this bridge. If disabled on the + # homeserver then it should also be disabled here to avoid excess traffic. + # Default: true + enablePresence: true + + # Which port should the appservice bind to. Takes priority over the one provided in the + # command line! Optional. + # bindPort: 9999 + + # Use this option to force the appservice to listen on another hostname for transactions. + # This is NOT your synapse hostname. E.g. use 127.0.0.1 to only listen locally. Optional. + # bindHostname: 0.0.0.0 + +# Configuration specific to the IRC service +ircService: + servers: + # The address of the server to connect to. + chat.freenode.net: + # A human-readable short name. This is used to label IRC status rooms + # where matrix users control their connections. + # E.g. 'ExampleNet IRC Bridge status'. + # It is also used in the Third Party Lookup API as the instance `desc` + # property, where each server is an instance. + name: "Freenode" + + # additionalAddresses: [ "irc2.example.com" ] + # + # [DEPRECATED] Use `name`, above, instead. + # A human-readable description string + description: "Example.com IRC network" + + # An ID for uniquely identifying this server amongst other servers being bridged. + # networkId: "example" + + # URL to an icon used as the network icon whenever this network appear in + # a network list. (Like in the riot room directory, for instance.) + icon: https://example.com/images/hash.png + + # The port to connect to. Optional. + port: 6697 + # Whether to use SSL or not. Default: false. + ssl: true + # Whether or not IRC server is using a self-signed cert or not providing CA Chain + sslselfsign: false + # Should the connection attempt to identify via SASL (if a server or user password is given) + # If false, this will use PASS instead. If SASL fails, we do not fallback to PASS. + sasl: false + # Whether to allow expired certs when connecting to the IRC server. + # Usually this should be off. Default: false. + allowExpiredCerts: false + # A specific CA to trust instead of the default CAs. Optional. + #ca: | + # -----BEGIN CERTIFICATE----- + # ... + # -----END CERTIFICATE----- + + # + # The connection password to send for all clients as a PASS (or SASL, if enabled above) command. Optional. + # password: 'pa$$w0rd' + # + # Whether or not to send connection/error notices to real Matrix users. Default: true. + sendConnectionMessages: true + + quitDebounce: + # Whether parts due to net-splits are debounced for delayMs, to allow + # time for the netsplit to resolve itself. A netsplit is detected as being + # a QUIT rate higher than quitsPerSecond. Default: false. + enabled: false + # The maximum number of quits per second acceptable above which a netsplit is + # considered ongoing. Default: 5. + quitsPerSecond: 5 + # The time window in which to wait before bridging a QUIT to Matrix that occurred during + # a netsplit. Debouncing is jittered randomly between delayMinMs and delayMaxMs so that the HS + # is not sent many requests to leave rooms all at once if a netsplit occurs and many + # people to not rejoin. + # If the user with the same IRC nick as the one who sent the quit rejoins a channel + # they are considered back online and the quit is not bridged, so long as the rejoin + # occurs before the randomly-jittered timeout is not reached. + # Default: 3600000, = 1h + delayMinMs: 3600000 # 1h + # Default: 7200000, = 2h + delayMaxMs: 7200000 # 2h + + # A map for conversion of IRC user modes to Matrix power levels. This enables bridging + # of IRC ops to Matrix power levels only, it does not enable the reverse. If a user has + # been given multiple modes, the one that maps to the highest power level will be used. + modePowerMap: + o: 50 + v: 1 + + botConfig: + # Enable the presence of the bot in IRC channels. The bot serves as the entity + # which maps from IRC -> Matrix. You can disable the bot entirely which + # means IRC -> Matrix chat will be shared by active "M-Nick" connections + # in the room. If there are no users in the room (or if there are users + # but their connections are not on IRC) then nothing will be bridged to + # Matrix. If you're concerned about the bot being treated as a "logger" + # entity, then you may want to disable the bot. If you want IRC->Matrix + # but don't want to have TCP connections to IRC unless a Matrix user speaks + # (because your client connection limit is low), then you may want to keep + # the bot enabled. Default: true. + # NB: If the bot is disabled, you SHOULD have matrix-to-IRC syncing turned + # on, else there will be no users and no bot in a channel (meaning no + # messages to Matrix!) until a Matrix user speaks which makes a client + # join the target IRC channel. + # NBB: The bridge bot IRC client will still join the target IRC network so + # it can service bridge-specific queries from the IRC-side e.g. so + # real IRC clients have a way to change their Matrix display name. + # See https://github.com/matrix-org/matrix-appservice-irc/issues/55 + enabled: true + # The nickname to give the AS bot. + nick: "openSUSEBot" + # The password to give to NickServ or IRC Server for this nick. Optional. + password: "{{ pillar['profile']['matrix']['appservices']['irc']['bot_password'] }}" + # + # Join channels even if there are no Matrix users on the other side of + # the bridge. Set to false to prevent the bot from joining channels which have no + # real matrix users in them, even if there is a mapping for the channel. + # Default: true + joinChannelsIfNoUsers: true + + # Configuration for PMs / private 1:1 communications between users. + privateMessages: + # Enable the ability for PMs to be sent to/from IRC/Matrix. + # Default: true. + enabled: true + # Prevent Matrix users from sending PMs to the following IRC nicks. + # Optional. Default: []. + # exclude: ["Alice", "Bob"] # NOT YET IMPLEMENTED + + # Should created Matrix PM rooms be federated? If false, only users on the + # HS attached to this AS will be able to interact with this room. + # Optional. Default: true. + federate: true + + # Configuration for mappings not explicitly listed in the 'mappings' + # section. + dynamicChannels: + # Enable the ability for Matrix users to join *any* channel on this IRC + # network. + # Default: false. + enabled: false + # Should the AS create a room alias for the new Matrix room? The form of + # the alias can be modified via 'aliasTemplate'. Default: true. + createAlias: true + # Should the AS publish the new Matrix room to the public room list so + # anyone can see it? Default: true. + published: false + # What should the join_rule be for the new Matrix room? If 'public', + # anyone can join the room. If 'invite', only users with an invite can + # join the room. Note that if an IRC channel has +k or +i set on it, + # join_rules will be set to 'invite' until these modes are removed. + # Default: "public". + joinRule: public + # This will set the m.room.related_groups state event in newly created rooms + # with the given groupId. This means flares will show up on IRC users in those rooms. + # This should be set to the same thing as namespaces.users.group_id in irc_registration. + # This does not alter existing rooms. + # Leaving this option empty will not set the event. + groupId: +freenode:opensuse.org + # Should created Matrix rooms be federated? If false, only users on the + # HS attached to this AS will be able to interact with this room. + # Default: true. + federate: true + # Force this room version when creating IRC channels. Beware if the homeserver doesn't + # support the room version then the request will fail. By default, no version is requested. + # roomVersion: "1" + # The room alias template to apply when creating new aliases. This only + # applies if createAlias is 'true'. The following variables are exposed: + # $SERVER => The IRC server address (e.g. "irc.example.com") + # $CHANNEL => The IRC channel (e.g. "#python") + # This MUST have $CHANNEL somewhere in it. + # Default: '#irc_$SERVER_$CHANNEL' + aliasTemplate: "#freenode_$CHANNEL" + # A list of user IDs which the AS bot will send invites to in response + # to a !join. Only applies if joinRule is 'invite'. Default: [] + # whitelist: + # - "@foo:example.com" + # - "@bar:example.com" + # + # Prevent the given list of channels from being mapped under any + # circumstances. + # exclude: ["#foo", "#bar"] + + # excludedUsers: + # - regex: "@.*:evilcorp.com" + # kickReason: "We don't like Evilcorp" + + # Configuration for controlling how Matrix and IRC membership lists are + # synced. + membershipLists: + # Enable the syncing of membership lists between IRC and Matrix. This + # can have a significant effect on performance on startup as the lists are + # synced. This must be enabled for anything else in this section to take + # effect. Default: false. + enabled: true + + # Syncing membership lists at startup can result in hundreds of members to + # process all at once. This timer drip feeds membership entries at the + # specified rate. Default: 10000. (10s) + floodDelayMs: 10000 + + global: + ircToMatrix: + # Get a snapshot of all real IRC users on a channel (via NAMES) and + # join their virtual matrix clients to the room. + initial: true + # Make virtual matrix clients join and leave rooms as their real IRC + # counterparts join/part channels. Default: false. + incremental: true + + matrixToIrc: + # Get a snapshot of all real Matrix users in the room and join all of + # them to the mapped IRC channel on startup. Default: false. + initial: true + # Make virtual IRC clients join and leave channels as their real Matrix + # counterparts join/leave rooms. Make sure your 'maxClients' value is + # high enough! Default: false. + incremental: true + + # Apply specific rules to Matrix rooms. Only matrix-to-IRC takes effect. + # rooms: + # - room: "!fuasirouddJoxtwfge:localhost" + # matrixToIrc: + # initial: false + # incremental: false + + # Apply specific rules to IRC channels. Only IRC-to-matrix takes effect. + # channels: + # - channel: "#foo" + # ircToMatrix: + # initial: false + # incremental: false + + # mappings: + # 1:many mappings from IRC channels to room IDs on this IRC server. + # The matrix room must already exist. Your matrix client should expose + # the room ID in a "settings" page for the room. + # "#thepub": + # roomIds: ["!kieouiJuedJoxtVdaG:localhost"] + # Channel key/password to use. Optional. If provided, matrix users do + # not need to know the channel key in order to join the channel. + # key: "secret" + + # Configuration for virtual matrix users. The following variables are + # exposed: + # $NICK => The IRC nick + # $SERVER => The IRC server address (e.g. "irc.example.com") + matrixClients: + # The user ID template to use when creating virtual matrix users. This + # MUST have $NICK somewhere in it. + # Optional. Default: "@$SERVER_$NICK". + # Example: "@irc.example.com_Alice:example.com" + userTemplate: "@freenode_$NICK" + # The display name to use for created matrix clients. This should have + # $NICK somewhere in it if it is specified. Can also use $SERVER to + # insert the IRC domain. + # Optional. Default: "$NICK (IRC)". Example: "Alice (IRC)" + displayName: "$NICK [Freenode]" + # Number of tries a client can attempt to join a room before the request + # is discarded. You can also use -1 to never retry or 0 to never give up. + # Optional. Default: -1 + joinAttempts: -1 + + # Configuration for virtual IRC users. The following variables are exposed: + # $LOCALPART => The user ID localpart ("alice" in @alice:localhost) + # $USERID => The user ID + # $DISPLAY => The display name of this user, with excluded characters + # (e.g. space) removed. If the user has no display name, this + # falls back to $LOCALPART. + ircClients: + # The template to apply to every IRC client nick. This MUST have either + # $DISPLAY or $USERID or $LOCALPART somewhere in it. + # Optional. Default: "M-$DISPLAY". Example: "M-Alice". + nickTemplate: "$DISPLAY[m]" + # True to allow virtual IRC clients to change their nick on this server + # by issuing !nick commands to the IRC AS bot. + # This is completely freeform: it will NOT follow the nickTemplate. + allowNickChanges: true + # The max number of IRC clients that will connect. If the limit is + # reached, the client that spoke the longest time ago will be + # disconnected and replaced. + # Optional. Default: 30. + maxClients: 30 + # IPv6 configuration. + ipv6: + # Optional. Set to true to force IPv6 for outgoing connections. + only: false + # Optional. The IPv6 prefix to use for generating unique addresses for each + # connected user. If not specified, all users will connect from the same + # (default) address. This may require additional OS-specific work to allow + # for the node process to bind to multiple different source addresses + # Linux kernels 4.3+ support sysctl net.ipv6.ip_nonlocal_bind=1 + # Older kernels will need IP_FREEBIND, which requires an LD_PRELOAD with the library + # https://github.com/matrix-org/freebindfree as Node does not expose setsockopt. + # prefix: "2001:0db8:85a3::" # modify appropriately + # + # The maximum amount of time in seconds that the client can exist + # without sending another message before being disconnected. Use 0 to + # not apply an idle timeout. This value is ignored if this IRC server is + # mirroring matrix membership lists to IRC. Default: 172800 (48 hours) + idleTimeout: 10800 + # The number of millseconds to wait between consecutive reconnections if a + # client gets disconnected. Setting to 0 will cause the scheduling to be + # disabled, i.e. it will be scheduled immediately (with jitter. + # Otherwise, the scheduling interval will be used such that one client + # reconnect for this server will be handled every reconnectIntervalMs ms using + # a FIFO queue. + # Default: 5000 (5 seconds) + reconnectIntervalMs: 5000 + # The number of concurrent reconnects if a user has been disconnected unexpectedly + # (e.g. a netsplit). You should set this to a reasonably high number so that + # bridges are not waiting an eternity to reconnect all its clients if + # we see a massive number of disconnect. This is unrelated to the reconnectIntervalMs + # setting above which is for connecting on restart of the bridge. Set to 0 to + # immediately try to reconnect all users. + # Default: 50 + concurrentReconnectLimit: 50 + # The number of lines to allow being sent by the IRC client that has received + # a large block of text to send from matrix. If the number of lines that would + # be sent is > lineLimit, the text will instead be uploaded to matrix and the + # resulting URI is treated as a file. As such, a link will be sent to the IRC + # side instead of potentially spamming IRC and getting the IRC client kicked. + # Default: 3. + lineLimit: 3 + # A list of user modes to set on every IRC client. For example, "RiG" would set + # +R, +i and +G on every IRC connection when they have successfully connected. + # User modes vary wildly depending on the IRC network you're connecting to, + # so check before setting this value. Some modes may not work as intended + # through the bridge e.g. caller ID as there is no way to /ACCEPT. + # Default: "" (no user modes) + # userModes: "R" + # Set information about the bridged channel in the room state, so that client's may + # present relevant UI to the user. MSC2346 + bridgeInfoState: + enabled: true + initial: true + # Configuration for an ident server. If you are running a public bridge it is + # advised you setup an ident server so IRC mods can ban specific matrix users + # rather than the application service itself. + ident: + # True to listen for Ident requests and respond with the + # matrix user's user_id (converted to ASCII, respecting RFC 1413). + # Default: false. + enabled: false + # The port to listen on for incoming ident requests. + # Ports below 1024 require root to listen on, and you may not want this to + # run as root. Instead, you can get something like an Apache to yank up + # incoming requests to 113 to a high numbered port. Set the port to listen + # on instead of 113 here. + # Default: 113. + port: 1113 + # The address to listen on for incoming ident requests. + # Default: 0.0.0.0 + address: "::" + + # Configuration for logging. Optional. Default: console debug level logging + # only. + logging: + # Level to log on console/logfile. One of error|warn|info|debug + level: "debug" + # The file location to log to. This is relative to the project directory. + logfile: "debug.log" + # The file location to log errors to. This is relative to the project + # directory. + errfile: "errors.log" + # Whether to log to the console or not. + toConsole: true + # The max number of files to keep. Files will be overwritten eventually due + # to rotations. + maxFiles: 5 + + # Metrics will then be available via GET /metrics on the bridge listening port (-p). + metrics: + # Whether to actually enable the metric endpoint. Default: false + enabled: true + # When collecting remote user active times, which "buckets" should be used. Defaults are given below. + # The bucket name is formed of a duration and a period. (h=hours,d=days,w=weeks). + remoteUserAgeBuckets: + - "1h" + - "1d" + - "1w" + + # Configuration options for the debug HTTP API. To access this API, you must + # append ?access_token=$APPSERVICE_TOKEN (from the registration file) to the requests. + # + # The debug API exposes the following endpoints: + # + # GET /irc/$domain/user/$user_id => Return internal state for the IRC client for this user ID. + # + # POST /irc/$domain/user/$user_id => Issue a raw IRC command down this connection. + # Format: new line delimited commands as per IRC protocol. + # + debugApi: + # True to enable the HTTP API endpoint. Default: false. + enabled: false + # The port to host the HTTP API. + port: 11100 + + # Configuration for the provisioning API. + # + # GET /_matrix/provision/link + # GET /_matrix/provision/unlink + # GET /_matrix/provision/listlinks + # + # provisioning: + # True to enable the provisioning HTTP endpoint. Default: false. + # enabled: false + # The number of seconds to wait before giving up on getting a response from + # an IRC channel operator. If the channel operator does not respond within the + # allotted time period, the provisioning request will fail. + # Default: 300 seconds (5 mins) + # requestTimeoutSeconds: 300 + # A file defining the provisioning rules for rooms. Format is documented + # in rules.sample.yaml. Leave undefined to not specify any rules. + # ruleFile: "./provisioning.rules.yaml" + # Watch the file for changes, and apply the rules. Default: false + # enableReload: true + + # WARNING: The bridge needs to send plaintext passwords to the IRC server, it cannot + # send a password hash. As a result, passwords (NOT hashes) are stored encrypted in + # the database. + # + # To generate a .pem file: + # $ openssl genpkey -out passkey.pem -outform PEM -algorithm RSA -pkeyopt rsa_keygen_bits:2048 + # + # The path to the RSA PEM-formatted private key to use when encrypting IRC passwords + # for storage in the database. Passwords are stored by using the admin room command + # `!storepass server.name passw0rd. When a connection is made to IRC on behalf of + # the Matrix user, this password will be sent as the server password (PASS command). + passwordEncryptionKeyPath: "/etc/matrix-synapse/irc_password.pem" + + # Config for Matrix -> IRC bridging + matrixHandler: + # Cache this many matrix events in memory to be used for m.relates_to messages (usually replies). + eventCacheSize: 4096 + + ircHandler: + # How many /leave requests can be ongoing at a time. + # This is used to stem the flow of requests in case of a mass quit/leave, which might + # slow down the homeserver. + leaveConcurrency: 10 + # Should we attempt to match an IRC side mention (nickaname match) + # with the nickname's owner's matrixId, if we are bridging them? + # "on" - Defaults to enabled, users can choose to disable. + # "off" - Defaults to disabled, users can choose to enable. + # "force-off" - Disabled, cannot be enabled. + mapIrcMentionsToMatrix: "on" # This can be "on", "off", "force-off". +# Options here are generally only applicable to large-scale bridges and may have +# consequences greater than other options in this configuration file. +advanced: + # The maximum number of HTTP(S) sockets to maintain. Usually this is unlimited + # however for large bridges it is important to rate limit the bridge to avoid + # accidentally overloading the homeserver. Defaults to 1000, which should be + # enough for the vast majority of use cases. + maxHttpSockets: 1000 + # Max size of an appservice transaction payload, in bytes. Defaults to 10Mb + maxTxnSize: 10000000 + +# Capture information to a sentry.io instance +# sentry: + # enabled: false + # dsn: "https://@sentry.io/" + # Optional. A tag to specify the production environment. Not set by default + # environment: "" + # Optional. A tag to specify the server name. Not set by default + # serverName: "" + +# Use an external database to store bridge state. +database: + # database engine (must be 'postgres' or 'nedb'). Default: nedb + engine: "postgres" + # Either a PostgreSQL connection string, or a path to the NeDB storage directory. + # For postgres, it must start with postgres:// + # For NeDB, it must start with nedb://. The path is relative to the project directory. + connectionString: "postgresql://{{ pillar['profile']['matrix']['database_user'] }}:{{ pillar['postgres']['users']['matrix']['password'] }}@{{ pillar['profile']['matrix']['database_host'] }}/irc_bridge" diff --git a/salt/profile/matrix/files/config-webhook.yaml b/salt/profile/matrix/files/config-webhook.yaml new file mode 100644 index 0000000..7ee51f8 --- /dev/null +++ b/salt/profile/matrix/files/config-webhook.yaml @@ -0,0 +1,37 @@ +# Configuration specific to the application service. All fields (unless otherwise marked) are required. +homeserver: + # The domain for the client-server API calls. + url: "https://matrix.opensuse.org:8448" + + # The domain part for user IDs on this home server. Usually, but not always, this is the same as the + # home server's URL. + domain: "opensuse.org" + +# Configuration specific to the bridge. All fields (unless otherwise marked) are required. +webhookBot: + # The localpart to use for the bot. May require re-registering the application service. + localpart: "_webhook" + + # Appearance options for the Matrix bot + appearance: + displayName: "Webhooks" + avatarUrl: "http://i.imgur.com/IDOBtEJ.png" # webhook icon + +# Provisioning API options +provisioning: + # Your secret for the API. Required for all provisioning API requests. + secret: '{{ pillar['profile']['matrix']['appservices']['webhook']['secret'] }}' + +# Configuration related to the web portion of the bridge. Handles the inbound webhooks +web: + hookUrlBase: 'http://localhost:9002/' + +logging: + file: logs/webhook.log + console: true + consoleLevel: info + fileLevel: verbose + writeFiles: true + rotate: + size: 52428800 # bytes, default is 50mb + count: 5 diff --git a/salt/profile/matrix/files/discord.service b/salt/profile/matrix/files/discord.service deleted file mode 100644 index 3a4694f..0000000 --- a/salt/profile/matrix/files/discord.service +++ /dev/null @@ -1,16 +0,0 @@ -[Unit] -Description=Matrix Appservice Discord - -[Service] -Type=simple -Restart=on-failure -RestartSec=3 - -User=synapse -Group=synapse -WorkingDirectory=/var/lib/matrix-synapse/discord/ -Environment="NODE_VERSION=10" -ExecStart=/usr/bin/npm start - -[Install] -WantedBy=multi-user.target diff --git a/salt/profile/matrix/init.sls b/salt/profile/matrix/init.sls index b749fbc..5b22e8f 100644 --- a/salt/profile/matrix/init.sls +++ b/salt/profile/matrix/init.sls @@ -11,18 +11,3 @@ synapse_restart: - m_name: synapse - require: - service: synapse_service - -discord_service: - service.running: - - name: discord - - enable: True - - require: - - service: synapse_service - -discord_restart: - module.wait: - - name: service.restart - - m_name: discord - - require: - - service: synapse_service - - service: discord_service