brother: the admin account, its owned secrets, the process and the printer-asks stream declared as mesh-mail's sender is; an integration test and the README (issue 1453)

This commit is contained in:
2026-10-20 21:21:15 +02:00
parent 29107b0d93
commit adfb61c053
7 changed files with 351 additions and 35 deletions
+64 -5
View File
@@ -65,9 +65,33 @@
"own-secrets": {
"admin-password": {
"path": "${dir:state}/admin-password.secret",
"issued-by": "outside"
"issued-by": "outside",
"prompt": "the admin password of the Brother printer",
"owner": "brother-admin"
},
"broker-admin": {
"path": "${dir:state}/broker-admin.secret",
"owner": "brother-admin"
}
},
"streams": [
{
"name": "printer-asks",
"events": [
"printer.asked"
],
"max-age-days": 1,
"max-mib": 8,
"retention": "work-queue",
"max-deliveries": 3
}
],
"state": [
{
"name": "printer-answers",
"ttl-seconds": 600
}
],
"seats": [
{
"name": "scanner",
@@ -114,10 +138,16 @@
"scanner.list"
],
"resources": [
{
"id": "account",
"type": "user",
"name": "brother-admin",
"shell": "/usr/bin/nologin"
},
{
"id": "state",
"type": "directory",
"mode": "0700",
"mode": "0711",
"owner": "${machine:account}",
"place": ".",
"unknown": "program"
@@ -127,7 +157,7 @@
"type": "file",
"path": "${dir:state}/settings.json",
"owner": "${machine:account}",
"mode": "0600",
"mode": "0644",
"takes-config": [
"scanner",
"scan-folder",
@@ -139,6 +169,36 @@
],
"merge": "json",
"template": "files/settings.json"
},
{
"id": "admin",
"type": "process",
"name": "brother-admin",
"artifact": "tools",
"run": [
"./brother",
"admin"
],
"user": "brother-admin",
"env": {
"BROTHER_SETTINGS": "${dir:state}/settings.json",
"BROTHER_ADMIN_PASSWORD": "${dir:state}/admin-password.secret",
"BROTHER_BROKER": "${dir:state}/broker-admin.secret"
},
"restart-on": [
"settings"
],
"bus": {
"queues": [
"printer-asks"
],
"state": [
"printer-answers"
]
},
"health": {
"kind": "unit"
}
}
],
"build": {
@@ -154,8 +214,7 @@
"brother"
],
"env": {
"BROTHER_SETTINGS": "${dir:state}/settings.json",
"BROTHER_ADMIN_PASSWORD": "${dir:state}/admin-password.secret"
"BROTHER_SETTINGS": "${dir:state}/settings.json"
}
},
{