diff --git a/README.md b/README.md index 7dc332d..db5988d 100644 --- a/README.md +++ b/README.md @@ -523,6 +523,14 @@ WEB_SERVER_ENABLED="true" Enables the local webserver, for configuration, car control, or to retreive an image snapshot via a web browser. Available at : `http:///` Thank you @virmaior! +``` +WEB_SERVER_OPTIONS="cam config car jpeg"` +``` +This adds access controls limiting which parts of the web server are exposed. + * cam = cam.cgi + * config = config.cgi + * car = car.sh + * jpeg = jpeg.cgi --- ### SYSLOG: diff --git a/SD_ROOT/wz_mini/www/cam.js b/SD_ROOT/wz_mini/www/cam.js index 43f9f61..62acd71 100644 --- a/SD_ROOT/wz_mini/www/cam.js +++ b/SD_ROOT/wz_mini/www/cam.js @@ -1,6 +1,4 @@ -var feed_interval_frequency = 1000; - // https://stackoverflow.com/questions/14636536/how-to-check-if-a-variable-is-an-integer-in-javascript#14794066 function isInt(value) { return !isNaN(value) && @@ -16,16 +14,8 @@ function enable_submit() } -window.onload = function() +window.addEventListener("load",function() { - var feed = document.getElementById("current_feed"); - function update_image() - { - feed.src = feed.src.split("&")[0] + "&load=" + new Date().getTime(); - } - feed_interval = setInterval(update_image, feed_interval_frequency); - - var sels = document.querySelectorAll('.ii_select').forEach(function(item){ var row = item.getAttribute("row"); item.addEventListener('change',function(e){ @@ -56,4 +46,4 @@ window.onload = function() Array.from(values).forEach(function(item){ item.disabled = false; }); } }); -} +}); diff --git a/SD_ROOT/wz_mini/www/cgi-bin/cam.cgi b/SD_ROOT/wz_mini/www/cgi-bin/cam.cgi index eaddf7d..cb722a2 100644 --- a/SD_ROOT/wz_mini/www/cgi-bin/cam.cgi +++ b/SD_ROOT/wz_mini/www/cgi-bin/cam.cgi @@ -1,6 +1,7 @@ #!/opt/wz_mini/bin/bash # This serves a rudimentary webpage based on wz_mini.conf . /opt/wz_mini/www/cgi-bin/shared.cgi +test_area_access cam title="$camver on $camfirmware running wz_mini $hackver as $HOSTNAME" updated=false @@ -156,12 +157,14 @@ echo -ne "$title" handle_css config.css echo '' +echo '' echo -ne "" echo -ne '' echo -ne "

$title

"; +echo -ne "
cam.cgi only lists values in your current configuration file. To add other values, edit manually!
" if [ "$updated" = true ]; then @@ -176,6 +179,7 @@ if [ $base_cam_config != $cam_config ]; then echo '
Revert to this version
' fi + echo -ne '
' diff --git a/SD_ROOT/wz_mini/www/cgi-bin/car.sh b/SD_ROOT/wz_mini/www/cgi-bin/car.sh index 6b51a83..523d6b2 100644 --- a/SD_ROOT/wz_mini/www/cgi-bin/car.sh +++ b/SD_ROOT/wz_mini/www/cgi-bin/car.sh @@ -2,6 +2,10 @@ set -x +. /opt/wz_mini/www/cgi-bin/shared.cgi +test_area_access car + + echo "HTTP/1.1 200" echo -e "Content-type: text/html\n\n" echo "" diff --git a/SD_ROOT/wz_mini/www/cgi-bin/config.cgi b/SD_ROOT/wz_mini/www/cgi-bin/config.cgi index edb97ba..0a47c61 100644 --- a/SD_ROOT/wz_mini/www/cgi-bin/config.cgi +++ b/SD_ROOT/wz_mini/www/cgi-bin/config.cgi @@ -2,12 +2,14 @@ # This serves a rudimentary webpage based on wz_mini.conf . /opt/wz_mini/www/cgi-bin/shared.cgi +test_area_access config title="$camver on $camfirmware running wz_mini $hackver as $HOSTNAME" updated=false + echo "HTTP/1.1 200" echo -e "Content-type: text/html\n\n" echo "" @@ -172,6 +174,8 @@ echo -ne "$title" handle_css config.css echo '' +echo '' + echo -ne "" diff --git a/SD_ROOT/wz_mini/www/cgi-bin/config.css b/SD_ROOT/wz_mini/www/cgi-bin/config.css index 4ca938c..62fd231 100644 --- a/SD_ROOT/wz_mini/www/cgi-bin/config.css +++ b/SD_ROOT/wz_mini/www/cgi-bin/config.css @@ -1,5 +1,5 @@ BODY { - --feed_ratio: 2.5; + --feed_ratio: 1; --display_bar_height: 20px; --border-color: #ccc; padding-bottom: var(--display_bar_height); @@ -7,10 +7,9 @@ BODY { H1 { background-color:blue; color:white; - height:calc(108px * (var(--feed_ratio) - 1)); + height:calc(108px * (var(--feed_ratio))); margin-top:0; padding:5px; - margin-bottom:108px; width:calc(100% - (192px * var(--feed_ratio))); } @@ -56,7 +55,7 @@ H1 { } .feed { - position:absolute; + position:fixed; top:10px; right:0px; width:calc(192px * var(--feed_ratio)); @@ -167,10 +166,17 @@ H1 { border-radius:5px; padding:2px; padding-right:2px !important; - width:40px; + width:125px; margin-right:15px; } .github_link A { color:white; font-size:12px; } + +.full_JPEG { + max-height:100%; + max-width:100%; + height:auto; + width:auto; +} diff --git a/SD_ROOT/wz_mini/www/cgi-bin/diagnostics.cgi b/SD_ROOT/wz_mini/www/cgi-bin/diagnostics.cgi index 3bfbfbe..baf5471 100644 --- a/SD_ROOT/wz_mini/www/cgi-bin/diagnostics.cgi +++ b/SD_ROOT/wz_mini/www/cgi-bin/diagnostics.cgi @@ -64,6 +64,9 @@ echo "Firmware Version: $camfirmware
" if [ "$camfirmware" = "4.36.10.2163" ]; then echo "
this version is broken. Please downgrade to a working version
" fi +if [ "$camfirmware" = "4.61.0.3"]; then + echo "
wz_mini_hacks does not support the official RTSP firmware.
" +fi echo "
"
diff --git a/SD_ROOT/wz_mini/www/cgi-bin/jpeg.cgi b/SD_ROOT/wz_mini/www/cgi-bin/jpeg.cgi
index 97246fc..5be04e3 100644
--- a/SD_ROOT/wz_mini/www/cgi-bin/jpeg.cgi
+++ b/SD_ROOT/wz_mini/www/cgi-bin/jpeg.cgi
@@ -1,5 +1,6 @@
 #!/bin/sh
-
+. /opt/wz_mini/www/cgi-bin/shared.cgi
+test_area_access jpeg
 
 #test for jpeg
 if [[ $REQUEST_METHOD = 'GET' ]]; then
diff --git a/SD_ROOT/wz_mini/www/cgi-bin/shared.cgi b/SD_ROOT/wz_mini/www/cgi-bin/shared.cgi
index 0d6e21d..c3381aa 100644
--- a/SD_ROOT/wz_mini/www/cgi-bin/shared.cgi
+++ b/SD_ROOT/wz_mini/www/cgi-bin/shared.cgi
@@ -1,5 +1,7 @@
 #!/bin/sh
 # This provides shared values for webpages
+
+
 base_dir=/opt/wz_mini/
 base_hack_ini=/opt/wz_mini/wz_mini.conf
 hack_ini=$base_hack_ini
@@ -37,11 +39,11 @@ echo -ne '';
 function version_info
 {          
  echo "
" + echo ''; echo "
$camver
" echo "
$camfirmware
" echo "
$hackver
" echo "
$HOSTNAME
" - echo ''; echo "
" } @@ -111,3 +113,41 @@ urldecode(){ echo -e "$b" } + +stringContain() { [ -z "${2##*$1*}" ] && [ -z "$1" -o -n "$2" ]; } + + +test_area_access() +{ +echo "search: $1" +values=$(cat "$base_hack_ini" | grep "WEB_SERVER_OPTIONS" | cut -f2 -d= ) + + +if [ -z "$values" ] +then + values="cam config car jpeg" +fi + + +if [[ "$values" =~ "$1" ]] +then + : +else + + echo "HTTP/1.1 200" + echo -e "Content-type: text/html\n\n" + echo "" + echo "Access Denied" + handle_css config.css + echo "" + echo "

access denied to $1

" + echo "
access allowed for : $values
" + echo "you need to enable access using wz_mini.conf WEB_SERVER_OPTIONS " + version_info display_BAR + echo "" + exit +fi + + +} + diff --git a/SD_ROOT/wz_mini/www/config.js b/SD_ROOT/wz_mini/www/config.js index 2f7e4b6..b257aa0 100644 --- a/SD_ROOT/wz_mini/www/config.js +++ b/SD_ROOT/wz_mini/www/config.js @@ -1,5 +1,4 @@ -var feed_interval_frequency = 1000; var mac_re = /^[0-9a-f]{1,2}([\.:-])(?:[0-9a-f]{1,2}\1){4}[0-9a-f]{1,2}$/mi; // https://stackoverflow.com/questions/14636536/how-to-check-if-a-variable-is-an-integer-in-javascript#14794066 @@ -63,15 +62,8 @@ function enable_submit() } -window.onload = function() +window.addEventListener("load", function() { - var feed = document.getElementById("current_feed"); - function update_image() - { - feed.src = feed.src.split("&")[0] + "&load=" + new Date().getTime(); - } - feed_interval = setInterval(update_image, feed_interval_frequency); - compose_rtsp_block('RTSP_HI_RES'); compose_rtsp_block('RTSP_LOW_RES'); @@ -103,4 +95,4 @@ window.onload = function() } ); -} +}); diff --git a/SD_ROOT/wz_mini/www/feed.js b/SD_ROOT/wz_mini/www/feed.js new file mode 100644 index 0000000..b853b56 --- /dev/null +++ b/SD_ROOT/wz_mini/www/feed.js @@ -0,0 +1,20 @@ + +var feed_interval_frequency = 1000; + +window.addEventListener("load",function() +{ + var feed = document.getElementById("current_feed"); + function update_image() + { + feed.src = feed.src.split("&")[0] + "&load=" + new Date().getTime(); + } + feed_interval = setInterval(update_image, feed_interval_frequency); + + feed.addEventListener('click', + function(e){ + e.preventDefault(); + e.target.classList.toggle("full_JPEG"); + }); + +} +); diff --git a/SD_ROOT/wz_mini/www/multicam.html b/SD_ROOT/wz_mini/www/multicam.html index 20f90af..a600d41 100644 --- a/SD_ROOT/wz_mini/www/multicam.html +++ b/SD_ROOT/wz_mini/www/multicam.html @@ -1,10 +1,11 @@ -Multicam +Multi-Cam @@ -148,9 +333,14 @@ window.onload = function()
- - - + + +
0
+
+
Auto
+
Manual: + +