Merge pull request #67 from mcguirepr89/newinstaller

Newinstaller
This commit is contained in:
Patrick McGuire
2021-11-06 16:13:36 -04:00
committed by GitHub
33 changed files with 4649 additions and 920 deletions
-2
View File
@@ -4,8 +4,6 @@ model/BirdNET_Soundscape_Model.pkl
.vscode
datasets/
birdnet.conf
miniforge
scripts/install_miniforge.sh
IdentifiedSoFar.txt
IdentifiedSoFar.txt.bak
Birders_Guide_Installer_Configuration.txt
+18 -127
View File
@@ -1,10 +1,11 @@
#!/usr/bin/env bash
set -e
USER=pi
HOME=/home/pi
my_dir=${HOME}/BirdNET-Pi
branch=main
trap '${my_dir}/scripts/dump_logs.sh && exit' EXIT SIGHUP SIGINT
if [ "$(uname -m)" != "aarch64" ];then
echo "BirdNET-Pi requires a 64-bit OS.
It looks like your operating system is using $(uname -m),
@@ -14,63 +15,6 @@ information"
exit 1
fi
install_zram_swap() {
echo
echo "Configuring zram.service"
sudo touch /etc/modules-load.d/zram.conf
echo 'zram' | sudo tee /etc/modules-load.d/zram.conf
sudo touch /etc/modprobe.d/zram.conf
echo 'options zram num_devices=1' | sudo tee /etc/modprobe.d/zram.conf
sudo touch /etc/udev/rules.d/99-zram.rules
echo 'KERNEL=="zram0", ATTR{disksize}="4G",TAG+="systemd"' \
| sudo tee /etc/udev/rules.d/99-zram.rules
sudo touch /etc/systemd/system/zram.service
echo "Installing zram.service"
cat << EOF | sudo tee /etc/systemd/system/zram.service &> /dev/null
[Unit]
Description=Swap with zram
After=multi-user.target
[Service]
Type=oneshot
RemainAfterExit=true
ExecStartPre=/sbin/mkswap /dev/zram0
ExecStart=/sbin/swapon /dev/zram0
ExecStop=/sbin/swapoff /dev/zram0
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable zram
echo
echo "Installing stage 2 installation script now."
cd ~
curl -s -O "https://raw.githubusercontent.com/mcguirepr89/BirdNET-Pi/${branch}/Birders_Guide_Installer.sh"
chmod +x Birders_Guide_Installer.sh
cat << EOF | sudo tee /etc/systemd/user/birdnet-system-installer.service &> /dev/null
[Unit]
Description=A BirdNET-Pi Installation Script Service
After=graphical.target network-online.target
[Service]
Type=simple
Restart=on-failure
RestartSec=3s
ExecStart=lxterminal -e /home/pi/Birders_Guide_Installer.sh
[Install]
WantedBy=default.target
EOF
systemctl --user enable birdnet-system-installer.service
echo
echo "Stage 1 complete"
touch ${HOME}/stage_1_complete
echo
echo "Rebooting the system in 5 seconds"
sleep 5
sudo reboot
}
stage_1() {
echo
echo "Beginning Stage 1"
@@ -84,15 +28,8 @@ stage_1() {
echo "Installing git"
sudo apt install -qqy git
fi
ZRAM="$(swapon --show=SIZE,NAME | awk -FG '!/SIZE/ && /zram/ {print $1}')"
[ ! -z ${ZRAM} ] || ZRAM=0
if [ ${ZRAM} -lt 4 ];then
install_zram_swap
else
echo "Stage 1 complete"
stage_2
exit
fi
touch ${HOME}/stage_1_complete
echo "Stage 1 complete"
}
stage_2() {
@@ -106,62 +43,32 @@ stage_2() {
echo "Connected!"
echo
if [ ! -d ${my_dir} ];then
cd ~ || exit 1
cd ${HOME} || exit 1
echo "Cloning the BirdNET-Pi repository $branch branch into your home directory"
git clone -b ${branch} https://github.com/mcguirepr89/BirdNET-Pi.git ~/BirdNET-Pi
git clone -b ${branch} https://github.com/mcguirepr89/BirdNET-Pi.git ${HOME}/BirdNET-Pi
else
cd ${my_dir} && git checkout ${branch}
fi
if [ -f ${my_dir}/Birders_Guide_Installer_Configuration.txt ];then
echo
source ${my_dir}/Birders_Guide_Installer_Configuration.txt
if [ -z ${LATITUDE} ] || [ -z ${LONGITUDE} ] || [ -z ${CADDY_PWD} ] || [ -z ${ICE_PWD} ] || [ -z ${DB_PWD} ] || [ -z ${DB_ROOT_PWD} ];then
echo
echo "Follow the instructions to fill out the LATITUDE and LONGITUDE variables
and set the passwords for the live audio stream. Save the file after editing
and then close the Mouse Pad editing window to continue."
if ( env | grep SSH_CONNECTION &> /dev/null );then
editor=nano
echo
if [ -z "$SSH_CONNECTION" ];then
EDITOR=mousepad
else
editor=mousepad
EDITOR=nano
fi
$editor ${my_dir}/Birders_Guide_Installer_Configuration.txt
while pgrep $editor &> /dev/null;do
$EDITOR ${my_dir}/Birders_Guide_Installer_Configuration.txt
while pgrep $EDITOR &> /dev/null;do
sleep 1
done
source ${my_dir}/Birders_Guide_Installer_Configuration.txt || exit 1
else
echo "Something went wrong. I can't find the configuration file."
exit 1
fi
if [ -z ${LATITUDE} ] || [ -z ${LONGITUDE} ] || [ -z ${CADDY_PWD} ] || [ -z ${ICE_PWD} ] || [ -z ${DB_PWD} ] || [ -z ${DB_ROOT_PWD} ];then
echo
echo
echo "It looks like you haven't filled out the Birders_Guide_Installer_Configuration.txt file
completely.
Open that file to edit it. (Go to the folder icon in the top left and look for the \"BirdNET-Pi\"
folder and double-click the file called \"Birders_Guide_Installer_Configuration.txt\"
Enter the latitude and longitude of where the BirdNET-Pi will be.
You can find this information at https://maps.google.com
Find your location on the map and right click to find your coordinates.
After you have filled out the configuration file, you can re-run this script. Just do the exact
same things you did to start this (copying and pasting from the Wiki) to try again.
Press Enter to close this window.
Good luck!"
read
exit 1
fi
echo "Installing the BirdNET-Pi configuration file."
[ -f ${my_dir}/soundcard_params.txt ] || touch ${my_dir}/soundcard_params.txt
SOUND_PARAMS="${HOME}/BirdNET-Pi/soundcard_params.txt"
SOUND_CARD="$(sudo -u pi aplay -L \
| grep -e '^hw' \
| cut -d, -f1 \
| grep -ve 'vc4' -e 'Head' -e 'PCH' \
| uniq)"
script -c "arecord -D ${SOUND_CARD} --dump-hw-params" -a ${SOUND_PARAMS} &> /dev/null
install_birdnet_config || exit 1
echo "Installing BirdNET-Lite"
if ${my_dir}/scripts/install_birdnet.sh << EOF ; then
@@ -242,9 +149,9 @@ DO_RECORDING=y
## will be web-hosted. If you do not own a domain, or would just prefer to keep
## the BirdNET-Pi on your local network, keep this EMPTY.
BIRDNETPI_URL=
EXTRACTIONLOG_URL=
BIRDNETLOG_URL=
BIRDNETPI_URL=${BIRDNETPI_URL}
EXTRACTIONLOG_URL=${EXTRACTIONLOG_URL}
BIRDNETLOG_URL=${BIRDNETLOG_URL}
## CADDY_PWD is the plaintext password (that will be hashed) and used to access
## the "Processed" directory and live audio stream. This MUST be set if you
@@ -387,26 +294,10 @@ EOF
[ -d /etc/birdnet ] || sudo mkdir /etc/birdnet
sudo ln -sf ${my_dir}/birdnet.conf /etc/birdnet/birdnet.conf
}
echo "
Welcome to the Birders Guide Installer script!
The installer runs in two stages:
Stage 1 configures and enables the zRAM kernel module and allocates 4G
to its swapping size if needed. This will trigger a reboot.
Stage 1 also ensures the system is up to date.
Stage 2 guides you through configuring the essentials and installs the full BirdNET-Pi system."
if [ ! -f ${HOME}/stage_1_complete ] ;then
stage_1
stage_2
else
stage_2
if [ -f ${HOME}/Birders_Guide_Installer.sh ];then
rm ${HOME}/Birders_Guide_Installer.sh
fi
rm ${HOME}/stage_1_complete
${my_dir}/scripts/dump_logs.sh
systemctl --user disable --now birdnet-system-installer.service
sudo rm -f /etc/systemd/user/birdnet-system-installer.service
fi
@@ -45,3 +45,10 @@ DB_ROOT_PWD=
# detections.
PUSHED_APP_SECRET=
PUSHED_APP_KEY=
# If you own your own domain, you can input that here to have caddy register
# TLS certificates for the web interface
BIRDNETPI_URL=
BIRDNETLOG_URL=
EXTRACTIONLOG_URL=
+1 -1
View File
@@ -365,7 +365,7 @@ Section 8 -- Interpretation.
processes of any jurisdiction or authority.
=============================================================================
Caddy uses the Apache License Version 2.0
Caddy, and Adminer use the Apache License Version 2.0
=============================================================================
Apache License
Version 2.0, January 2004
+2 -10
View File
@@ -1,5 +1,5 @@
# BirdNET-Pi
![version](https://img.shields.io/badge/version-0.4-blue)
![version](https://img.shields.io/badge/version-0.7-blue)
A realtime acoustic bird classification system for the Raspberry Pi 4B
@@ -32,15 +32,7 @@ The BirdNET-Pi project is built on the [TFLite version of BirdNET](https://githu
The system can be installed with:
```
curl -s https://raw.githubusercontent.com/mcguirepr89/BirdNET-Pi/main/Birders_Guide_Installer.sh | bash
```
The script first enables and configures the zRAM kernel module for swapping, and reboots.
After the reboot, the configuration file is opened for editing. Here, you will input your latitude and longitude and will set a few passwords to protect your Pi. When the installation has finished, the BirdNET-Pi is ready to start collecting and analyzing data on the next boot.
If you have trouble with the installation script, you can cancel and rerun the installer:
```
~/BirdNET-Pi/Birders_Guide_Installer.sh
curl -s https://raw.githubusercontent.com/mcguirepr89/BirdNET-Pi/newinstaller/newinstaller.sh | bash
```
## Access
+83 -98
View File
@@ -1,91 +1,75 @@
################################################################################
# Configuration settings for BirdNET as a service #
# Configuration settings for BirdNET-Pi #
################################################################################
INSTALL_DATE="$(date "+%D")"
#___________The four variables below are the only that are required.___________#
## BIRDNET_USER should be the non-root user systemd should use to execute each
## service.
############ CHANGE THE LATITUDE AND LONGITUDE TO STATIC VALUES ################
BIRDNET_USER=
## LATITUDE and LONGITUDE are self-explanatroy. Find them easily at
## maps.google.com.
## Example: these coordinates would indicate the Eiffel Tower in Paris, France.
## LATITUDE=48.858
## LONGITUDE=2.294
## These are input as shell substitutions so that this will work out of the box.
## It guesses your latitude and longitude based off of your network information.
## THESE SHOULD BE CHANGED TO STATIC NUMBERS!!!!
LATITUDE="$(curl -s4 ifconfig.co/json | awk '/lat/ {print $2}' | tr -d ',')"
LONGITUDE="$(curl -s4 ifconfig.co/json | awk '/lon/ {print $2}' | tr -d ',')"
## RECS_DIR is the location birdnet_analysis.service will look for the data-set
## it needs to analyze. Be sure this directory is readable and writable for
## the BIRDNET_USER. If you are going to be accessing a remote data-set, you
## still need to set this, as this will be where the remote directory gets
## mounted locally.
## mounted locally.
RECS_DIR=
RECS_DIR=/home/pi/BirdSongs
## LATITUDE and LONGITUDE are self-explanatroy. Find them easily at
## maps.google.com. Only go to the thousanths place for these variables
## Example: these coordinates would indicate the Eiffel Tower in Paris, France.
## LATITUDE=48.858
## LONGITUDE=2.294
LATITUDE=
LONGITUDE=
################################################################################
#------------------------------ Extraction Service ---------------------------#
#__________________The variable below can be set to enable the ________________#
#______________________________ extraction.service ____________________________#
# Keep this EMPTY if you do not want this device to perform the extractions #
## DO_EXTRACTIONS is simply a setting for enabling the extraction.service.
## Set this to Y or y to enable extractions.
DO_EXTRACTIONS=
################################################################################
#----------------------------- Recording Service ----------------------------#
#____________________The variable below can be set to enable __________________#
#________________________the birdnet_recording.service ________________________#
# Keep this EMPTY if you do not want this device to perform the recording. #
## DO_RECORDING is simply a setting for enabling the 24/7
## birdnet_recording.service.
## Set this to Y or y to enable recording.
DO_RECORDING=
################################################################################
#----------------------- Web-hosting/Caddy File-server -----------------------#
#_______The two variables below can be set to enable internet access___________#
#____________to your data,(e.g., extractions, raw data, live___________________#
#______________audio stream, BirdNET.selection.txt files)______________________#
# Leave these EMPTY if you do not want to enable web access #
## BIRDNETPI_URL is the URL where the extractions, data-set, and live-stream
## will be web-hosted. If you do not own a domain, or would just prefer to keep
## BirdNET-Pi on your local network, keep this empty.
BIRDNETPI_URL=
#----------------------- Web Interface User Password ------------------------#
#____________________The variable below sets the 'birdnet'_____________________#
#___________________user password for the live audio stream,___________________#
#_________________web tools, system info, and processed files__________________#
## CADDY_PWD is the plaintext password (that will be hashed) and used to access
## the "Processed" directory and live audio stream. This MUST be set if you
## choose to enable this feature.
## certain parts of the web interface
CADDY_PWD=
CADDY_PWD=changeme
#------------------------- MariaDB User Passwords ---------------------------#
#_____________The variables below set the 'birder' and 'root'__________________#
#_______________________user passwords for the MariaDB_________________________#
## DB_PWD is for the 'birder' user
DB_PWD=changeme
## DB_ROOT_PWD is for the 'root' user
DB_ROOT_PWD=changeme
################################################################################
#------------------------- Live Audio Stream --------------------------------#
#_____________The variable below configures/enables the live___________________#
#_____________________________audio stream.____________________________________#
# Keep this EMPTY if you do not wish to enable the live stream #
# or if this device is not doing the recording #
## ICE_PWD is the password that icecast2 will use to authenticate ffmpeg as a
## trusted source for the stream. You will never need to enter this manually
## anywhere other than here.
ICE_PWD=
ICE_PWD=changeme
#----------------------- Web-hosting/Caddy File-server -----------------------#
#________The four variables below can be set to enable internet access_________#
#____________to your data,(e.g., extractions, raw data, live___________________#
#______________audio stream, BirdNET.selection.txt files)______________________#
## BIRDNETPI_URL is the URL where the extractions, data-set, and live-stream
## will be web-hosted. If you do not own a domain, or would just prefer to keep
## the BirdNET-Pi on your local network, keep this EMPTY.
BIRDNETPI_URL=
EXTRACTIONLOG_URL=
BIRDNETLOG_URL=
################################################################################
#------------------- Mobile Notifications via Pushed.co ---------------------#
#____________The two variables below enable mobile notifications_______________#
#_____________See https://pushed.co/quick-start-guide to get___________________#
@@ -99,6 +83,9 @@ PUSHED_APP_KEY=
PUSHED_APP_SECRET=
################################################################################
#-------------------------------- Defaults ----------------------------------#
################################################################################
#------------------------------- NoMachine ----------------------------------#
#_____________The variable below can be set include NoMachine__________________#
#_________________remote desktop software to be installed._____________________#
@@ -109,14 +96,27 @@ PUSHED_APP_SECRET=
## NoMachine alongside the BirdNET-Pi for remote desktop access. This in-
## staller assumes personal use. Please reference the LICENSE file included
## in this repository for more information.
## Set this to Y or y to install NoMachine alongside the BirdNET-Pi
## Set this to Y or y to install NoMachine alongside the BirdNET-Lite
INSTALL_NOMACHINE=
INSTALL_NOMACHINE=y
################################################################################
#-------------------------------- Defaults ----------------------------------#
#______The seven variables below are default settings that you (probably)______#
#__________________don't need to change at all, but can._______________________#
#
#------------------------------ Extraction Service ---------------------------#
## DO_EXTRACTIONS is simply a setting for enabling the extraction.service.
## Set this to Y or y to enable extractions.
DO_EXTRACTIONS=y
#----------------------------- Recording Service ----------------------------#
#____________________The variable below can be set to enable __________________#
#________________________the birdnet_recording.service ________________________#
## DO_RECORDING is simply a setting for enabling the 24/7
## birdnet_recording.service.
## Set this to Y or y to enable recording.
DO_RECORDING=y
## REC_CARD is the sound card you would want the birdnet_recording.service to
## use. This setting is irrelevant if you are not planning on doing data
@@ -129,7 +129,7 @@ INSTALL_NOMACHINE=
## devices from the output of running 'aplay -L'
REC_CARD=default
## PROCESSED is the directory where the formerly 'Analyzed' files are moved
## after extractions have been made from them. This includes both WAVE and
## BirdNET.selection.txt files.
@@ -166,44 +166,29 @@ CONFIDENCE=0.7
SENSITIVITY=1.25
################################################################################
#------------------------------ Auto-Generated ------------------------------#
#_____________________The variables below are auto-generated___________________#
#______________________________during installation_____________________________#
## CHANNELS holds the variabel that corresponds to the number of channels the
## sound card supports.
CHANNELS=
# Don't touch the variables below
## SYSTEMD_MOUNT is created from the RECS_DIR variable to comply with systemd
## mount naming requirements.
SYSTEMD_MOUNT=$(echo ${RECS_DIR#/} | tr / -).mount
CHANNELS=2
## VENV is the virtual environment where the the BirdNET python build is found,
## i.e, VENV is the virtual environment miniforge built for BirdNET.
VENV=$(dirname ${my_dir})/miniforge/envs/birdnet
################################################################################
#---------------------------------- Testing -----------------------------------#
#_____________These variables are for testing. Please don't touch______________#
#_______________them if you are not testing these features.____________________#
# To test different values for RECORDING_LENGTH, first:
# 1) stop the birdnet_recording.service:
#### run: `sudo systemctl stop birdnet_recording.service`
# 2) remove any remaining audio files in the day's recording directory:
#### Example: to remove recordings for Saturday, October 2nd, 2021, you would
#### run: `rm -rf /home/pi/BirdSongs/October-2021/02-Saturday/*`
# 3) restart the birdnet_recording.service:
#### run: `sudo systemctl restart birdnet_recording.service`
VENV=/home/pi/BirdNET-Pi/birdnet
## RECORDING_LENGTH sets the length of the recording that BirdNET-Lite will analyze.
RECORDING_LENGTH=
## EXTRACTION_LENGTH sets the length of the audio extractions that will be made
## from each BirdNET-Lite detection.
EXTRACTION_LENGTH=
## BIRDNET_USER should be the non-root user systemd should use to execute each
## service.
BIRDNET_USER=pi
## These are just for debugging
LAST_RUN=
THIS_RUN=
+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="78" height="20" role="img" aria-label="version: 0.7"><title>version: 0.7</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="78" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="51" height="20" fill="#555"/><rect x="51" width="27" height="20" fill="#007ec6"/><rect width="78" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="265" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="410">version</text><text x="265" y="140" transform="scale(.1)" fill="#fff" textLength="410">version</text><text aria-hidden="true" x="635" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="170">0.7</text><text x="635" y="140" transform="scale(.1)" fill="#fff" textLength="170">0.7</text></g></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

+103
View File
@@ -0,0 +1,103 @@
/* style sheet */
* {
box-sizing: border-box;
}
.row {
display: flex;
}
.column {
flex: 50%;
padding-right: 5px;
}
table {
margin: 0 auto;
font-size: large;
border-collapse: collapse;
border-spacing: 0;
width: 100%;
border: 1px solid black;
}
h1 {
text-align: center;
color: black;
font-size: xx-large;
font-family: 'Gill Sans', 'Gill Sans MT',
' Calibri', 'Trebuchet MS', 'sans-serif';
}
h2 {
text-align: center;
color: black;
font-size: large;
font-family: 'Gill Sans', 'Gill Sans MT',
' Calibri', 'Trebuchet MS', 'sans-serif';
}
td {
background-color: rgb(119, 196, 135);
border: 1px solid black;
}
th,
td {
font-weight: bold;
border: 1px solid black;
padding: 10px;
text-align: center;
background-color: rgb(219, 296, 235);
}
@media screen and (max-width: 800px) {
.column {
float: none;
width: 100%;
}
table {
margin: 0 auto;
font-size: medium;
border-collapse: collapse;
border-spacing: 1;
width: 100%;
border: 1px solid black;
}
h1 {
text-align: center;
color: black;
font-size: large;
font-family: 'Gill Sans', 'Gill Sans MT',
' Calibri', 'Trebuchet MS', 'sans-serif';
}
h2 {
text-align: center;
color: black;
font-size: large;
font-family: 'Gill Sans', 'Gill Sans MT',
' Calibri', 'Trebuchet MS', 'sans-serif';
}
td {
background-color: rgb(119, 196, 135);
border: 1px solid black;
}
th,
td {
font-weight: bold;
border: 1px solid black;
padding: 10px;
text-align: center;
}
}
td {
font-weight: lighter;
}
body::-webkit-scrollbar {
display:none
}
+8
View File
@@ -22,6 +22,11 @@ body {
position: absolute;
top: 0px;
left: 0px;
}
#content2 img {
position: absolute;
top: 0px;
right: 0px;
}
</style>
</head>
@@ -38,5 +43,8 @@ body {
<a href="http://birdnetpi.local/phpsysinfo" target="content">System Info</a> |
<a href="http://birdnetpi.local/scripts/" target="content">Tools</a>
</p>
<div id="content2">
<img src="images/version.svg" class="ribbon"/>
</div>
</body>
</html>
+15
View File
@@ -0,0 +1,15 @@
#!/usr/bin/env bash
# Simple new installer
HOME=/home/pi
USER=pi
branch=newinstaller
sudo apt update
if ! which git &> /dev/null;then
sudo apt -y install git
fi
git clone --depth 1 -b ${branch} https://github.com/mcguirepr89/BirdNET-Pi.git ${HOME}/BirdNET-Pi
echo 'Now, run the following script
sudo -E ${HOME}/BirdNET-Pi/scripts/birdnet-pi-config
'
+1795
View File
File diff suppressed because one or more lines are too long
+631 -477
View File
File diff suppressed because it is too large Load Diff
+4
View File
@@ -6,6 +6,10 @@ source /etc/birdnet/birdnet.conf
# Make a temporary file to compare the current birdnet.conf with
# the birdnet.conf as it was the last time this script was called
my_dir=$(realpath $(dirname $0))
if [ -z ${THIS_RUN} ];then THIS_RUN=/home/pi/BirdNET-Pi/thisrun.txt;fi
if [ -z ${LAST_RUN} ];then LAST_RUN=/home/pi/BirdNET-Pi/lastrun.txt;fi
if [ -z ${LATITUDE} ];then LATITUDE=-1;fi
if [ -z ${LONGITUDE} ];then LONGITUDE=-1;fi
make_thisrun() {
sleep .4
awk '!/#/ && !/^$/ {print}' /etc/birdnet/birdnet.conf \
+45 -13
View File
@@ -4,28 +4,60 @@
# you are okay will losing all the data that you've collected and processed
# so far.
source /etc/birdnet/birdnet.conf
HOME=/home/pi
USER=pi
my_dir=${HOME}/BirdNET-Pi/scripts
echo "Stopping services"
sudo systemctl stop birdnet_recording.service
echo "Removing all data . . . "
sudo rm -drf "${RECS_DIR}"
sudo rm -f "${IDFILE}"
echo "Recreating necessary directories"
[ -d ${RECS_DIR} ] || sudo -u ${BIRDNET_USER} mkdir -p ${RECS_DIR}
[ -d ${EXTRACTED} ] || sudo -u ${BIRDNET_USER} mkdir -p ${EXTRACTED}
[ -d ${EXTRACTED}/By_Date ] || sudo -u ${BIRDNET_USER} mkdir -p ${EXTRACTED}/By_Date
[ -d ${EXTRACTED}/By_Common_Name ] || sudo -u ${BIRDNET_USER} mkdir -p ${EXTRACTED}/By_Common_Name
[ -d ${EXTRACTED}/By_Scientific_Name ] || sudo -u ${BIRDNET_USER} mkdir -p ${EXTRACTED}/By_Scientific_Name
sudo -u ${BIRDNET_USER} ln -s /home/pi/BirdNET-Pi/templates/index.html ${EXTRACTED}
[ -d ${PROCESSED} ] || sudo -u ${BIRDNET_USER} mkdir -p ${PROCESSED}
[ -L ${EXTRACTED}/scripts ] || sudo -u ${BIRDNET_USER} ln -s /home/pi/BirdNET-Pi/scripts ${EXTRACTED}/
[ -L ${EXTRACTED}/spectrogram.php ] || sudo -u ${BIRDNET_USER} ln -s /home/pi/BirdNET-Pi/scripts/spectrogram.php ${EXTRACTED}
[ -L ${EXTRACTED}/spectrogram.sh ] || sudo -u ${BIRDNET_USER} ln -s /home/pi/BirdNET-Pi/scripts/spectrogram.sh ${EXTRACTED}
[ -L ${EXTRACTED}/viewdb.php ] || sudo -u ${BIRDNET_USER} ln -s /home/pi/BirdNET-Pi/scripts/viewdb.php ${EXTRACTED}
echo "Creating necessary directories"
[ -d ${EXTRACTED} ] || sudo -u ${USER} mkdir -p ${EXTRACTED}
[ -d ${EXTRACTED}/By_Date ] || sudo -u ${USER} mkdir -p ${EXTRACTED}/By_Date
[ -d ${EXTRACTED}/By_Common_Name ] || sudo -u ${USER} mkdir -p ${EXTRACTED}/By_Common_Name
[ -d ${EXTRACTED}/By_Scientific_Name ] || sudo -u ${USER} mkdir -p ${EXTRACTED}/By_Scientific_Name
[ -d ${PROCESSED} ] || sudo -u ${USER} mkdir -p ${PROCESSED}
sudo -u ${USER} ln -fs $(dirname ${my_dir})/homepage/* ${EXTRACTED}
if [ ! -z ${BIRDNETLOG_URL} ];then
BIRDNETLOG_URL="$(echo ${BIRDNETLOG_URL} | sed 's/\/\//\\\/\\\//g')"
sudo -u${USER} sed -i "s/http:\/\/birdnetpi.local:8080/"${BIRDNETLOG_URL}"/g" $(dirname ${my_dir})/homepage/*.html
phpfiles="$(grep -l "birdnetpi.local:8080" ${my_dir}/*.php)"
for i in "${phpfiles[@]}";do
sudo -u${USER} sed -i "s/http:\/\/birdnetpi.local:8080/"${BIRDNETLOG_URL}"/g" ${i}
done
fi
if [ ! -z ${EXTRACTIONLOG_URL} ];then
EXTRACTIONLOG_URL="$(echo ${EXTRACTIONLOG_URL} | sed 's/\/\//\\\/\\\//g')"
sudo -u${USER} sed -i "s/http:\/\/birdnetpi.local:8888/"${EXTRACTIONLOG_URL}"/g" $(dirname ${my_dir})/homepage/*.html
phpfiles="$(grep -l "birdnetpi.local:8888" ${my_dir}/*.php)"
for i in "${phpfiles[@]}";do
sudo -u${USER} sed -i "s/http:\/\/birdnetpi.local:8888/"${EXTRACTIONLOG_URL}"/g" ${i}
done
fi
sudo -u ${USER} ln -fs $(dirname ${my_dir})/scripts ${EXTRACTED}
if [ ! -z ${BIRDNETPI_URL} ];then
BIRDNETPI_URL="$(echo ${BIRDNETPI_URL} | sed 's/\/\//\\\/\\\//g')"
sudo -u${USER} sed -i "s/http:\/\/birdnetpi.local/"${BIRDNETPI_URL}"/g" $(dirname ${my_dir})/homepage/*.html
phpfiles="$(grep -l birdnetpi.local ${my_dir}/*.php)"
for i in "${phpfiles[@]}";do
sudo -u${USER} sed -i "s/http:\/\/birdnetpi.local/"${BIRDNETPI_URL}"/g" ${i}
done
fi
sudo -u ${USER} ln -fs $(dirname ${my_dir})/scripts/spectrogram.php ${EXTRACTED}
sudo -u ${USER} ln -fs $(dirname ${my_dir})/scripts/viewdb.php ${EXTRACTED}
sudo -u ${USER} ln -fs ${HOME}/phpsysinfo ${EXTRACTED}
[ -L ${EXTRACTED}/phpsysinfo.ini ] || sudo -u ${USER} cp ${HOME}/phpsysinfo/phpsysinfo.ini.new ${HOME}/phpsysinfo/phpsysinfo.ini
sudo -u ${USER} cp -f $(dirname ${my_dir})/templates/phpsysinfo.ini ${HOME}/phpsysinfo/
sudo -u ${USER} cp -f $(dirname ${my_dir})/templates/green_bootstrap.css ${HOME}/phpsysinfo/templates/
sudo -u ${USER} cp -f $(dirname ${my_dir})/templates/index_bootstrap.html ${HOME}/phpsysinfo/templates/html
sudo -u ${BIRDNET_USER} cp ~/BirdNET-Pi/templates/index.html ${EXTRACTED}/
sudo -u ${BIRDNET_USER} cp -f ${HOME}/BirdNET-Pi/homepage/index.html ${EXTRACTED}/
echo "Dropping and re-creating database"
sudo /home/pi/BirdNET-Pi/scripts/createdb.sh
echo "Restarting services"
+1 -1
View File
@@ -36,7 +36,7 @@ CREATE TABLE IF NOT EXISTS detections (
Sens FLOAT,
Overlap FLOAT);
GRANT ALL ON birds.* TO 'birder'@'localhost' IDENTIFIED BY '${DB_PWD}' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit
EOF
sed -i "s/databasepassword/${DB_PWD}/g" /home/pi/BirdNET-Pi/analyze.py
+85 -39
View File
@@ -1,48 +1,94 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
<form action="/scripts/edit_birdnet.conf.php">
<input type="submit" value="Edit the birdnet.conf file">
</form>
<style>
* {
box-sizing: border-box;
}
<form action="/scripts/stop_core_services.php" onclick="return confirm('Stop core services?')">
<input type="submit" value="Stop Core BirdNET-Pi Services">
</form>
/* Create two unequal columns that floats next to each other */
.column {
float: left;
padding: 10px;
}
<form action="/scripts/restart_services.php" onclick="return confirm('Restart ALL services?')">
<input type="submit" value="Restart ALL BirdNET-Pi Services">
</form>
.first {
width: calc(50% - 70px);
}
<form action="/scripts/restart_birdnet_analysis.php">
<input type="submit" value="Restart BirdNET Analysis Service">
</form>
.second {
width: calc(50% - 30px);
}
<form action="/scripts/restart_birdnet_recording.php">
<input type="submit" value="Restart Recording Service">
</form>
/* Clear floats after the columns */
.row:after {
content: "";
display: table;
clear: both;
}
body {
background-color: rgb(119, 196, 135);
}
<form action="/scripts/restart_extraction.php">
<input type="submit" value="Restart Extraction Service">
</form>
a {
text-decoration: none;
color: white;
}
<form action="/scripts/restart_caddy.php" onclick="return confirm('Restart Caddy? You will be disconnected for about 20 seconds.')">
<input type="submit" value="Restart Caddy">
</form>
.block {
display: block;
font-weight: bold;
width:100%;
border: none;
background-color: #04AA6D;
padding: 20px 20px;
color: white;
font-size: medium;
cursor: pointer;
text-align: center;
}
</style>
<body style="background-color: rgb(119, 196, 135);">
<div class="row">
<div class="column first">
<form action="/scripts/backup_data.php" onclick="return confirm('Backup ALL Data? Warning: This could take a long time.')">
<input type="submit" value="Backup ALL data">
</form>
<form action="/scripts/stop_core_services.php" onclick="return confirm('Stop core services?')">
<button type="submit" class="block">Stop Core BirdNET-Pi Services</button>
</form>
<form action="/scripts/restart_services.php" onclick="return confirm('Restart ALL services?')">
<button type="submit" class="block">Restart ALL BirdNET-Pi Services</button>
</form>
<form action="/scripts/restart_birdnet_analysis.php">
<button type="submit" class="block">Restart BirdNET Analysis Service</button>
</form>
<form action="/scripts/restart_birdnet_recording.php">
<button type="submit" class="block">Restart Recording Service</button>
</form>
<form action="/scripts/restart_extraction.php">
<button type="submit" class="block">Restart Extraction Service</button>
</form>
<form action="/scripts/restart_caddy.php" onclick="return confirm('Restart Caddy? You will be disconnected for about 20 seconds.')">
<button type="submit" class="block">Restart Caddy</button>
</form>
</div>
<div class="column second">
<form >
<button type="submit" class="block"><a target="_content" href="/scripts/adminer.php">Database Maintenance</a></button>
</form>
<form action="/scripts/clear_all_data.php" onclick="return confirm('Clear ALL Data? This cannot be undone.')">
<input type="submit" value="Clear ALL data">
</form>
<form action="/scripts/update_birdnet.php" onclick="return confirm('BE SURE TO STASH ANY LOCAL CHANGES YOU HAVE MADE TO THE SYSTEM BEFORE UPDATING!!!')">
<input type="submit" value="Update BirdNET-Pi">
</form>
<form action="/scripts/reboot_system.php" onclick="return confirm('Are you sure you want to reboot?')">
<input type="submit" value="Reboot BirdNET-Pi">
</form>
<form action="/scripts/shutdown_system.php" onclick="return confirm('Are you sure you want to shutdown?')">
<input type="submit" value="Shutdown BirdNET-Pi">
</form>
<form action="/scripts/backup_data.php" onclick="return confirm('Backup ALL Data? Warning: This could take a long time.')">
<button type="submit" class="block">Backup ALL data</button>
</form>
<form action="/scripts/reboot_system.php" onclick="return confirm('Are you sure you want to reboot?')">
<button type="submit" class="block">Reboot BirdNET-Pi</button>
</form>
<form action="/scripts/update_birdnet.php" onclick="return confirm('BE SURE TO STASH ANY LOCAL CHANGES YOU HAVE MADE TO THE SYSTEM BEFORE UPDATING!!!')">
<button style="color:blue;" type="submit" class="block">Update BirdNET-Pi</button>
</form>
<form action="/scripts/shutdown_system.php" onclick="return confirm('Are you sure you want to shutdown?')">
<button style="color: red;" type="submit" class="block">Shutdown BirdNET-Pi</button>
</form>
<form action="/scripts/clear_all_data.php" onclick="return confirm('Clear ALL Data? This cannot be undone.')">
<button style="color: red;" type="submit" class="block">Clear ALL data</button>
</form>
</div>
</div>
</body>
+1 -3
View File
@@ -99,9 +99,7 @@ echo " BirdNet is installed!!
Visit
the BirdNET-Pi homepage at http://birdnetpi.local"
echo
read -n1 -p " Would you like to run the birdnet_analysis.service now?" YN
echo
echo
case $YN in
[Yy] ) sudo systemctl start birdnet_analysis.service \
&& journalctl -fu birdnet_analysis;;
+28 -5
View File
@@ -7,7 +7,7 @@ USER=pi
HOME=/home/pi
my_dir=${HOME}/BirdNET-Pi/scripts
tmpfile=$(mktemp)
nomachine_url="https://download.nomachine.com/download/7.6/Arm/nomachine_7.6.2_3_arm64.deb"
nomachine_url="https://download.nomachine.com/download/7.7/Arm/nomachine_7.7.4_1_arm64.deb"
gotty_url="https://github.com/yudai/gotty/releases/download/v1.0.1/gotty_linux_arm.tar.gz"
config_file="$(dirname ${my_dir})/birdnet.conf"
@@ -16,6 +16,7 @@ set_hostname() {
echo "Setting hostname to 'birdnetpi'"
hostnamectl set-hostname birdnetpi
sed -i 's/raspberrypi/birdnetpi/g' /etc/hosts
sed -i 's/localhost$/localhost birdnetpi.local/g' /etc/hosts
fi
}
@@ -111,17 +112,25 @@ create_necessary_dirs() {
sudo -u ${USER} ln -fs $(dirname ${my_dir})/homepage/* ${EXTRACTED}
if [ ! -z ${BIRDNETLOG_URL} ];then
BIRDNETLOG_URL="$(echo ${BIRDNETLOG_URL} | sed 's/\/\//\\\/\\\//g')"
#BIRDNETLOG_URL="$(echo ${BIRDNETLOG_URL} | sed 's/\/\//\\\/\\\//g')"
sudo -u${USER} sed -i "s/http:\/\/birdnetpi.local:8080/"${BIRDNETLOG_URL}"/g" $(dirname ${my_dir})/homepage/*.html
phpfiles="$(grep -l "birdnetpi.local:8080" ${my_dir}/*.php)"
for i in "${phpfiles[@]}";do
sudo -u${USER} sed -i "s/http:\/\/birdnetpi.local:8080/"${BIRDNETLOG_URL}"/g" ${i}
done
fi
if [ ! -z ${EXTRACTIONLOG_URL} ];then
EXTRACTIONLOG_URL="$(echo ${EXTRACTIONLOG_URL} | sed 's/\/\//\\\/\\\//g')"
#EXTRACTIONLOG_URL="$(echo ${EXTRACTIONLOG_URL} | sed 's/\/\//\\\/\\\//g')"
sudo -u${USER} sed -i "s/http:\/\/birdnetpi.local:8888/"${EXTRACTIONLOG_URL}"/g" $(dirname ${my_dir})/homepage/*.html
phpfiles="$(grep -l "birdnetpi.local:8888" ${my_dir}/*.php)"
for i in "${phpfiles[@]}";do
sudo -u${USER} sed -i "s/http:\/\/birdnetpi.local:8888/"${EXTRACTIONLOG_URL}"/g" ${i}
done
fi
sudo -u ${USER} ln -fs $(dirname ${my_dir})/scripts ${EXTRACTED}
if [ ! -z ${BIRDNETPI_URL} ];then
BIRDNETPI_URL="$(echo ${BIRDNETPI_URL} | sed 's/\/\//\\\/\\\//g')"
#BIRDNETPI_URL="$(echo ${BIRDNETPI_URL} | sed 's/\/\//\\\/\\\//g')"
sudo -u${USER} sed -i "s/http:\/\/birdnetpi.local/"${BIRDNETPI_URL}"/g" $(dirname ${my_dir})/homepage/*.html
phpfiles="$(grep -l birdnetpi.local ${my_dir}/*.php)"
for i in "${phpfiles[@]}";do
@@ -132,7 +141,11 @@ create_necessary_dirs() {
sudo -u ${USER} ln -fs $(dirname ${my_dir})/scripts/spectrogram.php ${EXTRACTED}
sudo -u ${USER} ln -fs $(dirname ${my_dir})/scripts/viewdb.php ${EXTRACTED}
sudo -u ${USER} ln -fs ${HOME}/phpsysinfo ${EXTRACTED}
[ -L ${EXTRACTED}/phpsysinfo/phpsysinfo.ini ] || sudo -u ${USER} cp ${HOME}/phpsysinfo/phpsysinfo.ini.new ${HOME}/phpsysinfo/phpsysinfo.ini
sudo -u ${USER} cp -f $(dirname ${my_dir})/templates/phpsysinfo.ini ${HOME}/phpsysinfo/
sudo -u ${USER} cp -f $(dirname ${my_dir})/templates/green_bootstrap.css ${HOME}/phpsysinfo/templates/
sudo -u ${USER} cp -f $(dirname ${my_dir})/templates/index_bootstrap.html ${HOME}/phpsysinfo/templates/html
}
install_alsa() {
@@ -236,6 +249,13 @@ EOF
systemctl reload caddy
}
update_etc_hosts() {
#BIRDNETPI_URL="$(echo ${BIRDNETPI_URL} | sed 's/\/\//\\\/\\\//g')"
#EXTRACTIONLOG_URL="$(echo ${EXTRACTIONLOG_URL} | sed 's/\/\//\\\/\\\//g')"
#BIRDNETLOG_URL="$(echo ${BIRDNETLOG_URL} | sed 's/\/\//\\\/\\\//g')"
sed -ie s/'birdnetpi.local'/"birdnetpi.local ${BIRDNETPI_URL//https:\/\/} ${EXTRACTIONLOG_URL//https:\/\/} ${BIRDNETLOG_URL//https:\/\/}"/g /etc/hosts
}
install_avahi_aliases() {
echo "Installing Avahi Services"
if ! which avahi-publish &> /dev/null; then
@@ -406,6 +426,8 @@ install_livestream_service() {
cat << EOF > /etc/systemd/system/livestream.service
[Unit]
Description=BirdNET-Pi Live Stream
After=network-online.target
Requires=network-online.target
[Service]
Environment=XDG_RUNTIME_DIR=/run/user/1000
@@ -457,6 +479,7 @@ install_selected_services() {
install_caddy
install_Caddyfile
update_etc_hosts
install_avahi_aliases
install_gotty_logs
install_sox
+1 -1
View File
@@ -1,4 +1,4 @@
<?php
shell_exec("/home/pi/BirdNET-Pi/scripts/restart_birdnet_analysis.sh");
header('Location: /viewdb.php');
header('Location: http://birdnetpi.local:8080');
?>
+1 -1
View File
@@ -1,4 +1,4 @@
<?php
shell_exec("/home/pi/BirdNET-Pi/scripts/restart_services.sh");
header('Location: /viewdb.php');
header('Location: http://birdnetpi.local:8080');
?>
+44
View File
@@ -0,0 +1,44 @@
#!/usr/bin/bash
# Writes variables to config file
set -x
birdnetpi_dir=/home/pi/BirdNET-Pi
birdnet_conf=${birdnetpi_dir}/birdnet.conf
if ! [ -z ${new_lat} ];then
sed -i s/'^LATITUDE=.*'/"LATITUDE=${new_lat}"/g ${birdnet_conf}
fi
if ! [ -z ${new_lon} ];then
sed -i s/'^LONGITUDE=.*'/"LONGITUDE=${new_lon}"/g ${birdnet_conf}
fi
if ! [ -z ${caddy_pwd} ];then
sed -i s/'^CADDY_PWD=.*'/"CADDY_PWD=${caddy_pwd}"/g ${birdnet_conf}
hash_pwd=$(caddy hash-password -plaintext ${caddy_pwd})
sed -i s/'birdnet\ .*'/"birdnet ${hash_pwd}"/g /etc/caddy/Caddyfile
systemctl reload caddy
fi
if ! [ -z ${db_pwd} ];then
sed -i s/'^DB_PWD=.*'/"DB_PWD=${db_pwd}"/g ${birdnet_conf}
${birdnetpi_dir}/scripts/update_db_pwd.sh
fi
if ! [ -z ${db_root_pwd} ];then
exit 1 #for now
sed -i s/'^DB_ROOT_PWD=.*'/"DB_ROOT_PWD=${db_root_pwd}"/g ${birdnet_conf}
fi
if ! [ -z ${birdnetpi_url} ];then
sed -i s/'^BIRDNETPI_URL=.*'/"BIRDNETPI_URL=${birdnetpi_url/\/\//\\\/\\\/}"/g ${birdnet_conf}
sed -i s/'^EXTRACTIONLOG_URL=.*'/"EXTRACTIONLOG_URL=${extractionlog_url/\/\//\\\/\\\/}"/g ${birdnet_conf}
sed -i s/'^BIRDNETLOG_URL=.*'/"BIRDNETLOG_URL=${birdnetlog_url/\/\//\\\/\\\/}"/g ${birdnet_conf}
fi
if ! [ -z ${new_sensitivity} ];then
sed -i s/'^SENSITIVITY=.*'/"SENSITIVITY=${new_sensitivity}"/g ${birdnet_conf}
fi
if ! [ -z ${new_confidence} ];then
sed -i s/'^CONFIDENCE=.*'/"CONFIDENCE=${new_confidence}"/g ${birdnet_conf}
fi
+5
View File
@@ -0,0 +1,5 @@
#!/usr/bin/env -S sudo -E bash
# Setting date and time manually for non-network attached installatoins
most_recent="$(date +"%F %T" | tr '-' '/')"
new_time=$(whiptail --inputbox "Please set the correct time by changing these values. (24h clock format)" 20 60 "$most_recent" 3>&1 1>&2 2>&3)
date -s "$new_time"
+5 -3
View File
@@ -1,7 +1,8 @@
#!/usr/bin/env bash
# Uninstall script to remove everything
# set -x # Uncomment to debug
#set -x # Uncomment to debug
trap 'rm -f ${TMPFILE}' EXIT
my_dir=/home/pi/BirdNET-Pi/scripts
source /etc/birdnet/birdnet.conf &> /dev/null
SCRIPTS=(birdnet_analysis.sh
birdnet_recording.sh
@@ -44,8 +45,8 @@ tmux
uninstall.sh
update_species.sh
${HOME}/.gotty)
services=$(awk '/service/ && /systemctl/ && !/php/ {print $3}' ${my_dir}/install_services.sh | sort)
set -x
services=($(awk '/service/ && /systemctl/ && !/php/ {print $3}' ${my_dir}/install_services.sh | sort))
remove_services() {
for i in "${services[@]}"; do
@@ -59,6 +60,7 @@ remove_services() {
sudo rm -drf /etc/systemd/system/"${i}"
fi
done
set +x
remove_icecast
remove_crons
}
+2 -3
View File
@@ -52,8 +52,7 @@ remove_services
remove_scripts
# Stage 2 does a git pull to fetch new things
sudo -u${USER} git -C ${HOME}/BirdNET-Pi checkout -f || exit 1
sudo -u${USER} git -C ${HOME}/BirdNET-Pi pull -f || exit 1
sudo -u${USER} git -C ${HOME}/BirdNET-Pi checkout -f
sudo -u${USER} git -C ${HOME}/BirdNET-Pi pull -f
# Trigger the new update_birdnet2.sh
sudo -u${USER} ${my_dir}/update_birdnet2.sh
+5 -18
View File
@@ -1,27 +1,14 @@
#!/usr/bin/env bash
# Second stage of update
birdnet_conf=/home/pi/BirdNET-Pi/birdnet.conf
# Stage 1 updates the birdnet.conf
sudo -upi sed -i 's/EXTRACTIONS_URL/BIRDNETPI_URL/g'
if ! grep EXTRACTIONLOG ${birdnet_conf} &> /dev/null;then
echo "EXTRACTIONLOG_URL=" >> ${birdnet_conf}
echo "BIRDNETLOG_URL=" >> ${birdnet_conf}
fi
sudo -upi sed -i 's/=http:\/\/birdnetpi.local/=/g' ${birdnet_conf}
# Stage 2 updates the services
my_dir=${HOME}/BirdNET-Pi/scripts
# Stage 1 updates the services
sudo ${my_dir}/update_services.sh
# Stage 2 restarts the services
newservices=$(awk '/service/ && /systemctl/ && !/php/ {print $3}' ${my_dir}/install_services.sh | sort)
restart_newservices() {
for i in ${newservices[@]};do
sudo systemctl restart ${i}
done
}
restart_newservices
for i in ${newservices[@]};do
sudo systemctl restart ${i}
done
sudo systemctl restart extraction.timer
+1 -1
View File
@@ -1,6 +1,6 @@
<?php
$timer=60;
header( "refresh:$timer;url=http://birdnetpi.local" );
header( "refresh:$timer;url=/viewdb.php" );
?>
<html lang="en">
<meta charset="UTF-8">
+27 -8
View File
@@ -16,6 +16,7 @@ set_hostname() {
echo "Setting hostname to 'birdnetpi'"
hostnamectl set-hostname birdnetpi
sed -i 's/raspberrypi/birdnetpi/g' /etc/hosts
sed -i 's/localhost$/localhost birdnetpi.local/g' /etc/hosts
fi
}
@@ -32,8 +33,7 @@ install_mariadb() {
apt -qqy install mariadb-server
echo "MariaDB Installed"
fi
sed -i "s/databasepassword/${DB_PWD}/g" /home/pi/BirdNET-Pi/analyze.py
sed -i "s/databasepassword/${DB_PWD}/g" /home/pi/BirdNET-Pi/scripts/viewdb.php
${my_dir}/update_db_pwd.sh
}
install_birdnet_analysis() {
@@ -110,20 +110,26 @@ create_necessary_dirs() {
[ -d ${PROCESSED} ] || sudo -u ${USER} mkdir -p ${PROCESSED}
sudo -u ${USER} ln -fs $(dirname ${my_dir})/homepage/* ${EXTRACTED}
set -x
if [ ! -z ${BIRDNETLOG_URL} ];then
BIRDNETLOG_URL="$(echo ${BIRDNETLOG_URL} | sed 's/\/\//\\\/\\\//g')"
#BIRDNETLOG_URL="$(echo ${BIRDNETLOG_URL} | sed 's/\/\//\\\/\\\//g')"
sudo -u${USER} sed -i "s/http:\/\/birdnetpi.local:8080/"${BIRDNETLOG_URL}"/g" $(dirname ${my_dir})/homepage/*.html
phpfiles="$(grep -l "birdnetpi.local:8080" ${my_dir}/*.php)"
for i in "${phpfiles[@]}";do
sudo -u${USER} sed -i "s/http:\/\/birdnetpi.local:8080/"${BIRDNETLOG_URL}"/g" ${i}
done
fi
set +x
if [ ! -z ${EXTRACTIONLOG_URL} ];then
EXTRACTIONLOG_URL="$(echo ${EXTRACTIONLOG_URL} | sed 's/\/\//\\\/\\\//g')"
#EXTRACTIONLOG_URL="$(echo ${EXTRACTIONLOG_URL} | sed 's/\/\//\\\/\\\//g')"
sudo -u${USER} sed -i "s/http:\/\/birdnetpi.local:8888/"${EXTRACTIONLOG_URL}"/g" $(dirname ${my_dir})/homepage/*.html
phpfiles="$(grep -l "birdnetpi.local:8888" ${my_dir}/*.php)"
for i in "${phpfiles[@]}";do
sudo -u${USER} sed -i "s/http:\/\/birdnetpi.local:8888/"${EXTRACTIONLOG_URL}"/g" ${i}
done
fi
sudo -u ${USER} ln -fs $(dirname ${my_dir})/scripts ${EXTRACTED}
if [ ! -z ${BIRDNETPI_URL} ];then
BIRDNETPI_URL="$(echo ${BIRDNETPI_URL} | sed 's/\/\//\\\/\\\//g')"
#BIRDNETPI_URL="$(echo ${BIRDNETPI_URL} | sed 's/\/\//\\\/\\\//g')"
sudo -u${USER} sed -i "s/http:\/\/birdnetpi.local/"${BIRDNETPI_URL}"/g" $(dirname ${my_dir})/homepage/*.html
phpfiles="$(grep -l birdnetpi.local ${my_dir}/*.php)"
for i in "${phpfiles[@]}";do
@@ -134,7 +140,10 @@ create_necessary_dirs() {
sudo -u ${USER} ln -fs $(dirname ${my_dir})/scripts/spectrogram.php ${EXTRACTED}
sudo -u ${USER} ln -fs $(dirname ${my_dir})/scripts/viewdb.php ${EXTRACTED}
sudo -u ${USER} ln -fs ${HOME}/phpsysinfo ${EXTRACTED}
[ -L ${EXTRACTED}/phpsysinfo/phpsysinfo.ini ] || sudo -u ${USER} cp ${HOME}/phpsysinfo/phpsysinfo.ini.new ${HOME}/phpsysinfo/phpsysinfo.ini
sudo -u ${USER} cp -f $(dirname ${my_dir})/templates/phpsysinfo.ini ${HOME}/phpsysinfo/
sudo -u ${USER} cp -f $(dirname ${my_dir})/templates/green_bootstrap.css ${HOME}/phpsysinfo/templates/
sudo -u ${USER} cp -f $(dirname ${my_dir})/templates/index_bootstrap.html ${HOME}/phpsysinfo/templates/html
}
install_alsa() {
@@ -238,6 +247,13 @@ EOF
systemctl reload caddy
}
update_etc_hosts() {
#BIRDNETPI_URL="$(echo ${BIRDNETPI_URL} | sed 's/\/\//\\\/\\\//g')"
#EXTRACTIONLOG_URL="$(echo ${EXTRACTIONLOG_URL} | sed 's/\/\//\\\/\\\//g')"
#BIRDNETLOG_URL="$(echo ${BIRDNETLOG_URL} | sed 's/\/\//\\\/\\\//g')"
sed -ie s/'birdnetpi.local'/"birdnetpi.local ${BIRDNETPI_URL//https:\/\/} ${EXTRACTIONLOG_URL//https:\/\/} ${BIRDNETLOG_URL//https:\/\/}"/g /etc/hosts
}
install_avahi_aliases() {
echo "Installing Avahi Services"
if ! which avahi-publish &> /dev/null; then
@@ -407,6 +423,8 @@ install_livestream_service() {
cat << EOF > /etc/systemd/system/livestream.service
[Unit]
Description=BirdNET-Pi Live Stream
After=network-online.target
Requires=network-online.target
[Service]
Environment=XDG_RUNTIME_DIR=/run/user/1000
@@ -458,6 +476,7 @@ install_selected_services() {
install_caddy
install_Caddyfile
update_etc_hosts
install_avahi_aliases
install_gotty_logs
install_sox
+1 -104
View File
@@ -62,110 +62,7 @@ $mysqli->close();
<!-- <meta name="viewport" content="width=device-width, initial-scale=1"> -->
<title>BirdNET-Pi DB</title>
<!-- CSS FOR STYLING THE PAGE -->
<style>
* {
box-sizing: border-box;
}
.row {
display: flex;
}
.column {
flex: 50%;
padding-right: 5px;
}
table {
margin: 0 auto;
font-size: large;
border-collapse: collapse;
border-spacing: 0;
width: 100%;
border: 1px solid black;
}
h1 {
text-align: center;
color: black;
font-size: xx-large;
font-family: 'Gill Sans', 'Gill Sans MT',
' Calibri', 'Trebuchet MS', 'sans-serif';
}
h2 {
text-align: center;
color: black;
font-size: large;
font-family: 'Gill Sans', 'Gill Sans MT',
' Calibri', 'Trebuchet MS', 'sans-serif';
}
td {
background-color: rgb(119, 196, 135);
border: 1px solid black;
}
th,
td {
font-weight: bold;
border: 1px solid black;
padding: 10px;
text-align: center;
background-color: rgb(219, 296, 235);
}
@media screen and (max-width: 800px) {
.column {
float: none;
width: 100%;
}
table {
margin: 0 auto;
font-size: medium;
border-collapse: collapse;
border-spacing: 1;
width: 100%;
border: 1px solid black;
}
h1 {
text-align: center;
color: black;
font-size: large;
font-family: 'Gill Sans', 'Gill Sans MT',
' Calibri', 'Trebuchet MS', 'sans-serif';
}
h2 {
text-align: center;
color: black;
font-size: large;
font-family: 'Gill Sans', 'Gill Sans MT',
' Calibri', 'Trebuchet MS', 'sans-serif';
}
td {
background-color: rgb(119, 196, 135);
border: 1px solid black;
}
th,
td {
font-weight: bold;
border: 1px solid black;
padding: 10px;
text-align: center;
}
}
td {
font-weight: lighter;
}
body::-webkit-scrollbar {
display:none
}
</style>
<link rel="stylesheet" href="style.css">
</head>
<body style="background-color: rgb(119, 196, 135);background-image: linear-gradient(to top, rgb(119, 196, 135),black;">
+13
View File
@@ -0,0 +1,13 @@
#!/usr/bin/bash
# Writes variables to config file
birdnetpi_dir=/home/pi/BirdNET-Pi
birders_conf=${birdnetpi_dir}/Birders_Guide_Installer_Configuration.txt
sed -i s/'^LATITUDE=$'/"LATITUDE=${new_lat}"/g ${birders_conf}
sed -i s/'^LONGITUDE=$'/"LONGITUDE=${new_lon}"/g ${birders_conf}
sed -i s/'^CADDY_PWD=$'/"CADDY_PWD=${caddy_pwd}"/g ${birders_conf}
sed -i s/'^ICE_PWD=$'/"ICE_PWD=${ice_pwd}"/g ${birders_conf}
sed -i s/'^DB_PWD=$'/"DB_PWD=${db_pwd}"/g ${birders_conf}
sed -i s/'^DB_ROOT_PWD=$'/"DB_ROOT_PWD=${db_root_pwd}"/g ${birders_conf}
sed -i s/'^BIRDNETPI_URL=$'/"BIRDNETPI_URL=${birdnetpi_url/\/\//\\\/\\\/}"/g ${birders_conf}
sed -i s/'^EXTRACTIONLOG_URL=$'/"EXTRACTIONLOG_URL=${extractionlog_url/\/\//\\\/\\\/}"/g ${birders_conf}
sed -i s/'^BIRDNETLOG_URL=$'/"BIRDNETLOG_URL=${birdnetlog_url/\/\//\\\/\\\/}"/g ${birders_conf}
+228
View File
@@ -0,0 +1,228 @@
body {
font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
font-size: 13px;
padding-top: 80px;
color: #333;
background-color: rgb(119, 196, 135);
}
body::-webkit-scrollbar {
display:none;
}
wbr {
display: inline-block;
}
.table td.rightCell, .table th.rightCell {
text-align: right;
}
.percent {
text-align: center;
}
.card {
border-color: #f2f2f2;
}
.navbar {
background-color: rgb(119, 196, 135);
border-color: #33b667;
}
.navbar-brand, .navbar-brand:hover {
color: #fff;
margin-right: 0;
}
.treegrid-span {
display: table-cell;
}
.treegrid-spanbold {
font-weight: bold;
display: table-cell;
}
.treegrid-indent {
width: 16px;
height: 16px;
display: table-cell;
}
.treegrid-expander {
width: 0px;
height: 16px;
display: table-cell;
cursor: pointer;
}
.normalicon {
width: 16px;
height: 16px;
position: relative;
top: 1px;
display: table-cell;
font-style: normal;
font-weight: normal;
line-height: 1;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.normalicon-right:before {
content: "\25ba";
}
.normalicon-down:before {
content: "\25bc";
}
table.sortable thead th {
cursor: pointer;
position: relative;
top: 0;
left: 0;
}
table.sortable thead th:hover {
background-color: #ececec;
}
.sorttable_nosort {
cursor: auto!important;
}
.table-hover > tbody > tr:hover {
color: #333;
background-color: #ececec;
}
.table-hover > tfoot > tr:hover {
background-color: #ececec;
}
table.borderless td, table.borderless th, table.noborderattop tr:first-child td, table.noborderattop tr:first-child th {
border: none!important;
}
.table {
color: #333;
background-color: #fff!important;
margin: 0;
border: 0;
}
.logo {
cursor: pointer;
width: 32px;
}
.select {
color: #333;
}
select {
background-color: #fefefe;
}
.template {
cursor: pointer;
color: #333;
}
.language {
cursor: pointer;
color: #333;
}
.card-header {
background-color: #33b770!important;
border-color: #33b770!important;
color: #fff!important;
}
.progress {
margin-bottom: 0;
background-color: #f5f5f5;
-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
}
.progress-bar-success {
background-color: #5bc0de;
}
.progress-bar-info {
background-color: #5cb85c;
}
.progress-bar-warning {
background-color: #f0ad4e;
}
.progress-bar-danger {
background-color: #d9534f;
}
.modal-content {
background-color: #fff;
}
.list-group {
display: block;
}
.list-group-item {
background-color: #fff;
}
.reload {
background-image: url("../gfx/reload.gif");
float: right;
cursor: pointer;
width: 16px;
height: 16px;
}
.container {
padding:0;
}
.table thead th {
border-top: none;
}
a, a:visited {
color: #000;
}
a:hover {
text-decoration: underline;
color: #000;
}
.psihref, .psihref:visited {
color: #fff;
}
.psihref:hover {
text-decoration: underline;
color: #fff;
}
.col-lg-6, .col-lg-12 {
padding-bottom: 20px;
}
.badge{
font-size: 12px;
border-radius: 10px;
padding: 3px 7px;
float: right;
}
.table-nopadding > tbody > tr > td,
.table-nopadding > tbody > tr > th {
padding: 0;
}
+493
View File
@@ -0,0 +1,493 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="mobile-web-app-capable" content="yes">
<meta name="description" content="phpSysInfo is a customizable PHP script that displays information about your system nicely">
<meta name="author" content="phpSysInfo organization at GitHub">
<title>phpSysInfo <?php echo PSI_VERSION_STRING ?></title>
<link href="gfx/favicon.ico" type="image/x-icon" rel="shortcut icon">
<noscript><meta http-equiv="refresh" content="2; URL=index.php?disp=static"/></noscript>
<link rel="stylesheet" type='text/css' href="templates/vendor/bootstrap.min.css">
<link rel="stylesheet" type='text/css' href="templates/vendor/bootstrap-webapp.css">
<!--[if IE 9]>
<link rel="stylesheet" type='text/css' href="templates/vendor/bootstrap-ie9.css">
<script type="text/JavaScript" src="./js.php?name=bootstrap-ie9"></script>
<![endif]-->
<!--[if IE 8]>
<link rel="stylesheet" type='text/css' href="templates/vendor/bootstrap-ie8.css">
<script type="text/JavaScript" src="./js.php?name=html5shiv-printshiv"></script>
<script type="text/JavaScript" src="./js.php?name=bootstrap-ie8"></script>
<![endif]-->
<!--[if lt IE 8]>
<script type="text/javascript">
alert('You are using an unsupported browser. Update Internet Explorer to at least version 8');
die();
</script>
<![endif]-->
<link rel="stylesheet" type='text/css' href="templates/misc/emptyfile.css" id="PSI_CSS_Fix">
<link rel="stylesheet" type='text/css' href="templates/misc/emptyfile.css" id="PSI_Template">
</head>
<body>
<input type="hidden" id="plugins" value="<?php $plugins = ''; foreach (CommonFunctions::getPlugins() as $plugin) : $plugins .= $plugin.','; endforeach; echo substr($plugins, 0, -1);?>"/>
<input type="hidden" id="showCPUListExpanded" value="<?php echo $showCPUListExpanded;?>"/>
<input type="hidden" id="showCPUInfoExpanded" value="<?php echo $showCPUInfoExpanded;?>"/>
<input type="hidden" id="showNetworkInfosExpanded" value="<?php echo $showNetworkInfosExpanded;?>"/>
<input type="hidden" id="showNetworkActiveSpeed" value="<?php echo $showNetworkActiveSpeed;?>"/>
<input type="hidden" id="showCPULoadCompact" value="<?php echo $showCPULoadCompact;?>"/>
<input type="hidden" id="hideBootstrapLoader" value="<?php echo $hideBootstrapLoader;?>"/>
<input type="hidden" id="hideTotals" value="<?php echo $hideTotals;?>"/>
<input type="hidden" id="blocks" value="<?php echo $blocks;?>"/>
<div class="navbar fixed-top">
<div class="container" style="display:block;">
<div style="display:table-cell">
<div class="navbar-brand">
<img class="logo" alt="" src="gfx/logo_32.gif" title="reload"/>&thinsp;phpSys<a title="phpSysInfo - <?php echo PSI_VERSION_STRING; ?>" class="psihref" href="http://phpsysinfo.sourceforge.net/" target="psihref">Info</a><div class="errorbutton" id="errorbutton" title="errors" data-target="#errors-dialog" style="display:inline-block;background:url('gfx/attention.gif') no-repeat center;width:49px;height:32px;visibility:hidden;">
<img id="loader" alt="" src="gfx/ajax-loader.gif" style="margin:0 3px 0 3px;visibility:hidden;"/>
</div>
</div>
</div>
<div id="select" class="select" style="display:none;width:100%;vertical-align:middle;text-align:right;">
<div id="tempblock" style="display:none;">
<span class="lang_044"></span>
<select class="template" id="template">
<option value="green" selected="selected">green</option>
</select>
</select>
</div>
<div id="langblock" style="display:none;">
<span class="lang_045">Language</span>
<select class="language" id="language">
<?php if ($picklanguage) {
foreach ($languages as $l) :
$selected = "";
if ($language === $l) {
$selected = " selected=\"selected\"";
}
echo " <option value=\"".$l."\"".$selected.">".$l."</option>\n";
endforeach;
} else {
echo " <option value=\"".$language."\" selected=\"selected\">".$language."</option>\n";
}?>
</select>
</div>
</div>
<noscript>
<p>Your navigator does not support JavaScript (or JavaScript is not activated).</p>
<p>In approximatively 2 seconds you will be redirected to the static version of phpSysInfo.</p>
<p>&nbsp;</p>
<p><a href="index.php?disp=static">Click here to switch to the static version</a></p>
</noscript>
</div>
</div>
<div class="container">
<div id="output" class="row" style="display:none;">
<div id="block_vitals" class="col-lg-6" style="display:none;">
<div class="card">
<div class="card-header"><span class="lang_002">System vitals</span></div>
<div class="card-body">
<div class="table-responsive">
<table id="vitals" class="table table-hover table-sm noborderattop">
<tbody>
<tr>
<th><span class="lang_003">Hostname</span></th>
<td><span data-bind="Hostname"></span></td>
</tr>
<tr>
<th><span class="lang_004">Listening IP</span></th>
<td><span data-bind="IPAddr"></span></td>
</tr>
<tr>
<th><span class="lang_005">Kernel Version</span></th>
<td><span data-bind="Kernel"></span></td>
</tr>
<tr>
<th><span class="lang_006">Distro Name</span></th>
<td><span data-bind="Distro"></span></td>
</tr>
<tr>
<th><span class="lang_127">OS Type</span></th>
<td><span data-bind="OS"></span></td>
</tr>
<tr>
<th><span class="lang_007">Uptime</span></th>
<td><span data-bind="Uptime"></span></td>
</tr>
<tr>
<th><span class="lang_095">Last boot</span></th>
<td><span data-bind="LastBoot"></span></td>
</tr>
<tr>
<th><span class="lang_008">Current Users</span></th>
<td><span data-bind="Users"></span></td>
</tr>
<tr>
<th><span class="lang_009">Load Averages</span></th>
<td><span data-bind="LoadAvg"></span></td>
</tr>
<tr id="tr_SysLang">
<th><span class="lang_097">System Language</span></th>
<td><span data-bind="SysLang"></span></td>
</tr>
<tr id="tr_CodePage">
<th><span class="lang_098">Code Page</span></th>
<td><span data-bind="CodePage"></span></td>
</tr>
<tr id="tr_Processes">
<th><span class="lang_110">Processes</span></th>
<td><span data-bind="Processes"></span></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div id="block_hardware" class="col-lg-6" style="display:none;">
<div class="card">
<div class="card-header"><span class="lang_010">Hardware Information</span></div>
<div class="card-body">
<div class="table-responsive">
<table id="hardware" class="table table-hover table-sm noborderattop">
<tbody id="hardware-data">
</tbody>
</table>
</div>
</div>
</div>
</div>
<div id="block_memory" class="col-lg-12" style="display:none;">
<div class="card">
<div class="card-header"><span class="lang_027">Memory Usage</span></div>
<div class="card-body">
<div class="table-responsive">
<table id="memory" class="table table-hover table-sm">
<thead>
<tr>
<th><span class="lang_034">Type</span></th>
<th><span class="lang_033">Usage</span></th>
<th class="rightCell"><span class="lang_125">Free</span></th>
<th class="rightCell"><span class="lang_036">Used</span></th>
<th class="rightCell"><span class="lang_037">Size</span></th>
</tr>
</thead>
<tbody id="memory-data">
<tr>
<th><span data-bind="Type"></span></th>
<td><span data-bind="Usage"></span></td>
<td class="rightCell"><span data-bind="Free"></span></td>
<td class="rightCell"><span data-bind="Used"></span></td>
<td class="rightCell"><span data-bind="Total"></span></td>
</tr>
</tbody>
<tfoot id="swap-data" style="display:none;">
<tr>
<th><span data-bind="Name"></span></th>
<td><span data-bind="Usage"></span></td>
<td class="rightCell"><span data-bind="Free"></span></td>
<td class="rightCell"><span data-bind="Used"></span></td>
<td class="rightCell"><span data-bind="Total"></span></td>
</tr>
</tfoot>
</table>
</div>
</div>
</div>
</div>
<div id="block_filesystem" class="col-lg-12" style="display:none;">
<div class="card">
<div class="card-header"><span class="lang_030">Mounted Filesystems</span></div>
<div class="card-body">
<div class="table-responsive">
<table id="filesystem" class="table table-hover table-sm sortable">
<thead>
<tr>
<th id="filesystem_MountPoint"><span class="lang_031">Mountpoint</span></th>
<th><span class="lang_034">Type</span></th>
<th><span class="lang_032">Partition</span></th>
<th><span class="lang_033">Usage</span></th>
<th class="rightCell sorttable_numeric"><span class="lang_035">Free</span></th>
<th class="rightCell sorttable_numeric"><span class="lang_036">Used</span></th>
<th class="rightCell sorttable_numeric"><span class="lang_037">Size</span></th>
</tr>
</thead>
<tbody id="filesystem-data">
<tr>
<th><span data-bind="MountPoint"></span></th>
<td><span data-bind="FSType"></span></td>
<td><span data-bind="Name"></span></td>
<td><span data-bind="Percent"></span></td>
<td class="rightCell"><span data-bind="Free"></span></td>
<td class="rightCell"><span data-bind="Used"></span></td>
<td class="rightCell"><span data-bind="Total"></span></td>
</tr>
</tbody>
<tfoot id="filesystem-foot" style="display:none;">
<tr>
<td></td>
<td></td>
<th><span class="lang_038">Totals</span></th>
<th><span data-bind="Percent"></span></th>
<th class="rightCell"><span data-bind="Free"></span></th>
<th class="rightCell"><span data-bind="Used"></span></th>
<th class="rightCell"><span data-bind="Total"></span></th>
</tr>
</tfoot>
</table>
</div>
</div>
</div>
</div>
<div id="block_network" class="col-lg-6" style="display:none;">
<div class="card">
<div class="card-header"><span class="lang_021">Network Interface</span></div>
<div class="card-body">
<div class="table-responsive">
<table id="network" class="table table-hover table-sm">
<thead>
<tr>
<th style="width:60%"><span class="lang_022">Device</span></th>
<th class="rightCell"><span class="lang_023">Receive</span></th>
<th class="rightCell"><span class="lang_024">Send</span></th>
<th class="rightCell"><span class="lang_025">Err/<wbr>Drop</span></th>
</tr>
</thead>
<tbody id="network-data"></tbody>
</table>
</div>
</div>
</div>
</div>
<div id="block_voltage" class="col-lg-6" style="display:none;">
<div class="card">
<div class="card-header"><span class="lang_052">Voltage</span></div>
<div class="card-body">
<div class="table-responsive">
<table id="voltage" class="table table-hover table-sm">
<thead>
<tr>
<th><span class="lang_059">Label</span></th>
<th class="rightCell"><span class="lang_054">Value</span></th>
<th class="rightCell"><span class="lang_055">Min</span></th>
<th class="rightCell"><span class="lang_056">Max</span></th>
</tr>
</thead>
<tbody id="voltage-data">
<tr>
<th><span data-bind="Label"></span></th>
<td class="rightCell"><span data-bind="Value"></span></td>
<td class="rightCell"><span data-bind="Min"></span></td>
<td class="rightCell"><span data-bind="Max"></span></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div id="block_current" class="col-lg-6" style="display:none;">
<div class="card">
<div class="card-header"><span class="lang_105">Current</span></div>
<div class="card-body">
<div class="table-responsive">
<table id="current" class="table table-hover table-sm">
<thead>
<tr>
<th><span class="lang_059">Label</span></th>
<th class="rightCell"><span class="lang_054">Value</span></th>
<th class="rightCell"><span class="lang_055">Min</span></th>
<th class="rightCell"><span class="lang_056">Max</span></th>
</tr>
</thead>
<tbody id="current-data">
<tr>
<th><span data-bind="Label"></span></th>
<td class="rightCell"><span data-bind="Value"></span></td>
<td class="rightCell"><span data-bind="Min"></span></td>
<td class="rightCell"><span data-bind="Max"></span></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div id="block_temperature" class="col-lg-6" style="display:none;">
<div class="card">
<div class="card-header"><span class="lang_051">Temperatures</span></div>
<div class="card-body">
<div class="table-responsive">
<table id="temperature" class="table table-hover table-sm">
<thead>
<tr>
<th><span class="lang_059">Label</span></th>
<th class="rightCell"><span class="lang_054">Value</span></th>
<th class="rightCell"><span class="lang_058">Limit</span></th>
</tr>
</thead>
<tbody id="temperature-data">
<tr>
<th><span data-bind="Label"></span></th>
<td class="rightCell"><span data-bind="Value"></span></td>
<td class="rightCell"><span data-bind="Max"></span></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div id="block_fans" class="col-lg-6" style="display:none;">
<div class="card">
<div class="card-header"><span class="lang_053">Fans</span></div>
<div class="card-body">
<div class="table-responsive">
<table id="fans" class="table table-hover table-sm">
<thead>
<tr>
<th><span class="lang_059">Label</span></th>
<th class="rightCell"><span class="lang_054">Value</span></th>
<th class="rightCell"><span class="lang_055">Min</span></th>
</tr>
</thead>
<tbody id="fans-data">
<tr>
<th><span data-bind="Label"></span></th>
<td class="rightCell"><span data-bind="Value"></span></td>
<td class="rightCell"><span data-bind="Min"></span></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div id="block_power" class="col-lg-6" style="display:none;">
<div class="card">
<div class="card-header"><span class="lang_102">Power</span></div>
<div class="card-body">
<div class="table-responsive">
<table id="power" class="table table-hover table-sm">
<thead>
<tr>
<th><span class="lang_059">Label</span></th>
<th class="rightCell"><span class="lang_054">Value</span></th>
<th class="rightCell"><span class="lang_058">Limit</span></th>
</tr>
</thead>
<tbody id="power-data">
<tr>
<th><span data-bind="Label"></span></th>
<td class="rightCell"><span data-bind="Value"></span></td>
<td class="rightCell"><span data-bind="Max"></span></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div id="block_other" class="col-lg-6" style="display:none;">
<div class="card">
<div class="card-header"><span class="lang_121">Other</span></div>
<div class="card-body">
<div class="table-responsive">
<table id="other" class="table table-hover table-sm">
<thead>
<tr>
<th><span class="lang_059">Label</span></th>
<th class="rightCell"><span class="lang_054">Value</span></th>
</tr>
</thead>
<tbody id="other-data">
<tr>
<th><span data-bind="Label"></span></th>
<td class="rightCell"><span data-bind="Value"></span></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div id="block_ups" class="col-lg-6" style="display:none;">
<div class="card">
<div class="card-header"><span class="lang_068">UPS Information</span></div>
<div class="card-body">
<div class="table-responsive">
<table id="ups" class="table table-hover table-sm noborderattop">
<tbody id="ups-data">
</tbody>
</table>
</div>
</div>
</div>
</div>
<?php foreach (CommonFunctions::getPlugins() as $plugin) :
if (file_exists(PSI_APP_ROOT . '/plugins/' . $plugin . '/' . $plugin . '_bootstrap.html')) : ?>
<?php include PSI_APP_ROOT. '/plugins/' . $plugin . '/' . $plugin . '_bootstrap.html'; ?>
<?php endif; endforeach; ?>
</div>
<!-- Errors details modal dialogs -->
<div class="modal fade" id="errors-dialog" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Errors</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<ul id="errors" class="list-group">
</ul>
</div>
</div>
<!-- /.modal-content -->
</div>
<!-- /.modal-dialog -->
</div>
<!-- /.modal -->
</div>
<script type="text/JavaScript" src="./js.php?name=jquery"></script>
<script type="text/JavaScript" src="./js.php?name=console-shim"></script>
<script type="text/JavaScript" src="./js.php?name=transparency"></script>
<script type="text/JavaScript" src="./js.php?name=sorttable"></script>
<script type="text/JavaScript" src="./js.php?name=jquery.treegrid"></script>
<script type="text/JavaScript" src="./js.php?name=bootstrap-util"></script>
<script type="text/JavaScript" src="./js.php?name=bootstrap-modal"></script>
<?php foreach (CommonFunctions::getPlugins() as $plugin) : ?>
<script type="text/JavaScript" src="./js.php?plugin=<?php echo $plugin ?>&amp;name=<?php echo $plugin ?>_bootstrap"></script>
<?php endforeach; ?>
<script type="text/JavaScript" src="./js.php?name=phpsysinfo_bootstrap"></script>
</body>
</html>
+987
View File
@@ -0,0 +1,987 @@
; PSI Config File
;
; @category PHP
; @package PSI
; @author Michael Cramer <BigMichi1@users.sourceforge.net>
; @copyright 2009 phpSysInfo
; @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License version 2, or (at your option) any later version
; @version SVN: $Id: phpsysinfo.ini.new 705 2012-11-11 00:33:29Z namiltd $
; @link http://phpsysinfo.sourceforge.net
[main]
; ********************************
; MAIN PARAMETERS
; ********************************
; Turn on debugging of some functions and include errors and warnings in xml and provide a popup for displaying errors
; - false : no debug information are stored in xml or displayed
; - true : debug information stored in xml and displayed *be careful if set this to true, may include sensitive information from your pc*
;
DEBUG=false
; Turn on logging/unlogging of functions executeProgram() and rfts()
; example : executeProgram () and rfts () record the results to the "/tmp/phpsysinfo.log" file
; LOG="/tmp/phpsysinfo.log"
; example : executeProgram () and rfts () read the results from the "/tmp/phpsysinfo.log" file
; LOG="-/tmp/phpsysinfo.log"
; example : executeProgram () and rfts () read the results from the "/tmp/phpsysinfo.log" file
; LOG="+/tmp/phpsysinfo.log", if lack in the log file it runs normally
;
LOG=false
; Turn on/off compression for JavaScript file
; - JS_COMPRESSION=false //no compression (recommended with slow processor)
; - JS_COMPRESSION="None" //code minimizing
; - JS_COMPRESSION="Normal" //code packing
;
JS_COMPRESSION="Normal"
; Additional paths where to look for installed programs
; Example : ADD_PATHS="/opt/bin,/opt/sbin"
;
ADD_PATHS=false
; List of IP addresses of clients authorized to run
; Example : ALLOWED="127.0.0.1,192.168.1.48" //allowed IP 127.0.0.1 and 192.168.1.48
; ALLOWED=false //no IP checking
;
ALLOWED=false
; List of sudo commands
; Example : SUDO_COMMANDS="iptables-save" //execute "sudo iptables-save" instead "iptables-save"
; SUDO_COMMANDS=false //no sudo commands
;
SUDO_COMMANDS=false
; Order of data blocks
; Example : BLOCKS="vitals,hardware,memory,filesystem,network,voltage,current,temperature,fans,power,other,ups" or BLOCKS=true //default order
; BLOCKS=false //hide all blocks
;
BLOCKS=true
; Maximum time in seconds a script is allowed to run before it is terminated by the parser
;
;MAX_TIMEOUT=30
; executeProgram() timeout value in seconds
;
;EXEC_TIMEOUT=30
; snmprealwalk() and executeProgram("snmpwalk") number of seconds until the first timeout
;
;SNMP_TIMEOUT=3
; snmprealwalk() and executeProgram("snmpwalk") number of times to retry if timeouts occur
;
;SNMP_RETRY=0
; External WinNT server connection parameters
; Possibility available for WinNT and partly for LINUX (if wmic tool from wmic-linux or openvas-smb package is installed)
; These settings can also be entered for a specific plug-in so that only it connects to an external server
; For safety reasons make sure that phpsysinfo.ini cannot be read by the network or other users!
;
;WMI_HOSTNAME="hostname"
;WMI_USER="username"
;WMI_PASSWORD="password"
; Plugins that should be included in xml and output
; List of plugins should look like "plugin,plugin,plugin". See /plugins directory
; - PLUGINS="Raid,PS" //list of plugins
; - PLUGINS=false //no plugins
; included plugins:
; - Raid - show the software, fake, zpool or megaraid RAID status
; - PS - show a process tree of all running processes
; - PSStatus - show a graphical representation if a process is running or not
; - Quotas - show a table with all quotas that are active and there current state
; - SMART - show S.M.A.R.T. information from drives that support it
; - BAT - show battery state on a laptop, tablet or phone
; - UpdateNotifier - show update notifications (only for Ubuntu server)
; - SNMPPInfo - show printers info via SNMP
; - Uprecords - show uprecords info
; - PingTest - show Ping Test info
; - StableBit - show StableBit Scanner info (WinNT)
; - HyperV - show Hyper-V info (WinNT)
; - Docker - show docker stats
; - Viewer - show output of any command or file viewer.tmp contents
;
PLUGINS=false
; ********************************
; DISPLAY PARAMETERS
; ********************************
; Define the default display mode
; auto: let user browser choose the mode
; dynamic: use javascript to refresh data
; static: static page (use metatag to reload page)
; bootstrap: use twitter bootstrap template
;
DEFAULT_DISPLAY_MODE="auto"
; Define the default language
;
DEFAULT_LANG="en"
; Define the default template
;
DEFAULT_TEMPLATE="phpsysinfo"
; Define the default template for frontend "bootstrap"
;
DEFAULT_BOOTSTRAP_TEMPLATE="phpsysinfo"
; Show or hide language picklist
;
SHOW_PICKLIST_LANG=true
; Show or hide template picklist
;
SHOW_PICKLIST_TEMPLATE=true
; Show CPU list expanded
;
SHOW_CPULIST_EXPANDED=true
; Show CPU info expanded
;
SHOW_CPUINFO_EXPANDED=false
; Show memory infos expanded
;
SHOW_MEMORY_INFOS_EXPANDED=false
; Show virtualizer info for Linux, Android and WinNT
;
SHOW_VIRTUALIZER_INFO=true
; Hide loader for frontend "bootstrap"
;
HIDE_BOOTSTRAP_LOADER=false
; Increase the body width for the "dynamic" frontend by pixels. The value should be even
; - 0 : disabled
; - 200 : wider by 200px
; Default is 0 pixels
;
INCREASE_WIDTH=0
; Define the interval for refreshing data in ms
; - 0 : disabled
; - 1000 : 1 second
; Default is 60 seconds
;
REFRESH=60000
; Show a graph for current cpuload
; - true : displayed, but it's a performance hit (because we have to wait to get a value, 1 second)
; - "compact" : displayed like above but in compact mode
; - false : will not be displayed (also in Load Averages field)
;
LOAD_BAR="compact"
; Display the virtual host name and address
; - Default is canonical host name and address
; - Use USE_VHOST=true to display virtual host name.
;
USE_VHOST=false
; Controls the units & format for network, memory and filesystem
; - 1 KiB = 2^10 bytes = 1,024 bytes
; - 1 KB = 10^3 bytes = 1,000 bytes
; - "B" everything is in Byte
; - "PiB" everything is in PeBiByte
; - "TiB" everything is in TeBiByte
; - "GiB" everything is in GiBiByte
; - "MiB" everything is in MeBiByte
; - "KiB" everything is in KiBiByte
; - "auto_binary" everything is automatic done if value is to big for, e.g MiB then it will be in GiB
; - "PB" everything is in PetaByte
; - "TB" everything is in TeraByte
; - "GB" everything is in GigaByte
; - "MB" everything is in MegaByte
; - "KB" everything is in KiloByte
; - "auto_decimal" everything is automatic done if value is to big for, e.g MB then it will be in GB
;
BYTE_FORMAT="auto_binary"
; Format in which temperature is displayed
; - "c" shown in celsius
; - "f" shown in fahrenheit
; - "c-f" both shown first celsius and fahrenheit in braces
; - "f-c" both shown first fahrenheit and celsius in braces
;
TEMP_FORMAT="c"
; Show devices infos
; Example : SHOW_DEVICES_INFOS=true
;
SHOW_DEVICES_INFOS=true
; Show devices serial number
; Example : SHOW_DEVICES_SERIAL=true
;
SHOW_DEVICES_SERIAL=false
; Format in which datetime is displayed
; - "UTC" shown as UTC string
; - "locale" shown as Locale string
;
DATETIME_FORMAT="UTC"
; ********************************
; SENSORS PARAMETERS
; ********************************
; Define the motherboard monitoring program
; We support the following programs so far
; - HDDtemp http://www.guzu.net/linux/hddtemp.php (Linux)
; - LMSensors http://www.lm-sensors.org/ (Linux)
; - Healthd http://healthd.thehousleys.net/ (FreeBSD)
; - HWSensors http://www.openbsd.org/ (OpenBSD)
; - MBMon http://www.nt.phys.kyushu-u.ac.jp/shimizu/download/download.html (FreeBSD/Linux/NetBSD/OpenBSD)
; - MBM5 http://mbm.livewiredev.com/ (data from file data/MBM5.csv - WinNT)
; - CpuMem No addon tool neded (FreeBSD/Linux/WinNT or others but with the dmidecode utility installed)
; - IPMItool http://ipmitool.sourceforge.net/ (Linux)
; - FreeIPMI http://www.gnu.org/software/freeipmi/ (FreeBSD/Linux/OpenBSD/SunOS)
; - IPMIutil http://ipmiutil.sourceforge.net/ (Darwin/FreeBSD/Linux/SunOS/WinNT)
; - IPMIcfg http://www.supermicro.com/en/solutions/management-software/ipmi-utilities (Linux/WinNT)
; - K8Temp http://hur.st/k8temp/ (DragonFly/FreeBSD/NetBSD/OpenBSD)
; - PiTemp No addon tool neded (Raspberry Pi and Banana Pi - Linux)
; - OHM http://openhardwaremonitor.org/ (WinNT)
; - ThermalZone No addon tool neded (WinNT/Linux/Android)
; - QTSsnmp SNMP service enabled and snmp-utils package installed: opkg install snmp-utils (QNAP - QTS Linux)
; - Hwmon No addon tool neded (Linux)
; - SpeedFan http://www.almico.com/speedfan.php (required tool packaged in: tools/speedfan/SpeedFanGet_bin.zip) (WinNT)
; - Thinkpad No addon tool neded (Lenovo Thinkpad - Linux)
; - NvidiaSMI Nvidia GPU drivers (FreeBSD/Linux/SunOS/WinNT)
;
; Example: If you want to use lmsensors : SENSOR_PROGRAM="LMSensors"
; If you want to use lmsensors and IPMItool: SENSOR_PROGRAM="LMSensors,IPMItool"
;
SENSOR_PROGRAM="PiTemp"
; Show events of sensors
; - true : show events
; - false : do not show events
;
SENSOR_EVENTS=true
; Sort sensors list
;
SORT_SENSORS_LIST=false
; Some sensors programs contain an additional configuration in the relevant sections [sensor_...]
; ********************************
; FILESYSTEM PARAMETERS
; ********************************
; Show mount point
; - true : show mount point
; - false : do not show mount point
;
SHOW_MOUNT_POINT=true
; Show mount option
; - true : show mount option
; - false : do not show mount option
;
SHOW_MOUNT_OPTION=true
; Show mount credentials
; - true : show mount credentials
; - false : do not show mount credentials
;
SHOW_MOUNT_CREDENTIALS=false
; Show inode usage
; - true : display used inodes in percent
; - false : hide them
;
SHOW_INODES=true
; Hide mounts
; Example : HIDE_MOUNTS="/home,/usr"
;
HIDE_MOUNTS=""
; Filesystem usage warning threshold in percent
; - 0 : disabled
; - 90 : 90%
; Default is 90%
;
FS_USAGE_THRESHOLD=90
; Ignore usage and usage threshold for filesystem types
; Example : IGNORE_THRESHOLD_FS_TYPES="packagefs, iso9660, squashfs, devfs, devtmpfs, tmpfs, lxfs, udf, UDF, CDFS"
;
IGNORE_THRESHOLD_FS_TYPES="packagefs, iso9660, squashfs, devfs, devtmpfs, tmpfs, lxfs, udf, UDF, CDFS"
; Ignore usage of mounts
; Example : IGNORE_USAGE="/root,/mnt/c"
;
IGNORE_USAGE=""
; Ignore total size of mounts
; Example : IGNORE_TOTAL="/System/Volumes/VM,/System/Volumes/Prebot"
;
IGNORE_TOTAL=""
; Ignore free space size of mounts
; Example : IGNORE_FREE="/zfs/space,/zfs/data"
;
IGNORE_FREE=""
; Hide filesystem types
; Example : HIDE_FS_TYPES="tmpfs,devtmpfs,usbfs,bstfolder"
;
HIDE_FS_TYPES=""
; Hide partitions
; Example : HIDE_DISKS="rootfs,/dev/sda1"
; HIDE_DISKS=true //hide all partitions
;
HIDE_DISKS=""
; Hide totals information
;
HIDE_TOTALS=false
; ********************************
; NETWORK PARAMETERS
; ********************************
; Hide network interfaces
; Example : HIDE_NETWORK_INTERFACE="eth0,sit0"
; HIDE_NETWORK_INTERFACE=true //hide all network interfaces
;
HIDE_NETWORK_INTERFACE=""
; Use a regular expression in the name of a hidden network interface (e.g. HIDE_NETWORK_INTERFACE="docker.*")
; - true : use a regular expression
; - false : do not use a regular expression
;
HIDE_NETWORK_INTERFACE_REGEX=false
; Show network interfaces infos for Linux, Android, FreeBSD, NetBSD, OpenBSD, Haiku, Darwin, SunOS, Minix, QNX and WinNT
; Example : SHOW_NETWORK_INFOS=true
;
SHOW_NETWORK_INFOS=true
; Hide MAC address in the infos
;
HIDE_NETWORK_MACADDR=false
; Sort network interfaces list
;
SORT_NETWORK_INTERFACES_LIST=false
; Show network infos expanded
;
SHOW_NETWORK_INFOS_EXPANDED=false
; Show network active speed
; - true : display network active speed
; - "bps" : display network active speed in bits per second (b/s, Kb/s, etc...)
; - false : hide them
;
SHOW_NETWORK_ACTIVE_SPEED=false
; ********************************
; UPS PARAMETERS
; ********************************
; Define the ups monitoring program
; We support the following programs so far
; - Apcupsd http://www.apcupsd.com/
; - Nut http://www.networkupstools.org/
; - SNMPups monitoring via Simple Network Management Protocol (SNMP)
; - PowerSoftPlus http://ever.eu/
; - pmset based on the result of the command "pmset -g batt" on Darwin system
;
; Example: If you want to use Apcupsd : UPS_PROGRAM="Apcupsd"
; If you want to use Apcupsd and Nut : UPS_PROGRAM="Apcupsd,Nut"
;
UPS_PROGRAM=false
; Apcupsd supports multiple UPSes
; You can specify comma delimited list in the form <hostname>:<port> or <ip>:<port>. The defaults are: "127.0.0.1:3551"
; See the following parameters in apcupsd.conf: NETSERVER, NISIP, NISPORT
; It uses the defaults if not specified.
;
UPS_APCUPSD_LIST=false
; define how to access the Apcupsd data
; - "command" execute apcaccess command
; - "data" for reading data from file data/upsapcupsd{ups_number}.tmp
; content is the output from "apcaccess status"
;
UPS_APCUPSD_ACCESS="command"
; Apcupsd has a CGI monitoring utility called apcupsd-cgi
; You can set the parameter below to true if you have it installed - this will add apcupsd-cgi links to the UPS tree
;
UPS_APCUPSD_CGI_ENABLE=false
; Nut supports multiple UPSes
; You can specify comma delimited list in the form <hostname>:<port> or <ip>:<port>. The defaults are: "127.0.0.1:3493"
; See the following parameters in upsd.conf: LISTEN
; It uses the defaults if not specified.
;
UPS_NUT_LIST=false
; define how to access the Nut data
; - "command" execute upsc command
; - "data" for reading data from file data/upsnut{ups_number}.tmp
; content is the output from "upsc {upsname}"
;
UPS_NUT_ACCESS="command"
; SNMPups supports multiple UPSes
; You can specify comma delimited list in the form <hostname>:<port> or <ip>:<port>. The default port is 161
; List must be specified.
;
UPS_SNMPUPS_LIST=false
; define how to access the SNMP data
; - "php-snmp" execute php snmprealwalk function (php-snmp module must be installed)
; - "command" execute snmpwalk command
; - "data" for reading data from file data/upssnmpups{ups_number}.tmp
; content is the output from:
; "snmpwalk -Ona -c public -v 1 -r 0 -t 3 {upsaddress} .1.3.6.1.4.1.318.1.1.1.1>upssnmpups{ups_number}.tmp
; snmpwalk -Ona -c public -v 1 -r 0 -t 3 {upsaddress} .1.3.6.1.4.1.318.1.1.1.2>>upssnmpups{ups_number}.tmp
; snmpwalk -Ona -c public -v 1 -r 0 -t 3 {upsaddress} .1.3.6.1.4.1.318.1.1.1.3>>upssnmpups{ups_number}.tmp
; snmpwalk -Ona -c public -v 1 -r 0 -t 3 {upsaddress} .1.3.6.1.4.1.318.1.1.1.4>>upssnmpups{ups_number}.tmp"
;
UPS_SNMPUPS_ACCESS="php-snmp"
; define how to access the PowerSoftPlus data
; - "command" execute powersoftplus command
; - "data" for reading data from file data/upspowersoftplus.tmp
; content is the output from "powersoftplus -p"
;
UPS_POWERSOFTPLUS_ACCESS="command"
; define how to access the pmset data
; - "command" execute pmset command
; - "data" for reading data from file data/upspmset.tmp
; content is the output from "pmset -g batt"
;
UPS_PMSET_ACCESS="command"
; ********************************
; MISC PARAMETERS
; ********************************
; define how to access the dmidecode data
; - "data" read data from file data/dmidecode.tmp; content is the output from "dmidecode -t 17")
; - "command" execute command: dmidecode -t 17
; If access error try execute first: chmod 4755 /usr/sbin/dmidecode
; This method is not recommended for safety reasons!
;
DMIDECODE_ACCESS="command"
; ********************************
; SENSORS PROGRAMS PARAMETERS
; ********************************
[sensor_hddtemp]
; Hddtemp motherboard monitoring program configuration
;
; If the hddtemp program is available we can read the temperature, if hdd is smart capable
; !!ATTENTION!! hddtemp might be a security issue
; - ACCESS="command" //read data from 'hddtemp' command (must be set suid)
; - ACCESS="tcp" //read data from hddtemp deamon (localhost:7634)
;
ACCESS="command"
[sensor_lmsensors]
; LMSensors motherboard monitoring program configuration
;
; - ACCESS="command" //read data from 'sensors' command
; - ACCESS="data" //read data from file data/lmsensors.tmp
;
ACCESS="command"
[sensor_healthd]
; Healthd motherboard monitoring program configuration
;
; - ACCESS="command" //read data from 'healthdc' command
; - ACCESS="data" //read data from file data/healthd.tmp
;
ACCESS="command"
[sensor_mbmon]
; MBMon motherboard monitoring program configuration
;
; - ACCESS="command" //read data from 'mbmon -c 1 -r' command
; - ACCESS="data" //read data from file data/mbmon.tmp
; - ACCESS="tcp" //read data from mbmon deamon (localhost:411)
;
ACCESS="command"
[sensor_ipmitool]
; IPMItool motherboard monitoring program configuration
;
; - ACCESS="command" //read data from 'ipmitool sensor -v' command
; //if access error execute first: chmod 666 /dev/ipmi0
; - ACCESS="data" //read data from file data/ipmitool.tmp
;
ACCESS="command"
[sensor_freeipmi]
; FreeIPMI motherboard monitoring program configuration
;
; - ACCESS="command" //read data from 'ipmi-sensors --output-sensor-thresholds' program
; - ACCESS="data" //read data from file data/freeipmi.tmp
;
ACCESS="command"
[sensor_ipmiutil]
; IPMIutil motherboard monitoring program configuration
;
; - ACCESS="command" //read data from 'ipmiutil sensor -stw' command
; //if access error execute first: chmod 666 /dev/ipmi0
; - ACCESS="data" //read data from file data/ipmiutil.tmp
;
ACCESS="command"
[sensor_ipmicfg]
; IPMIcfg motherboard monitoring program configuration
;
; - ACCESS="command" //read data from 'ipmicfg -sdr' and/or 'ipmicfg -psfruinfo' command
; - ACCESS="data" //read data from file data/ipmicfg.tmp (output from: "ipmicfg -sdr>ipmicfg.tmp; ipmicfg -psfruinfo>>ipmicfg.tmp")
;
ACCESS="command"
; Execute power supply FRU health info
; - true : execute 'ipmicfg --psfruinfo'
; - false : don't execute 'ipmicfg --psfruinfo'
; - "only" : execute 'ipmicfg --psfruinfo' and don't execute 'ipmicfg -sdr'
;
PSFRUINFO=true
[sensor_k8temp]
; K8Temp motherboard monitoring program configuration
;
; - ACCESS="command" //read data from 'k8temp' command
; - ACCESS="data" //read data from file data/k8temp.tmp
;
ACCESS="command"
[sensor_thermalzone]
; ThermalZone motherboard monitoring program configuration
;
; - ACCESS="command" //on Linux information is retrieved everytime through system files / on WinNT information is retrieved everytime through WMI
; - ACCESS="data" //read data from file data/thermalzone.tmp (output of WinNT command "wmic /namespace:\\root\wmi PATH MSAcpi_ThermalZoneTemperature get CriticalTripPoint,CurrentTemperature,InstanceName")
;
ACCESS="command"
[sensor_speedfan]
; SpeedFan motherboard monitoring program configuration
;
; - ACCESS="command" //read data from 'speedfanget' command
; - ACCESS="data" //read data from file data/speedfan.tmp
;
ACCESS="command"
[sensor_nvidiasmi]
; NvidiaSMI motherboard monitoring program configuration
;
; - ACCESS="command" //read data from 'nvidia-smi -q' command
; - ACCESS="data" //read data from file data/nvidiasmi.tmp
;
ACCESS="command"
;The path to nvidia-smi.exe for the WinNT system
;
EXE_PATH="c:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi.exe"
; ********************************
; PLUGINS PARAMETERS
; ********************************
[bat]
; BAT Plugin configuration
; define how to access the battery statistic data
; - "command" on Linux and Android read data from /proc/acpi/battery/BAT0/info and /proc/acpi/battery/BAT0/state
; or on newer kernel from /sys/class/power_supply/
; or from 'upower -d' command (if UPOWER is true)
; on Android read data from /sys/class/power_supply/
; on Darwin read data from 'ioreg -w0 -l -n AppleSmartBattery -r' command
; on FreeBSD read data from 'acpiconf -i batt' command
; on OpenBSD read data from 'sysctl hw.sensors.acpibat0' command
; - "data" (a file must be available in the data directory of the phpsysinfo installation
; with the filename "bat_info.tmp" and "bat_state.tmp"; content is the output
; from "cat /proc/acpi/battery/BAT0/info" and "cat /proc/acpi/battery/BAT0/state")
;
ACCESS="command"
; on Lunux try executing 'upower -d' command
;
UPOWER=false
; Show battery serial number
;
SHOW_SERIAL=false
[raid]
; Raid Plugin configuration
; define how to access the raid statistic data
; - "command" - mdstat: file "/proc/mdstat" is read (on Linux only)
; - dmraid: command "dmraid -s -vv 2>&1" is run (on Linux only)
; If access error try execute first: chmod 4755 /sbin/dmraid
; This method is not recommended for safety reasons!
; - megactl: command "megactl" (on Linux only)
; downloaded from http://sourceforge.net/projects/megactl/ or http://github.com/hmage/megactl
; If permission error try execute first: chmod 4755 /usr/sbin/megactl
; - megasasctl: command "megasasctl" (on Linux only)
; downloaded from http://sourceforge.net/projects/megactl/ or http://github.com/hmage/megactl
; If permission error try execute first: chmod 4755 /usr/sbin/megasasctl
; - megaclisas-status: command "megaclisas-status" (or "megaclisas-status.py" on WinNT)
; downloaded from http://hwraid.le-vert.net or https://github.com/eLvErDe/hwraid (Python 2) or https://github.com/ElCoyote27/hwraid (Python 3)
; - 3ware-status: command "3ware-status" (or 3ware-status.py" on WinNT)
; downloaded from http://hwraid.le-vert.net or https://github.com/eLvErDe/hwraid or https://github.com/ElCoyote27/hwraid
; - graid: command "graid list" is run (on FreeBSD only)
; - zpool: command "zpool status" is run
; - idrac: command "snmpwalk -Ona -c public -v 1 -r 0 -t 3 {device} .1.3.6.1.4.1.674.10892.5.5.1.20" is run
; - "php-snmp"- idrac: execute php snmprealwalk function (php-snmp module must be installed)
; - for others the option is inactive (uses "command" instead)
; - "data" (a file must be available in the data directory of the phpsysinfo installation
; with the filename "raidmdstat.tmp" or "raiddmraid.tmp" or "raidmegactl.tmp" or "raidmegasasctl.tmp"
; or "raidmegaclisas-status.tmp" or "raidgraid.tmp" or "raidzpool.tmp" or "raididrac{device_number}.tmp")
;
ACCESS="command"
; define possible programs
PROGRAM="mdstat,dmraid,megactl,megasasctl,megaclisas-status,3ware-status,graid,zpool,idrac"
; Hide RAID devices
; Example : HIDE_DEVICES="md127"
;
HIDE_DEVICES=""
;
; string contains a list of IDRAC devices that are checked
; Example : IDRAC_DEVICES="192.168.0.120"
;
IDRAC_DEVICES=""
[ps]
; PS Plugin configuration
; define how to access the ps statistic data
; - "command" ps command is run everytime the block gets refreshed or build / on WinNT
; information is retrieved everytime through WMI
; - "data" (a file must be available in the data directory of the phpsysinfo installation
; with the filename "ps.tmp"; content is the output from "ps -axo pid,ppid,pmem,pcpu,args")
;
ACCESS="command"
; Memory Usage info
;
MEMORY_USAGE=true
; CPU Usage info
;
CPU_USAGE=true
; Show kthreadd child list expanded
;
SHOW_KTHREADD_EXPANDED=false
; Show PID 1 child list expanded
;
SHOW_PID1CHILD_EXPANDED=false
[psstatus]
; PSStatus Plugin configuration
; define how to access the psstatus statistic data
; - "command" pidof command is run everytime the block gets refreshed or build
; / on WinNT information is retrieved everytime through WMI
; - "data" a file must be available in the data directory of the phpsysinfo installation
; with the filename "psstatus.tmp"; content is the output from
; <code>for ps in "apache2" "mysqld" "sshd"; do echo $ps "|" `pidof -s -x "$ps"`; done</code>
;
ACCESS="command"
; Regular expression search in the process name (e.g. "ddclient.*") for non-WinNT systems
; - true : Regular expression search (used pgrep command)
; - false : Normal search (used pidof command)
;
USE_REGEX=false
; controls which processes are checked if they are running
;
; string contains a list of process names that are checked, names are seperated by a comma (on WinNT names must end with '.exe')
;
PROCESSES="mysqld, sshd, explorer.exe"
[quotas]
; Quotas Plugin configuration
; define how to access the repquota statistic data
; - "command" repquota command is run everytime the block gets refreshed or build
; - "data" (a file must be available in the data directory of the phpsysinfo installation with the filename "quotas.tmp"; content is the output from "repquota -au")
;
ACCESS="command"
[smart]
; SMART Plugin configuration
; Smartctl program
; If the smartctl program is available we can read S.M.A.R.T informations
; - "command" smartctl command is run everytime the block gets refreshed or build
; if error: Smartctl open device: /dev/sda failed: Permission denied
; Not recommended method:
; execute: chmod 4755 /usr/sbin/smartctl
; Second method:
; try to set: SUDO_COMMANDS="smartctl" and add to file /etc/sudoers line: apache ALL = (ALL) NOPASSWD: /usr/sbin/smartctl
; - "data" (a file must be available in the data directory of the
; phpsysinfo installation with the filename "smart{disk_number}.tmp";
; content is the output from "smartctl --all device"
; or on WinNT only from "wmic /namespace:\\root\wmi path MSStorageDriver_ATAPISmartData get VendorSpecific | more +{disk_number}")
; - "wmi" information is retrieved everytime through WMI (WinNT only)
;
ACCESS="command"
; Smartctl devices to monitor
; If the smartctl support is enabled, those disks information will be displayed
; - DEVICES="/dev/hda,/dev/hdb" //Will display those two disks informations
; You also can specify --device option value for smartctl command surrounded by parentheses eg:
; - DEVICES="(marvell)/dev/sda"
; or
; - DEVICES="(megaraid.0)/dev/sda" //comma in --device option value is replaced by a dot
;
DEVICES="/dev/sda, /dev/sdb"
; Smartctl ID# and column name from "Vendor Specific SMART Attributes with Thresholds" table
; If the smartctl support is enabled, enter the ID#-COLUMN_NAME from "Vendor Specific SMART Attributes with Thresholds" table from smartctl output.
; or for no SCSI devices: ID#-COLUMN_NAME-REPLACEMENT_ID# where REPLACEMENT_ID# is an alternative ID number.
; COLUMN_NAME of this ID# will be displayed in the phpsysinfo S.M.A.R.T table. If you want RAW_VALUE to be displayed for the temperature (ID# 194) enter 194-RAW_VALUE
; - IDS="194-VALUE,4-VALUE,009-RAW_VALUE" //ID#-COLUMN_NAME, ID#-COLUMN_NAME, etc...
; The additional attributes:
; ATA Error Count is marked as 0-RAW_VALUE
; Non-medium Error Count is marked as 255-RAW_VALUE
;
IDS="005-RAW_VALUE,194-RAW_VALUE,009-RAW_VALUE,012-RAW_VALUE,193-RAW_VALUE-225,001-RAW_VALUE,007-RAW_VALUE,200-RAW_VALUE,197-RAW_VALUE,198-RAW_VALUE,0-RAW_VALUE"
[snmppinfo]
; SNMPPInfo Plugin configuration
; define how to access the SNMP Printer Info statistic data
; - "php-snmp" execute php snmprealwalk function (php-snmp module must be installed)
; - "command" execute snmpwalk command
; - "data" a file must be available in the data directory of the
; phpsysinfo installation with the filename "snmppinfo{printer_number}.tmp";
; content is the output from:
; LANG=C LC_ALL=C snmpwalk -On -c public -v 1 -r 0 -t 3 {printer_address} .1.3.6.1.2.1.1.5 > snmppinfo{printer_number}.tmp
; LANG=C LC_ALL=C snmpwalk -On -c public -v 1 -r 0 -t 3 {printer_address} .1.3.6.1.4.1.367.3.2.1.2.24.1.1 >> snmppinfo{printer_number}.tmp
; LANG=C LC_ALL=C snmpwalk -On -c public -v 1 -r 0 -t 3 {printer_address} .1.3.6.1.2.1.43.11.1.1 >> snmppinfo{printer_number}.tmp
; LANG=C LC_ALL=C snmpwalk -On -c public -v 1 -r 0 -t 3 {printer_address} .1.3.6.1.2.1.43.18.1.1 >> snmppinfo{printer_number}.tmp
;
ACCESS="php-snmp"
;define the Printer devices
;
; string contains a list of printer addresses that are checked
;
DEVICES="192.168.0.5, 192.168.0.9"
[updatenotifier]
; Update Notifier Plugin configuration
; define how to access the updatenotifier statistic data
; - "command" execute command /usr/lib/update-notifier/apt-check
; - "data" reads data from file defined in FILE parameter
;
ACCESS="data"
; define the update info file format
; - true: Ubuntu Landscape format (file: /var/lib/update-notifier/updates-available)
; - false: universal format (format: A;B)
; A: total packages to update
; B: security packages to update
;
UBUNTU_LANDSCAPE_FORMAT=true
; define the update info file. The default is: /var/lib/update-notifier/updates-available
;
FILE="/var/lib/update-notifier/updates-available"
[uprecords]
; Uprecords Plugin configuration
; define how to access the uprecords statistic data
; - "command" uprecords command is run everytime the block gets refreshed or build
; if access error try execute first: chmod 4755 /usr/bin/uprecords
; This method is not recommended for safety reasons!
; - "data" (a file must be available in the data directory of the phpsysinfo installation
; with the filename "uprecords.tmp"; content is the output from "TZ=GMT uprecords -a -w")
;
ACCESS="command"
; define the maximum number of entries to show (for command access)
; default is 10
;
MAX_ENTRIES = 10
; define the short mode (do not print extra statistics)
; default is false
;
SHORT_MODE = false
; denote current system session by asterisk (* at the end) instead by the arrow (-> at the beginning)
; default is false
;
DENOTE_BY_ASTERISK = false
[viewer]
; Viewer Plugin configuration
; define how to access the data
; - "command" COMMAND command is run everytime the block gets refreshed or build
; - "data" (a file must be available in the data directory of the phpsysinfo installation with the filename "viewer.tmp")
;
ACCESS="command"
; define COMMAND name (for command access)
; eg:
; - "iptables-save" iptables-save command is run everytime the block gets refreshed or build (Linux)
; if access error try to set: SUDO_COMMANDS="iptables-save" and add to file /etc/sudoers line: apache ALL = (ALL) NOPASSWD: /sbin/iptables-save
; - "systeminfo" systeminfo command is run everytime the block gets refreshed or build (WinNT)
;
COMMAND=""
; define COMMAND parameters (for command access)
;
PARAMS=""
[pingtest]
; PingTest Plugin configuration
; define how to access the psstatus statistic data
; - "command" ping command is run everytime the block gets refreshed or build
; - "data" (a file must be available in the data directory of the phpsysinfo installation
; with the filename "pingtest.tmp")
;
ACCESS="command"
;define the Addresses
;
; string contains a list of addresses that are checked
; Example : ADDRESSES="127.0.0.1,8.8.8.8"
;
ADDRESSES=""
; Define ping timeout in seconds
; - 0 : default ping command timeout
; - 3 : 3 seconds
; Default is 2 seconds
;
TIMEOUT=2
[stablebit]
; StableBit Plugin configuration
; Show or hide disks serial number
;
SHOW_SERIAL=false
[hyperv]
; HyperV Plugin configuration
; define how to access the ps statistic data
; - "command" information is retrieved through WMI
; - "data" (a file must be available in the data directory of the phpsysinfo installation
; with the filename "hyperv.tmp")
;
ACCESS="command"
[docker]
; Docker Plugin configuration
; define how to access the docker statistic data
; - "command" docker command is run everytime the block gets refreshed or build
; - "data" (a file must be available in the data directory of the phpsysinfo installation
; with the filename "docker.tmp"; content is the output from "docker stats --no-stream --format 'table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.MemPerc}}\t{{.NetIO}}\t{{.BlockIO}}\t{{.PIDs}}'")
;
ACCESS="command"
+8 -5
View File
@@ -1,5 +1,8 @@
# testing - 0.4
## What's new
- New desktop web interface
- Better support for public installations
- Needs better documentation to explain how to set it up
# newinstaller v0.7
- Systemd networkd supported
# newinstaller v0.5
- New `birdnet-pi-config` tool meant for:
- SSH-only installation
- Reconfiguring birdnet.conf
- Configuring system settings