You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
1.4 KiB
JavaScript

"use strict";
const express = require("express");
const expressPromiseRouter = require("express-promise-router");
const bodyParser = require("body-parser");
const cors = require("cors");
const url = require("url");
const debugMiddleware = require("./src/debug-middleware");
const accessTokenMiddleware = require("./src/middlewares/access-token");
const clientApiRouter = require("./src/routers/client-api");
const configuration = require("./config.json");
let baseUrl = url.format({
protocol: (configuration.tls) ? "https" : "http",
host: configuration.hostname
});
let state = {
configuration
};
let app = express();
let router = expressPromiseRouter();
router.use(bodyParser.json());
router.use(accessTokenMiddleware);
router.use(debugMiddleware());
router.options("*", cors({
methods: ["GET", "POST", "PUT", "DELETE", "OPTIONS"],
allowedHeaders: ["Origin", "X-Requested-With", "Content-Type", "Accept", "Authorization"],
optionsSuccessStatus: 200
}));
router.use("/_matrix/client", clientApiRouter(state));
router.get("/", (req, res) => {
res.send("Hello world!");
});
router.get("/.well-known/matrix/client", (req, res) => {
let response = {
"m.homeserver": {
base_url: baseUrl
}
};
if (configuration.identity_server != null) {
response["m.identity_server"] = {
base_url: configuration.identity_server
};
}
res.json(response);
});
app.use(router);
app.listen(3000, () => {
console.log("listening on 3000");
});