secure-scuttlebot classic
1var SecretStack = require('secret-stack')
2var caps = require('ssb-caps')
3var AsyncSingle = require('async-single')
4
5// patch async-single to avoid NaN timeouts on first use
6if (!AsyncSingle.prototype._timeoutPatched) {
7 var originalTimeout = AsyncSingle.prototype._timeout
8 AsyncSingle.prototype._timeoutPatched = true
9 AsyncSingle.prototype._timeout = function (delay) {
10 if (delay == null && this._ts == null)
11 this._ts = Date.now()
12 return originalTimeout.call(this, delay)
13 }
14}
15
16// create a sbot with default caps. these can be overridden again when you call create.
17function createSsbServer () {
18 return SecretStack({
19 caps: caps,
20 permissions: {
21 anonymous: {
22 // allow Patchbay / browser clients over ssb-ws + noauth
23 allow: [
24 'whoami',
25 'createLogStream',
26 'createUserStream',
27 'createHistoryStream',
28 'createFeedStream',
29 'createSequenceStream',
30 'messagesByType',
31 'get',
32 'getLatest',
33 'latest',
34 'latestSequence',
35 'add',
36 'del',
37 'links',
38 'links2.read',
39 'status',
40 'progress',
41 'version',
42 'help',
43 'query.read'
44 ]
45 }
46 }
47 })
48 .use(require('ssb-db'))
49}
50module.exports = createSsbServer()
51
52// this isn't really needed anymore.
53module.exports.createSsbServer = createSsbServer