{{ pkg.manifest.title }}
{{ pkg.manifest.version | displayEmver }}
-- Released: {{ pkg['published-at'] | date: 'medium' }} +
+ Released: {{ published | date : 'medium' }}
From cb7790ccbaf9e5eb447bd58528b688892d72780b Mon Sep 17 00:00:00 2001
From: Matt Hill {{ pkg.manifest.version | displayEmver }}
- Released: {{ pkg['published-at'] | date: 'medium' }}
+
+ Released: {{ published | date : 'medium' }}
{{ pkg.manifest.title }}
No config options for {{ pkg.manifest.title }} {{
@@ -112,7 +113,7 @@
{{ tor }} {{ address }} Service does not use a Tor Address {{ lan }} N/A {{ manifest['marketing-site'] || 'Not provided' }}
- {{ toUpload.manifest.version | displayEmver }}
+ {{ interface.def.name }}
- {{ interface.def.description }}
+ {{ addressInfo.name }}
+ {{ addressInfo.description }}
Tor Address
- {{ address | addressType }}
+ Tor Address
- LAN Address
- LAN Address
-
+
{{ manifest.title }}
@@ -17,17 +17,18 @@
[installProgress]="pkg.entry['install-progress']"
weight="bold"
size="small"
- [sigtermTimeout]="manifest.main['sigterm-timeout']"
>
Marketing Site
+ Website
+
{{ title }} version {{ version | displayEmver }} is compatible.
{{ title }} version {{ version | displayEmver }} is NOT compatible.
diff --git a/frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-show/marketplace-show-dependent/marketplace-show-dependent.component.scss b/frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-show/components/marketplace-show-dependent/marketplace-show-dependent.component.scss
similarity index 100%
rename from frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-show/marketplace-show-dependent/marketplace-show-dependent.component.scss
rename to frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-show/components/marketplace-show-dependent/marketplace-show-dependent.component.scss
diff --git a/frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-show/marketplace-show-dependent/marketplace-show-dependent.component.ts b/frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-show/components/marketplace-show-dependent/marketplace-show-dependent.component.ts
similarity index 100%
rename from frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-show/marketplace-show-dependent/marketplace-show-dependent.component.ts
rename to frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-show/components/marketplace-show-dependent/marketplace-show-dependent.component.ts
diff --git a/frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-show/marketplace-show-header/marketplace-show-header.component.html b/frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-show/components/marketplace-show-header/marketplace-show-header.component.html
similarity index 100%
rename from frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-show/marketplace-show-header/marketplace-show-header.component.html
rename to frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-show/components/marketplace-show-header/marketplace-show-header.component.html
diff --git a/frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-show/marketplace-show-header/marketplace-show-header.component.ts b/frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-show/components/marketplace-show-header/marketplace-show-header.component.ts
similarity index 100%
rename from frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-show/marketplace-show-header/marketplace-show-header.component.ts
rename to frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-show/components/marketplace-show-header/marketplace-show-header.component.ts
diff --git a/frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-show/marketplace-show.module.ts b/frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-show/marketplace-show.module.ts
index 3cef27e61..1905ffba8 100644
--- a/frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-show/marketplace-show.module.ts
+++ b/frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-show/marketplace-show.module.ts
@@ -16,9 +16,7 @@ import {
} from '@start9labs/marketplace'
import { MarketplaceStatusModule } from '../marketplace-status/marketplace-status.module'
import { MarketplaceShowPage } from './marketplace-show.page'
-import { MarketplaceShowHeaderComponent } from './marketplace-show-header/marketplace-show-header.component'
-import { MarketplaceShowDependentComponent } from './marketplace-show-dependent/marketplace-show-dependent.component'
-import { MarketplaceShowControlsComponent } from './marketplace-show-controls/marketplace-show-controls.component'
+import { MarketplaceShowComponentsModule } from './components/marketplace-show-components.module'
const routes: Routes = [
{
@@ -41,18 +39,8 @@ const routes: Routes = [
AboutModule,
DependenciesModule,
AdditionalModule,
+ MarketplaceShowComponentsModule,
],
- declarations: [
- MarketplaceShowPage,
- MarketplaceShowHeaderComponent,
- MarketplaceShowControlsComponent,
- MarketplaceShowDependentComponent,
- ],
- exports: [
- MarketplaceShowPage,
- MarketplaceShowHeaderComponent,
- MarketplaceShowControlsComponent,
- MarketplaceShowDependentComponent,
- ],
+ declarations: [MarketplaceShowPage],
})
export class MarketplaceShowPageModule {}
diff --git a/frontend/projects/ui/src/app/pages/server-routes/server-backup/backing-up/backing-up.component.html b/frontend/projects/ui/src/app/pages/server-routes/server-backup/backing-up/backing-up.component.html
index 922baf8f2..b3ffd149b 100644
--- a/frontend/projects/ui/src/app/pages/server-routes/server-backup/backing-up/backing-up.component.html
+++ b/frontend/projects/ui/src/app/pages/server-routes/server-backup/backing-up/backing-up.component.html
@@ -15,9 +15,9 @@
+
Upload .s9pk package file
-
+
+
-
-
-
{{ toUpload.manifest.title }}
- Upload .s9pk package file
+
',
- warning: 'Chain will have to resync!',
- default: false,
- },
- randomEnum: {
- name: 'Random Enum',
- type: 'enum',
- 'value-names': {
- null: 'Null',
- good: 'Good',
- bad: 'Bad',
- ugly: 'Ugly',
- },
- default: 'null',
- description: 'This is not even real.',
- warning: 'Be careful changing this!',
- values: ['null', 'good', 'bad', 'ugly'],
- },
- 'emergency-contact': {
- name: 'Emergency Contact',
- type: 'object',
- description: 'The person to contact in case of emergency.',
- warning: null,
- spec: {
- name: {
- type: 'string',
- name: 'Name',
- description: null,
- nullable: false,
- masked: false,
- pattern: '^[a-zA-Z]+$',
- 'pattern-description': 'Must contain only letters.',
- placeholder: null,
- textarea: false,
- warning: null,
- default: null,
- },
- email: {
- type: 'string',
- name: 'Email',
- description: null,
- nullable: false,
- masked: false,
- placeholder: null,
- pattern: null,
- 'pattern-description': null,
- textarea: false,
- warning: null,
- default: null,
- },
- },
- },
- ips: {
- name: 'Whitelist IPs',
- type: 'list',
- subtype: 'string',
- description:
- 'external ip addresses that are authorized to access your Bitcoin node',
- warning:
- 'Any IP you allow here will have RPC access to your Bitcoin node.',
- range: '[1,10]',
- default: ['192.168.1.1'],
- spec: {
- placeholder: null,
- pattern: '^[0-9]{1,3}([,.][0-9]{1,3})?$',
- 'pattern-description': 'Must be a valid IP address',
- masked: false,
- },
- },
- bitcoinNode: {
- type: 'union',
- default: 'internal',
- tag: {
- id: 'type',
- 'variant-names': {
- internal: 'Internal',
- external: 'External',
- },
- name: 'Bitcoin Node Settings',
- description: 'The node settings',
- warning: 'Careful changing this',
- },
- variants: {
- internal: {
- 'friendly-name': {
- name: 'Friendly Name',
- type: 'string',
- description: 'the lan address',
- nullable: true,
- masked: false,
- placeholder: null,
- pattern: null,
- 'pattern-description': null,
- textarea: false,
- warning: null,
- default: null,
- },
- },
- external: {
- 'public-domain': {
- name: 'Public Domain',
- type: 'string',
- description: 'the public address of the node',
- nullable: false,
- default: 'bitcoinnode.com',
- pattern: '.*',
- 'pattern-description': 'anything',
- masked: false,
- placeholder: null,
- textarea: false,
- warning: null,
- },
- },
- },
- },
- },
- },
- },
dependencies: {},
+ 'os-version': '0.4.0',
}
export const MockManifestLnd: Manifest = {
@@ -377,15 +84,10 @@ export module Mock {
short: 'A bolt spec compliant client.',
long: 'More info about LND. More info about LND. More info about LND.',
},
- 'release-notes': 'Dual funded channels!',
assets: {
icon: 'icon.png',
- license: 'LICENSE.md',
- instructions: 'INSTRUCTIONS.md',
- docker_images: 'image.tar',
- assets: './assets',
- scripts: './scripts',
},
+ 'release-notes': 'Dual funded channels!',
license: 'MIT',
'wrapper-repo': 'https://github.com/start9labs/lnd-wrapper',
'upstream-repo': 'https://github.com/lightningnetwork/lnd',
@@ -400,104 +102,6 @@ export module Mock {
start: 'Starting LND is good for your health.',
stop: null,
},
- main: {
- type: 'docker',
- image: '',
- system: true,
- entrypoint: '',
- args: [],
- mounts: {},
- 'io-format': DockerIoFormat.Yaml,
- inject: false,
- 'shm-size': '',
- 'sigterm-timeout': '10000µs',
- },
- config: {
- get: null,
- set: null,
- },
- volumes: {},
- 'min-os-version': '0.2.12',
- interfaces: {
- rpc: {
- name: 'RPC interface',
- description: 'Good for connecting to your node at a distance.',
- ui: true,
- 'tor-config': {
- 'port-mapping': {},
- },
- 'lan-config': {
- '44': {
- ssl: true,
- mapping: 33,
- },
- },
- protocols: [],
- },
- grpc: {
- name: 'GRPC',
- description: 'Certain wallet use grpc.',
- ui: false,
- 'tor-config': {
- 'port-mapping': {},
- },
- 'lan-config': {
- '66': {
- ssl: true,
- mapping: 55,
- },
- },
- protocols: [],
- },
- },
- backup: {
- create: {
- type: 'docker',
- image: '',
- system: true,
- entrypoint: '',
- args: [],
- mounts: {},
- 'io-format': DockerIoFormat.Yaml,
- inject: false,
- 'shm-size': '',
- 'sigterm-timeout': null,
- },
- restore: {
- type: 'docker',
- image: '',
- system: true,
- entrypoint: '',
- args: [],
- mounts: {},
- 'io-format': DockerIoFormat.Yaml,
- inject: false,
- 'shm-size': '',
- 'sigterm-timeout': null,
- },
- },
- migrations: null,
- actions: {
- resync: {
- name: 'Resync Network Graph',
- description: 'Your node will resync its network graph.',
- warning: 'This will take a couple hours.',
- 'allowed-statuses': [PackageMainStatus.Running],
- implementation: {
- type: 'docker',
- image: '',
- system: true,
- entrypoint: '',
- args: [],
- mounts: {},
- 'io-format': DockerIoFormat.Yaml,
- inject: false,
- 'shm-size': '',
- 'sigterm-timeout': null,
- },
- 'input-spec': null,
- },
- },
dependencies: {
bitcoind: {
version: '=0.21.0',
@@ -506,7 +110,6 @@ export module Mock {
type: 'opt-out',
how: 'You can use an external node from your server if you prefer.',
},
- config: null,
},
'btc-rpc-proxy': {
version: '>=0.2.2',
@@ -516,9 +119,9 @@ export module Mock {
type: 'opt-in',
how: `To use Proxy's user management system, go to LND config and select Bitcoin Proxy under Bitcoin config.`,
},
- config: null,
},
},
+ 'os-version': '0.4.0',
}
export const MockManifestBitcoinProxy: Manifest = {
@@ -530,15 +133,10 @@ export module Mock {
short: 'A super charger for your Bitcoin node.',
long: 'More info about Bitcoin Proxy. More info about Bitcoin Proxy. More info about Bitcoin Proxy.',
},
- 'release-notes': 'Even better support for Bitcoin and wallets!',
assets: {
icon: 'icon.png',
- license: 'LICENSE.md',
- instructions: 'INSTRUCTIONS.md',
- docker_images: 'image.tar',
- assets: './assets',
- scripts: './scripts',
},
+ 'release-notes': 'Even better support for Bitcoin and wallets!',
license: 'MIT',
'wrapper-repo': 'https://github.com/start9labs/btc-rpc-proxy-wrapper',
'upstream-repo': 'https://github.com/Kixunil/btc-rpc-proxy',
@@ -552,66 +150,6 @@ export module Mock {
start: null,
stop: null,
},
- main: {
- type: 'docker',
- image: '',
- system: true,
- entrypoint: '',
- args: [''],
- mounts: {},
- 'io-format': DockerIoFormat.Yaml,
- inject: false,
- 'shm-size': '',
- 'sigterm-timeout': '1m',
- },
- config: { get: {} as any, set: {} as any },
- volumes: {},
- 'min-os-version': '0.2.12',
- interfaces: {
- rpc: {
- name: 'RPC interface',
- description: 'Good for connecting to your node at a distance.',
- ui: false,
- 'tor-config': {
- 'port-mapping': {},
- },
- 'lan-config': {
- 44: {
- ssl: true,
- mapping: 33,
- },
- },
- protocols: [],
- },
- },
- backup: {
- create: {
- type: 'docker',
- image: '',
- system: true,
- entrypoint: '',
- args: [''],
- mounts: {},
- 'io-format': DockerIoFormat.Yaml,
- inject: false,
- 'shm-size': '',
- 'sigterm-timeout': null,
- },
- restore: {
- type: 'docker',
- image: '',
- system: true,
- entrypoint: '',
- args: [''],
- mounts: {},
- 'io-format': DockerIoFormat.Yaml,
- inject: false,
- 'shm-size': '',
- 'sigterm-timeout': null,
- },
- },
- migrations: null,
- actions: {},
dependencies: {
bitcoind: {
version: '>=0.20.0',
@@ -619,34 +157,9 @@ export module Mock {
requirement: {
type: 'required',
},
- config: {
- check: {
- type: 'docker',
- image: 'alpine',
- system: true,
- entrypoint: 'true',
- args: [],
- mounts: {},
- 'io-format': DockerIoFormat.Cbor,
- inject: false,
- 'shm-size': '10m',
- 'sigterm-timeout': null,
- },
- 'auto-configure': {
- type: 'docker',
- image: 'alpine',
- system: true,
- entrypoint: 'cat',
- args: [],
- mounts: {},
- 'io-format': DockerIoFormat.Cbor,
- inject: false,
- 'shm-size': '10m',
- 'sigterm-timeout': null,
- },
- },
},
},
+ 'os-version': '0.4.0',
}
export const BitcoinDep: DependencyMetadata = {
@@ -1993,14 +1506,9 @@ export module Mock {
export const bitcoind: PackageDataEntry = {
state: PackageState.Installed,
- 'static-files': {
- license: '/public/package-data/bitcoind/0.20.0/LICENSE.md',
- icon: '/assets/img/service-icons/bitcoind.svg',
- instructions: '/public/package-data/bitcoind/0.20.0/INSTRUCTIONS.md',
- },
manifest: MockManifestBitcoind,
+ icon: '/assets/img/service-icons/bitcoind.png',
installed: {
- manifest: MockManifestBitcoind,
'last-backup': null,
status: {
configured: true,
@@ -2011,35 +1519,62 @@ export module Mock {
},
'dependency-errors': {},
},
- 'interface-addresses': {
- ui: {
- 'tor-address': 'bitcoind-ui-address.onion',
- 'lan-address': 'bitcoind-ui-address.local',
- },
+ 'address-info': {
rpc: {
- 'tor-address': 'bitcoind-rpc-address.onion',
- 'lan-address': 'bitcoind-rpc-address.local',
+ name: 'Bitcoin RPC',
+ description: `Bitcoin's RPC interface`,
+ addresses: [
+ 'http://bitcoind-rpc-address.onion',
+ 'https://bitcoind-rpc-address.local',
+ 'https://192.168.1.1:8332',
+ ],
+ ui: true,
},
p2p: {
- 'tor-address': 'bitcoind-p2p-address.onion',
- 'lan-address': 'bitcoind-p2p-address.local',
+ name: 'Bitcoin P2P',
+ description: `Bitcoin's P2P interface`,
+ addresses: [
+ 'bitcoin://bitcoind-rpc-address.onion',
+ 'bitcoin://192.168.1.1:8333',
+ ],
+ ui: true,
},
},
'current-dependencies': {},
'dependency-info': {},
'marketplace-url': 'https://registry.start9.com/',
'developer-key': 'developer-key',
+ 'has-config': true,
+ },
+ actions: {
+ resync: {
+ name: 'Resync Blockchain',
+ description: 'Use this to resync the Bitcoin blockchain from genesis',
+ warning: 'This will take a couple of days.',
+ disabled: null,
+ group: null,
+ 'input-spec': {
+ reason: {
+ type: 'string',
+ name: 'Re-sync Reason',
+ description: 'Your reason for re-syncing. Why are you doing this?',
+ placeholder: null,
+ nullable: false,
+ masked: false,
+ pattern: '^[a-zA-Z]+$',
+ 'pattern-description': 'Must contain only letters.',
+ textarea: false,
+ warning: null,
+ default: null,
+ },
+ },
+ },
},
- 'install-progress': undefined,
}
export const bitcoinProxy: PackageDataEntry = {
state: PackageState.Installed,
- 'static-files': {
- license: '/public/package-data/btc-rpc-proxy/0.20.0/LICENSE.md',
- icon: '/assets/img/service-icons/btc-rpc-proxy.png',
- instructions: '/public/package-data/btc-rpc-proxy/0.20.0/INSTRUCTIONS.md',
- },
+ icon: '/assets/img/service-icons/btc-rpc-proxy.png',
manifest: MockManifestBitcoinProxy,
installed: {
'last-backup': null,
@@ -2050,11 +1585,15 @@ export module Mock {
},
'dependency-errors': {},
},
- manifest: MockManifestBitcoinProxy,
- 'interface-addresses': {
+ 'address-info': {
rpc: {
- 'tor-address': 'bitcoinproxy-rpc-address.onion',
- 'lan-address': 'bitcoinproxy-rpc-address.local',
+ name: 'Proxy RPC addresses',
+ description: `Use these addresses to access Proxy's RPC interface`,
+ addresses: [
+ 'http://bitcoinproxy-rpc-address.onion',
+ 'https://bitcoinproxy-rpc-address.local',
+ ],
+ ui: false,
},
},
'current-dependencies': {
@@ -2064,23 +1603,20 @@ export module Mock {
},
'dependency-info': {
bitcoind: {
- manifest: Mock.MockManifestBitcoind,
+ title: 'Bitcoin Core',
icon: 'assets/img/service-icons/bitcoind.svg',
},
},
'marketplace-url': 'https://registry.start9.com/',
'developer-key': 'developer-key',
+ 'has-config': true,
},
- 'install-progress': undefined,
+ actions: {},
}
export const lnd: PackageDataEntry = {
state: PackageState.Installed,
- 'static-files': {
- license: '/public/package-data/lnd/0.11.0/LICENSE.md',
- icon: '/assets/img/service-icons/lnd.png',
- instructions: '/public/package-data/lnd/0.11.0/INSTRUCTIONS.md',
- },
+ icon: '/assets/img/service-icons/lnd.png',
manifest: MockManifestLnd,
installed: {
'last-backup': null,
@@ -2095,15 +1631,26 @@ export module Mock {
},
},
},
- manifest: MockManifestLnd,
- 'interface-addresses': {
- rpc: {
- 'tor-address': 'lnd-rpc-address.onion',
- 'lan-address': 'lnd-rpc-address.local',
+ 'address-info': {
+ ui: {
+ name: 'Web UI',
+ description: 'The browser web interface for LND',
+ addresses: [
+ 'http://lnd-ui-address.onion',
+ 'https://lnd-ui-address.local',
+ 'https://192.168.1.1:3449',
+ ],
+ ui: true,
},
grpc: {
- 'tor-address': 'lnd-grpc-address.onion',
- 'lan-address': 'lnd-grpc-address.local',
+ name: 'gRPC',
+ description: 'For connecting to LND gRPC interface',
+ addresses: [
+ 'http://lnd-grpc-address.onion',
+ 'https://lnd-grpc-address.local',
+ 'https://192.168.1.1:3449',
+ ],
+ ui: true,
},
},
'current-dependencies': {
@@ -2116,23 +1663,24 @@ export module Mock {
},
'dependency-info': {
bitcoind: {
- manifest: Mock.MockManifestBitcoind,
+ title: 'Bitcoin Core',
icon: 'assets/img/service-icons/bitcoind.svg',
},
'btc-rpc-proxy': {
- manifest: Mock.MockManifestBitcoinProxy,
+ title: 'Bitcoin Proxy',
icon: 'assets/img/service-icons/btc-rpc-proxy.png',
},
},
'marketplace-url': 'https://registry.start9.com/',
'developer-key': 'developer-key',
+ 'has-config': true,
},
- 'install-progress': undefined,
+ actions: {},
}
export const LocalPkgs: { [key: string]: PackageDataEntry } = {
- bitcoind: bitcoind,
+ bitcoind,
'btc-rpc-proxy': bitcoinProxy,
- lnd: lnd,
+ lnd,
}
}
diff --git a/frontend/projects/ui/src/app/services/api/api.types.ts b/frontend/projects/ui/src/app/services/api/api.types.ts
index 1fb2e09fb..b2b519b3a 100644
--- a/frontend/projects/ui/src/app/services/api/api.types.ts
+++ b/frontend/projects/ui/src/app/services/api/api.types.ts
@@ -1,11 +1,10 @@
import { Dump, Revision } from 'patch-db-client'
-import { MarketplacePkg, StoreInfo } from '@start9labs/marketplace'
+import { MarketplacePkg, StoreInfo, Manifest } from '@start9labs/marketplace'
import { PackagePropertiesVersioned } from 'src/app/util/properties.util'
import { InputSpec } from 'start-sdk/types/config-types'
import {
DataModel,
DependencyError,
- Manifest,
} from 'src/app/services/patch-db/data-model'
import { StartOSDiskInfo, LogsRes, ServerLogsReq } from '@start9labs/shared'
diff --git a/frontend/projects/ui/src/app/services/api/embassy-mock-api.service.ts b/frontend/projects/ui/src/app/services/api/embassy-mock-api.service.ts
index 340bb83bf..5aa51c02e 100644
--- a/frontend/projects/ui/src/app/services/api/embassy-mock-api.service.ts
+++ b/frontend/projects/ui/src/app/services/api/embassy-mock-api.service.ts
@@ -15,7 +15,6 @@ import {
PackageDataEntry,
PackageMainStatus,
PackageState,
- ServerStatus,
} from 'src/app/services/patch-db/data-model'
import { CifsBackupTarget, RR } from './api.types'
import { parsePropertiesPermissive } from 'src/app/util/properties.util'
@@ -999,11 +998,11 @@ export class MockApiService extends ApiService {
this.mockRevision(patch2)
setTimeout(async () => {
- const patch3: Operation
',
- warning: 'Chain will have to resync!',
- default: false,
- },
- randomEnum: {
- name: 'Random Enum',
- type: 'enum',
- 'value-names': {
- null: 'Null',
- good: 'Good',
- bad: 'Bad',
- ugly: 'Ugly',
- },
- default: 'null',
- description: 'This is not even real.',
- warning: 'Be careful changing this!',
- values: ['null', 'good', 'bad', 'ugly'],
- },
- 'emergency-contact': {
- name: 'Emergency Contact',
- type: 'object',
- description: 'The person to contact in case of emergency.',
- warning: null,
- spec: {
- name: {
- type: 'string',
- name: 'Name',
- description: null,
- nullable: false,
- masked: false,
- pattern: '^[a-zA-Z]+$',
- 'pattern-description': 'Must contain only letters.',
- placeholder: null,
- textarea: false,
- warning: null,
- default: null,
- },
- email: {
- type: 'string',
- name: 'Email',
- description: null,
- nullable: false,
- masked: false,
- placeholder: null,
- pattern: null,
- 'pattern-description': null,
- textarea: false,
- warning: null,
- default: null,
- },
- },
- },
- ips: {
- name: 'Whitelist IPs',
- type: 'list',
- subtype: 'string',
- description:
- 'external ip addresses that are authorized to access your Bitcoin node',
- warning:
- 'Any IP you allow here will have RPC access to your Bitcoin node.',
- range: '[1,10]',
- default: ['192.168.1.1'],
- spec: {
- pattern: '^[0-9]{1,3}([,.][0-9]{1,3})?$',
- 'pattern-description': 'Must be a valid IP address',
- masked: false,
- placeholder: null,
- },
- },
- bitcoinNode: {
- type: 'union',
- default: 'internal',
- tag: {
- id: 'type',
- 'variant-names': {
- internal: 'Internal',
- external: 'External',
- },
- name: 'Bitcoin Node Settings',
- description: 'The node settings',
- warning: 'Careful changing this',
- },
- variants: {
- internal: {
- 'friendly-name': {
- name: 'Friendly Name',
- type: 'string',
- description: 'the lan address',
- nullable: true,
- masked: false,
- placeholder: null,
- pattern: null,
- 'pattern-description': null,
- textarea: false,
- warning: null,
- default: null,
- },
- },
- external: {
- 'public-domain': {
- name: 'Public Domain',
- type: 'string',
- description: 'the public address of the node',
- nullable: false,
- default: 'bitcoinnode.com',
- pattern: '.*',
- 'pattern-description': 'anything',
- masked: false,
- placeholder: null,
- textarea: false,
- warning: null,
- },
- },
- },
- },
- },
- },
- },
dependencies: {},
+ 'os-version': '0.4.0',
},
installed: {
- manifest: {
- ...Mock.MockManifestBitcoind,
- version: '0.20.0',
- },
'last-backup': null,
status: {
configured: true,
@@ -446,38 +137,43 @@ export const mockPatchData: DataModel = {
'unnecessary-health-check': {
name: 'Totally Unnecessary',
result: HealthResult.Disabled,
+ reason: 'You disabled this on purpose',
},
},
},
'dependency-errors': {},
},
- 'interface-addresses': {
- ui: {
- 'tor-address': 'bitcoind-ui-address.onion',
- 'lan-address': 'bitcoind-ui-address.local',
- },
+ 'address-info': {
rpc: {
- 'tor-address': 'bitcoind-rpc-address.onion',
- 'lan-address': 'bitcoind-rpc-address.local',
+ name: 'Bitcoin RPC',
+ description: `Bitcoin's RPC interface`,
+ addresses: [
+ 'http://bitcoind-rpc-address.onion',
+ 'https://bitcoind-rpc-address.local',
+ 'https://192.168.1.1:8332',
+ ],
+ ui: true,
},
p2p: {
- 'tor-address': 'bitcoind-p2p-address.onion',
- 'lan-address': 'bitcoind-p2p-address.local',
+ name: 'Bitcoin P2P',
+ description: `Bitcoin's P2P interface`,
+ addresses: [
+ 'bitcoin://bitcoind-rpc-address.onion',
+ 'bitcoin://192.168.1.1:8333',
+ ],
+ ui: true,
},
},
'current-dependencies': {},
'dependency-info': {},
'marketplace-url': 'https://registry.start9.com/',
'developer-key': 'developer-key',
+ 'has-config': true,
},
},
lnd: {
state: PackageState.Installed,
- 'static-files': {
- license: '/public/package-data/lnd/0.11.1/LICENSE.md',
- icon: '/assets/img/service-icons/lnd.png',
- instructions: '/public/package-data/lnd/0.11.1/INSTRUCTIONS.md',
- },
+ icon: '/assets/img/service-icons/lnd.png',
manifest: {
id: 'lnd',
title: 'Lightning Network Daemon',
@@ -486,15 +182,10 @@ export const mockPatchData: DataModel = {
short: 'A bolt spec compliant client.',
long: 'More info about LND. More info about LND. More info about LND.',
},
- 'release-notes': 'Dual funded channels!',
assets: {
icon: 'icon.png',
- license: 'LICENSE.md',
- instructions: 'INSTRUCTIONS.md',
- docker_images: 'image.tar',
- assets: './assets',
- scripts: './scripts',
},
+ 'release-notes': 'Dual funded channels!',
license: 'MIT',
'wrapper-repo': 'https://github.com/start9labs/lnd-wrapper',
'upstream-repo': 'https://github.com/lightningnetwork/lnd',
@@ -509,104 +200,6 @@ export const mockPatchData: DataModel = {
start: 'Starting LND is good for your health.',
stop: null,
},
- main: {
- type: 'docker',
- image: '',
- system: true,
- entrypoint: '',
- args: [],
- mounts: {},
- 'io-format': DockerIoFormat.Yaml,
- inject: false,
- 'shm-size': '',
- 'sigterm-timeout': '0.5s',
- },
- config: {
- get: null,
- set: null,
- },
- volumes: {},
- 'min-os-version': '0.2.12',
- interfaces: {
- rpc: {
- name: 'RPC interface',
- description: 'Good for connecting to your node at a distance.',
- ui: true,
- 'tor-config': {
- 'port-mapping': {},
- },
- 'lan-config': {
- '44': {
- ssl: true,
- mapping: 33,
- },
- },
- protocols: [],
- },
- grpc: {
- name: 'GRPC',
- description: 'Certain wallet use grpc.',
- ui: false,
- 'tor-config': {
- 'port-mapping': {},
- },
- 'lan-config': {
- '66': {
- ssl: true,
- mapping: 55,
- },
- },
- protocols: [],
- },
- },
- backup: {
- create: {
- type: 'docker',
- image: '',
- system: true,
- entrypoint: '',
- args: [],
- mounts: {},
- 'io-format': DockerIoFormat.Yaml,
- inject: false,
- 'shm-size': '',
- 'sigterm-timeout': null,
- },
- restore: {
- type: 'docker',
- image: '',
- system: true,
- entrypoint: '',
- args: [],
- mounts: {},
- 'io-format': DockerIoFormat.Yaml,
- inject: false,
- 'shm-size': '',
- 'sigterm-timeout': null,
- },
- },
- migrations: null,
- actions: {
- resync: {
- name: 'Resync Network Graph',
- description: 'Your node will resync its network graph.',
- warning: 'This will take a couple hours.',
- 'allowed-statuses': [PackageMainStatus.Running],
- implementation: {
- type: 'docker',
- image: '',
- system: true,
- entrypoint: '',
- args: [],
- mounts: {},
- 'io-format': DockerIoFormat.Yaml,
- inject: false,
- 'shm-size': '',
- 'sigterm-timeout': null,
- },
- 'input-spec': null,
- },
- },
dependencies: {
bitcoind: {
version: '=0.21.0',
@@ -615,7 +208,6 @@ export const mockPatchData: DataModel = {
type: 'opt-out',
how: 'You can use an external node from your server if you prefer.',
},
- config: null,
},
'btc-rpc-proxy': {
version: '>=0.2.2',
@@ -625,9 +217,9 @@ export const mockPatchData: DataModel = {
type: 'opt-in',
how: `To use Proxy's user management system, go to LND config and select Bitcoin Proxy under Bitcoin config.`,
},
- config: null,
},
},
+ 'os-version': '0.4.0',
},
installed: {
manifest: {
@@ -647,14 +239,26 @@ export const mockPatchData: DataModel = {
},
},
},
- 'interface-addresses': {
- rpc: {
- 'tor-address': 'lnd-rpc-address.onion',
- 'lan-address': 'lnd-rpc-address.local',
+ 'address-info': {
+ ui: {
+ name: 'Web UI',
+ description: 'The browser web interface for LND',
+ addresses: [
+ 'http://lnd-ui-address.onion',
+ 'https://lnd-ui-address.local',
+ 'https://192.168.1.1:3449',
+ ],
+ ui: true,
},
grpc: {
- 'tor-address': 'lnd-grpc-address.onion',
- 'lan-address': 'lnd-grpc-address.local',
+ name: 'gRPC',
+ description: 'For connecting to LND gRPC interface',
+ addresses: [
+ 'http://lnd-grpc-address.onion',
+ 'https://lnd-grpc-address.local',
+ 'https://192.168.1.1:3449',
+ ],
+ ui: true,
},
},
'current-dependencies': {
@@ -667,20 +271,17 @@ export const mockPatchData: DataModel = {
},
'dependency-info': {
bitcoind: {
- manifest: {
- title: 'Bitcoin Core',
- } as Manifest,
+ title: 'Bitcoin Core',
icon: 'assets/img/service-icons/bitcoind.svg',
},
'btc-rpc-proxy': {
- manifest: {
- title: 'Bitcoin Proxy',
- } as Manifest,
+ title: 'Bitcoin Proxy',
icon: 'assets/img/service-icons/btc-rpc-proxy.png',
},
},
'marketplace-url': 'https://registry.start9.com/',
'developer-key': 'developer-key',
+ 'has-config': true,
},
},
},
diff --git a/frontend/projects/ui/src/app/services/config.service.ts b/frontend/projects/ui/src/app/services/config.service.ts
index eb8194729..c6d25bf98 100644
--- a/frontend/projects/ui/src/app/services/config.service.ts
+++ b/frontend/projects/ui/src/app/services/config.service.ts
@@ -2,10 +2,8 @@ import { DOCUMENT } from '@angular/common'
import { Inject, Injectable } from '@angular/core'
import { WorkspaceConfig } from '@start9labs/shared'
import {
- InterfaceDef,
- PackageDataEntry,
+ InstalledPackageInfo,
PackageMainStatus,
- PackageState,
} from 'src/app/services/patch-db/data-model'
const {
@@ -52,56 +50,12 @@ export class ConfigService {
isSecure(): boolean {
return window.isSecureContext || this.isTor()
}
-
- isLaunchable(
- state: PackageState,
- status: PackageMainStatus,
- interfaces: Record