git ssb

1+

mixmix / scuttle-shell



Tree: 851531c0e3ba49e7d6301e1941f7cf92e8f91628

Files: 851531c0e3ba49e7d6301e1941f7cf92e8f91628 / server.js

2834 bytesRaw
1#! /usr/bin/env node
2
3const http = require('http')
4const serve = require('ecstatic')
5const fs = require('fs')
6const path = require('path')
7const ssbKeys = require('ssb-keys')
8const minimist = require('minimist')
9const notifier = require('node-notifier')
10const SysTray = require('systray').default
11
12let argv = process.argv.slice(2)
13let i = argv.indexOf('--')
14let conf = argv.slice(i + 1)
15argv = ~i ? argv.slice(0, i) : argv
16
17const config = require('ssb-config/inject')(process.env.ssb_appname, minimist(conf))
18
19const keys = ssbKeys.loadOrCreateSync(path.join(config.path, 'secret'))
20if (keys.curve === 'k256') {
21 throw new Error('k256 curves are no longer supported,' +
22 'please delete' + path.join(config.path, 'secret'))
23}
24
25const manifestFile = path.join(config.path, 'manifest.json')
26
27// special server command:
28// import sbot and start the server
29
30const createSbot = require('scuttlebot')
31 // .use(require('scuttlebot/plugins/plugins'))
32 .use(require('scuttlebot/plugins/master'))
33 .use(require('scuttlebot/plugins/gossip'))
34 .use(require('scuttlebot/plugins/replicate'))
35 .use(require('ssb-friends'))
36 .use(require('ssb-blobs'))
37 .use(require('scuttlebot/plugins/invite'))
38 .use(require('scuttlebot/plugins/local'))
39 // .use(require('scuttlebot/plugins/logging'))
40 // .use(require('scuttlebot/plugins/private'))
41 // .use(require('ssb-query'))
42 // .use(require('ssb-links'))
43 .use(require('ssb-ooo'))
44 .use(require('ssb-ebt'))
45 .use(require('ssb-ws'))
46 .use(require('ssb-names'))
47 .use(require('ssb-backlinks'))
48
49// http.createServer(
50// serve({ root: path.resolve('../webextension/build/') })
51// ).listen(3013)
52
53// add third-party plugins
54// require('./plugins/plugins').loadUserPlugins(createSbot, config)
55
56// start server
57
58config.keys = keys
59const server = createSbot(config)
60
61// write RPC manifest to ~/.ssb/manifest.json
62fs.writeFileSync(manifestFile, JSON.stringify(server.getManifest(), null, 2))
63
64const icon = fs.readFileSync(path.join(__dirname, `icon.${process.platform === 'win32' ? 'ico' : 'png'}`))
65const tray = new SysTray({
66 menu: {
67 icon: icon.toString('base64'),
68 title: 'Secure Scuttlebutt',
69 tooltip: 'Secure Scuttlebutt tray app',
70 items: [
71
72 {
73 title: 'Quit',
74 tooltip: 'Stop sbot and quit tray application',
75 checked: false,
76 enabled: true
77 }
78 ]
79 },
80 debug: false,
81 copyDir: true,
82})
83
84tray.onClick(action => {
85 switch (action.seq_id) {
86 case 0:
87 console.log("### EXITING IN TWO SECONDS ###")
88
89 notifier.notify({
90 title: 'Secure Scuttlebutt',
91 message: `Secure Scuttlebutt will exit in two seconds...`,
92 icon: path.join(__dirname, "icon.png"),
93 wait: true,
94 id: 0,
95 })
96
97 tray.kill()
98 }
99})
100
101tray.onExit((code, signal) => {
102 setTimeout(() =>
103 process.exit(0), 2000)
104})

Built with git-ssb-web