75 lines
1.8 KiB
JavaScript
75 lines
1.8 KiB
JavaScript
const express = require("express");
|
|
const app = express();
|
|
const port = process.env.EXPRESS_PORT || 3000;
|
|
const bodyParser = require("body-parser");
|
|
const pull = require("pull-stream");
|
|
const Client = require("ssb-client");
|
|
const ssbKeys = require("ssb-keys");
|
|
const ssbConfig = require("./ssb-config");
|
|
|
|
let ssbServer;
|
|
let profile;
|
|
|
|
let homeFolder =
|
|
process.env.HOME || process.env.HOMEPATH || process.env.USERPROFILE;
|
|
let ssbSecret = ssbKeys.loadOrCreateSync(
|
|
`${homeFolder}/.${process.env.CONFIG_FOLDER || "ssb"}/secret`
|
|
);
|
|
Client(ssbSecret, ssbConfig, (err, server) => {
|
|
if (err) throw err;
|
|
ssbServer = server;
|
|
ssbServer.whoami((err, keys) => {
|
|
if (err) throw err;
|
|
profile = keys;
|
|
});
|
|
console.log(ssbServer);
|
|
});
|
|
|
|
app.use(bodyParser.json());
|
|
app.use(bodyParser.urlencoded({ extended: true }));
|
|
app.set("view engine", "ejs");
|
|
app.use(express.static("public"));
|
|
|
|
app.get("/", (_req, res) => {
|
|
pull(
|
|
ssbServer.createFeedStream(),
|
|
pull.collect((_err, msgs) => {
|
|
const posts = msgs.map((x) => x.value.content);
|
|
|
|
res.render("index", { posts, profile });
|
|
})
|
|
);
|
|
});
|
|
|
|
app.post("/publish", (req, res) => {
|
|
ssbServer.publish({ type: "post", text: req.body.message }, (err, msg) => {
|
|
res.redirect("/");
|
|
});
|
|
});
|
|
|
|
app.get("/new_invite", (_req, res) => {
|
|
ssbServer.invite.create({ uses: 10 }, (err, invite) => {
|
|
if (err) throw err;
|
|
console.log("invite", invite);
|
|
|
|
res.render("new_invite", { invite });
|
|
});
|
|
});
|
|
|
|
app.post("/add_invite", (req, res) => {
|
|
const inviteCode = req.body.invite_code;
|
|
|
|
ssbServer.invite.accept(inviteCode, (err, result) => {
|
|
if (err) throw err;
|
|
console.log("result", result);
|
|
|
|
res.redirect("/");
|
|
});
|
|
});
|
|
|
|
const expressServer = app.listen(port, () =>
|
|
console.log(`Example app listening at http://localhost:${port}`)
|
|
);
|
|
|
|
module.exports = expressServer;
|