mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-31 20:43:41 +00:00
* feat: unified restart notification with reason-specific messaging Replace statusInfo.updated (bool) with serverInfo.restart (nullable enum) to unify all restart-needed scenarios under a single PatchDB field. Backend sets the restart reason in RPC handlers for hostname change (mdns), language change, kiosk toggle, and OS update download. Init clears it on boot. The update flow checks this field to prevent updates when a restart is already pending. Frontend shows a persistent action bar with reason-specific i18n messages instead of per-feature restart dialogs. For .local hostname changes, the existing "open new address" dialog is preserved — the restart toast appears after the user logs in on the new address. Also includes migration in v0_4_0_alpha_23 to remove statusInfo.updated and initialize serverInfo.restart. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix broken styling and improve settings layout * refactor: move restart field from ServerInfo to ServerStatus The restart reason belongs with other server state (shutting_down, restarting, update_progress) rather than on the top-level ServerInfo. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix PR comment --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: Aiden McClelland <me@drbonez.dev>
827 lines
24 KiB
TypeScript
827 lines
24 KiB
TypeScript
import { DataModel } from 'src/app/services/patch-db/data-model'
|
|
import { knownAuthorities } from 'src/app/utils/acme'
|
|
import { Mock } from './api.fixures'
|
|
const version = require('../../../../../../package.json').version
|
|
|
|
export const mockPatchData: DataModel = {
|
|
ui: {
|
|
name: `Matt's Server`,
|
|
registries: {
|
|
'https://registry.start9.com/': 'Start9 Registry',
|
|
'https://community-registry.start9.com/': 'Community Registry',
|
|
},
|
|
startosRegistry: 'https://registry.start9.com/',
|
|
snakeHighScore: 0,
|
|
},
|
|
serverInfo: {
|
|
arch: 'x86_64',
|
|
id: 'abcdefgh',
|
|
version,
|
|
lastBackup: new Date(new Date().valueOf() - 604800001).toISOString(),
|
|
network: {
|
|
wifi: {
|
|
enabled: true,
|
|
interface: 'wlan0',
|
|
ssids: [],
|
|
selected: null,
|
|
lastRegion: null,
|
|
},
|
|
acme: {
|
|
[knownAuthorities[0].url]: {
|
|
contact: ['mailto:support@start9.com'],
|
|
},
|
|
},
|
|
host: {
|
|
bindings: {
|
|
80: {
|
|
enabled: true,
|
|
net: {
|
|
assignedPort: null,
|
|
assignedSslPort: 443,
|
|
},
|
|
addresses: {
|
|
enabled: [],
|
|
disabled: [],
|
|
available: [
|
|
{
|
|
ssl: true,
|
|
public: false,
|
|
hostname: 'adjective-noun.local',
|
|
port: 443,
|
|
metadata: {
|
|
kind: 'mdns',
|
|
gateways: ['eth0', 'wlan0'],
|
|
},
|
|
},
|
|
{
|
|
ssl: false,
|
|
public: false,
|
|
hostname: '10.0.0.1',
|
|
port: 80,
|
|
metadata: { kind: 'ipv4', gateway: 'eth0' },
|
|
},
|
|
{
|
|
ssl: false,
|
|
public: false,
|
|
hostname: '10.0.0.2',
|
|
port: 80,
|
|
metadata: { kind: 'ipv4', gateway: 'wlan0' },
|
|
},
|
|
{
|
|
ssl: false,
|
|
public: false,
|
|
hostname: 'fe80::cd00:0000:0cde:1257:0000:211e:72cd',
|
|
port: 80,
|
|
metadata: { kind: 'ipv6', gateway: 'eth0', scopeId: 2 },
|
|
},
|
|
{
|
|
ssl: false,
|
|
public: false,
|
|
hostname: 'fe80::cd00:0000:0cde:1257:0000:211e:1234',
|
|
port: 80,
|
|
metadata: { kind: 'ipv6', gateway: 'wlan0', scopeId: 3 },
|
|
},
|
|
{
|
|
ssl: true,
|
|
public: false,
|
|
hostname: 'my-server.home',
|
|
port: 443,
|
|
metadata: {
|
|
kind: 'private-domain',
|
|
gateways: ['eth0'],
|
|
},
|
|
},
|
|
{
|
|
ssl: false,
|
|
public: false,
|
|
hostname:
|
|
'abc123def456ghi789jkl012mno345pqr678stu901vwx234yz567abc.onion',
|
|
port: 80,
|
|
metadata: {
|
|
kind: 'plugin',
|
|
packageId: 'tor',
|
|
removeAction: 'delete-onion-service',
|
|
overflowActions: ['regenerate-key'],
|
|
info: null,
|
|
},
|
|
},
|
|
{
|
|
ssl: true,
|
|
public: false,
|
|
hostname:
|
|
'abc123def456ghi789jkl012mno345pqr678stu901vwx234yz567abc.onion',
|
|
port: 443,
|
|
metadata: {
|
|
kind: 'plugin',
|
|
packageId: 'tor',
|
|
removeAction: 'delete-onion-service',
|
|
overflowActions: ['regenerate-key'],
|
|
info: null,
|
|
},
|
|
},
|
|
],
|
|
},
|
|
options: {
|
|
preferredExternalPort: 80,
|
|
addSsl: {
|
|
preferredExternalPort: 443,
|
|
alpn: { specified: ['http/1.1', 'h2'] },
|
|
addXForwardedHeaders: false,
|
|
},
|
|
secure: null,
|
|
},
|
|
},
|
|
},
|
|
publicDomains: {},
|
|
privateDomains: {
|
|
'my-server.home': ['eth0'],
|
|
},
|
|
portForwards: [
|
|
{
|
|
src: '203.0.113.45:443',
|
|
dst: '10.0.0.1:443',
|
|
gateway: 'eth0',
|
|
},
|
|
],
|
|
},
|
|
gateways: {
|
|
eth0: {
|
|
name: null,
|
|
secure: null,
|
|
type: null,
|
|
ipInfo: {
|
|
name: 'Wired Connection 1',
|
|
scopeId: 1,
|
|
deviceType: 'ethernet',
|
|
subnets: ['10.0.0.2/24'],
|
|
wanIp: '203.0.113.45',
|
|
ntpServers: [],
|
|
lanIp: ['10.0.2.12'],
|
|
dnsServers: [],
|
|
},
|
|
},
|
|
wlan0: {
|
|
name: null,
|
|
secure: null,
|
|
type: null,
|
|
ipInfo: {
|
|
name: 'Wireless Connection 1',
|
|
scopeId: 2,
|
|
deviceType: 'wireless',
|
|
subnets: [
|
|
'10.0.90.12/24',
|
|
'fe80::cd00:0000:0cde:1257:0000:211e:72cd/64',
|
|
],
|
|
wanIp: '203.0.113.45',
|
|
ntpServers: [],
|
|
lanIp: ['10.0.90.12'],
|
|
dnsServers: ['8.8.8.8'],
|
|
},
|
|
},
|
|
wireguard1: {
|
|
name: 'StartTunnel',
|
|
secure: null,
|
|
type: 'inbound-outbound',
|
|
ipInfo: {
|
|
name: 'wireguard1',
|
|
scopeId: 2,
|
|
deviceType: 'wireguard',
|
|
subnets: [
|
|
'10.0.90.12/24',
|
|
'fe80::cd00:0000:0cde:1257:0000:211e:72cd/64',
|
|
],
|
|
wanIp: '203.0.113.45',
|
|
ntpServers: [],
|
|
lanIp: ['10.0.90.12'],
|
|
dnsServers: ['1.1.1.1'],
|
|
},
|
|
},
|
|
wireguard2: {
|
|
name: 'Mullvad VPN',
|
|
secure: null,
|
|
type: 'outbound-only',
|
|
ipInfo: {
|
|
name: 'wireguard2',
|
|
scopeId: 4,
|
|
deviceType: 'wireguard',
|
|
subnets: [],
|
|
wanIp: '198.51.100.77',
|
|
ntpServers: [],
|
|
lanIp: [],
|
|
dnsServers: ['10.64.0.1'],
|
|
},
|
|
},
|
|
},
|
|
passthroughs: [],
|
|
defaultOutbound: 'eth0',
|
|
dns: {
|
|
dhcpServers: ['1.1.1.1', '8.8.8.8'],
|
|
staticServers: null,
|
|
},
|
|
},
|
|
unreadNotificationCount: 5,
|
|
// password is asdfasdf
|
|
passwordHash:
|
|
'$argon2d$v=19$m=1024,t=1,p=1$YXNkZmFzZGZhc2RmYXNkZg$Ceev1I901G6UwU+hY0sHrFZ56D+o+LNJ',
|
|
packageVersionCompat: '>=0.3.0 <=0.3.6',
|
|
postInitMigrationTodos: {},
|
|
statusInfo: {
|
|
// currentBackup: null,
|
|
updateProgress: null,
|
|
restarting: false,
|
|
shuttingDown: false,
|
|
backupProgress: null,
|
|
restart: null,
|
|
},
|
|
name: 'Random Words',
|
|
hostname: 'random-words',
|
|
pubkey: 'npub1sg6plzptd64u62a878hep2kev88swjh3tw00gjsfl8f237lmu63q0uf63m',
|
|
caFingerprint: '63:2B:11:99:44:40:17:DF:37:FC:C3:DF:0F:3D:15',
|
|
ntpSynced: false,
|
|
smtp: null,
|
|
echoipUrls: ['https://ipconfig.me', 'https://ifconfig.co'],
|
|
platform: 'x86_64-nonfree',
|
|
zram: true,
|
|
governor: 'performance',
|
|
ram: 8 * 1024 * 1024 * 1024,
|
|
devices: [],
|
|
kiosk: true,
|
|
language: 'en_US',
|
|
keyboard: {
|
|
layout: 'us',
|
|
keymap: 'us',
|
|
model: null,
|
|
variant: null,
|
|
options: [],
|
|
},
|
|
// keyboard: null,
|
|
},
|
|
packageData: {
|
|
lnd: {
|
|
stateInfo: {
|
|
state: 'installed',
|
|
manifest: {
|
|
...Mock.MockManifestLnd,
|
|
version: '0.11.0:0.0.1',
|
|
},
|
|
},
|
|
s9pk: '/media/startos/data/package-data/archive/installed/asdfasdf.s9pk',
|
|
icon: '/assets/img/service-icons/lnd.png',
|
|
lastBackup: null,
|
|
statusInfo: {
|
|
desired: { main: 'stopped' },
|
|
error: null,
|
|
health: {},
|
|
started: null,
|
|
},
|
|
actions: {
|
|
config: {
|
|
name: 'Config',
|
|
description: 'LND needs configuration before starting',
|
|
warning: null,
|
|
visibility: 'enabled',
|
|
allowedStatuses: 'any',
|
|
hasInput: true,
|
|
group: null,
|
|
},
|
|
connect: {
|
|
name: 'Connect',
|
|
description: 'View LND connection details',
|
|
warning: null,
|
|
visibility: 'enabled',
|
|
allowedStatuses: 'any',
|
|
hasInput: true,
|
|
group: 'Connecting',
|
|
},
|
|
},
|
|
serviceInterfaces: {
|
|
grpc: {
|
|
id: 'grpc',
|
|
masked: false,
|
|
name: 'GRPC',
|
|
description:
|
|
'Used by dependent services and client wallets for connecting to your node',
|
|
type: 'api',
|
|
addressInfo: {
|
|
username: null,
|
|
hostId: 'qrstuv',
|
|
internalPort: 10009,
|
|
scheme: null,
|
|
sslScheme: 'grpc',
|
|
suffix: '',
|
|
},
|
|
},
|
|
lndconnect: {
|
|
id: 'lndconnect',
|
|
masked: true,
|
|
name: 'LND Connect',
|
|
description:
|
|
'Used by client wallets adhering to LND Connect protocol to connect to your node',
|
|
type: 'api',
|
|
addressInfo: {
|
|
username: null,
|
|
hostId: 'qrstuv',
|
|
internalPort: 10009,
|
|
scheme: null,
|
|
sslScheme: 'lndconnect',
|
|
suffix: 'cert=askjdfbjadnaskjnd&macaroon=ksjbdfnhjasbndjksand',
|
|
},
|
|
},
|
|
p2p: {
|
|
id: 'p2p',
|
|
masked: false,
|
|
name: 'P2P',
|
|
description:
|
|
'Used for connecting to other nodes on the Bitcoin network',
|
|
type: 'p2p',
|
|
addressInfo: {
|
|
username: null,
|
|
hostId: 'rstuvw',
|
|
internalPort: 8333,
|
|
scheme: 'bitcoin',
|
|
sslScheme: null,
|
|
suffix: '',
|
|
},
|
|
},
|
|
},
|
|
currentDependencies: {
|
|
bitcoind: {
|
|
title: Mock.BitcoinDep.title,
|
|
icon: Mock.BitcoinDep.icon,
|
|
kind: 'running',
|
|
versionRange: '>=26.0.0',
|
|
healthChecks: [],
|
|
},
|
|
'btc-rpc-proxy': {
|
|
title: Mock.ProxyDep.title,
|
|
icon: Mock.ProxyDep.icon,
|
|
kind: 'running',
|
|
versionRange: '>2.0.0',
|
|
healthChecks: [],
|
|
},
|
|
},
|
|
hosts: {},
|
|
storeExposedDependents: [],
|
|
outboundGateway: null,
|
|
registry: 'https://registry.start9.com/',
|
|
developerKey: 'developer-key',
|
|
plugin: { url: null },
|
|
tasks: {
|
|
config: {
|
|
active: true,
|
|
task: {
|
|
packageId: 'lnd',
|
|
actionId: 'config',
|
|
severity: 'critical',
|
|
reason: 'LND needs configuration before starting',
|
|
},
|
|
},
|
|
connect: {
|
|
active: true,
|
|
task: {
|
|
packageId: 'lnd',
|
|
actionId: 'connect',
|
|
severity: 'important',
|
|
reason: 'View LND connection details',
|
|
},
|
|
},
|
|
'bitcoind/config': {
|
|
active: true,
|
|
task: {
|
|
packageId: 'bitcoind',
|
|
actionId: 'config',
|
|
severity: 'critical',
|
|
reason: 'LND likes BTC a certain way',
|
|
input: {
|
|
kind: 'partial',
|
|
value: {
|
|
color: '#ffffff',
|
|
testnet: false,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
'bitcoind/rpc': {
|
|
active: true,
|
|
task: {
|
|
packageId: 'bitcoind',
|
|
actionId: 'rpc',
|
|
severity: 'important',
|
|
reason: `LND want's its own RPC credentials`,
|
|
input: {
|
|
kind: 'partial',
|
|
value: {
|
|
rpcsettings: {
|
|
rpcuser: 'lnd',
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
bitcoind: {
|
|
stateInfo: {
|
|
state: 'installed',
|
|
manifest: {
|
|
...Mock.MockManifestBitcoind,
|
|
version: '0.20.0:0-alpha.1',
|
|
},
|
|
},
|
|
s9pk: '/media/startos/data/package-data/archive/installed/asdfasdf.s9pk',
|
|
icon: '/assets/img/service-icons/bitcoin-core.svg',
|
|
lastBackup: new Date(new Date().valueOf() - 604800001).toISOString(),
|
|
statusInfo: {
|
|
desired: { main: 'stopped' },
|
|
error: null,
|
|
health: {},
|
|
started: null,
|
|
},
|
|
// status: {
|
|
// main: 'error',
|
|
// message: 'Bitcoin is erroring out',
|
|
// debug: 'This is a complete stack trace for bitcoin',
|
|
// onRebuild: 'start',
|
|
// },
|
|
actions: {
|
|
config: {
|
|
name: 'Set Config',
|
|
description: 'edit bitcoin.conf, <b>soo cool!</b>',
|
|
warning: null,
|
|
visibility: 'enabled',
|
|
allowedStatuses: 'any',
|
|
hasInput: true,
|
|
group: null,
|
|
},
|
|
rpc: {
|
|
name: 'Set RPC',
|
|
description: 'Create RPC Credentials',
|
|
warning: null,
|
|
visibility: 'enabled',
|
|
allowedStatuses: 'any',
|
|
hasInput: true,
|
|
group: null,
|
|
},
|
|
properties: {
|
|
name: 'View Properties',
|
|
description: 'view important information about Bitcoin',
|
|
warning: null,
|
|
visibility: 'hidden',
|
|
allowedStatuses: 'any',
|
|
hasInput: false,
|
|
group: null,
|
|
},
|
|
test: {
|
|
name: 'Do Another Thing',
|
|
description:
|
|
'An example of an action that shows a warning and takes no input',
|
|
warning: 'careful running this action',
|
|
visibility: { disabled: 'This is temporarily disabled' },
|
|
allowedStatuses: 'only-running',
|
|
hasInput: false,
|
|
group: null,
|
|
},
|
|
},
|
|
serviceInterfaces: {
|
|
ui: {
|
|
id: 'ui',
|
|
masked: false,
|
|
name: 'Web UI',
|
|
description:
|
|
'A launchable web app for you to interact with your Bitcoin node',
|
|
type: 'ui',
|
|
addressInfo: {
|
|
username: null,
|
|
hostId: 'abcdefg',
|
|
internalPort: 80,
|
|
scheme: 'http',
|
|
sslScheme: 'https',
|
|
suffix: '',
|
|
},
|
|
},
|
|
rpc: {
|
|
id: 'rpc',
|
|
masked: true,
|
|
name: 'RPC',
|
|
description:
|
|
'Used by dependent services and client wallets for connecting to your node',
|
|
type: 'api',
|
|
addressInfo: {
|
|
username: 'rpcuser',
|
|
hostId: 'bcdefgh',
|
|
internalPort: 8332,
|
|
scheme: 'http',
|
|
sslScheme: 'https',
|
|
suffix: '',
|
|
},
|
|
},
|
|
p2p: {
|
|
id: 'p2p',
|
|
masked: false,
|
|
name: 'P2P',
|
|
description:
|
|
'Used for connecting to other nodes on the Bitcoin network',
|
|
type: 'p2p',
|
|
addressInfo: {
|
|
username: null,
|
|
hostId: 'cdefghi',
|
|
internalPort: 8333,
|
|
scheme: 'bitcoin',
|
|
sslScheme: null,
|
|
suffix: '',
|
|
},
|
|
},
|
|
},
|
|
currentDependencies: {},
|
|
hosts: {
|
|
abcdefg: {
|
|
bindings: {
|
|
80: {
|
|
enabled: true,
|
|
net: {
|
|
assignedPort: 42080,
|
|
assignedSslPort: 42443,
|
|
},
|
|
addresses: {
|
|
enabled: ['203.0.113.45:42443'],
|
|
disabled: [],
|
|
available: [
|
|
{
|
|
ssl: true,
|
|
public: false,
|
|
hostname: 'adjective-noun.local',
|
|
port: 42443,
|
|
metadata: {
|
|
kind: 'mdns',
|
|
gateways: ['eth0'],
|
|
},
|
|
},
|
|
{
|
|
ssl: false,
|
|
public: false,
|
|
hostname: '10.0.0.1',
|
|
port: 42080,
|
|
metadata: { kind: 'ipv4', gateway: 'eth0' },
|
|
},
|
|
{
|
|
ssl: false,
|
|
public: false,
|
|
hostname: 'fe80::cd00:0cde:1257:211e:72cd',
|
|
port: 42080,
|
|
metadata: { kind: 'ipv6', gateway: 'eth0', scopeId: 2 },
|
|
},
|
|
{
|
|
ssl: true,
|
|
public: true,
|
|
hostname: '203.0.113.45',
|
|
port: 42443,
|
|
metadata: { kind: 'ipv4', gateway: 'eth0' },
|
|
},
|
|
{
|
|
ssl: true,
|
|
public: true,
|
|
hostname: 'bitcoin.example.com',
|
|
port: 42443,
|
|
metadata: { kind: 'public-domain', gateway: 'eth0' },
|
|
},
|
|
{
|
|
ssl: false,
|
|
public: false,
|
|
hostname: '192.168.10.11',
|
|
port: 42080,
|
|
metadata: { kind: 'ipv4', gateway: 'wlan0' },
|
|
},
|
|
{
|
|
ssl: false,
|
|
public: false,
|
|
hostname: 'fe80::cd00:0cde:1257:211e:1234',
|
|
port: 42080,
|
|
metadata: { kind: 'ipv6', gateway: 'wlan0', scopeId: 3 },
|
|
},
|
|
{
|
|
ssl: true,
|
|
public: false,
|
|
hostname: 'my-bitcoin.home',
|
|
port: 42443,
|
|
metadata: {
|
|
kind: 'private-domain',
|
|
gateways: ['wlan0'],
|
|
},
|
|
},
|
|
{
|
|
ssl: false,
|
|
public: false,
|
|
hostname:
|
|
'xyz789abc123def456ghi789jkl012mno345pqr678stu901vwx234.onion',
|
|
port: 42080,
|
|
metadata: {
|
|
kind: 'plugin',
|
|
packageId: 'tor',
|
|
removeAction: 'delete-onion-service',
|
|
overflowActions: ['regenerate-key'],
|
|
info: null,
|
|
},
|
|
},
|
|
{
|
|
ssl: true,
|
|
public: false,
|
|
hostname:
|
|
'xyz789abc123def456ghi789jkl012mno345pqr678stu901vwx234.onion',
|
|
port: 42443,
|
|
metadata: {
|
|
kind: 'plugin',
|
|
packageId: 'tor',
|
|
removeAction: 'delete-onion-service',
|
|
overflowActions: ['regenerate-key'],
|
|
info: null,
|
|
},
|
|
},
|
|
],
|
|
},
|
|
options: {
|
|
preferredExternalPort: 42443,
|
|
addSsl: {
|
|
preferredExternalPort: 42443,
|
|
alpn: { specified: ['http/1.1', 'h2'] },
|
|
addXForwardedHeaders: false,
|
|
},
|
|
secure: null,
|
|
},
|
|
},
|
|
},
|
|
publicDomains: {
|
|
'bitcoin.example.com': {
|
|
gateway: 'eth0',
|
|
acme: 'https://acme-v02.api.letsencrypt.org/directory',
|
|
},
|
|
},
|
|
privateDomains: {
|
|
'my-bitcoin.home': ['wlan0'],
|
|
},
|
|
portForwards: [
|
|
{
|
|
src: '203.0.113.45:443',
|
|
dst: '10.0.0.1:443',
|
|
gateway: 'eth0',
|
|
},
|
|
{
|
|
src: '203.0.113.45:42443',
|
|
dst: '10.0.0.1:42443',
|
|
gateway: 'eth0',
|
|
},
|
|
],
|
|
},
|
|
bcdefgh: {
|
|
bindings: {
|
|
8332: {
|
|
enabled: true,
|
|
net: {
|
|
assignedPort: 48332,
|
|
assignedSslPort: null,
|
|
},
|
|
addresses: {
|
|
enabled: [],
|
|
disabled: [],
|
|
available: [
|
|
{
|
|
ssl: false,
|
|
public: false,
|
|
hostname: 'adjective-noun.local',
|
|
port: 48332,
|
|
metadata: {
|
|
kind: 'mdns',
|
|
gateways: ['eth0'],
|
|
},
|
|
},
|
|
{
|
|
ssl: false,
|
|
public: false,
|
|
hostname: '10.0.0.1',
|
|
port: 48332,
|
|
metadata: { kind: 'ipv4', gateway: 'eth0' },
|
|
},
|
|
],
|
|
},
|
|
options: {
|
|
addSsl: null,
|
|
preferredExternalPort: 48332,
|
|
secure: { ssl: false },
|
|
},
|
|
},
|
|
},
|
|
publicDomains: {},
|
|
privateDomains: {},
|
|
portForwards: [],
|
|
},
|
|
cdefghi: {
|
|
bindings: {
|
|
8333: {
|
|
enabled: true,
|
|
net: {
|
|
assignedPort: 48333,
|
|
assignedSslPort: null,
|
|
},
|
|
addresses: {
|
|
enabled: [],
|
|
disabled: [],
|
|
available: [],
|
|
},
|
|
options: {
|
|
addSsl: null,
|
|
preferredExternalPort: 48333,
|
|
secure: { ssl: false },
|
|
},
|
|
},
|
|
},
|
|
publicDomains: {},
|
|
privateDomains: {},
|
|
portForwards: [],
|
|
},
|
|
},
|
|
storeExposedDependents: [],
|
|
outboundGateway: null,
|
|
registry: 'https://registry.start9.com/',
|
|
developerKey: 'developer-key',
|
|
plugin: { url: null },
|
|
tasks: {
|
|
// 'bitcoind-config': {
|
|
// task: {
|
|
// packageId: 'bitcoind',
|
|
// actionId: 'config',
|
|
// severity: 'critical',
|
|
// reason:
|
|
// 'You must run Config before starting Bitcoin for the first time',
|
|
// },
|
|
// active: true,
|
|
// },
|
|
'bitcoind-properties': {
|
|
task: {
|
|
packageId: 'bitcoind',
|
|
actionId: 'properties',
|
|
severity: 'important',
|
|
reason: 'Check out all the info about your Bitcoin node',
|
|
},
|
|
active: true,
|
|
},
|
|
},
|
|
},
|
|
tor: {
|
|
stateInfo: {
|
|
state: 'installed',
|
|
manifest: {
|
|
...Mock.MockManifestTor,
|
|
version: '0.4.8:0',
|
|
},
|
|
},
|
|
s9pk: '/media/startos/data/package-data/archive/installed/tor.s9pk',
|
|
icon: '/assets/img/service-icons/fallback.png',
|
|
lastBackup: null,
|
|
statusInfo: {
|
|
desired: { main: 'running' },
|
|
error: null,
|
|
health: {},
|
|
started: new Date().toISOString(),
|
|
},
|
|
actions: {
|
|
'create-onion-service': {
|
|
name: 'Create Onion Service',
|
|
description: 'Register a new .onion address for a service interface',
|
|
warning: null,
|
|
visibility: 'enabled',
|
|
allowedStatuses: 'only-running',
|
|
hasInput: true,
|
|
group: null,
|
|
},
|
|
'delete-onion-service': {
|
|
name: 'Delete Onion Service',
|
|
description: 'Remove an existing .onion address',
|
|
warning: 'This will permanently remove the .onion address.',
|
|
visibility: 'enabled',
|
|
allowedStatuses: 'only-running',
|
|
hasInput: false,
|
|
group: null,
|
|
},
|
|
'regenerate-key': {
|
|
name: 'Regenerate Key',
|
|
description: 'Generate a new key pair and .onion address',
|
|
warning:
|
|
'This will change the .onion address. Any bookmarks or links to the old address will stop working.',
|
|
visibility: 'enabled',
|
|
allowedStatuses: 'only-running',
|
|
hasInput: false,
|
|
group: null,
|
|
},
|
|
},
|
|
serviceInterfaces: {},
|
|
currentDependencies: {},
|
|
hosts: {},
|
|
storeExposedDependents: [],
|
|
outboundGateway: null,
|
|
registry: 'https://registry.start9.com/',
|
|
developerKey: 'developer-key',
|
|
plugin: { url: { tableAction: 'create-onion-service' } },
|
|
tasks: {},
|
|
},
|
|
},
|
|
}
|