@@ -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
|
||||
|
||||
+17
-126
@@ -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
|
||||
touch ${HOME}/stage_1_complete
|
||||
echo "Stage 1 complete"
|
||||
stage_2
|
||||
exit
|
||||
fi
|
||||
}
|
||||
|
||||
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=
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# BirdNET-Pi
|
||||

|
||||

|
||||
|
||||
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
|
||||
|
||||
+81
-96
@@ -1,13 +1,21 @@
|
||||
################################################################################
|
||||
# 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
|
||||
@@ -15,77 +23,53 @@ BIRDNET_USER=
|
||||
## still need to set this, as this will be where the remote directory gets
|
||||
## 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
|
||||
@@ -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=
|
||||
|
||||
@@ -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 |
@@ -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
|
||||
}
|
||||
@@ -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>
|
||||
|
||||
@@ -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
File diff suppressed because one or more lines are too long
+552
-398
File diff suppressed because it is too large
Load Diff
@@ -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
@@ -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
@@ -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
|
||||
|
||||
+73
-27
@@ -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;
|
||||
}
|
||||
|
||||
/* Create two unequal columns that floats next to each other */
|
||||
.column {
|
||||
float: left;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.first {
|
||||
width: calc(50% - 70px);
|
||||
}
|
||||
|
||||
.second {
|
||||
width: calc(50% - 30px);
|
||||
}
|
||||
|
||||
/* Clear floats after the columns */
|
||||
.row:after {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both;
|
||||
}
|
||||
body {
|
||||
background-color: rgb(119, 196, 135);
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.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/stop_core_services.php" onclick="return confirm('Stop core services?')">
|
||||
<input type="submit" value="Stop Core BirdNET-Pi 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?')">
|
||||
<input type="submit" value="Restart ALL BirdNET-Pi Services">
|
||||
<button type="submit" class="block">Restart ALL BirdNET-Pi Services</button>
|
||||
</form>
|
||||
|
||||
<form action="/scripts/restart_birdnet_analysis.php">
|
||||
<input type="submit" value="Restart BirdNET Analysis Service">
|
||||
<button type="submit" class="block">Restart BirdNET Analysis Service</button>
|
||||
</form>
|
||||
|
||||
<form action="/scripts/restart_birdnet_recording.php">
|
||||
<input type="submit" value="Restart Recording Service">
|
||||
<button type="submit" class="block">Restart Recording Service</button>
|
||||
</form>
|
||||
|
||||
<form action="/scripts/restart_extraction.php">
|
||||
<input type="submit" value="Restart Extraction Service">
|
||||
<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.')">
|
||||
<input type="submit" value="Restart Caddy">
|
||||
<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/backup_data.php" onclick="return confirm('Backup ALL Data? Warning: This could take a long time.')">
|
||||
<input type="submit" value="Backup ALL data">
|
||||
<button type="submit" class="block">Backup ALL data</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">
|
||||
<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?')">
|
||||
<input type="submit" value="Shutdown BirdNET-Pi">
|
||||
<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>
|
||||
|
||||
@@ -100,8 +100,6 @@ 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
|
||||
case $YN in
|
||||
[Yy] ) sudo systemctl start birdnet_analysis.service \
|
||||
&& journalctl -fu birdnet_analysis;;
|
||||
|
||||
@@ -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,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,4 +1,4 @@
|
||||
<?php
|
||||
shell_exec("/home/pi/BirdNET-Pi/scripts/restart_services.sh");
|
||||
header('Location: /viewdb.php');
|
||||
header('Location: http://birdnetpi.local:8080');
|
||||
?>
|
||||
|
||||
Executable
+44
@@ -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
|
||||
Executable
+5
@@ -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"
|
||||
@@ -2,6 +2,7 @@
|
||||
# Uninstall script to remove everything
|
||||
#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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
sudo systemctl restart extraction.timer
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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
@@ -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;">
|
||||
|
||||
|
||||
Executable
+13
@@ -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}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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"/> 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> </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">×</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 ?>&name=<?php echo $plugin ?>_bootstrap"></script>
|
||||
<?php endforeach; ?>
|
||||
|
||||
<script type="text/JavaScript" src="./js.php?name=phpsysinfo_bootstrap"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user