Compare commits

...

3 Commits
v0.2 ... master

Author SHA1 Message Date
d322845589 Added check to see if cURL could fetch the XML-file
If cURL fails in retrieving the XML-file, then exit
with a UNKNOWN state.
2014-08-15 10:59:19 +02:00
fef495ff7b Fixed some spelling errors and tuned the regexes
Replaced a-zåäö with \p{L} and fixed spelling errors
and replaced $program with PROGRAM on line 122.
Also added \u modifer to more places for UTF-8, just
in case.
2014-08-09 23:04:50 +02:00
277bcc5fb4 Added /u modifer for UTF-8 2014-08-03 17:22:18 +02:00
2 changed files with 31 additions and 8 deletions

14
HISTORY
View File

@ -1,3 +1,17 @@
0.5 - 2014-08-15
Added a check to see if cURL was successful in
retrieving the XML-file. If it was not, then exit
with a UNKNOWN state and print the cURL error message.
0.4 - 2014-08-09
Added /u modifier to more preg_matches for UTF-8
Replaced a-zåäö with \p{L}
Fixed a couple of spelling errors and missing words
Replaced $program with PROGRAM on line 122
0.3 - 2014-08-03
Added /u modifier to the preg_match for UTF-8
0.2 - 2014-07-31 0.2 - 2014-07-31
Replaced 'shell_exec("curl -s URL")' with PHP cURL function Replaced 'shell_exec("curl -s URL")' with PHP cURL function
Replaced all state-variables with constants Replaced all state-variables with constants

View File

@ -26,7 +26,7 @@ define ("CRITICAL", 2);
define ("UNKNOWN", 3); define ("UNKNOWN", 3);
// Define version and program // Define version and program
define ("VERSION", 0.2); define ("VERSION", 0.5);
define ("PROGRAM", $argv[0]); define ("PROGRAM", $argv[0]);
// Function for printing usage // Function for printing usage
@ -116,10 +116,10 @@ if ($district == 'list')
} }
// Check if the district exists // Check if the district exists
if (!preg_grep("/^$district$/", $availDistricts)) if (!preg_grep("/^$district$/u", $availDistricts))
{ {
print "$district does not exists\n"; print "$district does not exists\n";
print "List all avaliable districts by \"$program 'list'\"\n"; print "List all avaliable districts by \"" . PROGRAM . " 'list'\"\n";
exit(UNKNOWN); exit(UNKNOWN);
} }
@ -129,19 +129,28 @@ if (!preg_grep("/^$district$/", $availDistricts))
$ch = curl_init("http://www.smhi.se/weatherSMHI2/varningar/smhi_alla_varningar.xml"); $ch = curl_init("http://www.smhi.se/weatherSMHI2/varningar/smhi_alla_varningar.xml");
curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch); curl_setopt($ch, CURLOPT_FAILONERROR, true);
// check if curl failed and bail out if it did
if (($data = curl_exec($ch)) === false)
{
print curl_error($ch);
curl_close($ch);
exit(UNKNOWN);
}
curl_close($ch); curl_close($ch);
//print "\n$data\n"; // for testing purposes (uncomment to view xml-file)
// Regex the area (1st paranthesis is area, 2nd is warning class, 3rd is warning msg) // Regex the area (1st paranthesis is area, 2nd is warning class, 3rd is warning msg)
preg_match("/($district)(?:: )(?:Varning klass )([1-3]+)(?:,\s)([-a-z0-9åäö.,&\s]*)/i", preg_match("/($district)(?:: )(?:Varning klass )([1-3]+)(?:,\s)([-0-9\p{L}.,&\s]*)/iu",
$data, $matches); $data, $matches);
// Count how many warnings are issued and issue a critical if more than one // Count how many warnings are issued and issue a critical if more than one
preg_match_all("/$district/", $data, $counts); preg_match_all("/$district/u", $data, $counts);
$numberMatches = (count($counts[0])); $numberMatches = (count($counts[0]));
if ($numberMatches > 1) if ($numberMatches > 1)
{ {
print "More than one warning are issued for $district, check smhi.se!"; print "More than one warning is issued for $district, check smhi.se!";
exit(CRITICAL); exit(CRITICAL);
} }
@ -160,7 +169,7 @@ else
switch ($warnLevel) switch ($warnLevel)
{ {
case 0: case 0:
print "No warnings issued $district"; print "No warnings issued for $district";
exit(OK); exit(OK);
case 1: case 1:
print "Class 1 warning issued for $district: $warnMsg"; print "Class 1 warning issued for $district: $warnMsg";