diff options
author | Scott Dale <sdale@pfsense.org> | 2007-03-23 11:08:36 +0000 |
---|---|---|
committer | Scott Dale <sdale@pfsense.org> | 2007-03-23 11:08:36 +0000 |
commit | 615b27bc267a98e72053e05e5de6897e68d7e641 (patch) | |
tree | db968119c40763510f33e0d57514a7443a41f0be /usr/local/www/firewall_schedule.php | |
parent | ba393f6c458c7e2c0df72cff043270031420b316 (diff) | |
download | pfsense-615b27bc267a98e72053e05e5de6897e68d7e641.zip pfsense-615b27bc267a98e72053e05e5de6897e68d7e641.tar.gz |
Firewall Schedule GUI! ... and there was much rejoicing.
Diffstat (limited to 'usr/local/www/firewall_schedule.php')
-rw-r--r-- | usr/local/www/firewall_schedule.php | 218 |
1 files changed, 218 insertions, 0 deletions
diff --git a/usr/local/www/firewall_schedule.php b/usr/local/www/firewall_schedule.php new file mode 100644 index 0000000..7be2967 --- /dev/null +++ b/usr/local/www/firewall_schedule.php @@ -0,0 +1,218 @@ +<?php +/* + firewall_aliases.php + Copyright (C) 2004 Scott Ullrich + All rights reserved. + + originially part of m0n0wall (http://m0n0.ch/wall) + Copyright (C) 2003-2004 Manuel Kasper <mk@neon1.net>. + 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. +*/ + + +$pgtitle = "Firewall: Schedules"; + +$dayArray = array ('Sun','Mon','Tues','Wed','Thur','Fri','Sat'); +$monthArray = array ('January','February','March','April','May','June','July','August','September','October','November','December'); + +require("guiconfig.inc"); + +if (!is_array($config['schedules']['schedule'])) + $config['schedules']['schedule'] = array(); + +schedule_sort(); +$a_schedules = &$config['schedules']['schedule']; + + +if ($_GET['act'] == "del") { + if ($a_schedules[$_GET['id']]) { + /* make sure rule is not being referenced by any nat or filter rules */ + $is_schedule_referenced = false; + $referenced_by = false; + $schedule_name = $a_schedules[$_GET['id']]['name']; + + if(is_array($config['filter']['rule'])) { + foreach($config['filter']['rule'] as $rule) { + //check for this later once this is established + if ($rule['sched'] = $schedule_name){ + $referenced_by = $rule['descr']; + $is_schedule_referenced = true; + } + } + } + + if($is_schedule_referenced == true) { + $savemsg = "Cannot delete Schedule. Currently in use by {$referenced_by}"; + } else { + unset($a_schedules[$_GET['id']]); + write_config(); + header("Location: firewall_schedule.php"); + exit; + } + } +} + +include("head.inc"); +?> + +<body link="#0000CC" vlink="#0000CC" alink="#0000CC"> +<?php include("fbegin.inc"); ?> +<p class="pgtitle"><?=$pgtitle?></p> +<?php if ($savemsg) print_info_box($savemsg); ?> +<form action="firewall_schedule.php" method="post"> + <table class="sortable" width="98%" border="0" cellpadding="0" cellspacing="0"> + <tr> + <td width="25%" class="listhdrr">Name</td> + <td width="35%" class="listhdrr">Time Range(s)</td> + <td width="35%" class="listhdr">Description</td> + <td width="5%" class="list sort_ignore"></td> + </tr> + <?php $i = 0; foreach ($a_schedules as $schedule): ?> + <tr> + <td class="listlr" ondblclick="document.location='firewall_schedule_edit.php?id=<?=$i;?>';"> + <?=htmlspecialchars($schedule['name']);?> + </td> + <td class="listlr" ondblclick="document.location='firewall_schedule_edit.php?id=<?=$i;?>';"> + <?php + $timerangearray = explode("||", $schedule['timerange']); + foreach($timerangearray as $timerange) { + $dayFriendly = ""; + $firstday = true; + if ($timerange){ + $daytimeseparator = strrpos($timerange, ","); + $tempID = substr($timerange, 0, $daytimeseparator+1); + $temptimerange = substr($timerange, $daytimeseparator+1); + $temptimeseparator = strrpos($temptimerange, "-"); + $tempDayFriendly = ""; + $starttime = substr ($temptimerange, 0, $temptimeseparator); + $stoptime = substr ($temptimerange, $temptimeseparator+1); + + $tempdayRange = explode(",", $tempID); + foreach ($tempdayRange as $day) + { + if ($day != "") + { + $monthpos = strpos($day, "m"); + if (!$monthpos) + { + if ($firstday){ + $tempDayFriendly .= $day; + $firstday = false; + } + else + $tempDayFriendly .= "," . $day; + } + else + { + $daypos = strpos($day, "d"); + $month = substr($day, $monthpos+1, $daypos-$monthpos-1); + $day = substr($day, $daypos+1); + $month = $monthArray[$month-1]; + $dayFriendly .= $month . " " . $day . ", "; + + } + } + } + + $foundEnd = false; + $firstDayFound = false; + $firstprint = false; + $tempFriendlyDayArray = explode(",", $tempDayFriendly); + + $currentDay = ""; + $firstDay = ""; + $nextDay = ""; + $counter = 0; + foreach ($tempFriendlyDayArray as $day){ + if ($day != ""){ + if (!$firstDayFound) + { + $firstDay = $tempFriendlyDayArray[$counter]; + $firstDayFound = true; + } + $currentDay =$tempFriendlyDayArray[$counter]; + //get next day + $nextDay = $tempFriendlyDayArray[$counter+1]; + $currentDay++; + if ($currentDay != $nextDay){ + if ($firstprint) + $dayFriendly .= ", "; + $currentDay--; + if ($currentDay != $firstDay) + $dayFriendly .= $dayArray[$firstDay] . " - " . $dayArray[$currentDay]; + else + $dayFriendly .= $dayArray[$firstDay]; + $firstDayFound = false; + $firstprint = true; + } + $counter++; + } + } + + $dayFriendly .= ": " . $starttime . "-" . $stoptime; + echo $dayFriendly; + echo "<br/>"; + } + }?> + </td> + <td class="listbg" ondblclick="document.location='firewall_schedule_edit.php?id=<?=$i;?>';"> + <font color="#FFFFFF"> + <?=htmlspecialchars($schedule['descr']);?> + </td> + <td valign="middle" nowrap class="list"> + <table border="0" cellspacing="0" cellpadding="1"> + <tr> + <td valign="middle"><a href="firewall_schedule_edit.php?id=<?=$i;?>"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_e.gif" width="17" height="17" border="0" title="edit alias"></a></td> + <td><a href="firewall_schedule.php?act=del&id=<?=$i;?>" onclick="return confirm('Do you really want to delete this schedule?')"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" border="0" title="delete alias"></a></td> + </tr> + </table> + </td> +</tr> +<?php $i++; endforeach; ?> +<tr> + <td class="list" colspan="3"></td> + <td class="list"> + <table border="0" cellspacing="0" cellpadding="1"> + <tr> + <td valign="middle"> + <a href="firewall_schedule_edit.php"> + <img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0" title="<?=gettext("add a new schedule");?>" alt="" /> + </a> + </td> + </tr> + </table> + </td> + </tr> + <tr> + <td class="tabcont" colspan="3"> + <p><span class="vexpl"><span class="red"><strong>Note:<br></strong></span>Schedules act as placeholders for time ranges to be used in Firewall Rules.</span></p> + </td> + </tr> + </table> + +</form> + +<?php include("fend.inc"); ?> +</body> +</html> |