Initial commit.

master
Jay 3 years ago
commit e9381cd020

1244
LICENSE

File diff suppressed because it is too large Load Diff

@ -0,0 +1,144 @@
# 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
I am going to try to ebed an iFrame in the readme.
<iframe frameborder="0" height="300" scrolling="no" src="https://qth.nq4t.com/hotspots.php" width="320"></iframe>
If this doesn't work you can visit:
https://qth.nq4t.com/hotspots.php
The direct version will be "full-screen". Just remember this was designed for
iframes.
## Usage/Setup
To use this you must meet the following conditions:
```
You must have a web-server running PHP
Your web-server must be able to access your hotspot dashboard
```
It may be possible to run this with everything on a different network without
having to expose your hotspots. A VPN could provide a way for your remote www
server to access dashboards. Running the script remotely and having your web-
server get results via SSH is another possiblity. I'll script this when I get a
chance.
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. Other modes may work with
the DMR setting, like YSF. DMR scrapes the bm_links.php while Dstar scrapes
repeaterinfo.php's "Linked To" box.
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.
## 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
```
# 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/>.

@ -0,0 +1,45 @@
<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>
<?php
$output = shell_exec('/media/html/qth-nq4t/hotspot13alpha.sh');
echo "$output";
?>
</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>
<?php
echo date("Y-m-d") . " @ " . date("H:i:s") . "z";
?>
</small>
</div>
</body>
</html>

@ -0,0 +1,34 @@
#!/bin/bash
#.013 alpha
# de NQ4T (nq4tango@gmail.com)
# SET THE HOSTNAME OR IP OF YOUR HOTSPOT!
pidmr=192.168.1.10
# I HAVE TWO SO I SET TWO
#pidstar=192.168.1.11
# grab copy of rendered bm_links.php from hotspot, convert HTML to newline, filter by "TG", remove timeslot info, convert to one line
# check contents to see if we need to display 'no groups' message
# if you are not using DMR, then comment these two lines out
# to comment out, just add a pound-sign to the start of the line, like these comments.
dmr=$(curl -s http://$pidmr/mmdvmhost/bm_links.php| sed 's/<[^>]\+>/\n/g' | grep '^TG' | sed 's/TG/#/g'| sed 's/(.)//g' | sed ':a;N;$!ba;s/\n/ - /g')
[ -z "$dmr" ] && dmr="No Talkgroups Found"
# do the same for dstar with repeaterinfo.php but just egrep for reflector prefix, strip HTML, keep the first 8 characters
# check to see if we need to display not linked
# if you are not using D-Star, comment these next two lines out. if you don't, the script will take longer to run.
#dstar=$(curl -s http://$pidstar/mmdvmhost/repeaterinfo.php | egrep "REF|XRF|DCS|XLX" | sed 's/<[^>]\+>//g' | cut -b 1-8)
#[ -z "$dstar" ] && dstar="Not Linked"
# HTML for table cells on hotspot.php page. These are all one line even if they look like two in your editor.
# This is for a 2x2 table using DMR and D-Star
#printf "<tr><td style=\"vertical-align: top; font-family: Verdana; font-weight: bold; text-align: right;\" width=\"20%%\"><small>BM TG:</small></td>\n<td style=\"vertical-align: top;\"><small>$dmr</small><br></td></tr>\n<tr><td style=\"vertical-align: top; font-family: Verdana; font-weight: bold; text-align: right;\" width=\"20%%\"><small>D-Star:</small></td>\n<td style=\"vertical-align: top;\"><small>$dstar</small><br></td></tr>\n"
# This is for a DMR only display.
printf "<tr><td style=\"vertical-align: top; font-family: Verdana; font-weight: bold; text-align: right;\"><small>BM TG:</small></td>\n<td style=\"vertical-align: top;\"><small style=\"font-style: italic;\">$dmr</small><br></td></tr>\n"
# This is for a D-STar Only Display
# printf "<tr><td style=\"vertical-align: top; font-family: Verdana; font-weight: bold; text-align: right;\"><small>D-Star:</small></td>\n<td style=\"vertical-align: top;\"><small style=\"font-style: italic;\">$dstar</small><br></td></tr>\n"
Loading…
Cancel
Save