# etherhamradio/asl-node-check architecture

> Architecture diagram of the GitHub repository etherhamradio/asl-node-check, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/etherhamradio/asl-node-check
- Repository: https://github.com/etherhamradio/asl-node-check

## Overview

asl-node-check is a pair of shell scripts for AllStarLink 3 node owners: one reports security and maintenance issues, and an optional companion script applies selected updates after confirmation. The principal workflow is to run the check, review its findings, and optionally download and run the update script, which rechecks items before acting. The README documents the checks, optional integrations, and saved findings; no source excerpts were available, so relationships below are based on those documented behaviors rather than inspected implementation.

Main entry points: [`asl-node-check.sh`](https://github.com/etherhamradio/asl-node-check/blob/main/asl-node-check.sh) (Check runner), [`asl-node-update.sh`](https://github.com/etherhamradio/asl-node-check/blob/main/asl-node-update.sh) (Update runner)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_check["Security check"]
  node_checker["Check runner<br/>[asl-node-check.sh]"]
  node_os["OS support<br/>[asl-node-check.sh]"]
  node_updates["Updates and services<br/>[asl-node-check.sh]"]
  node_php["PHP security<br/>[asl-node-check.sh]"]
  node_exposure["Internet exposure<br/>[asl-node-check.sh]"]
  node_logins["SSH login settings<br/>[asl-node-check.sh]"]
end

subgraph group_state["Saved findings"]
  node_findings[("Saved findings")]
  node_update_log["Update log"]
end

subgraph group_remediation["Optional remediation"]
  node_updater["Update runner<br/>[asl-node-update.sh]"]
  node_update_actions["Confirmed update actions<br/>[asl-node-update.sh]"]
end

node_owner(("Node owner"))
node_apt["APT repositories"]
node_github["GitHub release files"]

node_owner -->|"runs"| node_checker
node_checker -->|"checks"| node_os
node_checker -->|"checks"| node_updates
node_checker -->|"checks"| node_php
node_checker -->|"checks"| node_exposure
node_checker -->|"checks"| node_logins
node_checker -->|"refreshes package lists"| node_apt
node_checker -->|"checks release version"| node_github
node_checker -->|"saves findings"| node_findings
node_checker -->|"offers download and run"| node_updater
node_updater -->|"reads validated findings"| node_findings
node_updater -->|"rechecks then applies"| node_update_actions
node_updater -->|"records steps"| node_update_log

click node_checker "https://github.com/etherhamradio/asl-node-check/blob/main/asl-node-check.sh"
click node_os "https://github.com/etherhamradio/asl-node-check/blob/main/asl-node-check.sh"
click node_updates "https://github.com/etherhamradio/asl-node-check/blob/main/asl-node-check.sh"
click node_php "https://github.com/etherhamradio/asl-node-check/blob/main/asl-node-check.sh"
click node_exposure "https://github.com/etherhamradio/asl-node-check/blob/main/asl-node-check.sh"
click node_logins "https://github.com/etherhamradio/asl-node-check/blob/main/asl-node-check.sh"
click node_updater "https://github.com/etherhamradio/asl-node-check/blob/main/asl-node-update.sh"
click node_update_actions "https://github.com/etherhamradio/asl-node-check/blob/main/asl-node-update.sh"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_checker,node_os,node_updates,node_php,node_exposure,node_logins toneBlue
class node_findings,node_update_log toneAmber
class node_updater,node_update_actions toneMint
class node_owner,node_apt,node_github toneIndigo
```

## Components

### Security check

- [Check runner](https://github.com/etherhamradio/asl-node-check/blob/main/asl-node-check.sh): `asl-node-check.sh`
- [OS support](https://github.com/etherhamradio/asl-node-check/blob/main/asl-node-check.sh): `asl-node-check.sh`
- [Updates and services](https://github.com/etherhamradio/asl-node-check/blob/main/asl-node-check.sh): `asl-node-check.sh`
- [PHP security](https://github.com/etherhamradio/asl-node-check/blob/main/asl-node-check.sh): `asl-node-check.sh`
- [Internet exposure](https://github.com/etherhamradio/asl-node-check/blob/main/asl-node-check.sh): `asl-node-check.sh`
- [SSH login settings](https://github.com/etherhamradio/asl-node-check/blob/main/asl-node-check.sh): `asl-node-check.sh`

### Saved findings

- **Saved findings**
- **Update log**

### Optional remediation

- [Update runner](https://github.com/etherhamradio/asl-node-check/blob/main/asl-node-update.sh): `asl-node-update.sh`
- [Confirmed update actions](https://github.com/etherhamradio/asl-node-check/blob/main/asl-node-update.sh): `asl-node-update.sh`

### Other components

- **Node owner**
- **APT repositories**
- **GitHub release files**

## Connections

- Node owner → Check runner: runs (evidence: `README.md`)
- Check runner → OS support: checks (evidence: `README.md`)
- Check runner → Updates and services: checks (evidence: `README.md`)
- Check runner → PHP security: checks (evidence: `README.md`)
- Check runner → Internet exposure: checks (evidence: `README.md`)
- Check runner → SSH login settings: checks (evidence: `README.md`)
- Check runner → APT repositories: refreshes package lists (evidence: `README.md`)
- Check runner → GitHub release files: checks release version (evidence: `README.md`)
- Check runner → Saved findings: saves findings (evidence: `README.md`)
- Check runner → Update runner: offers download and run (evidence: `README.md`)
- Update runner → Saved findings: reads validated findings (evidence: `README.md`)
- Update runner → Confirmed update actions: rechecks then applies (evidence: `README.md`)
- Update runner → Update log: records steps (evidence: `README.md`)
