feat: serve ssb websites under /web
This commit is contained in:
@@ -9,6 +9,7 @@ var sort = require('ssb-sort')
|
|||||||
var toPull = require('stream-to-pull-stream')
|
var toPull = require('stream-to-pull-stream')
|
||||||
var memo = require('asyncmemo')
|
var memo = require('asyncmemo')
|
||||||
var lru = require('lrucache')
|
var lru = require('lrucache')
|
||||||
|
var webresolve = require('ssb-web-resolver')
|
||||||
var serveEmoji = require('emoji-server')()
|
var serveEmoji = require('emoji-server')()
|
||||||
var {
|
var {
|
||||||
MdRenderer,
|
MdRenderer,
|
||||||
@@ -82,6 +83,7 @@ exports.init = function (sbot, config) {
|
|||||||
if (req.url.startsWith('/user-feed/')) return serveUserFeed(req, res, m[4])
|
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('/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('/.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) {
|
if (m[2] && m[2].length === 3) {
|
||||||
m[1] = decodeURIComponent(m[1])
|
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) {
|
function serveUserFeed(req, res, url) {
|
||||||
var feedId = url.substring(url.lastIndexOf('user-feed/')+10, 100)
|
var feedId = url.substring(url.lastIndexOf('user-feed/')+10, 100)
|
||||||
console.log("serving user feed: " + feedId)
|
console.log("serving user feed: " + feedId)
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
"ssb-marked": "^0.7.3",
|
"ssb-marked": "^0.7.3",
|
||||||
"ssb-ref": "^2.9.0",
|
"ssb-ref": "^2.9.0",
|
||||||
"ssb-sort": "^1.0.0",
|
"ssb-sort": "^1.0.0",
|
||||||
|
"ssb-web-resolver": "^1.0.4",
|
||||||
"stream-to-pull-stream": "^1.7.2"
|
"stream-to-pull-stream": "^1.7.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|||||||
Reference in New Issue
Block a user