Merge pull request #427 from christianbundy/conn-hops

Upgrade Flotilla and SSB-CONN, remove auto-stage
This commit is contained in:
Nick Wynja 2020-05-04 16:57:45 -04:00 committed by GitHub
commit 41d436b8f0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 106 additions and 131 deletions

138
package-lock.json generated
View File

@ -305,16 +305,18 @@
"integrity": "sha512-Lnle0J8t+Z+jFg78GFFnGo+Fphxaco9K9SppeBDsI27QBRBumxeGAMeOg5wt6XbAuj5pQWmAEWWEwPz4PYGMHw=="
},
"@fraction/flotilla": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/@fraction/flotilla/-/flotilla-4.0.1.tgz",
"integrity": "sha512-ZSRHLVT79Z1OrGLvMm4LyDVw7x0puIS1s8VxExmeHZUVjlwZUwWgzeLZs3x82XQn7xtUIkU+aIrNs5gAHyLM5Q==",
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/@fraction/flotilla/-/flotilla-5.1.0.tgz",
"integrity": "sha512-0y/obrwkU7OtJAgQ1LWdaTZJS8tDXJfgq2wvPezqf9J7BvmnN1rYlTBkzeBIVQ4S9o08o0hUhSJurDm30UUW1A==",
"requires": {
"debug": "^4.1.1",
"lodash.shuffle": "^4.2.0",
"secret-stack": "^6.3.0",
"ssb-about": "^2.0.1",
"ssb-backlinks": "^1.0.0",
"ssb-blobs": "^1.2.2",
"ssb-conn": "^0.16.0",
"ssb-config": "^3.4.4",
"ssb-conn": "^0.17.0",
"ssb-db": "^19.4.0",
"ssb-ebt": "^5.6.7",
"ssb-friends": "^4.1.4",
@ -475,7 +477,7 @@
},
"@types/debug": {
"version": "4.1.5",
"resolved": false,
"resolved": "",
"integrity": "sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ==",
"dev": true
},
@ -527,7 +529,7 @@
},
"@types/highlight.js": {
"version": "9.12.3",
"resolved": false,
"resolved": "",
"integrity": "sha512-pGF/zvYOACZ/gLGWdQH8zSwteQS1epp68yRcVLJMgUck/MjEn/FBYmPub9pXT8C1e4a8YZfHo1CKyV8q1vKUnQ==",
"dev": true
},
@ -569,7 +571,7 @@
},
"@types/koa-mount": {
"version": "4.0.0",
"resolved": false,
"resolved": "",
"integrity": "sha512-56iBULArwY3uKLl28eRFchZ2v0diEoJzJbDaHH/ehgruF/s2/KMHyWsKcIhvDJ3tGdKu9oZNQvxaMg++1IKFdA==",
"dev": true,
"requires": {
@ -587,7 +589,7 @@
},
"@types/koa-static": {
"version": "4.0.1",
"resolved": false,
"resolved": "",
"integrity": "sha512-SSpct5fEcAeRkBHa3RiwCIRfDHcD1cZRhwRF///ZfvRt8KhoqRrhK6wpDlYPk/vWHVFE9hPGqh68bhzsHkir4w==",
"dev": true,
"requires": {
@ -597,7 +599,7 @@
},
"@types/koa__router": {
"version": "8.0.2",
"resolved": false,
"resolved": "",
"integrity": "sha512-3ZWfVAEcErHrZA31fWUC2YyZyAgoG4eKtQPy2XwBzdSpQealxjL7GcEEtGY925qPPs1wurW59qDl0KuRB39rrw==",
"dev": true,
"requires": {
@ -611,14 +613,14 @@
"dev": true
},
"@types/lodash": {
"version": "4.14.149",
"resolved": false,
"integrity": "sha512-ijGqzZt/b7BfzcK9vTrS6MFljQRPn5BFWOx8oE0GYxribu6uV+aA9zZuXI1zc/etK9E8nrgdoF2+LgUw7+9tJQ==",
"version": "4.14.150",
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.150.tgz",
"integrity": "sha512-kMNLM5JBcasgYscD9x/Gvr6lTAv2NVgsKtet/hm93qMyf/D1pt+7jeEZklKJKxMVmXjxbRVQQGfqDSfipYCO6w==",
"dev": true
},
"@types/markdown-it": {
"version": "0.0.9",
"resolved": false,
"resolved": "",
"integrity": "sha512-IFSepyZXbF4dgSvsk8EsgaQ/8Msv1I5eTL0BZ0X3iGO9jw6tCVtPG8HchIPm3wrkmGdqZOD42kE0zplVi1gYDA==",
"dev": true,
"requires": {
@ -645,7 +647,7 @@
},
"@types/mkdirp": {
"version": "1.0.0",
"resolved": false,
"resolved": "",
"integrity": "sha512-ONFY9//bCEr3DWKON3iDv/Q8LXnhaYYaNDeFSN0AtO5o4sLf9F0pstJKKKjQhXE0kJEeHs8eR6SAsROhhc2Csw==",
"dev": true,
"requires": {
@ -659,7 +661,7 @@
},
"@types/nodemon": {
"version": "1.19.0",
"resolved": false,
"resolved": "",
"integrity": "sha512-nf0PKjNv3wo0pyhlPkHjfpU2oUYMdOIsCXceiFG6kvhYxbTwn2ne9mz2iWvJ/4QtCrJUEPJLNXuyGleyTacdaw==",
"dev": true,
"requires": {
@ -686,7 +688,7 @@
},
"@types/pull-stream": {
"version": "3.6.0",
"resolved": false,
"resolved": "",
"integrity": "sha512-d7cobAytjsYaTluqFTJopLbdZRs1HBkU+N07/zCtsXANZ5s9riDazRkvxkAUfmRzCvXqYAsGgnJHgX2lInIOQg==",
"dev": true
},
@ -736,9 +738,9 @@
}
},
"@types/supertest": {
"version": "2.0.8",
"resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.8.tgz",
"integrity": "sha512-wcax7/ip4XSSJRLbNzEIUVy2xjcBIZZAuSd2vtltQfRK7kxhx5WMHbLHkYdxN3wuQCrwpYrg86/9byDjPXoGMA==",
"version": "2.0.9",
"resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.9.tgz",
"integrity": "sha512-0BTpWWWAO1+uXaP/oA0KW1eOZv4hc0knhrWowV06Gwwz3kqQxNO98fUFM2e15T+PdPRmOouNFrYvaBgdojPJ3g==",
"dev": true,
"requires": {
"@types/superagent": "*"
@ -772,7 +774,7 @@
},
"@types/yargs": {
"version": "15.0.4",
"resolved": false,
"resolved": "",
"integrity": "sha512-9T1auFmbPZoxHz0enUFlUuKRy3it01R+hlggyVUMtnCTQRunsQYifnSGb8hET4Xo8yiC0o0r1paW3ud5+rbURg==",
"dev": true,
"requires": {
@ -1581,7 +1583,7 @@
},
"changelog-version": {
"version": "1.0.1",
"resolved": false,
"resolved": "",
"integrity": "sha512-WSY6Zq483wM31n+IhBb2f6uLgSQHCrui3VVmX4wmaxcszueYU15qDBhKzG+ZaKhv7ptfswPfv8epampii7s5Zw==",
"dev": true
},
@ -1648,6 +1650,7 @@
"requires": {
"anymatch": "~3.1.1",
"braces": "~3.0.2",
"fsevents": "~2.1.2",
"glob-parent": "~5.1.0",
"is-binary-path": "~2.1.0",
"is-glob": "~4.0.1",
@ -1912,7 +1915,7 @@
},
"common-good": {
"version": "2.0.3",
"resolved": false,
"resolved": "",
"integrity": "sha512-GFFvmcOOpzts0x+DTR9vIcXr3Pcl1oKM/mYO4P0GQRkwqtO2B+30P4oH/32lmdCwlBdnaET2ZNYnb69Dklfdwg==",
"dev": true,
"requires": {
@ -2944,9 +2947,9 @@
},
"dependencies": {
"abstract-leveldown": {
"version": "6.2.3",
"resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz",
"integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==",
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz",
"integrity": "sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ==",
"requires": {
"buffer": "^5.5.0",
"immediate": "^3.2.3",
@ -3865,6 +3868,13 @@
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
},
"fsevents": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
"integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
"dev": true,
"optional": true
},
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
@ -5757,9 +5767,9 @@
}
},
"levelup": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/levelup/-/levelup-4.3.2.tgz",
"integrity": "sha512-cRTjU4ktWo59wf13PHEiOayHC3n0dOh4i5+FHr4tv4MX9+l7mqETicNq3Aj07HKlLdk0z5muVoDL2RD+ovgiyA==",
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/levelup/-/levelup-4.4.0.tgz",
"integrity": "sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ==",
"requires": {
"deferred-leveldown": "~5.3.0",
"level-errors": "~2.0.0",
@ -6902,9 +6912,13 @@
"integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw=="
},
"object-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz",
"integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ=="
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz",
"integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==",
"requires": {
"define-properties": "^1.1.3",
"es-abstract": "^1.17.5"
}
},
"object-keys": {
"version": "1.1.1",
@ -8979,9 +8993,9 @@
}
},
"ssb-conn": {
"version": "0.16.2",
"resolved": "https://registry.npmjs.org/ssb-conn/-/ssb-conn-0.16.2.tgz",
"integrity": "sha512-KinjdF3tOMmlcjKK4bnTso0x6GYfL+9tE2gSacRDldaLui73nDLxSwjnSoE188wDXUEumJU0LvOff4AHm2XyLQ==",
"version": "0.17.0",
"resolved": "https://registry.npmjs.org/ssb-conn/-/ssb-conn-0.17.0.tgz",
"integrity": "sha512-GrEPQ3KSYDkc0k41Y14iRKXURUWYyBtO+D5PXZ2JfWhNUZByeuCkKkkSIFP1zU5u0eFleYQW7ST+LGCKET448w==",
"requires": {
"debug": "~4.1.1",
"has-network2": "0.0.1",
@ -9707,9 +9721,9 @@
}
},
"string.prototype.trimend": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.0.tgz",
"integrity": "sha512-EEJnGqa/xNfIg05SxiPSqRS7S9qwDhYts1TSLR1BQfYUfPe1stofgGKvwERK9+9yf+PpfBMlpBaCHucXGPQfUA==",
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz",
"integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==",
"requires": {
"define-properties": "^1.1.3",
"es-abstract": "^1.17.5"
@ -9736,9 +9750,9 @@
}
},
"string.prototype.trimstart": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.0.tgz",
"integrity": "sha512-iCP8g01NFYiiBOnwG1Xc3WZLyoo+RuBymwIlWncShXDDJYWN6DbnM3odslBJdgCdRlq94B5s63NWAZlcn2CS4w==",
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz",
"integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==",
"requires": {
"define-properties": "^1.1.3",
"es-abstract": "^1.17.5"
@ -9962,7 +9976,7 @@
},
"stylelint-config-recommended": {
"version": "3.0.0",
"resolved": false,
"resolved": "",
"integrity": "sha512-F6yTRuc06xr1h5Qw/ykb2LuFynJ2IxkKfCMf+1xqPffkxh0S09Zc902XCffcsw/XMFq/OzQ1w54fLIDtmRNHnQ==",
"dev": true
},
@ -10132,7 +10146,8 @@
},
"dependencies": {
"@babel/helpers": {
"version": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz",
"version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz",
"integrity": "sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w==",
"requires": {
"@babel/template": "^7.8.3",
@ -10141,14 +10156,16 @@
}
},
"@babel/runtime": {
"version": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.7.tgz",
"version": "7.8.7",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.7.tgz",
"integrity": "sha512-+AATMUFppJDw6aiR5NVPHqIQBlV/Pj8wY/EZH+lmvRdUo9xBaz/rF3alAwFJQavvKfeOlPE7oaaDHVbcySbCsg==",
"requires": {
"regenerator-runtime": "^0.13.4"
}
},
"arrify": {
"version": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
"integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug=="
},
"astral-regex": {
@ -10157,19 +10174,23 @@
"integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ=="
},
"callsites": {
"version": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
"integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA="
},
"color-name": {
"version": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
},
"esprima": {
"version": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
},
"globals": {
"version": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
"version": "11.12.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
"integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
},
"is-fullwidth-code-point": {
@ -10187,7 +10208,8 @@
}
},
"ms": {
"version": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"regenerator-runtime": {
@ -10196,18 +10218,21 @@
"integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA=="
},
"resolve": {
"version": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz",
"version": "1.15.1",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz",
"integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==",
"requires": {
"path-parse": "^1.0.6"
}
},
"resolve-from": {
"version": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
"integrity": "sha1-six699nWiBvItuZTM17rywoYh0g="
},
"slice-ansi": {
"version": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz",
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz",
"integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==",
"requires": {
"ansi-styles": "^4.0.0",
@ -10250,7 +10275,8 @@
}
},
"type-fest": {
"version": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz",
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz",
"integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ=="
},
"which": {
@ -11412,9 +11438,9 @@
}
},
"yargs-parser": {
"version": "18.1.1",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.1.tgz",
"integrity": "sha512-KRHEsOM16IX7XuLnMOqImcPNbLVXMNHYAoFc3BKR8Ortl5gzDbtXvvEoGx9imk5E+X1VeNKNlcHr8B8vi+7ipA==",
"version": "18.1.3",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
"integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
"requires": {
"camelcase": "^5.0.0",
"decamelize": "^1.2.0"

View File

@ -22,7 +22,7 @@
},
"dependencies": {
"@fraction/base16-css": "^1.1.0",
"@fraction/flotilla": "^4.0.1",
"@fraction/flotilla": "^5.1.0",
"@koa/router": "^8.0.0",
"debug": "^4.1.1",
"env-paths": "^2.2.0",
@ -59,13 +59,13 @@
"@types/koa-mount": "^4.0.0",
"@types/koa-static": "^4.0.1",
"@types/koa__router": "^8.0.2",
"@types/lodash": "^4.14.149",
"@types/lodash": "^4.14.150",
"@types/markdown-it": "^0.0.9",
"@types/mkdirp": "^1.0.0",
"@types/nodemon": "^1.19.0",
"@types/pull-stream": "^3.6.0",
"@types/sharp": "^0.24.0",
"@types/supertest": "^2.0.8",
"@types/supertest": "^2.0.9",
"@types/yargs": "^15.0.4",
"changelog-version": "^1.0.1",
"common-good": "^2.0.3",

View File

@ -11,18 +11,12 @@ const flotilla = require("@fraction/flotilla");
const ssbTangle = require("ssb-tangle");
const debug = require("debug")("oasis");
const path = require("path");
const pull = require("pull-stream");
const lodash = require("lodash");
const socketPath = path.join(ssbConfig.path, "socket");
const publicInteger = ssbConfig.keys.public.replace(".ed25519", "");
const remote = `unix:${socketPath}~noauth:${publicInteger}`;
// This is unnecessary when https://github.com/ssbc/ssb-config/pull/72 is merged
ssbConfig.connections.incoming.unix = [
{ scope: "device", transform: "noauth" },
];
/**
* @param formatter {string} input
* @param args {any[]} input
@ -110,18 +104,13 @@ const ensureConnection = (customConfig) => {
debug("Connection attempts to existing Scuttlebutt services failed");
log("Starting Scuttlebutt service");
// Start with the default SSB-Config object.
const server = flotilla(ssbConfig);
// Adjust with `customConfig`, which declares further preferences.
serverHandle = server(customConfig);
serverHandle = flotilla(customConfig);
// Give the server a moment to start. This is a race condition. :/
setTimeout(() => {
attemptConnection()
.then((ssb) => {
autoStagePeers({ ssb, config: customConfig });
resolve(ssb);
})
.then(resolve)
.catch((e) => {
throw new Error(e);
});
@ -136,60 +125,6 @@ const ensureConnection = (customConfig) => {
return pendingConnection;
};
const autoStagePeers = ({ ssb, config }) => {
// TODO: This does not start when Oasis is started in --offline mode, which
// is great, but if you start Oasis in --offline mode and select 'Start
// networking' then this doesn't come into play.
//
// The right place to fix this is in the scheduler, and this entire function
// should be replaced by: https://github.com/staltz/ssb-conn/pull/17
if (config.conn.autostart !== true) {
return;
}
const inProgress = {};
const maxHops = lodash.get(
ssbConfig,
"friends.hops",
lodash.get(ssbConfig, "friends.hops", 0)
);
const add = (address) => {
inProgress[address] = true;
return () => {
inProgress[address] = false;
};
};
ssb.friends.hops().then((hops) => {
pull(
ssb.conn.stagedPeers(),
pull.drain((x) => {
x.filter(([address, data]) => {
const notInProgress = inProgress[address] !== true;
const key = data.key;
const haveHops = typeof hops[key] === "number";
const hopValue = haveHops ? hops[key] : Infinity;
// Negative hops means blocked
const isNotBlocked = hopValue >= 0;
const withinHops = isNotBlocked && hopValue <= maxHops;
return notInProgress && withinHops;
}).forEach(([address, data]) => {
const done = add(address);
debug(
`Connecting to staged peer at ${
hops[data.key]
}/${maxHops} hops: ${address}`
);
ssb.conn.connect(address, data).then(done).catch(done);
});
})
);
});
};
module.exports = ({ offline }) => {
if (offline) {
log("Offline mode activated - not connecting to scuttlebutt peers or pubs");
@ -198,11 +133,25 @@ module.exports = ({ offline }) => {
);
}
const customConfig = {
conn: {
autostart: !offline,
},
};
// Make a copy of `ssbConfig` to avoid mutating.
const customConfig = JSON.parse(JSON.stringify(ssbConfig));
// This is unnecessary when https://github.com/ssbc/ssb-config/pull/72 is merged
customConfig.connections.incoming.unix = [
{ scope: "device", transform: "noauth" },
];
// Only change the config if `--offline` is true.
if (offline === true) {
lodash.set(customConfig, "conn.autostart", false);
}
// Use `conn.hops`, or default to `friends.hops`, or default to `0`.
lodash.set(
customConfig,
"conn.hops",
lodash.get(ssbConfig, "conn.hops", lodash.get(ssbConfig.friends.hops, 0))
);
/**
* This is "cooler", a tiny interface for opening or reusing an instance of