git ssb

3+

ev / decent



Tree: 26964367b4576851356b5e7a87124ef6c8562dd2

Files: 26964367b4576851356b5e7a87124ef6c8562dd2 / ssb-ws / index.js

1531 bytesRaw
1var WS = require('multiserver/plugins/ws')
2var http = require('http')
3var pull = require('pull-stream')
4var JSONApi = require('./json-api')
5
6var READ_AND_ADD = [ //except for add, of course
7 'get',
8 'getLatest',
9 'createLogStream',
10 'createUserStream',
11
12 'createHistoryStream',
13 'getAddress',
14
15 'links',
16
17 'blobs.add',
18 'blobs.size',
19 'blobs.has',
20 'blobs.get',
21 'blobs.changes',
22 'blobs.createWants',
23 'friends',
24 'add',
25 'search.query',
26 'backlinks.read',
27 'query.read',
28 'links2.read'
29]
30
31
32exports.name = 'ws'
33exports.version = require('./package.json').version
34exports.manifest = {}
35
36exports.init = function (sbot, config) {
37 var port
38 if(config.ws)
39 port = config.ws.port
40 if(!port)
41 port = 1024+(~~(Math.random()*(65536-1024)))
42
43 var layers = []
44 var server, ws_server
45
46 function createServer (config, instance) {
47 instance = instance || 0
48 if(server) return server
49 server = http.createServer(JSONApi(sbot, layers)).listen(port+instance)
50 ws_server = WS(Object.assign({
51 server: server, port: port, host: config.host
52 }, config))
53 return server
54 }
55
56 sbot.auth.hook(function (fn, args) {
57 var id = args[0]
58 var cb = args[1]
59 fn(id, function (err, value) {
60 cb(null, {allow: READ_AND_ADD, deny: null})
61 })
62 })
63
64 sbot.multiserver.transport({
65 name: 'ws',
66 create: function (config, instance) {
67 createServer(config, instance)
68 return ws_server
69 }
70 })
71
72 return {
73 use: function (handler) {
74 layers.push(handler)
75 }
76 }
77}
78
79

Built with git-ssb-web