* Copyright (C) 2003-2004 Manuel Kasper * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ require_once("guiconfig.inc"); require_once("filter.inc"); /****f* legacy/is_schedule_inuse * NAME * checks to see if a schedule is currently in use by a rule * INPUTS * * RESULT * true or false * NOTES * ******/ function is_schedule_inuse($schedule) { global $config; if ($schedule == '') { return false; } /* loop through firewall rules looking for schedule in use */ if (isset($config['filter']['rule'])) { foreach ($config['filter']['rule'] as $rule) { if ($rule['sched'] == $schedule) { return true; } } } return false; } function schedule_sort() { global $config; if (!isset($config['schedules']['schedule'])) { return; } usort($config['schedules']['schedule'], function ($a, $b) { return strcmp($a['name'], $b['name']); }); } $dayArray = array (gettext('Mon'),gettext('Tues'),gettext('Wed'),gettext('Thur'),gettext('Fri'),gettext('Sat'),gettext('Sun')); $monthArray = array (gettext('January'),gettext('February'),gettext('March'),gettext('April'),gettext('May'),gettext('June'),gettext('July'),gettext('August'),gettext('September'),gettext('October'),gettext('November'),gettext('December')); $a_schedules = &config_read_array('schedules', 'schedule'); if ($_SERVER['REQUEST_METHOD'] === 'GET') { // input record id, if valid if (!empty($_GET['name'])) { foreach ($a_schedules as $i => $sched) { if ($sched['name'] == $_GET['name']) { $id = $i; $configId = $id; break; } } } elseif (isset($_GET['dup']) && isset($a_schedules[$_GET['dup']])) { $configId = $_GET['dup']; } elseif (isset($_GET['id']) && isset($a_schedules[$_GET['id']])) { $id = $_GET['id']; $configId = $id; } $pconfig['name'] = $a_schedules[$configId]['name']; $pconfig['descr'] = $a_schedules[$configId]['descr']; $pconfig['timerange'] = isset($a_schedules[$configId]['timerange']) ? $a_schedules[$configId]['timerange'] : array(); } elseif ($_SERVER['REQUEST_METHOD'] === 'POST') { if (isset($_POST['id']) && isset($a_schedules[$_POST['id']])) { $id = $_POST['id']; } $pconfig = $_POST; // validate if (strtolower($pconfig['name']) == 'lan') { $input_errors[] = gettext('Schedule may not be named LAN.'); } if (strtolower($pconfig['name']) == 'wan') { $input_errors[] = gettext('Schedule may not be named WAN.'); } if (empty($pconfig['name'])) { $input_errors[] = gettext('Schedule may not use a blank name.'); } $valid = is_validaliasname($pconfig['name']); if ($valid === false) { $input_errors[] = sprintf(gettext('The schedule name must be less than 32 characters long and may only consist of the following characters: %s'), 'a-z, A-Z, 0-9, _'); } elseif ($valid === null) { $input_errors[] = sprintf(gettext('The schedule name cannot be the internally reserved keyword "%s".'), $pconfig['name']); } /* check for name conflicts */ foreach ($a_schedules as $schedId => $schedule) { if ((!isset($id) || $schedId != $id) && $schedule['name'] == $pconfig['name']) { $input_errors[] = gettext("A Schedule with this name already exists."); break; } } // parse time ranges $pconfig['timerange'] = array(); $timerangeFound = false; for ($x=0; $x<99; $x++){ if($pconfig['schedule' . $x]) { if (!preg_match('/^[0-9]+:[0-9]+$/', $pconfig['starttime' . $x])) { $input_errors[] = sprintf(gettext("Invalid start time - '%s'"), $pconfig['starttime' . $x]); continue; } if (!preg_match('/^[0-9]+:[0-9]+$/', $pconfig['stoptime' . $x])) { $input_errors[] = sprintf(gettext("Invalid stop time - '%s'"), $pconfig['stoptime' . $x]); continue; } $timerangeFound = true; $timeparts = array(); $firstprint = false; $timestr = $pconfig['schedule' . $x]; $timehourstr = $pconfig['starttime' . $x]; $timehourstr .= "-"; $timehourstr .= $pconfig['stoptime' . $x]; $timedescrstr = $pconfig['timedescr' . $x]; $dashpos = strpos($timestr, '-'); if ($dashpos === false) { $timeparts['position'] = $timestr; } else { $tempindarray = array(); $monthstr = ""; $daystr = ""; $tempindarray = explode(",", $timestr); foreach ($tempindarray as $currentselection) { if ($currentselection){ if ($firstprint) { $monthstr .= ","; $daystr .= ","; } $tempstr = ""; $monthpos = strpos($currentselection, "m"); $daypos = strpos($currentselection, "d"); $monthstr .= substr($currentselection, $monthpos+1, $daypos-$monthpos-1); $daystr .= substr($currentselection, $daypos+1); $firstprint = true; } } $timeparts['month'] = $monthstr; $timeparts['day'] = $daystr; } $timeparts['hour'] = $timehourstr; $timeparts['rangedescr'] = $timedescrstr; $pconfig['timerange'][$x] = $timeparts; } } if (count($pconfig['timerange']) == 0) { $input_errors[] = gettext("The schedule must have at least one time range configured."); } if (count($input_errors) == 0) { $schedule = array(); $schedule['name'] = $pconfig['name']; $schedule['descr'] = $pconfig['descr']; $schedule['timerange'] = $pconfig['timerange']; if (isset($id)) { $a_schedules[$id] = $schedule; } else { $a_schedules[] = $schedule; } schedule_sort(); write_config(); filter_configure(); header(url_safe('Location: /firewall_schedule.php')); exit; } } legacy_html_escape_form_data($pconfig); include("head.inc"); ?>
0) print_input_errors($input_errors); ?>




" style=" position:relative; display:"> "; } if ($firstdayofmonth == $positioncounter){?> "; } if ($positioncounter == 7 || $daycounter > $numberofdays) { $positioncounter = 1; echo ""; } else { $positioncounter++; } }//end while loop?>
"; } elseif ($firstdayprinted == TRUE && $daycounter <= $numberofdays){?> "; } else { echo "