Filter for shared-to/shareenode

main
Gerard Braad 2023-06-23 02:13:36 +08:00
parent 23530dcb05
commit 7df29cbce3
2 changed files with 31 additions and 24 deletions

View File

@ -35,15 +35,19 @@ export class Application extends React.Component<ApplicationProps, ApplicationSt
render() {
function isNotSharee(peer:TailscalePeer): peer is TailscalePeer {
return peer.DNSName !== ""; // ShareeNode doesn't work?
}
return (
<>
{
this.state.Status != null
? <Table
aria-label="Tailscale peers"
variant='compact' borders={false}>
aria-label="Tailscale peers"
variant='compact' borders={false}>
<Caption>Tailscale peers</Caption>
<Thead noWrap>
<Thead>
<Tr>
<Th></Th>
<Th>IP</Th>
@ -59,9 +63,11 @@ export class Application extends React.Component<ApplicationProps, ApplicationSt
<Tbody>
<Peer {...this.state.Status.Self} />
{
Object.entries(this.state.Status.Peer).map(peer => {
return <Peer {...peer[1]} />
}
Object.values(this.state.Status.Peer)
.filter(isNotSharee)
.map(peer => {
return <Peer {...peer} />
}
)
}
</Tbody>
@ -82,26 +88,26 @@ class Peer extends React.Component<TailscalePeer> {
const network = name[1] + '.' + 'ts.net';
var tags = "-"
if(this.props.Tags) {
const mapped_items = this.props.Tags?.map(t => { return t})
if (this.props.Tags) {
const mapped_items = this.props.Tags?.map(t => { return t })
tags = mapped_items.join(', ')
}
return (
<Tr>
<Td>
{ this.props.Online
{this.props.Online
? <Icon status="success"><CheckCircleIcon /></Icon>
: <Icon status="danger"><ExclamationCircleIcon /></Icon>
}</Td>
<Td>{ this.props.TailscaleIPs[0] }</Td>
<Td>{ hostName }</Td>
<Td>{ network }</Td>
<Td>{this.props.TailscaleIPs[0]}</Td>
<Td>{hostName}</Td>
<Td>{network}</Td>
<Td>{
tags
}
tags
}
</Td>
<Td>{ this.props.Active
<Td>{this.props.Active
? this.props.CurAddr != ""
? "Direct"
: "Relay: " + this.props.Relay
@ -109,14 +115,14 @@ class Peer extends React.Component<TailscalePeer> {
? "Idle"
: "-"
}</Td>
<Td>{ this.props.ExitNode
? "Current"
: this.props.ExitNodeOption
? "Yes"
: "-"
<Td>{this.props.ExitNode
? "Current"
: this.props.ExitNodeOption
? "Yes"
: "-"
}</Td>
<Td>{ this.props.OS }</Td>
<Td>{ this.props.TxBytes } / { this.props.RxBytes }</Td>
<Td>{this.props.OS}</Td>
<Td>{this.props.TxBytes} / {this.props.RxBytes}</Td>
</Tr>);
}
}

View File

@ -40,6 +40,7 @@ export type TailscalePeer = {
ExitNodeOption: boolean;
Active: boolean;
CurAddr: string;
ShareeNode?: boolean; // funnel-ingress-node, device-of-shared-to-user
}
export interface TailscaleExitNodeStatus {