71_YAMAHA_NP: More secure FM frequency input.

git-svn-id: https://svn.fhem.de/fhem/trunk@10227 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
ra666ack 2015-12-21 21:53:13 +00:00
parent 3186414bd3
commit f1fb1fb0f1
2 changed files with 55 additions and 41 deletions

View File

@ -703,45 +703,45 @@ sub YAMAHA_NP_Set
} }
elsif($what eq "tunerFMFrequency") elsif($what eq "tunerFMFrequency")
{ {
if(length($a[2]) <= 6 and length($a[2]) >= 5) # Check the string length (x)xx.xx if(length($a[2]) <= 6 and length($a[2]) >= 5) # Check the string length (x)xx.xx
{ {
if ( $a[2] =~ /^[0-9,.E]+$/ ) # Check if value is numeric if ( $a[2] =~ /^[0-9,.E]+$/ ) # Check if value is numeric
{ {
if( $a[2] >= 87.50 and $a[2] <= 108.00) # Check if within the value range if(substr($a[2], -3, 1) eq '.') # Check for decimal point
{ {
if(substr($a[2], -3, 1) eq '.') # Check for decimal point if( $a[2] >= 87.50 and $a[2] <= 108.00) # Check if within the value range
{ {
my $lastDigit = substr($a[2], -1, 1); my $lastDigit = substr($a[2], -1, 1);
if(($lastDigit eq "0") or ($lastDigit eq "5")) if(($lastDigit eq "0") or ($lastDigit eq "5"))
{ {
my $frequency = $a[2]; my $frequency = $a[2];
$frequency =~ s/\.//; # Remove decimal point $frequency =~ s/\.//; # Remove decimal point
YAMAHA_NP_SendCommand($hash, "<YAMAHA_AV cmd=\"PUT\"><Tuner><Play_Control><Tuning><FM><Freq>".$frequency."<\/Freq><\/FM><\/Tuning><\/Play_Control><\/Tuner></YAMAHA_AV>", "tunerFMFrequency", $a[2]); YAMAHA_NP_SendCommand($hash, "<YAMAHA_AV cmd=\"PUT\"><Tuner><Play_Control><Tuning><FM><Freq>".$frequency."<\/Freq><\/FM><\/Tuning><\/Play_Control><\/Tuner></YAMAHA_AV>", "tunerFMFrequency", $a[2]);
} }
else else
{ {
return "Last digit must be '0' or '5'"; return "Last digit must be '0' or '5'";
} }
} }
else else
{ {
return "Missing decimal point. Accepted format (x)xx.xx" return "Frequency value must be in the range 87.50 ... 108.00 of the format (x)xx.xx";
} }
} }
else else
{ {
return "Frequency value must be in the range 87.50 ... 108.00 of the format (x)xx.xx"; return "Missing decimal point. Accepted format (x)xx.xx";
} }
} }
else else
{ {
return "Frequency value must be numeric in the range 87.50 ... 108.00 of the format (x)xx.xx"; return "Frequency value must be numeric in the range 87.50 ... 108.00 of the format (x)xx.xx";
} }
} }
else else
{ {
return "Frequency length must be 5 or 6 characters e.g. 89.50 or 108.00"; return "Frequency length must be 5 or 6 characters e.g. 89.50 or 108.00";
} }
} }
else else
{ {

View File

@ -1,12 +1,23 @@
attr global userattr cmdIcon devStateIcon devStateStyle icon sortby webCmd widgetOverride
attr global autoload_undefined_devices 1
attr global logfile ./log/fhem-%Y-%m.log attr global logfile ./log/fhem-%Y-%m.log
attr global modpath . attr global modpath .
attr global motd SecurityCheck:\
\
WEB,WEBphone,WEBtablet has no basicAuth attribute.\
telnetPort has no password/globalpassword attribute.\
Running with root privileges.\
Restart FHEM for a new check if the problem is fixed,\
or set the global attribute motd to none to supress this message.\
attr global statefile ./log/fhem.save attr global statefile ./log/fhem.save
attr global updateInBackground 1
attr global verbose 3 attr global verbose 3
attr global updateInBackground
define telnetPort telnet 7072 global define telnetPort telnet 7072 global
define WEB FHEMWEB 8083 global define WEB FHEMWEB 8083 global
attr WEB editConfig 1
define WEBphone FHEMWEB 8084 global define WEBphone FHEMWEB 8084 global
attr WEBphone stylesheetPrefix smallscreen attr WEBphone stylesheetPrefix smallscreen
@ -17,6 +28,7 @@ attr WEBtablet stylesheetPrefix touchpad
# Fake FileLog entry, to access the fhem log from FHEMWEB # Fake FileLog entry, to access the fhem log from FHEMWEB
define Logfile FileLog ./log/fhem-%Y-%m.log fakelog define Logfile FileLog ./log/fhem-%Y-%m.log fakelog
define autocreate autocreate define autocreate autocreate
attr autocreate filelog ./log/%NAME-%Y.log attr autocreate filelog ./log/%NAME-%Y.log
@ -24,3 +36,5 @@ define eventTypes eventTypes ./log/eventTypes.txt
# Disable this to avoid looking for new USB devices on startup # Disable this to avoid looking for new USB devices on startup
define initialUsbCheck notify global:INITIALIZED usb create define initialUsbCheck notify global:INITIALIZED usb create
define NP_test YAMAHA_NP 192.168.1.15 30 10