You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
5.8 KiB
Markdown
154 lines
5.8 KiB
Markdown
# Pi-Star Information Scraper & Display
|
|
|
|
This lazily named pair of scripts will allow you to display DStar or DMR
|
|
information using PHP.
|
|
|
|
## About
|
|
|
|
I got the bright idea that I wanted to display my hotspot status information on
|
|
my QRZ page. Like most things ham; it doesn't look nice. It's a no frills php
|
|
page that just drops text in a table with basic formatting. I go about as far
|
|
as using viewport information to make it look better in various framesizes. It
|
|
was designed to be placed in an iFrame.
|
|
|
|
This script has not seen any updates in months due to working how I wanted it
|
|
to and not causing issues. In fact I forgot it was working until going to make
|
|
this repository.
|
|
|
|
## Example
|
|
|
|
[A Working Example Can Be Seen Here](https://pistar.nq4t.com/piscrape/piscrape.php)
|
|
|
|
It is currently runnning on Pi-Star directly and reverse proxied through nginx running
|
|
at my QTH.
|
|
|
|
## Usage/Setup
|
|
|
|
To use this you must meet the following conditions:
|
|
|
|
|
|
- You must have a web-server running PHP
|
|
- You must be able to execute local shell scripts
|
|
- Your web-server must be able to access your hotspot dashboard
|
|
- -or-
|
|
- Your server needs SSH to a machine that can talk to dashboards.
|
|
|
|
You will need to load hotspot.sh and edit the hostname information. You will
|
|
also need to configure if you're using D-Star or DMR. DMR scrapes the
|
|
bm_links.php while Dstar scrapes repeaterinfo.php's "Linked To" box. It
|
|
currently looks specifically for D-Star prefixes. If you're using YSF then you
|
|
need to modify the script or wait for me to support it.
|
|
|
|
Place hotspots.php in a document root and edit it to match where you put your
|
|
shell script. Simply loading hotspots.php is all you need to do.
|
|
|
|
It is entirely possible to run this on a web-server outside of your network
|
|
with some additional tinkering. One way is make your hotspot dashboard public
|
|
and accessible over the internet. If you don't want to do that then it is
|
|
possible to execute the shell script remotely:
|
|
|
|
```
|
|
dewdude@pickmy:~# ssh -p [REDACTED] dewdude@qth.nq4t.com 'bash -s < /home/dewdude/pistarscrape/hotspots.sh'
|
|
<tr><td style="vertical-align: top; font-family: Verdana; font-weight: bold; text-align: right;"><small>BM TG:</small></td>
|
|
<td style="vertical-align: top;"><small style="font-style: italic;">#3151 - #8802 - #31514 - #98003 </small><br></td></tr>
|
|
```
|
|
|
|
I told my remote VPS to make an SSH connection to home and execute the script.
|
|
It executed, sent output, and terminated the SSH connection. Nothing cares if
|
|
you use VPN to scrape dashboards or remote SSH. Just as long as the bash script
|
|
can talk to the dashboard and the PHP gets that output from the script. You
|
|
could bounce it around numerous VPNs and relays and it'd be fine.
|
|
|
|
## Testing/Troubleshooting
|
|
|
|
You can easily test both parts of this script to check that the output is
|
|
sane and for debugging purposes. When you run the bash script by itself, you
|
|
will get output like this:
|
|
|
|
```
|
|
dewdude@ovh:/media/html/qth-nq4t$ ./hotspot13alpha.sh
|
|
<tr><td style="vertical-align: top; font-family: Verdana; font-weight: bold; text-align: right;"><small>BM TG:</small></td>
|
|
<td style="vertical-align: top;"><small style="font-style: italic;">#3151 - #8802 - #31514 - #98003 </small><br></td></tr>
|
|
```
|
|
|
|
The bash script literally just generates HTML code; but it's still clear that
|
|
it's outputting talkgroup numbers. The PHP file, hotspots.php, basically
|
|
generates an entire webpage.
|
|
|
|
```
|
|
dewdude@ovh:/media/html/qth-nq4t$ php hotspots.php
|
|
<html>
|
|
<head>
|
|
<meta content="text/html; charset=ISO-8859-1"
|
|
http-equiv="content-type">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>NQ4T Hotspot Info</title>
|
|
</head>
|
|
<body>
|
|
<div style="margin-right: auto; font-family: Verdana; text-align: left;"><big>
|
|
</big><small><span style="font-weight: bold;">NQ4T Pi-Star Hotspot
|
|
Network</span><br>
|
|
<br style="font-weight: bold; font-style: italic;">
|
|
<span style="font-weight: bold; font-style: italic;">Current
|
|
Connections:</span><br>
|
|
</small><big>
|
|
</big>
|
|
<table
|
|
style="border: 1px solid black; text-align: left; border-collapse: collapse;"
|
|
cellpadding="2" cellspacing="0">
|
|
<tbody>
|
|
<tr><td style="vertical-align: top; font-family: Verdana; font-weight: bold; text-align: right;"><small>BM TG:</small></td>
|
|
<td style="vertical-align: top;"><small style="font-style: italic;">#3151 - #8802 - #31514 - #98003 </small><br></td></tr>
|
|
</tbody>
|
|
</table>
|
|
<big>
|
|
</big><small><br style="font-style: italic; font-weight: bold;">
|
|
<span style="font-style: italic; font-weight: bold;">Listed connections
|
|
do not mean I have a radio on or am at a radio.<br>This is especially true
|
|
for Brandmeister.</span><br
|
|
style="font-weight: bold; font-style: italic;">
|
|
<span style="font-style: italic; font-weight: bold;"> For informational
|
|
purposes only.
|
|
</span><br>
|
|
<br>
|
|
73 de NQ4T
|
|
<br>
|
|
2022-05-09 @ 05:42:43z</small>
|
|
</div>
|
|
</body>
|
|
</html>
|
|
```
|
|
|
|
As you can see between `<tbody>` and `</tbody>` is our script output.
|
|
|
|
If the bash script doesn't get data or can't connect, it will just hang for a
|
|
while and output nothing. If PHP can't execute the script, it will generate an
|
|
error in the output.
|
|
|
|
# History
|
|
|
|
```
|
|
09-MAY-2022 - Initial Commit
|
|
21-JAN-2023 - README Update
|
|
|
|
```
|
|
|
|
|
|
# License
|
|
|
|
Pi-Star Information Scraper & Display
|
|
Copyright (C) 2022 Jay Moore - nq4tango@gmail.com
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|