Add ability to disable federation

This commit is contained in:
Chocobozzz 2024-08-14 14:12:37 +02:00
parent 7d52f17a35
commit e6de476ae8
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
7 changed files with 34 additions and 3 deletions

View File

@ -433,6 +433,9 @@ plugins:
url: 'https://packages.joinpeertube.org'
federation:
# Enable ActivityPub endpoints (inbox/outbox)
enabled: true
# Some federated software such as Mastodon may require an HTTP signature to access content
sign_federated_fetches: true

View File

@ -431,6 +431,9 @@ plugins:
url: 'https://packages.joinpeertube.org'
federation:
# Enable ActivityPub endpoints (inbox/outbox)
enabled: true
# Some federated software such as Mastodon may require an HTTP signature to access content
sign_federated_fetches: true

View File

@ -6,6 +6,8 @@ import {
cleanupTests,
createMultipleServers,
doubleFollow,
makeActivityPubGetRequest,
makeGetRequest,
PeerTubeServer,
setAccessTokensToServers,
waitJobs
@ -315,6 +317,26 @@ describe('Test follow constraints', function () {
})
})
describe('When disabling federation', function () {
before(async function () {
this.timeout(60_000)
await servers[0].kill()
await servers[0].run({ federation: { enabled: false } })
})
it('Should not federate anymore', async function () {
const { uuid } = await servers[0].videos.quickUpload({ name: 'non federated video' })
await waitJobs(servers)
await servers[1].videos.get({ id: uuid, expectedStatus: HttpStatusCode.NOT_FOUND_404 })
await makeActivityPubGetRequest(servers[0].url, '/inbox', HttpStatusCode.NOT_ACCEPTABLE_406)
await makeActivityPubGetRequest(servers[0].url, '/outbox', HttpStatusCode.NOT_ACCEPTABLE_406)
})
})
after(async function () {
await cleanupTests(servers)
})

View File

@ -1,5 +1,4 @@
import express from 'express'
import { activityPubClientRouter } from './client.js'
import { inboxRouter } from './inbox.js'
import { outboxRouter } from './outbox.js'

View File

@ -74,7 +74,7 @@ function checkMissedConfig () {
'feeds.videos.count', 'feeds.comments.count',
'geo_ip.enabled', 'geo_ip.country.database_url', 'geo_ip.city.database_url',
'remote_redundancy.videos.accept_from',
'federation.videos.federate_unlisted', 'federation.videos.cleanup_remote_interactions',
'federation.enabled', 'federation.videos.federate_unlisted', 'federation.videos.cleanup_remote_interactions',
'peertube.check_latest_version.enabled', 'peertube.check_latest_version.url',
'search.remote_uri.users', 'search.remote_uri.anonymous', 'search.search_index.enabled', 'search.search_index.url',
'search.search_index.disable_local_search', 'search.search_index.is_default_search',

View File

@ -341,6 +341,7 @@ const CONFIG = {
}
},
FEDERATION: {
ENABLED: config.get<boolean>('federation.enabled'),
VIDEOS: {
FEDERATE_UNLISTED: config.get<boolean>('federation.videos.federate_unlisted'),
CLEANUP_REMOTE_INTERACTIONS: config.get<boolean>('federation.videos.cleanup_remote_interactions')

View File

@ -232,7 +232,10 @@ app.use('/api/' + API_VERSION, apiRouter)
// Services (oembed...)
app.use('/services', servicesRouter)
app.use('/', activityPubRouter)
if (CONFIG.FEDERATION.ENABLED) {
app.use('/', activityPubRouter)
}
app.use('/', feedsRouter)
app.use('/', trackerRouter)
app.use('/', sitemapRouter)