+ </tr>
+ <tr class="bg1" align="left" valign="top">
+ <td class="en1" align="center" valign="middle"><input type="radio"
+ name="hide_if_modified_since" value="Y" @hide-if-modified-since-y@
+ ></td>
+ <td class="dis1" align="center" valign="middle"><input type="radio"
+ name="hide_if_modified_since" value="N" @hide-if-modified-since-n@
+ ></td>
+ <td class="noc1" align="center" valign="middle"><input type="radio"
+ name="hide_if_modified_since" value="X" @hide-if-modified-since-x@
+ ></td>
+ <td class="action"><a href="@user-manual@@actions-help-prefix@HIDE_IF_MODIFIED_SINCE">hide-if-modified-since</a></td>
+ <td>Remove or randomize If-Modified-Since header.</td>
+ </tr>
+ <tr class="bg1" align="left" valign="top" id="hide_if-modifed-since_opts">
+ <td class="en1"> </td>
+ <td class="dis1"> </td>
+ <td class="noc1"> </td>
+ <td> </td>
+ <td><input type="radio" name="hide_if_modified_since_mode" value="block"
+ onclick="hide_if_modified_since_param_disable(true)"
+ @hide-if-modified-since-param-block@ id="hide_if_modified_since_mode_block"><label
+ for="hide_if_modified_since_mode_block">Remove without replacement.</label>
+ Useful for filter testing.<br>
+ <input type="radio" name="hide_if_modified_since_mode" value="CUSTOM"
+ onclick="hide_if_modified_since_param_disable(true)"
+ @hide-if-modified-since-param-custom@ id="hide_if_modified_since_mode_set"><label
+ for="hide_if_modified_since_mode_set">Add random amount of seconds in the range of</label>
+ <input type="text" name="hide_if_modified_since_param"
+ id="hide_if_modified_since_param" size="4"
+ value="@hide-if-modified-since-param@"> hour(s).
+ To appreciate this option a small amount of paranoia is required,
+ but at least in theory the If-Modified-Since header could be used
+ to keep track of your visits.
+ </td>
+ </tr>
+ <tr class="bg1" align="left" valign="top">
+ <td class="en1" align="center" valign="middle"><input type="radio"
+ name="overwrite_last_modified" value="Y" @overwrite-last-modified-y@
+ ></td>
+ <td class="dis1" align="center" valign="middle"><input type="radio"
+ name="overwrite_last_modified" value="N" @overwrite-last-modified-n@
+ ></td>
+ <td class="noc1" align="center" valign="middle"><input type="radio"
+ name="overwrite_last_modified" value="X" @overwrite-last-modified-x@
+ ></td>
+ <td class="action"><a href="@user-manual@@actions-help-prefix@OVERWRITE_LAST_MODIFIED">overwrite-last-modified</a></td>
+ <td>Remove or randomize If-Modified-Since header.</td>
+ </tr>
+ <tr class="bg1" align="left" valign="top" id="overwrite_last_modified_opts">
+ <td class="en1"> </td>
+ <td class="dis1"> </td>
+ <td class="noc1"> </td>
+ <td> </td>
+ <td><input type="radio" name="overwrite_last_modified_mode" value="block"
+ onclick="overwrite_last_modified_param_disable(true)"
+ @overwrite-last-modified-param-block@ id="overwrite_last_modified_mode_block"><label
+ for="overwrite_last_modified_mode_block">Remove without replacement.</label>
+ <strong>Useless</strong>.<br>
+ <input type="radio" name="overwrite_last_modified_mode" value="reset-to-request-time"
+ onclick="overwrite_last_modified_param_disable(true)"
+ @overwrite-last-modified-param-reset-to-request-time@
+ id="overwrite_last_modified_mode_reset-to-request-time"><label
+ for="overwrite_last_modified_mode_reset-to-request-time">Reset to the time of the request.</label>
+ <br>
+ <input type="radio" name="overwrite_last_modified_mode" value="randomize"
+ onclick="overwrite_last_modified_param_disable(true)"
+ @overwrite-last-modified-param-randomize@
+ id="overwrite_last_modified_mode_randomize"><label
+ for="overwrite_last_modified_mode_randomize">Overwrite with random value
+ between original header value and the time of the request.</label>
+ <br>
+ <!--
+ <input type="radio" name="overwrite_last_modified_mode" value="CUSTOM"
+ onclick="overwrite_last_modified_param_disable(true)"
+ @overwrite-last-modified-param-custom@ id="overwrite_last_modified_mode_set"><label
+ for="overwrite_last_modified_mode_set">Add random amount of seconds in the range of</label>
+ <input type="text" name="overwrite_last_modified_param"
+ id="overwrite_last_modified_param" size="4"
+ value="@overwrite-last-modified-param@"> hour(s).
+ To appreciate this option a small amount of paranoia is required,
+ but at least in theory the If-Modified-Since header could be used
+ to keep track of your visits.-->
+ </td>
+ </tr>
+ <tr class="bg1" align="left" valign="top">
+ <td class="en1" align="center" valign="middle"><input type="radio"
+ name="crunch_if_none_match" value="Y" @crunch-if-none-match-y@
+ ></td>
+ <td class="dis1" align="center" valign="middle"><input type="radio"
+ name="crunch_if_none_match" value="N" @crunch-if-none-match-n@
+ ></td>
+ <td class="noc1" align="center" valign="middle"><input type="radio"
+ name="crunch_if_none_match" value="X" @crunch-if-none-match-x@
+ ></td>
+ <td class="action"><a href="@user-manual@@actions-help-prefix@CRUNCH_IF_NONE_MATCH">crunch-if-none-match</a></td>
+ <td>Remove If-None-Match header to circumvent browser cache. Useful for filter testing,
+ but hurts performance.</td>
+ </tr>
+ <tr class="bg1" align="left" valign="top">
+ <td class="en1" align="center" valign="middle"><input type="radio"
+ name="content_type_overwrite" value="Y" @content-type-overwrite-y@
+ ></td>
+ <td class="dis1" align="center" valign="middle"><input type="radio"
+ name="content_type_overwrite" value="N" @content-type-overwrite-n@
+ ></td>
+ <td class="noc1" align="center" valign="middle"><input type="radio"
+ name="content_type_overwrite" value="X" @content-type-overwrite-x@
+ ></td>
+ <td class="action"><a href="@user-manual@@actions-help-prefix@CONTENT_TYPE_OVERWRITE">content-type-overwrite</a></td>
+ <td>Replace Content-Type header. Useful to let the browser render broken
+ <abbr title="EXtensible HyperText Markup Language">XHTML</abbr> as broken
+ <abbr title="HyperText Markup Language">HTML</abbr>. By default it only applies to
+ text documents, if you know what you're doing you
+ can enable force-text-mode to modify binary content types as well.</td>
+ </tr>
+ <tr class="bg1" align="left" valign="top" id="content_type_overwrite_opts">
+ <td class="en1"> </td>
+ <td class="dis1"> </td>
+ <td class="noc1"> </td>
+ <td> </td>
+ <td>New Content-Type:<br>
+ <input type="text" name="content_type_overwrite_mode" size="40"
+ value="@content-type-overwrite-param@"></td>
+ </tr>
+
+ <tr class="bg1" align="left" valign="top">
+ <td class="en1" align="center" valign="middle"><input type="radio"
+ name="force_text_mode" value="Y" @force-text-mode-y@
+ ></td>
+ <td class="dis1" align="center" valign="middle"><input type="radio"
+ name="force_text_mode" value="N" @force-text-mode-n@
+ ></td>
+ <td class="noc1" align="center" valign="middle"><input type="radio"
+ name="force_text_mode" value="X" @force-text-mode-x@
+ ></td>
+ <td class="action"><a href="@user-manual@@actions-help-prefix@FORCE_TEXT_MODE">force-text-mode</a></td>
+ <td>
+ Enable filtering on documents whose Content-Type wasn't recognized as text.
+ Do think twice, nothing is alright.
+ </td>
+ </tr>
+ <tr class="bg1" align="left" valign="top">
+ <td class="en1" align="center" valign="middle"><input type="radio"
+ name="handle_as_empty_document" value="Y" @handle-as-empty-document-y@
+ ></td>
+ <td class="dis1" align="center" valign="middle"><input type="radio"
+ name="handle_as_empty_document" value="N" @handle-as-empty-document-n@
+ ></td>
+ <td class="noc1" align="center" valign="middle"><input type="radio"
+ name="handle_as_empty_document" value="X" @handle-as-empty-document-x@
+ ></td>
+ <td class="action"><a href="@user-manual@@actions-help-prefix@HANDLE_AS_EMPTY_DOCUMENT">handle-as-empty-document</a></td>
+ <td>
+ Block with an <em>empty</em> document instead of an Image or HTML message.
+ The <em>empty</em> document contains only a space and can safely be parsed
+ as JavaScript or Style Sheet. Use content-type-overwrite to specify the
+ Content-Type, default is <q>test/html</q>.
+ </td>
+ </tr>
+<!--TODO: Document-->
+ <tr class="bg1" align="left" valign="top">
+ <td class="en1" align="center" valign="middle"><input type="radio"
+ name="treat_forbidden_connects_like_blocks" value="Y" @treat-forbidden-connects-like-blocks-y@
+ ></td>
+ <td class="dis1" align="center" valign="middle"><input type="radio"
+ name="treat_forbidden_connects_like_blocks" value="N" @treat-forbidden-connects-like-blocks-n@
+ ></td>
+ <td class="noc1" align="center" valign="middle"><input type="radio"
+ name="treat_forbidden_connects_like_blocks" value="X" @treat-forbidden-connects-like-blocks-x@
+ ></td>
+ <td class="action"><a href="@user-manual@@actions-help-prefix@TREAT_FORBIDDEN_CONNECTS_LIKE_BLOCKS">treat-forbidden-connects-like-blocks</a></td>
+ <td>
+ Answer forbidden Connect requests with the usual block message.
+ May be a protocol violation, but makes unblocking easier.
+ </td>
+ </tr>
+<!--/TODO: Document-->
+ <tr class="bg1" align="left" valign="top">
+ <td class="en1" align="center" valign="middle"><input type="radio"
+ name="crunch_client_header" id="crunch_client_header_y" value="Y" @crunch-client-header-y@
+ ></td>
+ <td class="dis1" align="center" valign="middle"><input type="radio"
+ name="crunch_client_header" value="N" @crunch-client-header-n@
+ ></td>
+ <td class="noc1" align="center" valign="middle"><input type="radio"
+ name="crunch_client_header" value="X" @crunch-client-header-x@
+ ></td>
+ <td class="action"><a href="@user-manual@@actions-help-prefix@CRUNCH-CLIENT-HEADER">crunch-client-header</a></td>
+ <td>Remove header(s) matching the supplied pattern. Together with add-header you can
+ build a custom header replacement action.</td>
+ </tr>
+ <tr class="bg1" align="left" valign="top" id="crunch_client_header_opts">
+ <td class="en1"> </td>
+ <td class="dis1"> </td>
+ <td class="noc1"> </td>
+ <td> </td>
+ <td>Header string to suppress:<br>
+ <input type="text" name="crunch_client_header_mode" size="40"
+ value="@crunch-client-header-param@"></td>
+ </tr>
+ <tr class="bg1" align="left" valign="top">