<%!
struct icm_auth_status_type
{  
  boolean active;
  string perm_file;
  string auth_file;
  string filt_profile;
  string filt_pattern;
  
};
%>

<%
  int rule_count = 0;
  int rule_len, rule_last;
  int nr, rc, row;
  string what, hdlsel, browser, fld, is_checked, opstr;
  string rule, passwd, afile;
  string rules[];
  boolean is_admin;
  string token;
  string msg;
  string icon;
  
  struct icm_auth_status_type icm_auth_status;

  is_admin = __icm_get_system_property ("is_admin");
  browser = __icm_get_browser_type();
  what = anumenc(__icm_get_form_field ("what"));
  hdlsel = anumenc(__icm_get_form_field ("hdlsel"));
  afile = anumenc(__icm_get_form_field ("afile"));
  fld = anumenc(__icm_get_form_field ("row_selected"));
  if (fld == "")
    row = 0;
  else
    row = fld;
    
  rc = __icm_auth_hdl (1, hdlsel, icm_auth_status);
   
  if(rc == 0 && icm_auth_status.filt_pattern != "") {
     rule_len = strlen(icm_auth_status.filt_pattern);
     if(strsub(icm_auth_status.filt_pattern,0,1) == "("
     && strsub(icm_auth_status.filt_pattern,rule_len-1,rule_len) == ")") {
        nr = 1;
     } else {
        nr = 0;
     }
	
    if(strsub(icm_auth_status.filt_pattern,0,1) == "("
    && strsub(icm_auth_status.filt_pattern,rule_len-1,rule_len) == ")") {
        nr = 1;
    } else {
        nr = 0;
    }
    for (;nr < rule_len; nr++) {
      if(nr > 1
     && strsub(icm_auth_status.filt_pattern,nr-1,nr) == ")"
     && strsub(icm_auth_status.filt_pattern,nr,nr+1) == "|"
     && strsub(icm_auth_status.filt_pattern,nr+1,nr+2) == "(") {				
	rules[rule_count] = strsub(icm_auth_status.filt_pattern,rule_last+1,nr-1);
	rule_last = nr+1;
	rule_count++;
     }
    }
    if(rule_len > 0 ) {
      if(strsub(icm_auth_status.filt_pattern,rule_len-1,rule_len) == ")" ) {
	rules[rule_count] = strsub(icm_auth_status.filt_pattern,rule_last+1,rule_len-1);
	rule_count++;
      }
      if(rule_count == 0) {
	rules[0] = icm_auth_status.filt_pattern;
	rule_count++;
      }
    }  
  }    
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <link rel=stylesheet type="text/css" href="../public/css/controls_<%=browser%>.css">
    <link rel=stylesheet type="text/css" href="../public/css/sapbsp.css">
    <title>Content Filter administration</title>
    <script language="JavaScript" type="text/javascript">    
        var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
	function encode64(input) {
	   var output = "";
	   var chr1, chr2, chr3;
	   var enc1, enc2, enc3, enc4;
	   var i = 0;
	
	   do {
	      chr1 = input.charCodeAt(i++);
	      chr2 = input.charCodeAt(i++);
	      chr3 = input.charCodeAt(i++);
	
	      enc1 = chr1 >> 2;
	      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
	      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
	      enc4 = chr3 & 63;
	
	      if (isNaN(chr2)) {
	         enc3 = enc4 = 64;
	      } else if (isNaN(chr3)) {
	         enc4 = 64;
	      }
	
	      output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + 
	         keyStr.charAt(enc3) + keyStr.charAt(enc4);
	   } while (i < input.length);
	   
	   return output;
	}      
      <!--
      function callSubmitAction(form,value)
      {
	var Form = document[form];
      	Form.what.value = value;
      	if(Form.rule != null && Form.ruleenc) {
          Form.ruleenc.value = encode64(Form.rule.value);          
          Form.rule.value = "";
      	}
      	Form.submit();
      }
      -->
    </script>
  </head>

  <body class="sapBdy">
<%
   if (what == "add_rule") {
     string newrule = b64dec(urldec(__icm_get_form_field ("ruleenc")));
     string pattern;   
     token = __icm_get_form_field ("token");
     if(newrule != "") {
       if(rule_count > 0) {
         int i=0;
         for(; i < rule_count+1; i++) {
	      if(i==0) {
	        pattern = "(" + rules[i] + ")|(";
	      } else if(i==rule_count) {
	        pattern = pattern + newrule + ")";
	      } else {
	        pattern = pattern + rules [i] + ")|(";
	      }
         }
        } else {
        	pattern = "(" + rules[0] + ")|(" + newrule + ")";
        }    
     }
     rc = __icm_auth_hdl (6, 0, pattern, token);

    if (rc == 0)
    {
	msg = "Rule successfully created";
	icon = "s_m_info.gif";
    }
    else if (rc == -11) 
    {
	msg = "Session timeout. Please retry operation.";
	icon = "s_m_warn.gif";
    }
    else
    {
	msg = "Rule could not be created: " +  __icm_get_error_text(rc) + "(" + rc + ")";
	icon = "s_m_erro.gif";
    }
%>

      <table border="0" cellspacing="0" cellpadding="0" class="sapTbvAlt" width="50%">
	<tr>
	  <td class="sapTbvCellAlt" Colspan="1" align="center">
	    <img src="../public/icons/<%=icon%>">
	  </td>
	  <td class="sapTbvCellAlt" Colspan="2" align="center">
	    <b><i>Information</i></b>
	  </td>
	  <td class="sapTbvCellAlt" Colspan="1" align="center">
	    <img src="../public/icons/<%=icon%>">
	  </td>
	</tr>
	<tr>
	  <td class="sapTbvCellStd" Colspan="4"></td>
	</tr>
	<tr>
	  <td class="sapTbvCellStd" Colspan="4"></td>
	</tr>
	<tr>
	  <td class="sapTbvCellStd" Colspan="4" align="center">
	    <b><i>
		<%=msg%><br>
	    </i></b>
	  </td>
	</tr>

	<tr><td class="sapTbvCellStd" Colspan="4"></td></tr>
	<tr><td class="sapTbvCellStd" Colspan="4"></td></tr>
	<tr>
	  <td class="sapTbvCellStd" Colspan="4" align="center">
	    <a href="./filter_admin.icp" class="sapBtnStd"><nobr>Back</nobr></a>
	  </td>
	</tr>
      </table><p>
<%
   }
   else if ((what == "do_change_rule") || (what == "do_del_rule")) {
    
     string newrule = b64dec(urldec(__icm_get_form_field ("ruleenc")));
     string token = __icm_get_form_field ("token");
     string pattern;   

     if (what == "do_change_rule") {
       opstr = "changed";      
       if(newrule != "") {
         if(rule_count > 1) {
           int i=0;
           for(; i < rule_count; i++) {
	      if(i==row) {
	         rules [i] = newrule;
	      }
	      if(i==0) {
	        pattern = "(" + rules[i] + ")|(";
	      } else if(i+1 < rule_count) {
	        pattern = pattern + rules [i] + ")|(";
	      } else if( i+1 == rule_count ) {
	        pattern = pattern + rules [i] + ")";  
	      }
           }           
          } else {
            pattern = newrule;
          }
       }        
     } else {
       opstr = "deleted";
       if(rule_count > 1 && newrule != "" && row <= rule_count) {
         int i=0;
         rules [row] = "";         
         if(rule_count > 2) {
           if(row+1 == rule_count)
            rule_count = rule_count - 1;              
           for(; i < rule_count; i++) {
              if(rules[i] == "")
                 continue;
	      if(pattern == "") {
	        pattern = "(" + rules[i] + ")|(";
	      } else if(i+1 < rule_count) {
	        pattern = pattern + rules [i] + ")|(";
	      } else if( i+1 == rule_count ) {
	        pattern = pattern + rules [i] + ")";  
	      }
           }           
          } else {
            for(; i < rule_count; i++) {
              if(rules[i] != "")
                 pattern = rules[i];
            } 
          }
       }
       
     }
     rc = __icm_auth_hdl (6, 0, pattern, token);

    if (rc == 0)
    {
	msg = "Rule successfully " + opstr;
	icon = "s_m_info.gif";
    }
    else if (rc == -11) 
    {
	msg = "Session timeout. Please retry operation.";
	icon = "s_m_warn.gif";
    }
    else
    {
	msg = "Rule could not be " + opstr + ":" +  __icm_get_error_text(rc) + "(" + rc + ")";
	icon = "s_m_erro.gif";
    }
%>

      <table border="0" cellspacing="0" cellpadding="0" class="sapTbvAlt" width="50%">
	<tr>
	  <td class="sapTbvCellAlt" Colspan="1" align="center">
	    <img src="../public/icons/<%=icon%>">
	  </td>
	  <td class="sapTbvCellAlt" Colspan="2" align="center">
	    <b><i>Information</i></b>
	  </td>
	  <td class="sapTbvCellAlt" Colspan="1" align="center">
	    <img src="../public/icons/<%=icon%>">
	  </td>
	</tr>
	<tr>
	  <td class="sapTbvCellStd" Colspan="4"></td>
	</tr>
	<tr>
	  <td class="sapTbvCellStd" Colspan="4"></td>
	</tr>
	<tr>
	  <td class="sapTbvCellStd" Colspan="4" align="center">
	    <b><i>
		<%=msg%><br>	    	
	    </i></b>
	  </td>
	</tr>
	<tr><td class="sapTbvCellStd" Colspan="4"></td></tr>
	<tr><td class="sapTbvCellStd" Colspan="4"></td></tr>
	<tr>
	  <td class="sapTbvCellStd" Colspan="4" align="center">
	    <a href="./filter_admin.icp" class="sapBtnStd"><nobr>Back</nobr></a>
	  </td>
	</tr>
      </table><p>
<%
   }
   else if (what == "del_rule") {
     if( rule_count > 0 )
         rule = rules[row];
     else
         rule = "";

     token = __icm_get_token(406);
%>
   <form action="" name="delForm" method="POST">
    <input type="hidden" name="what" value="">
    <input type="hidden" name="ruleenc" value="">
    <input type="hidden" name="rule" value="<%=htmlenc(rule)%>">
    <input type="hidden" name="afile" value="<%=afile%>">
    <input type="hidden" name="row_selected" value="<%=row%>">
    <input type="hidden" name="token" value="<%=token%>">
      <table border="0" cellspacing="0" cellpadding="0" class="sapTbvAlt" width="50%">
	<tr>
	  <td class="sapTbvCellAlt" Colspan="1" align="center">
	    <img src="../public/icons/s_m_crit.gif">
	  </td>
	  <td class="sapTbvCellAlt" Colspan="2" align="center">
	    <b><i>Confirm operation</i></b>
	  </td>
	  <td class="sapTbvCellAlt" Colspan="1" align="center">
	    <img src="../public/icons/s_m_crit.gif">
	  </td>
	</tr>
	<tr>
	  <td class="sapTbvCellStd" Colspan="4"></td>
	</tr>
	<tr>
	  <td class="sapTbvCellStd" Colspan="4"></td>
	</tr>
	<tr>
	  <td class="sapTbvCellStd" Colspan="4" align="center">
	    <b><i>Do you really want to delete the rule <br> <%=htmlenc(rule)%> <br>?</i></b>
	  </td>
	</tr>
	<tr>
	  <td class="sapTbvCellStd" Colspan="4"></td>
	</tr>
	<tr>
	  <td class="sapTbvCellStd" Colspan="4"></td>
	</tr>

	<tr>
	  <td class="sapTbvCellStd" Colspan="1"></td>
	  <td class="sapTbvCellStd" Colspan="1" align="center">
	    <a href="javascript:callSubmitAction('delForm', 'do_del_rule')" class="sapBtnStd">
	      <nobr>Yes</nobr></a>
	  </td>
	  <td class="sapTbvCellStd" Colspan="1" align="center">
	    <a href="javascript:callSubmitAction('delForm','')" class="sapBtnEmph">
		<nobr>No</nobr></a>
	  </td>
	  <td class="sapTbvCellStd" Colspan="1"></td>
	</tr>
      </table><p>
   </form>
<%
   }
   else
   {         
     token = __icm_get_token(406);
%>

   <form action="" name="userForm" method="POST">
    <input type="hidden" name="what" value="<%=what%>">
    <input type="hidden" name="ruleenc" value="">
    <input type="hidden" name="afile" value="<%=afile%>">
    <input type="hidden" name="token" value="<%=token%>">
    <table border=0 cellspacing=1 cellpadding=0 class="sapTbvAlt" width="100%">
      <tr>
        <td class="sapTbvCellAlt" Colspan=2>
          <b><i>Content Filter of profile "<%=htmlenc(icm_auth_status.filt_profile)%>"</i></b>
        </td>
      </tr>
      <tr>
        <td class="sapTbvCellAlt" width=2>
          <i>&nbsp;</i>
        </td>
        <td class="sapTbvCellAlt">
          <i>Rule</i>
        </td>
      </tr>
<%
	for (nr = 0; nr < rule_count; nr++) {
	  if ((what == "change_rule") && (nr == row)) {
%>
        <tr>
	<td class="sapTbvCellStd" nowrap align=left width="2%">
          <input type="radio" name="row_selected" value="<%= nr %>" checked >
	</td>
        <td class="sapTbvCellStd" >
	  <input type="text" class="sapEdfTxtEnbl" name="rule" size="200" maxlength="255"
            value="<%=htmlenc(rules[nr])%>">
        </td>
      </tr>
<%
	  } else {
	    if (row == nr)
		is_checked = "checked";
	    else is_checked = "";
%>
      <tr>
	<td class="sapTbvCellStd" nowrap align=left width="2%">
        <input type="radio" name="row_selected" value="<%= nr %>" <%=is_checked%>>
	</td>
        <td class="sapTbvCellStd"><%=htmlenc(rules[nr])%></td>        
      </tr>
<%
	  }
	}
%>

<%
   if (what == "show_add_rule") {
%>

      <tr>
	<td class="sapTbvCellStd" nowrap align=left>
          <input type="radio" name="row_selected" value="9999" checked >
	</td>
        <td class="sapTbvCellStd">
	  <input type="text" class="sapEdfTxtEnbl" name="rule"
            value="" size="200" maxlength="255">
        </td>        
      </tr>
<%
   }
%>
   </table>
<%
   if (what == "show_add_rule") {
%>
    <p>
    <a href="javascript:callSubmitAction('userForm','add_rule')" class="sapBtnStd">
	<nobr>Save</nobr></a>
    <a href="javascript:callSubmitAction('userForm','')" class="sapBtnEmph">
	<nobr>Cancel</nobr></a>
<%
   } else if (what == "change_rule") {
%>

    <p>
    <a href="javascript:callSubmitAction('userForm','do_change_rule')" class="sapBtnStd">
	<nobr>Save</nobr></a>
    <a href="javascript:callSubmitAction('userForm','')" class="sapBtnEmph">
	<nobr>Cancel</nobr></a>
<%
   } else if (is_admin) {
%>
    <p>
    <a href="javascript:callSubmitAction('userForm', 'change_rule')" class="sapBtnStd">
	<nobr>Edit Rule</nobr></a>
    <a href="javascript:callSubmitAction('userForm', 'show_add_rule')" class="sapBtnStd">
	<nobr>Add Rule</nobr></a>
<%   
    if(rule_count > 1) { 
%>	
    <a href="javascript:callSubmitAction('userForm', 'del_rule')" class="sapBtnStd">
        <nobr>Delete Rule</nobr></a>
<%  } %>	
    <a href="./show_auth.icp" class="sapBtnEmph"><nobr>Cancel</nobr></a>

<%   
   }
%>
   </form>
<%
   }
%>

  </body>
</html>

