What's new in Naoko 4.4
* Added KEYCHK command. This can be used to test for keypress
combinations inside a filter. It works like any matching test
and can be used in a filter's match or a URL match. When the
match is done KEYCHK will return as "matched" if the keys
being tested for are currently pressed. Most keys can be tested
by using their *unshifted* values. However, there's several
special key tests which begin with a carat "^" symbol....
^C = CONTROL
^A = ALT
^S = SHIFT
^T = TAB
^F1 = Function key #1
^F2 = Function key #2
^32 = Virtual keycode 32 (spacebar)
^65 = Virtual keycode 65 ("A")
These are not case sensitive so either "^c" or "^C" may be used.
Multiple keys can be included to test for combinations. For
$KEYCHK(^A^S) = ALT+SHIFT
$KEYCHK(^C^F6) = CONTROL+F6
$KEYCHK(^AG) = ALT+G
$KEYCHK(^C^A^S) = CONTROL+ALT+SHIFT
This will work for any combination the keyboard allows. Other
special keys can also be tested if you know the Windows virtual
keycode - this is a number between 0-255. For instance ^2 tests
for the right mouse button.
* Added LOGFILE option to blockfiles. Adding this keyword to the top
of any blockfile tells Proxomitron not to treat the contents as
matching tests or to load them into memory. This makes it safe to
use the file as a log file when using $ADDLST(). It also increases
speed - normally $ADDLST opens the file, appends the new entry, and
then closes the file again. However in LOGFILE mode the file will
remain open between writes to make inserting large amounts of data
much more efficient.
It's important to keep this in mind if you load a logfile into another
program while it's in use since recent entries may still be in the
file buffer and not written yet. However, reloading the config or
editing a log via the "Edit blockfile" option from a Proxomitron
menu will flush any unwritten data to the log. You can give your
logfiles a filename extension other than ".txt" then associate that
extension with a specialized logfile viewer if you wish. This allows
the "edit blockfile" option to be used to launch your log viewer.
* Added $FILE(filename) command. This will insert the contents of any file
into the replace section of any filter. It's most useful in web filters,
but will work in header filters too (keep in mind headers should only be
one line and no more than around 4k in size).
* Added $RESP(match) matching command. This command can be used to match
or capture the response code returned by a web server. Normally this
will look something like...
"200 OK" or "404 Not Found" etc.
The match starts directly with the return code so does not include the
"HTTP/x.x" portion of the reply line. However any message text after
the code is included in the match. For example, to match redirects
you could use "$RESP(302*)". This can also be useful to capture this
information for a log file.
* Entries added to a non-existent blocklist will cause a new "temporary"
list to be created with that name. This list will be memory only, and
can be used like a hash array to store information globally. Note that
the list won't appear on any menus and can't be edited (since it's not
a file), but can be called in a match and added to just like any other
Also keep in mind reloading the config or restarting Proxomitron will
clear all temporary list. Use a normal file based list if you wish to
store the information longer term.
* Multi-match replace buffers can now insert any amount of data
as long as there's enough memory (previously they were limited to 32k).
Keep in mind when desigining filters this does allocate extra memory,
so should be used carefully (especially if using the new $FILE command).
* Fixed error with stale file handles being reused - may help the
"half-loaded" page problem some people were reporting.
* Fixed reused connections still using the proxy after "Use remote
proxy" has been deselected.
* Fixed "Read overflow" warning from needlessly popping up.
* Fixed bug that could cause some hostnames not to resolve properly
when contacting a webserver on ports other than 80.
* Created a work-around for servers that send "deflate" content
encoding with/without the normal header bytes. Seems not all
servers format it the same.
* Updated proxcert.pem for another year. This is a self-signed
certificate Proxomitron uses for it's experimental SSL filtering
(not enabled by default). It's not an actual valid server