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.
40 lines
1004 B
JavaScript
40 lines
1004 B
JavaScript
const user = ":user([^@]+)";
|
|
const host = ":host([^@]+)";
|
|
const type = ":type((dsa|rsa|ecdsa|ed25519))";
|
|
|
|
let express = require("express");
|
|
let db = require("../libs/Database").instance();
|
|
let router = express.Router();
|
|
let userRouter = express.Router();
|
|
|
|
function toList(a, b) {
|
|
return a + "\n" + b;
|
|
}
|
|
|
|
router.use(["/user", "/users", "/userKeys"], userRouter);
|
|
|
|
function userReq(req, res) {
|
|
let p = req.params;
|
|
let q = db.q.select("publicKeyComment");
|
|
if (p.user) q.filter("user", p.user);
|
|
if (p.host) q.filter("host", p.host);
|
|
if (p.type) q.filter("type", p.type);
|
|
q.list((e, d) => {
|
|
if (e) return res.status(500).send("ERROR");
|
|
res.type("text/plain");
|
|
res.send(d.reduce(toList));
|
|
})
|
|
}
|
|
|
|
[
|
|
"/",
|
|
"/" + type,
|
|
"/@" + host,
|
|
"/" + user,
|
|
"/" + user + "@" + host,
|
|
"/@" + host + "/" + type,
|
|
"/" + user + "/" + type,
|
|
"/" + user + "@" + host + "/" + type,
|
|
].forEach(e => userRouter.get(e, userReq));
|
|
|
|
module.exports = router; |