dsh 0.2.0-rc.2: in-container update (experimental channel), path-agnostic compose, upstream patches adapted to 0.1.x/0.2.x

This commit is contained in:
hermes committed 2026-10-01 19:21:19 +00:00
commit e6dcef9bf5
302 files changed
+75178

No files matched your search

@@ -0,0 +1,82 @@
import assert from 'node:assert/strict'
import { createServer, request as httpRequest } from 'node:http'
import { mkdtemp, rm } from 'node:fs/promises'
import { tmpdir } from 'node:os'
import { join } from 'node:path'
import test from 'node:test'
import { LocalApiClient } from '../../control-plane/modules/updater/lib/client.mjs'
import {
createRestrictedCliServer,
restrictedCliRoute,
} from '../../control-plane/services/management/restricted-cli.mjs'
import { listenManagement } from '../../control-plane/services/management/server.mjs'
test('restricted CLI channel forwards only documented public operations', async () => {
const root = await mkdtemp(join(tmpdir(), 'dsh-restricted-cli-'))
const managementSocket = join(root, 'management.sock')
const cliSocket = join(root, 'management-cli.sock')
const seen = []
const management = createServer((request, response) => {
seen.push({ method: request.method, url: request.url, headers: request.headers })
request.resume()
response.writeHead(200, { 'content-type': 'application/json' })
response.end('{"ok":true}')
})
const cli = createRestrictedCliServer({ managementSocketPath: managementSocket, token: 'x'.repeat(32) })
try {
await listenManagement(management, managementSocket)
await listenManagement(cli, cliSocket)
const client = new LocalApiClient(cliSocket)
assert.deepEqual(await client.request('GET', '/_dsh_platform/api/v1/status'), { ok: true })
assert.deepEqual(await client.request('GET', '/_dsh_platform/api/v1/logs?limit=10'), { ok: true })
assert.deepEqual(await client.request('POST', '/_dsh_platform/api/v1/restart-dsh'), { ok: true })
await assert.rejects(
client.request('GET', '/_dsh_platform/api/v1/auth-settings'),
error => error.statusCode === 404 && error.code === 'CLI_ROUTE_NOT_AVAILABLE',
)
await assert.rejects(
client.request('GET', '/_dsh_platform/api/v1/files/list?path=%2F'),
error => error.statusCode === 404 && error.code === 'CLI_ROUTE_NOT_AVAILABLE',
)
await new Promise((resolve, reject) => {
const outgoing = httpRequest({
socketPath: cliSocket,
method: 'GET',
path: '/_dsh_platform/api/v1/status',
headers: {
authorization: 'Basic forged',
cookie: 'dsh_management=forged',
origin: 'https://forged.example',
'x-dsh-csrf': 'forged',
'x-dsh-internal-capability': 'forged',
'x-dsh-restricted-cli': 'forged',
},
}, response => {
response.resume()
response.once('end', resolve)
})
outgoing.once('error', reject)
outgoing.end()
})
assert.equal(seen.length, 4)
assert.equal(seen.every(value => value.headers['x-dsh-restricted-cli'] === 'x'.repeat(32)), true)
const hardened = seen.at(-1).headers
for (const name of ['authorization', 'cookie', 'origin', 'x-dsh-csrf', 'x-dsh-internal-capability']) {
assert.equal(hardened[name], undefined)
}
} finally {
await Promise.all([
new Promise(resolve => cli.close(resolve)),
new Promise(resolve => management.close(resolve)),
])
await rm(root, { recursive: true, force: true })
}
})
test('restricted CLI allowlist binds both method and normalized pathname', () => {
assert.equal(restrictedCliRoute('GET', '/_dsh_platform/api/v1/status'), true)
assert.equal(restrictedCliRoute('POST', '/_dsh_platform/api/v1/status'), false)
assert.equal(restrictedCliRoute('GET', '/_dsh_platform/api/v1/logs?source=stage0'), true)
assert.equal(restrictedCliRoute('GET', '/_dsh_platform/api/v1/terminal/sessions'), false)
assert.equal(restrictedCliRoute('GET', '/_dsh_platform/api/v1/status/../auth-settings'), false)
})