From c71fb2a0899fe94c63306d8822b797c6dd42ef68 Mon Sep 17 00:00:00 2001 From: Stephen Whitmore Date: Mon, 16 Apr 2018 13:59:50 -0700 Subject: [PATCH] feat: serve ssb websites under /web --- index.js | 24 ++++++++++++++++++++++++ package.json | 1 + 2 files changed, 25 insertions(+) diff --git a/index.js b/index.js index 9df23d5..cc19426 100644 --- a/index.js +++ b/index.js @@ -9,6 +9,7 @@ var sort = require('ssb-sort') var toPull = require('stream-to-pull-stream') var memo = require('asyncmemo') var lru = require('lrucache') +var webresolve = require('ssb-web-resolver') var serveEmoji = require('emoji-server')() var { MdRenderer, @@ -82,6 +83,7 @@ exports.init = function (sbot, config) { if (req.url.startsWith('/user-feed/')) return serveUserFeed(req, res, m[4]) else if (req.url.startsWith('/channel/')) return serveChannel(req, res, m[4]) else if (req.url.startsWith('/.well-known/acme-challenge')) return serveAcmeChallenge(req, res) + else if (req.url.startsWith('/web/')) return serveWeb(req, res, m[4]) if (m[2] && m[2].length === 3) { m[1] = decodeURIComponent(m[1]) @@ -144,6 +146,28 @@ exports.init = function (sbot, config) { }) } + function serveWeb (req, res, url) { + var self = this + var id = decodeURIComponent(url.substr(1)) + + var components = url.split('/') + if (components[0] === '') components.shift() + if (components[0] === 'web') components.shift() + components[0] = decodeURIComponent(components[0]) + + webresolve(sbot, components, function (err, data) { + if (err) { + return respond(res, 404, 'ERROR: ' + err) + } + return pull( + pull.once(data), + toPull(res, function (err) { + if (err) console.error('[viewer]', err) + }) + ) + }) + } + function serveUserFeed(req, res, url) { var feedId = url.substring(url.lastIndexOf('user-feed/')+10, 100) console.log("serving user feed: " + feedId) diff --git a/package.json b/package.json index 07cdeff..ba5e112 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "ssb-marked": "^0.7.3", "ssb-ref": "^2.9.0", "ssb-sort": "^1.0.0", + "ssb-web-resolver": "^1.0.4", "stream-to-pull-stream": "^1.7.2" }, "devDependencies": {