What's new in Naoko 4.3 * Added $ASK(AllowList, DenyList, Prompt msg, item to add [,alternate match]) $ASK() automates the process of asking the user if a particular item should be filtered at a given site. Although you can do the same thing with combinations of some of the other new commands, ASK wraps it up neatly in one small package. * Added a NOAPPEND option to blockfiles. Blockfiles with this flag set will not have new items added to the file itself when ASK or ADDLST is called. The items will still be blocked, but only for the current session or until the list is reloaded (whichever comes first). It might be useful in cases where you only want to block something temporarily, and I admit it's a bit of a hack. It may not stay around too long if I get a better idea. * Added $DTM(format) command. This can be use to insert date, time and connection information into any replacement text. It uses a simple format string to control the display and can be useful for adding dates to a page, or including information for use with $LOG or other similar commands. * Added persistent connection support to local connections as well as remote. For best results make sure your browser is set to use HTTP/1.1 through the proxy and has pipelining enabled (if it's an option). Also I recommend about 6-8 simultaneous connections. With this, Proxomitron now supports nearly all of HTTP/1.1's optional features. For this to work Proxomitron must make heavy use of "chunked" encoding since we can't know the size of a filtered item ahead of time. This shouldn't be a problem, but it's possible some browsers may not expect so many items to be "chunked" - especially images. In testing Mozilla seems to have some random problems with chunked encoding if pipelining is enabled, but the flaw doesn't seem to be in Proxomitron's handling of things (Pipelining support in Mozilla is new and may still be a bit buggy). Opera, which also heavily pipelines, seem ok. HTTP/1.0 persistence is also supported. However, since Proxomitron frequently makes changes to an item's content-length and HTTP/1.0 does not allow for chunked encoding, fewer requests may be able to persist if your filtering. Local persistence can be turned off if necessary and it's keep-alive time adjusted under the HTTP tab of the Config dialog. By default local connections are killed after 10 seconds of inactivity. That should be fine in most cases since new local connections are fairly fast to create, but you may wish to increase this - especially if you're using Proxomitron remotely over a LAN. * Added new character hashing to matching routines. This can greatly speed up OR separated lists where the initial item in each OR section is not a wildcard. For example... (one|two|(three|four|five)|six) is hashable while... (one|*two|(three|four|five)|six) isn't, and neither is... ([to]ne|two|(three|four|five)|six) Actually though each set of parens (...) has its own hash, so in each case above the "(three|four|five)" is still hashed each time. Also mixing in AND or ANDAND is usually ok too... (one|two|(three|four|five)|six)*(end)&&*whatever* (one|two|((three|four|five)*&*whatever*)|six) This also means a complex match like (from the banner blaster)... <(a\s*</a>|i(nput*>|layer*</ilayer>|frame*</iframe>)) is pretty much just as fast written like... <a\s*</a>|<input*>|<ilayer*</ilayer>|<iframe*</iframe> but it's good deal easier to read. Still, the hashing speeds up both examples. Using it is pretty much transparent (hopefully). Keep in mind leading wildcards are always slower and should be avoided if possible (particularly in web filter bounds checks). * Added $LOG(), $ALERT(), and $CONFIRM() matching commands. These allow you to send a message to the user. $ALERT() just pops up a message box with whatever text you provide. $CONFIRM pops up a Yes/No dialog box with the message. If the user clicks "No", this will be treated as a non-match in the filter the command is called from. $LOG() sends the message to the log window (if it's open). Note that the first letter in a log window message determines the color used to display it... R=Red W=White w=Gray B=Blue G=Green Y=Yellow V=Violet C=Cyan All commands take a single string of text and will have replacement expansion done before display. They can be used in either the matching or replacement section of any type of filter. * Added $ADDLST(ListName, Text of line to add) command. This lets you add items to a blocklist from a filter. The item to add will have replacement expansion done to the input beforehand, so it may include text captured by the filter. Because of this, you'll need to double- escape stuff like "\1" if you want to place the wildcard itself (and not it's value) in a blocklist. Just add an extra backslash like so: "\\1", "\\h", "\\p". * Added $ADDLSTBOX(ListName, Title, Text to add) command. This is very much like $ADDLST() but prompts the user with the standard "add to blockfile" dialog normally called from the systray menu. The "Title" portion is optional, but any text entered here will be shown on the dialog's title bar. The command matches true if an item is added or false if the user cancels. * Added $WESC() command. This will escape any wildcards in the given input string (after first doing replacement expansion). Useful for making sure anything added to a blocklist from an unknown source (like a URL) will be matched literally so characters like "+","&" "?", etc. won't cause inadvertent matching errors. It can be used in the replacement section of a match or in the input of any, command, like $ADDLST(), that performs replacement expansion on its input. * Added $LOCK() and $UNLOCK() commands. These are useful for synch- ronizing a filter's action across simultaneously loading pages. Only one filter can be "locked" at any given time. if any other filter then calls lock, it will wait until the first completes before being processed. You can use this to group a series of related actions in a filter. * Rigged the "profile" in the matching test window to abort if it's taking too long. Normally it does 1000 iterations, but on a very complex match or if matching a lot of text, this can take some time to complete. Now it'll stop beforehand if it takes over 6 seconds. The results are adjusted to reflect the actual number of iterations finished so should still be fairly accurate. Note that due to this extra checking, test times may be slightly slower than in the previous versions of Proxomitron. Don't worry, the filters themselves aren't slower though. * Fixed \h matching too small of a string in some cases. * Fixed a potential bug in the $RDIR() command * Made replacement text buffer grow dynamically. This should prevent problems some people where having when certain combinations of filters with large byte limits were used with multi-match enabled. * Moved the "Edit Blockfile" option to it's own spot on the systray menu - should make it easier to use. * Removed a "Last-Modified" header hack I used to get around a silly cache problem IE used to have. If the last-modified date hadn't changed IE would use the old cached version of a page even if the server sent it a completely new version. Thankfully this has been fixed for several version now. |