$c = new CronRule(); $ok = $c->set_Rule($job['minute'] . ' ' . $job['hour'] . ' ' . $job['day'] . ' ' . $job['month'] . ' ' . $job['dow']); if (!$ok) { gs_log(GS_LOG_WARNING, "Phone {$mac}: Job " . $job['id'] . " has a bad cron rule (" . $c->errMsg . "). Deleting ..."); $db->execute('DELETE FROM `prov_jobs` WHERE `id`=' . (int) $job['id'] . ' AND `running`=0'); unset($c); continue; } if (!$c->validate_time()) { gs_log(GS_LOG_DEBUG, "Phone {$mac}: Job " . $job['id'] . ": Rule does not match"); unset($c); continue; } unset($c); gs_log(GS_LOG_DEBUG, "Phone {$mac}: Job " . $job['id'] . ": Rule match"); $fw_new_vers = _grandstream_normalize_version($job['data']); if (subStr($fw_new_vers, 0, 2) == '00') { gs_log(GS_LOG_NOTICE, "Phone {$mac}: Bad new fw version {$fw_new_vers}"); $db->execute('DELETE FROM `prov_jobs` WHERE `id`=' . (int) $job['id'] . ' AND `running`=0'); continue; } $firmware_path = '/opt/gemeinschaft/htdocs/prov/grandstream/fw/' . $fw_new_vers; if (!file_exists($firmware_path) || !is_readable($firmware_path)) { gs_log(GS_LOG_NOTICE, "Phone {$mac}: " . $firmware_path . " not exits or not readable"); $db->execute('DELETE FROM `prov_jobs` WHERE `id`=' . (int) $job['id'] . ' AND `running`=0'); continue; } if ($fw_new_vers == $fw_vers_nrml) { gs_log(GS_LOG_NOTICE, "Phone {$mac}: FW {$fw_vers_nrml} == {$fw_new_vers}"); $db->execute('DELETE FROM `prov_jobs` WHERE `id`=' . (int) $job['id'] . ' AND `running`=0'); continue;
function _grandstream_fwcmp($fwvers1, $fwvers2) { //$fwvers1 = _grandstream_normalize_version( $fwvers1 ); # we trust it has been normalized! $fwvers2 = _grandstream_normalize_version($fwvers2); return strCmp($fwvers1, $fwvers2); }