Download XppEngFilt.dll

Purpose of the program
XppEngFilt is an ISAPI filter that was created to serve HTTP requests that require Superx++ processing on the web server before the HTTP response is sent to the HTTP client. In a nutshell, this is Superx++ scripting on the server, which is similar to PHP, ASP, etc. The XppEngFilt.dll checks to see if the web resource at the URL requested contains any Superx++ programs (bounded by the <xpp> ... </xpp> tags) and processes them before sending the HTTP response to the HTTP client.

The benefit of this approach is to allow complete separation of XML data from the regular HTTP client operations. Consider a simple XML data island on a web page that gets its data via a URL. The XML data at the URL is returned to the data island as is. With Superx++ on the web server, it becomes possible to encapsulate that XML data within Superx++ objects. Then when the XML data island requests the data the Superx++ program determines which data it should send to the HTTP client based on the parameters of the URL. Some will say that this can already be done by ASP. The advantage to using Superx++ is that it offers all the benefits of the Superx++ language to this sort of processing.

What is really special in this context is that Superx++ objects can encapsulate the XML data.  This also means that the Superx++ objects (which are XML themselves) can be stored in any XML repository (including native XML databases).  Because these are objects and not mere static data, they allow the data that they encapsulate to be adaptive relative to the HTTP client (the data island).  If the data island accesses the XML repository (containing the Superx++ object) via a URL with parameters, then the XML data returned to the data island can be altered based on the parameters in the URL.  And best of all, this will happen without a single line of code change in the web page with the data island!  What this solution does is to reinforce the separation between the data layer and the presentation layer, with the Superx++ object and its encapsulated data in the data layer and the data island and the rest of the web page in the presentation layer.

Beta 0.2.4
This version contains the XppEngFilt.dll Superx++ interpeter that will interpret Superx++ programs of the beta 0.2.4 language revision. Make sure that you download the demo Superx++ programs because they have been updated to beta 0.2.4.

Download the XppEngFilt (ISAPI filter Superx++ interpreter) for beta 0.2.4
The downloads for Superx++ have now been unified into two zip files. The zip files contain the necessary files as well as a README text file to instruct you in the downloads.
Superx++ Source -- contains the source files for C++ projects for Superx++
Superx++ Executable -- contains the executables for C++ projects for Superx++

Extra Setup for XppEngFilt
1) Go to the Start menu and select Run...
2) Type cmd and press Enter
3) Type in the MS-DOS console window: net stop w3svc and press Enter
4) Leave the console window open and go to the Start menu and select Run...
5) Type regedit and press Enter
6) Navigate to the following registry key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Filter DLLs
7) a) If there is nothing in that key, type in the path to the place in which you downloaded the XppEngFilt.dll. If you did everything as the instructions stated then this path will be: C:\XppEngFilt\XppEngFilt.dll
b) If there is something in that key then type in the path in 7 a) preceded by a comma into the key's value textbox.
8) Close the registry.
9) Go back to the console window and type: net start w3svc and press Enter
10) Close the console window.

What these steps have done is to inform IIS of the presence of XppEngFilt.dll on your machine and will allow its execution. Remember that XppEngFilt.dll is the program that will process Superx++ programs for IIS.

Please note that if you wish to disable XppEngFilt you should perform the same instructions above. However, when you get to step 7) you should delete the file path to XppEngFilt.dll and then close the registry. What this will do is set things back to the way they were before you installed XppEngFilt.

To remove XppEngFilt from your computer completely, go to the Control Panel->Add or Remove Programs, and remove XppEngFiltInst from there. Make sure you have stopped the w3svc service and removed the file path to XppEngFilt.dll before you do this.

Calling the Program
To invoke a program using XppEngFilt.dll:
1) call a URL on a web server which has XppEngFilt.dll installed.
2) the arguments of the URL will be converted into the input stream XML for the Superx++ programs on the web resource at the URL. In other words,
http://MyServer/MyDir/MyPage.htm?i=23&j=37&status=current
will produce the input stream:
<urlXin>
   <i>23</i>
   <j>37</j>
   <status>current</status>
</urlXin>

This input stream XML will be used in the Superx++ code in MyPage.htm.
3) If there are no parameters to the URL then the input stream is empty.

Important Issue Regarding XppEngFilt and URLs
Please note that XppEngFilt will trap all HTTP requests that have Superx++ code in the web resource being accessed. Therefore commands like the <exec> statement should not be seeded with any URL pointing to a web resource containing Superx++ code on the same computer as that on which XppEngFilt is installed. What will happen is that the Superx++ code will be processed by XppEngFilt before the contents of the HTTP response are returned to the <exec> statement. As such, the <exec> statement will not work properly, since it expects Superx++ code and may find something else returned instead.

All that this means, in short, is that you should use URLs that return any other kind of data other than Superx++ programs if the URL points to the same web server on which XppEngFilt is installed. If you must access a web resource on the same web server then use a file path rather than a URL. Doing this will bypass XppEngFilt and things will work correctly.