iHTML - Server Side Scripting/Programming Language
Inline Internet Systems, Inc.
Inline HyperText Markup Language Extension ToolsInline HyperText Markup Language Extension Tools

Download Information
iHTML (Windows Version)
iHTML (UNIX Version)
iHTML Documentation
Download iHTML 2.20 Rev 2

iHTML 2.20.1601 is now available, see below:

iBPPE Downloads

Linux Version (NEW)
FreeBSD Version
Windows Version


All Versions

SSL Libraries

Windows libeay32
Windows ssleay32


Windows BGD DLL


2.20.500 is 2.20 Rev 2 and is an official stable release, the current beta is further below. The installer has been updated with this version as well.
The downloads below are just the base ihtml.dll and ihtml.so files. You must have ihtml already installed and configured to use these Revision updates. We STRONGLY recommend you download the installer or run your existing installer (which will autoupdate) to install these updates to get all the components correctly.

Inline no longer supports Apache 1.3.3, 1.3.4, 1.3.9

Linux Apache 1.3.6 (SSL/Non-SSL)
Linux Apache 1.3.12 to 1.3.22 (Non-SSL)
Linux Apache 1.3.12 to 1.3.22 (SSL)
Linux Apache 1.3.23 & up (Non-SSL)
Linux Apache 1.3.23 & up (SSL)
Linux Zeus, iHTMLAdmin

FreeBSD Apache 1.3.12 to 1.3.22 (Non-SSL)
FreeBSD Apache 1.3.12 to 1.3.22 (SSL)
FreeBSD Apache 1.3.23 & up (Non-SSL)
FreeBSD Apache 1.3.23 & up (SSL)
FreeBSD Zeus, iHTMLAdmin

Note to Linux and FreeBSD users: the iHTML Apache interface has been renamed to follow apache module naming conventions. If you have a reference to "AddModule s_apache.c" in your httpd.conf, rename it to "AddModule mod_ihtml.c".

Windows NT/2000/XP Files (Rename these to ihtml.dll and replace your existing file, you need to stop the web server to do this

IIS (all versions), WebSite Pro, Zeus, iHTMLAdmin
Netscape Enterprise 3.x
Apache 1.3.6
Apache 1.3.12 to 1.3.22
Apache 1.3.23 & Up

Note: Inline has dropped support for Solaris, BSDi (not FreeBSD) and Windows 95/98 operating systems to enable us to focus on the core three operating systems. We have also dropped support for Netscape web servers. Any questions or concerns can be addressed to russc@inline.net

For the iHTML Enterprise Plus Edition, updated (Sep 14th 2005) documentation is available Here as an RTF file.


The following is a release candidate 8 version. Please report any issues you find. Also check your FORMMULTIVALUE setting in iHTML, in general it should be FALSE.
If you are not using GLOBAL variables then add and set the registry entry USEGLOBALS to FALSE in HKLM/software/inline/ihtml/currentversion/ Also if you have MinYieldTime set to anything other than 0, set it to 0. Both of this could dramatically increase the speed of your system.

Last Update of program files: Jan 29th, 2007. The version number is 2.20.1601

Windows NT/2000/XP Files (Rename these to ihtml.dll and replace your existing file, you need to stop the web server to do this.

IIS (all versions), WebSite Pro, Zeus, iHTMLAdmin
Apache 1.3.23 & Up
Apache 2.0.54 & Up Apache 2.2.x & Up

Copy bgd.dll to the winnt/system32 directory.

Linux & FreeBSD files:

Linux Apache 1.3.23 & up (Non-SSL)
Linux Apache 1.3.23 & up (SSL)
Linux Apache 2.0.54 & up (Prefork MPM)
Linux Apache 2.2.x & up (Prefork MPM)
Linux Zeus, iHTMLAdmin

FreeBSD Apache 1.3.23 & up (Non-SSL)
FreeBSD Apache 1.3.23 & up (SSL)
FreeBSD Apache 2.0.54 & up (Prefork MPM)
FreeBSD Zeus, iHTMLAdmin

For Linux and FreeBSD you need to also ensure some standard library files are installed on the machine. These libraries are now dynamically loaded to ensure compatibility between iHTML and other apache modules on your system. The following libraries need to be installed: libgd2, libfreetype6, libpng3, libjpeg62.

libgd2 (libgd 2.0.28+ - http://www.boutell.com/gd/) * compile this after installing the three below
libpng3 (libpng 1.2.x - http://www.libpng.org/pub/png/libpng.html)
libfreetype6 (freetype 2.x - http://sourceforge.net/project/showfiles.php?group_id=3157)
libjpeg62 (jpegsrc.v6b - http://www.ijg.org/)

Packages are found in RPM or Deb format in your Linux distribution. Preferably install them from your distribution media.
On RPM systems: <locate the rpm files> and 'rpm -Uvh file1 file2 ...'
On Debian systems: 'apt-get install package1 package2 ...'

libpng.so.5 (on FreeBSD 4.10 in the package graphics/png-1.2.5_3.tgz)
libgd.so.4 (on FreeBSD 4.10 in the package graphics/gd-2.0.22,1.tgz)
libjpeg.so.9 (on FreeBSD 4.10 in the package graphics/jpeg-6b_2.tgz)
libfreetype.so.9 (on FreeBSD 4.10 in the package print/freetype2-2.1.7_3.tgz)

iHTML 2.20.1601 Items Addressed

Jan 29th, 2007

  • Support for Apache 2.2x added
  • Better support for loading large XML files
  • iXCOPY improved on directory copying
  • iDIR failed on remove
  • improvements to i_errordetails
  • iMD5 tag improved
  • text area form submits fixed
  • iprintf fixed a wrong 1500 error
  • iDISKSTAT showed with decimals
  • iDISPLAY with dollar directive didn't work right
  • XML clean up problems fixed caused 110 errors
  • various crashing problems on errors fixed
  • iFILELINE reworked with many improvements
  • FORM posts were not working right on WSP
  • blowfish option on iENCODE enhanced
  • Apache default doc mapping issue fixed
  • multiple errors reported incorrectly
  • changes to iCGI tag
  • i_path was broken in previous beta fixed
  • iREPLACE behaviour changed back to previous
  • iISEMAIL was not working right
  • more detail on 6110 error (XML load)
  • iIMAGEFTText changed to take paths better to font files
  • some form submit variable could get messed up
  • bad form data or query strings could cause a crash
  • iERRORBLOCK formatting improved
  • lots of other small things improved

iHTML 2.20.1492 Items Addressed

Feb 28th, 2006

  • XML Formatting improvements
  • error 90 on iEVAL with undefined colon
  • escape characters above 255 are handled in xml
  • ihttpsessions was causing a seg fault
  • various overall XML handling improvements
  • improvements to SSL to handle certs better
  • maxrecursion incorrectly being reached
  • new directive on iXCOPY called LISTNAME
  • Inline admin server improvements for installer
  • iSQLTABLES and ISQLCOLUMNS were not working in iHTML tag
  • Error in iSQLTABLES fixed
  • iPUSH improved in IE
  • low level file handling improved to prevent 904 errors
  • new encoding types added to iENCODE
  • iFTP tag had various fixes applied
  • iREGEXREPLACE was causing error 90's
  • iXCOPY error 90 and regex wrong results
  • iNSLOOKUP new PATH directive
  • iHTML tags with different datasources caused weird results
  • improved ssl library loaded
  • various low level tcp library improvements
  • icgi tag improved
  • multiform were not showing right with FMV set to off
  • some errors not being written to tagerror log
  • error variables - various changes/improvements
  • igetmimename with blank directive not working
  • [?] on xml variables was not working
  • iurlencode was not handling @
  • tag has option to show save as box
  • icookie error 90 fixed
  • idir was getting error 951 in certain cases
  • ihtml filter for IIS was improved
  • WSP start up problems fixed
  • ixdelete with a regex wasn't getting the right results
  • stack depth limit improved

iHTML 2.20.1346 Items Addressed

Nov 18th, 2005

  • iREGEXLIST had a problem output mulitple items
  • iTEMPNAME rewritten to work more reliably
  • various improvements to new -> variables
  • ihttpsessions speed improvements
  • heapdump completely changed with more data
  • iREPLACE with empty variables was causing errors
  • noexist/noerror page feature fixed
  • iDIR changed to work better on unix
  • noexist page sets 404 status automatically
  • duplicate headers on Apache fixed
  • form post variables not working with Opera
  • iERROR blocks not working right with functions
  • INDEXED fixes on iSQLMORE
  • ihtmlmore=true with non-aliases iSQL tags would return null data
  • status changes logged properly in web server logs
  • XML output improved
  • WSP was not starting up properly with iHTML 2.20.1288

iHTML 2.20.1288 Items Addressed

Oct 26th, 2005

  • WARNING: this dll might cause existing opayc drivers to fail, check carefully
  • TCP timeout setting in admin server fixed
  • forward fetch feature added for FreeTDS driver on INDEX directive in iSQL tags
  • XML Element was being wrongly encoded
  • new feature on iEQ VARNAME= which will allow specifying a variable as tag source (instead of VALUE)
  • multiple improvements to the -> variable reference handling
  • ?&variable=1 created a &variable instead of variable
  • forms with file uploads fixed
  • &#xxx; was causing problems in code
  • iFILE with LEN specified forced START=1
  • iSETERROR wasn't working with i_errortext variable defaults
  • various improvements to error reporting
  • iDIR OP=make on an SMB path works properly now
  • number of error 90 conditions addressed
  • OUTVAR in iREM gave incorrect error report
  • itempname was leaving files in the root directory
  • FORMMULTIVALUE was not working right
  • iDBCOLUMN was causing an infinite loop
  • i_hostname was including port info, this has been removed
  • iREMBLOCK as the first line in a file caused problems
  • nested functions must have an ALIAS now
  • Apache exception in getservervar fixed
  • diag.log.### changed to diag.log.####.log
  • noexistpage has been fixed
  • iinclude in compiled pages was not working right
  • logs had an extra EOL character
  • removed apache debug info from logs
  • errors in inner code blocks didn't output resolved code in the block
  • iFILELINE was appending extra CRLF characters
  • FORCEPOST added to the tag
  • maxrecurse registry setting to prevent crashes in recursive features
  • :path variable was not resolving
  • crashing issue on admin server fixed at shutdown
  • added VAR directive to iREGEXREPLACE tag
  • cookies were being wrongly concatenated
  • iREGEXLIST not handling multiple items properly

iHTML 2.20.1194 Items Addressed

Sept 17th, 2005

  • i_hostname and i_hostip fixed
  • [?] for count in xml variable name now works
  • handle xsl and data properly in xml docs
  • cookies on apache 2 fixed back
  • imin/imax fixed

iHTML 2.20.1181 Items Addressed

Sept 14th, 2005

  • fixed an internal problem that could cause odd behaviour on anything that checked true/false
  • iNSLOOKUP fully working now
  • new header setting ihttp_header_httpstatus
  • ihttpsessionstorebody was not working
  • fix to iundefine
  • ifunccall error 90 fixed when used recursively
  • cdata is handled better in xml structures
  • iMD5 has a new FILE, SRCLEN and LEN directive
  • more scoreboard improvements
  • 720 on -> in an xml context fixed
  • improvements to iFILELINE and iREADLINE
  • iFILE new directive called LENREAD
  • various SSL library improvements
  • new directive on iXML SRC=
  • bug in iSTRREM fixed
  • xml structure variables are settable in ieq, idefault, iset and outvar
  • write is disallowed on internal variables and internal xml structure
  • if using freetds and INDEXed queries, added internal code to make it work (driver doesn't support it)
  • can use the @ in an xml structure colon variable to get the attribute values
  • fixed a security issue

iHTML 2.20.1080 Items Addressed

June 2nd, 2005

  • NEW Feature: XML directive on the iHTTPSESSIONS tag
  • NEW Feature: FORCE=true directive on the iDEFAULT tag
  • NEW Feature: reference XML tag values with colon variables
  • iimgsize tag sped up considerably on JPG files
  • problem with iIF not reporting the correct error line is fixed
  • iDIR bug fixed with creating directories on shares
  • fixes to SOURCEIP directive on ihttpsessions and iwhois
  • improved error messages on all the EP tags

iHTML 2.20.1064 Items Addressed

May 18th, 2005

  • NOTE: on Windows, this version and all subsequent need bgd.dll in the winnt/system32 directory
  • NEW Features: GIF handling functionality added to graphics tags
  • Updated graphics libraries to latest version of GD
  • Fixed bug in iimagestretch and iimagecopy that ignored some parameters
  • i_error variable was not reassignable in previous beta, fixed
  • i_error* variables were not showing in the heapdump, fixed
  • found limit of 22 nested tags due to limitation in C on # of stack frames
  • lots of improvements to the admin server and related components for installer
  • more scoreboard improvements on unix

iHTML 2.20.1056 Items Addressed

May 6th, 2005

  • New Feature: Pass by reference to iFUNCTION calls
  • iREPLACE was not working in i_ variables
  • Exception in iREGEXFIND fixed
  • iHTTPSESSIONS with a proxy server fixed
  • Fixed orphaned/defunct processes on linux in admin server
  • Scoreboard feature fixed to clean up better
  • exception on linux in getservervar internal function fixed
  • long values in EXPR directives caused problems, fixed
  • iFTP improvements made
  • ihttpsession improvements made to handle SSL better
  • unclosed iREMBLOCK handled better
  • various small fixes/improvements
  • iERRORPAGE bug fixed
  • tagerror log reporting fixed and better error handling
  • exception on lost connections in tcp/ip tags
  • significant TCP/IP code improvements

iHTML 2.20.948 Items Addressed

Nov 3rd, 2004

  • iRANDOM tag wasn't returning correct results
  • new URL variables
  • iMULTIPART filename resolution improved
  • fixes made to the scoreboard function
  • tag could crash on large filter arguments
  • trailing & in URL's could double up variables and leave trailing comma
  • iDIR with RECURSE=true didn't work

iHTML 2.20.906 Items Addressed

Oct 14th, 2004

  • iXMLPOST tag could crash the server
  • Speed issues addressed from previous .795 beta
  • Additional changes to multi-valued form variables
  • iBPPE improvements on Linux and FreeBSD
  • Basic Auth credentials are in i_auth_user and i_auth_pass variables on all web servers
  • iFTP tag improvements to work with anomolies on various FTP servers
  • iXFIND, iXCOPY, iXDELETE have a new directive to ignore permission issues
  • iEVAL EXPR="1 AND (NOT (0 AND 0)) " wouldn't return the correct result
  • Improvements to the new scoreboard facility
  • iIMAGECREATE tag fixed, the graphics libraries are redone to load differently on unix
  • Bug in iCOMPILED pages not working correctly has been fixed
  • Improvements to the nesting/recursive capabilities
  • Exception in iHTTPSESSIONS fixed
  • iXML with didn't work properly, does now
  • iFUNCCALL could generate an error 0, fixed
  • iXML tags escape the 5 special characters now automatically
  • Bug in iCLEAR fixed
  • Major changes to the SSL libraries loading mechanism
  • General TCP related tags have improvements in underlying code
  • Changes made to enable the long awaited iHTML compiler
iHTML 2.20.795 Items Addressed

July 29th, 2004

  • Multi-valued form variables such as checkbox groups missed some values that are submitted out of sequence. Eg. a form submission “a=1&a=2&b=3&a=4” turned into a variable a=1,2 instead of a=1,2,4. FormMultiValue was a prior solution, however it had side effects of including cookies and query string variables.
  • iASC CHR="nonprintable char" returned -1
  • iEVAL with EXPR="-1 - 0" returned a 760 error
  • iIMAGECOPY problems fixed
  • iCGI problems with resolving the results of the program
  • " :variable " didn’t resolve the variable
  • iLINK did not convert https properly
  • iXML tags, a significant number of improvements have been made in these
  • iWHOIS improvements to have sourceip and use other whois servers
  • iFILELINE op=delete gave 932 error deleting last line of file, on unix
  • noerrorpage - file:/ syntax didn't work on IIS.
  • iDATEDIFF - logic changed to be more consistent using a new spec. A month is considered the # of days to reach the same day of month in the following month. Likewise for a previous month. Use BOUNDARIES=true to get a date difference by counting the number of date unit boundaries that are crossed between two dates, similar to how database datediff functions work.
  • iPOP tags now properly return multiple line headers
  • ihttpsession - working with https
  • iREDIR improvement to the status directive
  • /!ihtml - handles status changes now as well
  • iMULTIPART handles boundry info not in quotes now
  • iTELNET timeout directive was not working
  • iREGEXFIND can get an error 90 on a complex variable with quotes etc… in it
  • iRANDOM now randomly picks from all the rows in the table
  • iFTP tags handle PASV properly now
  • iMail improved to prevent 1920 error from not timing out quickly
  • plus lots of little things that unfortunately got fixed but not noted or where fixed as a result of another fix.

New Features

1. GZIP result pages
What this does is compress the result page before sending it to the browser if it will accept that format. This means that bandwidth can be cut by as much as 50% on your dynamic pages.

2. iHTML Scoreboard
This is a very handy new tool that allows you to view in realtime the currently processing ihtml pages and when they started. It can be used to track down if something is stuck or taking a long time.
Get the file to use with this feature Here
To enable this add an entry to HKLM/software/inline/ihtml/currentversion called scoreboardpath with a value of a path such as c:\ihtml\scoreboard\ and also an entry called scoreboard with a value of TRUE.
3. iHTML as an XML server
Currently the XML tags allow iHTML to act as an XML client but new functionality will allow it to act as an XML server as well. There have been other significant improvements to the XML tags to handle SOAP better among other things.

4. SQL insertion prevention
This is the ability to prevent malicious SQL statements from being inserted in query strings and post data. Default is off but it can be turned on if needed.

5. New Error Variables

5. New URL Variables

The above format can be used for an variables in any XML structure within iHTML. The text before the -> is the ALIAS name of the XML structure.

You can also get at these variables with the iXML tags
<ixmlquerytagbody alias=ihtmlpagerequest tag=ihtmlpagerequest.request.hostname>
You can also dump out the entire request structure using
<iXMLToFile ALIAS="ihtmlpagerequest" PATH="ihtmlpost1.xml">

iHTML 2.20 Rev 2 Items Addressed

January 8th, 2004

  • RTF DOC: New Directives/Features since 2.20.00
  • iCRDATETIME returns correct values
  • iDSNCONFIG was improved for unix
  • iCGI tag has had MAJOR improvements, should work significantly better now. New exitcode parameter
  • Removed debug info from some logs
  • Improvements to how the SSL libraries are loaded
  • Fixed but in first request on unix
  • Similarly named variable values are concatenated together on a form post now. fixed via a registry setting on ihtml installs
  • SOAP support on XML tags
  • iSTOP will always stop the page. Use iBREAK to break out of loops first to see loop output
  • Lots of general overall improvements in code

Nov 13th, 2003

  • made error handling available in all editions
  • form for key/sn entry – with redirect back to original page request.
  • Front Page detection: Frontpatch setting doesn't work with v5 (since the apache structures haven't been modified
  • EP in i_server_extension variable
  • iCGI working with batch files
  • iDOWNLOAD tag with SSL didn't seem to work on IE
  • lots of ihttpsessions tags with posted data had problems.
  • Bug with SMTP connections on certain mail servers
  • iCGI had spurious data reported back to the browser
  • iHTTP problems on Linux/FreeBSD fixed
  • iFILELINE various issues fixed
  • iREGVAL on Linux/FreeBSD works better now
  • Problems on the Developer Edition key are fixed
  • New Dynamic Loading features should improve start up dependency issues
  • iLINK didn't encode https references
  • iREDIR STATUS directive fixed
  • Extra error information in functions plus i_error_httpsession, i_error_xml, i_error_cryptolib
  • added ESC parameter on iSQLFETCH – called escoutput=true
  • iDSNCONFIG tag shows a form now as per the docs
  • iTEMPNAME the default directory is the current directory, a PATH directive was added
  • ihttp tag OUTVAR/MESSAGE directives don't work with BLOB data properly, use ihttp writefile=true path=whatever
  • iREADLINE failed on certain data
  • I_temp_stack changed to I_priv_temp_stack to avoid key feature tampering.
  • iLink – includes the period at the end of a url in a section of text, which results in an invalid anchor tag.
  • iCOOKIE expires=now will expiry the cookie when the browser closes
  • iSTOP should work properly now
  • when php4 is loaded, ihtml doesn't appear in apache's server version string.
  • iWhois on linux/win32 – gives 2400 Socket error on server host (using type=internic)
  • iENCODE/iDECODE uses DES3 and Blowfish now as well as MD5

Feb 19th, 2003

The following items have been fixed:

  • ifile and ifileinfo work correctly with symlink's now on the EXISTS function
  • new server variable called i_key_expiry to determine the date of expiry or says Never if a registered version
  • iCOPYFILE has a new SYMLINK=true if you want to make a symlink
  • EHANDLE=quiet is a new option that works the same as EHANDLE=inline but the errors will not be logged to the tagerror.log
  • ilistsort would give an error 0 if there were no entries in the list to sort
  • imail tag headers and envelope was corrected to have proper return paths to work better with mailing lists
  • the FORM tag will resolve colon variables in double quotes now
  • ixcopy and idiskstat would not work properly unless a slash was present in the path on Windows, this is now fixed
  • iclear, this tag works as it was originally intended and will clear all output to the point it is invoked.
  • iimagegradient would not always gradient correctly under certain circumstances
  • improved the error handling from ODBC driver errors
  • i_timestamp fixed on unix
  • MAILHOST2 was not being used from the registry, it will be now
  • in some cases if an error occurred with ehandle=inline, the data processed so far on the page would not be displayed in the browser. This has been fixed.
  • icrdatetime with 0's for the time would cause an error, it doesn't anymore
  • JPG handling of non JFIF versions is now supported
  • UNC file names should be handled with all the file tags properly
  • 904 errors should occur less frequently on file tags
  • idir op=base would have a trailing dot, this is fixed
  • iremblock would not work if nested in a tag set such as iIF/iIF, iLOOP/iLOOP etc..... This has been changed so that all iremblocks are removed before any parsing is done. This should also improve parsing on pages that have a lot of iremblock tags
  • iregex family of tags, SRC="" will not return an error message now for a required variable
  • exception in getsrvrvar on unix in tagerror.log file
  • iFTPACTION ascii upload not handled properly
  • qmail crlf issue on unix, this was related to the body having only an LF character

Still working on the following

inslookup tag still has some problems with some lookup types but is improved. Can use the iCGI tag to call the NSLOOKUP program as an alternative
bug in iRESUME

Things that are not bugs or can't be addressed:

iPEEK/iPUSH on IE: These show the headers in the page. This is because the web server IIS and WebSite Pro (not Apache) send duplicate headers to the browser. Netscape browser handles this ok but IE doesn't. There is nothing iHTML can do to get around this issue unfortunately as far as we have been able to determine because it is the web server sending the extra headers.

Company Info   |   Job Opportunities   |   Privacy Policy   |   Contact Info   |   Site Map   |   Links  
To request information email custserv@inline.net or Phone 905-680-0436
Copyright © 1999-2024. Inline Internet Systems, Inc. All Rights Reserved.