diff options
Diffstat (limited to 'usr/local')
59 files changed, 4438 insertions, 4427 deletions
diff --git a/usr/local/sbin/ovpn-linkdown b/usr/local/sbin/ovpn-linkdown index e3c7400..112317f 100755 --- a/usr/local/sbin/ovpn-linkdown +++ b/usr/local/sbin/ovpn-linkdown @@ -4,4 +4,4 @@ /bin/rm -f /var/etc/nameserver_$1 /bin/rm -f /tmp/$1_router /bin/rm -f /tmp/$1up -/usr/bin/touch /tmp/filter_dirty +/usr/local/sbin/pfSctl -c 'filter reload' diff --git a/usr/local/sbin/ovpn-linkup b/usr/local/sbin/ovpn-linkup index 2ade032..354623e 100755 --- a/usr/local/sbin/ovpn-linkup +++ b/usr/local/sbin/ovpn-linkup @@ -3,9 +3,9 @@ # write nameservers to file needs dns fidnings?! # let the configuration system know that the ip has changed. -#/bin/echo $1 > /tmp/rc.newwanip +#/usr/local/sbin/pfSctl -c "'interface reload $interface'" /bin/echo $4 > /tmp/$1_router /usr/bin/touch /tmp/$1up # reload filter -/usr/bin/touch /tmp/filter_dirty +/usr/local/sbin/pfSctl -c 'filter reload' exit 0 diff --git a/usr/local/sbin/ppp-linkdown b/usr/local/sbin/ppp-linkdown index 06e24fa..59b2ce0 100755 --- a/usr/local/sbin/ppp-linkdown +++ b/usr/local/sbin/ppp-linkdown @@ -10,4 +10,4 @@ fi # Do not remove gateway used during filter reload. # /bin/rm -f /tmp/$1_router /bin/rm -f /tmp/$1up -/usr/bin/touch /tmp/resolv_conf_generate +/usr/local/sbin/pfSctl -c 'service reload dns' diff --git a/usr/local/sbin/ppp-linkup b/usr/local/sbin/ppp-linkup index f15f082..67b0832 100755 --- a/usr/local/sbin/ppp-linkup +++ b/usr/local/sbin/ppp-linkup @@ -1,24 +1,20 @@ #!/bin/sh -# unset CGI environment variables so as not to confuse PHP -unset CONTENT_TYPE GATEWAY_INTERFACE REMOTE_USER REMOTE_ADDR AUTH_TYPE -unset HTTP_USER_AGENT CONTENT_LENGTH SCRIPT_FILENAME HTTP_HOST -unset SERVER_SOFTWARE HTTP_REFERER SERVER_PROTOCOL REQUEST_METHOD -unset SERVER_PORT SCRIPT_NAME SERVER_NAME - # write nameservers to file if [ $6 = "dns1" ]; then echo $7 > /var/etc/nameserver_$1 + /sbin/route delete $7 /sbin/route add $7 $4 fi if [ $8 = "dns2" ]; then echo $9 >> /var/etc/nameserver_$1 + /sbin/route delete $9 /sbin/route add $9 $4 fi # let the configuration system know that the ip has changed. -/bin/echo $1 > /tmp/rc.newwanip +/usr/local/sbin/pfSctl -c "'interface reload $1'" /bin/echo $4 > /tmp/$1_router /usr/bin/touch /tmp/$1up exit 0 diff --git a/usr/local/www/diag_backup.php b/usr/local/www/diag_backup.php index 85d4050..ad96ed3 100755 --- a/usr/local/www/diag_backup.php +++ b/usr/local/www/diag_backup.php @@ -80,7 +80,7 @@ function add_base_packages_menu_items() { } } if($modified_config) { - write_confg(gettext("Restored base_package menus after configuration restore.")); + write_config(gettext("Restored base_package menus after configuration restore.")); $config = parse_config(true); } } diff --git a/usr/local/www/diag_showbogons.php b/usr/local/www/diag_showbogons.php deleted file mode 100644 index 94b3946..0000000 --- a/usr/local/www/diag_showbogons.php +++ /dev/null @@ -1,110 +0,0 @@ -<?php -/* $Id$ */ -/* - diag_showbogons.php - Copyright (C) 2009 Scott Ullrich - 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. -*/ - -/* - pfSense_BUILDER_BINARIES: /bin/ps /usr/bin/grep - pfSense_MODULE: filter -*/ - -##|+PRIV -##|*IDENT=page-diag-showbogons -##|*NAME=Diagnostics: System Activity -##|*DESCR=Allows access to the 'Diagnostics: Show Bogons' page -##|*MATCH=diag_showbogons.php -##|-PRIV - -require("guiconfig.inc"); - -if($_POST['Download']) { - mwexec_bg("/etc/rc.update_bogons.sh now"); - $maxtimetowait = 0; - $loading = true; - while($loading == true) { - $isrunning = `/bin/ps awwwux | /usr/bin/grep -v grep | /usr/bin/grep bogons`; - if($isrunning == "") - $loading = false; - $maxtimetowait++; - if($maxtimetowait > 89) - $loading = false; - sleep(1); - } - if($maxtimetowait < 90) - $savemsg = gettext("The bogons database has been updated."); -} - -$bogons = file_get_contents(trim("/etc/bogons")); -$pgtitle = array(gettext("Diagnostics"),gettext("Show Bogons")); - -include("head.inc"); -?> -<body link="#000000" vlink="#000000" alink="#000000"> - -<?php - -include("fbegin.inc"); - -?> -<body link="#0000CC" vlink="#0000CC" alink="#0000CC"> -<style type="text/css"> -pre { font-size: 1.15em; } -</style> -<?php if ($input_errors) print_input_errors($input_errors); ?> -<?php if ($savemsg) print_info_box($savemsg); ?> -<form method="post" action="diag_showbogons.php"> -<table width="100%" border="0" cellpadding="0" cellspacing="0"> - <tr> - <td> - <table id="backuptable" class="tabcont" align="left" width="100%" border="0" cellpadding="6" cellspacing="0"> - <tr> - <td> - <table> - <tr> - <td> - <font size="+1"> - <b><?=gettext("Currently loaded bogons table:");?></b><p/> - <pre> -<?php echo $bogons; ?> - </pre> - </font> - </td> - </tr> - </table> - </td> - </tr> - </table> - </div> - </td> - </tr> -</table> -<p/> -<input type="submit" name="Download" value="<?=gettext("Download");?>"><?=gettext("latest bogon data.");?> -</form> -<?php include("fend.inc"); ?> -</body> -</html> diff --git a/usr/local/www/diag_tables.php b/usr/local/www/diag_tables.php index 9551e51..eba3d5f 100644 --- a/usr/local/www/diag_tables.php +++ b/usr/local/www/diag_tables.php @@ -69,6 +69,23 @@ if($_REQUEST['deleteall']) { } } +if(($tablename == "bogons") && ($_POST['Download'])) { + mwexec_bg("/etc/rc.update_bogons.sh now"); + $maxtimetowait = 0; + $loading = true; + while($loading == true) { + $isrunning = `/bin/ps awwwux | /usr/bin/grep -v grep | /usr/bin/grep bogons`; + if($isrunning == "") + $loading = false; + $maxtimetowait++; + if($maxtimetowait > 89) + $loading = false; + sleep(1); + } + if($maxtimetowait < 90) + $savemsg = gettext("The bogons database has been updated."); +} + exec("/sbin/pfctl -t $tablename -T show", $entries); exec("/sbin/pfctl -sT", $tables); @@ -77,6 +94,7 @@ include("fbegin.inc"); ?> +<?php if ($savemsg) print_info_box($savemsg); ?> <form method='post'> <script src="/javascript/scriptaculous/prototype.js" type="text/javascript"></script> @@ -118,8 +136,10 @@ include("fbegin.inc"); <?php echo $entry; ?> </td> <td> + <?php if ($tablename != "bogons") { ?> <a onClick='del_entry("<?=$entry?>");'> <img img src="/themes/<?=$g['theme'];?>/images/icons/icon_x.gif"> + <?php } ?> </a> </td> </tr> @@ -133,8 +153,10 @@ include("fbegin.inc"); <?php if($count > 0) - echo "<p/>" . gettext("Delete") . " <a href='diag_tables.php?deleteall=true&type={$tablename}'>" . gettext("all") . "</a> " . gettext("entries in this table."); - + if($tablename == "bogons") + echo "<input name='Download' type='submit' class='formbtn' value='" . gettext("Download") . "'> " . gettext(" the latest bogon data."); + else + echo "<p/>" . gettext("Delete") . " <a href='diag_tables.php?deleteall=true&type={$tablename}'>" . gettext("all") . "</a> " . gettext("entries in this table."); ?> <?php include("fend.inc"); ?> diff --git a/usr/local/www/edit.php b/usr/local/www/edit.php index 6b71ad2..9236c3f 100644 --- a/usr/local/www/edit.php +++ b/usr/local/www/edit.php @@ -1,5 +1,4 @@ <?php -/* $Id$ */ /* edit.php Copyright (C) 2004, 2005 Scott Ullrich @@ -56,7 +55,7 @@ if($_REQUEST['action']) { echo "|" . gettext("No file name specified") . ".|"; } else { conf_mount_rw(); - $_REQUEST['data'] = str_replace("\r", "", $_REQUEST['data']); + $_REQUEST['data'] = str_replace("\r", "", base64_decode($_REQUEST['data'])); $ret = file_put_contents($_REQUEST['file'], $_REQUEST['data']); conf_mount_ro(); if($_REQUEST['file'] == "config.xml") @@ -78,6 +77,7 @@ if($_REQUEST['action']) { require("head.inc"); outputCSSFileInline("code-syntax-highlighter/SyntaxHighlighter.css"); outputJavaScriptFileInline("filebrowser/browser.js"); +outputJavaScriptFileInline("javascript/base64.js"); ?> @@ -131,7 +131,7 @@ outputJavaScriptFileInline("filebrowser/browser.js"); $("fileStatus").innerHTML = "<?=gettext("Saving file"); ?> ..."; Effect.Appear("fileStatusBox", { duration: 0.5 }); - var fileContent = escape($("fileContent").value); + var fileContent = Base64.encode($("fileContent").value); fileContent = fileContent.replace(/\+/g,"%2B"); new Ajax.Request( diff --git a/usr/local/www/fbegin.inc b/usr/local/www/fbegin.inc index 48cbe83..47ff2ed 100755 --- a/usr/local/www/fbegin.inc +++ b/usr/local/www/fbegin.inc @@ -191,7 +191,6 @@ $diagnostics_menu[] = array("Ping", "/diag_ping.php"); $diagnostics_menu[] = array("pfTOP", "/diag_system_pftop.php"); $diagnostics_menu[] = array("Reboot", "/reboot.php"); $diagnostics_menu[] = array("Routes", "/diag_routes.php"); -$diagnostics_menu[] = array("Show Bogons", "/diag_showbogons.php"); $diagnostics_menu[] = array("SMART Status", "/diag_smart.php"); $diagnostics_menu[] = array("States", "/diag_dump_states.php"); $diagnostics_menu[] = array("States Summary", "/diag_states_summary.php"); diff --git a/usr/local/www/firewall_nat_1to1.php b/usr/local/www/firewall_nat_1to1.php index 494d34e..94132f2 100755 --- a/usr/local/www/firewall_nat_1to1.php +++ b/usr/local/www/firewall_nat_1to1.php @@ -102,8 +102,9 @@ include("head.inc"); <tr> <td width="10%" class="listhdrr"><?=gettext("Interface"); ?></td> <td width="20%" class="listhdrr"><?=gettext("External IP"); ?></td> - <td width="20%" class="listhdrr"><?=gettext("Internal IP"); ?></td> - <td width="40%" class="listhdr"><?=gettext("Description"); ?></td> + <td width="15%" class="listhdrr"><?=gettext("Source IP"); ?></td> + <td width="15%" class="listhdrr"><?=gettext("Destination IP"); ?></td> + <td width="30%" class="listhdr"><?=gettext("Description"); ?></td> <td width="10%" class="list"> <table border="0" cellspacing="0" cellpadding="1"> <tr> @@ -124,12 +125,13 @@ include("head.inc"); ?> </td> <td class="listr" ondblclick="document.location='firewall_nat_1to1_edit.php?id=<?=$i;?>';"> - <?php echo $natent['external']; - if ($natent['subnet']) echo "/" . $natent['subnet']; ?> + <?php echo $natent['external']; ?> </td> <td class="listr" ondblclick="document.location='firewall_nat_1to1_edit.php?id=<?=$i;?>';"> - <?php echo $natent['internal']; - if ($natent['subnet']) echo "/" . $natent['subnet']; ?> + <?php echo pprint_address($natent['source']); ?> + </td> + <td class="listr" ondblclick="document.location='firewall_nat_1to1_edit.php?id=<?=$i;?>';"> + <?php echo pprint_address($natent['destination']); ?> </td> <td class="listbg" ondblclick="document.location='firewall_nat_1to1_edit.php?id=<?=$i;?>';"> <?=htmlspecialchars($natent['descr']);?> @@ -145,7 +147,7 @@ include("head.inc"); </tr> <?php $i++; endforeach; ?> <tr> - <td class="list" colspan="4"></td> + <td class="list" colspan="5"></td> <td class="list"> <table border="0" cellspacing="0" cellpadding="1"> <tr> diff --git a/usr/local/www/firewall_nat_1to1_edit.php b/usr/local/www/firewall_nat_1to1_edit.php index 5057959..f04c736 100755 --- a/usr/local/www/firewall_nat_1to1_edit.php +++ b/usr/local/www/firewall_nat_1to1_edit.php @@ -54,9 +54,17 @@ function nat_1to1_rules_sort() { } require("guiconfig.inc"); +require_once("interfaces.inc"); require("filter.inc"); require("shaper.inc"); +$specialsrcdst = explode(" ", "any pptp pppoe l2tp openvpn"); +$ifdisp = get_configured_interface_with_descr(); +foreach ($ifdisp as $kif => $kdescr) { + $specialsrcdst[] = "{$kif}"; + $specialsrcdst[] = "{$kif}ip"; +} + if (!is_array($config['nat']['onetoone'])) { $config['nat']['onetoone'] = array(); } @@ -67,21 +75,25 @@ if (isset($_POST['id'])) $id = $_POST['id']; if (isset($id) && $a_1to1[$id]) { - $pconfig['external'] = $a_1to1[$id]['external']; - $pconfig['internal'] = $a_1to1[$id]['internal']; + $pconfig['disabled'] = isset($a_1to1[$id]['disabled']); + + address_to_pconfig($a_1to1[$id]['source'], $pconfig['src'], + $pconfig['srcmask'], $pconfig['srcnot'], + $pconfig['srcbeginport'], $pconfig['srcendport']); + + address_to_pconfig($a_1to1[$id]['destination'], $pconfig['dst'], + $pconfig['dstmask'], $pconfig['dstnot'], + $pconfig['dstbeginport'], $pconfig['dstendport']); + $pconfig['interface'] = $a_1to1[$id]['interface']; if (!$pconfig['interface']) $pconfig['interface'] = "wan"; - if (!$a_1to1[$id]['subnet']) - $pconfig['subnet'] = 32; - else - $pconfig['subnet'] = $a_1to1[$id]['subnet']; + + $pconfig['external'] = $a_1to1[$id]['external']; $pconfig['descr'] = $a_1to1[$id]['descr']; $pconfig['natreflection'] = $a_1to1[$id]['natreflection']; -} else { - $pconfig['subnet'] = 32; +} else $pconfig['interface'] = "wan"; -} if ($_POST) { @@ -89,27 +101,67 @@ if ($_POST) { $pconfig = $_POST; /* input validation */ - $reqdfields = explode(" ", "interface external internal"); - $reqdfieldsn = array(gettext("Interface"),gettext("External subnet"),gettext("Internal subnet")); + $reqdfields = explode(" ", "interface external"); + $reqdfieldsn = array(gettext("Interface"), gettext("External subnet")); + if ($_POST['srctype'] == "single" || $_POST['srctype'] == "network") { + $reqdfields[] = "src"; + $reqdfieldsn[] = gettext("Source address"); + } + if ($_POST['dsttype'] == "single" || $_POST['dsttype'] == "network") { + $reqdfields[] = "dst"; + $reqdfieldsn[] = gettext("Destination address"); + } do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors); - if (($_POST['external'] && !is_ipaddr($_POST['external']))) { + if (is_specialnet($_POST['srctype'])) { + $_POST['src'] = $_POST['srctype']; + $_POST['srcmask'] = 0; + } else if ($_POST['srctype'] == "single") { + $_POST['srcmask'] = 32; + } + if (is_specialnet($_POST['dsttype'])) { + $_POST['dst'] = $_POST['dsttype']; + $_POST['dstmask'] = 0; + } else if ($_POST['dsttype'] == "single") { + $_POST['dstmask'] = 32; + } else if (is_ipaddr($_POST['dsttype'])) { + $_POST['dst'] = $_POST['dsttype']; + $_POST['dstmask'] = 32; + $_POST['dsttype'] = "single"; + } + + if (($_POST['external'] && !is_ipaddroralias($_POST['external']))) $input_errors[] = gettext("A valid external subnet must be specified."); - } - if (($_POST['internal'] && !is_ipaddr($_POST['internal']))) { - $input_errors[] = gettext("A valid internal subnet must be specified."); - } + + /* if user enters an alias and selects "network" then disallow. */ + if( ($_POST['srctype'] == "network" && is_alias($_POST['src']) ) + || ($_POST['dsttype'] == "network" && is_alias($_POST['dst']) ) ) + $input_errors[] = gettext("You must specify single host or alias for alias entries."); + + if (!is_specialnet($_POST['srctype'])) { + if (($_POST['src'] && !is_ipaddroralias($_POST['src']))) { + $input_errors[] = sprintf(gettext("%s is not a valid source IP address or alias."), $_POST['src']); + } + if (($_POST['srcmask'] && !is_numericint($_POST['srcmask']))) { + $input_errors[] = gettext("A valid source bit count must be specified."); + } + } + if (!is_specialnet($_POST['dsttype'])) { + if (($_POST['dst'] && !is_ipaddroralias($_POST['dst']))) { + $input_errors[] = sprintf(gettext("%s is not a valid destination IP address or alias."), $_POST['dst']); + } + if (($_POST['dstmask'] && !is_numericint($_POST['dstmask']))) { + $input_errors[] = gettext("A valid destination bit count must be specified."); + } + } /* check for overlaps with other 1:1 */ foreach ($a_1to1 as $natent) { if (isset($id) && ($a_1to1[$id]) && ($a_1to1[$id] === $natent)) continue; - if (check_subnets_overlap($_POST['external'], $_POST['subnet'], $natent['external'], $natent['subnet'])) { - //$input_errors[] = "Another 1:1 rule overlaps with the specified external subnet."; - //break; - } else if (check_subnets_overlap($_POST['internal'], $_POST['subnet'], $natent['internal'], $natent['subnet'])) { + if (check_subnets_overlap($_POST['internal'], $_POST['subnet'], $natent['internal'], $natent['subnet'])) { //$input_errors[] = "Another 1:1 rule overlaps with the specified internal subnet."; //break; } @@ -118,12 +170,17 @@ if ($_POST) { if (!$input_errors) { $natent = array(); + $natent['disabled'] = isset($_POST['disabled']) ? true:false; $natent['external'] = $_POST['external']; - $natent['internal'] = $_POST['internal']; - $natent['subnet'] = $_POST['subnet']; $natent['descr'] = $_POST['descr']; $natent['interface'] = $_POST['interface']; + pconfig_to_address($natent['source'], $_POST['src'], + $_POST['srcmask'], $_POST['srcnot']); + + pconfig_to_address($natent['destination'], $_POST['dst'], + $_POST['dstmask'], $_POST['dstnot']); + if ($_POST['natreflection'] == "enable" || $_POST['natreflection'] == "disable") $natent['natreflection'] = $_POST['natreflection']; else @@ -150,6 +207,49 @@ include("head.inc"); ?> <body link="#0000CC" vlink="#0000CC" alink="#0000CC"> +<script type="text/javascript" src="/javascript/suggestions.js"> +</script> +<script type="text/javascript" src="/javascript/autosuggest.js"> +</script> +<script type="text/javascript"> +function typesel_change() { + switch (document.iform.srctype.selectedIndex) { + case 1: /* single */ + document.iform.src.disabled = 0; + document.iform.srcmask.value = ""; + document.iform.srcmask.disabled = 1; + break; + case 2: /* network */ + document.iform.src.disabled = 0; + document.iform.srcmask.disabled = 0; + break; + default: + document.iform.src.value = ""; + document.iform.src.disabled = 1; + document.iform.srcmask.value = ""; + document.iform.srcmask.disabled = 1; + break; + } + switch (document.iform.dsttype.selectedIndex) { + case 1: /* single */ + document.iform.dst.disabled = 0; + document.iform.dstmask.value = ""; + document.iform.dstmask.disabled = 1; + break; + case 2: /* network */ + document.iform.dst.disabled = 0; + document.iform.dstmask.disabled = 0; + break; + default: + document.iform.dst.value = ""; + document.iform.dst.disabled = 1; + document.iform.dstmask.value = ""; + document.iform.dstmask.disabled = 1; + break; + } +} +</script> + <?php include("fbegin.inc"); ?> <?php if ($input_errors) print_input_errors($input_errors); ?> <form action="firewall_nat_1to1_edit.php" method="post" name="iform" id="iform"> @@ -157,85 +257,205 @@ include("head.inc"); <tr> <td colspan="2" valign="top" class="listtopic"><?=gettext("Edit NAT 1:1 entry"); ?></td> </tr> - <tr> - <td width="22%" valign="top" class="vncellreq"><?=gettext("Interface"); ?></td> - <td width="78%" class="vtable"> - <select name="interface" class="formselect"> - <?php - $iflist = get_configured_interface_with_descr(); - foreach ($iflist as $if => $ifdesc) - if(have_ruleint_access($if)) - $interfaces[$if] = $ifdesc; - - if ($config['l2tp']['mode'] == "server") - if(have_ruleint_access("l2tp")) - $interfaces['l2tp'] = "L2TP VPN"; - - if ($config['pptpd']['mode'] == "server") - if(have_ruleint_access("pptp")) - $interfaces['pptp'] = "PPTP VPN"; - - if ($config['pppoe']['mode'] == "server") - if(have_ruleint_access("pppoe")) - $interfaces['pppoe'] = "PPPoE VPN"; - - /* add ipsec interfaces */ - if (isset($config['ipsec']['enable']) || isset($config['ipsec']['mobileclients']['enable'])) - if(have_ruleint_access("enc0")) - $interfaces["enc0"] = "IPsec"; - - /* add openvpn/tun interfaces */ - if ($config['openvpn']["openvpn-server"] || $config['openvpn']["openvpn-client"]) - $interfaces["openvpn"] = "OpenVPN"; - - foreach ($interfaces as $iface => $ifacename): - ?> - <option value="<?=$iface;?>" <?php if ($iface == $pconfig['interface']) echo "selected"; ?>> - <?=htmlspecialchars($ifacename);?> - </option> - <?php endforeach; ?> - </select><br> - <span class="vexpl"><?=gettext("Choose which interface this rule applies to"); ?>.<br> - <?=gettext("Hint: in most cases, you'll want to use WAN here"); ?>.</span></td> - </tr> - <tr> - <td width="22%" valign="top" class="vncellreq"><?=gettext("External subnet"); ?></td> - <td width="78%" class="vtable"> - <input name="external" type="text" class="formfld unknown" id="external" size="20" value="<?=htmlspecialchars($pconfig['external']);?>"> - <select name="subnet" class="formselect" id="subnet" > - <?php for ($i = 32; $i >= 0; $i--): ?> - <option value="<?=$i;?>" <?php if ($i == $pconfig['subnet']) echo "selected"; ?>> - <?=$i;?> - </option> - <?php endfor; ?> - </select> - <br> - <span class="vexpl"><?=gettext("Enter the external (WAN) subnet for the 1:1 mapping. You may map single IP addresses by specifying a /32 subnet."); ?></span></td> + <tr> + <td width="22%" valign="top" class="vncellreq"><?=gettext("Disabled"); ?></td> + <td width="78%" class="vtable"> + <input name="disabled" type="checkbox" id="disabled" value="yes" <?php if ($pconfig['disabled']) echo "checked"; ?>> + <strong><?=gettext("Disable this rule"); ?></strong><br /> + <span class="vexpl"><?=gettext("Set this option to disable this rule without removing it from the list."); ?></span> + </td> + <tr> + <td width="22%" valign="top" class="vncellreq"><?=gettext("Interface"); ?></td> + <td width="78%" class="vtable"> + <select name="interface" class="formselect"> + <?php + foreach ($ifdisp as $if => $ifdesc) + if(have_ruleint_access($if)) + $interfaces[$if] = $ifdesc; + + if ($config['l2tp']['mode'] == "server") + if(have_ruleint_access("l2tp")) + $interfaces['l2tp'] = "L2TP VPN"; + + if ($config['pptpd']['mode'] == "server") + if(have_ruleint_access("pptp")) + $interfaces['pptp'] = "PPTP VPN"; + + if ($config['pppoe']['mode'] == "server") + if(have_ruleint_access("pppoe")) + $interfaces['pppoe'] = "PPPoE VPN"; + + /* add ipsec interfaces */ + if (isset($config['ipsec']['enable']) || isset($config['ipsec']['mobileclients']['enable'])) + if(have_ruleint_access("enc0")) + $interfaces["enc0"] = "IPsec"; + + /* add openvpn/tun interfaces */ + if ($config['openvpn']["openvpn-server"] || $config['openvpn']["openvpn-client"]) + $interfaces["openvpn"] = "OpenVPN"; + + foreach ($interfaces as $iface => $ifacename): + ?> + <option value="<?=$iface;?>" <?php if ($iface == $pconfig['interface']) echo "selected"; ?>> + <?=htmlspecialchars($ifacename);?> + </option> + <?php endforeach; ?> + </select><br> + <span class="vexpl"><?=gettext("Choose which interface this rule applies to"); ?>.<br> + <?=gettext("Hint: in most cases, you'll want to use WAN here"); ?>.</span></td> + </tr> + <tr id="srctable" name="srctable"> + <td width="22%" valign="top" class="vncellreq"><?=gettext("Source"); ?></td> + <td width="78%" class="vtable"> + <input name="srcnot" type="checkbox" id="srcnot" value="yes" <?php if ($pconfig['srcnot']) echo "checked"; ?>> + <strong><?=gettext("not"); ?></strong> + <br /> + <?=gettext("Use this option to invert the sense of the match."); ?> + <br /> + <br /> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><?=gettext("Type:"); ?> </td> + <td> + <select name="srctype" class="formselect" onChange="typesel_change()"> +<?php + $sel = is_specialnet($pconfig['src']); ?> + <option value="any" <?php if ($pconfig['src'] == "any") { echo "selected"; } ?>><?=gettext("any"); ?></option> + <option value="single" <?php if (($pconfig['srcmask'] == 32) && !$sel) { echo "selected"; $sel = 1; } ?>><?=gettext("Single host"); ?></option> + <option value="network" <?php if (!$sel) echo "selected"; ?>><?=gettext("Network"); ?></option> + <?php if(have_ruleint_access("pptp")): ?> + <option value="pptp" <?php if ($pconfig['src'] == "pptp") { echo "selected"; } ?>><?=gettext("PPTP clients"); ?></option> + <?php endif; ?> + <?php if(have_ruleint_access("pppoe")): ?> + <option value="pppoe" <?php if ($pconfig['src'] == "pppoe") { echo "selected"; } ?>><?=gettext("PPPoE clients"); ?></option> + <?php endif; ?> + <?php if(have_ruleint_access("l2tp")): ?> + <option value="l2tp" <?php if ($pconfig['src'] == "l2tp") { echo "selected"; } ?>><?=gettext("L2TP clients"); ?></option> + <?php endif; ?> +<?php + foreach ($ifdisp as $ifent => $ifdesc): ?> + <?php if(have_ruleint_access($ifent)): ?> + <option value="<?=$ifent;?>" <?php if ($pconfig['src'] == $ifent) { echo "selected"; } ?>><?=htmlspecialchars($ifdesc);?> <?=gettext("subnet"); ?></option> + <option value="<?=$ifent;?>ip"<?php if ($pconfig['src'] == $ifent . "ip") { echo "selected"; } ?>> + <?=$ifdesc?> <?=gettext("address");?> + </option> + <?php endif; endforeach; ?> + </select> + </td> + </tr> + <tr> + <td><?=gettext("Address:"); ?> </td> + <td> + <input name="src" type="text" class="formfld unknown" id="src" size="20" value="<?php if (!is_specialnet($pconfig['src'])) echo htmlspecialchars($pconfig['src']);?>"> / + <select name="srcmask" class="formselect" id="srcmask"> +<?php for ($i = 31; $i > 0; $i--): ?> + <option value="<?=$i;?>" <?php if ($i == $pconfig['srcmask']) echo "selected"; ?>><?=$i;?></option> +<?php endfor; ?> + </select> + </td> + </tr> + </table> + <br/> + <span class="vexpl"><?=gettext("Enter the internal (LAN) subnet for the 1:1 mapping. The subnet size specified for the external subnet also applies to the internal subnet (they have to be the same)."); ?></span> + </td> + </tr> + <tr> + <td width="22%" valign="top" class="vncellreq"><?=gettext("Destination"); ?></td> + <td width="78%" class="vtable"> + <input name="dstnot" type="checkbox" id="dstnot" value="yes" <?php if ($pconfig['dstnot']) echo "checked"; ?>> + <strong><?=gettext("not"); ?></strong> + <br /> + <?=gettext("Use this option to invert the sense of the match."); ?> + <br /> + <br /> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><?=gettext("Type:"); ?> </td> + <td> + <select name="dsttype" class="formselect" onChange="typesel_change()"> +<?php + $sel = is_specialnet($pconfig['dst']); ?> + <option value="any" <?php if ($pconfig['dst'] == "any") { echo "selected"; } ?>><?=gettext("any"); ?></option> + <option value="single" <?php if (($pconfig['dstmask'] == 32) && !$sel) { echo "selected"; $sel = 1; } ?>><?=gettext("Single host or alias"); ?></option> + <option value="network" <?php if (!$sel) echo "selected"; ?>><?=gettext("Network"); ?></option> + <?php if(have_ruleint_access("pptp")): ?> + <option value="pptp" <?php if ($pconfig['dst'] == "pptp") { echo "selected"; } ?>><?=gettext("PPTP clients"); ?></option> + <?php endif; ?> + <?php if(have_ruleint_access("pppoe")): ?> + <option value="pppoe" <?php if ($pconfig['dst'] == "pppoe") { echo "selected"; } ?>><?=gettext("PPPoE clients"); ?></option> + <?php endif; ?> + <?php if(have_ruleint_access("l2tp")): ?> + <option value="l2tp" <?php if ($pconfig['dst'] == "l2tp") { echo "selected"; } ?>><?=gettext("L2TP clients"); ?></option> + <?php endif; ?> + +<?php foreach ($ifdisp as $if => $ifdesc): ?> + <?php if(have_ruleint_access($if)): ?> + <option value="<?=$if;?>" <?php if ($pconfig['dst'] == $if) { echo "selected"; } ?>><?=htmlspecialchars($ifdesc);?> <?=gettext("subnet"); ?></option> + <option value="<?=$if;?>ip"<?php if ($pconfig['dst'] == $if . "ip") { echo "selected"; } ?>> + <?=$ifdesc;?> <?=gettext("address");?> + </option> +<?php endif; endforeach; + if (is_array($config['virtualip']['vip'])): + foreach ($config['virtualip']['vip'] as $sn): + if ($sn['mode'] == "proxyarp" && $sn['type'] == "network"): + $start = ip2long32(gen_subnet($sn['subnet'], $sn['subnet_bits'])); + $end = ip2long32(gen_subnet_max($sn['subnet'], $sn['subnet_bits'])); + $len = $end - $start; + for ($i = 0; $i <= $len; $i++): + $snip = long2ip32($start+$i); +?> + <option value="<?=$snip;?>" <?php if ($snip == $pconfig['dst']) echo "selected"; ?>><?=htmlspecialchars("{$snip} ({$sn['descr']})");?></option> +<?php endfor; + else: +?> + <option value="<?=$sn['subnet'];?>" <?php if ($sn['subnet'] == $pconfig['dst']) echo "selected"; ?>><?=htmlspecialchars("{$sn['subnet']} ({$sn['descr']})");?></option> +<?php endif; + endforeach; + endif; +?> + </select> + </td> + </tr> + <tr> + <td><?=gettext("Address:"); ?> </td> + <td> + <input name="dst" type="text" class="formfldalias" id="dst" size="20" value="<?php if (!is_specialnet($pconfig['dst'])) echo htmlspecialchars($pconfig['dst']);?>"> + / + <select name="dstmask" class="formselect" id="dstmask"> +<?php + for ($i = 31; $i > 0; $i--): ?> + <option value="<?=$i;?>" <?php if ($i == $pconfig['dstmask']) echo "selected"; ?>><?=$i;?></option> +<?php endfor; ?> + </select> + </td> + </tr> + </table> + <br/> </tr> <tr> - <td width="22%" valign="top" class="vncellreq"><?=gettext("Internal subnet"); ?></td> + <td width="22%" valign="top" class="vncellreq"><?=gettext("External subnet"); ?></td> <td width="78%" class="vtable"> - <input name="internal" type="text" class="formfld unknown" id="internal" size="20" value="<?=htmlspecialchars($pconfig['internal']);?>"> - <br> - <span class="vexpl"><?=gettext("Enter the internal (LAN) subnet for the 1:1 mapping. The subnet size specified for the external subnet also applies to the internal subnet (they have to be the same)."); ?></span></td> + <input name="external" type="text" class="formfldalias" id="external" size="20" value="<?=htmlspecialchars($pconfig['external']);?>"> + <br/> + </td> </tr> <tr> <td width="22%" valign="top" class="vncell"><?=gettext("Description"); ?></td> <td width="78%" class="vtable"> <input name="descr" type="text" class="formfld unknown" id="descr" size="40" value="<?=htmlspecialchars($pconfig['descr']);?>"> - <br> <span class="vexpl"><?=gettext("You may enter a description here " . + <br/> <span class="vexpl"><?=gettext("You may enter a description here " . "for your reference (not parsed)."); ?></span></td> </tr> - <tr> - <td width="22%" valign="top" class="vncell"><?=gettext("NAT reflection"); ?></td> - <td width="78%" class="vtable"> - <select name="natreflection" class="formselect"> - <option value="default" <?php if ($pconfig['natreflection'] != "enable" && $pconfig['natreflection'] != "disable") echo "selected"; ?>><?=gettext("use system default"); ?></option> - <option value="enable" <?php if ($pconfig['natreflection'] == "enable") echo "selected"; ?>><?=gettext("enable"); ?></option> - <option value="disable" <?php if ($pconfig['natreflection'] == "disable") echo "selected"; ?>><?=gettext("disable"); ?></option> - </select> - </td> - </tr> + <tr> + <td width="22%" valign="top" class="vncell"><?=gettext("NAT reflection"); ?></td> + <td width="78%" class="vtable"> + <select name="natreflection" class="formselect"> + <option value="default" <?php if ($pconfig['natreflection'] != "enable" && $pconfig['natreflection'] != "disable") echo "selected"; ?>><?=gettext("use system default"); ?></option> + <option value="enable" <?php if ($pconfig['natreflection'] == "enable") echo "selected"; ?>><?=gettext("enable"); ?></option> + <option value="disable" <?php if ($pconfig['natreflection'] == "disable") echo "selected"; ?>><?=gettext("disable"); ?></option> + </select> + </td> + </tr> <tr> <td width="22%" valign="top"> </td> <td width="78%"> @@ -247,6 +467,38 @@ include("head.inc"); </tr> </table> </form> +<script language="JavaScript"> + typesel_change(); +</script> +<?php +$isfirst = 0; +$aliases = ""; +$addrisfirst = 0; +$aliasesaddr = ""; +if($config['aliases']['alias'] <> "") + foreach($config['aliases']['alias'] as $alias_name) { + switch ($alias_name['type']) { + case "host": + case "network": + case "openvpn": + case "urltable": + if($addrisfirst == 1) $aliasesaddr .= ","; + $aliasesaddr .= "'" . $alias_name['name'] . "'"; + $addrisfirst = 1; + break; + default: + break; + } + } +?> +<script language="JavaScript"> +<!-- + var addressarray=new Array(<?php echo $aliasesaddr; ?>); + + var oTextbox1 = new AutoSuggestControl(document.getElementById("external"), new StateSuggestions(addressarray)); + var oTextbox3 = new AutoSuggestControl(document.getElementById("dst"), new StateSuggestions(addressarray)); +//--> +</script> <?php include("fend.inc"); ?> </body> </html> diff --git a/usr/local/www/firewall_rules.php b/usr/local/www/firewall_rules.php index 3c2ccd6..616bc10 100755 --- a/usr/local/www/firewall_rules.php +++ b/usr/local/www/firewall_rules.php @@ -51,48 +51,6 @@ require_once("shaper.inc"); $pgtitle = array(gettext("Firewall"),gettext("Rules")); -function check_for_advanced_options(&$item) { - $item_set = ""; - if($item['max']) - $item_set .= "max {$item['max']} "; - if($item['max-src-nodes']) - $item_set .= "max-src-nodes {$item['max-src-nodes']} "; - if($item['max-src-conn']) - $item_set .= "max-src-conn {$item['max-src-conn']} "; - if($item['max-src-states']) - $item_set .= "max-src-states {$item['max-src-states']} "; - if($item['statetype'] != "keep state" && $item['statetype'] != "") - $item_set .= "statetype {$item['statetype']} "; - if($item['statetimeout']) - $item_set .= "statetimeout {$item['statetimeout']} "; - if($item['nosync']) - $item_set .= "nosync "; - if($item['max-src-conn-rate']) - $item_set .= "max-src-conn-rate {$item['max-src-conn-rate']} "; - if($item['max-src-conn-rates']) - $item_set .= "max-src-conn-rates {$item['max-src-conn-rates']} "; - if($item['gateway']) - $item_set .= "gateway {$item['gateway']} "; - if($item['dnpipe']) - $item_set .= "limiter {$item['dnpipe']} "; - if($item['pdnpipe']) - $item_set .= "limiter {$item['pdnpipe']} "; - if($item['l7container']) - $item_set .= "layer7 {$item['l7container']} "; - if($item['tag']) - $item_set .= "tag {$item['tag']} "; - if($item['tagged']) - $item_set .= "tagged {$item['tagged']} "; - if(isset($item['allowopts'])) - $item_set .= "allowopts "; - if(isset($item['disablereplyto'])) - $item_set .= "disable reply-to "; - if($item['tcpflags_any'] || $item['tcpflags1'] || $item['tcpflags2']) - $item_set .= "tcpflags set"; - - return $item_set; -} - function delete_nat_association($id) { global $config; @@ -455,7 +413,7 @@ if($_REQUEST['undodrag']) { continue; if (isset($filterent['floating']) && "FloatingRules" != $if) continue; - $isadvset = check_for_advanced_options($filterent); + $isadvset = firewall_check_for_advanced_options($filterent); if($isadvset) $advanced_set = "<img src=\"./themes/{$g['theme']}/images/icons/icon_advanced.gif\" title=\"" . gettext("advanced settings set") . ": {$isadvset}\" border=\"0\">"; else diff --git a/usr/local/www/firewall_rules_edit.php b/usr/local/www/firewall_rules_edit.php index 34cfc5d..813842c 100755 --- a/usr/local/www/firewall_rules_edit.php +++ b/usr/local/www/firewall_rules_edit.php @@ -854,7 +854,7 @@ include("head.inc"); </tr> </table> <br /> - <span class="vexpl"><?=gettext("Specify the source port or port range for this rule."); ?> <b><?=gettext("This is usually"); ?> <em><?=gettext("random"); ?></em> <?=gettext("and almost never equal to the destination port range (and should usually be"); ?> "<?=gettext("any"); ?>"</b>).<br />.<?=gettext("Hint: you can leave the"); ?> <em><?=gettext("\"to\""); ?></em> <?=gettext("field empty if you only want to filter a single port.");?></span><br/> + <span class="vexpl"><?=gettext("Specify the source port or port range for this rule."); ?> <b><?=gettext("This is usually"); ?> <em><?=gettext("random"); ?></em> <?=gettext("and almost never equal to the destination port range (and should usually be"); ?> "<?=gettext("any"); ?>").</b><br /><?=gettext("Hint: you can leave the"); ?> <em><?=gettext("'to'"); ?></em> <?=gettext("field empty if you only want to filter a single port.");?></span><br/> </td> </tr> <tr> @@ -969,6 +969,7 @@ include("head.inc"); <span class="vexpl"><?=gettext("You may enter a description here for your reference.");?></span> </td> </tr> +<?php if (!isset($id) || !($a_filter[$id] && firewall_check_for_advanced_options($a_filter[$id]) <> "")): ?> <tr> <td width="22%" valign="top"> </td> <td width="78%"> @@ -980,6 +981,7 @@ include("head.inc"); <input name="after" type="hidden" value="<?=$after;?>"> </td> </tr> +<?php endif; ?> <tr> <td> </td> </tr> diff --git a/usr/local/www/firewall_virtual_ip.php b/usr/local/www/firewall_virtual_ip.php index ec15fdf..c3607ec 100755 --- a/usr/local/www/firewall_virtual_ip.php +++ b/usr/local/www/firewall_virtual_ip.php @@ -62,30 +62,32 @@ if ($_POST) { $pconfig = $_POST; if ($_POST['apply']) { - $toapplylist = array(); - if (file_exists("{$g['tmp_path']}/firewall_virtual_ip.apply")) - $toapplylist = unserialize(file_get_contents("{$g['tmp_path']}/firewall_virtual_ip.apply")); - foreach ($toapplylist as $vid) { - if ($a_vip[$vid]) { - switch ($a_vip[$vid]['mode']) { - case "ipalias": - interface_ipalias_configure($a_vip[$vid]); - break; - case "proxyarp": - interface_proxyarp_configure($a_vip[$vid]['interface']); - break; - case "carp": - interface_carp_configure($a_vip[$vid]); - break; - case "carpdev-dhcp": - interface_carpdev_configure($a_vip[$vid]); - break; - default: - break; - } - } - } - @unlink("{$g['tmp_path']}/firewall_virtual_ip.apply"); + if (file_exists("{$g['tmp_path']}/.firewall_virtual_ip.apply")) { + $toapplylist = unserialize(file_get_contents("{$g['tmp_path']}/.firewall_virtual_ip.apply")); + foreach ($toapplylist as $vid => $ovip) { + if (!empty($ovip)) + interface_vip_bring_down($ovip); + if ($a_vip[$vid]) { + switch ($a_vip[$vid]['mode']) { + case "ipalias": + interface_ipalias_configure($a_vip[$vid]); + break; + case "proxyarp": + interface_proxyarp_configure($a_vip[$vid]['interface']); + break; + case "carp": + interface_carp_configure($a_vip[$vid]); + break; + case "carpdev-dhcp": + interface_carpdev_configure($a_vip[$vid]); + break; + default: + break; + } + } + } + @unlink("{$g['tmp_path']}/.firewall_virtual_ip.apply"); + } $retval = 0; $retval |= filter_configure(); $savemsg = get_std_save_message($retval); @@ -108,7 +110,7 @@ if ($_GET['act'] == "del") { } } - if ($a_vip[$_GET['id']]['mode'] == "proxyarp") { + if ($a_vip[$_GET['id']]['mode'] == "ipalias") { $vipiface = $a_vip[$_GET['id']]['interface']; foreach ($a_vip as $vip) { if ($vip['interface'] == $vipiface && $vip['mode'] == "carp") @@ -117,11 +119,13 @@ if ($_GET['act'] == "del") { } } + if (!$input_errors) { // Special case since every proxyarp vip is handled by the same daemon. if ($a_vip[$_GET['id']]['mode'] == "proxyarp") { + $viface = $a_vip[$_GET['id']]['interface']; unset($a_vip[$_GET['id']]); - interface_proxyarp_configure(); + interface_proxyarp_configure($viface); } else { interface_vip_bring_down($a_vip[$_GET['id']]); unset($a_vip[$_GET['id']]); @@ -129,7 +133,6 @@ if ($_GET['act'] == "del") { if (count($config['virtualip']['vip']) == 0) unset($config['virtualip']['vip']); write_config(); - mark_subsystem_dirty('vip'); header("Location: firewall_virtual_ip.php"); exit; } diff --git a/usr/local/www/firewall_virtual_ip_edit.php b/usr/local/www/firewall_virtual_ip_edit.php index 8951435..79398bd 100755 --- a/usr/local/www/firewall_virtual_ip_edit.php +++ b/usr/local/www/firewall_virtual_ip_edit.php @@ -109,9 +109,12 @@ if ($_POST) { $input_errors[] = gettext("A valid IP address must be specified."); $natiflist = get_configured_interface_with_descr(); - foreach ($natiflist as $natif => $natdescr) + foreach ($natiflist as $natif => $natdescr) { + if ($_POST['interface'] == $natif && empty($config['interfaces'][$natif]['ipaddr'])) + $input_errors[] = gettext("The interface chosen for the VIP has no ip configured so it cannot be used as a parent for the VIP."); if ($_POST['subnet'] == get_interface_ip($natif)) $input_errors[] = sprintf(gettext("The %s IP address may not be used in a virtual entry."),$natdescr); + } if($_POST['subnet_bits'] == "32" and $_POST['type'] == "carp") $input_errors[] = gettext("The /32 subnet mask is invalid for CARP IPs."); @@ -146,11 +149,7 @@ if ($_POST) { if (!ip_in_subnet($_POST['subnet'], gen_subnet($parent_ip, $parent_sn) . "/" . $parent_sn) && !ip_in_interface_alias_subnet($_POST['interface'], $_POST['subnet'])) { $cannot_find = $_POST['subnet'] . "/" . $_POST['subnet_bits'] ; $input_errors[] = sprintf(gettext("Sorry, we could not locate an interface with a matching subnet for %s. Please add an IP alias in this subnet on this interface."),$cannot_find); - } else if ($parent_sn != $_POST['subnet_bits']) - $input_errors[] = gettext("Subnet bits needs to be the same as the parent interface."); - - if (isset($id) && ($a_vip[$id]) && $a_vip[$id]['vhid'] != $_POST['vhid']) - interface_vip_bring_down($a_vip[$id]); + } } if (isset($id) && ($a_vip[$id])) { @@ -160,18 +159,12 @@ if ($_POST) { $vipiface = $a_vip[$id]['interface']; foreach ($a_vip as $vip) { if ($vip['interface'] == $vipiface && $vip['mode'] == "carp") { - if (ip_in_subnet($vip['subnet'], gen_subnet($a_vip[$id]['subnet'], $a_vip[$id]['subnet_bits']) . "/" . $a_vip[$id]['subnet_bits'])) { + if (ip_in_subnet($vip['subnet'], gen_subnet($a_vip[$id]['subnet'], $a_vip[$id]['subnet_bits']) . "/" . $a_vip[$id]['subnet_bits'])) $input_errors[] = gettext("This entry cannot be modified because it is still referenced by CARP") . " {$vip['descr']}."; - $bringdown = false; - } } } } - if (bringdown == false) - interface_vip_bring_down($a_vip[$id]); } - if ($a_vip[$id]['interface'] != $_POST['interface']) - interface_vip_bring_down($a_vip[$id]); } if (!$input_errors) { @@ -217,27 +210,27 @@ if ($_POST) { unset($vipent['alias-subnet']); } - if (isset($id) && $a_vip[$id]) { + if (!isset($id)) + $id = count($a_vip); + if (file_exists("{$g['tmp_path']}/.firewall_virtual_ip.apply")) + $toapplylist = unserialize(file_get_contents("{$g['tmp_path']}/.firewall_virtual_ip.apply")); + else + $toapplylist = array(); + + $toapplylist[$id] = $a_vip[$id]; + if (!empty($a_vip[$id])) { /* modify all virtual IP rules with this address */ for ($i = 0; isset($config['nat']['rule'][$i]); $i++) { if ($config['nat']['rule'][$i]['destination']['address'] == $a_vip[$id]['subnet']) $config['nat']['rule'][$i]['destination']['address'] = $vipent['subnet']; } - $a_vip[$id] = $vipent; - } else - $a_vip[] = $vipent; + } + $a_vip[$id] = $vipent; mark_subsystem_dirty('vip'); write_config(); - if (!isset($id)) - $id = count($a_vip) - 1; - if (file_exists("{$g['tmp_path']}/firewall_virtual_ip.apply")) - $toapplylist = unserialize(file_get_contents("{$g['tmp_path']}/firewall_virtual_ip.apply")); - else - $toapplylist = array(); - $toapplylist[] = $id; - file_put_contents("{$g['tmp_path']}/firewall_virtual_ip.apply", serialize($toapplylist)); + file_put_contents("{$g['tmp_path']}/.firewall_virtual_ip.apply", serialize($toapplylist)); header("Location: firewall_virtual_ip.php"); exit; } diff --git a/usr/local/www/guiconfig.inc b/usr/local/www/guiconfig.inc index 229b032..458488e 100755 --- a/usr/local/www/guiconfig.inc +++ b/usr/local/www/guiconfig.inc @@ -477,6 +477,48 @@ function filter_rules_sort() { unset($config['filter']['rule'][$i]['seq']); } +function firewall_check_for_advanced_options(&$item) { + $item_set = ""; + if($item['max']) + $item_set .= "max {$item['max']} "; + if($item['max-src-nodes']) + $item_set .= "max-src-nodes {$item['max-src-nodes']} "; + if($item['max-src-conn']) + $item_set .= "max-src-conn {$item['max-src-conn']} "; + if($item['max-src-states']) + $item_set .= "max-src-states {$item['max-src-states']} "; + if($item['statetype'] != "keep state" && $item['statetype'] != "") + $item_set .= "statetype {$item['statetype']} "; + if($item['statetimeout']) + $item_set .= "statetimeout {$item['statetimeout']} "; + if($item['nosync']) + $item_set .= "nosync "; + if($item['max-src-conn-rate']) + $item_set .= "max-src-conn-rate {$item['max-src-conn-rate']} "; + if($item['max-src-conn-rates']) + $item_set .= "max-src-conn-rates {$item['max-src-conn-rates']} "; + if($item['gateway']) + $item_set .= "gateway {$item['gateway']} "; + if($item['dnpipe']) + $item_set .= "limiter {$item['dnpipe']} "; + if($item['pdnpipe']) + $item_set .= "limiter {$item['pdnpipe']} "; + if($item['l7container']) + $item_set .= "layer7 {$item['l7container']} "; + if($item['tag']) + $item_set .= "tag {$item['tag']} "; + if($item['tagged']) + $item_set .= "tagged {$item['tagged']} "; + if(isset($item['allowopts'])) + $item_set .= "allowopts "; + if(isset($item['disablereplyto'])) + $item_set .= "disable reply-to "; + if($item['tcpflags_any'] || $item['tcpflags1'] || $item['tcpflags2']) + $item_set .= "tcpflags set"; + + return $item_set; +} + function gentitle($title) { global $navlevelsep; if(!is_array($title)) diff --git a/usr/local/www/head.inc b/usr/local/www/head.inc index 3bc1e25..12f38b8 100755 --- a/usr/local/www/head.inc +++ b/usr/local/www/head.inc @@ -1,93 +1,93 @@ -<?php
-/*
- pfSense_MODULE: header
-*/
-
-/*
- * if user has selected a custom template, use it.
- * otherwise default to pfsense tempalte
- */
-if($config['theme'] <> "")
- $g['theme'] = $config['theme'];
-else
- $g['theme'] = "pfsense";
-
-/*
- * If this device is an apple ipod/iphone
- * switch the theme to one that works with it.
- */
-$apple_ua = array("iPhone","iPod", "iPad");
-foreach($apple_ua as $useragent)
- if(strstr($_SERVER['HTTP_USER_AGENT'], $useragent))
- $g['theme'] = "pfsense";
-
-$pagetitle = gentitle( $pgtitle );
-
-?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
-<head>
- <title><?php echo($config['system']['hostname'] . "." . $config['system']['domain'] . " - " . $pagetitle); ?></title>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
- <link rel="apple-touch-icon" href="/themes/<?php echo $g['theme']; ?>/apple-touch-icon.png"/>
- <?php if (strpos($_SERVER["SCRIPT_FILENAME"], "wizard.php") !== false &&
- file_exists("{$g['www_path']}/themes/{$g['theme']}/wizard.css")): ?>
- <?php echo "<style type=\"text/css\" src=\"/themes/{$g['theme']}/wizard.css\"></style>"; ?>
- <?php else: ?>
- <link rel="stylesheet" href="/themes/<?php echo $g['theme']; ?>/all.css" media="all" />
- <?php endif; ?>
- <link rel="stylesheet" type="text/css" href="/niftycssCode.css">
- <link rel="stylesheet" type="text/css" href="/niftycssprintCode.css" media="print">
- <link rel="stylesheet" type="text/css" href="/themes/<?=$g['theme']?>/new_tab_menu.css" media="all">
- <script type="text/javascript" src="/javascript/niftyjsCode.js"></script>
- <script type="text/javascript">
- var theme = "<?php echo $g['theme']; ?>";
- </script>
- <?php echo "\t<script type=\"text/javascript\" src=\"/themes/{$g['theme']}/loader.js\"></script>\n"; ?>
-<?php
- if($_GET['enablefirebuglite']) {
- echo "\t<script type=\"text/javascript\" src=\"/javascript/pi.js\"></script>\n";
- echo "\t<script type=\"text/javascript\" src=\"/javascript/firebug-lite.js\"></script>\n";
- }
- echo "\t<script type=\"text/javascript\" src=\"/javascript/scriptaculous/prototype.js\"></script>\n";
- echo "\t<script type=\"text/javascript\" src=\"/javascript/scriptaculous/scriptaculous.js\"></script>\n";
- echo "\t<script type=\"text/javascript\" src=\"/javascript/scriptaculous/effects.js\"></script>\n";
- echo "\t<script type=\"text/javascript\" src=\"/javascript/scriptaculous/dragdrop.js\"></script>\n";
- if(file_exists("{$g['www_path']}/javascript/global.js"))
- echo "\t<script type=\"text/javascript\" src=\"/javascript/global.js\"></script>\n";
- /*
- * Find all javascript files that need to be included
- * for this page ... from the arrays ... :)
- * Coded by: Erik Kristensen
- */
-
- $dir = trim(basename($_SERVER["SCRIPT_FILENAME"]), '.php');
- $path = "{$g['www_path']}/javascript/" . $dir . "/";
- if (is_dir($path)) {
- if ($dh = opendir($path)) {
- while (($file = readdir($dh)) !== false) {
- if (is_dir($file))
- continue;
- echo "\t<script type=\"text/javascript\" src=\"/javascript/{$dir}/{$file}\"></script>\n";
- }
- closedir($dh);
- }
- }
-
-if (!isset($closehead))
- echo "</head>";
-
-/* If this page is being remotely managed then do not allow the loading of the contents. */
-if($config['remote_managed_pages']['item']) {
- foreach($config['remote_managed_pages']['item'] as $rmp) {
- if($rmp == $_SERVER['SCRIPT_NAME']) {
- include("fbegin.inc");
- print_info_box_np("This page is currently being managed by a remote machine.");
- include("fend.inc");
- exit;
- }
- }
-}
-
+<?php +/* + pfSense_MODULE: header +*/ + +/* + * if user has selected a custom template, use it. + * otherwise default to pfsense tempalte + */ +if($config['theme'] <> "") + $g['theme'] = $config['theme']; +else + $g['theme'] = "pfsense"; + +/* + * If this device is an apple ipod/iphone + * switch the theme to one that works with it. + */ +$apple_ua = array("iPhone","iPod", "iPad"); +foreach($apple_ua as $useragent) + if(strstr($_SERVER['HTTP_USER_AGENT'], $useragent)) + $g['theme'] = "pfsense"; + +$pagetitle = gentitle( $pgtitle ); + +?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html> +<head> + <title><?php echo($config['system']['hostname'] . "." . $config['system']['domain'] . " - " . $pagetitle); ?></title> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> + <link rel="apple-touch-icon" href="/themes/<?php echo $g['theme']; ?>/apple-touch-icon.png"/> + <?php if (strpos($_SERVER["SCRIPT_FILENAME"], "wizard.php") !== false && + file_exists("{$g['www_path']}/themes/{$g['theme']}/wizard.css")): ?> + <?php echo "<style type=\"text/css\" src=\"/themes/{$g['theme']}/wizard.css\"></style>"; ?> + <?php else: ?> + <link rel="stylesheet" href="/themes/<?php echo $g['theme']; ?>/all.css" media="all" /> + <?php endif; ?> + <link rel="stylesheet" type="text/css" href="/niftycssCode.css"> + <link rel="stylesheet" type="text/css" href="/niftycssprintCode.css" media="print"> + <link rel="stylesheet" type="text/css" href="/themes/<?=$g['theme']?>/new_tab_menu.css" media="all"> + <script type="text/javascript" src="/javascript/niftyjsCode.js"></script> + <script type="text/javascript"> + var theme = "<?php echo $g['theme']; ?>"; + </script> + <?php echo "\t<script type=\"text/javascript\" src=\"/themes/{$g['theme']}/loader.js\"></script>\n"; ?> +<?php + if($_GET['enablefirebuglite']) { + echo "\t<script type=\"text/javascript\" src=\"/javascript/pi.js\"></script>\n"; + echo "\t<script type=\"text/javascript\" src=\"/javascript/firebug-lite.js\"></script>\n"; + } + echo "\t<script type=\"text/javascript\" src=\"/javascript/scriptaculous/prototype.js\"></script>\n"; + echo "\t<script type=\"text/javascript\" src=\"/javascript/scriptaculous/scriptaculous.js\"></script>\n"; + echo "\t<script type=\"text/javascript\" src=\"/javascript/scriptaculous/effects.js\"></script>\n"; + echo "\t<script type=\"text/javascript\" src=\"/javascript/scriptaculous/dragdrop.js\"></script>\n"; + if(file_exists("{$g['www_path']}/javascript/global.js")) + echo "\t<script type=\"text/javascript\" src=\"/javascript/global.js\"></script>\n"; + /* + * Find all javascript files that need to be included + * for this page ... from the arrays ... :) + * Coded by: Erik Kristensen + */ + + $dir = trim(basename($_SERVER["SCRIPT_FILENAME"]), '.php'); + $path = "{$g['www_path']}/javascript/" . $dir . "/"; + if (is_dir($path)) { + if ($dh = opendir($path)) { + while (($file = readdir($dh)) !== false) { + if (is_dir($file)) + continue; + echo "\t<script type=\"text/javascript\" src=\"/javascript/{$dir}/{$file}\"></script>\n"; + } + closedir($dh); + } + } + +if (!isset($closehead)) + echo "</head>"; + +/* If this page is being remotely managed then do not allow the loading of the contents. */ +if($config['remote_managed_pages']['item']) { + foreach($config['remote_managed_pages']['item'] as $rmp) { + if($rmp == $_SERVER['SCRIPT_NAME']) { + include("fbegin.inc"); + print_info_box_np("This page is currently being managed by a remote machine."); + include("fend.inc"); + exit; + } + } +} + ?>
\ No newline at end of file diff --git a/usr/local/www/help.php b/usr/local/www/help.php index bb990b7..89a5feb 100644 --- a/usr/local/www/help.php +++ b/usr/local/www/help.php @@ -68,7 +68,7 @@ $helppages = array( 'diag_patterns.php' => 'http://doc.pfsense.org/index.php/Layer7_Pattern_Diagnostics', 'diag_ping.php' => 'http://doc.pfsense.org/index.php/Ping_Host', 'diag_pkglogs.php' => 'http://doc.pfsense.org/index.php/Package_Logs', - 'diag_showbogons.php' => 'http://doc.pfsense.org/index.php/Show_Bogons', + 'diag_tables.php' => 'http://doc.pfsense.org/index.php/Tables', 'diag_system_activity.php' => 'http://doc.pfsense.org/index.php/System_Activity', 'diag_traceroute.php' => 'http://doc.pfsense.org/index.php/Traceroute', 'easyrule.php' => 'http://doc.pfsense.org/index.php/Easy_Rule', @@ -146,7 +146,6 @@ $helppages = array( 'system_groupmanager.php' => 'http://doc.pfsense.org/index.php/Group_Manager', 'system_groupmanager_addprivs.php' => 'http://doc.pfsense.org/index.php/Group_Manager', 'system_usermanager.php' => 'http://doc.pfsense.org/index.php/User_Manager', - 'system_usermanager_addcert.php' => 'http://doc.pfsense.org/index.php/User_Manager', 'system_usermanager_addprivs.php' => 'http://doc.pfsense.org/index.php/User_Manager', 'system_usermanager_settings.php' => 'http://doc.pfsense.org/index.php/User_Manager', 'system_usermanager_settings_ldapacpicker.php' => 'http://doc.pfsense.org/index.php/User_Manager', diff --git a/usr/local/www/interfaces.php b/usr/local/www/interfaces.php index a451954..27b38e0 100755 --- a/usr/local/www/interfaces.php +++ b/usr/local/www/interfaces.php @@ -374,10 +374,17 @@ if ($_POST) { $reqdfields = explode(" ", "ipaddr subnet gateway"); $reqdfieldsn = array(gettext("IP address"),gettext("Subnet bit count"),gettext("Gateway")); do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors); + break; case "none": + if(is_array($config['virtualip']['vip'])) { + foreach ($config['virtualip']['vip'] as $vip) { + if ($vip['interface'] == $if) + $input_errors[] = gettext("This interface is referenced by VIPs please delete those before setting the interface to 'none' configuration."); + } + } case "dhcp": if (in_array($wancfg['ipaddr'], array("ppp", "pppoe", "pptp", "l2tp"))) - $input_errors[] = "You have to reassign the interface to be able to configure as {$_POST['type']}."; + $input_errors[] = gettext("You have to reassign the interface to be able to configure as {$_POST['type']}."); break; case "ppp": $reqdfields = explode(" ", "port phone"); diff --git a/usr/local/www/interfaces_groups_edit.php b/usr/local/www/interfaces_groups_edit.php index b72a442..1906a69 100755 --- a/usr/local/www/interfaces_groups_edit.php +++ b/usr/local/www/interfaces_groups_edit.php @@ -97,26 +97,30 @@ if ($_POST) { if (isset($id) && $a_ifgroups[$id] && $_POST['ifname'] != $a_ifgroups[$id]['ifname']) { - foreach ($config['filter']['rule'] as $ridx => $rule) { - if (isset($rule['floating'])) { - $rule_ifs = explode(",", $rule['interface']); - $rule_changed = false; - foreach ($rule_ifs as $rule_if_id => $rule_if) { - if ($rule_if == $a_ifgroups[$id]['ifname']) { - $rule_ifs[$rule_if_id] = $_POST['ifname']; - $rule_changed = true; + if (!empty($config['filter']) && is_array($config['filter']['rule'])) { + foreach ($config['filter']['rule'] as $ridx => $rule) { + if (isset($rule['floating'])) { + $rule_ifs = explode(",", $rule['interface']); + $rule_changed = false; + foreach ($rule_ifs as $rule_if_id => $rule_if) { + if ($rule_if == $a_ifgroups[$id]['ifname']) { + $rule_ifs[$rule_if_id] = $_POST['ifname']; + $rule_changed = true; + } } + if ($rule_changed) + $config['filter']['rule'][$ridx]['interface'] = implode(",", $rule_ifs); + } else { + if ($rule['interface'] == $a_ifgroups[$id]['ifname']) + $config['filter']['rule'][$ridx]['interface'] = $_POST['ifname']; } - if ($rule_changed) - $config['filter']['rule'][$ridx]['interface'] = implode(",", $rule_ifs); - } else { - if ($rule['interface'] == $a_ifgroups[$id]['ifname']) - $config['filter']['rule'][$ridx]['interface'] = $_POST['ifname']; } } - foreach ($config['nat']['rule'] as $ridx => $rule) { - if ($rule['interface'] == $a_ifgroups[$id]['ifname']) - $config['nat']['rule'][$ridx]['interface'] = $_POST['ifname']; + if (!empty($config['nat']) && is_array($config['nat']['rule'])) { + foreach ($config['nat']['rule'] as $ridx => $rule) { + if ($rule['interface'] == $a_ifgroups[$id]['ifname']) + $config['nat']['rule'][$ridx]['interface'] = $_POST['ifname']; + } } $omembers = explode(" ", $a_ifgroups[$id]['members']); if (count($omembers) > 0) { diff --git a/usr/local/www/javascript/row_helper.js b/usr/local/www/javascript/row_helper.js index 476602b..5e8df31 100755 --- a/usr/local/www/javascript/row_helper.js +++ b/usr/local/www/javascript/row_helper.js @@ -26,6 +26,8 @@ var addRowTo = (function() { td = d.createElement("td"); if(rowtype[i] == 'textbox') { td.innerHTML="<INPUT type='hidden' value='" + totalrows +"' name='" + rowname[i] + "_row-" + totalrows + "'></input><input size='" + rowsize[i] + "' class='formfld unknown' name='" + rowname[i] + totalrows + "' id='" + rowname[i] + totalrows + "'></input> "; + } else if(rowtype[i] == 'password') { + td.innerHTML="<INPUT type='hidden' value='" + totalrows +"' name='" + rowname[i] + "_row-" + totalrows + "'></input><input type='password' size='" + rowsize[i] + "' class='formfld pwd' name='" + rowname[i] + totalrows + "' id='" + rowname[i] + totalrows + "'></input> "; } else if(rowtype[i] == 'select') { td.innerHTML="<INPUT type='hidden' value='" + totalrows +"' name='" + rowname[i] + "_row-" + totalrows + "'></input><select size='1' name='" + rowname[i] + totalrows + "'><option value=\"32\" selected>32</option><option value=\"31\" >31</option><option value=\"30\" >30</option><option value=\"29\" >29</option><option value=\"28\" >28</option><option value=\"27\" >27</option><option value=\"26\" >26</option><option value=\"25\" >25</option><option value=\"24\" >24</option><option value=\"23\" >23</option><option value=\"22\" >22</option><option value=\"21\" >21</option><option value=\"20\" >20</option><option value=\"19\" >19</option><option value=\"18\" >18</option><option value=\"17\" >17</option><option value=\"16\" >16</option><option value=\"15\" >15</option><option value=\"14\" >14</option><option value=\"13\" >13</option><option value=\"12\" >12</option><option value=\"11\" >11</option><option value=\"10\" >10</option><option value=\"9\" >9</option><option value=\"8\" >8</option><option value=\"7\" >7</option><option value=\"6\" >6</option><option value=\"5\" >5</option><option value=\"4\" >4</option><option value=\"3\" >3</option><option value=\"2\" >2</option><option value=\"1\" >1</option></select> "; } else if(rowtype[i] == 'select_source') { diff --git a/usr/local/www/pkg_mgr_install.php b/usr/local/www/pkg_mgr_install.php index 9e9b5d7..5e17150 100755 --- a/usr/local/www/pkg_mgr_install.php +++ b/usr/local/www/pkg_mgr_install.php @@ -181,8 +181,7 @@ switch($_GET['mode']) { $static_output = ""; if($pkgtodo['name']) { update_output_window($static_output); - delete_package($pkgtodo['name'] . '-' . $pkgtodo['version'], $pkg_id); - delete_package_xml($pkgtodo['name']); + uninstall_package_from_name($pkgtodo['name']); install_package($pkgtodo['name']); $pkg_id++; } diff --git a/usr/local/www/services_dhcp.php b/usr/local/www/services_dhcp.php index 152877d..e2ce65b 100755 --- a/usr/local/www/services_dhcp.php +++ b/usr/local/www/services_dhcp.php @@ -233,7 +233,7 @@ if ($_POST) { $input_errors[] = gettext("A valid IP address must be specified for the primary/secondary NTP servers."); if (($_POST['domain'] && !is_domain($_POST['domain']))) $input_errors[] = gettext("A valid domain name must be specified for the DNS domain."); - if (($_POST['tftp'] && (!is_ipaddr($_POST['tftp']) && !is_domain($_POST['tftp'])))) + if ($_POST['tftp'] && !is_ipaddr($_POST['tftp']) && !is_domain($_POST['tftp']) && !is_URL($_POST['tftp'])) $input_errors[] = gettext("A valid IP address or hostname must be specified for the TFTP server."); if (($_POST['nextserver'] && !is_ipaddr($_POST['nextserver']))) $input_errors[] = gettext("A valid IP address must be specified for the network boot server."); diff --git a/usr/local/www/services_dhcp_edit.php b/usr/local/www/services_dhcp_edit.php index 51da0f4..cccbd2a 100755 --- a/usr/local/www/services_dhcp_edit.php +++ b/usr/local/www/services_dhcp_edit.php @@ -111,6 +111,12 @@ if ($_POST) { $_POST['mac'] = strtolower(str_replace("-", ":", $_POST['mac'])); if ($_POST['hostname']) { + preg_match("/^[0-9]/", $_POST['hostname'], $matches); + if($matches) + $input_errors[] = gettext("The hostname cannot start with a numeric character according to RFC952"); + preg_match("/\-\$/", $_POST['hostname'], $matches); + if($matches) + $input_errors[] = gettext("The hostname cannot end with a hyphen according to RFC952"); if (!is_hostname($_POST['hostname'])) { $input_errors[] = gettext("The hostname can only contain the characters A-Z, 0-9 and '-'."); } else { @@ -251,4 +257,4 @@ include("head.inc"); </form> <?php include("fend.inc"); ?> </body> -</html> +</html>
\ No newline at end of file diff --git a/usr/local/www/services_dyndns.php b/usr/local/www/services_dyndns.php index d591a20..c1a25d4 100755 --- a/usr/local/www/services_dyndns.php +++ b/usr/local/www/services_dyndns.php @@ -114,8 +114,8 @@ include("head.inc"); </td> <td class="listlr"> <?php - $types = explode(",", "DNS-O-Matic, DynDNS (dynamic),DynDNS (static),DynDNS (custom),DHS,DyNS,easyDNS,No-IP,ODS.org,ZoneEdit,Loopia,freeDNS, DNSexit, OpenDNS"); - $vals = explode(" ", "dnsomatic dyndns dyndns-static dyndns-custom dhs dyns easydns noip ods zoneedit loopia freedns dnsexit opendns"); + $types = explode(",", "DNS-O-Matic, DynDNS (dynamic),DynDNS (static),DynDNS (custom),DHS,DyNS,easyDNS,No-IP,ODS.org,ZoneEdit,Loopia,freeDNS, DNSexit, OpenDNS, Namecheap"); + $vals = explode(" ", "dnsomatic dyndns dyndns-static dyndns-custom dhs dyns easydns noip ods zoneedit loopia freedns dnsexit opendns namecheap"); $j = 0; for ($j = 0; $j < count($vals); $j++) if ($vals[$j] == $dyndns['type']) { echo htmlspecialchars($types[$j]); diff --git a/usr/local/www/services_dyndns_edit.php b/usr/local/www/services_dyndns_edit.php index 24c0267..c221e97 100644 --- a/usr/local/www/services_dyndns_edit.php +++ b/usr/local/www/services_dyndns_edit.php @@ -80,14 +80,18 @@ if ($_POST) { /* input validation */ $reqdfields = array(); $reqdfieldsn = array(); - $reqdfields = array_merge($reqdfields, explode(" ", "host username password type")); - $reqdfieldsn = array_merge($reqdfieldsn, array(gettext("Hostname"),gettext("Username"),gettext("Password"),gettext("Service type"))); + $reqdfields = array("host", "password", "type"); + $reqdfieldsn = array(gettext("Hostname"),gettext("Password"),gettext("Service type")); + if ($pconfig['type'] != "namecheap") { + $reqdfields[] = "username"; + $reqdfieldsn[] = gettext("Username"); + } do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors); if (($_POST['mx'] && !is_domain($_POST['mx']))) $input_errors[] = gettext("The MX contains invalid characters."); - if (($_POST['username'] && !is_dyndns_username($_POST['username'])) || $_POST['username'] == "") + if (($_POST['username'] && !is_dyndns_username($_POST['username'])) || (($pconfig['type'] != "namecheap") && ($_POST['username'] == ""))) $input_errors[] = gettext("The username contains invalid characters."); if (!$input_errors) { @@ -153,8 +157,8 @@ include("head.inc"); <td width="78%" class="vtable"> <select name="type" class="formselect" id="type"> <?php - $types = explode(",", "DNS-O-Matic, DynDNS (dynamic),DynDNS (static),DynDNS (custom),DHS,DyNS,easyDNS,No-IP,ODS.org,ZoneEdit,Loopia,freeDNS, DNSexit, OpenDNS"); - $vals = explode(" ", "dnsomatic dyndns dyndns-static dyndns-custom dhs dyns easydns noip ods zoneedit loopia freedns dnsexit opendns"); + $types = explode(",", "DNS-O-Matic, DynDNS (dynamic),DynDNS (static),DynDNS (custom),DHS,DyNS,easyDNS,No-IP,ODS.org,ZoneEdit,Loopia,freeDNS, DNSexit, OpenDNS, Namecheap"); + $vals = explode(" ", "dnsomatic dyndns dyndns-static dyndns-custom dhs dyns easydns noip ods zoneedit loopia freedns dnsexit opendns namecheap"); $j = 0; for ($j = 0; $j < count($vals); $j++): ?> <option value="<?=$vals[$j];?>" <?php if ($vals[$j] == $pconfig['type']) echo "selected";?>> <?=htmlspecialchars($types[$j]);?> @@ -206,6 +210,7 @@ include("head.inc"); <td width="22%" valign="top" class="vncellreq"><?=gettext("Username");?></td> <td width="78%" class="vtable"> <input name="username" type="text" class="formfld user" id="username" size="20" value="<?=htmlspecialchars($pconfig['username']);?>"> + <br/><?= gettext("Username is required for all types except Namecheap and FreeDNS.");?> </td> </tr> <tr> diff --git a/usr/local/www/status_filter_reload.php b/usr/local/www/status_filter_reload.php index 3d97c8e..0420857 100644 --- a/usr/local/www/status_filter_reload.php +++ b/usr/local/www/status_filter_reload.php @@ -50,6 +50,11 @@ if($_GET['getstatus']) { echo "|{$status}|"; exit; } +if($_GET['reloadfilter']) { + send_event("filter reload"); + header("Location: status_filter_reload.php"); + exit; +} include("head.inc"); ?> @@ -57,7 +62,9 @@ include("head.inc"); <body link="#0000CC" vlink="#0000CC" alink="#0000CC"> <?php include("fbegin.inc"); ?> - +<br/> +<a href="/status_filter_reload.php?reloadfilter=true"><input type="button" value="Reload Filter" id="reloadfilter"></a> +<br/><br/><br/> <div id="status" name="status" style="padding:5px; border:1px dashed #990000; background-color: #ffffff; color: #000000;"> <?php echo $status; ?> </div> diff --git a/usr/local/www/status_services.php b/usr/local/www/status_services.php index 536a953..cfeb959 100755 --- a/usr/local/www/status_services.php +++ b/usr/local/www/status_services.php @@ -37,7 +37,8 @@ ##|*MATCH=status_services.php* ##|-PRIV -require("guiconfig.inc"); +require_once("guiconfig.inc"); +require_once("captiveportal.inc"); require_once("service-utils.inc"); require_once("ipsec.inc"); require_once("vpn.inc"); @@ -58,9 +59,14 @@ function get_pkg_descr($package_name) { return gettext("Not available."); } -if($_GET['mode'] == "restartservice" and $_GET['service']) { +if($_GET['mode'] == "restartservice" and !empty($_GET['service'])) { switch($_GET['service']) { + case 'captiveportal': + killbypid("{$g['varrun_path']}/lighty-CaptivePortal.pid"); + captiveportal_init_webgui(); + break; case 'ntpd': + case 'openntpd': system_ntp_configure(); break; case 'bsnmpd': @@ -79,20 +85,18 @@ if($_GET['mode'] == "restartservice" and $_GET['service']) { upnp_action('restart'); break; case 'racoon': - exec("/usr/bin/killall -9 racoon"); - sleep(1); vpn_ipsec_force_reload(); break; case 'openvpn': $vpnmode = $_GET['vpnmode']; - if (($vpnmode == "server") or ($vpnmode == "client")) { + if ($vpnmode == "server" || $vpnmode == "client") { $id = $_GET['id']; - if (is_numeric($id)) { - $pidfile = $g['varrun_path'] . "/openvpn_{$vpnmode}{$id}.pid"; + $configfile = "{$g['varetc_path']}/openvpn/{$vpnmode}{$id}.conf"; + $pidfile = $g['varrun_path'] . "/openvpn_{$vpnmode}{$id}.pid"; + if (file_exists($configfile)) { killbypid($pidfile); sleep(1); - $configfile = $g['varetc_path'] . "/openvpn_{$vpnmode}{$id}.conf"; - mwexec_bg("/usr/local/sbin/openvpn --config $configfile"); + mwexec_bg("/usr/local/sbin/openvpn --config {$configfile}"); } } break; @@ -104,9 +108,13 @@ if($_GET['mode'] == "restartservice" and $_GET['service']) { sleep(5); } -if($_GET['mode'] == "startservice" and $_GET['service']) { +if($_GET['mode'] == "startservice" and !empty($_GET['service'])) { switch($_GET['service']) { + case 'captiveportal': + captiveportal_init_webgui(); + break; case 'ntpd': + case 'openntpd': system_ntp_configure(); break; case 'bsnmpd': @@ -125,18 +133,15 @@ if($_GET['mode'] == "startservice" and $_GET['service']) { upnp_action('start'); break; case 'racoon': - exec("killall -9 racoon"); - sleep(1); vpn_ipsec_force_reload(); break; case 'openvpn': $vpnmode = $_GET['vpnmode']; - if (($vpnmode == "server") or ($vpnmode == "client")) { + if (($vpnmode == "server") || ($vpnmode == "client")) { $id = $_GET['id']; - if (is_numeric($id)) { - $configfile = $g['varetc_path'] . "/openvpn_{$vpnmode}{$id}.conf"; - mwexec_bg("/usr/local/sbin/openvpn --config $configfile"); - } + $configfile = "{$g['varetc_path']}/openvpn/{$vpnmode}{$id}.conf"; + if (file_exists($configfile)) + mwexec_bg("/usr/local/sbin/openvpn --config {$configfile}"); } break; default: @@ -148,11 +153,17 @@ if($_GET['mode'] == "startservice" and $_GET['service']) { } /* stop service */ -if($_GET['mode'] == "stopservice" && $_GET['service']) { +if($_GET['mode'] == "stopservice" && !empty($_GET['service'])) { switch($_GET['service']) { + case 'captiveportal': + killbypid("{$g['varrun_path']}/lighty-CaptivePortal.pid"); + break; case 'ntpd': killbyname("ntpd"); break; + case 'openntpd': + killbyname("openntpd"); + break; case 'bsnmpd': killbypid("{$g['varrun_path']}/snmpd.pid"); break; @@ -174,9 +185,6 @@ if($_GET['mode'] == "stopservice" && $_GET['service']) { case 'miniupnpd': upnp_action('stop'); break; - case 'openntpd': - killbyname("openntpd"); - break; case 'sshd': killbyname("sshd"); break; @@ -187,22 +195,21 @@ if($_GET['mode'] == "stopservice" && $_GET['service']) { $vpnmode = $_GET['vpnmode']; if (($vpnmode == "server") or ($vpnmode == "client")) { $id = $_GET['id']; - if (is_numeric($id)) { - $pidfile = $g['varrun_path'] . "/openvpn_{$vpnmode}{$id}.pid"; - killbypid($pidfile); - } + $pidfile = "{$g['varrun_path']}/openvpn_{$vpnmode}{$id}.pid"; + killbypid($pidfile); } break; default: stop_service($_GET['service']); break; } - $savemsg = sprintf(gettext("%s has been stopped."),$_GET['service']); + $savemsg = sprintf(gettext("%s has been stopped."), $_GET['service']); sleep(5); } /* batch mode, allow other scripts to call this script */ -if($_GET['batch']) exit; +if($_GET['batch']) + exit; $pgtitle = array(gettext("Status"),gettext("Services")); include("head.inc"); @@ -231,35 +238,31 @@ include("fbegin.inc"); <?php -exec("/bin/ps ax | awk '{ print $5 }'", $psout); -array_shift($psout); -foreach($psout as $line) { - $ps[] = trim(array_pop(explode(' ', array_pop(explode('/', $line))))); -} - -$services = $config['installedpackages']['service']; +if (is_array($config['installedpackages']['service'])) + $services = $config['installedpackages']['service']; +else + $services = array(); /* Add services that are in the base. * */ if(isset($config['dnsmasq']['enable'])) { + $pconfig = array(); $pconfig['name'] = "dnsmasq"; $pconfig['description'] = gettext("DNS Forwarder"); $services[] = $pconfig; - unset($pconfig); } +$pconfig = array(); $pconfig['name'] = "ntpd"; $pconfig['description'] = gettext("NTP clock sync"); $services[] = $pconfig; -unset($pconfig); if(isset($config['captiveportal']['enable'])) { - $pconfig['name'] = "lighttpd"; + $pconfig = array(); + $pconfig['name'] = "captiveportal"; $pconfig['description'] = gettext("Captive Portal"); $services[] = $pconfig; - $pconfig = ""; - unset($pconfig); } $iflist = array(); @@ -276,75 +279,78 @@ foreach($iflist as $if) { } if($show_dhcprelay == true) { + $pconfig = array(); $pconfig['name'] = "dhcrelay"; $pconfig['description'] = gettext("DHCP Relay"); $services[] = $pconfig; - unset($pconfig); } if(is_dhcp_server_enabled()) { + $pconfig = array(); $pconfig['name'] = "dhcpd"; $pconfig['description'] = gettext("DHCP Service"); $services[] = $pconfig; - unset($pconfig); } if(isset($config['snmpd']['enable'])) { + $pconfig = array(); $pconfig['name'] = "bsnmpd"; $pconfig['description'] = gettext("SNMP Service"); $services[] = $pconfig; - unset($pconfig); } if (count($config['igmpproxy']['igmpentry']) > 0) { + $pconfig = array(); $pconfig['name'] = "igmpproxy"; $pconfig['descritption'] = gettext("IGMP proxy"); $services[] = $pconfig; - unset($pconfig); } if($config['installedpackages']['miniupnpd']['config'][0]['enable']) { + $pconfig = array(); $pconfig['name'] = "miniupnpd"; $pconfig['description'] = gettext("UPnP Service"); $services[] = $pconfig; - unset($pconfig); } if (isset($config['ipsec']['enable'])) { + $pconfig = array(); $pconfig['name'] = "racoon"; $pconfig['description'] = gettext("IPsec VPN"); $services[] = $pconfig; - unset($pconfig); } foreach (array('server', 'client') as $mode) { - if (is_array($config['installedpackages']["openvpn$mode"]['config'])) { - foreach ($config['installedpackages']["openvpn$mode"]['config'] as $id => $settings) { - $setting = $config['installedpackages']["openvpn$mode"]['config'][$id]; - if (!$setting['disable']) { + if (is_array($config['openvpn']["openvpn-{$mode}"])) { + foreach ($config['openvpn']["openvpn-{$mode}"] as $id => $setting) { + if (!isset($setting['disable'])) { + $pconfig = array(); $pconfig['name'] = "openvpn"; $pconfig['mode'] = $mode; $pconfig['id'] = $id; + $pconfig['vpnid'] = $setting['vpnid']; $pconfig['description'] = gettext("OpenVPN") . " ".$mode.": ".htmlspecialchars($setting['description']); $services[] = $pconfig; - unset($pconfig); } } } } -if($services) { +if (count($services) > 0) { foreach($services as $service) { - if(!$service['name']) continue; - if(!$service['description']) $service['description'] = get_pkg_descr($service['name']); + if (empty($service['name'])) + continue; + if (empty($service['description'])) + $service['description'] = get_pkg_descr($service['name']); echo '<tr><td class="listlr">' . $service['name'] . '</td>'; echo '<td class="listr">' . $service['description'] . '</td>'; - if ($service['name'] == "openvpn") { - $running = (is_pid_running($g['varrun_path'] . "/openvpn_{$service['mode']}{$service['id']}.pid") ); - } else { - $running = (is_service_running($service['name'], $ps) or is_process_running($service['name']) ); - } + if ($service['name'] == "openvpn") + $running = is_pid_running("{$g['varrun_path']}/openvpn_{$service['mode']}{$service['vpnid']}.pid"); + else if ($service['name'] == "captiveportal") + $running = is_pid_running("{$g['varrun_path']}/lighty-CaptivePortal.pid"); + else + $running = is_service_running($service['name']); if($running) { echo '<td class="listr"><center>'; echo "<img src=\"/themes/" . $g["theme"] . "/images/icons/icon_pass.gif\"> " . gettext("Running") . "</td>"; @@ -355,13 +361,13 @@ if($services) { echo '<td valign="middle" class="list" nowrap>'; if($running) { if ($service['name'] == "openvpn") { - echo "<a href='status_services.php?mode=restartservice&service={$service['name']}&vpnmode={$service['mode']}&id={$service['id']}'>"; + echo "<a href='status_services.php?mode=restartservice&service={$service['name']}&vpnmode={$service['mode']}&id={$service['vpnid']}'>"; } else { echo "<a href='status_services.php?mode=restartservice&service={$service['name']}'>"; } echo "<img title='" . gettext("Restart Service") . "' border='0' src='./themes/".$g['theme']."/images/icons/icon_service_restart.gif'></a> "; if ($service['name'] == "openvpn") { - echo "<a href='status_services.php?mode=stopservice&service={$service['name']}&vpnmode={$service['mode']}&id={$service['id']}'>"; + echo "<a href='status_services.php?mode=stopservice&service={$service['name']}&vpnmode={$service['mode']}&id={$service['vpnid']}'>"; } else { echo "<a href='status_services.php?mode=stopservice&service={$service['name']}'> "; } @@ -369,7 +375,7 @@ if($services) { echo "</a>"; } else { if ($service['name'] == "openvpn") { - echo "<a href='status_services.php?mode=startservice&service={$service['name']}&vpnmode={$service['mode']}&id={$service['id']}'>"; + echo "<a href='status_services.php?mode=startservice&service={$service['name']}&vpnmode={$service['mode']}&id={$service['vpnid']}'>"; } else { echo "<a href='status_services.php?mode=startservice&service={$service['name']}'> "; } @@ -389,7 +395,8 @@ if($services) { </td> </tr></table> </div> - +</p> +</form> <?php include("fend.inc"); ?> </body> </html> diff --git a/usr/local/www/system_advanced_admin.php b/usr/local/www/system_advanced_admin.php index e7ae297..e7c217b 100644 --- a/usr/local/www/system_advanced_admin.php +++ b/usr/local/www/system_advanced_admin.php @@ -62,7 +62,7 @@ $pconfig['enablesshd'] = $config['system']['enablesshd']; $pconfig['sshport'] = $config['system']['ssh']['port']; $pconfig['sshdkeyonly'] = isset($config['system']['ssh']['sshdkeyonly']); -$a_cert =& $config['system']['cert']; +$a_cert =& $config['cert']; $certs_available = false; if (is_array($a_cert) && count($a_cert)) @@ -461,7 +461,7 @@ if ($restart_sshd) { if ($config['system']['enablesshd']) { log_error(gettext("secure shell configuration has changed. Restarting sshd.")); - touch("{$g['tmp_path']}/start_sshd"); + send_event("service restart sshd"); } } if ($restart_webgui) { diff --git a/usr/local/www/system_camanager.php b/usr/local/www/system_camanager.php index 369f7b6..17f7bd8 100644 --- a/usr/local/www/system_camanager.php +++ b/usr/local/www/system_camanager.php @@ -52,15 +52,15 @@ $id = $_GET['id']; if (isset($_POST['id'])) $id = $_POST['id']; -if (!is_array($config['system']['ca'])) - $config['system']['ca'] = array(); +if (!is_array($config['ca'])) + $config['ca'] = array(); -$a_ca =& $config['system']['ca']; +$a_ca =& $config['ca']; -if (!is_array($config['system']['cert'])) - $config['system']['cert'] = array(); +if (!is_array($config['cert'])) + $config['cert'] = array(); -$a_cert =& $config['system']['cert']; +$a_cert =& $config['cert']; $act = $_GET['act']; if ($_POST['act']) diff --git a/usr/local/www/system_certmanager.php b/usr/local/www/system_certmanager.php index 4fd51e7..2f953f6 100644 --- a/usr/local/www/system_certmanager.php +++ b/usr/local/www/system_certmanager.php @@ -41,27 +41,38 @@ require("guiconfig.inc"); require_once("certs.inc"); $cert_methods = array( - "existing" => gettext("Import an existing Certificate"), + "import" => gettext("Import an existing Certificate"), "internal" => gettext("Create an internal Certificate"), - "external" => gettext("Create a Certificate Signing Request")); + "external" => gettext("Create a Certificate Signing Request"), +); $cert_keylens = array( "512", "1024", "2048", "4096"); $pgtitle = array(gettext("System"), gettext("Certificate Manager")); +$userid = $_GET['userid']; +if (isset($_POST['userid'])) + $userid = $_POST['userid']; +if ($userid) { + $cert_methods["existing"] = gettext("Choose an existing certificate"); + if (!is_array($config['system']['user'])) + $config['system']['user'] = array(); + $a_user =& $config['system']['user']; +} + $id = $_GET['id']; if (isset($_POST['id'])) $id = $_POST['id']; -if (!is_array($config['system']['ca'])) - $config['system']['ca'] = array(); +if (!is_array($config['ca'])) + $config['ca'] = array(); -$a_ca =& $config['system']['ca']; +$a_ca =& $config['ca']; -if (!is_array($config['system']['cert'])) - $config['system']['cert'] = array(); +if (!is_array($config['cert'])) + $config['cert'] = array(); -$a_cert =& $config['system']['cert']; +$a_cert =& $config['cert']; $internal_ca_count = 0; foreach ($a_ca as $ca) @@ -139,14 +150,12 @@ if ($act == "csr") { } if ($_POST) { - if ($_POST['save'] == gettext("Save")) { - unset($input_errors); $pconfig = $_POST; /* input validation */ - if ($pconfig['method'] == "existing") { + if ($pconfig['method'] == "import") { $reqdfields = explode(" ", "name cert key"); $reqdfieldsn = array( @@ -187,6 +196,11 @@ if ($_POST) { gettext("Distinguished name Common Name")); } + if ($pconfig['method'] == "existing") { + $reqdfields = array("certref"); + $reqdfieldsn = array(gettext("Existing Certificate Choice")); + } + do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors); /* if this is an AJAX caller then handle via JSON */ @@ -198,49 +212,57 @@ if ($_POST) { /* save modifications */ if (!$input_errors) { - $cert = array(); - $cert['refid'] = uniqid(); - if (isset($id) && $a_cert[$id]) - $cert = $a_cert[$id]; - - $cert['name'] = $pconfig['name']; - - if ($pconfig['method'] == "existing") - cert_import($cert, $pconfig['cert'], $pconfig['key']); - - if ($pconfig['method'] == "internal") { - $dn = array( - 'countryName' => $pconfig['dn_country'], - 'stateOrProvinceName' => $pconfig['dn_state'], - 'localityName' => $pconfig['dn_city'], - 'organizationName' => $pconfig['dn_organization'], - 'emailAddress' => $pconfig['dn_email'], - 'commonName' => $pconfig['dn_commonname']); - - cert_create($cert, $pconfig['caref'], $pconfig['keylen'], - $pconfig['lifetime'], $dn); - } - - if ($pconfig['method'] == "external") { - $dn = array( - 'countryName' => $pconfig['csr_dn_country'], - 'stateOrProvinceName' => $pconfig['csr_dn_state'], - 'localityName' => $pconfig['csr_dn_city'], - 'organizationName' => $pconfig['csr_dn_organization'], - 'emailAddress' => $pconfig['csr_dn_email'], - 'commonName' => $pconfig['csr_dn_commonname']); - - csr_generate($cert, $pconfig['csr_keylen'], $dn); + if ($pconfig['method'] == "existing") { + $cert = lookup_cert($pconfig['certref']); + if ($cert && $a_user) + $a_user[$userid]['cert'][] = $cert['refid']; + } else { + $cert = array(); + $cert['refid'] = uniqid(); + if (isset($id) && $a_cert[$id]) + $cert = $a_cert[$id]; + + $cert['name'] = $pconfig['name']; + + if ($pconfig['method'] == "import") + cert_import($cert, $pconfig['cert'], $pconfig['key']); + + if ($pconfig['method'] == "internal") { + $dn = array( + 'countryName' => $pconfig['dn_country'], + 'stateOrProvinceName' => $pconfig['dn_state'], + 'localityName' => $pconfig['dn_city'], + 'organizationName' => $pconfig['dn_organization'], + 'emailAddress' => $pconfig['dn_email'], + 'commonName' => $pconfig['dn_commonname']); + + cert_create($cert, $pconfig['caref'], $pconfig['keylen'], + $pconfig['lifetime'], $dn); + } + + if ($pconfig['method'] == "external") { + $dn = array( + 'countryName' => $pconfig['csr_dn_country'], + 'stateOrProvinceName' => $pconfig['csr_dn_state'], + 'localityName' => $pconfig['csr_dn_city'], + 'organizationName' => $pconfig['csr_dn_organization'], + 'emailAddress' => $pconfig['csr_dn_email'], + 'commonName' => $pconfig['csr_dn_commonname']); + + csr_generate($cert, $pconfig['csr_keylen'], $dn); + } + if (isset($id) && $a_cert[$id]) + $a_cert[$id] = $cert; + else + $a_cert[] = $cert; + if (isset($a_user) && isset($userid)) + $a_user[$userid]['cert'][] = $cert['refid']; } - if (isset($id) && $a_cert[$id]) - $a_cert[$id] = $cert; - else - $a_cert[] = $cert; - write_config(); -// pfSenseHeader("system_certmanager.php"); + if ($userid) + pfSenseHeader("system_usermanager.php?act=edit&id={$userid}"); } } @@ -308,21 +330,35 @@ function method_change() { switch (method) { case 0: - document.getElementById("existing").style.display=""; + document.getElementById("import").style.display=""; document.getElementById("internal").style.display="none"; document.getElementById("external").style.display="none"; + document.getElementById("existing").style.display="none"; + document.getElementById("descriptivename").style.display=""; document.getElementById("submit").style.display=""; break; case 1: - document.getElementById("existing").style.display="none"; + document.getElementById("import").style.display="none"; document.getElementById("internal").style.display=""; document.getElementById("external").style.display="none"; + document.getElementById("existing").style.display="none"; + document.getElementById("descriptivename").style.display=""; document.getElementById("submit").style.display="<?=$submit_style;?>"; break; case 2: - document.getElementById("existing").style.display="none"; + document.getElementById("import").style.display="none"; document.getElementById("internal").style.display="none"; document.getElementById("external").style.display=""; + document.getElementById("existing").style.display="none"; + document.getElementById("descriptivename").style.display=""; + document.getElementById("submit").style.display=""; + break; + case 3: + document.getElementById("import").style.display="none"; + document.getElementById("internal").style.display="none"; + document.getElementById("external").style.display="none"; + document.getElementById("existing").style.display=""; + document.getElementById("descriptivename").style.display="none"; document.getElementById("submit").style.display=""; break; } @@ -346,6 +382,7 @@ function internalca_change() { document.iform.dn_state.value = "<?=$subject[1]['v'];?>"; document.iform.dn_city.value = "<?=$subject[2]['v'];?>"; document.iform.dn_organization.value = "<?=$subject[3]['v'];?>"; + document.iform.dn_email.value = "<?=$subject[4]['v'];?>"; break; <?php endforeach; ?> } @@ -379,12 +416,6 @@ function internalca_change() { <form action="system_certmanager.php" method="post" name="iform" id="iform"> <table width="100%" border="0" cellpadding="6" cellspacing="0"> - <tr> - <td width="22%" valign="top" class="vncellreq"><?=gettext("Descriptive name");?></td> - <td width="78%" class="vtable"> - <input name="name" type="text" class="formfld unknown" id="name" size="20" value="<?=htmlspecialchars($pconfig['name']);?>"/> - </td> - </tr> <?php if (!isset($id)): ?> <tr> <td width="22%" valign="top" class="vncellreq"><?=gettext("Method");?></td> @@ -402,14 +433,24 @@ function internalca_change() { </td> </tr> <?php endif; ?> + <tr id="descriptivename"> + <?php + if ($a_user && empty($pconfig['name'])) + $pconfig['name'] = $a_user[$userid]['name']; + ?> + <td width="22%" valign="top" class="vncellreq"><?=gettext("Descriptive name");?></td> + <td width="78%" class="vtable"> + <input name="name" type="text" class="formfld unknown" id="name" size="20" value="<?=htmlspecialchars($pconfig['name']);?>"/> + </td> + </tr> </table> - <table width="100%" border="0" cellpadding="6" cellspacing="0" id="existing"> + <table width="100%" border="0" cellpadding="6" cellspacing="0" id="import"> <tr> <td colspan="2" class="list" height="12"></td> </tr> <tr> - <td colspan="2" valign="top" class="listtopic"><?=gettext("Existing Certificate");?></td> + <td colspan="2" valign="top" class="listtopic"><?=gettext("Import Certificate");?></td> </tr> <tr> @@ -531,6 +572,10 @@ function internalca_change() { <tr> <td align="right"><?=gettext("Common Name");?> : </td> <td align="left"> + <?php + if ($a_user && empty($pconfig['dn_commonname'])) + $pconfig['dn_commonname'] = $a_user[$userid]['name']; + ?> <input name="dn_commonname" type="text" class="formfld unknown" size="25" value="<?=htmlspecialchars($pconfig['dn_commonname']);?>"/> <em>ex:</em> @@ -640,6 +685,42 @@ function internalca_change() { </tr> </table> + <table width="100%" border="0" cellpadding="6" cellspacing="0" id="existing"> + <tr> + <td colspan="2" class="list" height="12"></td> + </tr> + <tr> + <td colspan="2" valign="top" class="listtopic"><?=gettext("Choose an Existing Certificate");?></td> + </tr> + <tr> + <td width="22%" valign="top" class="vncellreq"><?=gettext("Existing Certificates");?></td> + <td width="78%" class="vtable"> + <?php if (isset($userid) && $a_user): ?> + <input name="userid" type="hidden" value="<?=$userid;?>" /> + <?php endif;?> + <select name='certref' class="formselect"> + <?php + foreach ($config['cert'] as $cert): + $selected = ""; + $caname = ""; + $inuse = ""; + if (in_array($cert['refid'], $config['system']['user'][$userid]['cert'])) + continue; + $ca = lookup_ca($cert['caref']); + if ($ca) + $caname = " (CA: {$ca['name']})"; + if ($pconfig['certref'] == $cert['refid']) + $selected = "selected"; + if (cert_in_use($cert['refid'])) + $inuse = " *In Use"; + ?> + <option value="<?=$cert['refid'];?>" <?=$selected;?>><?=$cert['name'] . $caname . $inuse;?></option> + <?php endforeach; ?> + </select> + </td> + </tr> + </table> + <table width="100%" border="0" cellpadding="6" cellspacing="0"> <tr> <td width="22%" valign="top"> </td> @@ -703,9 +784,10 @@ function internalca_change() { <table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr> - <td width="20%" class="listhdrr"><?=gettext("Name");?></td> - <td width="20%" class="listhdrr"><?=gettext("Issuer");?></td> + <td width="15%" class="listhdrr"><?=gettext("Name");?></td> + <td width="15%" class="listhdrr"><?=gettext("Issuer");?></td> <td width="40%" class="listhdrr"><?=gettext("Distinguished Name");?></td> + <td width="10%" class="listhdrr"><?=gettext("In Use");?></td> <td width="10%" class="list"></td> </tr> <?php @@ -752,6 +834,23 @@ function internalca_change() { </td> <td class="listr"><?=$caname;?> </td> <td class="listr"><?=$subj;?> </td> + <td class="listr"> + <?php if (is_webgui_cert($cert['refid'])): ?> + webConfigurator<br/> + <?php endif; ?> + <?php if (is_user_cert($cert['refid'])): ?> + User Cert<br/> + <?php endif; ?> + <?php if (is_openvpn_server_cert($cert['refid'])): ?> + OpenVPN Server<br/> + <?php endif; ?> + <?php if (is_openvpn_client_cert($cert['refid'])): ?> + OpenVPN Client<br/> + <?php endif; ?> + <?php if (is_ipsec_cert($cert['refid'])): ?> + IPsec Tunnel<br/> + <?php endif; ?> + </td> <td valign="middle" nowrap class="list"> <a href="system_certmanager.php?act=exp&id=<?=$i;?>"> <img src="/themes/<?= $g['theme'];?>/images/icons/icon_down.gif" title="<?=gettext("export cert");?>" alt="<?=gettext("export ca");?>" width="17" height="17" border="0" /> @@ -759,9 +858,11 @@ function internalca_change() { <a href="system_certmanager.php?act=key&id=<?=$i;?>"> <img src="/themes/<?= $g['theme'];?>/images/icons/icon_down.gif" title="<?=gettext("export key");?>" alt="<?=gettext("export ca");?>" width="17" height="17" border="0" /> </a> + <?php if (!cert_in_use($cert['refid'])): ?> <a href="system_certmanager.php?act=del&id=<?=$i;?>" onclick="return confirm('<?=gettext("Do you really want to delete this Certificate?");?>')"> <img src="/themes/<?= $g['theme'];?>/images/icons/icon_x.gif" title="<?=gettext("delete cert");?>" alt="<?=gettext("delete cert");?>" width="17" height="17" border="0" /> </a> + <?php endif; ?> <?php if ($cert['csr']): ?> <a href="system_certmanager.php?act=csr&id=<?=$i;?>"> @@ -775,13 +876,17 @@ function internalca_change() { endforeach; ?> <tr> - <td class="list" colspan="3"></td> + <td class="list" colspan="4"></td> <td class="list"> <a href="system_certmanager.php?act=new"> <img src="/themes/<?= $g['theme'];?>/images/icons/icon_plus.gif" title="<?=gettext("add or import ca");?>" alt="<?=gettext("add ca");?>" width="17" height="17" border="0" /> </a> </td> </tr> + <tr> + <td> </td> + <td colspan="3">NOTE: You can only delete a certificate if it is not currently in use.</td> + </tr> </table> <?php endif; ?> diff --git a/usr/local/www/system_routes.php b/usr/local/www/system_routes.php index 454e613..84f5de0 100755 --- a/usr/local/www/system_routes.php +++ b/usr/local/www/system_routes.php @@ -59,6 +59,14 @@ if ($_POST) { $retval = 0; + if (file_exists("{$g['tmp_path']}/.system_routes.apply")) { + $toapplylist = unserialize(file_get_contents("{$g['tmp_path']}/.system_routes.apply")); + foreach ($toapplylist as $toapply) + mwexec("{$toapply}"); + + @unlink("{$g['tmp_path']}/.system_routes.apply"); + } + $retval = system_routing_configure(); $retval |= filter_configure(); /* reconfigure our gateway monitor */ @@ -92,7 +100,6 @@ if ($_GET['act'] == "del") { mwexec("/sbin/route delete " . escapeshellarg($a_routes[$_GET['id']]['network'])); unset($a_routes[$_GET['id']]); write_config($changedesc); - mark_subsystem_dirty('staticroutes'); header("Location: system_routes.php"); exit; } diff --git a/usr/local/www/system_routes_edit.php b/usr/local/www/system_routes_edit.php index af50af2..9895d0e 100755 --- a/usr/local/www/system_routes_edit.php +++ b/usr/local/www/system_routes_edit.php @@ -1,5 +1,4 @@ <?php -/* $Id$ */ /* system_routes_edit.php part of m0n0wall (http://m0n0.ch/wall) @@ -122,10 +121,23 @@ if ($_POST) { $route['gateway'] = $_POST['gateway']; $route['descr'] = $_POST['descr']; - if (isset($id) && $a_routes[$id]) - $a_routes[$id] = $route; - else - $a_routes[] = $route; + if (!isset($id)) + $id = count($a_routes); + if (file_exists("{$g['tmp_path']}/.system_routes.apply")) + $toapplylist = unserialize(file_get_contents("{$g['tmp_path']}/.system_routes.apply")); + else + $toapplylist = array(); + $oroute = $a_routes[$id]; + + $a_routes[$id] = $route; + + if (!empty($oroute)) { + $osn = explode('/', $oroute['network']); + $sn = explode('/', $route['network']); + if ($oroute['network'] <> $route['network']) + $toapplylist[] = "/sbin/route delete {$oroute['network']}"; + } + file_put_contents("{$g['tmp_path']}/.system_routes.apply", serialize($toapplylist)); staticroutes_sort(); mark_subsystem_dirty('staticroutes'); diff --git a/usr/local/www/system_usermanager.php b/usr/local/www/system_usermanager.php index 746cf37..0527594 100644 --- a/usr/local/www/system_usermanager.php +++ b/usr/local/www/system_usermanager.php @@ -100,7 +100,7 @@ if (isAllowedPage("system_usermanager")) { exit; } - $cert =& $a_user[$id]['cert'][$_GET['certid']]; + $cert =& lookup_cert($a_user[$id]['cert'][$_GET['certid']]); $exp_name = urlencode("{$a_user[$id]['name']}-{$cert['name']}.crt"); $exp_data = base64_decode($cert['crt']); @@ -120,7 +120,7 @@ if (isAllowedPage("system_usermanager")) { exit; } - $cert =& $a_user[$id]['cert'][$_GET['certid']]; + $cert =& lookup_cert($a_user[$id]['cert'][$_GET['certid']]); $exp_name = urlencode("{$a_user[$id]['name']}-{$cert['name']}.key"); $exp_data = base64_decode($cert['prv']); @@ -140,12 +140,13 @@ if (isAllowedPage("system_usermanager")) { exit; } - $certdeleted = $a_user[$id]['cert'][$_GET['certid']]['name']; + $certdeleted = lookup_cert($a_user[$id]['cert'][$_GET['certid']]); + $certdeleted = $certdeleted['name']; unset($a_user[$id]['cert'][$_GET['certid']]); write_config(); $_GET['act'] = "edit"; $savemsg = gettext("Certificate")." {$certdeleted} ". - gettext("successfully deleted")."<br/>"; + gettext("association removed.")."<br/>"; } if ($_GET['act'] == "edit") { @@ -298,6 +299,7 @@ if (isAllowedPage("system_usermanager")) { else { if (!empty($_POST['name'])) { $cert = array(); + $cert['refid'] = uniqid(); $userent['cert'] = array(); $cert['name'] = $_POST['name']; @@ -315,7 +317,10 @@ if (isAllowedPage("system_usermanager")) { cert_create($cert, $_POST['caref'], $_POST['keylen'], (int)$_POST['lifetime'], $dn); - $userent['cert'][] = $cert; + if (!is_array($config['cert'])) + $config['cert'] = array(); + $config['cert'][] = $cert; + $userent['cert'][] = $cert['refid']; } $userent['uid'] = $config['system']['nextuid']++; /* Add the user to All Users group. */ @@ -633,8 +638,9 @@ function sshkeyClicked(obj) { $a_cert = $a_user[$id]['cert']; if(is_array($a_cert)): $i = 0; - foreach ($a_cert as $cert): - $ca = lookup_ca($cert['caref']); + foreach ($a_cert as $certref): + $cert = lookup_cert($certref); + $ca = lookup_ca($cert['caref']); ?> <tr> <td class="listlr"> @@ -650,7 +656,7 @@ function sshkeyClicked(obj) { <a href="system_usermanager.php?act=expcert&id=<?=$id;?>&certid=<?=$i;?>"> <img src="/themes/<?= $g['theme'];?>/images/icons/icon_down.gif" title="<?=gettext("export cert"); ?>" alt="<?=gettext("export cert"); ?>" width="17" height="17" border="0" /> </a> - <a href="system_usermanager.php?act=delcert&id=<?=$id?>&certid=<?=$i;?>" onclick="return confirm('<?=gettext("Do you really want to delete this certificate?");?>')"> + <a href="system_usermanager.php?act=delcert&id=<?=$id?>&certid=<?=$i;?>" onclick="return confirm('<?=gettext("Do you really want to remove this certificate association?") .'\n'. gettext("(Certificate will not be deleted)");?>')"> <img src="/themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" border="0" alt="<?=gettext("delete cert");?>" /> </a> </td> @@ -663,7 +669,7 @@ function sshkeyClicked(obj) { <tr> <td class="list" colspan="2"></td> <td class="list"> - <a href="system_usermanager_addcert.php?userid=<?=$id?>"> + <a href="system_certmanager.php?act=new&userid=<?=$id?>"> <img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0" alt="" /> </a> </td> @@ -673,8 +679,8 @@ function sshkeyClicked(obj) { </tr> <?php else : ?> - <?php if (is_array($config['system']['ca']) && count($config['system']['ca']) > 0): ?> - <?php $i = 0; foreach( $config['system']['ca'] as $ca) { + <?php if (is_array($config['ca']) && count($config['ca']) > 0): ?> + <?php $i = 0; foreach( $config['ca'] as $ca) { if (!$ca['prv']) continue; $i++; @@ -705,7 +711,7 @@ function sshkeyClicked(obj) { <td width="78%" class="vtable"> <select name='caref' id='caref' class="formselect" onChange='internalca_change()'> <?php - foreach( $config['system']['ca'] as $ca): + foreach( $config['ca'] as $ca): if (!$ca['prv']) continue; ?> diff --git a/usr/local/www/system_usermanager_addcert.php b/usr/local/www/system_usermanager_addcert.php deleted file mode 100644 index d48e4ad..0000000 --- a/usr/local/www/system_usermanager_addcert.php +++ /dev/null @@ -1,289 +0,0 @@ -<?php -/* - system_usermanager_addcert.php - - Copyright (C) 2008 Shrew Soft Inc. - 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. -*/ -/* - pfSense_MODULE: certificate_manager -*/ - -##|+PRIV -##|*IDENT=page-system-usermanager_addcert -##|*NAME=System: User Manager: Add Certificate -##|*DESCR=Allow access to the 'User Manager: Add Certificate' page. -##|*MATCH=system_usermanager_addcert.php* -##|-PRIV - -require("guiconfig.inc"); -require("certs.inc"); - -$cert_keylens = array( "512", "1024", "2048", "4096"); - -$pgtitle = array(gettext("System"), gettext("User Manager: Add Certificate")); - -$userid = $_GET['userid']; -if (isset($_POST['userid'])) - $userid = $_POST['userid']; - -if (!is_array($config['system']['user'])) - $config['system']['user'] = array(); - -$a_user =& $config['system']['user']; - -if (!is_array($config['system']['ca'])) - $config['system']['ca'] = array(); - -$a_ca =& $config['system']['ca']; - -$internal_ca_count = 0; -foreach ($a_ca as $ca) - if ($ca['prv']) - $internal_ca_count++; - -if ($_GET) { - $pconfig['keylen'] = "2048"; - $pconfig['lifetime'] = "3650"; -} - -if ($_POST) { - conf_mount_rw(); - - unset($input_errors); - $pconfig = $_POST; - - /* input validation */ - if ($pconfig['method'] == "existing") { - $reqdfields = explode(" ", - "name cert key"); - $reqdfieldsn = array( - gettext("Descriptive name"), - gettext("Certificate data"), - gettext("Key data")); - } - - if ($pconfig['method'] == "internal") { - $reqdfields = explode(" ", - "name caref keylen lifetime"); - $reqdfieldsn = array( - gettext("Descriptive name"), - gettext("Certificate authority"), - gettext("Key length"), - gettext("Lifetime")); - } - - do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors); - - $ca = lookup_ca($pconfig['caref']); - if (!$ca) - $input_errors[] = sprintf(gettext("Invalid internal Certificate Authority%s"),"\n"); - - /* if this is an AJAX caller then handle via JSON */ - if (isAjax() && is_array($input_errors)) { - input_errors2Ajax($input_errors); - conf_mount_ro(); - exit; - } - - /* save modifications */ - if (!$input_errors) { - - $cert = array(); - if (!is_array($a_user[$userid]['cert'])) - $a_user[$userid]['cert'] = array(); - - $cert['name'] = $pconfig['name']; - - $subject = cert_get_subject_array($ca['crt']); - - $dn = array( - 'countryName' => $subject[0]['v'], - 'stateOrProvinceName' => $subject[1]['v'], - 'localityName' => $subject[2]['v'], - 'organizationName' => $subject[3]['v'], - 'emailAddress' => $subject[4]['v'], - 'commonName' => $a_user[$userid]['name']); - - cert_create($cert, $pconfig['caref'], $pconfig['keylen'], - $pconfig['lifetime'], $dn); - - $a_user[$userid]['cert'][] = $cert; - - write_config(); - - conf_mount_ro(); - - pfSenseHeader("system_usermanager.php?act=edit&id={$userid}"); - } -} - -include("head.inc"); -?> - -<body link="#000000" vlink="#000000" alink="#000000" onload="<?= $jsevents["body"]["onload"] ?>"> -<?php include("fbegin.inc"); ?> -<script type="text/javascript"> -<!-- - -<?php if ($internal_ca_count): ?> -function internalca_change() { - - index = document.iform.caref.selectedIndex; - caref = document.iform.caref[index].value; - - switch (caref) { -<?php - foreach ($a_ca as $ca): - if (!$ca['prv']) - continue; - $subject = cert_get_subject_array($ca['crt']); -?> - case "<?=$ca['refid'];?>": - document.iform.dn_country.value = "<?=$subject[0]['v'];?>"; - document.iform.dn_state.value = "<?=$subject[1]['v'];?>"; - document.iform.dn_city.value = "<?=$subject[2]['v'];?>"; - document.iform.dn_organization.value = "<?=$subject[3]['v'];?>"; - break; -<?php endforeach; ?> - } -} -<?php endif; ?> - -//--> -</script> -<?php - if ($input_errors) - print_input_errors($input_errors); - if ($savemsg) - print_info_box($savemsg); -?> -<table width="100%" border="0" cellpadding="0" cellspacing="0"> - <tr> - <td> - <?php - $tab_array = array(); - $tab_array[] = array(gettext("Users"), true, "system_usermanager.php"); - $tab_array[] = array(gettext("Groups"), false, "system_groupmanager.php"); - $tab_array[] = array(gettext("Settings"), false, "system_usermanager_settings.php"); - $tab_array[] = array(gettext("Servers"), false, "system_authservers.php"); - display_top_tabs($tab_array); - ?> - </td> - </tr> - <tr> - <td id="mainarea"> - <div class="tabcont"> - <form action="system_usermanager_addcert.php" method="post" name="iform" id="iform"> - <table width="100%" border="0" cellpadding="6" cellspacing="0"> - - <?php if (!$internal_ca_count): ?> - - <tr> - <td colspan="2" align="center" class="vtable"> - <?=gettext("No internal Certificate Authorities have been defined. You must");?> - <a href="system_camanager.php?act=new&method=internal"><?=gettext("create");?></a> - <?=gettext("an internal CA before creating an internal certificate.");?> - </td> - </tr> - - <?php else: ?> - - <tr> - <td width="22%" valign="top" class="vncellreq"><?=gettext("Descriptive name");?></td> - <td width="78%" class="vtable"> - <input name="name" type="text" class="formfld unknown" id="name" size="20" value="<?=htmlspecialchars($pconfig['name']);?>"/> - </td> - </tr> - <tr> - <td width="22%" valign="top" class="vncellreq"><?=gettext("Certificate authority");?></td> - <td width="78%" class="vtable"> - <select name='caref' id='caref' class="formselect" onChange='internalca_change()'> - <?php - foreach( $a_ca as $ca): - if (!$ca['prv']) - continue; - $selected = ""; - if ($pconfig['caref'] == $ca['refid']) - $selected = "selected"; - ?> - <option value="<?=$ca['refid'];?>"<?=$selected;?>><?=$ca['name'];?></option> - <?php endforeach; ?> - </select> - </td> - </tr> - <tr> - <td width="22%" valign="top" class="vncellreq"><?=gettext("Key length");?></td> - <td width="78%" class="vtable"> - <select name='keylen' class="formselect"> - <?php - foreach( $cert_keylens as $len): - $selected = ""; - if ($pconfig['keylen'] == $len) - $selected = "selected"; - ?> - <option value="<?=$len;?>"<?=$selected;?>><?=$len;?></option> - <?php endforeach; ?> - </select> - <?=gettext("bits");?> - </td> - </tr> - <tr> - <td width="22%" valign="top" class="vncellreq"><?=gettext("Lifetime");?></td> - <td width="78%" class="vtable"> - <input name="lifetime" type="text" class="formfld unknown" id="lifetime" size="5" value="<?=htmlspecialchars($pconfig['lifetime']);?>"/> - <?=gettext("days");?> - </td> - </tr> - - <?php endif; ?> - - <tr> - <td width="22%" valign="top"> </td> - <td width="78%"> - <?php if ($internal_ca_count): ?> - <input id="submit" name="save" type="submit" class="formbtn" value="<?=gettext("Save");?>" /> - <input id="cancelbutton" class="formbtn" type="button" value="<?=gettext("Cancel");?>" onclick="history.back()" /> - <?php endif; ?> - <?php if (isset($userid) && $a_user[$userid]): ?> - <input name="userid" type="hidden" value="<?=$userid;?>" /> - <?php endif;?> - </td> - </tr> - </table> - </form> - </div> - </td> - </tr> -</table> -<?php include("fend.inc");?> -<script type="text/javascript"> -<!-- - -internalca_change(); - -//--> -</script> - -</body> diff --git a/usr/local/www/themes/code-red/all.css b/usr/local/www/themes/code-red/all.css index 92d4425..516598f 100755 --- a/usr/local/www/themes/code-red/all.css +++ b/usr/local/www/themes/code-red/all.css @@ -1,1241 +1,1241 @@ -/* Element CSS Definitions */
-html, body, td, th, input, select {
- font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
- font-size: 0.9em;
-
-}
-
-.infobox {
- width:100%;
-}
-
-.infoboxsave {
- padding-right: 10px;
-}
-
-.infoboxnptd2 {
- width:100%;
- color:white;
- background-color:#990000;
- padding-right: 10px;
-}
-
-.infoboxnptd {
- width:8%;
- background-color:#990000;
-}
-
-.infoboxnptable {
- height:32px;
- width:100%;
- background-color:#990000;
-}
-
-.infoboxnptable2 {
- height:32px;
- width:100%;
- background-color:#990000;
-}
-
-.infoboxnp {
- background-color:#990000;
- width:100%;
-}
-
-.infoboxnpimg {
- vertical-align:middle;
- width:28px;
- height:32px;
- background-color:#990000;
-}
-
-.inputerrorsleft {
- background-color: #990000;
- width: 36px;
-}
-
-.inputerrorsright {
- background-color: #FFD9D1;
- color: #000000;
- font-size: 11px;
- padding-left: 8px;
- padding-top: 6px;
-}
-
-div.GraphLink {
- position: relative;
-}
-
-span.GraphLinkLine {
- position: absolute;
- background-color: #990000;
- width: 100%;
-}
-
-/* DOM Tooltip CSS definitions */
-div.niceTitle
-{
- background-color: #333333;
- color: #FFFFFF;
- font-weight: bold;
- font-size: 13px;
- font-family: "Trebuchet MS", sans-serif;
- width: 220px;
- left: 0;
- top: 0;
- padding: 4px;
- position: absolute;
- text-align: left;
- z-index: 20;
- -moz-border-radius: 0 10px 10px 10px;
- filter: progid:DXImageTransform.Microsoft.Alpha(opacity=87);
- -moz-opacity: .87;
- -khtml-opacity: .87;
- opacity: .87;
-}
-div.niceTitle h1
-{
- background: #990000;
- border-bottom: 1px dotted #FFFFFF;
- font-weight: bold;
- font-size: 13px;
- font-family: "Trebuchet MS", sans-serif;
- margin: 3px;
- padding-top: 1px;
- padding-bottom: 1px;
- padding-left: 3px;
- text-align: left;
- left: 0;
- top: 0;
- -moz-border-radius: 0 8px 0 0;
- -moz-opacity: 1;
-}
-div.niceTitle .contents
-{
- margin: 0;
- padding: 0 3px;
- filter: progid:DXImageTransform.Microsoft.Alpha(opacity=100);
- -moz-opacity: 1;
- -khtml-opacity: 1;
- opacity: 1;
-}
-div.niceTitle p
-{
- background: #FFFFFF;
- border: 1px solid #990000;
- color: #000000;
- font-size: 11px;
- font-family: "Trebuchet MS", sans-serif;
- padding: 5px;
- margin: 3px;
- text-align: left;
- -moz-opacity: 1;
- -moz-border-radius: 0 0 8px 8px;
-}
-
-body {
- margin: 0px auto;
- background: url('images/background.gif') no-repeat;
- background-position : center 0px;
- background-color: #4a0203;
-}
-
-form {
- margin: 0px;
-}
-a {
- text-decoration: none;
-}
-form input {
- font-size: 1.1em;
-}
-
-iframe {
- z-index: 1;
- border: 1px dashed #990000;
-}
-.iframe {
- background-color: #FFFFFF;
-}
-
-/* ID Based CSS Definitions */
-#wrapper {
- width: 810px;
- margin: 0px auto;
-}
-
-#header {
- background: url('images/header.png') no-repeat;
- background-position: 0px;
- height: 102px;
- width: 810px;
- margin-bottom: 5px;
- z-index: 2;
-}
-#header-left {
- position: relative;
- /* background: url('images/logo.gif') no-repeat; */
- background-position: center;
- height: 65px;
- width: 145px;
- left: 10px;
- float: left;
-}
-#header-left #status-link {
- position: relative;
- top: 10px;
- left: 6px;
-}
-#header-right {
- position: relative;
- /* background: url('images/header.gif') no-repeat; */
- height: 70px;
- color: #fff;
- left: 0px;
- margin-left: 165px;
-}
-#header-right .alert {
- position: relative;
- /* background: url('images/alert.gif') no-repeat; */
- background-position: 4px 2px;
- color: #fff;
- height: 17px;
- width: 500px;
- padding: 4px;
- padding-left: 27px;
- float: left;
-}
-#header-right .container {
- position: relative;
-}
-#header-right .container .left {
- position: relative;
- float: left;
- font-size: 1.3em;
- font-weight: bold;
- top: 15px;
- left: 4px;
- display: none;
-}
-#header-right .container .right {
- position: relative;
- float: right;
- top: 29px;
- padding-right: 4px;
- z-index: 1;
-}
-
-#header-right .container .right #alerts {
- position: relative;
- background: url('images/alert_bgr.png') no-repeat;
- height: 39px;
- width: 431px;
- z-index: 1;
- padding-top: 22px;
- padding-left: 5px;
- margin: 0px;
-}
-#header-right .container .right #hostname {
- position: relative;
- height: 39px;
- width: 431px;
- z-index: 1;
- padding-left: 5px;
- margin: 0px;
- top: 15px;
- left: 210px;
- font-size: 14px;
- color: #990000;
- font-weight: bold;
-}
-
-
-
-table#marquee {
- position: relative;
- top: -6px;
- left: -5px;
- border: 0;
- padding: 0;
- margin: 0;
- width: 424px;
- background-color: transparent;
- padding: 2px;
- border: 0px;
-}
-span#marquee-container {
- position: absolute;
- visibility: hidden;
- top: -100px;
- left: -10000px;
-}
-div#marquee-text {
- font-size: 1.18em;
- font-weight: normal;
- font-family: Verdana;
- color: #990000;
-}
-table#marquee div#container {
- position: relative;
- overflow: hidden;
- width: 418px;
- height: 20px;
-}
-table#marquee div#container div#scroller {
- position: absolute;
- left: 0px;
- top: 0px;
-}
-
-
-
-
-
-#content {
- position: relative;
- top: -5px;
- left: 0px;
- margin-top: 0px;
- margin-left: 0px;
- padding-top: 0px;
- width: 810px;
- background-color: #ffffff;
-}
-
-#left {
- width: 810px;
- height: 1px;
-}
-#right {
- position: relative;
- top: -10px;
- width: 770px;
- margin-top: 0px;
- margin-left: 5px;
- margin-right: 5px;
- padding-top: 5px;
- padding-left: 10px;
- padding-right: 10px;
- padding-bottom: 20px;
- min-height: 400px;
-}
-
-#footer {
- position: relative;
- background: url('images/footer.png') no-repeat;
- top: -18px;
- left: 0px;
- width: 810px;
- height: 82px;
- color: #999999;
- text-align: center;;
- font-size: 0.9em;
- padding-top: 17px;
- margin-bottom: 20px;
- clear: both;
-}
-#footer p {
- padding: 0px;
- margin: 0px;
-}
-
-/* Style the List */
-#navigation {
- /* background: url('images/menu.gif') no-repeat; */
- /* width: 693px; */
- position: relative;
- top: -35px;
- left: 3px;
- width: 810px;
- padding: 0px;
- height: 28px;
- z-index: 3;
-}
-#navigation ul {
- padding: 0;
- margin: 0;
- list-style: none;
- text-align: center;
-}
-#navigation ul#menu {
- padding-top: 3px;
- padding-left: 5px;
-}
-
-/* Style the List Elements */
-#navigation ul li {
- float: left;
- position: relative;
- width: 7.5em;
-}
-#navigation ul li div {
- font-size: 1em;
- font-weight: bold;
-}
-/* Make the List inside the List Elements */
-/* initially hidden with absolute position */
-#navigation ul li ul {
- display: none;
- position: absolute;
-/* top: 2em;
- left: -2px; */
- width: 120px;
- font-weight: normal;
-/* background: transparent bottom left no-repeat; /* This is key to making the menu maintain visibility when not on a link */
- /* background-color: #202020; */
- background: url("images/menubgr_footer.png") no-repeat;
- background-position: bottom;
- */
- padding: 0em 0 0.4em 0;
- padding-top: 5px;
- padding-bottom: 10px;
-}
-/* to override top and left in browsers other than IE */
-/* which will position to the top right of the containing */
-/* li, rather than bottom left */
-#navigation ul li > ul {
- top: auto;
- left: auto;
- left: -1px !important;
-}
-/* Show initial drop down upon mouse over, but do not show */
-/* nested side drop menus within listed elements */
-#navigation ul li:hover ul {
- display: block;
- cursor: pointer;
-}
-#navigation ul li:hover {
- cursor: pointer;
- cursor: pointer;
-}
-#navigation ul li:hover div {
- text-decoration: none;
-}
-
-#navigation ul li {
- background-color: transparent;
- color: #FFF;
-}
-#navigation ul li ul li {
- border: 0px solid #990000;
- width: 8.8em;
- height: 1.6em;
- line-height: 1.6em;
-/* background-color: #990000; */
- background: url(images/menubgr.png) repeat-y;
- z-index: 2;
-/* color: #FFF; */
-}
-#navigation ul li ul li:hover {
-/* background-color: #666666; */
- background-image: url(images/menubgr_highlight.png);
- background-repeat: repeat-y;
-}
-
-#navigation li li a {
- display: block;
- padding-left: 10px;
- padding-right: 10px;
-}
-
-#navigation ul li ul li a.navlnk:hover {
- text-decoration: none;
-}
-#navigation ul li.first {
- border-right: 0px;
-}
-#navigation ul li.middle {
- border-right: 0px;
-}
-#navigation ul li.last {
-
-}
-
-#navigation ul li.dropfirst {
- border-bottom: 0px;
-}
-#navigation ul li.dropmiddle {
- border-bottom: 0px;
-}
-#navigation ul li.droplast {
-}
-
-#wzdtabcont {
- float: left;
- background-color: #FFFFFF;
- color: #000000;
- padding: 0;
-}
-
-ul#wzdnav {
- font-size: 0.96em;
- float: left;
- width: 14.5em;
- margin: 0;
- padding-left: 18px;
-}
-
-ul#wzdnav li {
- list-style: none;
- margin: 0;
- padding-bottom: 0.2em;
- padding-left: 0;
-}
-
-ul#wzdnav a {
- display: block;
- padding: 0.3em;
- font-weight: normal;
-}
-
-#wzdnavbold a {
- display: block;
- padding: 0.3em;
- font-weight: bold ! important;
-}
-
-ul#wzdnav a:link {
- color: black;
- background-color: #eee;
-}
-
-ul#wzdnav a:visited {
- color: #666;
- background-color: #eee;
-}
-
-ul#wzdnav a:hover {
- color: black;
- background-color: white;
-}
-
-ul#wzdnav a:active {
- color: white;
- background-color: gray;
-}
-
-#graph {
- position: relative;
- z-index: 10;
-}
-
-#logoutbtn {
- position: absolute;
- left: 95%;
- vertical-align: middle;
-}
-
-
-#graph {
- position: relative;
- z-index: 10;
-}
-
-
-
-/* Class Based CSS Definitions */
-.pgtitle {
- font-size: 18px;
- color: #777777;
- font-weight: bold;
-}
-.tfrtitle {
- font-size: 18px;
- color: #ffffff;
- font-weight: bold;
-}
-.vncell {
- background-color: #DDDDDD;
- padding-right: 20px;
- padding-left: 8px;
- border-bottom: 1px solid #999999;
-}
-.formfld {
- padding-left: 19px;
- font-size: small;
-}
-.formselect {
- font-size: 1.0em;
-}
-.langopt {
- padding-left: 34px;
- padding-top: 2px;
- padding-bottom: 2px;
-}
-.saved {
- /* background: url('/themes/nione/images/icons/icon_wzd_saved.png') no-repeat 0 1px #FFFFFF; */
- list-style-image: url('/themes/nervecenter/images/icons/icon_wzd_saved.png') ! important;
-}
-.notsaved {
- /* background: url('/themes/nione/images/icons/icon_wzd_nsaved.png') no-repeat 0 1px #FFFFFF; */
- list-style-image: url('/themes/nervecenter/images/icons/icon_wzd_nsaved.png') ! important;
-}
-.en {
- background: url('/themes/nervecenter/images/icons/icon_flag_en.png') no-repeat 0 1px #FFFFFF;
-}
-.de {
- background: url('/themes/nervecenter/images/icons/icon_flag_de.png') no-repeat 0 1px #FFFFFF;
-}
-.es {
- background: url('/themes/nervecenter/images/icons/icon_flag_es.png') no-repeat 0 1px #FFFFFF;
-}
-.pt_BR {
- background: url('/themes/nervecenter/images/icons/icon_flag_pt_BR.png') no-repeat 0 1px #FFFFFF;
-}
-.host {
- background: url('/themes/nervecenter/images/icons/icon_frmfld_host.png') no-repeat 0 1px #FFFFFF;
-}
-.search {
- background: url('/themes/nervecenter/images/icons/icon_frmfld_search.png') no-repeat 0 1px #FFFFFF;
-}
-.file {
- background: url('/themes/nervecenter/images/icons/icon_frmfld_file.png') no-repeat 0 1px #FFFFFF;
-}
-.mail {
- background: url('/themes/nervecenter/images/icons/icon_frmfld_mail.png') no-repeat 0 1px #FFFFFF;
-}
-.imp {
- background: url('/themes/nervecenter/images/icons/icon_frmfld_imp.png') no-repeat 0 1px #FFFFFF;
-}
-.pwd {
- background: url('/themes/nervecenter/images/icons/icon_frmfld_pwd.png') no-repeat 0 1px #FFFFFF;
-}
-.user {
- background: url('/themes/nervecenter/images/icons/icon_frmfld_user.png') no-repeat 0 1px #FFFFFF ;
-}
-.group {
- background: url('/themes/nervecenter/images/icons/icon_frmfld_group.png') no-repeat 0 1px #FFFFFF;
-}
-.url {
- background: url('/themes/nervecenter/images/icons/icon_frmfld_url.png') no-repeat 0 1px #FFFFFF;
-}
-.time {
- background: url('/themes/nervecenter/images/icons/icon_frmfld_time.png') no-repeat 0 1px #FFFFFF;
-}
-.unknown {
- background: url('/themes/nervecenter/images/icons/icon_frmfld_unknown.png') no-repeat 0 1px #FFFFFF;
-}
-.formfld_cert {
- background: url('/themes/nervecenter/images/icons/icon_frmfld_cert.png') no-repeat 0 1px #FFFFFF;
- padding-left: 28px;
- font-family: Courier New, Courier, monospaced;
- font-size: 11px;
-}
-.formfldalias {
- background-color: #990000;
- color: #FFFFFF;
-}
-.formpre {
- font-family: Courier New, Courier, monospaced;
- font-size: 10px;
-}
-.formbtn {
- font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
- font-size: 13px;
- font-weight: bold;
-}
-.formbtns {
- font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
- font-size: 10px;
- font-weight: bold;
-}
-.vvcell {
- background-color: #FFFFC6;
-}
-.errmsg {
- font-weight: bold;
- color: #CC0000;
-}
-.red {
- color: #CC0000;
-}
-.gray {
- color: #A0A0A0;
-}
-.vexpl {
- font-size: 11px;
-}
-.navlnk {
- color: #FFFFFF;
- text-decoration: none;
- font-size: 13px;
-}
-.navlnks {
- color: #FFFFFF;
- text-decoration: none;
- font-size: 11px;
-}
-.redlnk {
- color: #990000;
- text-decoration: none;
-}
-.tblnk {
- color: #999999;
- text-decoration: none;
-}
-.vncellreq {
- background-color: #DDDDDD;
- padding-right: 20px;
- padding-left: 8px;
- font-weight: bold;
- border-bottom: 1px solid #999999;
-}
-.vncellt {
- background-color: #DDDDDD;
- padding-right: 20px;
- padding-left: 8px;
- padding-top: 4px;
- padding-bottom: 4px;
- font-weight: bold;
- border-bottom: 1px solid #999999;
-}
-.vtable {
- border-bottom: 1px solid #999999;
-}
-.vnsepcell {
- background-color: #BBBBBB;
- padding-right: 20px;
- padding-left: 8px;
- font-weight: bold;
- border-bottom: 1px solid #999999;
- font-size: 11px;
-}
-.cpline {
- font-size: 11px;
- color: #FFFFFF;
-}
-.hostname {
- font-size: 11px;
- color: #990000;
- font-weight: bold;
-}
-.vnsepcellr {
- background-color: #BBBBBB;
- padding-right: 20px;
- padding-left: 8px;
- font-weight: bold;
- border-right: 1px solid #999999;
- border-bottom: 1px solid #999999;
- font-size: 11px;
-}
-.listrborder {
- background-color: #FFFFFF;
- border-right: 1px solid #999999;
- border-left: 1px solid #999999;
- border-bottom: 1px solid #999999;
- font-size: 11px;
- padding-right: 6px;
- padding-left: 6px;
- padding-top: 4px;
- padding-bottom: 4px;
-}
-.listr {
- background-color: #FFFFFF;
- border-right: 1px solid #999999;
- border-bottom: 1px solid #999999;
- font-size: 11px;
- padding-right: 6px;
- padding-left: 6px;
- padding-top: 4px;
- padding-bottom: 4px;
-}
-.listrpad {
- border-right: 1px solid #999999;
- border-bottom: 1px solid #999999;
- font-size: 11px;
- padding-right: 16px;
- padding-left: 10px;
- padding-top: 8px;
- padding-bottom: 8px;
-}
-.listn {
- font-size: 11px;
- padding-right: 16px;
- padding-left: 6px;
- padding-top: 4px;
- padding-bottom: 4px;
-}
-.listbg {
- border-right: 1px solid #999999;
- border-bottom: 1px solid #999999;
- font-size: 11px;
- color: #FFFFFF;
- background-color: #990000;
- padding-right: 16px;
- padding-left: 6px;
- padding-top: 4px;
- padding-bottom: 4px;
-}
-.listbggrey {
- border-right: 1px solid #999999;
- border-bottom: 1px solid #999999;
- font-size: 11px;
- background-color: #999999;
- padding-right: 16px;
- padding-left: 6px;
- padding-top: 4px;
- padding-bottom: 4px;
-}
-.listhdr {
- background-color: #BBBBBB;
- padding-right: 16px;
- padding-left: 6px;
- font-weight: bold;
- border-bottom: 1px solid #999999;
- font-size: 11px;
- padding-top: 5px;
- padding-bottom: 5px;
-}
-.listhdr a {
- color: #000000;
-}
-.listhdrr {
- background-color: #BBBBBB;
- padding-right: 16px;
- padding-left: 6px;
- font-weight: bold;
- border-right: 1px solid #999999;
- border-bottom: 1px solid #999999;
- font-size: 11px;
- padding-top: 5px;
- padding-bottom: 5px;
-}
-.listhdrr a {
- color: #000000;
-}
-.listlr {
- background-color: #FFFFFF;
- border-right: 1px solid #999999;
- border-bottom: 1px solid #999999;
- border-left: 1px solid #999999;
- font-size: 11px;
- padding-right: 6px;
- padding-left: 6px;
- padding-top: 4px;
- padding-bottom: 4px;
-}
-.listlrns {
- background-color: #FFFFFF;
- border-right: 1px solid #999999;
- border-bottom: 1px solid #999999;
- border-left: 1px solid #999999;
- font-size: 11px;
- padding-top: 4px;
- padding-bottom: 4px;
-}
-.list {
- font-size: 11px;
- padding-left: 6px;
- padding-top: 2px;
- padding-bottom: 2px;
-}
-.listt {
- font-size: 11px;
- padding-top: 5px;
-}
-.listhdrrns {
- background-color: #BBBBBB;
- padding-left: 6px;
- padding-top: 5px;
- padding-bottom: 5px;
- padding-right: 6px;
- font-weight: bold;
- border-right: 1px solid #999999;
- border-bottom: 1px solid #999999;
- font-size: 11px;
-}
-.listbgns {
- border-right: 1px solid #999999;
- border-bottom: 1px solid #999999;
- font-size: 11px;
- background-color: #D9DEE8;
- padding-left: 6px;
- padding-right: 4px;
- padding-top: 4px;
- padding-bottom: 4px;
-}
-.listtopic {
- border-right: 1px solid #999999;
- font-size: 11px;
- background-color: #990000;
- padding-right: 16px;
- padding-left: 6px;
- color: #FFFFFF;
- font-weight: bold;
- padding-top: 5px;
- padding-bottom: 5px;
-}
-
-.optsect_t {
- border-right: 1px solid #999999;
- background-color: #990000;
- padding-right: 6px;
- padding-left: 6px;
- padding-top: 2px;
- padding-bottom: 2px;
-}
-.optsect_s {
- font-size: 11px;
- color: #FFFFFF;
- font-weight: bold;
-}
-.tabnavtbl {
-}
-
-
-/* MISC CSS Definitions */
-ul#tabnav {
- font-size: 11px;
- font-weight: bold;
- list-style-type: none;
- margin: 0;
- padding: 0;
-}
-ul#tabnav li.tabinact1 {
- float: left;
- background-color: #777777;
- color: #FFFFFF;
- padding: 0;
- white-space: nowrap;
-}
-ul#tabnav li.tabinact {
- float: left;
- border-left: 1px solid #999999;
- background-color: #777777;
- color: #FFFFFF;
- padding: 0;
- white-space: nowrap;
-}
-ul#tabnav li.tabinact a {
- float: left;
- display: block;
- text-decoration: none;
- padding: 5px 8px 5px 8px;
- color: #FFFFFF;
-}
-ul#tabnav li.tabinact1 a {
- float: left;
- display: block;
- text-decoration: none;
- padding: 5px 8px 5px 8px;
- color: #FFFFFF;
-}
-ul#tabnav li.tabact {
- float: left;
- background-color: #EEEEEE;
- color: #000000;
- padding: 5px 8px 5px 8px;
- white-space: nowrap;
-}
-.tabcont {
- background-color: #DDDDDD;
- padding-right: 12px;
- padding-left: 12px;
- padding-top: 12px;
- padding-bottom: 12px;
-}
-.tabact {
- float: left;
- background-color: #EEEEEE;
- color: #000000;
- padding: 5px 8px 5px 8px;
- white-space: nowrap;
-}
-.tabinact {
- font-weight: bold;
- float: left;
- border-left: 1px solid #999999;
- background-color: #777777;
- color: #FFFFFF;
- padding: 0;
- white-space: nowrap;
-}
-.menu {
- background-color: #000000;
- white-space: nowrap;
- padding: 0px 5px 0px 5px;
- width: 100%;
- vertical-align: top;
-}
-
-
-/* Auto Complete Suggestions */
-div.suggestions {
- -moz-box-sizing: border-box;
- /* box-sizing: border-box; */
- border: 1px solid black;
- position: absolute;
- background-color: #990000;
- color: #FFF;
-}
-
-div.suggestions div {
- cursor: default;
- padding: 0px 3px;
- background-color: #990000;
- color: #FFF;
-}
-
-div.suggestions div.current {
- background-color: #3366cc;
- color: #FFF;
-}
-/* End Auto Complete Suggestions */
-
-
-/* Nifty Corners Crap */
-.rtop,.artop{display:block}
-.rtop *,.artop *{display:block;height:1px;overflow:hidden;font-size:1px}
-.artop *{border-style: solid;border-width:0 1px}
-.r1,.rl1,.re1,.rel1{margin-left:5px}
-.r1,.rr1,.re1,.rer1{margin-right:5px}
-.r2,.rl2,.re2,.rel2,.ra1,.ral1{margin-left:3px}
-.r2,.rr2,.re2,.rer2,.ra1,.rar1{margin-right:3px}
-.r3,.rl3,.re3,.rel3,.ra2,.ral2,.rs1,.rsl1,.res1,.resl1{margin-left:2px}
-.r3,.rr3,.re3,.rer3,.ra2,.rar2,.rs1,.rsr1,.res1,.resr1{margin-right:2px}
-.r4,.rl4,.rs2,.rsl2,.re4,.rel4,.ra3,.ral3,.ras1,.rasl1,.res2,.resl2{margin-left:1px}
-.r4,.rr4,.rs2,.rsr2,.re4,.rer4,.ra3,.rar3,.ras1,.rasr1,.res2,.resr2{margin-right:1px}
-.rx1,.rxl1{border-left-width:5px}
-.rx1,.rxr1{border-right-width:5px}
-.rx2,.rxl2{border-left-width:3px}
-.rx2,.rxr2{border-right-width:3px}
-.re2,.rel2,.ra1,.ral1,.rx3,.rxl3,.rxs1,.rxsl1{border-left-width:2px}
-.re2,.rer2,.ra1,.rar1,.rx3,.rxr3,.rxs1,.rxsr1{border-right-width:2px}
-.rxl1,.rxl2,.rxl3,.rxl4,.rxsl1,.rxsl2,.ral1,.ral2,.ral3,.ral4,.rasl1,.rasl2{border-right-width:0}
-.rxr1,.rxr2,.rxr3,.rxr4,.rxsr1,.rxsr2,.rar1,.rar2,.rar3,.rar4,.rasr1,.rasr2{border-left-width:0}
-.r4,.rl4,.rr4,.re4,.rel4,.rer4,.ra4,.rar4,.ral4,.rx4,.rxl4,.rxr4{height:2px}
-.rer1,.rel1,.re1,.res1,.resl1,.resr1{border-width:1px 0 0;height:0px !important;height /**/:1px}
-/* End Nifty Corners Crap */
-
-
-
-/* CSS for Dynamic Log Viewer */
-/* Author: Erik Kristensen */
-div#log div.log-entry {
- clear: both;
-}
-
-div#log div.log-entry span,
-div#log div.log-header span {
- padding: 3px 2px 3px 2px;
- padding-left: 8px;
-}
-
-div#log div.log-entry span.log-action {
- padding-bottom: 6px;
- padding-left: 5px;
- padding-right: 5px;
-}
-
-div#log div.log-header span {
- border-top: 1px solid #999;
- background-color: #bbb;
- font-weight: bold;
- text-align: left;
-}
-
-div#log span.log-action,
-div#log span.log-time,
-div#log span.log-interface,
-div#log span.log-source,
-div#log span.log-destination,
-div#log span.log-protocol {
- float: left;
- text-align: left;
- border-left: 1px solid #999;
- border-bottom: 1px solid #999;
-
-}
-
-div#log span.log-general {
-
-}
-
-div#log span.log-protocol {
- border-right: 1px solid #999;
-}
-
-div#log span.log-action {
- width: 2em;
- text-align: center;
-}
-
-div#log span.log-time {
- width: 12.5em;
-}
-
-div#log span.log-interface {
- width: 5em;
-}
-
-div#log span.log-source,
-div#log span.log-destination {
- width: 17.6em;
-}
-
-div#log span.log-protocol {
- width: 5.5em;
-}
-/* END CSS FOR DYNAMIC LOG VIEWER */
-
-#login {
- background: #cccccc;
- border: 0px solid #666666;
- margin: 5em auto;
- padding: 0em;
- width: 340px;
-}
-
-#login h1 {
- background: url(images/misc/logon.png) no-repeat top left;
- margin-top: 0;
- display: block;
- text-indent: -1000px;
- height: 50px;
- border-bottom: none;
-}
-
-#login p {
- font-size: 1em;
- font-weight: bold;
- padding: 3px;
- margin: 0em;
- text-indent: 10px;
-}
-
-#login span {
- font-size: 1em;
- font-weight: bold;
- width: 20%;
- padding: 3px;
- margin: 0em;
- text-indent: 10px;
-}
-
-#login p#text {
- font-size: 1em;
- font-weight: normal;
- padding: 3px;
- margin: 0em;
- text-indent: 10px;
-}
-
-#login #username, #password {
- font-size: 1em;
- width: 60%;
- padding: 3px;
- margin: 0em;
-}
-
-#login #submit {
- font-size: 1em;
- font-weight: bold;
- padding: 3px;
- margin: 0em;
- text-indent: 10px;
-}
-
-/* Widget CSS */
-.widgetsubheader {
- border-right: 1px solid #999999;
- font-size: 11px;
- background-color: #B1B1B1;
- padding-right: 6px;
- padding-left: 6px;
- color: #000000;
- font-weight: bold;
- padding-top: 5px;
- padding-bottom: 5px;
-}
-.widgetheader {
- border-right: 1px solid #999999;
- font-size: 11px;
- background-color: #990000;
- padding-right: 6px;
- padding-left: 6px;
- color: #FFFFFF;
- font-weight: bold;
- padding-top: 5px;
- padding-bottom: 5px;
-}
-.widgetdiv{
- margin:5px;
- padding: 5px;
- background:#CCCCCC;
-}
-.widgetconfigdiv{
- background:#BBBBBB;
- font-size: 11px;
- color: #000000;
- padding-right: 5px;
- padding-left: 5px;
- padding-top: 5px;
- padding-bottom: 5px;
-}
-
-div#log div.log-entry-mini {
- clear: both;
-}
-
-div#log div.log-entry-mini span {
- padding: 2px 2px 2px 2px;
- padding-left: 8px;
-}
-
-div#log span.log-action-mini-header,
-div#log span.log-interface-mini-header,
-div#log span.log-source-mini-header,
-div#log span.log-destination-mini-header,
-div#log span.log-protocol-mini-header {
- float: left;
- text-align: left;
- background-color: #B1B1B1;
- font-size: 12px;
- border-left: 1px solid #999;
- border-bottom: 1px solid #999;
-}
-
-div#log span.log-action-mini,
-div#log span.log-time-mini,
-div#log span.log-interface-mini,
-div#log span.log-source-mini,
-div#log span.log-destination-mini,
-div#log span.log-protocol-mini {
- float: left;
- text-align: left;
- background-color: #FFFFFF;
- font-size: 11px;
- border-left: 1px solid #999;
- border-bottom: 1px solid #999;
-}
-
-div#log span.log-action-mini,
-div#log span.log-action-mini-header {
- width: 6%;
-}
-
-div#log span.log-interface-mini,
-div#log span.log-interface-mini-header {
- width: 8%;
-}
-
-div#log span.log-source-mini,
-div#log span.log-destination-mini,
-div#log span.log-source-mini-header,
-div#log span.log-destination-mini-header {
- width: 31%;
-}
-
-div#log span.log-protocol-mini,
-div#log span.log-protocol-mini-header {
- width: 8%;
- border-right: 1px solid #999;
-}
-
-/* Sortable tables */
-table.sortable thead {
- background-color:#eee;
- color:#666666;
- font-weight: bold;
- cursor: default;
-}
+/* Element CSS Definitions */ +html, body, td, th, input, select { + font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; + font-size: 0.9em; + +} + +.infobox { + width:100%; +} + +.infoboxsave { + padding-right: 10px; +} + +.infoboxnptd2 { + width:100%; + color:white; + background-color:#990000; + padding-right: 10px; +} + +.infoboxnptd { + width:8%; + background-color:#990000; +} + +.infoboxnptable { + height:32px; + width:100%; + background-color:#990000; +} + +.infoboxnptable2 { + height:32px; + width:100%; + background-color:#990000; +} + +.infoboxnp { + background-color:#990000; + width:100%; +} + +.infoboxnpimg { + vertical-align:middle; + width:28px; + height:32px; + background-color:#990000; +} + +.inputerrorsleft { + background-color: #990000; + width: 36px; +} + +.inputerrorsright { + background-color: #FFD9D1; + color: #000000; + font-size: 11px; + padding-left: 8px; + padding-top: 6px; +} + +div.GraphLink { + position: relative; +} + +span.GraphLinkLine { + position: absolute; + background-color: #990000; + width: 100%; +} + +/* DOM Tooltip CSS definitions */ +div.niceTitle +{ + background-color: #333333; + color: #FFFFFF; + font-weight: bold; + font-size: 13px; + font-family: "Trebuchet MS", sans-serif; + width: 220px; + left: 0; + top: 0; + padding: 4px; + position: absolute; + text-align: left; + z-index: 20; + -moz-border-radius: 0 10px 10px 10px; + filter: progid:DXImageTransform.Microsoft.Alpha(opacity=87); + -moz-opacity: .87; + -khtml-opacity: .87; + opacity: .87; +} +div.niceTitle h1 +{ + background: #990000; + border-bottom: 1px dotted #FFFFFF; + font-weight: bold; + font-size: 13px; + font-family: "Trebuchet MS", sans-serif; + margin: 3px; + padding-top: 1px; + padding-bottom: 1px; + padding-left: 3px; + text-align: left; + left: 0; + top: 0; + -moz-border-radius: 0 8px 0 0; + -moz-opacity: 1; +} +div.niceTitle .contents +{ + margin: 0; + padding: 0 3px; + filter: progid:DXImageTransform.Microsoft.Alpha(opacity=100); + -moz-opacity: 1; + -khtml-opacity: 1; + opacity: 1; +} +div.niceTitle p +{ + background: #FFFFFF; + border: 1px solid #990000; + color: #000000; + font-size: 11px; + font-family: "Trebuchet MS", sans-serif; + padding: 5px; + margin: 3px; + text-align: left; + -moz-opacity: 1; + -moz-border-radius: 0 0 8px 8px; +} + +body { + margin: 0px auto; + background: url('images/background.gif') no-repeat; + background-position : center 0px; + background-color: #4a0203; +} + +form { + margin: 0px; +} +a { + text-decoration: none; +} +form input { + font-size: 1.1em; +} + +iframe { + z-index: 1; + border: 1px dashed #990000; +} +.iframe { + background-color: #FFFFFF; +} + +/* ID Based CSS Definitions */ +#wrapper { + width: 810px; + margin: 0px auto; +} + +#header { + background: url('images/header.png') no-repeat; + background-position: 0px; + height: 102px; + width: 810px; + margin-bottom: 5px; + z-index: 2; +} +#header-left { + position: relative; + /* background: url('images/logo.gif') no-repeat; */ + background-position: center; + height: 65px; + width: 145px; + left: 10px; + float: left; +} +#header-left #status-link { + position: relative; + top: 10px; + left: 6px; +} +#header-right { + position: relative; + /* background: url('images/header.gif') no-repeat; */ + height: 70px; + color: #fff; + left: 0px; + margin-left: 165px; +} +#header-right .alert { + position: relative; + /* background: url('images/alert.gif') no-repeat; */ + background-position: 4px 2px; + color: #fff; + height: 17px; + width: 500px; + padding: 4px; + padding-left: 27px; + float: left; +} +#header-right .container { + position: relative; +} +#header-right .container .left { + position: relative; + float: left; + font-size: 1.3em; + font-weight: bold; + top: 15px; + left: 4px; + display: none; +} +#header-right .container .right { + position: relative; + float: right; + top: 29px; + padding-right: 4px; + z-index: 1; +} + +#header-right .container .right #alerts { + position: relative; + background: url('images/alert_bgr.png') no-repeat; + height: 39px; + width: 431px; + z-index: 1; + padding-top: 22px; + padding-left: 5px; + margin: 0px; +} +#header-right .container .right #hostname { + position: relative; + height: 39px; + width: 431px; + z-index: 1; + padding-left: 5px; + margin: 0px; + top: 15px; + left: 210px; + font-size: 14px; + color: #990000; + font-weight: bold; +} + + + +table#marquee { + position: relative; + top: -6px; + left: -5px; + border: 0; + padding: 0; + margin: 0; + width: 424px; + background-color: transparent; + padding: 2px; + border: 0px; +} +span#marquee-container { + position: absolute; + visibility: hidden; + top: -100px; + left: -10000px; +} +div#marquee-text { + font-size: 1.18em; + font-weight: normal; + font-family: Verdana; + color: #990000; +} +table#marquee div#container { + position: relative; + overflow: hidden; + width: 418px; + height: 20px; +} +table#marquee div#container div#scroller { + position: absolute; + left: 0px; + top: 0px; +} + + + + + +#content { + position: relative; + top: -5px; + left: 0px; + margin-top: 0px; + margin-left: 0px; + padding-top: 0px; + width: 810px; + background-color: #ffffff; +} + +#left { + width: 810px; + height: 1px; +} +#right { + position: relative; + top: -10px; + width: 770px; + margin-top: 0px; + margin-left: 5px; + margin-right: 5px; + padding-top: 5px; + padding-left: 10px; + padding-right: 10px; + padding-bottom: 20px; + min-height: 400px; +} + +#footer { + position: relative; + background: url('images/footer.png') no-repeat; + top: -18px; + left: 0px; + width: 810px; + height: 82px; + color: #999999; + text-align: center;; + font-size: 0.9em; + padding-top: 17px; + margin-bottom: 20px; + clear: both; +} +#footer p { + padding: 0px; + margin: 0px; +} + +/* Style the List */ +#navigation { + /* background: url('images/menu.gif') no-repeat; */ + /* width: 693px; */ + position: relative; + top: -35px; + left: 3px; + width: 810px; + padding: 0px; + height: 28px; + z-index: 3; +} +#navigation ul { + padding: 0; + margin: 0; + list-style: none; + text-align: center; +} +#navigation ul#menu { + padding-top: 3px; + padding-left: 5px; +} + +/* Style the List Elements */ +#navigation ul li { + float: left; + position: relative; + width: 7.5em; +} +#navigation ul li div { + font-size: 1em; + font-weight: bold; +} +/* Make the List inside the List Elements */ +/* initially hidden with absolute position */ +#navigation ul li ul { + display: none; + position: absolute; +/* top: 2em; + left: -2px; */ + width: 120px; + font-weight: normal; +/* background: transparent bottom left no-repeat; /* This is key to making the menu maintain visibility when not on a link */ + /* background-color: #202020; */ + background: url("images/menubgr_footer.png") no-repeat; + background-position: bottom; + */ + padding: 0em 0 0.4em 0; + padding-top: 5px; + padding-bottom: 10px; +} +/* to override top and left in browsers other than IE */ +/* which will position to the top right of the containing */ +/* li, rather than bottom left */ +#navigation ul li > ul { + top: auto; + left: auto; + left: -1px !important; +} +/* Show initial drop down upon mouse over, but do not show */ +/* nested side drop menus within listed elements */ +#navigation ul li:hover ul { + display: block; + cursor: pointer; +} +#navigation ul li:hover { + cursor: pointer; + cursor: pointer; +} +#navigation ul li:hover div { + text-decoration: none; +} + +#navigation ul li { + background-color: transparent; + color: #FFF; +} +#navigation ul li ul li { + border: 0px solid #990000; + width: 8.8em; + height: 1.6em; + line-height: 1.6em; +/* background-color: #990000; */ + background: url(images/menubgr.png) repeat-y; + z-index: 2; +/* color: #FFF; */ +} +#navigation ul li ul li:hover { +/* background-color: #666666; */ + background-image: url(images/menubgr_highlight.png); + background-repeat: repeat-y; +} + +#navigation li li a { + display: block; + padding-left: 10px; + padding-right: 10px; +} + +#navigation ul li ul li a.navlnk:hover { + text-decoration: none; +} +#navigation ul li.first { + border-right: 0px; +} +#navigation ul li.middle { + border-right: 0px; +} +#navigation ul li.last { + +} + +#navigation ul li.dropfirst { + border-bottom: 0px; +} +#navigation ul li.dropmiddle { + border-bottom: 0px; +} +#navigation ul li.droplast { +} + +#wzdtabcont { + float: left; + background-color: #FFFFFF; + color: #000000; + padding: 0; +} + +ul#wzdnav { + font-size: 0.96em; + float: left; + width: 14.5em; + margin: 0; + padding-left: 18px; +} + +ul#wzdnav li { + list-style: none; + margin: 0; + padding-bottom: 0.2em; + padding-left: 0; +} + +ul#wzdnav a { + display: block; + padding: 0.3em; + font-weight: normal; +} + +#wzdnavbold a { + display: block; + padding: 0.3em; + font-weight: bold ! important; +} + +ul#wzdnav a:link { + color: black; + background-color: #eee; +} + +ul#wzdnav a:visited { + color: #666; + background-color: #eee; +} + +ul#wzdnav a:hover { + color: black; + background-color: white; +} + +ul#wzdnav a:active { + color: white; + background-color: gray; +} + +#graph { + position: relative; + z-index: 10; +} + +#logoutbtn { + position: absolute; + left: 95%; + vertical-align: middle; +} + + +#graph { + position: relative; + z-index: 10; +} + + + +/* Class Based CSS Definitions */ +.pgtitle { + font-size: 18px; + color: #777777; + font-weight: bold; +} +.tfrtitle { + font-size: 18px; + color: #ffffff; + font-weight: bold; +} +.vncell { + background-color: #DDDDDD; + padding-right: 20px; + padding-left: 8px; + border-bottom: 1px solid #999999; +} +.formfld { + padding-left: 19px; + font-size: small; +} +.formselect { + font-size: 1.0em; +} +.langopt { + padding-left: 34px; + padding-top: 2px; + padding-bottom: 2px; +} +.saved { + /* background: url('/themes/nione/images/icons/icon_wzd_saved.png') no-repeat 0 1px #FFFFFF; */ + list-style-image: url('/themes/nervecenter/images/icons/icon_wzd_saved.png') ! important; +} +.notsaved { + /* background: url('/themes/nione/images/icons/icon_wzd_nsaved.png') no-repeat 0 1px #FFFFFF; */ + list-style-image: url('/themes/nervecenter/images/icons/icon_wzd_nsaved.png') ! important; +} +.en { + background: url('/themes/nervecenter/images/icons/icon_flag_en.png') no-repeat 0 1px #FFFFFF; +} +.de { + background: url('/themes/nervecenter/images/icons/icon_flag_de.png') no-repeat 0 1px #FFFFFF; +} +.es { + background: url('/themes/nervecenter/images/icons/icon_flag_es.png') no-repeat 0 1px #FFFFFF; +} +.pt_BR { + background: url('/themes/nervecenter/images/icons/icon_flag_pt_BR.png') no-repeat 0 1px #FFFFFF; +} +.host { + background: url('/themes/nervecenter/images/icons/icon_frmfld_host.png') no-repeat 0 1px #FFFFFF; +} +.search { + background: url('/themes/nervecenter/images/icons/icon_frmfld_search.png') no-repeat 0 1px #FFFFFF; +} +.file { + background: url('/themes/nervecenter/images/icons/icon_frmfld_file.png') no-repeat 0 1px #FFFFFF; +} +.mail { + background: url('/themes/nervecenter/images/icons/icon_frmfld_mail.png') no-repeat 0 1px #FFFFFF; +} +.imp { + background: url('/themes/nervecenter/images/icons/icon_frmfld_imp.png') no-repeat 0 1px #FFFFFF; +} +.pwd { + background: url('/themes/nervecenter/images/icons/icon_frmfld_pwd.png') no-repeat 0 1px #FFFFFF; +} +.user { + background: url('/themes/nervecenter/images/icons/icon_frmfld_user.png') no-repeat 0 1px #FFFFFF ; +} +.group { + background: url('/themes/nervecenter/images/icons/icon_frmfld_group.png') no-repeat 0 1px #FFFFFF; +} +.url { + background: url('/themes/nervecenter/images/icons/icon_frmfld_url.png') no-repeat 0 1px #FFFFFF; +} +.time { + background: url('/themes/nervecenter/images/icons/icon_frmfld_time.png') no-repeat 0 1px #FFFFFF; +} +.unknown { + background: url('/themes/nervecenter/images/icons/icon_frmfld_unknown.png') no-repeat 0 1px #FFFFFF; +} +.formfld_cert { + background: url('/themes/nervecenter/images/icons/icon_frmfld_cert.png') no-repeat 0 1px #FFFFFF; + padding-left: 28px; + font-family: Courier New, Courier, monospaced; + font-size: 11px; +} +.formfldalias { + background-color: #990000; + color: #FFFFFF; +} +.formpre { + font-family: Courier New, Courier, monospaced; + font-size: 10px; +} +.formbtn { + font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; + font-size: 13px; + font-weight: bold; +} +.formbtns { + font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; + font-weight: bold; +} +.vvcell { + background-color: #FFFFC6; +} +.errmsg { + font-weight: bold; + color: #CC0000; +} +.red { + color: #CC0000; +} +.gray { + color: #A0A0A0; +} +.vexpl { + font-size: 11px; +} +.navlnk { + color: #FFFFFF; + text-decoration: none; + font-size: 13px; +} +.navlnks { + color: #FFFFFF; + text-decoration: none; + font-size: 11px; +} +.redlnk { + color: #990000; + text-decoration: none; +} +.tblnk { + color: #999999; + text-decoration: none; +} +.vncellreq { + background-color: #DDDDDD; + padding-right: 20px; + padding-left: 8px; + font-weight: bold; + border-bottom: 1px solid #999999; +} +.vncellt { + background-color: #DDDDDD; + padding-right: 20px; + padding-left: 8px; + padding-top: 4px; + padding-bottom: 4px; + font-weight: bold; + border-bottom: 1px solid #999999; +} +.vtable { + border-bottom: 1px solid #999999; +} +.vnsepcell { + background-color: #BBBBBB; + padding-right: 20px; + padding-left: 8px; + font-weight: bold; + border-bottom: 1px solid #999999; + font-size: 11px; +} +.cpline { + font-size: 11px; + color: #FFFFFF; +} +.hostname { + font-size: 11px; + color: #990000; + font-weight: bold; +} +.vnsepcellr { + background-color: #BBBBBB; + padding-right: 20px; + padding-left: 8px; + font-weight: bold; + border-right: 1px solid #999999; + border-bottom: 1px solid #999999; + font-size: 11px; +} +.listrborder { + background-color: #FFFFFF; + border-right: 1px solid #999999; + border-left: 1px solid #999999; + border-bottom: 1px solid #999999; + font-size: 11px; + padding-right: 6px; + padding-left: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +.listr { + background-color: #FFFFFF; + border-right: 1px solid #999999; + border-bottom: 1px solid #999999; + font-size: 11px; + padding-right: 6px; + padding-left: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +.listrpad { + border-right: 1px solid #999999; + border-bottom: 1px solid #999999; + font-size: 11px; + padding-right: 16px; + padding-left: 10px; + padding-top: 8px; + padding-bottom: 8px; +} +.listn { + font-size: 11px; + padding-right: 16px; + padding-left: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +.listbg { + border-right: 1px solid #999999; + border-bottom: 1px solid #999999; + font-size: 11px; + color: #FFFFFF; + background-color: #990000; + padding-right: 16px; + padding-left: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +.listbggrey { + border-right: 1px solid #999999; + border-bottom: 1px solid #999999; + font-size: 11px; + background-color: #999999; + padding-right: 16px; + padding-left: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +.listhdr { + background-color: #BBBBBB; + padding-right: 16px; + padding-left: 6px; + font-weight: bold; + border-bottom: 1px solid #999999; + font-size: 11px; + padding-top: 5px; + padding-bottom: 5px; +} +.listhdr a { + color: #000000; +} +.listhdrr { + background-color: #BBBBBB; + padding-right: 16px; + padding-left: 6px; + font-weight: bold; + border-right: 1px solid #999999; + border-bottom: 1px solid #999999; + font-size: 11px; + padding-top: 5px; + padding-bottom: 5px; +} +.listhdrr a { + color: #000000; +} +.listlr { + background-color: #FFFFFF; + border-right: 1px solid #999999; + border-bottom: 1px solid #999999; + border-left: 1px solid #999999; + font-size: 11px; + padding-right: 6px; + padding-left: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +.listlrns { + background-color: #FFFFFF; + border-right: 1px solid #999999; + border-bottom: 1px solid #999999; + border-left: 1px solid #999999; + font-size: 11px; + padding-top: 4px; + padding-bottom: 4px; +} +.list { + font-size: 11px; + padding-left: 6px; + padding-top: 2px; + padding-bottom: 2px; +} +.listt { + font-size: 11px; + padding-top: 5px; +} +.listhdrrns { + background-color: #BBBBBB; + padding-left: 6px; + padding-top: 5px; + padding-bottom: 5px; + padding-right: 6px; + font-weight: bold; + border-right: 1px solid #999999; + border-bottom: 1px solid #999999; + font-size: 11px; +} +.listbgns { + border-right: 1px solid #999999; + border-bottom: 1px solid #999999; + font-size: 11px; + background-color: #D9DEE8; + padding-left: 6px; + padding-right: 4px; + padding-top: 4px; + padding-bottom: 4px; +} +.listtopic { + border-right: 1px solid #999999; + font-size: 11px; + background-color: #990000; + padding-right: 16px; + padding-left: 6px; + color: #FFFFFF; + font-weight: bold; + padding-top: 5px; + padding-bottom: 5px; +} + +.optsect_t { + border-right: 1px solid #999999; + background-color: #990000; + padding-right: 6px; + padding-left: 6px; + padding-top: 2px; + padding-bottom: 2px; +} +.optsect_s { + font-size: 11px; + color: #FFFFFF; + font-weight: bold; +} +.tabnavtbl { +} + + +/* MISC CSS Definitions */ +ul#tabnav { + font-size: 11px; + font-weight: bold; + list-style-type: none; + margin: 0; + padding: 0; +} +ul#tabnav li.tabinact1 { + float: left; + background-color: #777777; + color: #FFFFFF; + padding: 0; + white-space: nowrap; +} +ul#tabnav li.tabinact { + float: left; + border-left: 1px solid #999999; + background-color: #777777; + color: #FFFFFF; + padding: 0; + white-space: nowrap; +} +ul#tabnav li.tabinact a { + float: left; + display: block; + text-decoration: none; + padding: 5px 8px 5px 8px; + color: #FFFFFF; +} +ul#tabnav li.tabinact1 a { + float: left; + display: block; + text-decoration: none; + padding: 5px 8px 5px 8px; + color: #FFFFFF; +} +ul#tabnav li.tabact { + float: left; + background-color: #EEEEEE; + color: #000000; + padding: 5px 8px 5px 8px; + white-space: nowrap; +} +.tabcont { + background-color: #DDDDDD; + padding-right: 12px; + padding-left: 12px; + padding-top: 12px; + padding-bottom: 12px; +} +.tabact { + float: left; + background-color: #EEEEEE; + color: #000000; + padding: 5px 8px 5px 8px; + white-space: nowrap; +} +.tabinact { + font-weight: bold; + float: left; + border-left: 1px solid #999999; + background-color: #777777; + color: #FFFFFF; + padding: 0; + white-space: nowrap; +} +.menu { + background-color: #000000; + white-space: nowrap; + padding: 0px 5px 0px 5px; + width: 100%; + vertical-align: top; +} + + +/* Auto Complete Suggestions */ +div.suggestions { + -moz-box-sizing: border-box; + /* box-sizing: border-box; */ + border: 1px solid black; + position: absolute; + background-color: #990000; + color: #FFF; +} + +div.suggestions div { + cursor: default; + padding: 0px 3px; + background-color: #990000; + color: #FFF; +} + +div.suggestions div.current { + background-color: #3366cc; + color: #FFF; +} +/* End Auto Complete Suggestions */ + + +/* Nifty Corners Crap */ +.rtop,.artop{display:block} +.rtop *,.artop *{display:block;height:1px;overflow:hidden;font-size:1px} +.artop *{border-style: solid;border-width:0 1px} +.r1,.rl1,.re1,.rel1{margin-left:5px} +.r1,.rr1,.re1,.rer1{margin-right:5px} +.r2,.rl2,.re2,.rel2,.ra1,.ral1{margin-left:3px} +.r2,.rr2,.re2,.rer2,.ra1,.rar1{margin-right:3px} +.r3,.rl3,.re3,.rel3,.ra2,.ral2,.rs1,.rsl1,.res1,.resl1{margin-left:2px} +.r3,.rr3,.re3,.rer3,.ra2,.rar2,.rs1,.rsr1,.res1,.resr1{margin-right:2px} +.r4,.rl4,.rs2,.rsl2,.re4,.rel4,.ra3,.ral3,.ras1,.rasl1,.res2,.resl2{margin-left:1px} +.r4,.rr4,.rs2,.rsr2,.re4,.rer4,.ra3,.rar3,.ras1,.rasr1,.res2,.resr2{margin-right:1px} +.rx1,.rxl1{border-left-width:5px} +.rx1,.rxr1{border-right-width:5px} +.rx2,.rxl2{border-left-width:3px} +.rx2,.rxr2{border-right-width:3px} +.re2,.rel2,.ra1,.ral1,.rx3,.rxl3,.rxs1,.rxsl1{border-left-width:2px} +.re2,.rer2,.ra1,.rar1,.rx3,.rxr3,.rxs1,.rxsr1{border-right-width:2px} +.rxl1,.rxl2,.rxl3,.rxl4,.rxsl1,.rxsl2,.ral1,.ral2,.ral3,.ral4,.rasl1,.rasl2{border-right-width:0} +.rxr1,.rxr2,.rxr3,.rxr4,.rxsr1,.rxsr2,.rar1,.rar2,.rar3,.rar4,.rasr1,.rasr2{border-left-width:0} +.r4,.rl4,.rr4,.re4,.rel4,.rer4,.ra4,.rar4,.ral4,.rx4,.rxl4,.rxr4{height:2px} +.rer1,.rel1,.re1,.res1,.resl1,.resr1{border-width:1px 0 0;height:0px !important;height /**/:1px} +/* End Nifty Corners Crap */ + + + +/* CSS for Dynamic Log Viewer */ +/* Author: Erik Kristensen */ +div#log div.log-entry { + clear: both; +} + +div#log div.log-entry span, +div#log div.log-header span { + padding: 3px 2px 3px 2px; + padding-left: 8px; +} + +div#log div.log-entry span.log-action { + padding-bottom: 6px; + padding-left: 5px; + padding-right: 5px; +} + +div#log div.log-header span { + border-top: 1px solid #999; + background-color: #bbb; + font-weight: bold; + text-align: left; +} + +div#log span.log-action, +div#log span.log-time, +div#log span.log-interface, +div#log span.log-source, +div#log span.log-destination, +div#log span.log-protocol { + float: left; + text-align: left; + border-left: 1px solid #999; + border-bottom: 1px solid #999; + +} + +div#log span.log-general { + +} + +div#log span.log-protocol { + border-right: 1px solid #999; +} + +div#log span.log-action { + width: 2em; + text-align: center; +} + +div#log span.log-time { + width: 12.5em; +} + +div#log span.log-interface { + width: 5em; +} + +div#log span.log-source, +div#log span.log-destination { + width: 17.6em; +} + +div#log span.log-protocol { + width: 5.5em; +} +/* END CSS FOR DYNAMIC LOG VIEWER */ + +#login { + background: #cccccc; + border: 0px solid #666666; + margin: 5em auto; + padding: 0em; + width: 340px; +} + +#login h1 { + background: url(images/misc/logon.png) no-repeat top left; + margin-top: 0; + display: block; + text-indent: -1000px; + height: 50px; + border-bottom: none; +} + +#login p { + font-size: 1em; + font-weight: bold; + padding: 3px; + margin: 0em; + text-indent: 10px; +} + +#login span { + font-size: 1em; + font-weight: bold; + width: 20%; + padding: 3px; + margin: 0em; + text-indent: 10px; +} + +#login p#text { + font-size: 1em; + font-weight: normal; + padding: 3px; + margin: 0em; + text-indent: 10px; +} + +#login #username, #password { + font-size: 1em; + width: 60%; + padding: 3px; + margin: 0em; +} + +#login #submit { + font-size: 1em; + font-weight: bold; + padding: 3px; + margin: 0em; + text-indent: 10px; +} + +/* Widget CSS */ +.widgetsubheader { + border-right: 1px solid #999999; + font-size: 11px; + background-color: #B1B1B1; + padding-right: 6px; + padding-left: 6px; + color: #000000; + font-weight: bold; + padding-top: 5px; + padding-bottom: 5px; +} +.widgetheader { + border-right: 1px solid #999999; + font-size: 11px; + background-color: #990000; + padding-right: 6px; + padding-left: 6px; + color: #FFFFFF; + font-weight: bold; + padding-top: 5px; + padding-bottom: 5px; +} +.widgetdiv{ + margin:5px; + padding: 5px; + background:#CCCCCC; +} +.widgetconfigdiv{ + background:#BBBBBB; + font-size: 11px; + color: #000000; + padding-right: 5px; + padding-left: 5px; + padding-top: 5px; + padding-bottom: 5px; +} + +div#log div.log-entry-mini { + clear: both; +} + +div#log div.log-entry-mini span { + padding: 2px 2px 2px 2px; + padding-left: 8px; +} + +div#log span.log-action-mini-header, +div#log span.log-interface-mini-header, +div#log span.log-source-mini-header, +div#log span.log-destination-mini-header, +div#log span.log-protocol-mini-header { + float: left; + text-align: left; + background-color: #B1B1B1; + font-size: 12px; + border-left: 1px solid #999; + border-bottom: 1px solid #999; +} + +div#log span.log-action-mini, +div#log span.log-time-mini, +div#log span.log-interface-mini, +div#log span.log-source-mini, +div#log span.log-destination-mini, +div#log span.log-protocol-mini { + float: left; + text-align: left; + background-color: #FFFFFF; + font-size: 11px; + border-left: 1px solid #999; + border-bottom: 1px solid #999; +} + +div#log span.log-action-mini, +div#log span.log-action-mini-header { + width: 6%; +} + +div#log span.log-interface-mini, +div#log span.log-interface-mini-header { + width: 8%; +} + +div#log span.log-source-mini, +div#log span.log-destination-mini, +div#log span.log-source-mini-header, +div#log span.log-destination-mini-header { + width: 31%; +} + +div#log span.log-protocol-mini, +div#log span.log-protocol-mini-header { + width: 8%; + border-right: 1px solid #999; +} + +/* Sortable tables */ +table.sortable thead { + background-color:#eee; + color:#666666; + font-weight: bold; + cursor: default; +} diff --git a/usr/local/www/themes/code-red/graphlink.css b/usr/local/www/themes/code-red/graphlink.css index ba62832..13f65f0 100755 --- a/usr/local/www/themes/code-red/graphlink.css +++ b/usr/local/www/themes/code-red/graphlink.css @@ -1,43 +1,43 @@ -/*******************************************************************************
- $Id$
-
- This file is part of the GraphLink software.
- GraphLink is distributed under the MIT License.
- Copyright (C) 2005-2006 Max Khitrov <max@mxsoft.org>
-*******************************************************************************/
-
-/**
- * Defines the background image used for the graph, as well as the actual data
- * locations.
- * Use padding-left and padding-top to align the data area correctly with your
- * background image.
- * Width and height should same as the dimensions of the image, minus the
- * padding values in both directions.
- */
-div.GraphLink {
- width: 212px;
- height: 60px;
- padding-left: 38px;
- padding-top: 10px;
- background-image: url(/themes/nervecenter/images/misc/graph.png);
- overflow: hidden;
-}
-
-/**
- * Defines the data display area. Modify to fit your background image.
- */
-div.GraphLinkData {
- width: 200px;
- height: 50px;
- overflow: hidden;
-}
-
-/**
- * Defines the look of one bar. Nothing to change here other than the color.
- */
-span.GraphLinkBar {
- background-color: #990000;
- height: 100%;
- float: left;
- overflow: hidden;
-}
+/******************************************************************************* + $Id$ + + This file is part of the GraphLink software. + GraphLink is distributed under the MIT License. + Copyright (C) 2005-2006 Max Khitrov <max@mxsoft.org> +*******************************************************************************/ + +/** + * Defines the background image used for the graph, as well as the actual data + * locations. + * Use padding-left and padding-top to align the data area correctly with your + * background image. + * Width and height should same as the dimensions of the image, minus the + * padding values in both directions. + */ +div.GraphLink { + width: 212px; + height: 60px; + padding-left: 38px; + padding-top: 10px; + background-image: url(/themes/nervecenter/images/misc/graph.png); + overflow: hidden; +} + +/** + * Defines the data display area. Modify to fit your background image. + */ +div.GraphLinkData { + width: 200px; + height: 50px; + overflow: hidden; +} + +/** + * Defines the look of one bar. Nothing to change here other than the color. + */ +span.GraphLinkBar { + background-color: #990000; + height: 100%; + float: left; + overflow: hidden; +} diff --git a/usr/local/www/themes/code-red/javascript/ie7/ie7-server.css b/usr/local/www/themes/code-red/javascript/ie7/ie7-server.css index d070bb5..47c7edd 100755 --- a/usr/local/www/themes/code-red/javascript/ie7/ie7-server.css +++ b/usr/local/www/themes/code-red/javascript/ie7/ie7-server.css @@ -1,43 +1,43 @@ -body, td, dd {font: 10pt Verdana, Arial, Helvetica, sans-serif; color: black;}
-body {margin: 8px; background: #333;}
-h1 {margin: 0;}
-h1 a:hover {background-color: transparent;}
-h2 {font-size: 1.75em;}
-h3 {font-size: 1.1em;}
-a:active {color: #ff0000;}
-a:link {color: #0a6cce;}
-a:visited {color: #0a6cce;}
-code, *.code {font-family: monospace; font-size: 100%; font-style: normal; white-space: nowrap;
- padding: 0 1px; background: #f2f3f8; border: #d6d9e9 1px solid;}
-code.box {display: block; padding: 10px; margin: 0.5em 0;}
-ul {list-style-type: square;}
-dd {margin: .2em 0 .5em 1em;}
-dl.library dt {display: list-item; margin-left: 3em; list-style-type: square;}
-dl.library dd {font-style: italic; margin-left: 3em;}
-dt {font-weight: bold;}
-dt.pack {color: brown;}
-a img {border-style: none;}
-hr {height: 1px; color: #000; border-style: solid;}
-hr.short {height: 2px; width: 100px;}
-div.document {background: #eef; padding: 20px 20px 5px 20px; width: 600px; border: 1px solid black;}
-hr {border-bottom-width: 0px;}
-div.header hr {color: #0a6cce; background-color: #0a6cce;}
-div.content {min-height: 100px;}
-div.footer hr {color: #898e79; background-color: #898e79; }
-div.header, div.header a:link, div.header a:visited, h3 a:link, h3 a:visited {text-decoration: none;}
-a:hover {color: #fff; background-color: #0a6cce; text-decoration: none;}
-div.footer a:hover {background-color: transparent; text-decoration: none;}
-div.header .menu {text-align: right;}
-div.footer {font-size: x-small; margin-top: 8px;}
-div.footnote {font-family: "times new roman", times; font-style: italic; margin-top: 10px;}
-#license {margin-top: 5px; font-size: xx-small;}
-table {border-top: 1px solid #000; border-left: 1px solid #000;}
-th {background-color: #fff; text-align: left;}
-th, td {border-right: 1px solid #000; border-bottom: 1px solid #000;}
-th.small {width: 100px;}
-th.medium {width: 200px;}
-th.large {width: 270px;}
-th.x-large {width: 408px;}
-table.fixed {table-layout: fixed;}
-span.comment {color: #666;}
-
+body, td, dd {font: 10pt Verdana, Arial, Helvetica, sans-serif; color: black;} +body {margin: 8px; background: #333;} +h1 {margin: 0;} +h1 a:hover {background-color: transparent;} +h2 {font-size: 1.75em;} +h3 {font-size: 1.1em;} +a:active {color: #ff0000;} +a:link {color: #0a6cce;} +a:visited {color: #0a6cce;} +code, *.code {font-family: monospace; font-size: 100%; font-style: normal; white-space: nowrap; + padding: 0 1px; background: #f2f3f8; border: #d6d9e9 1px solid;} +code.box {display: block; padding: 10px; margin: 0.5em 0;} +ul {list-style-type: square;} +dd {margin: .2em 0 .5em 1em;} +dl.library dt {display: list-item; margin-left: 3em; list-style-type: square;} +dl.library dd {font-style: italic; margin-left: 3em;} +dt {font-weight: bold;} +dt.pack {color: brown;} +a img {border-style: none;} +hr {height: 1px; color: #000; border-style: solid;} +hr.short {height: 2px; width: 100px;} +div.document {background: #eef; padding: 20px 20px 5px 20px; width: 600px; border: 1px solid black;} +hr {border-bottom-width: 0px;} +div.header hr {color: #0a6cce; background-color: #0a6cce;} +div.content {min-height: 100px;} +div.footer hr {color: #898e79; background-color: #898e79; } +div.header, div.header a:link, div.header a:visited, h3 a:link, h3 a:visited {text-decoration: none;} +a:hover {color: #fff; background-color: #0a6cce; text-decoration: none;} +div.footer a:hover {background-color: transparent; text-decoration: none;} +div.header .menu {text-align: right;} +div.footer {font-size: x-small; margin-top: 8px;} +div.footnote {font-family: "times new roman", times; font-style: italic; margin-top: 10px;} +#license {margin-top: 5px; font-size: xx-small;} +table {border-top: 1px solid #000; border-left: 1px solid #000;} +th {background-color: #fff; text-align: left;} +th, td {border-right: 1px solid #000; border-bottom: 1px solid #000;} +th.small {width: 100px;} +th.medium {width: 200px;} +th.large {width: 270px;} +th.x-large {width: 408px;} +table.fixed {table-layout: fixed;} +span.comment {color: #666;} + diff --git a/usr/local/www/themes/code-red/javascript/transmenu-body.php b/usr/local/www/themes/code-red/javascript/transmenu-body.php index e9bacbc..ada3d0c 100755 --- a/usr/local/www/themes/code-red/javascript/transmenu-body.php +++ b/usr/local/www/themes/code-red/javascript/transmenu-body.php @@ -1,51 +1,51 @@ -<?php
-/* $Id$ */
-/* DISABLE_PHP_LINT_CHECKING */
-/* ========================================================================== */
-/*
- transmenu.php
- Copyright (C) 2006 Daniel S. Haischt <me@daniel.stefan.haischt.name>
- All rights reserved.
- */
-/* ========================================================================== */
-/*
- Originally 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.
- */
-/* ========================================================================== */
-
-function nervecenterTransmenuGetBodyJS() {
- global $rootmenu;
-
- if (isset($rootmenu)) {
- return $rootmenu->getMenuJScript();
- } else if (empty($rootmenu)) {
- return "alert('No rootmenu object found.');";
- } else {
- return "alert('No JavaScript attached to rootmenu object.');";
- }
-}
-
-?>
+<?php +/* $Id$ */ +/* DISABLE_PHP_LINT_CHECKING */ +/* ========================================================================== */ +/* + transmenu.php + Copyright (C) 2006 Daniel S. Haischt <me@daniel.stefan.haischt.name> + All rights reserved. + */ +/* ========================================================================== */ +/* + Originally 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. + */ +/* ========================================================================== */ + +function nervecenterTransmenuGetBodyJS() { + global $rootmenu; + + if (isset($rootmenu)) { + return $rootmenu->getMenuJScript(); + } else if (empty($rootmenu)) { + return "alert('No rootmenu object found.');"; + } else { + return "alert('No JavaScript attached to rootmenu object.');"; + } +} + +?> diff --git a/usr/local/www/themes/code-red/javascript/transmenu-head.php b/usr/local/www/themes/code-red/javascript/transmenu-head.php index a2b9cf1..6eea15d 100755 --- a/usr/local/www/themes/code-red/javascript/transmenu-head.php +++ b/usr/local/www/themes/code-red/javascript/transmenu-head.php @@ -1,85 +1,85 @@ -<?php
-/* $Id$ */
-/* DISABLE_PHP_LINT_CHECKING */
-/* ========================================================================== */
-/*
- transmenu.php
- Copyright (C) 2006 Daniel S. Haischt <me@daniel.stefan.haischt.name>
- All rights reserved.
- */
-/* ========================================================================== */
-/*
- Originally 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.
- */
-/* ========================================================================== */
-
-function nervecenterTransmenuGetHeadJS() {
- global $g, $rootmenu;
-
- $transmenu_stub =<<<EOD
- function tmenuinit() {
- //==========================================================================================
- // if supported, initialize TransMenus
- //==========================================================================================
- // Check isSupported() so that menus aren't accidentally sent to non-supporting browsers.
- // This is better than server-side checking because it will also catch browsers which would
- // normally support the menus but have javascript disabled.
- //
- // If supported, call initialize() and then hook whatever image rollover code you need to do
- // to the .onactivate and .ondeactivate events for each menu.
- //==========================================================================================
- if (TransMenu.isSupported()) {
- TransMenu.initialize();
-
- // hook all the highlight swapping of the main toolbar to menu activation/deactivation
- // instead of simple rollover to get the effect where the button stays hightlit until
- // the menu is closed.
- @@CHILD_JSCRIPT@@
- }
- } // end function
-EOD;
-
- if (empty($rootmenu)) {
- require_once("menudef.inc");
- }
-
- $childJScript = "";
- foreach ($rootmenu->getChildren() as $component) {
- $id = "mnua_" . str_replace(" ", "", strtolower($component->getID()));
-
- $childJScript .=<<<EOD
- {$id}.onactivate = function() { document.getElementById("{$id}").className = "hover"; };
- {$id}.ondeactivate = function() { document.getElementById("{$id}").className = ""; };
-
-EOD;
- }
-
- $transmenu_stub = basename($_SERVER['PHP_SELF']) != "wizard.php" ? str_replace("@@CHILD_JSCRIPT@@", $childJScript, $transmenu_stub) : "";
-
- return $transmenu_stub;
-}
-
-?>
+<?php +/* $Id$ */ +/* DISABLE_PHP_LINT_CHECKING */ +/* ========================================================================== */ +/* + transmenu.php + Copyright (C) 2006 Daniel S. Haischt <me@daniel.stefan.haischt.name> + All rights reserved. + */ +/* ========================================================================== */ +/* + Originally 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. + */ +/* ========================================================================== */ + +function nervecenterTransmenuGetHeadJS() { + global $g, $rootmenu; + + $transmenu_stub =<<<EOD + function tmenuinit() { + //========================================================================================== + // if supported, initialize TransMenus + //========================================================================================== + // Check isSupported() so that menus aren't accidentally sent to non-supporting browsers. + // This is better than server-side checking because it will also catch browsers which would + // normally support the menus but have javascript disabled. + // + // If supported, call initialize() and then hook whatever image rollover code you need to do + // to the .onactivate and .ondeactivate events for each menu. + //========================================================================================== + if (TransMenu.isSupported()) { + TransMenu.initialize(); + + // hook all the highlight swapping of the main toolbar to menu activation/deactivation + // instead of simple rollover to get the effect where the button stays hightlit until + // the menu is closed. + @@CHILD_JSCRIPT@@ + } + } // end function +EOD; + + if (empty($rootmenu)) { + require_once("menudef.inc"); + } + + $childJScript = ""; + foreach ($rootmenu->getChildren() as $component) { + $id = "mnua_" . str_replace(" ", "", strtolower($component->getID())); + + $childJScript .=<<<EOD + {$id}.onactivate = function() { document.getElementById("{$id}").className = "hover"; }; + {$id}.ondeactivate = function() { document.getElementById("{$id}").className = ""; }; + +EOD; + } + + $transmenu_stub = basename($_SERVER['PHP_SELF']) != "wizard.php" ? str_replace("@@CHILD_JSCRIPT@@", $childJScript, $transmenu_stub) : ""; + + return $transmenu_stub; +} + +?> diff --git a/usr/local/www/themes/code-red/login.css b/usr/local/www/themes/code-red/login.css index 9500fba..6ccdd42 100755 --- a/usr/local/www/themes/code-red/login.css +++ b/usr/local/www/themes/code-red/login.css @@ -1,1136 +1,1136 @@ -/* Element CSS Definitions */
-html, body, td, th, input, select {
- font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
- font-size: 0.9em;
-
-}
-
-.infoboxnptd2 {
- width:100%;
- color:white;
- background-color:#990000;
- padding-right: 10px;
-}
-
-.infoboxnptd {
- width:8%;
- background-color:#990000;
-}
-
-.infoboxnptable {
- height:32px;
- width:100%;
- background-color:#990000;
-}
-
-.infoboxnptable2 {
- height:32px;
- width:100%;
- background-color:#990000;
-}
-
-.infoboxnp {
- background-color:#990000;
- width:100%;
-}
-
-.infoboxnpimg {
- vertical-align:middle;
- width:28px;
- height:32px;
- background-color:#990000;
-}
-
-/* please adjust the bgcolor to be used together with niftycorners! */
-.rtop, .artop {
- background-color: #999999;
-}
-
-div.GraphLink {
- position: relative;
-}
-
-span.GraphLinkLine {
- position: absolute;
- background-color: #990000;
- width: 100%;
-}
-
-/* DOM Tooltip CSS definitions */
-div.niceTitle
-{
- background-color: #333333;
- color: #FFFFFF;
- border-bottom: 1px dotted #FFFFFF;
- font-weight: bold;
- font-size: 13px;
- font-family: "Trebuchet MS", sans-serif;
- width: 250px;
- left: 0;
- top: 0;
- padding: 4px;
- position: absolute;
- text-align: left;
- z-index: 20;
- -moz-border-radius: 0 10px 10px 10px;
- filter: progid:DXImageTransform.Microsoft.Alpha(opacity=87);
- -moz-opacity: .87;
- -khtml-opacity: .87;
- opacity: .87;
-}
-div.niceTitle h1
-{
- background: #990000;
- border-bottom: 1px dotted #FFFFFF;
- font-weight: bold;
- font-size: 13px;
- font-family: "Trebuchet MS", sans-serif;
- margin: 3px;
- padding-top: 1px;
- padding-bottom: 1px;
- padding-left: 3px;
- text-align: left;
- left: 0;
- top: 0;
- -moz-border-radius: 0 8px 0 0;
- -moz-opacity: 1;
-}
-div.niceTitle .contents
-{
- margin: 0;
- padding: 0 3px;
- filter: progid:DXImageTransform.Microsoft.Alpha(opacity=100);
- -moz-opacity: 1;
- -khtml-opacity: 1;
- opacity: 1;
-}
-div.niceTitle p
-{
- background: #FFFFFF;
- border: 1px solid #990000;
- color: #000000;
- font-size: 9px;
- padding: 5px;
- margin: 3px;
- text-align: left;
- -moz-opacity: 1;
- -moz-border-radius: 0 0 8px 8px;
-}
-
-body {
- margin: 0px auto;
- background: url('images/logon-background.gif') no-repeat;
- background-position : center 0px;
- background-color: #4a0203;
-}
-
-form {
- margin: 0px;
-}
-a {
- text-decoration: none;
-}
-form input {
- font-size: 1.1em;
-}
-
-iframe {
- z-index: 1;
- border: 1px dashed #990000;
-}
-.iframe {
- background-color: #FFFFFF;
-}
-
-/* ID Based CSS Definitions */
-#wrapper {
- width: 810px;
- margin: 0px auto;
-}
-
-#header {
- background: url('images/header.png') no-repeat;
- background-position: 0px;
- height: 102px;
- width: 810px;
- margin-bottom: 5px;
- z-index: 2;
-}
-#header-left {
- position: relative;
- /* background: url('images/logo.gif') no-repeat; */
- background-position: center;
- height: 65px;
- width: 145px;
- left: 10px;
- float: left;
-}
-#header-left #status-link {
- position: relative;
- top: 10px;
- left: 6px;
-}
-#header-right {
- position: relative;
- /* background: url('images/header.gif') no-repeat; */
- height: 70px;
- color: #fff;
- left: 0px;
- margin-left: 165px;
-}
-#header-right .alert {
- position: relative;
- /* background: url('images/alert.gif') no-repeat; */
- background-position: 4px 2px;
- color: #fff;
- height: 17px;
- width: 500px;
- padding: 4px;
- padding-left: 27px;
- float: left;
-}
-#header-right .container {
- position: relative;
-}
-#header-right .container .left {
- position: relative;
- float: left;
- font-size: 1.3em;
- font-weight: bold;
- top: 15px;
- left: 4px;
- display: none;
-}
-#header-right .container .right {
- position: relative;
- float: right;
- top: 22px;
- padding-right: 4px;
- z-index: 1;
-}
-
-#header-right .container .right #alerts {
- position: relative;
- background: url('images/alert_bgr.png') no-repeat;
- height: 39px;
- width: 431px;
- z-index: 1;
- padding-top: 20px;
- padding-left: 5px;
- margin: 0px;
-}
-#header-right .container .right #hostname {
- position: relative;
- height: 39px;
- width: 431px;
- z-index: 1;
- padding-left: 5px;
- margin: 0px;
- top: 25px;
- left: 230px;
- font-size: 14px;
- color: #cccccc;
- font-weight: bold;
-}
-
-
-
-table#marquee {
- position: relative;
- top: -6px;
- left: -5px;
- border: 0;
- padding: 0;
- margin: 0;
- width: 424px;
- background-color: transparent;
- padding: 2px;
- border: 0px;
-}
-span#marquee-container {
- position: absolute;
- visibility: hidden;
- top: -100px;
- left: -10000px;
-}
-div#marquee-text {
- font-size: 1.18em;
- font-weight: normal;
- font-family: Verdana;
- color: #ffffff;
-}
-table#marquee div#container {
- position: relative;
- overflow: hidden;
- width: 418px;
- height: 20px;
-}
-table#marquee div#container div#scroller {
- position: absolute;
- left: 0px;
- top: 0px;
-}
-
-
-
-
-
-#content {
- position: relative;
- top: -15px;
- left: 0px;
- margin-top: 0px;
- margin-left: 0px;
- padding-top: 0px;
- width: 810px;
- background-color: #ffffff;
-}
-
-#left {
- width: 810px;
- height: 1px;
-}
-#right {
- position: relative;
- top: -10px;
- width: 770px;
- margin-top: 0px;
- margin-left: 5px;
- margin-right: 5px;
- padding-top: 5px;
- padding-left: 10px;
- padding-right: 10px;
- padding-bottom: 20px;
- min-height: 400px;
-}
-
-#footer {
- position: relative;
- background: url('images/footer.png') no-repeat;
- top: -18px;
- left: 0px;
- width: 810px;
- height: 75px;
- color: #ffffff;
- text-align: center;;
- font-size: 0.9em;
- padding-top: 17px;
- margin-bottom: 20px;
- clear: both;
-}
-#footer p {
- padding: 0px;
- margin: 0px;
-}
-
-/* Style the List */
-#navigation {
- /* background: url('images/menu.gif') no-repeat; */
- /* width: 693px; */
- position: relative;
- top: -25px;
- left: 3px;
- width: 810px;
- padding: 0px;
- height: 28px;
- z-index: 3;
-}
-#navigation ul {
- padding: 0;
- margin: 0;
- list-style: none;
- text-align: center;
-}
-#navigation ul#menu {
- padding-top: 3px;
- padding-left: 5px;
-}
-
-/* Style the List Elements */
-#navigation ul li {
- float: left;
- position: relative;
- /* width: 7.5em; */
- width: 8.77em;
-}
-#navigation ul li div {
- font-size: 1em;
- font-weight: bold;
-}
-/* Make the List inside the List Elements */
-/* initially hidden with absolute position */
-#navigation ul li ul {
- display: none;
- position: absolute;
- top: 2em;
- left: -2px;
- width: 9em;
- font-weight: normal;
- background: transparent bottom left no-repeat; /* This is key to making the menu maintain visibility when not on a link */
- /* background-color: #202020;
- background: url("images/menu_footer.gif") no-repeat;
- background-position: bottom;
- */
- padding: 0em 0 0.4em 0;
- padding-top: 0.3em;
-}
-/* to override top and left in browsers other than IE */
-/* which will position to the top right of the containing */
-/* li, rather than bottom left */
-#navigation ul li > ul {
- top: auto;
- left: auto;
- left: -1px !important;
-}
-/* Show initial drop down upon mouse over, but do not show */
-/* nested side drop menus within listed elements */
-#navigation ul li:hover ul {
- display: block;
- cursor: pointer;
-}
-#navigation ul li:hover {
- cursor: pointer;
- cursor: pointer;
-}
-#navigation ul li:hover div {
- text-decoration: none;
-}
-
-#navigation ul li {
- background-color: transparent;
- color: #FFF;
-}
-#navigation ul li ul li {
- border: 1px solid #990000;
- width: 8.8em;
- height: 1.6em;
- line-height: 1.6em;
- background-color: #990000;
- color: #FFF;
-}
-#navigation ul li ul li:hover {
- background-color: #666666;
-}
-
-#navigation li li a {
- display: block;
- padding-left: 10px;
- padding-right: 10px;
-}
-
-#navigation ul li ul li a.navlnk:hover {
- text-decoration: none;
-}
-#navigation ul li.first {
- border-right: 0px;
-}
-#navigation ul li.middle {
- border-right: 0px;
-}
-#navigation ul li.last {
-
-}
-
-#navigation ul li.dropfirst {
- border-bottom: 0px;
-}
-#navigation ul li.dropmiddle {
- border-bottom: 0px;
-}
-#navigation ul li.droplast {
-}
-
-#wzdtabcont {
- float: left;
- background-color: #FFFFFF;
- color: #000000;
- padding: 0;
-}
-
-ul#wzdnav {
- font-size: 0.96em;
- float: left;
- width: 14.5em;
- margin: 0;
- padding-left: 18px;
-}
-
-ul#wzdnav li {
- list-style: none;
- margin: 0;
- padding-bottom: 0.2em;
- padding-left: 0;
-}
-
-ul#wzdnav a {
- display: block;
- padding: 0.3em;
- font-weight: normal;
-}
-
-#wzdnavbold a {
- display: block;
- padding: 0.3em;
- font-weight: bold ! important;
-}
-
-ul#wzdnav a:link {
- color: black;
- background-color: #eee;
-}
-
-ul#wzdnav a:visited {
- color: #666;
- background-color: #eee;
-}
-
-ul#wzdnav a:hover {
- color: black;
- background-color: white;
-}
-
-ul#wzdnav a:active {
- color: white;
- background-color: gray;
-}
-
-#graph {
- position: relative;
- z-index: 10;
-}
-
-#logoutbtn {
- position: absolute;
- left: 95%;
- vertical-align: middle;
-}
-
-
-#graph {
- position: relative;
- z-index: 10;
-}
-
-
-
-/* Class Based CSS Definitions */
-.pgtitle {
- font-size: 18px;
- color: #777777;
- font-weight: bold;
-}
-.tfrtitle {
- font-size: 18px;
- color: #ffffff;
- font-weight: bold;
-}
-.vncell {
- background-color: #DDDDDD;
- padding-right: 20px;
- padding-left: 8px;
- border-bottom: 1px solid #999999;
-}
-.formfld {
- padding-left: 19px;
- font-size: small;
-}
-.formselect {
- font-size: 1.0em;
-}
-.langopt {
- padding-left: 34px;
- padding-top: 2px;
- padding-bottom: 2px;
-}
-.saved {
- /* background: url('/themes/nione/images/icons/icon_wzd_saved.png') no-repeat 0 1px #FFFFFF; */
- list-style-image: url('/themes/nervecenter/images/icons/icon_wzd_saved.png') ! important;
-}
-.notsaved {
- /* background: url('/themes/nione/images/icons/icon_wzd_nsaved.png') no-repeat 0 1px #FFFFFF; */
- list-style-image: url('/themes/nervecenter/images/icons/icon_wzd_nsaved.png') ! important;
-}
-.en {
- background: url('/themes/nervecenter/images/icons/icon_flag_en.png') no-repeat 0 1px #FFFFFF;
-}
-.de {
- background: url('/themes/nervecenter/images/icons/icon_flag_de.png') no-repeat 0 1px #FFFFFF;
-}
-.es {
- background: url('/themes/nervecenter/images/icons/icon_flag_es.png') no-repeat 0 1px #FFFFFF;
-}
-.pt_BR {
- background: url('/themes/nervecenter/images/icons/icon_flag_pt_BR.png') no-repeat 0 1px #FFFFFF;
-}
-.host {
- background: url('/themes/nervecenter/images/icons/icon_frmfld_host.png') no-repeat 0 1px #FFFFFF;
-}
-.search {
- background: url('/themes/nervecenter/images/icons/icon_frmfld_search.png') no-repeat 0 1px #FFFFFF;
-}
-.file {
- background: url('/themes/nervecenter/images/icons/icon_frmfld_file.png') no-repeat 0 1px #FFFFFF;
-}
-.mail {
- background: url('/themes/nervecenter/images/icons/icon_frmfld_mail.png') no-repeat 0 1px #FFFFFF;
-}
-.imp {
- background: url('/themes/nervecenter/images/icons/icon_frmfld_imp.png') no-repeat 0 1px #FFFFFF;
-}
-.pwd {
- background: url('/themes/nervecenter/images/icons/icon_frmfld_pwd.png') no-repeat 0 1px #FFFFFF;
-}
-.user {
- background: url('/themes/nervecenter/images/icons/icon_frmfld_user.png') no-repeat 0 1px #FFFFFF ;
-}
-.group {
- background: url('/themes/nervecenter/images/icons/icon_frmfld_group.png') no-repeat 0 1px #FFFFFF;
-}
-.url {
- background: url('/themes/nervecenter/images/icons/icon_frmfld_url.png') no-repeat 0 1px #FFFFFF;
-}
-.time {
- background: url('/themes/nervecenter/images/icons/icon_frmfld_time.png') no-repeat 0 1px #FFFFFF;
-}
-.unknown {
- background: url('/themes/nervecenter/images/icons/icon_frmfld_unknown.png') no-repeat 0 1px #FFFFFF;
-}
-.formfld_cert {
- background: url('/themes/nervecenter/images/icons/icon_frmfld_cert.png') no-repeat 0 1px #FFFFFF;
- padding-left: 28px;
- font-family: Courier New, Courier, monospaced;
- font-size: 11px;
-}
-.formfldalias {
- background-color: #990000;
- color: #FFFFFF;
-}
-.formpre {
- font-family: Courier New, Courier, monospaced;
- font-size: 10px;
-}
-.formbtn {
- font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
- font-size: 13px;
- font-weight: bold;
-}
-.formbtns {
- font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
- font-size: 10px;
- font-weight: bold;
-}
-.vvcell {
- background-color: #FFFFC6;
-}
-.errmsg {
- font-weight: bold;
- color: #CC0000;
-}
-.red {
- color: #CC0000;
-}
-.gray {
- color: #A0A0A0;
-}
-.vexpl {
- font-size: 11px;
-}
-.navlnk {
- color: #FFFFFF;
- text-decoration: none;
- font-size: 13px;
-}
-.navlnks {
- color: #FFFFFF;
- text-decoration: none;
- font-size: 11px;
-}
-.redlnk {
- color: #990000;
- text-decoration: none;
-}
-.tblnk {
- color: #FFFFFF;
- text-decoration: none;
-}
-.vncellreq {
- background-color: #DDDDDD;
- padding-right: 20px;
- padding-left: 8px;
- font-weight: bold;
- border-bottom: 1px solid #999999;
-}
-.vncellt {
- background-color: #DDDDDD;
- padding-right: 20px;
- padding-left: 8px;
- padding-top: 4px;
- padding-bottom: 4px;
- font-weight: bold;
- border-bottom: 1px solid #999999;
-}
-.vtable {
- border-bottom: 1px solid #999999;
-}
-.vnsepcell {
- background-color: #BBBBBB;
- padding-right: 20px;
- padding-left: 8px;
- font-weight: bold;
- border-bottom: 1px solid #999999;
- font-size: 11px;
-}
-.cpline {
- font-size: 11px;
- color: #FFFFFF;
-}
-.hostname {
- font-size: 11px;
- color: #990000;
- font-weight: bold;
-}
-.vnsepcellr {
- background-color: #BBBBBB;
- padding-right: 20px;
- padding-left: 8px;
- font-weight: bold;
- border-right: 1px solid #999999;
- border-bottom: 1px solid #999999;
- font-size: 11px;
-}
-.listr {
- background-color: #FFFFFF;
- border-right: 1px solid #999999;
- border-bottom: 1px solid #999999;
- font-size: 11px;
- padding-right: 6px;
- padding-left: 6px;
- padding-top: 4px;
- padding-bottom: 4px;
-}
-.listrpad {
- border-right: 1px solid #999999;
- border-bottom: 1px solid #999999;
- font-size: 11px;
- padding-right: 16px;
- padding-left: 10px;
- padding-top: 8px;
- padding-bottom: 8px;
-}
-.listn {
- font-size: 11px;
- padding-right: 16px;
- padding-left: 6px;
- padding-top: 4px;
- padding-bottom: 4px;
-}
-.listbg {
- border-right: 1px solid #999999;
- border-bottom: 1px solid #999999;
- font-size: 11px;
- background-color: #990000;
- padding-right: 16px;
- padding-left: 6px;
- padding-top: 4px;
- padding-bottom: 4px;
-}
-.listbggrey {
- border-right: 1px solid #999999;
- border-bottom: 1px solid #999999;
- font-size: 11px;
- background-color: #999999;
- padding-right: 16px;
- padding-left: 6px;
- padding-top: 4px;
- padding-bottom: 4px;
-}
-.listhdr {
- background-color: #BBBBBB;
- padding-right: 16px;
- padding-left: 6px;
- font-weight: bold;
- border-bottom: 1px solid #999999;
- font-size: 11px;
- padding-top: 5px;
- padding-bottom: 5px;
-}
-.listhdr a {
- color: #000000;
-}
-.listhdrr {
- background-color: #BBBBBB;
- padding-right: 16px;
- padding-left: 6px;
- font-weight: bold;
- border-right: 1px solid #999999;
- border-bottom: 1px solid #999999;
- font-size: 11px;
- padding-top: 5px;
- padding-bottom: 5px;
-}
-.listhdrr a {
- color: #000000;
-}
-.listlr {
- background-color: #FFFFFF;
- border-right: 1px solid #999999;
- border-bottom: 1px solid #999999;
- border-left: 1px solid #999999;
- font-size: 11px;
- padding-right: 6px;
- padding-left: 6px;
- padding-top: 4px;
- padding-bottom: 4px;
-}
-.listlrns {
- background-color: #FFFFFF;
- border-right: 1px solid #999999;
- border-bottom: 1px solid #999999;
- border-left: 1px solid #999999;
- font-size: 11px;
- padding-top: 4px;
- padding-bottom: 4px;
-}
-.list {
- font-size: 11px;
- padding-left: 6px;
- padding-top: 2px;
- padding-bottom: 2px;
-}
-.listt {
- font-size: 11px;
- padding-top: 5px;
-}
-.listhdrrns {
- background-color: #BBBBBB;
- padding-left: 6px;
- padding-top: 5px;
- padding-bottom: 5px;
- padding-right: 6px;
- font-weight: bold;
- border-right: 1px solid #999999;
- border-bottom: 1px solid #999999;
- font-size: 11px;
-}
-.listbgns {
- border-right: 1px solid #999999;
- border-bottom: 1px solid #999999;
- font-size: 11px;
- background-color: #D9DEE8;
- padding-left: 6px;
- padding-right: 4px;
- padding-top: 4px;
- padding-bottom: 4px;
-}
-.listtopic {
- border-right: 1px solid #999999;
- font-size: 11px;
- background-color: #990000;
- padding-right: 16px;
- padding-left: 6px;
- color: #FFFFFF;
- font-weight: bold;
- padding-top: 5px;
- padding-bottom: 5px;
-}
-.optsect_t {
- border-right: 1px solid #999999;
- background-color: #990000;
- padding-right: 6px;
- padding-left: 6px;
- padding-top: 2px;
- padding-bottom: 2px;
-}
-.optsect_s {
- font-size: 11px;
- color: #FFFFFF;
- font-weight: bold;
-}
-.tabnavtbl {
-}
-
-
-/* MISC CSS Definitions */
-ul#tabnav {
- font-size: 11px;
- font-weight: bold;
- list-style-type: none;
- margin: 0;
- padding: 0;
-}
-ul#tabnav li.tabinact1 {
- float: left;
- background-color: #777777;
- color: #FFFFFF;
- padding: 0;
- white-space: nowrap;
-}
-ul#tabnav li.tabinact {
- float: left;
- border-left: 1px solid #999999;
- background-color: #777777;
- color: #FFFFFF;
- padding: 0;
- white-space: nowrap;
-}
-ul#tabnav li.tabinact a {
- float: left;
- display: block;
- text-decoration: none;
- padding: 5px 8px 5px 8px;
- color: #FFFFFF;
-}
-ul#tabnav li.tabinact1 a {
- float: left;
- display: block;
- text-decoration: none;
- padding: 5px 8px 5px 8px;
- color: #FFFFFF;
-}
-ul#tabnav li.tabact {
- float: left;
- background-color: #EEEEEE;
- color: #000000;
- padding: 5px 8px 5px 8px;
- white-space: nowrap;
-}
-.tabcont {
- background-color: #EEEEEE;
- padding-right: 12px;
- padding-left: 12px;
- padding-top: 12px;
- padding-bottom: 12px;
-}
-.tabact {
- float: left;
- background-color: #EEEEEE;
- color: #000000;
- padding: 5px 8px 5px 8px;
- white-space: nowrap;
-}
-.tabinact {
- font-weight: bold;
- float: left;
- border-left: 1px solid #999999;
- background-color: #777777;
- color: #FFFFFF;
- padding: 0;
- white-space: nowrap;
-}
-.menu {
- background-color: #000000;
- white-space: nowrap;
- padding: 0px 5px 0px 5px;
- width: 100%;
- vertical-align: top;
-}
-
-
-/* Auto Complete Suggestions */
-div.suggestions {
- -moz-box-sizing: border-box;
- /* box-sizing: border-box; */
- border: 1px solid black;
- position: absolute;
- background-color: #990000;
- color: #FFF;
-}
-
-div.suggestions div {
- cursor: default;
- padding: 0px 3px;
- background-color: #990000;
- color: #FFF;
-}
-
-div.suggestions div.current {
- background-color: #3366cc;
- color: #FFF;
-}
-/* End Auto Complete Suggestions */
-
-
-/* Nifty Corners Crap */
-.rtop,.artop{display:block}
-.rtop *,.artop *{display:block;height:1px;overflow:hidden;font-size:1px}
-.artop *{border-style: solid;border-width:0 1px}
-.r1,.rl1,.re1,.rel1{margin-left:5px}
-.r1,.rr1,.re1,.rer1{margin-right:5px}
-.r2,.rl2,.re2,.rel2,.ra1,.ral1{margin-left:3px}
-.r2,.rr2,.re2,.rer2,.ra1,.rar1{margin-right:3px}
-.r3,.rl3,.re3,.rel3,.ra2,.ral2,.rs1,.rsl1,.res1,.resl1{margin-left:2px}
-.r3,.rr3,.re3,.rer3,.ra2,.rar2,.rs1,.rsr1,.res1,.resr1{margin-right:2px}
-.r4,.rl4,.rs2,.rsl2,.re4,.rel4,.ra3,.ral3,.ras1,.rasl1,.res2,.resl2{margin-left:1px}
-.r4,.rr4,.rs2,.rsr2,.re4,.rer4,.ra3,.rar3,.ras1,.rasr1,.res2,.resr2{margin-right:1px}
-.rx1,.rxl1{border-left-width:5px}
-.rx1,.rxr1{border-right-width:5px}
-.rx2,.rxl2{border-left-width:3px}
-.rx2,.rxr2{border-right-width:3px}
-.re2,.rel2,.ra1,.ral1,.rx3,.rxl3,.rxs1,.rxsl1{border-left-width:2px}
-.re2,.rer2,.ra1,.rar1,.rx3,.rxr3,.rxs1,.rxsr1{border-right-width:2px}
-.rxl1,.rxl2,.rxl3,.rxl4,.rxsl1,.rxsl2,.ral1,.ral2,.ral3,.ral4,.rasl1,.rasl2{border-right-width:0}
-.rxr1,.rxr2,.rxr3,.rxr4,.rxsr1,.rxsr2,.rar1,.rar2,.rar3,.rar4,.rasr1,.rasr2{border-left-width:0}
-.r4,.rl4,.rr4,.re4,.rel4,.rer4,.ra4,.rar4,.ral4,.rx4,.rxl4,.rxr4{height:2px}
-.rer1,.rel1,.re1,.res1,.resl1,.resr1{border-width:1px 0 0;height:0px !important;height /**/:1px}
-/* End Nifty Corners Crap */
-
-
-
-/* CSS for Dynamic Log Viewer */
-/* Author: Erik Kristensen */
-div#log div.log-entry {
- clear: both;
-}
-
-div#log div.log-entry span,
-div#log div.log-header span {
- padding: 3px 2px 3px 2px;
- padding-left: 8px;
-}
-
-div#log div.log-entry span.log-action {
- padding-bottom: 6px;
- padding-left: 5px;
- padding-right: 5px;
-}
-
-div#log div.log-header span {
- border-top: 1px solid #999;
- background-color: #bbb;
- font-weight: bold;
- text-align: left;
-}
-
-div#log span.log-action,
-div#log span.log-time,
-div#log span.log-interface,
-div#log span.log-source,
-div#log span.log-destination,
-div#log span.log-protocol {
- float: left;
- text-align: left;
- border-left: 1px solid #999;
- border-bottom: 1px solid #999;
-}
-
-div#log span.log-general {
-
-}
-
-div#log span.log-protocol {
- border-right: 1px solid #999;
-}
-
-div#log span.log-action {
- width: 2em;
- text-align: center;
-}
-
-div#log span.log-time {
- width: 12.5em;
-}
-
-div#log span.log-interface {
- width: 5em;
-}
-
-div#log span.log-source,
-div#log span.log-destination {
- width: 17.6em;
-}
-
-div#log span.log-protocol {
- width: 5.5em;
-}
-/* END CSS FOR DYNAMIC LOG VIEWER */
-
-
-#login {
-/* background: #cccccc; */
- background-color: transparent;
- border: 0px solid #cccccc;
- margin: 5em auto;
- padding: 0em;
- width: 400px;
-/* filter:alpha(opacity=60);
- -moz-opacity:0.6;
- -khtml-opacity: 0.6;
- opacity: 0.6; */
-}
-
-#login h1 {
- background: url(images/misc/logon.png) no-repeat top left;
-/* background: #ffffff; */
- margin-top: 0;
- display: block;
- text-indent: -1000px;
- height: 400px;
- border-bottom: none;
-}
-
-#login p {
- font-size: 1em;
- font-weight: bold;
- padding: -40px;
- margin: 0em;
-/* text-indent: 10px; */
- position: relative;
- top: -390px;
- left: 60px;
-}
-
-#login span {
- font-size: 1em;
- font-weight: bold;
- width: 20%;
- padding: 3px;
- margin: 0em;
-/* text-indent: 10px; */
-}
-
-#login p#text {
- font-size: 1em;
- font-weight: normal;
- padding: 3px;
- margin: 0em;
-/* text-indent: 10px;
- position: relative;
- top: -300px; */
-}
-
-#login #username, #password {
- font-size: 1em;
- width: 60%;
- padding: 3px;
- margin: 0em;
-/* text-indent: 10px;
- position: relative;
- left: 10px;
- top: -300px; */
-}
-
-#login #submit {
- font-size: 1em;
- font-weight: bold;
- text-align: center;
- padding: 3px;
- margin: 0em;
-/* text-indent: 10px; */
- position: relative;
- top: -20px;
- left: 170px;
-}
-
-/* loginerror box follows */
-
-#login #inputerrors {
- background-color: transparent;
- border: 0px solid #666666;
- margin: 5em auto;
- vertical-align: middle;
- padding: 0em;
- width: 330px;
- height: 50px;
- position: relative;
- top: -112px;
+/* Element CSS Definitions */ +html, body, td, th, input, select { + font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; + font-size: 0.9em; + +} + +.infoboxnptd2 { + width:100%; + color:white; + background-color:#990000; + padding-right: 10px; +} + +.infoboxnptd { + width:8%; + background-color:#990000; +} + +.infoboxnptable { + height:32px; + width:100%; + background-color:#990000; +} + +.infoboxnptable2 { + height:32px; + width:100%; + background-color:#990000; +} + +.infoboxnp { + background-color:#990000; + width:100%; +} + +.infoboxnpimg { + vertical-align:middle; + width:28px; + height:32px; + background-color:#990000; +} + +/* please adjust the bgcolor to be used together with niftycorners! */ +.rtop, .artop { + background-color: #999999; +} + +div.GraphLink { + position: relative; +} + +span.GraphLinkLine { + position: absolute; + background-color: #990000; + width: 100%; +} + +/* DOM Tooltip CSS definitions */ +div.niceTitle +{ + background-color: #333333; + color: #FFFFFF; + border-bottom: 1px dotted #FFFFFF; + font-weight: bold; + font-size: 13px; + font-family: "Trebuchet MS", sans-serif; + width: 250px; + left: 0; + top: 0; + padding: 4px; + position: absolute; + text-align: left; + z-index: 20; + -moz-border-radius: 0 10px 10px 10px; + filter: progid:DXImageTransform.Microsoft.Alpha(opacity=87); + -moz-opacity: .87; + -khtml-opacity: .87; + opacity: .87; +} +div.niceTitle h1 +{ + background: #990000; + border-bottom: 1px dotted #FFFFFF; + font-weight: bold; + font-size: 13px; + font-family: "Trebuchet MS", sans-serif; + margin: 3px; + padding-top: 1px; + padding-bottom: 1px; + padding-left: 3px; + text-align: left; + left: 0; + top: 0; + -moz-border-radius: 0 8px 0 0; + -moz-opacity: 1; +} +div.niceTitle .contents +{ + margin: 0; + padding: 0 3px; + filter: progid:DXImageTransform.Microsoft.Alpha(opacity=100); + -moz-opacity: 1; + -khtml-opacity: 1; + opacity: 1; +} +div.niceTitle p +{ + background: #FFFFFF; + border: 1px solid #990000; + color: #000000; + font-size: 9px; + padding: 5px; + margin: 3px; + text-align: left; + -moz-opacity: 1; + -moz-border-radius: 0 0 8px 8px; +} + +body { + margin: 0px auto; + background: url('images/logon-background.gif') no-repeat; + background-position : center 0px; + background-color: #4a0203; +} + +form { + margin: 0px; +} +a { + text-decoration: none; +} +form input { + font-size: 1.1em; +} + +iframe { + z-index: 1; + border: 1px dashed #990000; +} +.iframe { + background-color: #FFFFFF; +} + +/* ID Based CSS Definitions */ +#wrapper { + width: 810px; + margin: 0px auto; +} + +#header { + background: url('images/header.png') no-repeat; + background-position: 0px; + height: 102px; + width: 810px; + margin-bottom: 5px; + z-index: 2; +} +#header-left { + position: relative; + /* background: url('images/logo.gif') no-repeat; */ + background-position: center; + height: 65px; + width: 145px; + left: 10px; + float: left; +} +#header-left #status-link { + position: relative; + top: 10px; + left: 6px; +} +#header-right { + position: relative; + /* background: url('images/header.gif') no-repeat; */ + height: 70px; + color: #fff; + left: 0px; + margin-left: 165px; +} +#header-right .alert { + position: relative; + /* background: url('images/alert.gif') no-repeat; */ + background-position: 4px 2px; + color: #fff; + height: 17px; + width: 500px; + padding: 4px; + padding-left: 27px; + float: left; +} +#header-right .container { + position: relative; +} +#header-right .container .left { + position: relative; + float: left; + font-size: 1.3em; + font-weight: bold; + top: 15px; + left: 4px; + display: none; +} +#header-right .container .right { + position: relative; + float: right; + top: 22px; + padding-right: 4px; + z-index: 1; +} + +#header-right .container .right #alerts { + position: relative; + background: url('images/alert_bgr.png') no-repeat; + height: 39px; + width: 431px; + z-index: 1; + padding-top: 20px; + padding-left: 5px; + margin: 0px; +} +#header-right .container .right #hostname { + position: relative; + height: 39px; + width: 431px; + z-index: 1; + padding-left: 5px; + margin: 0px; + top: 25px; + left: 230px; + font-size: 14px; + color: #cccccc; + font-weight: bold; +} + + + +table#marquee { + position: relative; + top: -6px; + left: -5px; + border: 0; + padding: 0; + margin: 0; + width: 424px; + background-color: transparent; + padding: 2px; + border: 0px; +} +span#marquee-container { + position: absolute; + visibility: hidden; + top: -100px; + left: -10000px; +} +div#marquee-text { + font-size: 1.18em; + font-weight: normal; + font-family: Verdana; + color: #ffffff; +} +table#marquee div#container { + position: relative; + overflow: hidden; + width: 418px; + height: 20px; +} +table#marquee div#container div#scroller { + position: absolute; + left: 0px; + top: 0px; +} + + + + + +#content { + position: relative; + top: -15px; + left: 0px; + margin-top: 0px; + margin-left: 0px; + padding-top: 0px; + width: 810px; + background-color: #ffffff; +} + +#left { + width: 810px; + height: 1px; +} +#right { + position: relative; + top: -10px; + width: 770px; + margin-top: 0px; + margin-left: 5px; + margin-right: 5px; + padding-top: 5px; + padding-left: 10px; + padding-right: 10px; + padding-bottom: 20px; + min-height: 400px; +} + +#footer { + position: relative; + background: url('images/footer.png') no-repeat; + top: -18px; + left: 0px; + width: 810px; + height: 75px; + color: #ffffff; + text-align: center;; + font-size: 0.9em; + padding-top: 17px; + margin-bottom: 20px; + clear: both; +} +#footer p { + padding: 0px; + margin: 0px; +} + +/* Style the List */ +#navigation { + /* background: url('images/menu.gif') no-repeat; */ + /* width: 693px; */ + position: relative; + top: -25px; + left: 3px; + width: 810px; + padding: 0px; + height: 28px; + z-index: 3; +} +#navigation ul { + padding: 0; + margin: 0; + list-style: none; + text-align: center; +} +#navigation ul#menu { + padding-top: 3px; + padding-left: 5px; +} + +/* Style the List Elements */ +#navigation ul li { + float: left; + position: relative; + /* width: 7.5em; */ + width: 8.77em; +} +#navigation ul li div { + font-size: 1em; + font-weight: bold; +} +/* Make the List inside the List Elements */ +/* initially hidden with absolute position */ +#navigation ul li ul { + display: none; + position: absolute; + top: 2em; + left: -2px; + width: 9em; + font-weight: normal; + background: transparent bottom left no-repeat; /* This is key to making the menu maintain visibility when not on a link */ + /* background-color: #202020; + background: url("images/menu_footer.gif") no-repeat; + background-position: bottom; + */ + padding: 0em 0 0.4em 0; + padding-top: 0.3em; +} +/* to override top and left in browsers other than IE */ +/* which will position to the top right of the containing */ +/* li, rather than bottom left */ +#navigation ul li > ul { + top: auto; + left: auto; + left: -1px !important; +} +/* Show initial drop down upon mouse over, but do not show */ +/* nested side drop menus within listed elements */ +#navigation ul li:hover ul { + display: block; + cursor: pointer; +} +#navigation ul li:hover { + cursor: pointer; + cursor: pointer; +} +#navigation ul li:hover div { + text-decoration: none; +} + +#navigation ul li { + background-color: transparent; + color: #FFF; +} +#navigation ul li ul li { + border: 1px solid #990000; + width: 8.8em; + height: 1.6em; + line-height: 1.6em; + background-color: #990000; + color: #FFF; +} +#navigation ul li ul li:hover { + background-color: #666666; +} + +#navigation li li a { + display: block; + padding-left: 10px; + padding-right: 10px; +} + +#navigation ul li ul li a.navlnk:hover { + text-decoration: none; +} +#navigation ul li.first { + border-right: 0px; +} +#navigation ul li.middle { + border-right: 0px; +} +#navigation ul li.last { + +} + +#navigation ul li.dropfirst { + border-bottom: 0px; +} +#navigation ul li.dropmiddle { + border-bottom: 0px; +} +#navigation ul li.droplast { +} + +#wzdtabcont { + float: left; + background-color: #FFFFFF; + color: #000000; + padding: 0; +} + +ul#wzdnav { + font-size: 0.96em; + float: left; + width: 14.5em; + margin: 0; + padding-left: 18px; +} + +ul#wzdnav li { + list-style: none; + margin: 0; + padding-bottom: 0.2em; + padding-left: 0; +} + +ul#wzdnav a { + display: block; + padding: 0.3em; + font-weight: normal; +} + +#wzdnavbold a { + display: block; + padding: 0.3em; + font-weight: bold ! important; +} + +ul#wzdnav a:link { + color: black; + background-color: #eee; +} + +ul#wzdnav a:visited { + color: #666; + background-color: #eee; +} + +ul#wzdnav a:hover { + color: black; + background-color: white; +} + +ul#wzdnav a:active { + color: white; + background-color: gray; +} + +#graph { + position: relative; + z-index: 10; +} + +#logoutbtn { + position: absolute; + left: 95%; + vertical-align: middle; +} + + +#graph { + position: relative; + z-index: 10; +} + + + +/* Class Based CSS Definitions */ +.pgtitle { + font-size: 18px; + color: #777777; + font-weight: bold; +} +.tfrtitle { + font-size: 18px; + color: #ffffff; + font-weight: bold; +} +.vncell { + background-color: #DDDDDD; + padding-right: 20px; + padding-left: 8px; + border-bottom: 1px solid #999999; +} +.formfld { + padding-left: 19px; + font-size: small; +} +.formselect { + font-size: 1.0em; +} +.langopt { + padding-left: 34px; + padding-top: 2px; + padding-bottom: 2px; +} +.saved { + /* background: url('/themes/nione/images/icons/icon_wzd_saved.png') no-repeat 0 1px #FFFFFF; */ + list-style-image: url('/themes/nervecenter/images/icons/icon_wzd_saved.png') ! important; +} +.notsaved { + /* background: url('/themes/nione/images/icons/icon_wzd_nsaved.png') no-repeat 0 1px #FFFFFF; */ + list-style-image: url('/themes/nervecenter/images/icons/icon_wzd_nsaved.png') ! important; +} +.en { + background: url('/themes/nervecenter/images/icons/icon_flag_en.png') no-repeat 0 1px #FFFFFF; +} +.de { + background: url('/themes/nervecenter/images/icons/icon_flag_de.png') no-repeat 0 1px #FFFFFF; +} +.es { + background: url('/themes/nervecenter/images/icons/icon_flag_es.png') no-repeat 0 1px #FFFFFF; +} +.pt_BR { + background: url('/themes/nervecenter/images/icons/icon_flag_pt_BR.png') no-repeat 0 1px #FFFFFF; +} +.host { + background: url('/themes/nervecenter/images/icons/icon_frmfld_host.png') no-repeat 0 1px #FFFFFF; +} +.search { + background: url('/themes/nervecenter/images/icons/icon_frmfld_search.png') no-repeat 0 1px #FFFFFF; +} +.file { + background: url('/themes/nervecenter/images/icons/icon_frmfld_file.png') no-repeat 0 1px #FFFFFF; +} +.mail { + background: url('/themes/nervecenter/images/icons/icon_frmfld_mail.png') no-repeat 0 1px #FFFFFF; +} +.imp { + background: url('/themes/nervecenter/images/icons/icon_frmfld_imp.png') no-repeat 0 1px #FFFFFF; +} +.pwd { + background: url('/themes/nervecenter/images/icons/icon_frmfld_pwd.png') no-repeat 0 1px #FFFFFF; +} +.user { + background: url('/themes/nervecenter/images/icons/icon_frmfld_user.png') no-repeat 0 1px #FFFFFF ; +} +.group { + background: url('/themes/nervecenter/images/icons/icon_frmfld_group.png') no-repeat 0 1px #FFFFFF; +} +.url { + background: url('/themes/nervecenter/images/icons/icon_frmfld_url.png') no-repeat 0 1px #FFFFFF; +} +.time { + background: url('/themes/nervecenter/images/icons/icon_frmfld_time.png') no-repeat 0 1px #FFFFFF; +} +.unknown { + background: url('/themes/nervecenter/images/icons/icon_frmfld_unknown.png') no-repeat 0 1px #FFFFFF; +} +.formfld_cert { + background: url('/themes/nervecenter/images/icons/icon_frmfld_cert.png') no-repeat 0 1px #FFFFFF; + padding-left: 28px; + font-family: Courier New, Courier, monospaced; + font-size: 11px; +} +.formfldalias { + background-color: #990000; + color: #FFFFFF; +} +.formpre { + font-family: Courier New, Courier, monospaced; + font-size: 10px; +} +.formbtn { + font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; + font-size: 13px; + font-weight: bold; +} +.formbtns { + font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; + font-weight: bold; +} +.vvcell { + background-color: #FFFFC6; +} +.errmsg { + font-weight: bold; + color: #CC0000; +} +.red { + color: #CC0000; +} +.gray { + color: #A0A0A0; +} +.vexpl { + font-size: 11px; +} +.navlnk { + color: #FFFFFF; + text-decoration: none; + font-size: 13px; +} +.navlnks { + color: #FFFFFF; + text-decoration: none; + font-size: 11px; +} +.redlnk { + color: #990000; + text-decoration: none; +} +.tblnk { + color: #FFFFFF; + text-decoration: none; +} +.vncellreq { + background-color: #DDDDDD; + padding-right: 20px; + padding-left: 8px; + font-weight: bold; + border-bottom: 1px solid #999999; +} +.vncellt { + background-color: #DDDDDD; + padding-right: 20px; + padding-left: 8px; + padding-top: 4px; + padding-bottom: 4px; + font-weight: bold; + border-bottom: 1px solid #999999; +} +.vtable { + border-bottom: 1px solid #999999; +} +.vnsepcell { + background-color: #BBBBBB; + padding-right: 20px; + padding-left: 8px; + font-weight: bold; + border-bottom: 1px solid #999999; + font-size: 11px; +} +.cpline { + font-size: 11px; + color: #FFFFFF; +} +.hostname { + font-size: 11px; + color: #990000; + font-weight: bold; +} +.vnsepcellr { + background-color: #BBBBBB; + padding-right: 20px; + padding-left: 8px; + font-weight: bold; + border-right: 1px solid #999999; + border-bottom: 1px solid #999999; + font-size: 11px; +} +.listr { + background-color: #FFFFFF; + border-right: 1px solid #999999; + border-bottom: 1px solid #999999; + font-size: 11px; + padding-right: 6px; + padding-left: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +.listrpad { + border-right: 1px solid #999999; + border-bottom: 1px solid #999999; + font-size: 11px; + padding-right: 16px; + padding-left: 10px; + padding-top: 8px; + padding-bottom: 8px; +} +.listn { + font-size: 11px; + padding-right: 16px; + padding-left: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +.listbg { + border-right: 1px solid #999999; + border-bottom: 1px solid #999999; + font-size: 11px; + background-color: #990000; + padding-right: 16px; + padding-left: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +.listbggrey { + border-right: 1px solid #999999; + border-bottom: 1px solid #999999; + font-size: 11px; + background-color: #999999; + padding-right: 16px; + padding-left: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +.listhdr { + background-color: #BBBBBB; + padding-right: 16px; + padding-left: 6px; + font-weight: bold; + border-bottom: 1px solid #999999; + font-size: 11px; + padding-top: 5px; + padding-bottom: 5px; +} +.listhdr a { + color: #000000; +} +.listhdrr { + background-color: #BBBBBB; + padding-right: 16px; + padding-left: 6px; + font-weight: bold; + border-right: 1px solid #999999; + border-bottom: 1px solid #999999; + font-size: 11px; + padding-top: 5px; + padding-bottom: 5px; +} +.listhdrr a { + color: #000000; +} +.listlr { + background-color: #FFFFFF; + border-right: 1px solid #999999; + border-bottom: 1px solid #999999; + border-left: 1px solid #999999; + font-size: 11px; + padding-right: 6px; + padding-left: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +.listlrns { + background-color: #FFFFFF; + border-right: 1px solid #999999; + border-bottom: 1px solid #999999; + border-left: 1px solid #999999; + font-size: 11px; + padding-top: 4px; + padding-bottom: 4px; +} +.list { + font-size: 11px; + padding-left: 6px; + padding-top: 2px; + padding-bottom: 2px; +} +.listt { + font-size: 11px; + padding-top: 5px; +} +.listhdrrns { + background-color: #BBBBBB; + padding-left: 6px; + padding-top: 5px; + padding-bottom: 5px; + padding-right: 6px; + font-weight: bold; + border-right: 1px solid #999999; + border-bottom: 1px solid #999999; + font-size: 11px; +} +.listbgns { + border-right: 1px solid #999999; + border-bottom: 1px solid #999999; + font-size: 11px; + background-color: #D9DEE8; + padding-left: 6px; + padding-right: 4px; + padding-top: 4px; + padding-bottom: 4px; +} +.listtopic { + border-right: 1px solid #999999; + font-size: 11px; + background-color: #990000; + padding-right: 16px; + padding-left: 6px; + color: #FFFFFF; + font-weight: bold; + padding-top: 5px; + padding-bottom: 5px; +} +.optsect_t { + border-right: 1px solid #999999; + background-color: #990000; + padding-right: 6px; + padding-left: 6px; + padding-top: 2px; + padding-bottom: 2px; +} +.optsect_s { + font-size: 11px; + color: #FFFFFF; + font-weight: bold; +} +.tabnavtbl { +} + + +/* MISC CSS Definitions */ +ul#tabnav { + font-size: 11px; + font-weight: bold; + list-style-type: none; + margin: 0; + padding: 0; +} +ul#tabnav li.tabinact1 { + float: left; + background-color: #777777; + color: #FFFFFF; + padding: 0; + white-space: nowrap; +} +ul#tabnav li.tabinact { + float: left; + border-left: 1px solid #999999; + background-color: #777777; + color: #FFFFFF; + padding: 0; + white-space: nowrap; +} +ul#tabnav li.tabinact a { + float: left; + display: block; + text-decoration: none; + padding: 5px 8px 5px 8px; + color: #FFFFFF; +} +ul#tabnav li.tabinact1 a { + float: left; + display: block; + text-decoration: none; + padding: 5px 8px 5px 8px; + color: #FFFFFF; +} +ul#tabnav li.tabact { + float: left; + background-color: #EEEEEE; + color: #000000; + padding: 5px 8px 5px 8px; + white-space: nowrap; +} +.tabcont { + background-color: #EEEEEE; + padding-right: 12px; + padding-left: 12px; + padding-top: 12px; + padding-bottom: 12px; +} +.tabact { + float: left; + background-color: #EEEEEE; + color: #000000; + padding: 5px 8px 5px 8px; + white-space: nowrap; +} +.tabinact { + font-weight: bold; + float: left; + border-left: 1px solid #999999; + background-color: #777777; + color: #FFFFFF; + padding: 0; + white-space: nowrap; +} +.menu { + background-color: #000000; + white-space: nowrap; + padding: 0px 5px 0px 5px; + width: 100%; + vertical-align: top; +} + + +/* Auto Complete Suggestions */ +div.suggestions { + -moz-box-sizing: border-box; + /* box-sizing: border-box; */ + border: 1px solid black; + position: absolute; + background-color: #990000; + color: #FFF; +} + +div.suggestions div { + cursor: default; + padding: 0px 3px; + background-color: #990000; + color: #FFF; +} + +div.suggestions div.current { + background-color: #3366cc; + color: #FFF; +} +/* End Auto Complete Suggestions */ + + +/* Nifty Corners Crap */ +.rtop,.artop{display:block} +.rtop *,.artop *{display:block;height:1px;overflow:hidden;font-size:1px} +.artop *{border-style: solid;border-width:0 1px} +.r1,.rl1,.re1,.rel1{margin-left:5px} +.r1,.rr1,.re1,.rer1{margin-right:5px} +.r2,.rl2,.re2,.rel2,.ra1,.ral1{margin-left:3px} +.r2,.rr2,.re2,.rer2,.ra1,.rar1{margin-right:3px} +.r3,.rl3,.re3,.rel3,.ra2,.ral2,.rs1,.rsl1,.res1,.resl1{margin-left:2px} +.r3,.rr3,.re3,.rer3,.ra2,.rar2,.rs1,.rsr1,.res1,.resr1{margin-right:2px} +.r4,.rl4,.rs2,.rsl2,.re4,.rel4,.ra3,.ral3,.ras1,.rasl1,.res2,.resl2{margin-left:1px} +.r4,.rr4,.rs2,.rsr2,.re4,.rer4,.ra3,.rar3,.ras1,.rasr1,.res2,.resr2{margin-right:1px} +.rx1,.rxl1{border-left-width:5px} +.rx1,.rxr1{border-right-width:5px} +.rx2,.rxl2{border-left-width:3px} +.rx2,.rxr2{border-right-width:3px} +.re2,.rel2,.ra1,.ral1,.rx3,.rxl3,.rxs1,.rxsl1{border-left-width:2px} +.re2,.rer2,.ra1,.rar1,.rx3,.rxr3,.rxs1,.rxsr1{border-right-width:2px} +.rxl1,.rxl2,.rxl3,.rxl4,.rxsl1,.rxsl2,.ral1,.ral2,.ral3,.ral4,.rasl1,.rasl2{border-right-width:0} +.rxr1,.rxr2,.rxr3,.rxr4,.rxsr1,.rxsr2,.rar1,.rar2,.rar3,.rar4,.rasr1,.rasr2{border-left-width:0} +.r4,.rl4,.rr4,.re4,.rel4,.rer4,.ra4,.rar4,.ral4,.rx4,.rxl4,.rxr4{height:2px} +.rer1,.rel1,.re1,.res1,.resl1,.resr1{border-width:1px 0 0;height:0px !important;height /**/:1px} +/* End Nifty Corners Crap */ + + + +/* CSS for Dynamic Log Viewer */ +/* Author: Erik Kristensen */ +div#log div.log-entry { + clear: both; +} + +div#log div.log-entry span, +div#log div.log-header span { + padding: 3px 2px 3px 2px; + padding-left: 8px; +} + +div#log div.log-entry span.log-action { + padding-bottom: 6px; + padding-left: 5px; + padding-right: 5px; +} + +div#log div.log-header span { + border-top: 1px solid #999; + background-color: #bbb; + font-weight: bold; + text-align: left; +} + +div#log span.log-action, +div#log span.log-time, +div#log span.log-interface, +div#log span.log-source, +div#log span.log-destination, +div#log span.log-protocol { + float: left; + text-align: left; + border-left: 1px solid #999; + border-bottom: 1px solid #999; +} + +div#log span.log-general { + +} + +div#log span.log-protocol { + border-right: 1px solid #999; +} + +div#log span.log-action { + width: 2em; + text-align: center; +} + +div#log span.log-time { + width: 12.5em; +} + +div#log span.log-interface { + width: 5em; +} + +div#log span.log-source, +div#log span.log-destination { + width: 17.6em; +} + +div#log span.log-protocol { + width: 5.5em; +} +/* END CSS FOR DYNAMIC LOG VIEWER */ + + +#login { +/* background: #cccccc; */ + background-color: transparent; + border: 0px solid #cccccc; + margin: 5em auto; + padding: 0em; + width: 400px; +/* filter:alpha(opacity=60); + -moz-opacity:0.6; + -khtml-opacity: 0.6; + opacity: 0.6; */ +} + +#login h1 { + background: url(images/misc/logon.png) no-repeat top left; +/* background: #ffffff; */ + margin-top: 0; + display: block; + text-indent: -1000px; + height: 400px; + border-bottom: none; +} + +#login p { + font-size: 1em; + font-weight: bold; + padding: -40px; + margin: 0em; +/* text-indent: 10px; */ + position: relative; + top: -390px; + left: 60px; +} + +#login span { + font-size: 1em; + font-weight: bold; + width: 20%; + padding: 3px; + margin: 0em; +/* text-indent: 10px; */ +} + +#login p#text { + font-size: 1em; + font-weight: normal; + padding: 3px; + margin: 0em; +/* text-indent: 10px; + position: relative; + top: -300px; */ +} + +#login #username, #password { + font-size: 1em; + width: 60%; + padding: 3px; + margin: 0em; +/* text-indent: 10px; + position: relative; + left: 10px; + top: -300px; */ +} + +#login #submit { + font-size: 1em; + font-weight: bold; + text-align: center; + padding: 3px; + margin: 0em; +/* text-indent: 10px; */ + position: relative; + top: -20px; + left: 170px; +} + +/* loginerror box follows */ + +#login #inputerrors { + background-color: transparent; + border: 0px solid #666666; + margin: 5em auto; + vertical-align: middle; + padding: 0em; + width: 330px; + height: 50px; + position: relative; + top: -112px; }
\ No newline at end of file diff --git a/usr/local/www/themes/code-red/rrdcolors.inc.php b/usr/local/www/themes/code-red/rrdcolors.inc.php index 1ab0fd0..cdaff68 100755 --- a/usr/local/www/themes/code-red/rrdcolors.inc.php +++ b/usr/local/www/themes/code-red/rrdcolors.inc.php @@ -1,51 +1,51 @@ -<?php
-/* $Id$ */
-/*
- rrdcolors.inc.php
- Part of pfSense
- Copyright (C) 2006 Seth Mos <seth.mos@xs4all.nl>
- 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.
-*/
-
-/* This file is included by the RRD graphing page and sets the colors */
-
-$colortrafficup = array("666666", "CCCCCC");
-$colortrafficdown = array("990000", "CC0000");
-$colorpacketsup = array("666666", "CCCCCC");
-$colorpacketsdown = array("990000", "CC0000");
-$colorstates = array('990000','a83c3c','b36666','bd9090','cccccc','000000');
-$colorprocessor = array('990000','a83c3c','b36666','bd9090','cccccc','000000');
-$colormemory = array('990000','a83c3c','b36666','bd9090','cccccc','000000');
-$colorqueuesup = array('000000','7B0000','990000','BB0000','CC0000','D90000','EE0000','FF0000','CC0000');
-$colorqueuesdown = array('000000','7B7B7B','999999','BBBBBB','CCCCCC','D9D9D9','EEEEEE','FFFFFF','CCCCCC');
-$colorqueuesdropup = array('000000','7B0000','990000','BB0000','CC0000','D90000','EE0000','FF0000','CC0000');
-$colorqueuesdropdown = array('000000','7B7B7B','999999','BBBBBB','CCCCCC','D9D9D9','EEEEEE','FFFFFF','CCCCCC');
-$colorqualityrtt = array('990000','a83c3c','b36666','bd9090','cccccc','000000');
-$colorqualityloss = "ee0000";
-$colorwireless = array('990000','a83c3c','b36666');
-$colorspamdtime = array('DDDDFF', 'AAAAFF', 'DDDDFF', '000066');
-$colorspamdconn = array('00AA00BB', 'FFFFFFFF', '00660088', 'FFFFFF88', '006600');
-$colorvpnusers = array('990000');
-
-?>
+<?php +/* $Id$ */ +/* + rrdcolors.inc.php + Part of pfSense + Copyright (C) 2006 Seth Mos <seth.mos@xs4all.nl> + 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. +*/ + +/* This file is included by the RRD graphing page and sets the colors */ + +$colortrafficup = array("666666", "CCCCCC"); +$colortrafficdown = array("990000", "CC0000"); +$colorpacketsup = array("666666", "CCCCCC"); +$colorpacketsdown = array("990000", "CC0000"); +$colorstates = array('990000','a83c3c','b36666','bd9090','cccccc','000000'); +$colorprocessor = array('990000','a83c3c','b36666','bd9090','cccccc','000000'); +$colormemory = array('990000','a83c3c','b36666','bd9090','cccccc','000000'); +$colorqueuesup = array('000000','7B0000','990000','BB0000','CC0000','D90000','EE0000','FF0000','CC0000'); +$colorqueuesdown = array('000000','7B7B7B','999999','BBBBBB','CCCCCC','D9D9D9','EEEEEE','FFFFFF','CCCCCC'); +$colorqueuesdropup = array('000000','7B0000','990000','BB0000','CC0000','D90000','EE0000','FF0000','CC0000'); +$colorqueuesdropdown = array('000000','7B7B7B','999999','BBBBBB','CCCCCC','D9D9D9','EEEEEE','FFFFFF','CCCCCC'); +$colorqualityrtt = array('990000','a83c3c','b36666','bd9090','cccccc','000000'); +$colorqualityloss = "ee0000"; +$colorwireless = array('990000','a83c3c','b36666'); +$colorspamdtime = array('DDDDFF', 'AAAAFF', 'DDDDFF', '000066'); +$colorspamdconn = array('00AA00BB', 'FFFFFFFF', '00660088', 'FFFFFF88', '006600'); +$colorvpnusers = array('990000'); + +?> diff --git a/usr/local/www/themes/code-red/styles/menustyles.css b/usr/local/www/themes/code-red/styles/menustyles.css index e30dc1e..06b3c7a 100755 --- a/usr/local/www/themes/code-red/styles/menustyles.css +++ b/usr/local/www/themes/code-red/styles/menustyles.css @@ -1,44 +1,44 @@ -#navigation {
- /* border:1px solid black; */
- width: 98%;
- vertical-align: middle;
- height: 16px;
- padding-top: 4px;
- }
-
-#menu {
- /* background: #990000; */
- /* border-bottom:1px solid white; */
- padding: 0 0 0 0;
- width: 98%;
- vertical-align: middle;
- height: 16px;
- }
-#menu a {
- padding: 2px 28px 4px 28px;
- text-decoration: none;
- font-weight: bold;
- font-size: 1.0em;
- color: #FFFFFF;
- width: 08%;
- height: 16px;
- }
-#menu a.hover {
- background: #AF2020;
- }
-#menu span {
- display: none;
- }
-
-#subnav {
- font-size: 10px;
- margin-bottom: 2em;
- }
-#subnav a {
- color: #FF0000; /* #FB3B00; */
- margin-right: 1em;
- }
-#subnav span {
- color: silver;
- margin-right: 1em;
- }
+#navigation { + /* border:1px solid black; */ + width: 98%; + vertical-align: middle; + height: 16px; + padding-top: 4px; + } + +#menu { + /* background: #990000; */ + /* border-bottom:1px solid white; */ + padding: 0 0 0 0; + width: 98%; + vertical-align: middle; + height: 16px; + } +#menu a { + padding: 2px 28px 4px 28px; + text-decoration: none; + font-weight: bold; + font-size: 1.0em; + color: #FFFFFF; + width: 08%; + height: 16px; + } +#menu a.hover { + background: #AF2020; + } +#menu span { + display: none; + } + +#subnav { + font-size: 10px; + margin-bottom: 2em; + } +#subnav a { + color: #FF0000; /* #FB3B00; */ + margin-right: 1em; + } +#subnav span { + color: silver; + margin-right: 1em; + } diff --git a/usr/local/www/themes/code-red/styles/transmenu.css b/usr/local/www/themes/code-red/styles/transmenu.css index af947b4..f683574 100755 --- a/usr/local/www/themes/code-red/styles/transmenu.css +++ b/usr/local/www/themes/code-red/styles/transmenu.css @@ -1,75 +1,75 @@ -/* this is the clipping region for the menu. it's width and height get set by script, depending on the size of the items table */
-.transMenu {
- position:absolute;
- overflow:hidden;
- left:-1000px;
- top:-1000px;
- }
-
-/* this is the main container for the menu itself. it's width and height get set by script, depending on the size of the items table */
-.transMenu .content {
- position:absolute;
- }
-
-/* this table comprises all menu items. each TR is one item. It is relatively positioned so that the shadow and background transparent divs can be positioned underneath it */
-.transMenu .items {
- position:relative;
- left:0px; top:0px;
- z-index:2;
- }
-
-.transMenu.top .items {
- border-top:none;
- }
-
-/* each TR.item is one menu item */
-.transMenu .item {
- color: #FFFFFF; /* #336; */
- font-size: 1.1em;
- font-weight: normal;
- font-family:sans-serif;
- text-decoration:none;
- /* this is a hack for mac/ie5, whom incorrectly cascades the border properties of the parent table to each row */
- border:none;
- cursor:pointer;
- cursor:hand;
- }
-
-/* this DIV is the semi-transparent white background of each menu. the -moz-opacity is a proprietary way to get transparency in mozilla, the filter is for IE/windows 5.0+. */
-/* we set the background color in script because ie mac does not use it; that browser only uses a semi-transparent white PNG that the spacer gif inside this DIV is replaced by */
-.transMenu .background {
- position:absolute;
- left:0px; top:0px;
- z-index:1;
- -moz-opacity:.8;
- filter:alpha(opacity=80);
- }
-
-/* same concept as .background, but this is the sliver of shadow on the right of the menu. It's left, height, and background are set by script. In IE5/mac, it uses a PNG */
-.transMenu .shadowRight {
- position:absolute;
- z-index:3;
- top:3px; width:2px;
- -moz-opacity:.4;
- filter:alpha(opacity=40);
- }
-
-/* same concept as .background, but this is the sliver of shadow on the bottom of the menu. It's top, width, and background are set by script. In IE5/mac, it uses a PNG */
-.transMenu .shadowBottom {
- position:absolute;
- z-index:1;
- left:3px; height:2px;
- -moz-opacity:.4;
- filter:alpha(opacity=40);
- }
-
-/* this is the class that is used when the mouse is over an item. script sets the row to this class when required. */
-.transMenu .item.hover {
- background:#fdfdfd;
- color:black;
- }
-
-/* this is either the dingbat that indicates there is a submenu, or a spacer gif in it's place. We give it extra margin to create some space between the text and the dingbat */
-.transMenu .item img {
- margin-left:10px;
+/* this is the clipping region for the menu. it's width and height get set by script, depending on the size of the items table */ +.transMenu { + position:absolute; + overflow:hidden; + left:-1000px; + top:-1000px; + } + +/* this is the main container for the menu itself. it's width and height get set by script, depending on the size of the items table */ +.transMenu .content { + position:absolute; + } + +/* this table comprises all menu items. each TR is one item. It is relatively positioned so that the shadow and background transparent divs can be positioned underneath it */ +.transMenu .items { + position:relative; + left:0px; top:0px; + z-index:2; + } + +.transMenu.top .items { + border-top:none; + } + +/* each TR.item is one menu item */ +.transMenu .item { + color: #FFFFFF; /* #336; */ + font-size: 1.1em; + font-weight: normal; + font-family:sans-serif; + text-decoration:none; + /* this is a hack for mac/ie5, whom incorrectly cascades the border properties of the parent table to each row */ + border:none; + cursor:pointer; + cursor:hand; + } + +/* this DIV is the semi-transparent white background of each menu. the -moz-opacity is a proprietary way to get transparency in mozilla, the filter is for IE/windows 5.0+. */ +/* we set the background color in script because ie mac does not use it; that browser only uses a semi-transparent white PNG that the spacer gif inside this DIV is replaced by */ +.transMenu .background { + position:absolute; + left:0px; top:0px; + z-index:1; + -moz-opacity:.8; + filter:alpha(opacity=80); + } + +/* same concept as .background, but this is the sliver of shadow on the right of the menu. It's left, height, and background are set by script. In IE5/mac, it uses a PNG */ +.transMenu .shadowRight { + position:absolute; + z-index:3; + top:3px; width:2px; + -moz-opacity:.4; + filter:alpha(opacity=40); + } + +/* same concept as .background, but this is the sliver of shadow on the bottom of the menu. It's top, width, and background are set by script. In IE5/mac, it uses a PNG */ +.transMenu .shadowBottom { + position:absolute; + z-index:1; + left:3px; height:2px; + -moz-opacity:.4; + filter:alpha(opacity=40); + } + +/* this is the class that is used when the mouse is over an item. script sets the row to this class when required. */ +.transMenu .item.hover { + background:#fdfdfd; + color:black; + } + +/* this is either the dingbat that indicates there is a submenu, or a spacer gif in it's place. We give it extra margin to create some space between the text and the dingbat */ +.transMenu .item img { + margin-left:10px; }
\ No newline at end of file diff --git a/usr/local/www/vpn_ipsec_phase1.php b/usr/local/www/vpn_ipsec_phase1.php index 7c3300c..7ac7383 100644 --- a/usr/local/www/vpn_ipsec_phase1.php +++ b/usr/local/www/vpn_ipsec_phase1.php @@ -702,7 +702,7 @@ function dpdchkbox_change() { <td width="78%" class="vtable"> <select name='certref' class="formselect"> <?php - foreach ($config['system']['cert'] as $cert): + foreach ($config['cert'] as $cert): $selected = ""; if ($pconfig['certref'] == $cert['refid']) $selected = "selected"; @@ -721,7 +721,7 @@ function dpdchkbox_change() { <td width="78%" class="vtable"> <select name='caref' class="formselect"> <?php - foreach ($config['system']['ca'] as $ca): + foreach ($config['ca'] as $ca): $selected = ""; if ($pconfig['caref'] == $ca['refid']) $selected = "selected"; diff --git a/usr/local/www/vpn_openvpn_client.php b/usr/local/www/vpn_openvpn_client.php index 1b6dc72..422e3c3 100644 --- a/usr/local/www/vpn_openvpn_client.php +++ b/usr/local/www/vpn_openvpn_client.php @@ -610,7 +610,7 @@ function autotls_change() { <td width="78%" class="vtable"> <select name='caref' class="formselect"> <?php - foreach ($config['system']['ca'] as $ca): + foreach ($config['ca'] as $ca): $selected = ""; if ($pconfig['caref'] == $ca['refid']) $selected = "selected"; @@ -625,7 +625,7 @@ function autotls_change() { <td width="78%" class="vtable"> <select name='certref' class="formselect"> <?php - foreach ($config['system']['cert'] as $cert): + foreach ($config['cert'] as $cert): $selected = ""; if ($pconfig['certref'] == $cert['refid']) $selected = "selected"; diff --git a/usr/local/www/vpn_openvpn_server.php b/usr/local/www/vpn_openvpn_server.php index 222ed51..4eec76d 100644 --- a/usr/local/www/vpn_openvpn_server.php +++ b/usr/local/www/vpn_openvpn_server.php @@ -698,7 +698,7 @@ function netbios_change() { <td width="78%" class="vtable"> <select name='caref' class="formselect"> <?php - foreach ($config['system']['ca'] as $ca): + foreach ($config['ca'] as $ca): $selected = ""; if ($pconfig['caref'] == $ca['refid']) $selected = "selected"; @@ -713,7 +713,7 @@ function netbios_change() { <td width="78%" class="vtable"> <select name='certref' class="formselect"> <?php - foreach ($config['system']['cert'] as $cert): + foreach ($config['cert'] as $cert): $selected = ""; if (strstr($cert['name'], "webConfigurator")) continue; diff --git a/usr/local/www/vpn_pppoe.php b/usr/local/www/vpn_pppoe.php index 46e8c3e..8052466 100755 --- a/usr/local/www/vpn_pppoe.php +++ b/usr/local/www/vpn_pppoe.php @@ -1,21 +1,18 @@ <?php /* - vpn_pppoe.php - part of pfSense - - Copyright (C) 2005 Scott Ullrich (sullrich@gmail.com) + Copyright (C) 2010 Ermal Luçi 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 @@ -27,6 +24,9 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* + pfSense_MODULE: pppoe +*/ ##|+PRIV ##|*IDENT=page-services-pppoeserver @@ -35,440 +35,120 @@ ##|*MATCH=vpn_pppoe.php* ##|-PRIV -require("guiconfig.inc"); +require_once("guiconfig.inc"); +require_once("filter.inc"); require_once("vpn.inc"); -if (!is_array($config['pppoe']['radius'])) { - $config['pppoe']['radius'] = array(); -} -$pppoecfg = &$config['pppoe']; - -$pconfig['remoteip'] = $pppoecfg['remoteip']; -$pconfig['localip'] = $pppoecfg['localip']; -$pconfig['mode'] = $pppoecfg['mode']; -$pconfig['interface'] = $pppoecfg['interface']; -$pconfig['n_pppoe_units'] = $pppoecfg['n_pppoe_units']; -$pconfig['pppoe_subnet'] = $pppoecfg['pppoe_subnet']; -$pconfig['pppoe_dns1'] = $pppoecfg['dns1']; -$pconfig['pppoe_dns2'] = $pppoecfg['dns2']; -$pconfig['radacct_enable'] = isset($pppoecfg['radius']['accounting']); -$pconfig['radiusissueips'] = isset($pppoecfg['radius']['radiusissueips']); -$pconfig['radiusenable'] = isset($pppoecfg['radius']['server']['enable']); -$pconfig['radiusserver'] = $pppoecfg['radius']['server']['ip']; -$pconfig['radiusserverport'] = $pppoecfg['radius']['server']['port']; -$pconfig['radiusserveracctport'] = $pppoecfg['radius']['server']['acctport']; -$pconfig['radiussecret'] = $pppoecfg['radius']['server']['secret']; -$pconfig['radiussecenable'] = isset($pppoecfg['radius']['server2']['enable']); -$pconfig['radiusserver2'] = $pppoecfg['radius']['server2']['ip']; -$pconfig['radiusserver2port'] = $pppoecfg['radius']['server2']['port']; -$pconfig['radiusserver2acctport'] = $pppoecfg['radius']['server2']['acctport']; -$pconfig['radiussecret2'] = $pppoecfg['radius']['server2']['secret2']; -$pconfig['radiusissueips'] = isset($pppoecfg['radius']['radiusissueips']); -$pconfig['radius_nasip'] = $pppoecfg['radius']['nasip']; -$pconfig['radius_acct_update'] = $pppoecfg['radius']['acct_update']; +if (!is_array($config['pppoes']['pppoe'])) + $config['pppoes']['pppoe'] = array(); +$a_pppoes = &$config['pppoes']['pppoe']; if ($_POST) { + $pconfig = $_POST; + + if ($_POST['apply']) { + if (file_exists("{$g['tmp_path']}/.vpn_pppoe.apply")) { + $toapplylist = unserialize(file_get_contents("{$g['tmp_path']}/.vpn_pppoe.apply")); + foreach ($toapplylist as $pppoeid) { + if (!is_numeric($pppoeid)) + continue; + if (is_array($config['pppoes']['pppoe'])) { + foreach ($config['pppoes']['pppoe'] as $pppoe) { + if ($pppoe['pppoeid'] == $pppoeid) { + vpn_pppoe_configure($pppoe); + break; + } + } + } + } + @unlink("{$g['tmp_path']}/.vpn_pppoe.apply"); + } + $retval = 0; + $retval |= filter_configure(); + $savemsg = get_std_save_message($retval); + clear_subsystem_dirty('vpnpppoe'); + } +} - unset($input_errors); - $pconfig = $_POST; - - /* input validation */ - if ($_POST['mode'] == "server") { - $reqdfields = explode(" ", "localip remoteip"); - $reqdfieldsn = array(gettext("Server address"),gettext("Remote start address")); - - if ($_POST['radiusenable']) { - $reqdfields = array_merge($reqdfields, explode(" ", "radiusserver radiussecret")); - $reqdfieldsn = array_merge($reqdfieldsn, - array(gettext("RADIUS server address"),gettext("RADIUS shared secret"))); - } - - do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors); - - if (($_POST['localip'] && !is_ipaddr($_POST['localip']))) { - $input_errors[] = gettext("A valid server address must be specified."); - } - if (($_POST['pppoe_subnet'] && !is_ipaddr($_POST['remoteip']))) { - $input_errors[] = gettext("A valid remote start address must be specified."); - } - if (($_POST['radiusserver'] && !is_ipaddr($_POST['radiusserver']))) { - $input_errors[] = gettext("A valid RADIUS server address must be specified."); - } - - if (!$input_errors) { - $_POST['remoteip'] = $pconfig['remoteip'] = gen_subnet($_POST['remoteip'], $_POST['pppoe_subnet']); - $subnet_start = ip2ulong($_POST['remoteip']); - $subnet_end = ip2ulong($_POST['remoteip']) + $_POST['pppoe_subnet'] - 1; - - if ((ip2ulong($_POST['localip']) >= $subnet_start) && - (ip2ulong($_POST['localip']) <= $subnet_end)) { - $input_errors[] = gettext("The specified server address lies in the remote subnet."); - } - if ($_POST['localip'] == get_interface_ip("lan")) { - $input_errors[] = gettext("The specified server address is equal to the LAN interface address."); - } - } - } else { - /* turning pppoe off, lets dump any custom rules */ - $rules = &$config['filter']['rule']; - for($x=0; $x<count($rules); $x++) { - if($rules[$x]['interface'] == "pppoe") { - unset($rules[$x]); - } - } - unset($config['pppoe']); - } - - if (!$input_errors) { - $pppoecfg['remoteip'] = $_POST['remoteip']; - $pppoecfg['localip'] = $_POST['localip']; - $pppoecfg['mode'] = $_POST['mode']; - $pppoecfg['interface'] = $_POST['interface']; - $pppoecfg['n_pppoe_units'] = $_POST['n_pppoe_units']; - $pppoecfg['pppoe_subnet'] = $_POST['pppoe_subnet']; - $pppoecfg['radius']['server']['ip'] = $_POST['radiusserver']; - $pppoecfg['radius']['server']['secret'] = $_POST['radiussecret']; - $pppoecfg['radius']['server']['port'] = $_POST['radiusserverport']; - $pppoecfg['radius']['server']['acctport'] = $_POST['radiusserveracctport']; - $pppoecfg['radius']['server2']['ip'] = $_POST['radiusserver2']; - $pppoecfg['radius']['server2']['secret2'] = $_POST['radiussecret2']; - $pppoecfg['radius']['server2']['port'] = $_POST['radiusserver2port']; - $pppoecfg['radius']['server2']['acctport'] = $_POST['radiusserver2acctport']; - $pppoecfg['radius']['nasip'] = $_POST['radius_nasip']; - $pppoecfg['radius']['acct_update'] = $_POST['radius_acct_update']; - - if ($_POST['pppoe_dns1'] == "") - unset($pppoecfg['dns1']); - else - $pppoecfg['dns1'] = $_POST['pppoe_dns1']; - - if ($_POST['pppoe_dns2'] == "") - unset($pppoecfg['dns2']); - else - $pppoecfg['dns2'] = $_POST['pppoe_dns2']; - - if($_POST['radiusenable'] == "yes") - $pppoecfg['radius']['server']['enable'] = true; - else - unset($pppoecfg['radius']['server']['enable']); - - if($_POST['radiussecenable'] == "yes") - $pppoecfg['radius']['server2']['enable'] = true; - else - unset($pppoecfg['radius']['server2']['enable']); - - if($_POST['radacct_enable'] == "yes") - $pppoecfg['radius']['accounting'] = true; - else - unset($pppoecfg['radius']['accounting']); - - if($_POST['radiusissueips'] == "yes") { - $pppoecfg['radius']['radiusissueips'] = true; - } else - unset($pppoecfg['radius']['radiusissueips']); - +if ($_GET['act'] == "del") { + if ($a_pppoes[$_GET['id']]) { + if ("{$g['varrun_path']}/pppoe" . $a_pppoes[$_GET['id']]['pppoeid'] . "-vpn.pid") + killbypid("{$g['varrun_path']}/pppoe" . $a_pppoes[$_GET['id']]['pppoeid'] . "-vpn.pid"); + mwexec("/bin/rm -r {$g['varetc_path']}/pppoe" . $a_pppoes[$_GET['id']]['pppoeid']); + unset($a_pppoes[$_GET['id']]); write_config(); - - $retval = 0; - $retval = vpn_pppoe_configure(); - $savemsg = get_std_save_message($retval); + header("Location: vpn_pppoe.php"); + exit; } } -$pgtitle = array(gettext("Services"),gettext("PPPoE Server")); +$pgtitle = array(gettext("VPN"),gettext("PPPoE")); include("head.inc"); ?> <body link="#0000CC" vlink="#0000CC" alink="#0000CC"> <?php include("fbegin.inc"); ?> -<script language="JavaScript"> -<!-- -function get_radio_value(obj) -{ - for (i = 0; i < obj.length; i++) { - if (obj[i].checked) - return obj[i].value; - } - return null; -} - -function enable_change(enable_over) { - if ((get_radio_value(document.iform.mode) == "server") || enable_over) { - document.iform.remoteip.disabled = 0; - document.iform.localip.disabled = 0; - document.iform.radiusenable.disabled = 0; - document.iform.interface.disabled = 0; - document.iform.n_pppoe_units.disabled = 0; - document.iform.pppoe_subnet.disabled = 0; - document.iform.pppoe_dns1.disabled = 0; - document.iform.pppoe_dns2.disabled = 0; - if (document.iform.radiusenable.checked || enable_over) { - document.iform.radacct_enable.disabled = 0; - document.iform.radiusserver.disabled = 0; - document.iform.radiussecret.disabled = 0; - document.iform.radiusserverport.disabled = 0; - document.iform.radiusserveracctport.disabled = 0; - document.iform.radiusissueips.disabled = 0; - document.iform.radius_nasip.disabled = 0; - document.iform.radiusissueips.disabled = 0; - document.iform.radius_nasip.disabled = 0; - document.iform.radius_acct_update.disabled = 0; - document.iform.radiussecenable.disabled = 0; - if (document.iform.radiussecenable.checked || enable_over) { - document.iform.radiusserver2.disabled = 0; - document.iform.radiussecret2.disabled = 0; - document.iform.radiusserver2port.disabled = 0; - document.iform.radiusserver2acctport.disabled = 0; - } else { - - document.iform.radiusserver2.disabled = 1; - document.iform.radiussecret2.disabled = 1; - document.iform.radiusserver2port.disabled = 1; - document.iform.radiusserver2acctport.disabled = 1; - } - } else { - document.iform.radacct_enable.disabled = 1; - document.iform.radiusserver.disabled = 1; - document.iform.radiussecret.disabled = 1; - document.iform.radiusserverport.disabled = 1; - document.iform.radiusserveracctport.disabled = 1; - document.iform.radiusissueips.disabled = 1; - document.iform.radius_nasip.disabled = 1; - document.iform.radius_acct_update.disabled = 1; - document.iform.radiussecenable.disabled = 1; - } - } else { - document.iform.interface.disabled = 1; - document.iform.n_pppoe_units.disabled = 1; - document.iform.pppoe_subnet.disabled = 1; - document.iform.remoteip.disabled = 1; - document.iform.localip.disabled = 1; - document.iform.pppoe_dns1.disabled = 1; - document.iform.pppoe_dns2.disabled = 1; - document.iform.radiusenable.disabled = 1; - document.iform.radiussecenable.disabled = 1; - document.iform.radacct_enable.disabled = 1; - document.iform.radiusserver.disabled = 1; - document.iform.radiussecret.disabled = 1; - document.iform.radiusserverport.disabled = 1; - document.iform.radiusserveracctport.disabled = 1; - document.iform.radiusserver2.disabled = 1; - document.iform.radiussecret2.disabled = 1; - document.iform.radiusserver2port.disabled = 1; - document.iform.radiusserver2acctport.disabled = 1; - document.iform.radiusissueips.disabled = 1; - document.iform.radius_nasip.disabled = 1; - document.iform.radius_acct_update.disabled = 1; - } -} -//--> -</script> -<form action="vpn_pppoe.php" method="post" name="iform" id="iform"> -<?php if ($input_errors) print_input_errors($input_errors); ?> +<form action="vpn_pppoe.php" method="post"> <?php if ($savemsg) print_info_box($savemsg); ?> -<table width="100%" border="0" cellpadding="0" cellspacing="0"> - <tr><td class="tabnavtbl"> -<?php - $tab_array = array(); - $tab_array[0] = array(gettext("Configuration"), true, "vpn_pppoe.php"); - $tab_array[1] = array(gettext("Users"), false, "vpn_pppoe_users.php"); - display_top_tabs($tab_array); -?> - </td></tr> - <tr> - <td> - <div id="mainarea"> - <table class="tabcont" width="100%" border="0" cellpadding="6" cellspacing="0"> - <tr> - <td width="22%" valign="top" class="vtable"> </td> - <td width="78%" class="vtable"> - <input name="mode" type="radio" onclick="enable_change(false)" value="off" - <?php if (($pconfig['mode'] != "server") && ($pconfig['mode'] != "redir")) echo "checked";?>> - <?=gettext("Off"); ?></td> - </tr> - <tr> - <td width="22%" valign="top" class="vtable"> </td> - <td width="78%" class="vtable"> - <input type="radio" name="mode" value="server" onclick="enable_change(false)" <?php if ($pconfig['mode'] == "server") echo "checked"; ?>> - <?=gettext("Enable PPPoE server"); ?></td> - </tr> - - <tr> - <td width="22%" valign="top" class="vncell"><b><?=gettext("Interface"); ?></b></td> - <td width="78%" valign="top" class="vtable"> - - <select name="interface" class="formselect" id="interface"> - <?php - $interfaces = get_configured_interface_with_descr(); - - foreach ($interfaces as $iface => $ifacename): - ?> - <option value="<?=$iface;?>" <?php if ($iface == $pconfig['interface']) echo "selected"; ?>> - <?=htmlspecialchars($ifacename);?> - </option> - <?php endforeach; ?> - </select> <br> - - </td> - </tr> - <tr> - <td width="22%" valign="top" class="vncellreq"><?=gettext("Subnet netmask"); ?></td> - <td width="78%" class="vtable"> - <select id="pppoe_subnet" name="pppoe_subnet"> - <?php - for($x=0; $x<33; $x++) { - if($x == $pconfig['pppoe_subnet']) - $SELECTED = " SELECTED"; - else - $SELECTED = ""; - echo "<option value=\"{$x}\"{$SELECTED}>{$x}</option>\n"; - } - ?> - </select> - <br><?=gettext("Hint"); ?>: 24 <?=gettext("is"); ?> 255.255.255.0 - </td> - </tr> - <tr> - <td width="22%" valign="top" class="vncellreq"><?=gettext("No. PPPoE users"); ?></td> - <td width="78%" class="vtable"> - <select id="n_pppoe_units" name="n_pppoe_units"> - <?php - for($x=0; $x<255; $x++) { - if($x == $pconfig['n_pppoe_units']) - $SELECTED = " SELECTED"; - else - $SELECTED = ""; - echo "<option value=\"{$x}\"{$SELECTED}>{$x}</option>\n"; - } - ?> - </select> - <br><?=gettext("Hint: 10 is ten PPPoE clients"); ?> - </td> - </tr> - <tr> - <td width="22%" valign="top" class="vncellreq"><?=gettext("Server address"); ?></td> - <td width="78%" class="vtable"> - <?=$mandfldhtml;?><input name="localip" type="text" class="formfld unknown" id="localip" size="20" value="<?=htmlspecialchars($pconfig['localip']);?>"> - <br> - <?=gettext("Enter the IP address the PPPoE server should use on its side " . - "for all clients"); ?>.</td> - </tr> - <tr> - <td width="22%" valign="top" class="vncellreq"><?=gettext("Remote address range"); ?></td> - <td width="78%" class="vtable"> - <?=$mandfldhtml;?><input name="remoteip" type="text" class="formfld unknown" id="remoteip" size="20" value="<?=htmlspecialchars($pconfig['remoteip']);?>"> - <br> - <?=gettext("Specify the starting address for the client IP address subnet"); ?>.<br> - </td> - </tr> - <tr> - <td width="22%" valign="top" class="vncellreq"><?=gettext("DNS servers"); ?></td> - <td width="78%" class="vtable"> - <?=$mandfldhtml;?><input name="pppoe_dns1" type="text" class="formfld unknown" id="pppoe_dns1" size="20" value="<?=htmlspecialchars($pconfig['pppoe_dns1']);?>"> - <br> - <input name="pppoe_dns2" type="text" class="formfld unknown" id="pppoe_dns2" size="20" value="<?=htmlspecialchars($pconfig['pppoe_dns2']);?>"> - <br> - <?=gettext("If entered they will be given to all PPPoE clients, else LAN DNS and one WAN DNS will go to all clients"); ?><br> - </td> - </tr> - <tr> - <td width="22%" valign="top" class="vncell"><?=gettext("RADIUS"); ?></td> - <td width="78%" class="vtable"> - <input name="radiusenable" type="checkbox" id="radiusenable" onclick="enable_change(false)" value="yes" <?php if ($pconfig['radiusenable']) echo "checked"; ?>> - <strong><?=gettext("Use a RADIUS server for authentication"); ?><br> - </strong><?=gettext("When set, all users will be authenticated using " . - "the RADIUS server specified below. The local user database " . - "will not be used"); ?>.<br> - <br> - <input name="radacct_enable" type="checkbox" id="radacct_enable" onclick="enable_change(false)" value="yes" <?php if ($pconfig['radacct_enable']) echo "checked"; ?>> - <strong><?=gettext("Enable RADIUS accounting"); ?> <br> - <br> - </strong><?=gettext("Sends accounting packets to the RADIUS server"); ?>.<br> - <input name="radiussecenable" type="checkbox" id="radiussecenable" onclick="enable_change(false)" value="yes" <?php if ($pconfig['radiussecenable']) echo "checked"; ?>> - <strong><?=gettext("Use Backup RADIUS Server"); ?></strong><br> - <?=gettext("When set, if primary server fails all requests will be sent via backup server"); ?></td> - </tr> - <tr> - <td width="22%" valign="top" class="vncellreq"><?=gettext("NAS IP Address"); ?></td> - <td width="78%" class="vtable"> - <?=$mandfldhtml;?><input name="radius_nasip" type="text" class="formfld unknown" id="radius_nasip" size="20" value="<?=htmlspecialchars($pconfig['radius_nasip']);?>"> - <br><?=gettext("RADIUS server NAS IP Address"); ?><br> - </td> - </tr> - <tr> - <td width="22%" valign="top" class="vncellreq"><?=gettext("RADIUS Accounting Update"); ?></td> - <td width="78%" class="vtable"> - <?=$mandfldhtml;?><input name="radius_acct_update" type="text" class="formfld unknown" id="radius_acct_update" size="20" value="<?=htmlspecialchars($pconfig['radius_acct_update']);?>"> - <br><?=gettext("RADIUS accounting update period in seconds"); ?> - </td> - </tr> - <tr> - <td width="22%" valign="top" class="vncell"><?=gettext("RADIUS issued IPs"); ?></td> - <td width="78%" valign="top" class="vtable"> - <input name="radiusissueips" value="yes" type="checkbox" class="formfld" id="radiusissueips"<?php if($pconfig['radiusissueips']) echo " CHECKED"; ?>> - <br><?=gettext("Issue IP Addresses via RADIUS server"); ?>.</td> - </tr> - <tr> - <td width="22%" valign="top" class="vncell"><?=gettext("RADIUS server Primary"); ?></td> - <td width="78%" class="vtable"> - <input name="radiusserver" type="text" class="formfld unknown" id="radiusserver" size="20" value="<?=htmlspecialchars($pconfig['radiusserver']);?>"> - <input name="radiusserverport" type="text" class="formfld unknown" id="radiusserverport" size="4" value="<?=htmlspecialchars($pconfig['radiusserverport']);?>"> - <input name="radiusserveracctport" type="text" class="formfld unknown" id="radiusserveracctport" size="4" value="<?=htmlspecialchars($pconfig['radiusserveracctport']);?>"> - <br><?=gettext("Enter the IP address, authentication port and accounting port (optional) of the RADIUS server."); ?><br> - <br> <?=gettext("standard port 1812 and 1813 accounting"); ?></td> - </tr> - <tr> - <td width="22%" valign="top" class="vncell"><?=gettext("RADIUS primary shared secret"); ?></td> - <td width="78%" valign="top" class="vtable"> - <input name="radiussecret" type="password" class="formfld pwd" id="radiussecret" size="20" value="<?=htmlspecialchars($pconfig['radiussecret']);?>"> - <br><?=gettext("Enter the shared secret that will be used to authenticate " . - "to the RADIUS server"); ?>.</td> - </tr> - <tr> - <td width="22%" valign="top" class="vncell"><?=gettext("RADIUS server Secondary"); ?></td> - <td width="78%" class="vtable"> - <input name="radiusserver2" type="text" class="formfld unknown" id="radiusserver2" size="20" value="<?=htmlspecialchars($pconfig['radiusserver2']);?>"> - <input name="radiusserver2port" type="text" class="formfld unknown" id="radiusserver2port" size="4" value="<?=htmlspecialchars($pconfig['radiusserver2port']);?>"> - <input name="radiusserver2acctport" type="text" class="formfld unknown" id="radiusserver2acctport" size="4" value="<?=htmlspecialchars($pconfig['radiusserver2acctport']);?>"> - <br><?=gettext("Enter the IP address, authentication port and accounting port (optional) of the backup RADIUS server."); ?><br> - <br> <?=gettext("standard port 1812 and 1813 accounting"); ?></td> - </tr> - <tr> - <td width="22%" valign="top" class="vncell"><?=gettext("RADIUS secondary shared secret"); ?></td> - <td width="78%" valign="top" class="vtable"> - <input name="radiussecret2" type="password" class="formfld pwd" id="radiussecret2" size="20" value="<?=htmlspecialchars($pconfig['radiussecret2']);?>"> - <br> - <?=gettext("Enter the shared secret that will be used to authenticate " . - "to the RADIUS server"); ?>.</td> - </tr> - <tr> - <td height="16" colspan="2" valign="top"></td> - </tr> - <tr> - <td width="22%" valign="top"> </td> - <td width="78%"> - <input name="Submit" type="submit" class="formbtn" value="<?=gettext("Save"); ?>" onclick="enable_change(true)"> - </td> - </tr> - <tr> - <td width="22%" valign="top"> </td> - <td width="78%"><span class="vexpl"><span class="red"><strong><?=gettext("Note"); ?>:<br> - </strong></span><?=gettext("don't forget to add a firewall rule to permit " . - "traffic from PPPoE clients"); ?>!</span></td> - </tr> - </table> - </div> - </td> - </tr> +<?php if (is_subsystem_dirty('vpnpppoe')): ?><p> +<?php print_info_box_np(gettext("The PPPoE entry list has been changed") . ".<br>" . gettext("You must apply the changes in order for them to take effect."));?> +<?php endif; ?> + +<table class="tabcont" width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> + <td width="15%" class="listhdrr"><?=gettext("Interface");?></td> + <td width="10%" class="listhdrr"><?=gettext("Local ip");?></td> + <td width="25%" class="listhdrr"><?=gettext("Number of users");?></td> + <td width="25%" class="listhdr"><?=gettext("Description");?></td> + <td width="5%" class="list"> + <table border="0" cellspacing="0" cellpadding="1"> + <tr> + <td valign="middle" width="17"> </td> + <td valign="middle"><a href="vpn_pppoe_edit.php"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0" title="<?=gettext("add a new pppoe instance");?>"></a></td> + </tr> + </table> + </td> +</tr> + <?php $i = 0; foreach ($a_pppoes as $pppoe): ?> +<tr> + <td class="listlr" ondblclick="document.location='vpn_pppoe_edit.php?id=<?=$i;?>';"> + <?=htmlspecialchars(strtoupper($pppoe['interface']));?> + </td> + <td class="listlr" ondblclick="document.location='vpn_pppoe_edit.php?id=<?=$i;?>';"> + <?=htmlspecialchars($pppoe['localip']);?> + </td> + <td class="listr" ondblclick="document.location='vpn_pppoe_edit.php?id=<?=$i;?>';"> + <?=htmlspecialchars($pppoe['n_pppoe_units']);?> + </td> + <td class="listbg" ondblclick="document.location='vpn_pppoe_edit.php?id=<?=$i;?>';"> + <?=htmlspecialchars($pppoe['descr']);?> + </td> + <td valign="middle" nowrap class="list"> + <table border="0" cellspacing="0" cellpadding="1"> + <tr> + <td valign="middle"><a href="vpn_pppoe_edit.php?id=<?=$i;?>"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_e.gif" width="17" height="17" border="0" title="<?=gettext("edit pppoe instance"); ?>"></a></td> + <td><a href="vpn_pppoe.php?act=del&id=<?=$i;?>" onclick="return confirm('<?=gettext("Do you really want to delete this entry? All elements that still use it will become invalid (e.g. filter rules)!");?>')"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" border="0" title="<?=gettext("delete pppoe instance");?>"></a></td> + </tr> + </table> + </td> +</tr> + <?php $i++; endforeach; ?> +<tr> + <td class="list" colspan="4"></td> + <td class="list"> + <table border="0" cellspacing="0" cellpadding="1"> + <tr> + <td valign="middle" width="17"> </td> + <td valign="middle"><a href="vpn_pppoe_edit.php"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0" title="<?=gettext("add a new pppoe instance");?>"></a></td> + </td> + </tr> + </table> + </td> +</tr> </table> </form> -<script language="JavaScript"> -<!-- -enable_change(false); -//--> -</script> <?php include("fend.inc"); ?> </body> </html> diff --git a/usr/local/www/vpn_pppoe_edit.php b/usr/local/www/vpn_pppoe_edit.php new file mode 100755 index 0000000..39de7fb --- /dev/null +++ b/usr/local/www/vpn_pppoe_edit.php @@ -0,0 +1,611 @@ +<?php +/* + vpn_pppoe_edit.php + part of pfSense + + Copyright (C) 2005 Scott Ullrich (sullrich@gmail.com) + Copyright (C) 2010 Ermal Luçi + 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. +*/ + +##|+PRIV +##|*IDENT=page-services-pppoeserver-eidt +##|*NAME=Services: PPPoE Server: Edit page +##|*DESCR=Allow access to the 'Services: PPPoE Server: Edit' page. +##|*MATCH=vpn_pppoe_edit.php* +##|-PRIV + +require("guiconfig.inc"); +require_once("vpn.inc"); + +function vpn_pppoe_get_id() { + global $config; + + $vpnid = 1; + if (!is_array($config['pppoes']['pppoe'])) { + foreach ($config['pppoes']['pppoe'] as $pppoe) { + if ($vpnid == $pppoe['id']) + $vpnid++; + else + return $vpnid; + } + } + + return $vpnid; +} + +if (!is_array($config['pppoes']['pppoe'])) { + $config['pppoes']['pppoe'] = array(); +} +$a_pppoes = &$config['pppoes']['pppoe']; + +$id = $_GET['id']; +if (isset($_POST['id'])) + $id = $_POST['id']; + +if (isset($id) && $a_pppoes[$id]) { + $pppoecfg =& $a_pppoes[$id]; + + $pconfig['remoteip'] = $pppoecfg['remoteip']; + $pconfig['localip'] = $pppoecfg['localip']; + $pconfig['mode'] = $pppoecfg['mode']; + $pconfig['interface'] = $pppoecfg['interface']; + $pconfig['n_pppoe_units'] = $pppoecfg['n_pppoe_units']; + $pconfig['pppoe_subnet'] = $pppoecfg['pppoe_subnet']; + $pconfig['pppoe_dns1'] = $pppoecfg['dns1']; + $pconfig['pppoe_dns2'] = $pppoecfg['dns2']; + $pconfig['descr'] = $pppoecfg['descr']; + $pconfig['username'] = $pppoecfg['username']; + $pconfig['pppoeid'] = $pppoecfg['pppoeid']; + if (is_array($pppoecfg['radius'])) { + $pconfig['radacct_enable'] = isset($pppoecfg['radius']['accounting']); + $pconfig['radiusissueips'] = isset($pppoecfg['radius']['radiusissueips']); + if (is_array($pppoecfg['radius']['server'])) { + $pconfig['radiusenable'] = isset($pppoecfg['radius']['server']['enable']); + $pconfig['radiusserver'] = $pppoecfg['radius']['server']['ip']; + $pconfig['radiusserverport'] = $pppoecfg['radius']['server']['port']; + $pconfig['radiusserveracctport'] = $pppoecfg['radius']['server']['acctport']; + $pconfig['radiussecret'] = $pppoecfg['radius']['server']['secret']; + } + if (is_array($pppoecfg['radius']['server2'])) { + $pconfig['radiussecenable'] = isset($pppoecfg['radius']['server2']['enable']); + $pconfig['radiusserver2'] = $pppoecfg['radius']['server2']['ip']; + $pconfig['radiusserver2port'] = $pppoecfg['radius']['server2']['port']; + $pconfig['radiusserver2acctport'] = $pppoecfg['radius']['server2']['acctport']; + $pconfig['radiussecret2'] = $pppoecfg['radius']['server2']['secret2']; + } + $pconfig['radiusissueips'] = isset($pppoecfg['radius']['radiusissueips']); + $pconfig['radius_nasip'] = $pppoecfg['radius']['nasip']; + $pconfig['radius_acct_update'] = $pppoecfg['radius']['acct_update']; + } +} + + +if ($_POST) { + + unset($input_errors); + //$pconfig = $_POST; + + /* input validation */ + $reqdfields = explode(" ", "localip remoteip"); + $reqdfieldsn = array(gettext("Server address"),gettext("Remote start address")); + + if ($_POST['radiusenable']) { + $reqdfields = array_merge($reqdfields, explode(" ", "radiusserver radiussecret")); + $reqdfieldsn = array_merge($reqdfieldsn, + array(gettext("RADIUS server address"),gettext("RADIUS shared secret"))); + } + + do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors); + + if (($_POST['localip'] && !is_ipaddr($_POST['localip']))) + $input_errors[] = gettext("A valid server address must be specified."); + if (($_POST['pppoe_subnet'] && !is_ipaddr($_POST['remoteip']))) + $input_errors[] = gettext("A valid remote start address must be specified."); + if (($_POST['radiusserver'] && !is_ipaddr($_POST['radiusserver']))) + $input_errors[] = gettext("A valid RADIUS server address must be specified."); + + $_POST['remoteip'] = $pconfig['remoteip'] = gen_subnet($_POST['remoteip'], $_POST['pppoe_subnet']); + $subnet_start = ip2ulong($_POST['remoteip']); + $subnet_end = ip2ulong($_POST['remoteip']) + $_POST['pppoe_subnet'] - 1; + if ((ip2ulong($_POST['localip']) >= $subnet_start) && + (ip2ulong($_POST['localip']) <= $subnet_end)) + $input_errors[] = gettext("The specified server address lies in the remote subnet."); + if ($_POST['localip'] == get_interface_ip($_POST['interface'])) + $input_errors[] = gettext("The specified server address is equal to an interface ip address."); + + for($x=0; $x<4999; $x++) { + if ($_POST["username{$x}"]) { + if (empty($_POST["password{$x}"])) + $input_errors[] = gettext("No password specified for username ") . $_POST["username{$x}"]; + if ($_POST["ip{$x}"] <> "" && !is_ipaddr($_POST["ip{$x}"])) + $input_errors[] = gettext("Incorrect ip address specified for username ") . $_POST["username{$x}"]; + } + } + + if (!$input_errors) { + $pppoecfg = array(); + + $pppoecfg['remoteip'] = $_POST['remoteip']; + $pppoecfg['localip'] = $_POST['localip']; + $pppoecfg['mode'] = $_POST['mode']; + $pppoecfg['interface'] = $_POST['interface']; + $pppoecfg['n_pppoe_units'] = $_POST['n_pppoe_units']; + $pppoecfg['pppoe_subnet'] = $_POST['pppoe_subnet']; + $pppoecfg['descr'] = $_POST['descr']; + if ($_POST['radiusserver'] || $_POST['radiusserver2']) { + $pppoecfg['radius'] = array(); + + $pppoecfg['radius']['nasip'] = $_POST['radius_nasip']; + $pppoecfg['radius']['acct_update'] = $_POST['radius_acct_update']; + } + if ($_POST['radiusserver']) { + $pppoecfg['radius']['server'] = array(); + + $pppoecfg['radius']['server']['ip'] = $_POST['radiusserver']; + $pppoecfg['radius']['server']['secret'] = $_POST['radiussecret']; + $pppoecfg['radius']['server']['port'] = $_POST['radiusserverport']; + $pppoecfg['radius']['server']['acctport'] = $_POST['radiusserveracctport']; + } + if ($_POST['radiusserver']) { + $pppoecfg['radius']['server2'] = array(); + + $pppoecfg['radius']['server2']['ip'] = $_POST['radiusserver2']; + $pppoecfg['radius']['server2']['secret2'] = $_POST['radiussecret2']; + $pppoecfg['radius']['server2']['port'] = $_POST['radiusserver2port']; + $pppoecfg['radius']['server2']['acctport'] = $_POST['radiusserver2acctport']; + } + + if ($_POST['pppoe_dns1'] <> "") + $pppoecfg['dns1'] = $_POST['pppoe_dns1']; + + if ($_POST['pppoe_dns2'] <> "") + $pppoecfg['dns2'] = $_POST['pppoe_dns2']; + + if($_POST['radiusenable'] == "yes") + $pppoecfg['radius']['server']['enable'] = true; + + if($_POST['radiussecenable'] == "yes") + $pppoecfg['radius']['server2']['enable'] = true; + + if($_POST['radacct_enable'] == "yes") + $pppoecfg['radius']['accounting'] = true; + + if($_POST['radiusissueips'] == "yes") + $pppoecfg['radius']['radiusissueips'] = true; + + if($_POST['pppoeid']) + $pppoecfg['pppoeid'] = $_POST['pppoeid']; + else + $pppoecfg['pppoeid'] = vpn_pppoe_get_id(); + + $users = array(); + for($x=0; $x<4999; $x++) { + if ($_POST["username{$x}"]) { + $usernam = $_POST["username{$x}"] . ":" . base64_encode($_POST["password{$x}"]); + if ($_POST["ip{$x}"]) + $usernam .= ":" . $_POST["ip{$x}"]; + $users[] = $usernam; + } + } + if (count($users) > 0) + $pppoecfg['username'] = implode(" ", $users); + + if (!isset($id)) + $id = count($a_pppoes); + if (file_exists("{$g['tmp_path']}/.vpn_pppoe.apply")) + $toapplylist = unserialize(file_get_contents("{$g['tmp_path']}/.vpn_pppoe.apply")); + else + $toapplylist = array(); + + $toapplylist[] = $pppoecfg['pppoeid']; + $a_pppoes[$id] = $pppoecfg; + + write_config(); + mark_subsystem_dirty('vpnpppoe'); + file_put_contents("{$g['tmp_path']}/.vpn_pppoe.apply", serialize($toapplylist)); + header("Location: vpn_pppoe.php"); + exit; + } +} + +$pgtitle = array(gettext("Services"),gettext("PPPoE Server"), gettext("Edit")); +include("head.inc"); + +?> + +<body link="#0000CC" vlink="#0000CC" alink="#0000CC"> +<?php include("fbegin.inc"); ?> +<script type="text/javascript" src="/javascript/row_helper.js"> +</script> + +<input type='hidden' name='username' value='textbox' class="formfld unknown" /> +<input type='hidden' name='password' value='textbox' /> +<input type='hidden' name='ip' value='textbox' /> + +<script type="text/javascript"> + rowname[0] = "username"; + rowtype[0] = "textbox"; + rowsize[0] = "20"; + + rowname[1] = "password"; + rowtype[1] = "password"; + rowsize[1] = "20"; + + rowname[2] = "ip"; + rowtype[2] = "textbox"; + rowsize[2] = "10"; +</script> + +<script language="JavaScript"> +<!-- +function get_radio_value(obj) +{ + for (i = 0; i < obj.length; i++) { + if (obj[i].checked) + return obj[i].value; + } + return null; +} + +function enable_change(enable_over) { + if ((get_radio_value(document.iform.mode) == "server") || enable_over) { + document.iform.remoteip.disabled = 0; + document.iform.descr.disabled = 0; + document.iform.localip.disabled = 0; + document.iform.radiusenable.disabled = 0; + document.iform.interface.disabled = 0; + document.iform.n_pppoe_units.disabled = 0; + document.iform.pppoe_subnet.disabled = 0; + document.iform.pppoe_dns1.disabled = 0; + document.iform.pppoe_dns2.disabled = 0; + if (document.iform.radiusenable.checked || enable_over) { + document.iform.radacct_enable.disabled = 0; + document.iform.radiusserver.disabled = 0; + document.iform.radiussecret.disabled = 0; + document.iform.radiusserverport.disabled = 0; + document.iform.radiusserveracctport.disabled = 0; + document.iform.radiusissueips.disabled = 0; + document.iform.radius_nasip.disabled = 0; + document.iform.radiusissueips.disabled = 0; + document.iform.radius_nasip.disabled = 0; + document.iform.radius_acct_update.disabled = 0; + document.iform.radiussecenable.disabled = 0; + if (document.iform.radiussecenable.checked || enable_over) { + document.iform.radiusserver2.disabled = 0; + document.iform.radiussecret2.disabled = 0; + document.iform.radiusserver2port.disabled = 0; + document.iform.radiusserver2acctport.disabled = 0; + } else { + + document.iform.radiusserver2.disabled = 1; + document.iform.radiussecret2.disabled = 1; + document.iform.radiusserver2port.disabled = 1; + document.iform.radiusserver2acctport.disabled = 1; + } + } else { + document.iform.radacct_enable.disabled = 1; + document.iform.radiusserver.disabled = 1; + document.iform.radiussecret.disabled = 1; + document.iform.radiusserverport.disabled = 1; + document.iform.radiusserveracctport.disabled = 1; + document.iform.radiusissueips.disabled = 1; + document.iform.radius_nasip.disabled = 1; + document.iform.radius_acct_update.disabled = 1; + document.iform.radiussecenable.disabled = 1; + } + } else { + document.iform.interface.disabled = 1; + document.iform.n_pppoe_units.disabled = 1; + document.iform.pppoe_subnet.disabled = 1; + document.iform.remoteip.disabled = 1; + document.iform.descr.disabled = 1; + document.iform.localip.disabled = 1; + document.iform.pppoe_dns1.disabled = 1; + document.iform.pppoe_dns2.disabled = 1; + document.iform.radiusenable.disabled = 1; + document.iform.radiussecenable.disabled = 1; + document.iform.radacct_enable.disabled = 1; + document.iform.radiusserver.disabled = 1; + document.iform.radiussecret.disabled = 1; + document.iform.radiusserverport.disabled = 1; + document.iform.radiusserveracctport.disabled = 1; + document.iform.radiusserver2.disabled = 1; + document.iform.radiussecret2.disabled = 1; + document.iform.radiusserver2port.disabled = 1; + document.iform.radiusserver2acctport.disabled = 1; + document.iform.radiusissueips.disabled = 1; + document.iform.radius_nasip.disabled = 1; + document.iform.radius_acct_update.disabled = 1; + } +} +//--> +</script> +<form action="vpn_pppoe_edit.php" method="post" name="iform" id="iform"> +<?php if ($input_errors) print_input_errors($input_errors); ?> +<?php if ($savemsg) print_info_box($savemsg); ?> +<table width="100%" border="0" cellpadding="0" cellspacing="0"> + <tr> + <td> + <div id="mainarea"> + <table class="tabcont" width="100%" border="0" cellpadding="6" cellspacing="0"> + <tr> + <td height="16" colspan="2" class="listtopic" valign="top"><?php echo gettext("PPPoE server configuration"); ?></td> + </tr> + <tr> + <td width="22%" valign="top" class="vtable"> </td> + <td width="78%" class="vtable"> + <input name="mode" type="radio" onclick="enable_change(false)" value="off" + <?php if ($pconfig['mode'] != "server") echo "checked";?>> + <?=gettext("Off"); ?></td> + </tr> + <tr> + <td width="22%" valign="top" class="vtable"> </td> + <td width="78%" class="vtable"> + <input type="radio" name="mode" value="server" onclick="enable_change(false)" <?php if ($pconfig['mode'] == "server") echo "checked"; ?>> + <?=gettext("Enable PPPoE server"); ?></td> + </tr> + + <tr> + <td width="22%" valign="top" class="vncell"><b><?=gettext("Interface"); ?></b></td> + <td width="78%" valign="top" class="vtable"> + + <select name="interface" class="formselect" id="interface"> + <?php + $interfaces = get_configured_interface_with_descr(); + + foreach ($interfaces as $iface => $ifacename): + ?> + <option value="<?=$iface;?>" <?php if ($iface == $pconfig['interface']) echo "selected"; ?>> + <?=htmlspecialchars($ifacename);?> + </option> + <?php endforeach; ?> + </select> <br> + + </td> + </tr> + <tr> + <td width="22%" valign="top" class="vncellreq"><?=gettext("Subnet netmask"); ?></td> + <td width="78%" class="vtable"> + <select id="pppoe_subnet" name="pppoe_subnet"> + <?php + for($x=0; $x<33; $x++) { + if($x == $pconfig['pppoe_subnet']) + $SELECTED = " SELECTED"; + else + $SELECTED = ""; + echo "<option value=\"{$x}\"{$SELECTED}>{$x}</option>\n"; + } + ?> + </select> + <br><?=gettext("Hint"); ?>: 24 <?=gettext("is"); ?> 255.255.255.0 + </td> + </tr> + <tr> + <td width="22%" valign="top" class="vncellreq"><?=gettext("No. PPPoE users"); ?></td> + <td width="78%" class="vtable"> + <select id="n_pppoe_units" name="n_pppoe_units"> + <?php + for($x=0; $x<255; $x++) { + if($x == $pconfig['n_pppoe_units']) + $SELECTED = " SELECTED"; + else + $SELECTED = ""; + echo "<option value=\"{$x}\"{$SELECTED}>{$x}</option>\n"; + } + ?> + </select> + <br><?=gettext("Hint: 10 is ten PPPoE clients"); ?> + </td> + </tr> + <tr> + <td width="22%" valign="top" class="vncellreq"><?=gettext("Server address"); ?></td> + <td width="78%" class="vtable"> + <?=$mandfldhtml;?><input name="localip" type="text" class="formfld unknown" id="localip" size="20" value="<?=htmlspecialchars($pconfig['localip']);?>"> + <br> + <?=gettext("Enter the IP address the PPPoE server should use on its side " . + "for all clients"); ?>.</td> + </tr> + <tr> + <td width="22%" valign="top" class="vncellreq"><?=gettext("Remote address range"); ?></td> + <td width="78%" class="vtable"> + <?=$mandfldhtml;?><input name="remoteip" type="text" class="formfld unknown" id="remoteip" size="20" value="<?=htmlspecialchars($pconfig['remoteip']);?>"> + <br> + <?=gettext("Specify the starting address for the client IP address subnet"); ?>.<br> + </td> + </tr> + <tr> + <td width="22%" valign="top" class="vncellreq"><?=gettext("Description"); ?></td> + <td width="78%" class="vtable"> + <?=$mandfldhtml;?><input name="descr" type="text" class="formfld unknown" id="descr" size="40" value="<?=htmlspecialchars($pconfig['descr']);?>"> + <br/> + </td> + </tr> + <tr> + <td width="22%" valign="top" class="vncellreq"><?=gettext("DNS servers"); ?></td> + <td width="78%" class="vtable"> + <?=$mandfldhtml;?><input name="pppoe_dns1" type="text" class="formfld unknown" id="pppoe_dns1" size="20" value="<?=htmlspecialchars($pconfig['pppoe_dns1']);?>"> + <br> + <input name="pppoe_dns2" type="text" class="formfld unknown" id="pppoe_dns2" size="20" value="<?=htmlspecialchars($pconfig['pppoe_dns2']);?>"> + <br> + <?=gettext("If entered they will be given to all PPPoE clients, else LAN DNS and one WAN DNS will go to all clients"); ?><br> + </td> + </tr> + <tr> + <td width="22%" valign="top" class="vncell"><?=gettext("RADIUS"); ?></td> + <td width="78%" class="vtable"> + <input name="radiusenable" type="checkbox" id="radiusenable" onclick="enable_change(false)" value="yes" <?php if ($pconfig['radiusenable']) echo "checked"; ?>> + <strong><?=gettext("Use a RADIUS server for authentication"); ?><br> + </strong><?=gettext("When set, all users will be authenticated using " . + "the RADIUS server specified below. The local user database " . + "will not be used"); ?>.<br> + <br> + <input name="radacct_enable" type="checkbox" id="radacct_enable" onclick="enable_change(false)" value="yes" <?php if ($pconfig['radacct_enable']) echo "checked"; ?>> + <strong><?=gettext("Enable RADIUS accounting"); ?> <br> + <br> + </strong><?=gettext("Sends accounting packets to the RADIUS server"); ?>.<br> + <input name="radiussecenable" type="checkbox" id="radiussecenable" onclick="enable_change(false)" value="yes" <?php if ($pconfig['radiussecenable']) echo "checked"; ?>> + <strong><?=gettext("Use Backup RADIUS Server"); ?></strong><br> + <?=gettext("When set, if primary server fails all requests will be sent via backup server"); ?></td> + </tr> + <tr> + <td width="22%" valign="top" class="vncellreq"><?=gettext("NAS IP Address"); ?></td> + <td width="78%" class="vtable"> + <?=$mandfldhtml;?><input name="radius_nasip" type="text" class="formfld unknown" id="radius_nasip" size="20" value="<?=htmlspecialchars($pconfig['radius_nasip']);?>"> + <br><?=gettext("RADIUS server NAS IP Address"); ?><br> + </td> + </tr> + <tr> + <td width="22%" valign="top" class="vncellreq"><?=gettext("RADIUS Accounting Update"); ?></td> + <td width="78%" class="vtable"> + <?=$mandfldhtml;?><input name="radius_acct_update" type="text" class="formfld unknown" id="radius_acct_update" size="20" value="<?=htmlspecialchars($pconfig['radius_acct_update']);?>"> + <br><?=gettext("RADIUS accounting update period in seconds"); ?> + </td> + </tr> + <tr> + <td width="22%" valign="top" class="vncell"><?=gettext("RADIUS issued IPs"); ?></td> + <td width="78%" valign="top" class="vtable"> + <input name="radiusissueips" value="yes" type="checkbox" class="formfld" id="radiusissueips"<?php if($pconfig['radiusissueips']) echo " CHECKED"; ?>> + <br><?=gettext("Issue IP Addresses via RADIUS server"); ?>.</td> + </tr> + <tr> + <td width="22%" valign="top" class="vncell"><?=gettext("RADIUS server Primary"); ?></td> + <td width="78%" class="vtable"> + <input name="radiusserver" type="text" class="formfld unknown" id="radiusserver" size="20" value="<?=htmlspecialchars($pconfig['radiusserver']);?>"> + <input name="radiusserverport" type="text" class="formfld unknown" id="radiusserverport" size="4" value="<?=htmlspecialchars($pconfig['radiusserverport']);?>"> + <input name="radiusserveracctport" type="text" class="formfld unknown" id="radiusserveracctport" size="4" value="<?=htmlspecialchars($pconfig['radiusserveracctport']);?>"> + <br><?=gettext("Enter the IP address, authentication port and accounting port (optional) of the RADIUS server."); ?><br> + <br> <?=gettext("standard port 1812 and 1813 accounting"); ?></td> + </tr> + <tr> + <td width="22%" valign="top" class="vncell"><?=gettext("RADIUS primary shared secret"); ?></td> + <td width="78%" valign="top" class="vtable"> + <input name="radiussecret" type="password" class="formfld pwd" id="radiussecret" size="20" value="<?=htmlspecialchars($pconfig['radiussecret']);?>"> + <br><?=gettext("Enter the shared secret that will be used to authenticate " . + "to the RADIUS server"); ?>.</td> + </tr> + <tr> + <td width="22%" valign="top" class="vncell"><?=gettext("RADIUS server Secondary"); ?></td> + <td width="78%" class="vtable"> + <input name="radiusserver2" type="text" class="formfld unknown" id="radiusserver2" size="20" value="<?=htmlspecialchars($pconfig['radiusserver2']);?>"> + <input name="radiusserver2port" type="text" class="formfld unknown" id="radiusserver2port" size="4" value="<?=htmlspecialchars($pconfig['radiusserver2port']);?>"> + <input name="radiusserver2acctport" type="text" class="formfld unknown" id="radiusserver2acctport" size="4" value="<?=htmlspecialchars($pconfig['radiusserver2acctport']);?>"> + <br><?=gettext("Enter the IP address, authentication port and accounting port (optional) of the backup RADIUS server."); ?><br> + <br> <?=gettext("standard port 1812 and 1813 accounting"); ?></td> + </tr> + <tr> + <td width="22%" valign="top" class="vncell"><?=gettext("RADIUS secondary shared secret"); ?></td> + <td width="78%" valign="top" class="vtable"> + <input name="radiussecret2" type="password" class="formfld pwd" id="radiussecret2" size="20" value="<?=htmlspecialchars($pconfig['radiussecret2']);?>"> + <br> + <?=gettext("Enter the shared secret that will be used to authenticate " . + "to the RADIUS server"); ?>.</td> + </tr> + <tr> + <td width="22%" valign="top" class="vncell"><div id="addressnetworkport"><?=gettext("User (s)");?></div></td> + <td width="78%" class="vtable"> + <table id="usertable"> + <tbody> + <tr> + <td><div id="onecolumn"><?=gettext("Username");?></div></td> + <td><div id="twocolumn"><?=gettext("Password");?></div></td> + <td><div id="thirdcolumn"><?=gettext("IP");?></div></td> + </tr> + <?php $counter = 0; + $usernames = $pconfig['username']; + if ($usernames <> "") { + $item = explode(" ", $usernames); + foreach($item as $ww) { + $wws = explode(":", $ww); + $user = $wws[0]; + $passwd = base64_decode($wws[1]); + $ip = $wws[2]; + $tracker = $counter; + ?> + <tr> + <td> + <input name="username<?php echo $tracker; ?>" type="text" class="formfld unknown" id="username<?php echo $tracker; ?>" size="20" value="<?=htmlspecialchars($user);?>" /> + </td> + <td> + <input name="password<?php echo $tracker; ?>" type="password" class="formfld pwd" id="password<?php echo $tracker; ?>" size="20" value="<?=htmlspecialchars($passwd);?>" /> + </td> + <td> + <input name="ip<?php echo $tracker; ?>" type="text" class="formfld unknown" id="ip<?php echo $tracker; ?>" size="10" value="<?=htmlspecialchars($ip);?>" /> + </td> + <td> + <input type="image" src="/themes/<?echo $g['theme'];?>/images/icons/icon_x.gif" onclick="removeRow(this); return false;" value="<?=gettext("Delete");?>" /> + </td> + </tr> + <?php + $counter++; + } // end foreach + } // end if + ?> + </tbody> + </table> + <a onclick="javascript:addRowTo('usertable'); return false;" href="#"> + <img border="0" src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" alt="" title="<?=gettext("add another entry");?>" /> + </a> + </td> + </tr> + <tr> + <td height="16" colspan="2" valign="top"></td> + </tr> + <tr> + <td width="22%" valign="top"> </td> + <td width="78%"> + <?php if (isset($id)) + echo "<input type='hidden' name='id' id='id' value='{$id}' >"; + ?> + <?php if (isset($pconfig['pppoeid'])) + echo "<input type='hidden' name='pppoeid' id='pppoeid' value='{$pppoeid}' >"; + ?> + <input name="Submit" type="submit" class="formbtn" value="<?=gettext("Save"); ?>"> + <a href="vpn_pppoe.php"><input name="Cancel" type="button" class="formbtn" value="<?=gettext("Cancel"); ?>"></a> + </td> + </tr> + <tr> + <td width="22%" valign="top"> </td> + <td width="78%"><span class="vexpl"><span class="red"><strong><?=gettext("Note"); ?>:<br> + </strong></span><?=gettext("don't forget to add a firewall rule to permit " . + "traffic from PPPoE clients"); ?>!</span></td> + </tr> + </table> + </div> + </td> + </tr> +</table> +</form> +<script type="text/javascript"> +enable_change(false); + +field_counter_js = 3; +rows = 1; +totalrows = <?php echo $counter; ?>; +loaded = <?php echo $counter; ?>; + +</script> +<?php include("fend.inc"); ?> +</body> +</html> diff --git a/usr/local/www/vpn_pppoe_users.php b/usr/local/www/vpn_pppoe_users.php deleted file mode 100755 index f9395e5..0000000 --- a/usr/local/www/vpn_pppoe_users.php +++ /dev/null @@ -1,143 +0,0 @@ -<?php -/* - vpn_pppoe_users.php - part of pfSense - - Copyright (C) 2005 Scott Ullrich (sullrich@gmail.com) - 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. -*/ - -##|+PRIV -##|*IDENT=page-services-pppoeserver-users -##|*NAME=Services: PPPoE Server: Users page -##|*DESCR=Allow access to the 'Services: PPPoE Server: Users' page. -##|*MATCH=vpn_pppoe_users.php* -##|-PRIV - -require("guiconfig.inc"); -require_once("vpn.inc"); - -if (!is_array($config['pppoe']['user'])) { - $config['pppoe']['user'] = array(); -} -$a_secret = &$config['pppoe']['user']; - -if ($_POST) { - - $pconfig = $_POST; - - if ($_POST['apply']) { - $retval = 0; - $retval = vpn_setup(); - $savemsg = get_std_save_message($retval); - if ($retval == 0) { - if (is_subsystem_dirty('pppoeusers')) - clear_subsystem_dirty('pppoeusers'); - } - } -} - -if ($_GET['act'] == "del") { - if ($a_secret[$_GET['id']]) { - unset($a_secret[$_GET['id']]); - write_config(); - mark_subsystem_dirty('pppoeusers'); - header("Location: vpn_pppoe_users.php"); - exit; - } -} - -$pgtitle = array(gettext("Services"),gettext("PPPoE Server"),gettext("Users")); -include("head.inc"); - -?> - -<body link="#0000CC" vlink="#0000CC" alink="#0000CC"> -<?php include("fbegin.inc"); ?> -<form action="vpn_pppoe_users.php" method="post"> -<?php if ($savemsg) print_info_box($savemsg); ?> -<?php if (isset($config['pppoe']['radius']['enable'])) - print_info_box(gettext("Warning: RADIUS is enabled. The local user database will not be used.")); ?> -<?php if (is_subsystem_dirty('pppoeusers')): ?><p> -<?php print_info_box_np(gettext("The PPPoE user list has been modified") . ".<br>" . gettext("You must apply the changes in order for them to take effect") . ".<br><b>" . gettext("Warning: this will terminate all current PPPoE sessions") . "!</b>");?><br> -<?php endif; ?> -<table width="100%" border="0" cellpadding="0" cellspacing="0"> - <tr><td class="tabnavtbl"> -<?php - $tab_array = array(); - $tab_array[0] = array(gettext("Configuration"), false, "vpn_pppoe.php"); - $tab_array[1] = array(gettext("Users"), true, "vpn_pppoe_users.php"); - display_top_tabs($tab_array); -?> </td></tr> - <tr> - <td> - <div id="mainarea"> - <table class="tabcont" width="100%" border="0" cellpadding="6" cellspacing="0"> - <tr> - <td class="listhdrr"><?=gettext("Username"); ?></td> - <td class="listhdr"><?=gettext("IP address"); ?></td> - <td class="list"> - <table border="0" cellspacing="0" cellpadding="1"> - <tr> - <td width="17"></td> - <td><a href="vpn_pppoe_users_edit.php"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" title="<?=gettext("add user"); ?>" width="17" height="17" border="0"></a></td> - </tr> - </table> - </td> - </tr> - <?php $i = 0; foreach ($a_secret as $secretent): ?> - <tr> - <td class="listlr"> - <?=htmlspecialchars($secretent['name']);?> - </td> - <td class="listr"> - <?php if($secretent['ip'] == "") $secretent['ip'] = "Dynamic"; ?> - <?=htmlspecialchars($secretent['ip']);?> - </td> - <td class="list" nowrap> <a href="vpn_pppoe_users_edit.php?id=<?=$i;?>"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_e.gif" title="<?=gettext("edit user"); ?>" width="17" height="17" border="0"></a> - <a href="vpn_pppoe_users.php?act=del&id=<?=$i;?>" onclick="return confirm('<?=gettext("Do you really want to delete this user?"); ?>')"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" title="<?=gettext("delete user"); ?>" width="17" height="17" border="0"></a></td> - </tr> - <?php $i++; endforeach; ?> - <tr> - <td class="list" colspan="2"></td> - <td class="list"> - <table border="0" cellspacing="0" cellpadding="1"> - <tr> - <td width="17"></td> - <td><a href="vpn_pppoe_users_edit.php"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" title="<?=gettext("add user"); ?>" width="17" height="17" border="0"></a></td> - </tr> - </table> - </td> - </tr> - </table> -</div> - </td> - </tr> -</table> -</form> -<?php include("fend.inc"); ?> -</body> -</html> - - diff --git a/usr/local/www/vpn_pppoe_users_edit.php b/usr/local/www/vpn_pppoe_users_edit.php deleted file mode 100755 index 6c15d35..0000000 --- a/usr/local/www/vpn_pppoe_users_edit.php +++ /dev/null @@ -1,179 +0,0 @@ -<?php -/* - vpn_pppoe_users_edit.php - part of pfSense - - Copyright (C) 2005 Scott Ullrich (sullrich@gmail.com) - 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. -*/ - -##|+PRIV -##|*IDENT=page-services-pppoeserver-user-edit -##|*NAME=Services: PPPoE Server: User: Edit page -##|*DESCR=Allow access to the 'Services: PPPoE Server: User: Edit' page. -##|*MATCH=vpn_pppoe_users_edit.php* -##|-PRIV - -function pppoeusercmp($a, $b) { - return strcasecmp($a['name'], $b['name']); -} - -function pppoe_users_sort() { - global $config; - - if (!is_array($config['pppoe']['user'])) - return; - - usort($config['pppoe']['user'], "pppoeusercmp"); -} - -require("guiconfig.inc"); -require_once("vpn.inc"); - -if (!is_array($config['pppoe']['user'])) { - $config['pppoe']['user'] = array(); -} -$a_secret = &$config['pppoe']['user']; - -$id = $_GET['id']; -if (isset($_POST['id'])) - $id = $_POST['id']; - -if (isset($id) && $a_secret[$id]) { - $pconfig['username'] = $a_secret[$id]['name']; - $pconfig['ip'] = $a_secret[$id]['ip']; -} - -if ($_POST) { - - unset($input_errors); - $pconfig = $_POST; - - /* input validation */ - if (isset($id) && ($a_secret[$id])) { - $reqdfields = explode(" ", "username"); - $reqdfieldsn = array(gettext("Username")); - } else { - $reqdfields = explode(" ", "username password"); - $reqdfieldsn = array(gettext("Username"),gettext("Password")); - } - - do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors); - - if (preg_match("/[^a-zA-Z0-9\.\-\@_]/", $_POST['username'])) - $input_errors[] = gettext("The username contains invalid characters."); - - if (preg_match("/[^a-zA-Z0-9\.\-_]/", $_POST['password'])) - $input_errors[] = gettext("The password contains invalid characters."); - - if (($_POST['password']) && ($_POST['password'] != $_POST['password2'])) { - $input_errors[] = gettext("The passwords do not match."); - } - if (($_POST['ip'] && !is_ipaddr($_POST['ip']))) { - $input_errors[] = gettext("The IP address entered is not valid."); - } - - if (!$input_errors && !(isset($id) && $a_secret[$id])) { - /* make sure there are no dupes */ - foreach ($a_secret as $secretent) { - if ($secretent['name'] == $_POST['username']) { - $input_errors[] = gettext("Another entry with the same username already exists."); - break; - } - } - } - - if (!$input_errors) { - - if (isset($id) && $a_secret[$id]) - $secretent = $a_secret[$id]; - - $secretent['name'] = $_POST['username']; - $secretent['ip'] = $_POST['ip']; - - if ($_POST['password']) - $secretent['password'] = $_POST['password']; - - if (isset($id) && $a_secret[$id]) - $a_secret[$id] = $secretent; - else - $a_secret[] = $secretent; - pppoe_users_sort(); - - write_config(); - - $retval = vpn_setup(); - - header("Location: vpn_pppoe_users.php"); - exit; - } -} - -$pgtitle = array(gettext("Services"),gettext("PPPoE Server"),gettext("User"),gettext("Edit")); -include("head.inc"); - -?> -<body link="#0000CC" vlink="#0000CC" alink="#0000CC"> -<?php include("fbegin.inc"); ?> -<?php if ($input_errors) print_input_errors($input_errors); ?> - <form action="vpn_pppoe_users_edit.php" method="post" name="iform" id="iform"> - <div id="mainarea"> - <table width="100%" border="0" cellpadding="6" cellspacing="0"> - <tr> - <td width="22%" valign="top" class="vncellreq"><?=gettext("Username"); ?></td> - <td width="78%" class="vtable"> - <?=$mandfldhtml;?><input name="username" type="text" class="formfld user" id="username" size="20" value="<?=htmlspecialchars($pconfig['username']);?>"> - </td> - <tr> - <td width="22%" valign="top" class="vncellreq"><?=gettext("Password"); ?></td> - <td width="78%" class="vtable"> - <?=$mandfldhtml;?><input name="password" type="password" class="formfld pwd" id="password" size="20"> - <br><?=$mandfldhtml;?><input name="password2" type="password" class="formfld pwd" id="password2" size="20"> - (<?=gettext("confirmation"); ?>)<?php if (isset($id) && $a_secret[$id]): ?><br> - <span class="vexpl"><?=gettext("If you want to change the users' password, " . - "enter it here twice"); ?>.</span><?php endif; ?></td> - </tr> - <tr> - <td width="22%" valign="top" class="vncell"><?=gettext("IP address"); ?></td> - <td width="78%" class="vtable"> - <input name="ip" type="text" class="formfld unknown" id="ip" size="20" value="<?=htmlspecialchars($pconfig['ip']);?>"> - <br><span class="vexpl"><?=gettext("If you want the user to be assigned a specific IP address, enter it here"); ?>.</span></td> - </tr> - <tr> - <td class="vncell" width="22%" valign="top"> </td> - <td class="vncell" width="78%"> - <input name="Submit" type="submit" class="formbtn" value="<?=gettext("Save"); ?>"> - <?php if (isset($id) && $a_secret[$id]): ?> - <input name="id" type="hidden" value="<?=$id;?>"> - <?php endif; ?> - </td> - </tr> - </table> - </div> -</form> -<?php include("fend.inc"); ?> -</body> -</html> - - diff --git a/usr/local/www/widgets/widgets/services_status.widget.php b/usr/local/www/widgets/widgets/services_status.widget.php index 11d448e..11b3dce 100644 --- a/usr/local/www/widgets/widgets/services_status.widget.php +++ b/usr/local/www/widgets/widgets/services_status.widget.php @@ -175,7 +175,7 @@ if($services) { if(!$service['description']) $service['description'] = get_pkg_descr($service['name']); echo '<tr><td class="listlr">' . $service['name'] . "</td>\n"; echo '<td class="listr">' . substr($service['description'],0 ,20) . "</td>\n"; - if(is_service_running($service['name'], $ps) or is_process_running($service['name']) ) { + if(is_service_running($service['name'])) { echo '<td class="listr"><center>'; echo "<img src=\"/themes/" . $g["theme"] . "/images/icons/icon_pass.gif\"> Running</td>\n"; $running = true; diff --git a/usr/local/www/wizard.php b/usr/local/www/wizard.php index d4a2b02..d255725 100755 --- a/usr/local/www/wizard.php +++ b/usr/local/www/wizard.php @@ -508,7 +508,7 @@ function showchange() { if($field['add_to_certca_selection'] == $value) $SELECTED = " SELECTED"; echo "<option value='" . $field['add_to_certca_selection'] . "'" . $SELECTED . ">" . $field['add_to_certca_selection'] . "</option>\n"; } - foreach($config['system']['ca'] as $ca) { + foreach($config['ca'] as $ca) { $name = htmlspecialchars($ca['name']); $SELECTED = ""; if ($value == $name) $SELECTED = " SELECTED"; @@ -546,7 +546,7 @@ function showchange() { if($field['add_to_cert_selection'] == $value) $SELECTED = " SELECTED"; echo "<option value='" . $field['add_to_cert_selection'] . "'" . $SELECTED . ">" . $field['add_to_cert_selection'] . "</option>\n"; } - foreach($config['system']['cert'] as $ca) { + foreach($config['cert'] as $ca) { if (stristr($ca['name'], "webconf")) continue; $name = htmlspecialchars($ca['name']); diff --git a/usr/local/www/wizards/openvpn_wizard.inc b/usr/local/www/wizards/openvpn_wizard.inc index ff8175c..fc7d0c4 100644 --- a/usr/local/www/wizards/openvpn_wizard.inc +++ b/usr/local/www/wizards/openvpn_wizard.inc @@ -163,7 +163,7 @@ function step5_submitphpaction() { function step6_stepbeforeformdisplay() { global $stepid, $config; - if (count($config['system']['ca']) < 1) { + if (count($config['ca']) < 1) { $stepid++; } } @@ -185,8 +185,8 @@ function step7_submitphpaction() { $canames = array(); $cacns = array(); - if (is_array($config['system']['ca'])) { - foreach($config['system']['ca'] as $ca) { + if (is_array($config['ca'])) { + foreach($config['ca'] as $ca) { $canames[] = $ca['name']; $cainfo = cert_get_subject_hash($ca['crt']); $cacns[] = $cainfo["CN"]; @@ -213,8 +213,8 @@ function step7_submitphpaction() { function step8_stepbeforeformdisplay() { global $stepid, $config; - if (count($config['system']['cert']) < 1 || - (count($config['system']['cert']) == 1 && stristr($config['system']['cert'][0]['name'], "webconf"))) { + if (count($config['cert']) < 1 || + (count($config['cert']) == 1 && stristr($config['cert'][0]['name'], "webconf"))) { $stepid++; } } @@ -271,8 +271,8 @@ function step9_submitphpaction() { $certnames = array(); $certcns = array(); - if (is_array($config['system']['cert'])) { - foreach($config['system']['cert'] as $cert) { + if (is_array($config['cert'])) { + foreach($config['cert'] as $cert) { $certnames[] = $cert['name']; $certinfo = cert_get_subject_hash($cert['crt']); $certcns[] = $certinfo["CN"]; @@ -450,10 +450,10 @@ function step12_submitphpaction() { 'commonName' => $pconfig['step6']['certca']); ca_create($ca, $pconfig['step6']['keylength'], $pconfig['step6']['lifetime'], $dn); - if (!is_array($config['system']['ca'])) - $config['system']['ca'] = array(); + if (!is_array($config['ca'])) + $config['ca'] = array(); - $config['system']['ca'][] = $ca; + $config['ca'][] = $ca; } else if (!isset($pconfig['step6']['uselist']) && empty($pconfig['step6']['authcertca'])) { $message = "Please choose a Certificate Authority."; header("Location:wizard.php?xml=openvpn_wizard.xml&stepid=5&message={$message}"); @@ -477,10 +477,10 @@ function step12_submitphpaction() { 'commonName' => $pconfig['step9']['certname']); cert_create($cert, $ca['refid'], $pconfig['step9']['keylength'], $pconfig['step9']['lifetime'], $dn); - if (!is_array($config['system']['cert'])) - $config['system']['cert'] = array(); + if (!is_array($config['cert'])) + $config['cert'] = array(); - $config['system']['cert'][] = $cert; + $config['cert'][] = $cert; } else if (!isset($pconfig['step6']['uselist']) && empty($pconfig['step9']['authcertname'])) { $message = "Please choose a Certificate."; header("Location:wizard.php?xml=openvpn_wizard.xml&stepid=7&message={$message}"); diff --git a/usr/local/www/wizards/openvpn_wizard.xml b/usr/local/www/wizards/openvpn_wizard.xml index 6d46438..5e95b8b 100644 --- a/usr/local/www/wizards/openvpn_wizard.xml +++ b/usr/local/www/wizards/openvpn_wizard.xml @@ -1,11 +1,10 @@ <?xml version="1.0" encoding="utf-8" ?> <pfsensewizard> <copyright> -/* $Id$ */ /* part of pfSense (http://www.pfsense.org/) - Copyright (C) 2010 Ermal Lui + Copyright (C) 2010 Ermal Luci All rights reserved. Redistribution and use in source and binary forms, with or without @@ -943,4 +942,3 @@ <includefile>/usr/local/www/wizards/openvpn_wizard.inc</includefile> </step> </pfsensewizard> - diff --git a/usr/local/www/wizards/traffic_shaper_wizard.xml b/usr/local/www/wizards/traffic_shaper_wizard.xml index 002ed24..1279785 100644 --- a/usr/local/www/wizards/traffic_shaper_wizard.xml +++ b/usr/local/www/wizards/traffic_shaper_wizard.xml @@ -35,7 +35,9 @@ <id>1</id> <title>pfSense Traffic Shaper Wizard</title> <disableheader>true</disableheader> - <description>This wizard will guide you through setting up the pfSense traffic shaper.</description> + <description>This wizard will guide you through setting up the pfSense traffic shaper. + Please be aware that Custom Bandwidths should not exceed 30% of the interface/link bandwidth. Keep this in mind during the wizard. + </description> <fields> <field> <displayname>Enter number of WAN connections</displayname> diff --git a/usr/local/www/wizards/traffic_shaper_wizard_dedicated.xml b/usr/local/www/wizards/traffic_shaper_wizard_dedicated.xml index 56cd97d..8688db1 100755 --- a/usr/local/www/wizards/traffic_shaper_wizard_dedicated.xml +++ b/usr/local/www/wizards/traffic_shaper_wizard_dedicated.xml @@ -36,7 +36,9 @@ <id>1</id> <title>pfSense Traffic Shaper Wizard</title> <disableheader>true</disableheader> - <description>This wizard will guide you through setting up the pfSense traffic shaper.</description> + <description>This wizard will guide you through setting up the pfSense traffic shaper. + Please be aware that Custom Bandwidths should not exceed 30% of the interface/link bandwidth. Keep this in mind during the wizard. + </description> <fields> <field> <type>listtopic</type> diff --git a/usr/local/www/wizards/traffic_shaper_wizard_multi_all.xml b/usr/local/www/wizards/traffic_shaper_wizard_multi_all.xml index 2b42d92..a138054 100755 --- a/usr/local/www/wizards/traffic_shaper_wizard_multi_all.xml +++ b/usr/local/www/wizards/traffic_shaper_wizard_multi_all.xml @@ -36,7 +36,9 @@ <id>1</id> <title>pfSense Traffic Shaper Wizard</title> <disableheader>true</disableheader> - <description>This wizard will guide you through setting up the pfSense traffic shaper.</description> + <description>This wizard will guide you through setting up the pfSense traffic shaper. + Please be aware that Custom Bandwidths should not exceed 30% of the interface/link bandwidth. Keep this in mind during the wizard. + </description> <fields> <field> <type>listtopic</type> diff --git a/usr/local/www/wizards/traffic_shaper_wizard_multi_lan.xml b/usr/local/www/wizards/traffic_shaper_wizard_multi_lan.xml index f97932b..f99f9e7 100644 --- a/usr/local/www/wizards/traffic_shaper_wizard_multi_lan.xml +++ b/usr/local/www/wizards/traffic_shaper_wizard_multi_lan.xml @@ -36,7 +36,9 @@ <id>1</id> <title>pfSense Traffic Shaper Wizard</title> <disableheader>true</disableheader> - <description>This wizard will guide you through setting up the pfSense traffic shaper for the situation where you have 1 WAN connection and multiple LAN connections.</description> + <description>This wizard will guide you through setting up the pfSense traffic shaper for the situation where you have 1 WAN connection and multiple LAN connections. + Please be aware that Custom Bandwidths should not exceed 30% of the interface/link bandwidth. Keep this in mind during the wizard. + </description> <fields> <field> <displayname>Enter number of LAN type connections</displayname> |