&1"); if(strlen($fetch) > 0) { $_SESSION['behind'] = trim(shell_exec("sudo -u".$user." git -C ".$home."/BirdNET-Pi status | sed -n '2 p' | cut -d ' ' -f 7")); } if(isset($_SESSION['behind'])&&intval($_SESSION['behind']) >= 99) {?>
";} if($_GET['view'] == "System Controls"){include('scripts/system_controls.php');} if($_GET['view'] == "Services"){include('scripts/service_controls.php');} if($_GET['view'] == "Spectrogram"){include('spectrogram.php');} if($_GET['view'] == "View Log"){echo "";} if($_GET['view'] == "Overview"){include('overview.php');} if($_GET['view'] == "Today's Detections"){include('todays_detections.php');} if($_GET['view'] == "Species Stats"){include('stats.php');} if($_GET['view'] == "Streamlit"){echo "";} if($_GET['view'] == "Daily Charts"){include('history.php');} if($_GET['view'] == "Tools"){ $caddypwd = $config['CADDY_PWD']; if (!isset($_SERVER['PHP_AUTH_USER'])) { header('WWW-Authenticate: Basic realm="My Realm"'); header('HTTP/1.0 401 Unauthorized'); echo '
You cannot edit the settings for this installation
'; exit; } else { $submittedpwd = $_SERVER['PHP_AUTH_PW']; $submitteduser = $_SERVER['PHP_AUTH_USER']; if($submittedpwd == $caddypwd && $submitteduser == 'birdnet'){ $url = $_SERVER['SERVER_NAME']."/scripts/adminer.php"; echo "
"; } else { header('WWW-Authenticate: Basic realm="My Realm"'); header('HTTP/1.0 401 Unauthorized'); echo '
You cannot edit the settings for this installation
'; exit; } } } if($_GET['view'] == "Recordings"){include('play.php');} if($_GET['view'] == "Settings"){include('scripts/config.php');} if($_GET['view'] == "Advanced"){include('scripts/advanced.php');} if($_GET['view'] == "Included"){ if(isset($_GET['species']) && isset($_GET['add'])){ $file = './scripts/include_species_list.txt'; $str = file_get_contents("$file"); $str = preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $str); file_put_contents("$file", "$str"); if(isset($_GET['species'])){ foreach ($_GET['species'] as $selectedOption) file_put_contents("./scripts/include_species_list.txt", $selectedOption."\n", FILE_APPEND); } } elseif(isset($_GET['species']) && isset($_GET['del'])){ $file = './scripts/include_species_list.txt'; $str = file_get_contents("$file"); $str = preg_replace('/^\h*\v+/m', '', $str); file_put_contents("$file", "$str"); foreach($_GET['species'] as $selectedOption) { $content = file_get_contents("../BirdNET-Pi/include_species_list.txt"); $newcontent = str_replace($selectedOption, "", "$content"); file_put_contents("./scripts/include_species_list.txt", "$newcontent"); } $file = './scripts/include_species_list.txt'; $str = file_get_contents("$file"); $str = preg_replace('/^\h*\v+/m', '', $str); file_put_contents("$file", "$str"); } include('./scripts/include_list.php'); } if($_GET['view'] == "Excluded"){ if(isset($_GET['species']) && isset($_GET['add'])){ $file = './scripts/exclude_species_list.txt'; $str = file_get_contents("$file"); $str = preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $str); file_put_contents("$file", "$str"); foreach ($_GET['species'] as $selectedOption) file_put_contents("./scripts/exclude_species_list.txt", $selectedOption."\n", FILE_APPEND); } elseif (isset($_GET['species']) && isset($_GET['del'])){ $file = './scripts/exclude_species_list.txt'; $str = file_get_contents("$file"); $str = preg_replace('/^\h*\v+/m', '', $str); file_put_contents("$file", "$str"); foreach($_GET['species'] as $selectedOption) { $content = file_get_contents("./scripts/exclude_species_list.txt"); $newcontent = str_replace($selectedOption, "", "$content"); file_put_contents("./scripts/exclude_species_list.txt", "$newcontent"); } $file = './scripts/exclude_species_list.txt'; $str = file_get_contents("$file"); $str = preg_replace('/^\h*\v+/m', '', $str); file_put_contents("$file", "$str"); } include('./scripts/exclude_list.php'); } if($_GET['view'] == "File"){ echo ""; } if($_GET['view'] == "Webterm"){ if (file_exists('./scripts/thisrun.txt')) { $config = parse_ini_file('./scripts/thisrun.txt'); } elseif (file_exists('./scripts/firstrun.ini')) { $config = parse_ini_file('./scripts/firstrun.ini'); } $caddypwd = $config['CADDY_PWD']; if (!isset($_SERVER['PHP_AUTH_USER'])) { header('WWW-Authenticate: Basic realm="My Realm"'); header('HTTP/1.0 401 Unauthorized'); echo '
You cannot access the web terminal
'; exit; } else { $submittedpwd = $_SERVER['PHP_AUTH_PW']; $submitteduser = $_SERVER['PHP_AUTH_USER']; if($submittedpwd == $caddypwd && $submitteduser == 'birdnet'){ #ACCESS THE WEB TERMINAL echo ""; } else { header('WWW-Authenticate: Basic realm="My Realm"'); header('HTTP/1.0 401 Unauthorized'); echo '
You cannot access the web terminal
'; exit; } } } } elseif(isset($_GET['submit'])) { if (file_exists('./scripts/thisrun.txt')) { $config = parse_ini_file('./scripts/thisrun.txt'); } elseif (file_exists('./scripts/firstrun.ini')) { $config = parse_ini_file('./scripts/firstrun.ini'); } $caddypwd = $config['CADDY_PWD']; if (!isset($_SERVER['PHP_AUTH_USER'])) { header('WWW-Authenticate: Basic realm="My Realm"'); header('HTTP/1.0 401 Unauthorized'); echo 'You cannot access the web terminal'; exit; } else { $submittedpwd = $_SERVER['PHP_AUTH_PW']; $submitteduser = $_SERVER['PHP_AUTH_USER']; $allowedCommands = array('sudo systemctl stop livestream.service && sudo /etc/init.d/icecast2 stop', 'sudo systemctl restart livestream.service && sudo /etc/init.d/icecast2 restart', 'sudo systemctl disable --now livestream.service && sudo systemctl disable icecast2 && sudo /etc/init.d/icecast2 stop', 'sudo systemctl enable icecast2 && sudo /etc/init.d/icecast2 start && sudo systemctl enable --now livestream.service', 'sudo systemctl stop web_terminal.service', 'sudo systemctl restart web_terminal.service', 'sudo systemctl disable --now web_terminal.service', 'sudo systemctl enable --now web_terminal.service', 'sudo systemctl stop birdnet_log.service', 'sudo systemctl restart birdnet_log.service', 'sudo systemctl disable --now birdnet_log.service', 'sudo systemctl enable --now birdnet_log.service', 'sudo systemctl stop extraction.service', 'sudo systemctl restart extraction.service', 'sudo systemctl disable --now extraction.service', 'sudo systemctl enable --now extraction.service', 'sudo systemctl stop birdnet_server.service', 'sudo systemctl restart birdnet_server.service', 'sudo systemctl disable --now birdnet_server.service', 'sudo systemctl enable --now birdnet_server.service', 'sudo systemctl stop birdnet_analysis.service', 'sudo systemctl restart birdnet_analysis.service', 'sudo systemctl disable --now birdnet_analysis.service', 'sudo systemctl enable --now birdnet_analysis.service', 'sudo systemctl stop birdnet_stats.service', 'sudo systemctl restart birdnet_stats.service', 'sudo systemctl disable --now birdnet_stats.service', 'sudo systemctl enable --now birdnet_stats.service', 'sudo systemctl stop birdnet_recording.service', 'sudo systemctl restart birdnet_recording.service', 'sudo systemctl disable --now birdnet_recording.service', 'sudo systemctl enable --now birdnet_recording.service', 'sudo systemctl stop chart_viewer.service', 'sudo systemctl restart chart_viewer.service', 'sudo systemctl disable --now chart_viewer.service', 'sudo systemctl enable --now chart_viewer.service', 'sudo systemctl stop spectrogram_viewer.service', 'sudo systemctl restart spectrogram_viewer.service', 'sudo systemctl disable --now spectrogram_viewer.service', 'sudo systemctl enable --now spectrogram_viewer.service', 'stop_core_services.sh', 'restart_services.sh', 'sudo reboot', 'update_birdnet.sh', 'sudo shutdown now', 'sudo clear_all_data.sh'); $command = $_GET['submit']; if($submittedpwd == $caddypwd && $submitteduser == 'birdnet' && in_array($command,$allowedCommands)){ if(isset($command)){ $initcommand = $command; if (strpos($command, "systemctl") !== false) { $tmp = explode(" ",trim($command)); $command .= "& sleep 3;sudo systemctl status ".end($tmp); } if($initcommand == "update_birdnet.sh") { unset($_SESSION['behind']); } $results = shell_exec("$command 2>&1"); $results = str_replace("FAILURE", "FAILURE", $results); $results = str_replace("failed", "failed",$results); $results = str_replace("active (running)", "active (running)",$results); $results = str_replace("Your branch is up to date", "Your branch is up to date",$results); if(strlen($results) == 0) { $results = "This command has no output."; } echo "
Output of command:`".$initcommand."`
$results
"; } else { header('WWW-Authenticate: Basic realm="My Realm"'); header('HTTP/1.0 401 Unauthorized'); echo 'You cannot access the web terminal'; exit; } } } ob_end_flush(); } else {include('overview.php');} ?>