git ssb

1+

ev / scatter



Tree: 42abcae02e90d52d27bc16faa27ce36a2678fa62

Files: 42abcae02e90d52d27bc16faa27ce36a2678fa62 / ssb-ws / index.js

2088 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
24 'add',
25
26 'query.read',
27 'links2.read'
28]
29
30
31exports.name = 'ws'
32exports.version = require('./package.json').version
33exports.manifest = {}
34
35exports.init = function (sbot, config) {
36 var port
37 if(config.ws)
38 port = config.ws.port
39 if(!port)
40 port = 1024+(~~(Math.random()*(65536-1024)))
41
42 var layers = []
43 var server, ws_server
44
45 function createServer (config, instance) {
46 instance = instance || 0
47 if(server) return server
48 server = http.createServer(JSONApi(sbot, layers)).listen(port+instance)
49 ws_server = WS(Object.assign({
50 server: server, port: port, host: config.host
51 }, config))
52 return server
53 }
54
55 /*sbot.auth.hook(function (fn, args) {
56 var id = args[0]
57 var cb = args[1]
58 fn(id, function (err, value) {
59 if(value === true)
60 sbot.friends.get({source: sbot.id, dest: toId(id)}, function (err, follows) {
61 if(err) return cb(err)
62 else if(follows) cb(null, {allow: READ_AND_ADD, deny: null})
63 else cb(null, true)
64 })
65 else
66 cb(err, value)
67 })
68 })*/
69
70 sbot.auth.hook(function (fn, args) {
71 var id = args[0]
72 var cb = args[1]
73 fn(id, function (err, value) {
74 sbot.friends.get({source: sbot.id, dest: toId(id)}, function (err, follows) {
75 if(err) return cb(err)
76 else if(follows) cb(null, {allow: READ_AND_ADD, deny: null})
77 else cb(null, true)
78 })
79 })
80 })
81
82
83
84 sbot.multiserver.transport({
85 name: 'ws',
86 create: function (config, instance) {
87 createServer(config, instance)
88 return ws_server
89 }
90 })
91
92 return {
93 use: function (handler) {
94 layers.push(handler)
95 }
96 }
97}
98
99

Built with git-ssb-web