More type info
parent
54fdb6f0b4
commit
0f65b1f0ff
|
@ -1,17 +1,16 @@
|
|||
import React from 'react';
|
||||
|
||||
import { TailscaleBackendState, TailscaleStatusResponse, TailscaleUpResponse } from './types';
|
||||
import { TailscaleBackendState, TailscaleStatus, TailscaleUp } from './types';
|
||||
import { Card, CardTitle, CardBody } from '@patternfly/react-core';
|
||||
|
||||
type ApplicationProps = {
|
||||
}
|
||||
|
||||
type ApplicationState = {
|
||||
Status: TailscaleStatusResponse
|
||||
Status: TailscaleStatus
|
||||
}
|
||||
|
||||
|
||||
|
||||
export class Application extends React.Component<ApplicationProps, ApplicationState> {
|
||||
state: ApplicationState = {
|
||||
Status: null
|
||||
|
@ -21,7 +20,7 @@ export class Application extends React.Component<ApplicationProps, ApplicationSt
|
|||
super(props);
|
||||
|
||||
cockpit.spawn(['tailscale', 'status', '--json']).done(content => {
|
||||
const status: TailscaleStatusResponse = JSON.parse(content)
|
||||
const status: TailscaleStatus = JSON.parse(content)
|
||||
this.setState(state => ({Status: status}));
|
||||
});
|
||||
}
|
||||
|
@ -34,7 +33,7 @@ export class Application extends React.Component<ApplicationProps, ApplicationSt
|
|||
<pre>
|
||||
{
|
||||
this.state.Status != null
|
||||
? this.state.Status.Self.TailscaleIPs[0]
|
||||
? this.state.Status.Self.HostName + " " + this.state.Status.Self.TailscaleIPs[0]
|
||||
: <p>Loading...</p>
|
||||
}
|
||||
</pre>
|
||||
|
|
46
src/types.ts
46
src/types.ts
|
@ -9,25 +9,47 @@ export type TailscaleBackendState =
|
|||
| 'Starting'
|
||||
| 'Running';
|
||||
|
||||
export type TailscaleStatusResponse = {
|
||||
BackendState: TailscaleBackendState;
|
||||
AuthURL: string;
|
||||
Self: {
|
||||
export enum OS {
|
||||
Android = "android",
|
||||
IOS = "iOS",
|
||||
Linux = "linux",
|
||||
MACOS = "macOS",
|
||||
Windows = "windows",
|
||||
}
|
||||
|
||||
export type TailscalePeer = {
|
||||
ID: string;
|
||||
UserID: number;
|
||||
PublicKey: string;
|
||||
HostName: string;
|
||||
DNSName: string;
|
||||
OS: string;
|
||||
OS: OS;
|
||||
UserID: string;
|
||||
TailscaleIPs: string[]
|
||||
Tags?: string[];
|
||||
Online: boolean;
|
||||
Capabilities?: string[];
|
||||
}
|
||||
|
||||
export interface TailscaleExitNodeStatus {
|
||||
ID: string;
|
||||
Online: boolean;
|
||||
TailscaleIPs: string[];
|
||||
Capabilities: string[];
|
||||
Online: boolean
|
||||
};
|
||||
}
|
||||
|
||||
export type TailscaleStatus = {
|
||||
BackendState: TailscaleBackendState;
|
||||
AuthURL: string;
|
||||
Self: TailscalePeer,
|
||||
User: Record<string, TailscaleUser> | null;
|
||||
CurrentTailnet: {
|
||||
Name: string;
|
||||
MagicDNSSuffix: string;
|
||||
MagicDNSEnabled: boolean;
|
||||
} | null;
|
||||
ExitNodeStatus: TailscaleExitNodeStatus | null;
|
||||
Peer: {
|
||||
[key: string]: TailscalePeer
|
||||
};
|
||||
};
|
||||
|
||||
export type TailscaleUser = {
|
||||
|
@ -38,8 +60,8 @@ export type TailscaleUser = {
|
|||
Roles: string[];
|
||||
};
|
||||
|
||||
export type TailscaleUpResponse = {
|
||||
export type TailscaleUp = {
|
||||
BackendState: TailscaleBackendState;
|
||||
AuthURL?: string; // e.g. https://login.tailscale.com/a/0123456789abcdef
|
||||
QR?: string; // a DataURL-encoded QR code PNG of the AuthURL
|
||||
AuthURL?: string;
|
||||
QR?: string;
|
||||
};
|
Loading…
Reference in New Issue