From 5a06b988fa2eeacfa967ef3c6b80b92c2a5e1d60 Mon Sep 17 00:00:00 2001 From: Daniel Aloni Date: Sun, 18 Feb 2024 17:14:25 +0200 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Final=20provisioner=20rout?= =?UTF-8?q?e.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 1 - .gitignore | 1 + config.sample.yml | 2 +- helm/hookshot/values.yaml | 2 +- src/Bridge.ts | 6 +++--- src/config/Defaults.ts | 2 +- src/mqtt/Router.ts | 6 ++++-- src/mqtt/mqttConnectionManager.ts | 7 ++++--- src/provisioning/provisioner.ts | 20 ++++++++++---------- 9 files changed, 25 insertions(+), 22 deletions(-) delete mode 100644 .env diff --git a/.env b/.env deleted file mode 100644 index bc434c60d..000000000 --- a/.env +++ /dev/null @@ -1 +0,0 @@ -DATABASE_URL: postgres://mqttas:itsasecret@localhost/mqttas?sslmode=disable \ No newline at end of file diff --git a/.gitignore b/.gitignore index 32da265ad..16b135d2b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.env config.yml lib/ node_modules/ diff --git a/config.sample.yml b/config.sample.yml index 77fdda11b..a9d87ba0e 100644 --- a/config.sample.yml +++ b/config.sample.yml @@ -131,7 +131,7 @@ listeners: #bot: # # (Optional) Define profile information for the bot user -# displayname: Hookshot Bot +# displayname: Bridge Bot # avatar: mxc://half-shot.uk/2876e89ccade4cb615e210c458e2a7a6883fe17d #serviceBots: diff --git a/helm/hookshot/values.yaml b/helm/hookshot/values.yaml index 3e9e38ff4..4a86ce6c0 100644 --- a/helm/hookshot/values.yaml +++ b/helm/hookshot/values.yaml @@ -217,7 +217,7 @@ hookshot: # bot: # (Optional) Define profile information for the bot user # - # displayname: Hookshot Bot + # displayname: Bridge Bot # avatar: mxc://half-shot.uk/2876e89ccade4cb615e210c458e2a7a6883fe17d # serviceBots: # (Optional) Define additional bot users for specific services diff --git a/src/Bridge.ts b/src/Bridge.ts index 726cc1210..b0b82b2a2 100644 --- a/src/Bridge.ts +++ b/src/Bridge.ts @@ -141,14 +141,14 @@ export class Bridge { const routers = []; if (this.config.jira) { routers.push({ - route: "/bridge/jira", + route: "/provisioner/jira", router: new JiraProvisionerRouter(this.config.jira, this.tokenStore).getRouter(), }); this.connectionManager.registerProvisioningConnection(JiraProjectConnection); } if (this.config.github && this.github) { routers.push({ - route: "/bridge/github", + route: "/provisioner/github", router: new GitHubProvisionerRouter(this.config.github, this.tokenStore, this.github).getRouter(), }); this.connectionManager.registerProvisioningConnection(GitHubRepoConnection); @@ -162,7 +162,7 @@ export class Bridge { if (this.config.mqtt?.enabled) { // Register the internal backend route for get all live connections routers.push({ - route: "/bridge/mqtt", + route: "/provisioner/mqtt", router: new MqttProvisionerRouter(this.config.provisioning).getRouter(), }); this.connectionManager.registerProvisioningConnection(MqttConnection); diff --git a/src/config/Defaults.ts b/src/config/Defaults.ts index 752a05eec..a5eb8b4fd 100644 --- a/src/config/Defaults.ts +++ b/src/config/Defaults.ts @@ -46,7 +46,7 @@ export const DefaultConfigRoot: BridgeConfigRoot = { }, }, bot: { - displayname: "Hookshot Bot", + displayname: "Bridge Bot", avatar: "mxc://half-shot.uk/2876e89ccade4cb615e210c458e2a7a6883fe17d" }, serviceBots: [ diff --git a/src/mqtt/Router.ts b/src/mqtt/Router.ts index 8eeb5d623..e48fc70bf 100644 --- a/src/mqtt/Router.ts +++ b/src/mqtt/Router.ts @@ -1,8 +1,9 @@ -import { BridgeConfigMqtt, BridgeConfigProvisioning } from "../config/Config"; +import { BridgeConfigProvisioning } from "../config/Config"; import { Router, Request, Response, NextFunction } from "express"; import { Logger } from "matrix-appservice-bridge"; import { ApiError, ErrCode } from "../api"; import { selectAllConnections } from "../db/generated/queries_sql"; +import { executeSchema } from "./mqttConnectionManager"; import { Pool } from "pg"; const log = new Logger("MqttRouter"); @@ -15,7 +16,6 @@ export interface AdaptedMqttLiveConnection { spaces_ids: string[]; } - export class MqttProvisionerRouter { private dbCli: Pool; @@ -23,6 +23,8 @@ export class MqttProvisionerRouter { private readonly provConfig: BridgeConfigProvisioning) { this.provConfig = provConfig; this.dbCli = new Pool({ connectionString: process.env.DATABASE_URL }); + log.info('mqtt_router: initialized database connection'); + executeSchema(this.dbCli); } public getRouter() { diff --git a/src/mqtt/mqttConnectionManager.ts b/src/mqtt/mqttConnectionManager.ts index 54f855bb6..25f57b8bd 100644 --- a/src/mqtt/mqttConnectionManager.ts +++ b/src/mqtt/mqttConnectionManager.ts @@ -1,7 +1,7 @@ import { Logger } from "matrix-appservice-bridge"; import { BridgeConfigMqtt } from "../config/Config"; import { Pool } from "pg"; -import { SelectSpaceConnectionsArgs, selectSpaceConnections, selectConnection, insertConnection, updateConnectionAssociatedSpaces, deleteSpaceFromConnectionAndPrune, selectAllConnections } from "../db/generated/queries_sql"; +import { selectConnection, insertConnection, updateConnectionAssociatedSpaces, deleteSpaceFromConnectionAndPrune } from "../db/generated/queries_sql"; import axios from "axios"; import "dotenv/config"; import { MqttConnectionState } from "../Connections/MqttConnection"; @@ -9,10 +9,10 @@ import * as fs from 'fs'; const log = new Logger("MqttConnectionsManager"); -function executeSchema(dbCli: Pool) { +export async function executeSchema(dbCli: Pool) { try { const schemaSql = fs.readFileSync('./src/db/schema.sql', 'utf8'); - dbCli.query(schemaSql); + await dbCli.query(schemaSql); log.info('MQTT table created successfully'); } catch (err) { log.info('Error creating MQTT table: ', err); @@ -24,6 +24,7 @@ export class MqttConnectionsManager { constructor() { this.dbCli = new Pool({ connectionString: process.env.DATABASE_URL }); + log.info('MqttConnectionsManager: initialized database connection'); executeSchema(this.dbCli); } diff --git a/src/provisioning/provisioner.ts b/src/provisioning/provisioner.ts index 072fa4825..7b9be097e 100644 --- a/src/provisioning/provisioner.ts +++ b/src/provisioning/provisioner.ts @@ -24,7 +24,7 @@ export class Provisioner { private readonly botUsersManager: BotUsersManager, private readonly as: Appservice, additionalRoutes: {route: string, router: Router}[]) { - this.expressRouter.use("/bridge", (req, _res, next) => { + this.expressRouter.use("/provisioner", (req, _res, next) => { Metrics.provisioningHttpRequest.inc({path: req.path, method: req.method}); next(); }); @@ -42,44 +42,44 @@ export class Provisioner { maxAge: 86400, // 24 hours }; this.expressRouter.use(cors(corsOptions)); - this.expressRouter.get("/bridge/health", this.getHealth); - this.expressRouter.use("/bridge", this.checkAuth.bind(this)); + this.expressRouter.get("/provisioner/health", this.getHealth); + this.expressRouter.use("/provisioner", this.checkAuth.bind(this)); this.expressRouter.use(express.json()); this.expressRouter.get( - "/bridge/connectiontypes", + "/provisioner/connectiontypes", this.getConnectionTypes.bind(this), ); - this.expressRouter.use("/bridge", this.checkUserId.bind(this)); + this.expressRouter.use("/provisioner", this.checkUserId.bind(this)); additionalRoutes.forEach(route => { this.expressRouter.use(route.route, route.router); }); // Room Routes this.expressRouter.get<{roomId: string}, unknown, unknown, {userId: string}>( - "/bridge/:roomId/connections", + "/provisioner/:roomId/connections", this.checkRoomId.bind(this), (...args) => this.checkUserPermission("read", ...args), this.getConnections.bind(this), ); this.expressRouter.get<{roomId: string, connectionId: string}, unknown, unknown, {userId: string}>( - "/bridge/:roomId/connections/:connectionId", + "/provisioner/:roomId/connections/:connectionId", this.checkRoomId.bind(this), (...args) => this.checkUserPermission("read", ...args), this.getConnection.bind(this), ); this.expressRouter.put<{roomId: string, type: string}, unknown, Record, {userId: string}>( - "/bridge/:roomId/connections/:type", + "/provisioner/:roomId/connections/:type", this.checkRoomId.bind(this), (...args) => this.checkUserPermission("write", ...args), this.putConnection.bind(this), ); this.expressRouter.patch<{roomId: string, connectionId: string}, unknown, Record, {userId: string}>( - "/bridge/:roomId/connections/:connectionId", + "/provisioner/:roomId/connections/:connectionId", this.checkRoomId.bind(this), (...args) => this.checkUserPermission("write", ...args), this.patchConnection.bind(this), ); this.expressRouter.delete<{roomId: string, connectionId: string}, unknown, unknown, {userId: string}>( - "/bridge/:roomId/connections/:connectionId", + "/provisioner/:roomId/connections/:connectionId", this.checkRoomId.bind(this), (...args) => this.checkUserPermission("write", ...args), this.deleteConnection.bind(this),