Reason, blank, blank_img"); # ============================================================================== # Initialization # ============================================================================== sg_init(convert_pfxml_to_sgxml()); # ============================================================================== # Validations # ============================================================================== # ------------------------------------------------------------------------------ # validate default # ------------------------------------------------------------------------------ function squidguard_validate_default($post, $input_errors) { squidguard_validate_acl($post, &$input_errors); } # ------------------------------------------------------------------------------ # validate acl # ------------------------------------------------------------------------------ function squidguard_validate_acl($post, $input_errors) { global $config; $pass_up = array(); $deny_up = array(); $pass_up_val = ''; $pass_over = array(); $deny_over = array(); $pass_over_val = ''; // check name ('source') $name = trim($post[FLD_NAME]); if(!empty($name)) { $err = check_name($name); // validate name content if (!empty($err)) $input_errors[] = $err; // check unique name if (!check_unique_name(MODULE_ACL, $name)) $input_errors[] = "Name '$name' already exists"; } // store destinations to 'dest' value foreach ($post as $key => $val) { if (substr_count($key, PREFLD_UPTIME) != 0) { $name = str_replace(PREFLD_UPTIME, '', $key); if ($name) $pass_up[$name] = 'on'; } elseif (substr_count($key, PREFLD_UPTIME_DENY) != 0) { $name = str_replace(PREFLD_UPTIME_DENY, '', $key); if ($name) $deny_up[$name] = 'on'; } elseif (substr_count($key, PREFLD_OVERTIME) != 0) { $name = str_replace(PREFLD_OVERTIME, '', $key); if ($name) $pass_over[$name] = 'on'; } elseif (substr_count($key, PREFLD_OVERTIME_DENY) != 0) { $name = str_replace(PREFLD_OVERTIME_DENY, '', $key); if ($name) $deny_over[$name] = 'on'; } } foreach ($pass_up as $key => $val) { if ($deny_up[$key]) $pass_up_val .= " !$key"; else $pass_up_val .= " $key"; } foreach ($pass_over as $key => $val) { if ($deny_over[$key]) $pass_over_val .= " !$key"; else $pass_over_val .= " $key"; } // !ATTENTION! on pfSense XML config must be must(shell) be '!all' instead of 'none' - it is a must for correct work GUI // if not exists key 'all', then add 'none' - default 'deny all' if ((substr_count($pass_up_val, 'all') == 0)) { $pass_up_val .= ' !all'; } if (!empty($pass_over_val) && (substr_count($pass_over_val, 'all') == 0)) { $pass_over_val .= ' !all'; } if (empty($pass_over_val)) $post[FLD_DEST] = "$pass_up_val"; else $post[FLD_DEST] = "$pass_up_val [$pass_over_val]"; // check redirect $redirect = trim($post[FLD_REDIRECT]); if(!empty($redirect)) { // cut first redirect url, if entered more that one $redirect = explode("\n", $redirect); $redirect = $redirect[0]; $post[FLD_REDIRECT] = $redirect; if (is_url($redirect) === false) $input_errors[] = "Redirect '$redirect' error. " . ERRVALIDATE_REDIRECT; } // check overredirect $redirect = trim($post[FLD_OVERREDIRECT]); if(!empty($redirect)) { // cut first redirect url, if entered more that one $redirect = explode("\n", $redirect); $redirect = $redirect[0]; $post[FLD_OVERREDIRECT] = $redirect; if (is_url($redirect) === false) $input_errors[] = "Overtime redirect '$redirect' error. " . ERRVALIDATE_REDIRECT; } } # ------------------------------------------------------------------------------ # validate times # Format: # date: