APRS 9M2PJU APRS-IS
APRS-IS Server · hamradio.my

{{ '9M2PJU APRS-IS STATUS' | translate:status.server }}
{{ status.server.time_now | datetime }}

{{ uierror }}

{{ 'ALARM_' + alarm.err | translate }}

{{ 'SERVER_TITLE' | translate }}

{{ 'SERVER_SERVER_ID' | translate }} {{ status.server.server_id }}
{{ 'SERVER_SERVER_ADMIN' | translate }} {{ status.server.admin }}
{{ 'SERVER_SERVER_EMAIL' | translate }} {{ status.server.email }}
{{ 'SERVER_SOFTWARE' | translate }} {{ status.server.software }} {{ status.server.software_version }}
{{ 'SERVER_SOFTWARE_FEATURES' | translate }} {{ status.server.software_build_features }}
{{ 'SERVER_UPTIME' | translate }} {{ status.server.uptime | duration }}
{{ 'SERVER_STARTED' | translate }} {{ status.server.time_started | datetime }}
{{ 'SERVER_OS' | translate }} FreeBSD Beastie{{ status.server.os }}


{{ 'TOTALS_TITLE' | translate }}

TCP Packets Throughput (Rx / Tx) {{ status.totals.tcp_pkts_rx | number }} / {{ status.totals.tcp_pkts_tx | number }}
Rx Packets {{ ((status.totals.tcp_pkts_rx / ((status.totals.tcp_pkts_rx + status.totals.tcp_pkts_tx) || 1)) * 100) | number:1 }}% Tx Packets {{ ((status.totals.tcp_pkts_tx / ((status.totals.tcp_pkts_rx + status.totals.tcp_pkts_tx) || 1)) * 100) | number:1 }}%
TCP Data Volume (Rx / Tx Traffic) {{ (status.totals.tcp_bytes_rx / 1048576) | number:2 }} MB / {{ (status.totals.tcp_bytes_tx / 1048576) | number:2 }} MB
Rx Bytes {{ ((status.totals.tcp_bytes_rx / ((status.totals.tcp_bytes_rx + status.totals.tcp_bytes_tx) || 1)) * 100) | number:1 }}% Tx Bytes {{ ((status.totals.tcp_bytes_tx / ((status.totals.tcp_bytes_rx + status.totals.tcp_bytes_tx) || 1)) * 100) | number:1 }}%
Server Allocated Clients Capacity {{ status.totals.clients }} / {{ status.totals.clients_max }} ({{ ((status.totals.clients / (status.totals.clients_max || 1)) * 100) | number:1 }}%)
{{ status.totals[k] }} {{ (status.totals[k] - status_prev.totals[k]) / status.tick_dif | ratestr}}/s

{{ 'DUPES_TITLE' | translate }}

Duplicate Check Efficiency (Pass vs Filter) {{ status.dupecheck.uniques_out | number }} unique / {{ status.dupecheck.dupes_dropped | number }} dupe
Unique Passed: {{ ((status.dupecheck.uniques_out / ((status.dupecheck.uniques_out + status.dupecheck.dupes_dropped) || 1)) * 100) | number:2 }}% Dupe Filtered: {{ ((status.dupecheck.dupes_dropped / ((status.dupecheck.uniques_out + status.dupecheck.dupes_dropped) || 1)) * 100) | number:2 }}%
Dupecheck Hash Table Cache {{ status.memory.dupecheck_cells_used | number }} / {{ (status.memory.dupecheck_cells_used + status.memory.dupecheck_cells_free) | number }} cells
{{ status.dupecheck[k] }} {{ (status.dupecheck[k] - status_prev.dupecheck[k]) / status.tick_dif | ratestr}}/s
{{ 'DUPES_' + k | translate }} {{ status.dupecheck.variations[k] }} {{ (status.dupecheck.variations[k] - status_prev.dupecheck.variations[k]) / status.tick_dif | ratestr}}/s

{{ 'LISTENERS_TITLE' | translate }}

Port 14580 (User Defined Filters) Port 8080 (HTTP Full Feed) Port 14501 (Status JSON / Web) Port 10152 (Core APRS-IS Feed)
{{ 'TH_' + k | translate }} Capacity Load
{{ l.proto | uppercase }} {{ l.addr }} {{ l.name }} {{ l.clients }} {{ l.clients_peak }} {{ l.clients_max }} {{ l.connects }} {{ (l.connects - status_prev.listeners_id[l.id].connects) / status.tick_dif | ratestr }} {{ l.pkts_tx }} {{ l.pkts_rx }}/{{ l.pkts_dup }}/{{ l.pkts_ign }} {{ l.bytes_tx }} {{ l.bytes_rx }} {{ (l.bytes_tx - status_prev.listeners_id[l.id].bytes_tx) / status.tick_dif | ratestr }} / {{ (l.bytes_rx - status_prev.listeners_id[l.id].bytes_rx) / status.tick_dif | ratestr }}
{{ ((l.clients / (l.clients_max || 1)) * 100) | number:0 }}%

{{ 'UPLINKS_TITLE' | translate }} Active Live Stream

{{ 'TH_' + k | translate }} Traffic Balance
{{ c.username }} {{ c.addr_rem }} {{ c.mode }} SCTP {{ c.t_connect | datetime }} {{ c.since_connect | duration }} {{ c.since_last_read | duration }} {{ c.app_name }} {{ c.app_version }} {{ c.pkts_tx }} {{ c.pkts_rx }}/{{ c.pkts_dup }}/{{ c.pkts_ign }} {{ c.bytes_tx }} {{ c.bytes_rx }} {{ (c.bytes_tx - status_prev.uplinks_id[c.id].bytes_tx) / status.tick_dif | ratestr }} / {{ (c.bytes_rx - status_prev.uplinks_id[c.id].bytes_rx) / status.tick_dif | ratestr }} {{ c.obuf_q }}
Rx {{ ((c.pkts_rx / ((c.pkts_rx + c.pkts_tx) || 1)) * 100) | number:0 }}%

{{ 'PEERS_TITLE' | translate }}

{{ 'TH_' + k | translate }}
{{ c.username }} {{ c.addr_rem }} {{ c.since_last_read | duration }} {{ c.pkts_tx }} {{ c.pkts_rx }}/{{ c.pkts_dup }}/{{ c.pkts_ign }} {{ c.bytes_tx }} {{ c.bytes_rx }} {{ (c.bytes_tx - status_prev.peers_id[c.id].bytes_tx) / status.tick_dif | ratestr }} / {{ (c.bytes_rx - status_prev.peers_id[c.id].bytes_rx) / status.tick_dif | ratestr }} {{ c.obuf_q }}

{{ 'CLIENTS_TITLE' | translate }} {{ status.clients.length || 0 }} Connected

Active Clients Verification Distribution {{ (status.clients | filter:{verified: 1}).length }} Verified · {{ (status.clients | filter:{verified: 0}).length }} Unverified · {{ (status.clients | filter:{verified: 3}).length }} Cert
Verified: {{ (status.clients | filter:{verified: 1}).length }} ({{ (((status.clients | filter:{verified: 1}).length / (status.clients.length || 1)) * 100) | number:0 }}%) Unverified: {{ (status.clients | filter:{verified: 0}).length }} Cert: {{ (status.clients | filter:{verified: 3}).length }}
# {{ 'TH_' + k | translate }}
{{ $index + 1 }} {{ c.addr_loc | onlyport }} {{ c.username }} {{ c.addr_rem }} {{ c.addr_rem }} +UDP SCTP No Yes Cert {{ c.since_connect | duration }} {{ c.since_last_read | duration }} {{ c.app_name }} {{ c.app_version }} {{ c.pkts_tx }} {{ c.pkts_rx }}/{{ c.pkts_dup }}/{{ c.pkts_ign }} {{ c.bytes_tx }} {{ c.bytes_rx }} {{ (c.bytes_tx - status_prev.clients_id[c.id].bytes_tx) / status.tick_dif | ratestr }} / {{ (c.bytes_rx - status_prev.clients_id[c.id].bytes_rx) / status.tick_dif | ratestr }} {{ c.obuf_q }} {{ c.heard_count }} {{ c.filter }}
APRS CLIENTS

{{ 'MEM_TITLE' | translate }}

{{ 'MEM_TH_TYPE' | translate }} Memory Utilization Bar {{ 'MEM_TH_cell_size' | translate }} {{ 'MEM_TH_cells_used' | translate }} {{ 'MEM_TH_cells_free' | translate }} {{ 'MEM_TH_used_bytes' | translate }} {{ 'MEM_TH_allocated_bytes' | translate }} {{ 'MEM_TH_blocks' | translate }}
{{ v }}
{{ ((status.memory[k + '_used_bytes'] / (status.memory[k + '_allocated_bytes'] || 1)) * 100) | number:1 }}%
{{ status.memory[k + '_cell_size'] }} {{ status.memory[k + '_cells_used'] }} {{ status.memory[k + '_cells_free'] }} {{ status.memory[k + '_used_bytes'] }} {{ status.memory[k + '_allocated_bytes'] }} {{ status.memory[k + '_blocks'] }}/{{ status.memory[k + '_blocks_max'] }}