Add invites and user 2
This commit is contained in:
parent
eddd22fadb
commit
962c00e200
|
@ -0,0 +1 @@
|
|||
*.ejs
|
|
@ -10,7 +10,7 @@ const createWindow = () => {
|
|||
},
|
||||
});
|
||||
|
||||
win.loadURL("http://localhost:3000");
|
||||
win.loadURL(`http://localhost:${process.env.EXPRESS_PORT || 3000}`);
|
||||
};
|
||||
|
||||
app.whenReady().then(createWindow);
|
||||
|
|
|
@ -1,19 +1,28 @@
|
|||
const express = require("express");
|
||||
const app = express();
|
||||
const port = 3000;
|
||||
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 ssbKeys;
|
||||
Client((err, server) => {
|
||||
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;
|
||||
ssbKeys = keys;
|
||||
profile = keys;
|
||||
});
|
||||
console.log(ssbServer);
|
||||
});
|
||||
|
||||
app.use(bodyParser.json());
|
||||
|
@ -24,10 +33,10 @@ app.use(express.static("public"));
|
|||
app.get("/", (_req, res) => {
|
||||
pull(
|
||||
ssbServer.createFeedStream(),
|
||||
pull.collect((err, msgs) => {
|
||||
pull.collect((_err, msgs) => {
|
||||
const posts = msgs.map((x) => x.value.content);
|
||||
|
||||
res.render("index", { posts, profile: ssbKeys });
|
||||
res.render("index", { posts, profile });
|
||||
})
|
||||
);
|
||||
});
|
||||
|
@ -38,6 +47,26 @@ app.post("/publish", (req, res) => {
|
|||
});
|
||||
});
|
||||
|
||||
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}`)
|
||||
);
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
const configInject = require("ssb-config/inject");
|
||||
|
||||
module.exports = configInject(process.env.CONFIG_FOLDER || "ssb", {
|
||||
connections: {
|
||||
incoming: {
|
||||
net: [
|
||||
{
|
||||
scope: "public",
|
||||
host: "0.0.0.0",
|
||||
external: ["lvh.me"],
|
||||
transform: "shs",
|
||||
port: process.env.SSB_PORT || 8008,
|
||||
},
|
||||
],
|
||||
},
|
||||
outgoing: {
|
||||
net: [{ transform: "shs" }],
|
||||
},
|
||||
},
|
||||
});
|
|
@ -1,13 +1,17 @@
|
|||
const Server = require("ssb-server");
|
||||
const config = require("ssb-config");
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
const config = require("./ssb-config");
|
||||
|
||||
// add plugins
|
||||
Server.use(require("ssb-master"))
|
||||
.use(require("ssb-gossip"))
|
||||
.use(require("ssb-replicate"))
|
||||
.use(require("ssb-backlinks"));
|
||||
.use(require("ssb-backlinks"))
|
||||
.use(require("ssb-about"))
|
||||
.use(require("ssb-contacts"))
|
||||
.use(require("ssb-invite"))
|
||||
.use(require("ssb-friends"));
|
||||
|
||||
const server = Server(config);
|
||||
console.log("SSB server started at", config.port);
|
||||
|
|
|
@ -74,6 +74,11 @@
|
|||
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
|
||||
"integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
|
||||
},
|
||||
"async-single": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/async-single/-/async-single-1.0.5.tgz",
|
||||
"integrity": "sha1-El3QneldPqMKN4rb7QIQkhebA8k="
|
||||
},
|
||||
"atomic-file": {
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/atomic-file/-/atomic-file-1.1.5.tgz",
|
||||
|
@ -498,6 +503,15 @@
|
|||
"integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
|
||||
"dev": true
|
||||
},
|
||||
"dynamic-dijkstra": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/dynamic-dijkstra/-/dynamic-dijkstra-1.0.2.tgz",
|
||||
"integrity": "sha512-1N+eCCrepIeK1+qtWrMEO1CV68Hn+TLbiR9c70VB3xnut3DmUxT+3T7sRHhb0mpK2F/74IfP+loQDriU2W9lkA==",
|
||||
"requires": {
|
||||
"heap": "^0.2.6",
|
||||
"rng": "^0.2.2"
|
||||
}
|
||||
},
|
||||
"ed2curve": {
|
||||
"version": "0.1.4",
|
||||
"resolved": "https://registry.npmjs.org/ed2curve/-/ed2curve-0.1.4.tgz",
|
||||
|
@ -769,6 +783,21 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"flumecodec": {
|
||||
"version": "0.0.0",
|
||||
"resolved": "https://registry.npmjs.org/flumecodec/-/flumecodec-0.0.0.tgz",
|
||||
"integrity": "sha1-Ns4Gq+Lg4BxE3WnyoWUwWiMgZJs=",
|
||||
"requires": {
|
||||
"level-codec": "^6.2.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"level-codec": {
|
||||
"version": "6.2.0",
|
||||
"resolved": "https://registry.npmjs.org/level-codec/-/level-codec-6.2.0.tgz",
|
||||
"integrity": "sha1-pLUkS7akwvcj1oodZOmAxTYn2dQ="
|
||||
}
|
||||
}
|
||||
},
|
||||
"flumeview-level": {
|
||||
"version": "3.0.14",
|
||||
"resolved": "https://registry.npmjs.org/flumeview-level/-/flumeview-level-3.0.14.tgz",
|
||||
|
@ -800,6 +829,46 @@
|
|||
"pull-stream": "^3.4.0"
|
||||
}
|
||||
},
|
||||
"flumeview-reduce": {
|
||||
"version": "1.3.16",
|
||||
"resolved": "https://registry.npmjs.org/flumeview-reduce/-/flumeview-reduce-1.3.16.tgz",
|
||||
"integrity": "sha512-4ATidV3QARML74eNdi+HPzGa4JtSZfnQpW6QQArlKZ6NRkjax3EFLt42hK2VJyADxnVnsVInt/ItqJL/4G1/5g==",
|
||||
"requires": {
|
||||
"async-single": "^1.0.5",
|
||||
"atomic-file": "^2.0.0",
|
||||
"deep-equal": "^1.0.1",
|
||||
"flumecodec": "0.0.0",
|
||||
"obv": "0.0.1",
|
||||
"pull-notify": "^0.1.1",
|
||||
"pull-stream": "^3.5.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"atomic-file": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/atomic-file/-/atomic-file-2.0.1.tgz",
|
||||
"integrity": "sha512-9JCWojeLDF8UhEv2UJlLlPGsLEs+EBnfB+kOhsvmFI2QilVrnIsAwr7YnF8lLEVuxB+HxFhvGK+ax0Y8Eh/BKA==",
|
||||
"requires": {
|
||||
"flumecodec": "0.0.1",
|
||||
"idb-kv-store": "^4.4.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"flumecodec": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/flumecodec/-/flumecodec-0.0.1.tgz",
|
||||
"integrity": "sha1-rgSacUOGu4PjQmV6gpJLcDZKkNY=",
|
||||
"requires": {
|
||||
"level-codec": "^6.2.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"level-codec": {
|
||||
"version": "6.2.0",
|
||||
"resolved": "https://registry.npmjs.org/level-codec/-/level-codec-6.2.0.tgz",
|
||||
"integrity": "sha1-pLUkS7akwvcj1oodZOmAxTYn2dQ="
|
||||
}
|
||||
}
|
||||
},
|
||||
"for-each": {
|
||||
"version": "0.3.3",
|
||||
"resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
|
||||
|
@ -966,6 +1035,11 @@
|
|||
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
|
||||
"integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg=="
|
||||
},
|
||||
"heap": {
|
||||
"version": "0.2.6",
|
||||
"resolved": "https://registry.npmjs.org/heap/-/heap-0.2.6.tgz",
|
||||
"integrity": "sha1-CH4fELBGky/IWU3Z5tN4r8nR5aw="
|
||||
},
|
||||
"http-cache-semantics": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
|
||||
|
@ -999,6 +1073,15 @@
|
|||
"safer-buffer": ">= 2.1.2 < 3"
|
||||
}
|
||||
},
|
||||
"idb-kv-store": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/idb-kv-store/-/idb-kv-store-4.4.0.tgz",
|
||||
"integrity": "sha1-IsVqjV+QvYj4GKhZ25xYYn3ieL4=",
|
||||
"requires": {
|
||||
"inherits": "^2.0.3",
|
||||
"promisize": "^1.1.2"
|
||||
}
|
||||
},
|
||||
"ieee754": {
|
||||
"version": "1.1.13",
|
||||
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
|
||||
|
@ -1164,6 +1247,17 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"layered-graph": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/layered-graph/-/layered-graph-1.1.3.tgz",
|
||||
"integrity": "sha512-0lACDagchA0cEiOxP90bLJm8Asxw5p089BozVvPAcKYPigQBxA1Ca4foEPBuz4x8RRZYybiksc/qBR1YurSUHA==",
|
||||
"requires": {
|
||||
"dynamic-dijkstra": "^1.0.0",
|
||||
"pull-cont": "^0.1.1",
|
||||
"pull-notify": "^0.1.1",
|
||||
"pull-stream": "^3.6.9"
|
||||
}
|
||||
},
|
||||
"level": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/level/-/level-5.0.1.tgz",
|
||||
|
@ -1706,6 +1800,11 @@
|
|||
"integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
|
||||
"dev": true
|
||||
},
|
||||
"promisize": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/promisize/-/promisize-1.1.2.tgz",
|
||||
"integrity": "sha1-m0fiyyrkl+seutwsQZHWTRXJSdE="
|
||||
},
|
||||
"proto-list": {
|
||||
"version": "1.2.4",
|
||||
"resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
|
||||
|
@ -1745,6 +1844,11 @@
|
|||
"resolved": "https://registry.npmjs.org/pull-cat/-/pull-cat-1.1.11.tgz",
|
||||
"integrity": "sha1-tkLdElXaN2pwa220+pYvX9t0wxs="
|
||||
},
|
||||
"pull-cont": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/pull-cont/-/pull-cont-0.1.1.tgz",
|
||||
"integrity": "sha1-3x1YDicXV7qay666IN4kIdZg1hg="
|
||||
},
|
||||
"pull-defer": {
|
||||
"version": "0.2.3",
|
||||
"resolved": "https://registry.npmjs.org/pull-defer/-/pull-defer-0.2.3.tgz",
|
||||
|
@ -2049,6 +2153,11 @@
|
|||
"resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
|
||||
"integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg=="
|
||||
},
|
||||
"rng": {
|
||||
"version": "0.2.2",
|
||||
"resolved": "https://registry.npmjs.org/rng/-/rng-0.2.2.tgz",
|
||||
"integrity": "sha1-30PoDZvIKtRDC8/vA/SccX6LLow="
|
||||
},
|
||||
"roarr": {
|
||||
"version": "2.15.3",
|
||||
"resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.3.tgz",
|
||||
|
@ -2269,6 +2378,14 @@
|
|||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"ssb-about": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/ssb-about/-/ssb-about-2.0.1.tgz",
|
||||
"integrity": "sha512-j0inbLwsyQctspyW51eH7h+9rpLN7Mf8A2nNX4WIWWh3tjaqS7ZNec4W/Q/6bBaoJkgtMPKLNWvrPMQwYYT15g==",
|
||||
"requires": {
|
||||
"ssb-social-index": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"ssb-backlinks": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ssb-backlinks/-/ssb-backlinks-1.0.0.tgz",
|
||||
|
@ -2315,6 +2432,28 @@
|
|||
"ssb-keys": "^7.1.4"
|
||||
}
|
||||
},
|
||||
"ssb-contacts": {
|
||||
"version": "0.0.2",
|
||||
"resolved": "https://registry.npmjs.org/ssb-contacts/-/ssb-contacts-0.0.2.tgz",
|
||||
"integrity": "sha1-2UUVYYOMzDWNMjF8DpnvhPNEmHA=",
|
||||
"requires": {
|
||||
"flumeview-reduce": "^1.1.0",
|
||||
"ssb-ref": "^2.7.1"
|
||||
}
|
||||
},
|
||||
"ssb-friends": {
|
||||
"version": "4.1.4",
|
||||
"resolved": "https://registry.npmjs.org/ssb-friends/-/ssb-friends-4.1.4.tgz",
|
||||
"integrity": "sha512-rjQP2rLocqnUoiI+SSUehLQwMB4H5TKD13hfnweGVIgAWw4mylbl9bPOuXtTU23ubPkdbSNadlp3uivsCkWLxw==",
|
||||
"requires": {
|
||||
"flumeview-reduce": "^1.3.0",
|
||||
"layered-graph": "^1.1.1",
|
||||
"pull-flatmap": "0.0.1",
|
||||
"pull-notify": "^0.1.1",
|
||||
"pull-stream": "^3.6.0",
|
||||
"ssb-ref": "^2.7.1"
|
||||
}
|
||||
},
|
||||
"ssb-gossip": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ssb-gossip/-/ssb-gossip-1.1.1.tgz",
|
||||
|
@ -9183,6 +9322,17 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"ssb-social-index": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ssb-social-index/-/ssb-social-index-1.0.0.tgz",
|
||||
"integrity": "sha512-yj1OKkbGbHiv7dMYod45RZIgQjgGjp1i5BMg5b/1YcYvlqfKgn5X//rs2cNhiCpF1T5AOVu/o776RB9mv5s+ZA==",
|
||||
"requires": {
|
||||
"flumeview-reduce": "^1.3.9",
|
||||
"pull-defer": "^0.2.3",
|
||||
"pull-stream": "^3.6.9",
|
||||
"ssb-ref": "^2.7.1"
|
||||
}
|
||||
},
|
||||
"statistics": {
|
||||
"version": "3.3.0",
|
||||
"resolved": "https://registry.npmjs.org/statistics/-/statistics-3.3.0.tgz",
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"start": "electron ."
|
||||
"start": "electron .",
|
||||
"start:user-2": "SSB_PORT=8009 EXPRESS_PORT=3001 CONFIG_FOLDER=ssb-user2 electron ."
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
|
@ -13,10 +14,14 @@
|
|||
"ejs": "^3.0.2",
|
||||
"express": "^4.17.1",
|
||||
"pull-stream": "^3.6.14",
|
||||
"ssb-about": "^2.0.1",
|
||||
"ssb-backlinks": "^1.0.0",
|
||||
"ssb-client": "^4.9.0",
|
||||
"ssb-config": "^3.4.4",
|
||||
"ssb-contacts": "0.0.2",
|
||||
"ssb-friends": "^4.1.4",
|
||||
"ssb-gossip": "^1.1.1",
|
||||
"ssb-keys": "^7.2.2",
|
||||
"ssb-master": "^1.0.3",
|
||||
"ssb-replicate": "^1.3.2",
|
||||
"ssb-server": "^15.2.0"
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
</body>
|
||||
</html>
|
|
@ -0,0 +1,13 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Social</title>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<nav>
|
||||
<a href="/">Home</a>
|
||||
</nav>
|
||||
</header>
|
|
@ -1,20 +1,20 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Social</title>
|
||||
</head>
|
||||
<body>
|
||||
<form action="publish" method="POST">
|
||||
<textarea name="message"></textarea>
|
||||
<input type="submit" value="Send" />
|
||||
</form>
|
||||
<p>
|
||||
Whoami: <%= profile.id %>
|
||||
</p>
|
||||
<% posts.map(post => { %>
|
||||
<div><%= post.text %></div>
|
||||
<% }) %>
|
||||
</body>
|
||||
</html>
|
||||
<%- include('_header') %>
|
||||
|
||||
<form action="publish" method="POST">
|
||||
<textarea name="message"></textarea>
|
||||
<input type="submit" value="Send" />
|
||||
</form>
|
||||
<p>
|
||||
Whoami: <%= profile.id %>
|
||||
</p>
|
||||
<% posts.map(post => { %>
|
||||
<div><%= post.text %></div>
|
||||
<% }) %>
|
||||
<a href="new_invite">Create New Invite</a>
|
||||
|
||||
<form action="add_invite" method="POST">
|
||||
<textarea name="invite_code"></textarea>
|
||||
<input type="submit" value="Add Invite" />
|
||||
</form>
|
||||
|
||||
<%- include('_footer') %>
|
|
@ -0,0 +1,7 @@
|
|||
<%- include('_header') %>
|
||||
|
||||
Here is the invite, copy and send to friends:
|
||||
|
||||
<%= invite %>
|
||||
|
||||
<%- include('_footer') %>
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue