mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-30 20:14:49 +00:00
Merge branch 'integration/new-container-runtime' of github.com:Start9Labs/start-os into integration/new-container-runtime
This commit is contained in:
@@ -40,8 +40,6 @@ const ICONS = [
|
|||||||
'file-tray-stacked-outline',
|
'file-tray-stacked-outline',
|
||||||
'finger-print-outline',
|
'finger-print-outline',
|
||||||
'flash-outline',
|
'flash-outline',
|
||||||
'flask-outline',
|
|
||||||
'flash-off-outline',
|
|
||||||
'folder-open-outline',
|
'folder-open-outline',
|
||||||
'globe-outline',
|
'globe-outline',
|
||||||
'grid-outline',
|
'grid-outline',
|
||||||
@@ -70,6 +68,7 @@ const ICONS = [
|
|||||||
'receipt-outline',
|
'receipt-outline',
|
||||||
'refresh',
|
'refresh',
|
||||||
'reload',
|
'reload',
|
||||||
|
'reload-circle-outline',
|
||||||
'remove',
|
'remove',
|
||||||
'remove-circle-outline',
|
'remove-circle-outline',
|
||||||
'remove-outline',
|
'remove-outline',
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<ion-content class="ion-padding-top with-widgets">
|
<ion-content class="ion-padding-top with-widgets">
|
||||||
<ion-item-group *ngIf="serviceInterfaces$ | async as serviceInterfaces">
|
<ion-item-group *ngIf="serviceInterfaces$ | async as serviceInterfaces">
|
||||||
<ng-container *ngIf="serviceInterfaces.ui.length">
|
<ng-container *ngIf="serviceInterfaces.ui.length">
|
||||||
<ion-item-divider>User Interfaces (UI)</ion-item-divider>
|
<ion-item-divider>User Interfaces</ion-item-divider>
|
||||||
<app-interfaces-item
|
<app-interfaces-item
|
||||||
*ngFor="let ui of serviceInterfaces.ui"
|
*ngFor="let ui of serviceInterfaces.ui"
|
||||||
[iFace]="ui"
|
[iFace]="ui"
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
||||||
<ng-container *ngIf="serviceInterfaces.api.length">
|
<ng-container *ngIf="serviceInterfaces.api.length">
|
||||||
<ion-item-divider>Application Program Interfaces (API)</ion-item-divider>
|
<ion-item-divider>Application Program Interfaces</ion-item-divider>
|
||||||
<app-interfaces-item
|
<app-interfaces-item
|
||||||
*ngFor="let api of serviceInterfaces.api"
|
*ngFor="let api of serviceInterfaces.api"
|
||||||
[iFace]="api"
|
[iFace]="api"
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
||||||
<ng-container *ngIf="serviceInterfaces.p2p.length">
|
<ng-container *ngIf="serviceInterfaces.p2p.length">
|
||||||
<ion-item-divider>Peer-To-Peer Interfaces (P2P)</ion-item-divider>
|
<ion-item-divider>Peer-To-Peer Interfaces</ion-item-divider>
|
||||||
<app-interfaces-item
|
<app-interfaces-item
|
||||||
*ngFor="let p2p of serviceInterfaces.p2p"
|
*ngFor="let p2p of serviceInterfaces.p2p"
|
||||||
[iFace]="p2p"
|
[iFace]="p2p"
|
||||||
|
|||||||
@@ -116,49 +116,54 @@ function getAddresses(
|
|||||||
? [host.hostname]
|
? [host.hostname]
|
||||||
: []
|
: []
|
||||||
|
|
||||||
return hostnames
|
const addresses: MappedAddress[] = []
|
||||||
.map((h: any) => {
|
|
||||||
const addresses: MappedAddress[] = []
|
|
||||||
|
|
||||||
let name = ''
|
hostnames.forEach(h => {
|
||||||
let hostname = ''
|
let name = ''
|
||||||
|
let hostname = ''
|
||||||
|
|
||||||
if (h.kind === 'onion') {
|
if (h.kind === 'onion') {
|
||||||
name = 'Tor'
|
name = 'Tor'
|
||||||
hostname = h.hostname.value
|
hostname = h.hostname.value
|
||||||
|
} else {
|
||||||
|
const hostnameKind = h.hostname.kind
|
||||||
|
|
||||||
|
if (hostnameKind === 'domain') {
|
||||||
|
name = 'Domain'
|
||||||
|
hostname = `${h.hostname.subdomain}.${h.hostname.domain}`
|
||||||
} else {
|
} else {
|
||||||
name = h.hostname.kind
|
name =
|
||||||
hostname =
|
hostnameKind === 'local'
|
||||||
h.hostname.kind === 'domain'
|
? 'Local'
|
||||||
? `${h.hostname.subdomain}.${h.hostname.domain}`
|
: `${h.networkInterfaceId} (${hostnameKind})`
|
||||||
: h.hostname.value
|
hostname = h.hostname.value
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (h.hostname.sslPort) {
|
if (h.hostname.sslPort) {
|
||||||
const port = h.hostname.sslPort === 443 ? '' : `:${h.hostname.sslPort}`
|
const port = h.hostname.sslPort === 443 ? '' : `:${h.hostname.sslPort}`
|
||||||
const scheme = addressInfo.bindOptions.addSsl?.scheme
|
const scheme = addressInfo.bindOptions.addSsl?.scheme
|
||||||
? `${addressInfo.bindOptions.addSsl.scheme}://`
|
? `${addressInfo.bindOptions.addSsl.scheme}://`
|
||||||
: ''
|
: ''
|
||||||
|
|
||||||
addresses.push({
|
addresses.push({
|
||||||
name,
|
name: name === 'Tor' ? 'Tor (HTTPS)' : name,
|
||||||
url: `${scheme}${username}${hostname}${port}${suffix}`,
|
url: `${scheme}${username}${hostname}${port}${suffix}`,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (h.hostname.port) {
|
if (h.hostname.port) {
|
||||||
const port = h.hostname.port === 80 ? '' : `:${h.hostname.port}`
|
const port = h.hostname.port === 80 ? '' : `:${h.hostname.port}`
|
||||||
const scheme = addressInfo.bindOptions.scheme
|
const scheme = addressInfo.bindOptions.scheme
|
||||||
? `${addressInfo.bindOptions.scheme}://`
|
? `${addressInfo.bindOptions.scheme}://`
|
||||||
: ''
|
: ''
|
||||||
|
|
||||||
addresses.push({
|
addresses.push({
|
||||||
name,
|
name: name === 'Tor' ? 'Tor (HTTP)' : name,
|
||||||
url: `${scheme}${username}${hostname}${port}${suffix}`,
|
url: `${scheme}${username}${hostname}${port}${suffix}`,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
})
|
||||||
|
|
||||||
return addresses
|
return addresses
|
||||||
})
|
|
||||||
.flat()
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,24 +0,0 @@
|
|||||||
import { NgModule } from '@angular/core'
|
|
||||||
import { CommonModule } from '@angular/common'
|
|
||||||
import { Routes, RouterModule } from '@angular/router'
|
|
||||||
import { IonicModule } from '@ionic/angular'
|
|
||||||
import { ExperimentalFeaturesPage } from './experimental-features.page'
|
|
||||||
import { EmverPipesModule } from '@start9labs/shared'
|
|
||||||
|
|
||||||
const routes: Routes = [
|
|
||||||
{
|
|
||||||
path: '',
|
|
||||||
component: ExperimentalFeaturesPage,
|
|
||||||
},
|
|
||||||
]
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [
|
|
||||||
CommonModule,
|
|
||||||
IonicModule,
|
|
||||||
RouterModule.forChild(routes),
|
|
||||||
EmverPipesModule,
|
|
||||||
],
|
|
||||||
declarations: [ExperimentalFeaturesPage],
|
|
||||||
})
|
|
||||||
export class ExperimentalFeaturesPageModule {}
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
<ion-header>
|
|
||||||
<ion-toolbar>
|
|
||||||
<ion-buttons slot="start">
|
|
||||||
<ion-back-button defaultHref="system"></ion-back-button>
|
|
||||||
</ion-buttons>
|
|
||||||
<ion-title>Experimental Features</ion-title>
|
|
||||||
</ion-toolbar>
|
|
||||||
</ion-header>
|
|
||||||
|
|
||||||
<ion-content class="with-widgets">
|
|
||||||
<ion-item-group *ngIf="server$ | async as server">
|
|
||||||
<ion-item button (click)="presentAlertResetTor()">
|
|
||||||
<ion-icon slot="start" name="reload"></ion-icon>
|
|
||||||
<ion-label>
|
|
||||||
<h2>Reset Tor</h2>
|
|
||||||
<p>
|
|
||||||
Resetting the Tor daemon on your server may resolve Tor connectivity
|
|
||||||
issues.
|
|
||||||
</p>
|
|
||||||
</ion-label>
|
|
||||||
</ion-item>
|
|
||||||
<ion-item button (click)="presentAlertZram(server.zram)">
|
|
||||||
<ion-icon
|
|
||||||
slot="start"
|
|
||||||
[name]="server.zram ? 'flash-off-outline' : 'flash-outline'"
|
|
||||||
></ion-icon>
|
|
||||||
<ion-label>
|
|
||||||
<h2>{{ server.zram ? 'Disable' : 'Enable' }} zram</h2>
|
|
||||||
<p>
|
|
||||||
Zram creates compressed swap in memory, resulting in faster I/O for
|
|
||||||
low RAM devices
|
|
||||||
</p>
|
|
||||||
</ion-label>
|
|
||||||
</ion-item>
|
|
||||||
</ion-item-group>
|
|
||||||
</ion-content>
|
|
||||||
@@ -1,151 +0,0 @@
|
|||||||
import { ChangeDetectionStrategy, Component } from '@angular/core'
|
|
||||||
import {
|
|
||||||
AlertController,
|
|
||||||
LoadingController,
|
|
||||||
ToastController,
|
|
||||||
} from '@ionic/angular'
|
|
||||||
import { PatchDB } from 'patch-db-client'
|
|
||||||
import { ApiService } from 'src/app/services/api/embassy-api.service'
|
|
||||||
import { ConfigService } from 'src/app/services/config.service'
|
|
||||||
import { DataModel } from 'src/app/services/patch-db/data-model'
|
|
||||||
import { ErrorToastService } from '@start9labs/shared'
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'experimental-features',
|
|
||||||
templateUrl: './experimental-features.page.html',
|
|
||||||
styleUrls: ['./experimental-features.page.scss'],
|
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
||||||
})
|
|
||||||
export class ExperimentalFeaturesPage {
|
|
||||||
readonly server$ = this.patch.watch$('server-info')
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
private readonly toastCtrl: ToastController,
|
|
||||||
private readonly patch: PatchDB<DataModel>,
|
|
||||||
private readonly config: ConfigService,
|
|
||||||
private readonly alertCtrl: AlertController,
|
|
||||||
private readonly loadingCtrl: LoadingController,
|
|
||||||
private readonly api: ApiService,
|
|
||||||
private readonly errToast: ErrorToastService,
|
|
||||||
) {}
|
|
||||||
|
|
||||||
async presentAlertResetTor() {
|
|
||||||
const isTor = this.config.isTor()
|
|
||||||
const shared =
|
|
||||||
'Optionally wipe state to forcibly acquire new guard nodes. It is recommended to try without wiping state first.'
|
|
||||||
const alert = await this.alertCtrl.create({
|
|
||||||
header: isTor ? 'Warning' : 'Confirm',
|
|
||||||
message: isTor
|
|
||||||
? `You are currently connected over Tor. If you reset the Tor daemon, you will loose connectivity until it comes back online.<br/><br/>${shared}`
|
|
||||||
: `Reset Tor?<br/><br/>${shared}`,
|
|
||||||
inputs: [
|
|
||||||
{
|
|
||||||
label: 'Wipe state',
|
|
||||||
type: 'checkbox',
|
|
||||||
value: 'wipe',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
buttons: [
|
|
||||||
{
|
|
||||||
text: 'Cancel',
|
|
||||||
role: 'cancel',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
text: 'Reset',
|
|
||||||
handler: (value: string[]) => {
|
|
||||||
this.resetTor(value.some(v => v === 'wipe'))
|
|
||||||
},
|
|
||||||
cssClass: 'enter-click',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
cssClass: isTor ? 'alert-warning-message' : '',
|
|
||||||
})
|
|
||||||
await alert.present()
|
|
||||||
}
|
|
||||||
|
|
||||||
async presentAlertZram(enabled: boolean) {
|
|
||||||
const alert = await this.alertCtrl.create({
|
|
||||||
header: 'Confirm',
|
|
||||||
message: enabled
|
|
||||||
? 'Are you sure you want to disable zram? It provides significant performance benefits on low RAM devices.'
|
|
||||||
: 'Enable zram? It will only make a difference on lower RAM devices.',
|
|
||||||
buttons: [
|
|
||||||
{
|
|
||||||
text: 'Cancel',
|
|
||||||
role: 'cancel',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
text: enabled ? 'Disable' : 'Enable',
|
|
||||||
handler: () => {
|
|
||||||
this.toggleZram(enabled)
|
|
||||||
},
|
|
||||||
cssClass: 'enter-click',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
})
|
|
||||||
await alert.present()
|
|
||||||
}
|
|
||||||
|
|
||||||
private async resetTor(wipeState: boolean) {
|
|
||||||
const loader = await this.loadingCtrl.create({
|
|
||||||
message: 'Resetting Tor...',
|
|
||||||
})
|
|
||||||
await loader.present()
|
|
||||||
|
|
||||||
try {
|
|
||||||
await this.api.resetTor({
|
|
||||||
'wipe-state': wipeState,
|
|
||||||
reason: 'User triggered',
|
|
||||||
})
|
|
||||||
const toast = await this.toastCtrl.create({
|
|
||||||
header: 'Tor reset in progress',
|
|
||||||
position: 'bottom',
|
|
||||||
duration: 4000,
|
|
||||||
buttons: [
|
|
||||||
{
|
|
||||||
side: 'start',
|
|
||||||
icon: 'close',
|
|
||||||
handler: () => {
|
|
||||||
return true
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
})
|
|
||||||
await toast.present()
|
|
||||||
} catch (e: any) {
|
|
||||||
this.errToast.present(e)
|
|
||||||
} finally {
|
|
||||||
loader.dismiss()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private async toggleZram(enabled: boolean) {
|
|
||||||
const loader = await this.loadingCtrl.create({
|
|
||||||
message: enabled ? 'Disabling zram...' : 'Enabling zram...',
|
|
||||||
})
|
|
||||||
await loader.present()
|
|
||||||
|
|
||||||
try {
|
|
||||||
await this.api.toggleZram({ enable: !enabled })
|
|
||||||
const toast = await this.toastCtrl.create({
|
|
||||||
header: `Zram ${enabled ? 'disabled' : 'enabled'}`,
|
|
||||||
position: 'bottom',
|
|
||||||
duration: 4000,
|
|
||||||
buttons: [
|
|
||||||
{
|
|
||||||
side: 'start',
|
|
||||||
icon: 'close',
|
|
||||||
handler: () => {
|
|
||||||
return true
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
})
|
|
||||||
await toast.present()
|
|
||||||
} catch (e: any) {
|
|
||||||
this.errToast.present(e)
|
|
||||||
} finally {
|
|
||||||
loader.dismiss()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -80,13 +80,6 @@ const routes: Routes = [
|
|||||||
loadChildren: () =>
|
loadChildren: () =>
|
||||||
import('./wifi/wifi.module').then(m => m.WifiPageModule),
|
import('./wifi/wifi.module').then(m => m.WifiPageModule),
|
||||||
},
|
},
|
||||||
{
|
|
||||||
path: 'experimental-features',
|
|
||||||
loadChildren: () =>
|
|
||||||
import('./experimental-features/experimental-features.module').then(
|
|
||||||
m => m.ExperimentalFeaturesPageModule,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
]
|
]
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ export class ServerShowPage {
|
|||||||
private readonly ClientStorageService: ClientStorageService,
|
private readonly ClientStorageService: ClientStorageService,
|
||||||
private readonly authService: AuthService,
|
private readonly authService: AuthService,
|
||||||
private readonly toastCtrl: ToastController,
|
private readonly toastCtrl: ToastController,
|
||||||
|
private readonly config: ConfigService,
|
||||||
@Inject(WINDOW) private readonly windowRef: Window,
|
@Inject(WINDOW) private readonly windowRef: Window,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
@@ -178,6 +179,73 @@ export class ServerShowPage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async presentAlertResetTor() {
|
||||||
|
const isTor = this.config.isTor()
|
||||||
|
const shared =
|
||||||
|
'Optionally wipe state to forcibly acquire new guard nodes. It is recommended to try without wiping state first.'
|
||||||
|
const alert = await this.alertCtrl.create({
|
||||||
|
header: isTor ? 'Warning' : 'Confirm',
|
||||||
|
message: isTor
|
||||||
|
? `You are currently connected over Tor. If you reset the Tor daemon, you will loose connectivity until it comes back online.<br/><br/>${shared}`
|
||||||
|
: `Reset Tor?<br/><br/>${shared}`,
|
||||||
|
inputs: [
|
||||||
|
{
|
||||||
|
label: 'Wipe state',
|
||||||
|
type: 'checkbox',
|
||||||
|
value: 'wipe',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
text: 'Cancel',
|
||||||
|
role: 'cancel',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Reset',
|
||||||
|
handler: (value: string[]) => {
|
||||||
|
this.resetTor(value.some(v => v === 'wipe'))
|
||||||
|
},
|
||||||
|
cssClass: 'enter-click',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
cssClass: isTor ? 'alert-warning-message' : '',
|
||||||
|
})
|
||||||
|
await alert.present()
|
||||||
|
}
|
||||||
|
|
||||||
|
private async resetTor(wipeState: boolean) {
|
||||||
|
const loader = await this.loadingCtrl.create({
|
||||||
|
message: 'Resetting Tor...',
|
||||||
|
})
|
||||||
|
await loader.present()
|
||||||
|
|
||||||
|
try {
|
||||||
|
await this.embassyApi.resetTor({
|
||||||
|
'wipe-state': wipeState,
|
||||||
|
reason: 'User triggered',
|
||||||
|
})
|
||||||
|
const toast = await this.toastCtrl.create({
|
||||||
|
header: 'Tor reset in progress',
|
||||||
|
position: 'bottom',
|
||||||
|
duration: 4000,
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
side: 'start',
|
||||||
|
icon: 'close',
|
||||||
|
handler: () => {
|
||||||
|
return true
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
})
|
||||||
|
await toast.present()
|
||||||
|
} catch (e: any) {
|
||||||
|
this.errToast.present(e)
|
||||||
|
} finally {
|
||||||
|
loader.dismiss()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async updateEos(): Promise<void> {
|
async updateEos(): Promise<void> {
|
||||||
const modal = await this.modalCtrl.create({
|
const modal = await this.modalCtrl.create({
|
||||||
component: OSUpdatePage,
|
component: OSUpdatePage,
|
||||||
@@ -512,14 +580,11 @@ export class ServerShowPage {
|
|||||||
disabled$: of(false),
|
disabled$: of(false),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Experimental Features',
|
title: 'Reset Tor',
|
||||||
description: 'Try out new and potentially unstable new features',
|
description: 'May help resolve Tor connectivity issues.',
|
||||||
icon: 'flask-outline',
|
icon: 'reload-circle-outline',
|
||||||
action: () =>
|
action: () => this.presentAlertResetTor(),
|
||||||
this.navCtrl.navigateForward(['experimental-features'], {
|
detail: false,
|
||||||
relativeTo: this.route,
|
|
||||||
}),
|
|
||||||
detail: true,
|
|
||||||
disabled$: of(false),
|
disabled$: of(false),
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -1785,7 +1785,7 @@ export module Mock {
|
|||||||
scheme: 'http',
|
scheme: 'http',
|
||||||
preferredExternalPort: 80,
|
preferredExternalPort: 80,
|
||||||
addSsl: {
|
addSsl: {
|
||||||
addXForwardedHeaders: null,
|
addXForwardedHeaders: false,
|
||||||
preferredExternalPort: 443,
|
preferredExternalPort: 443,
|
||||||
scheme: 'https',
|
scheme: 'https',
|
||||||
},
|
},
|
||||||
@@ -1797,14 +1797,6 @@ export module Mock {
|
|||||||
id: 'abcdefg',
|
id: 'abcdefg',
|
||||||
kind: 'multi',
|
kind: 'multi',
|
||||||
hostnames: [
|
hostnames: [
|
||||||
{
|
|
||||||
kind: 'onion',
|
|
||||||
hostname: {
|
|
||||||
value: 'bitcoin-ui-address.onion',
|
|
||||||
port: 80,
|
|
||||||
sslPort: 443,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
kind: 'ip',
|
kind: 'ip',
|
||||||
networkInterfaceId: 'elan0',
|
networkInterfaceId: 'elan0',
|
||||||
@@ -1816,6 +1808,14 @@ export module Mock {
|
|||||||
sslPort: 1234,
|
sslPort: 1234,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
kind: 'onion',
|
||||||
|
hostname: {
|
||||||
|
value: 'bitcoin-ui-address.onion',
|
||||||
|
port: 80,
|
||||||
|
sslPort: 443,
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
kind: 'ip',
|
kind: 'ip',
|
||||||
networkInterfaceId: 'elan0',
|
networkInterfaceId: 'elan0',
|
||||||
@@ -1857,7 +1857,7 @@ export module Mock {
|
|||||||
scheme: 'http',
|
scheme: 'http',
|
||||||
preferredExternalPort: 80,
|
preferredExternalPort: 80,
|
||||||
addSsl: {
|
addSsl: {
|
||||||
addXForwardedHeaders: null,
|
addXForwardedHeaders: false,
|
||||||
preferredExternalPort: 443,
|
preferredExternalPort: 443,
|
||||||
scheme: 'https',
|
scheme: 'https',
|
||||||
},
|
},
|
||||||
@@ -1869,14 +1869,6 @@ export module Mock {
|
|||||||
id: 'bcdefgh',
|
id: 'bcdefgh',
|
||||||
kind: 'multi',
|
kind: 'multi',
|
||||||
hostnames: [
|
hostnames: [
|
||||||
{
|
|
||||||
kind: 'onion',
|
|
||||||
hostname: {
|
|
||||||
value: 'bitcoin-rpc-address.onion',
|
|
||||||
port: 80,
|
|
||||||
sslPort: 443,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
kind: 'ip',
|
kind: 'ip',
|
||||||
networkInterfaceId: 'elan0',
|
networkInterfaceId: 'elan0',
|
||||||
@@ -1888,6 +1880,14 @@ export module Mock {
|
|||||||
sslPort: 2345,
|
sslPort: 2345,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
kind: 'onion',
|
||||||
|
hostname: {
|
||||||
|
value: 'bitcoin-rpc-address.onion',
|
||||||
|
port: 80,
|
||||||
|
sslPort: 443,
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
kind: 'ip',
|
kind: 'ip',
|
||||||
networkInterfaceId: 'elan0',
|
networkInterfaceId: 'elan0',
|
||||||
@@ -1937,14 +1937,6 @@ export module Mock {
|
|||||||
id: 'cdefghi',
|
id: 'cdefghi',
|
||||||
kind: 'multi',
|
kind: 'multi',
|
||||||
hostnames: [
|
hostnames: [
|
||||||
{
|
|
||||||
kind: 'onion',
|
|
||||||
hostname: {
|
|
||||||
value: 'bitcoin-p2p-address.onion',
|
|
||||||
port: 8333,
|
|
||||||
sslPort: null,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
kind: 'ip',
|
kind: 'ip',
|
||||||
networkInterfaceId: 'elan0',
|
networkInterfaceId: 'elan0',
|
||||||
@@ -1956,6 +1948,14 @@ export module Mock {
|
|||||||
sslPort: null,
|
sslPort: null,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
kind: 'onion',
|
||||||
|
hostname: {
|
||||||
|
value: 'bitcoin-p2p-address.onion',
|
||||||
|
port: 8333,
|
||||||
|
sslPort: null,
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
kind: 'ip',
|
kind: 'ip',
|
||||||
networkInterfaceId: 'elan0',
|
networkInterfaceId: 'elan0',
|
||||||
@@ -2031,7 +2031,7 @@ export module Mock {
|
|||||||
scheme: 'http',
|
scheme: 'http',
|
||||||
preferredExternalPort: 80,
|
preferredExternalPort: 80,
|
||||||
addSsl: {
|
addSsl: {
|
||||||
addXForwardedHeaders: null,
|
addXForwardedHeaders: false,
|
||||||
preferredExternalPort: 443,
|
preferredExternalPort: 443,
|
||||||
scheme: 'https',
|
scheme: 'https',
|
||||||
},
|
},
|
||||||
@@ -2043,14 +2043,6 @@ export module Mock {
|
|||||||
id: 'hijklmnop',
|
id: 'hijklmnop',
|
||||||
kind: 'multi',
|
kind: 'multi',
|
||||||
hostnames: [
|
hostnames: [
|
||||||
{
|
|
||||||
kind: 'onion',
|
|
||||||
hostname: {
|
|
||||||
value: 'proxy-ui-address.onion',
|
|
||||||
port: 80,
|
|
||||||
sslPort: 443,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
kind: 'ip',
|
kind: 'ip',
|
||||||
networkInterfaceId: 'elan0',
|
networkInterfaceId: 'elan0',
|
||||||
@@ -2062,6 +2054,14 @@ export module Mock {
|
|||||||
sslPort: 4567,
|
sslPort: 4567,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
kind: 'onion',
|
||||||
|
hostname: {
|
||||||
|
value: 'proxy-ui-address.onion',
|
||||||
|
port: 80,
|
||||||
|
sslPort: 443,
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
kind: 'ip',
|
kind: 'ip',
|
||||||
networkInterfaceId: 'elan0',
|
networkInterfaceId: 'elan0',
|
||||||
@@ -2191,14 +2191,6 @@ export module Mock {
|
|||||||
id: 'qrstuv',
|
id: 'qrstuv',
|
||||||
kind: 'multi',
|
kind: 'multi',
|
||||||
hostnames: [
|
hostnames: [
|
||||||
{
|
|
||||||
kind: 'onion',
|
|
||||||
hostname: {
|
|
||||||
value: 'lnd-grpc-address.onion',
|
|
||||||
port: 10009,
|
|
||||||
sslPort: null,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
kind: 'ip',
|
kind: 'ip',
|
||||||
networkInterfaceId: 'elan0',
|
networkInterfaceId: 'elan0',
|
||||||
@@ -2210,6 +2202,14 @@ export module Mock {
|
|||||||
sslPort: null,
|
sslPort: null,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
kind: 'onion',
|
||||||
|
hostname: {
|
||||||
|
value: 'lnd-grpc-address.onion',
|
||||||
|
port: 10009,
|
||||||
|
sslPort: null,
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
kind: 'ip',
|
kind: 'ip',
|
||||||
networkInterfaceId: 'elan0',
|
networkInterfaceId: 'elan0',
|
||||||
@@ -2259,14 +2259,6 @@ export module Mock {
|
|||||||
id: 'qrstuv',
|
id: 'qrstuv',
|
||||||
kind: 'multi',
|
kind: 'multi',
|
||||||
hostnames: [
|
hostnames: [
|
||||||
{
|
|
||||||
kind: 'onion',
|
|
||||||
hostname: {
|
|
||||||
value: 'lnd-grpc-address.onion',
|
|
||||||
port: 10009,
|
|
||||||
sslPort: null,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
kind: 'ip',
|
kind: 'ip',
|
||||||
networkInterfaceId: 'elan0',
|
networkInterfaceId: 'elan0',
|
||||||
@@ -2278,6 +2270,14 @@ export module Mock {
|
|||||||
sslPort: null,
|
sslPort: null,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
kind: 'onion',
|
||||||
|
hostname: {
|
||||||
|
value: 'lnd-grpc-address.onion',
|
||||||
|
port: 10009,
|
||||||
|
sslPort: null,
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
kind: 'ip',
|
kind: 'ip',
|
||||||
networkInterfaceId: 'elan0',
|
networkInterfaceId: 'elan0',
|
||||||
@@ -2327,14 +2327,6 @@ export module Mock {
|
|||||||
id: 'rstuvw',
|
id: 'rstuvw',
|
||||||
kind: 'multi',
|
kind: 'multi',
|
||||||
hostnames: [
|
hostnames: [
|
||||||
{
|
|
||||||
kind: 'onion',
|
|
||||||
hostname: {
|
|
||||||
value: 'lnd-p2p-address.onion',
|
|
||||||
port: 9735,
|
|
||||||
sslPort: null,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
kind: 'ip',
|
kind: 'ip',
|
||||||
networkInterfaceId: 'elan0',
|
networkInterfaceId: 'elan0',
|
||||||
@@ -2346,6 +2338,14 @@ export module Mock {
|
|||||||
sslPort: null,
|
sslPort: null,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
kind: 'onion',
|
||||||
|
hostname: {
|
||||||
|
value: 'lnd-p2p-address.onion',
|
||||||
|
port: 9735,
|
||||||
|
sslPort: null,
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
kind: 'ip',
|
kind: 'ip',
|
||||||
networkInterfaceId: 'elan0',
|
networkInterfaceId: 'elan0',
|
||||||
|
|||||||
@@ -77,11 +77,6 @@ export module RR {
|
|||||||
} // net.tor.reset
|
} // net.tor.reset
|
||||||
export type ResetTorRes = null
|
export type ResetTorRes = null
|
||||||
|
|
||||||
export type ToggleZramReq = {
|
|
||||||
enable: boolean
|
|
||||||
} // server.experimental.zram
|
|
||||||
export type ToggleZramRes = null
|
|
||||||
|
|
||||||
// sessions
|
// sessions
|
||||||
|
|
||||||
export type GetSessionsReq = {} // sessions.list
|
export type GetSessionsReq = {} // sessions.list
|
||||||
|
|||||||
@@ -97,8 +97,6 @@ export abstract class ApiService {
|
|||||||
|
|
||||||
abstract resetTor(params: RR.ResetTorReq): Promise<RR.ResetTorRes>
|
abstract resetTor(params: RR.ResetTorReq): Promise<RR.ResetTorRes>
|
||||||
|
|
||||||
abstract toggleZram(params: RR.ToggleZramReq): Promise<RR.ToggleZramRes>
|
|
||||||
|
|
||||||
// marketplace URLs
|
// marketplace URLs
|
||||||
|
|
||||||
abstract marketplaceProxy<T>(
|
abstract marketplaceProxy<T>(
|
||||||
|
|||||||
@@ -189,10 +189,6 @@ export class LiveApiService extends ApiService {
|
|||||||
return this.rpcRequest({ method: 'net.tor.reset', params })
|
return this.rpcRequest({ method: 'net.tor.reset', params })
|
||||||
}
|
}
|
||||||
|
|
||||||
async toggleZram(params: RR.ToggleZramReq): Promise<RR.ToggleZramRes> {
|
|
||||||
return this.rpcRequest({ method: 'server.experimental.zram', params })
|
|
||||||
}
|
|
||||||
|
|
||||||
// marketplace URLs
|
// marketplace URLs
|
||||||
|
|
||||||
async marketplaceProxy<T>(
|
async marketplaceProxy<T>(
|
||||||
|
|||||||
@@ -370,20 +370,6 @@ export class MockApiService extends ApiService {
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
async toggleZram(params: RR.ToggleZramReq): Promise<RR.ToggleZramRes> {
|
|
||||||
await pauseFor(2000)
|
|
||||||
const patch = [
|
|
||||||
{
|
|
||||||
op: PatchOp.REPLACE,
|
|
||||||
path: '/server-info/zram',
|
|
||||||
value: params.enable,
|
|
||||||
},
|
|
||||||
]
|
|
||||||
this.mockRevision(patch)
|
|
||||||
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
|
|
||||||
// marketplace URLs
|
// marketplace URLs
|
||||||
|
|
||||||
async marketplaceProxy(
|
async marketplaceProxy(
|
||||||
|
|||||||
@@ -73,7 +73,6 @@ export const mockPatchData: DataModel = {
|
|||||||
pubkey: 'npub1sg6plzptd64u62a878hep2kev88swjh3tw00gjsfl8f237lmu63q0uf63m',
|
pubkey: 'npub1sg6plzptd64u62a878hep2kev88swjh3tw00gjsfl8f237lmu63q0uf63m',
|
||||||
'ca-fingerprint': 'SHA-256: 63 2B 11 99 44 40 17 DF 37 FC C3 DF 0F 3D 15',
|
'ca-fingerprint': 'SHA-256: 63 2B 11 99 44 40 17 DF 37 FC C3 DF 0F 3D 15',
|
||||||
'ntp-synced': false,
|
'ntp-synced': false,
|
||||||
zram: false,
|
|
||||||
platform: 'x86_64-nonfree',
|
platform: 'x86_64-nonfree',
|
||||||
},
|
},
|
||||||
'package-data': {
|
'package-data': {
|
||||||
@@ -401,35 +400,28 @@ export const mockPatchData: DataModel = {
|
|||||||
disabled: false,
|
disabled: false,
|
||||||
masked: false,
|
masked: false,
|
||||||
name: 'Web UI',
|
name: 'Web UI',
|
||||||
description: 'A launchable web app for Bitcoin Proxy',
|
description:
|
||||||
|
'A launchable web app for you to interact with your Bitcoin node',
|
||||||
type: 'ui',
|
type: 'ui',
|
||||||
addressInfo: {
|
addressInfo: {
|
||||||
username: null,
|
username: null,
|
||||||
hostId: 'hijklmnop',
|
hostId: 'abcdefg',
|
||||||
bindOptions: {
|
bindOptions: {
|
||||||
scheme: 'http',
|
scheme: 'http',
|
||||||
preferredExternalPort: 80,
|
preferredExternalPort: 80,
|
||||||
addSsl: {
|
addSsl: {
|
||||||
addXForwardedHeaders: null,
|
addXForwardedHeaders: false,
|
||||||
preferredExternalPort: 443,
|
preferredExternalPort: 443,
|
||||||
scheme: 'https',
|
scheme: 'https',
|
||||||
},
|
},
|
||||||
secure: { ssl: true },
|
secure: { ssl: false },
|
||||||
},
|
},
|
||||||
suffix: '',
|
suffix: '',
|
||||||
},
|
},
|
||||||
hostInfo: {
|
hostInfo: {
|
||||||
id: 'hijklmnop',
|
id: 'abcdefg',
|
||||||
kind: 'multi',
|
kind: 'multi',
|
||||||
hostnames: [
|
hostnames: [
|
||||||
{
|
|
||||||
kind: 'onion',
|
|
||||||
hostname: {
|
|
||||||
value: 'proxy-ui-address.onion',
|
|
||||||
port: 80,
|
|
||||||
sslPort: 443,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
kind: 'ip',
|
kind: 'ip',
|
||||||
networkInterfaceId: 'elan0',
|
networkInterfaceId: 'elan0',
|
||||||
@@ -438,7 +430,15 @@ export const mockPatchData: DataModel = {
|
|||||||
kind: 'local',
|
kind: 'local',
|
||||||
value: 'adjective-noun.local',
|
value: 'adjective-noun.local',
|
||||||
port: null,
|
port: null,
|
||||||
sslPort: 4567,
|
sslPort: 1234,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
kind: 'onion',
|
||||||
|
hostname: {
|
||||||
|
value: 'bitcoin-ui-address.onion',
|
||||||
|
port: 80,
|
||||||
|
sslPort: 443,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -449,7 +449,7 @@ export const mockPatchData: DataModel = {
|
|||||||
kind: 'ipv4',
|
kind: 'ipv4',
|
||||||
value: '192.168.1.5',
|
value: '192.168.1.5',
|
||||||
port: null,
|
port: null,
|
||||||
sslPort: 4567,
|
sslPort: 1234,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -460,40 +460,147 @@ export const mockPatchData: DataModel = {
|
|||||||
kind: 'ipv6',
|
kind: 'ipv6',
|
||||||
value: '[2001:db8:85a3:8d3:1319:8a2e:370:7348]',
|
value: '[2001:db8:85a3:8d3:1319:8a2e:370:7348]',
|
||||||
port: null,
|
port: null,
|
||||||
sslPort: 4567,
|
sslPort: 1234,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
rpc: {
|
||||||
|
id: 'rpc',
|
||||||
|
hasPrimary: false,
|
||||||
|
disabled: false,
|
||||||
|
masked: false,
|
||||||
|
name: 'RPC',
|
||||||
|
description:
|
||||||
|
'Used by dependent services and client wallets for connecting to your node',
|
||||||
|
type: 'api',
|
||||||
|
addressInfo: {
|
||||||
|
username: null,
|
||||||
|
hostId: 'bcdefgh',
|
||||||
|
bindOptions: {
|
||||||
|
scheme: 'http',
|
||||||
|
preferredExternalPort: 80,
|
||||||
|
addSsl: {
|
||||||
|
preferredExternalPort: 443,
|
||||||
|
scheme: 'https',
|
||||||
|
addXForwardedHeaders: null,
|
||||||
|
},
|
||||||
|
secure: null,
|
||||||
|
},
|
||||||
|
suffix: '',
|
||||||
|
},
|
||||||
|
hostInfo: {
|
||||||
|
id: 'bcdefgh',
|
||||||
|
kind: 'multi',
|
||||||
|
hostnames: [
|
||||||
{
|
{
|
||||||
kind: 'ip',
|
kind: 'ip',
|
||||||
networkInterfaceId: 'wlan0',
|
networkInterfaceId: 'elan0',
|
||||||
public: false,
|
public: false,
|
||||||
hostname: {
|
hostname: {
|
||||||
kind: 'local',
|
kind: 'local',
|
||||||
value: 'adjective-noun.local',
|
value: 'adjective-noun.local',
|
||||||
port: null,
|
port: null,
|
||||||
sslPort: 4567,
|
sslPort: 2345,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
kind: 'onion',
|
||||||
|
hostname: {
|
||||||
|
value: 'bitcoin-rpc-address.onion',
|
||||||
|
port: 80,
|
||||||
|
sslPort: 443,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
kind: 'ip',
|
kind: 'ip',
|
||||||
networkInterfaceId: 'wlan0',
|
networkInterfaceId: 'elan0',
|
||||||
public: false,
|
public: false,
|
||||||
hostname: {
|
hostname: {
|
||||||
kind: 'ipv4',
|
kind: 'ipv4',
|
||||||
value: '192.168.1.7',
|
value: '192.168.1.5',
|
||||||
port: null,
|
port: null,
|
||||||
sslPort: 4567,
|
sslPort: 2345,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
kind: 'ip',
|
kind: 'ip',
|
||||||
networkInterfaceId: 'wlan0',
|
networkInterfaceId: 'elan0',
|
||||||
public: false,
|
public: false,
|
||||||
hostname: {
|
hostname: {
|
||||||
kind: 'ipv6',
|
kind: 'ipv6',
|
||||||
value: '[2001:db8:85a3:8d3:1319:8a2e:370:7348]',
|
value: '[2001:db8:85a3:8d3:1319:8a2e:370:7348]',
|
||||||
port: null,
|
port: null,
|
||||||
sslPort: 4567,
|
sslPort: 2345,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
p2p: {
|
||||||
|
id: 'p2p',
|
||||||
|
hasPrimary: true,
|
||||||
|
disabled: false,
|
||||||
|
masked: false,
|
||||||
|
name: 'P2P',
|
||||||
|
description:
|
||||||
|
'Used for connecting to other nodes on the Bitcoin network',
|
||||||
|
type: 'p2p',
|
||||||
|
addressInfo: {
|
||||||
|
username: null,
|
||||||
|
hostId: 'cdefghi',
|
||||||
|
bindOptions: {
|
||||||
|
scheme: 'bitcoin',
|
||||||
|
preferredExternalPort: 8333,
|
||||||
|
addSsl: null,
|
||||||
|
secure: { ssl: false },
|
||||||
|
},
|
||||||
|
suffix: '',
|
||||||
|
},
|
||||||
|
hostInfo: {
|
||||||
|
id: 'cdefghi',
|
||||||
|
kind: 'multi',
|
||||||
|
hostnames: [
|
||||||
|
{
|
||||||
|
kind: 'ip',
|
||||||
|
networkInterfaceId: 'elan0',
|
||||||
|
public: false,
|
||||||
|
hostname: {
|
||||||
|
kind: 'local',
|
||||||
|
value: 'adjective-noun.local',
|
||||||
|
port: 3456,
|
||||||
|
sslPort: null,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
kind: 'onion',
|
||||||
|
hostname: {
|
||||||
|
value: 'bitcoin-p2p-address.onion',
|
||||||
|
port: 8333,
|
||||||
|
sslPort: null,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
kind: 'ip',
|
||||||
|
networkInterfaceId: 'elan0',
|
||||||
|
public: false,
|
||||||
|
hostname: {
|
||||||
|
kind: 'ipv4',
|
||||||
|
value: '192.168.1.5',
|
||||||
|
port: 3456,
|
||||||
|
sslPort: null,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
kind: 'ip',
|
||||||
|
networkInterfaceId: 'elan0',
|
||||||
|
public: false,
|
||||||
|
hostname: {
|
||||||
|
kind: 'ipv6',
|
||||||
|
value: '[2001:db8:85a3:8d3:1319:8a2e:370:7348]',
|
||||||
|
port: 3456,
|
||||||
|
sslPort: null,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
@@ -668,14 +775,6 @@ export const mockPatchData: DataModel = {
|
|||||||
id: 'qrstuv',
|
id: 'qrstuv',
|
||||||
kind: 'multi',
|
kind: 'multi',
|
||||||
hostnames: [
|
hostnames: [
|
||||||
{
|
|
||||||
kind: 'onion',
|
|
||||||
hostname: {
|
|
||||||
value: 'lnd-grpc-address.onion',
|
|
||||||
port: 10009,
|
|
||||||
sslPort: null,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
kind: 'ip',
|
kind: 'ip',
|
||||||
networkInterfaceId: 'elan0',
|
networkInterfaceId: 'elan0',
|
||||||
@@ -687,6 +786,14 @@ export const mockPatchData: DataModel = {
|
|||||||
sslPort: null,
|
sslPort: null,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
kind: 'onion',
|
||||||
|
hostname: {
|
||||||
|
value: 'lnd-grpc-address.onion',
|
||||||
|
port: 10009,
|
||||||
|
sslPort: null,
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
kind: 'ip',
|
kind: 'ip',
|
||||||
networkInterfaceId: 'elan0',
|
networkInterfaceId: 'elan0',
|
||||||
@@ -736,14 +843,6 @@ export const mockPatchData: DataModel = {
|
|||||||
id: 'qrstuv',
|
id: 'qrstuv',
|
||||||
kind: 'multi',
|
kind: 'multi',
|
||||||
hostnames: [
|
hostnames: [
|
||||||
{
|
|
||||||
kind: 'onion',
|
|
||||||
hostname: {
|
|
||||||
value: 'lnd-grpc-address.onion',
|
|
||||||
port: 10009,
|
|
||||||
sslPort: null,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
kind: 'ip',
|
kind: 'ip',
|
||||||
networkInterfaceId: 'elan0',
|
networkInterfaceId: 'elan0',
|
||||||
@@ -755,6 +854,14 @@ export const mockPatchData: DataModel = {
|
|||||||
sslPort: null,
|
sslPort: null,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
kind: 'onion',
|
||||||
|
hostname: {
|
||||||
|
value: 'lnd-grpc-address.onion',
|
||||||
|
port: 10009,
|
||||||
|
sslPort: null,
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
kind: 'ip',
|
kind: 'ip',
|
||||||
networkInterfaceId: 'elan0',
|
networkInterfaceId: 'elan0',
|
||||||
@@ -804,14 +911,6 @@ export const mockPatchData: DataModel = {
|
|||||||
id: 'rstuvw',
|
id: 'rstuvw',
|
||||||
kind: 'multi',
|
kind: 'multi',
|
||||||
hostnames: [
|
hostnames: [
|
||||||
{
|
|
||||||
kind: 'onion',
|
|
||||||
hostname: {
|
|
||||||
value: 'lnd-p2p-address.onion',
|
|
||||||
port: 9735,
|
|
||||||
sslPort: null,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
kind: 'ip',
|
kind: 'ip',
|
||||||
networkInterfaceId: 'elan0',
|
networkInterfaceId: 'elan0',
|
||||||
@@ -823,6 +922,14 @@ export const mockPatchData: DataModel = {
|
|||||||
sslPort: null,
|
sslPort: null,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
kind: 'onion',
|
||||||
|
hostname: {
|
||||||
|
value: 'lnd-p2p-address.onion',
|
||||||
|
port: 9735,
|
||||||
|
sslPort: null,
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
kind: 'ip',
|
kind: 'ip',
|
||||||
networkInterfaceId: 'elan0',
|
networkInterfaceId: 'elan0',
|
||||||
|
|||||||
@@ -79,7 +79,6 @@ export interface ServerInfo {
|
|||||||
pubkey: string
|
pubkey: string
|
||||||
'ca-fingerprint': string
|
'ca-fingerprint': string
|
||||||
'ntp-synced': boolean
|
'ntp-synced': boolean
|
||||||
zram: boolean
|
|
||||||
platform: string
|
platform: string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user