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
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");
|
|
}); |