secure-scuttlebot classic
at main 1.4 kB view raw
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