Version 2.90
------------
* IMPORTANT: WC 2.90 changes the log file format! Due to a conflict
of the Request field in the log format the Request field has been
renamed to QueryStr. The Request field name was causing very difficult
to track naming conflicts with the Request object used by Web
Connection. To update, either rename your CGILOG field or simply
delete the file altogether and let WC rebuild the file.
* New HTML Help File included. The Help file built with
West Wind HTML Help Builder is a skeleton help file that
has imported the Web Connection class header information into
a searchable reference. Documentation is not complete - the
help file only reflects what it's in the class and method
headers, but it should make it much easier to find functionality
and get a quick function prototype for method calls.
* A new switch in wc.dll allows running COM objects outside
of the COM pool. With this optional request specific switch
servers run once and immediately unload. Use this for
extensive long-running requests that would otherwise
tie up the pool. Format is: wc.dll/single?wwDemo~Testpage
using the /single extra path.
* A new switch in wc.ini allows Automation servers to stay alive
instead of timing out after 8 minutes. The KeepAlive=1 flag will
keep an extra reference to the COM object to force it to always
stay active. Greatly stabilizes COM operation.
* There has been a partial re-write of the COM management code
in wc.dll. The new code relies more heavily on ATL components
for COM interface calls greatly reducing the code complexity.
The result has been much improved stability at the Surplus
sites under ever increasing loads - exceptions have been
virtually eliminated and server reload code is more reliable.
In combination with the KeepAlive setting above servers have
not crashed in 1 month of high load operation at Surplus...
* The wc.dll Show Status Administration screen has been greatly
improved. The form now provides a number of maintaince links
directly on the status page. All load/unload and the configuration
links all return back to this central page as well.
* All wc.dll maintainence operations now run under the SYSTEM account
so access permissions copying files and shutting down processes
becomes more reliable. The SYSTEM account should have rights to
to perform most security tasks without causing security holes.
* Functions in wwMaint now look at the AdminAccount key in wc.ini
for user verification rather than another setting in wcmain.ini.
This makes the Web Connection Admin security settings localized
in a single file.
* wwIPStuff::SendMail and SendMailAsync now properly support
Mime type attachments. You can attach any file and send
it along with your email message. This fixes the problems
in older versions that only sent UUEncoded attachments which
were not automatically decoded. Messages are now fully
Mime and Base64 compliant.
* wwHTMLForm now supports rendering forms with no data or using
script tags (<%= Guest.Name %>) embedding the controlsource into
the form instead of values. This should facilitate using the VFP
form editor to build Dynamic HTML forms as a WYSIWYG editor.
Check docs for wwHTMLForm for updated information on the nValueType
property. wwForm has also been updated to support this display
mechanism.
* New features for wwIPStuff::HTTPGetEx now includes the ability
to retrieve the HTTP headers and a new OnHTTPBufferUpdate()
event that fires when data is received. The lHTTPCancelRequest
flag can be set in this event to cancel an HTTP download.
This allows for building a status display while downloading
HTTP Requests as well as providing support for simple UI
operations like a Cancel button.
* New wwMaint function to display the Web Connection DLL Error
log in wwcgierr.txt. The function is accessed via the maintainence
page using the wwMaint::wcErrorFile method. This link can also
clear the error log.
* Fixed several issues in wwHTMLForm: Spinners can now be rendered
correctly as textboxes. MultiSelect listbox selections now render
properly. However, updating multiple listbox selections must be
performed manually. SetValues() will only update the first selections
by setting the value.
Version 2.85
------------
* Support for a plain CGI connector has been added. The
new CGI connector replaces the old Windows CGI connector
for better compatibility with the ISAPI version and
broader Web Server support - CGI should allow running
Web Connection on just about any Windows based Web
server. The new CGI executable is wc.exe. Additional
Auto installation options for various non-ISAPI
servers will be added shortly.
* File Uploads via multi-part forms have been implemented.
You can now use the FILE input type on a form and retrieve
the file on the server side using the following new
methods of wwCGI: GetMultipartFile(), GetMultipartFormVar()
* New wwHTTPAsync class that is a event driven control that
allows background downloads of HTTP requests. The control
fires OnDownloadComplete events to let you know that the
request has completed, returning the HTTP result or error
code.
* Implemented Round Robin server cycling for COM servers
in addition to the traditional load based server cycling.
Load based sends requests to higher servers in the queue
only if the first one(s) are already busy. Round Robin
always cycles through the server pool. Implemented via
ServerLoading= in wc.ini.
* wwIPStuff::SendMail now works with the IIS4 ESMTP
server. Basic Support for ESMTP has been added
but may not work with all servers.
* wwIPStuff::nHTTPPort has been added to allow accessing
HTTP servers on non-standard ports. Value is 0 by default
which uses the default HTTP and HTTPS ports. If set that
port is specifically used.
* wwIPStuff::RasDial no longer brings up a dialog box
on a failed RAS dial connection. Instead it now
sets the cErrorMsg property when the return from
RasDial is .f.
* Fixed memory leak introduced in ISAPI DLL V2.75
occurring only with COM server operation.
* Fixed bad pointer references in ISAPI DLL code when
COM servers crash. A GPF in the VFP server would
cause memory of IN parameters to be corrupted and
cause a (handled) exception in the DLL. Fixed.
* Improved Error info provided on the Error page sent
from the wwProcess::Error method. Added new method
SendErrorEmail() to wwProcess to simplify customized
error messages for email.
* New functions in wwUtils: StripHTML, IsComObject,
ShowHTML (displays HTML String in browser)
PropertyDump (displays object properties
and values as string)
* There have been several fixes to the WCS Active Server
like scripting functions. Thanks to Randy Pearson for
his help in resolving several reference bugs that
caused strange errors in the Web Connection server.
Fixed.
* The scripting engine also now includes an updated error
reporting mechanism that shows the error line of code
along with a few surrounding lines of code for context.
Under Construction:
* Added new samples that show how to take advantage
of RDS (Remote Data Services/ADO) with Web Connection.
Version 2.75
------------
* Enterprise Edition now includes a wwPDF class in .\Tools.
Class allows programmatic creation of PDF files using
the Adobe PDF printer writer. Allow creation of printable
reports over the Web.
* wwIPStuff::HTTPGetExAsync has been added. The Async
version just goes off and runs an HTTP request in the
background. You can specify an output file for the
result so you can check for completion of the request.
* Miscellaneous updates to the wwHTMLForm class that
should provide slightly better speed.
* New Install program that uses a more Wizard like
interface. The install program has also been more
streamlined to allow for more generic creation of
applications (to be added later).
* New wwWebServer configuration class. This class
allows for easy creation of Virtual directories
and script maps for: IIS4, IIS3, PWS3 and 4,
WebSite and Commerce Builder. Tell the class
which server to use and then call single methods
to add virtuals and script maps.
Version 2.72
---------------------
* Fixed DHTML Form rendering problem caused by IE 4.01.
Layering now works correctly. Special thanks to
Jan Dorresteijn for his help in finding the workaround.
Fixed.
* Updated installation to support scriptmaps
with WebSite 2.2.
* wwIPStuff: Changed default from PROXY settings
to direct settings. New nHTTPConnectType property
allows to configure this setting dynamically.
* wwIPStuff: Email interface enhancements to support
some ill-behaved SMTP servers. Expanded message buffer
to 512 bytes, and added code to allow non-compliant
content headers.
* New wwCGI methods: GetLogicalPath(), GetExecutablePath().
Both of these are useful for scriptmaps. GetExecutablePath
in particular can allow you to route requests based on
virtual directory rather than a 'query' paramameter:
lcVirtual = JustFname(loCGI.GetExecutablePath())
CASE lcVirtual = '/wconnect/'
DO wwdemo.prg with THIS
Version 2.71
---------------------
* New messaging mechanism that does away with the INI file
for server information. This new interface to the Web
Connection DLL uses URLEncoded formatting to transfer
all data in a single chunk. For OLE Automation this
means no messaging files at all - for file based it
means 2 message files instead of at least 4. Request
transfer times have improved about 30% overall. Small
speed improvements should also occur on the FoxPro
end for reading form and server vars.
* New wwPostRequest class subclasses wwCGI to access the
URLEncoded request buffer. Other than the split code that
separates form vars from server/browser vars this code
is compatible with all URLEncoded formats used by other
products. It will work with FoxISAPI unchanged.
* New wwIPStuff::wwHTTPData class. This class facilitates
running SQL statements over HTTP and returning data to the
client in similar fashion as VFP's SQLExecute(). Results
can be returned in cursors. Supports both client and
server methods and a generic processing routine that
can handle data requests without custom code (pending
security)
* Support for Client Certificates has been added for IIS.
The new wwCGI::GetClientCertificate() method allows retrieving
subject information from a client side certificate.
ClientCerts work only with the new URLEncoded Post method
interface. The INI file interface does not receive the
information.
* New MergeText function in wwUtils. This version of
MergeText is generic and optimized to work with
Active Server type tags (<% %> and <%= %>) and processes
expressions and Codeblocks (dynamic in runtime). This
mechanism will eventually replace the ## syntax used
by Web Connection for template expansion. The function
is generic so you can use your choice of delimiters.
In addition a slight performance improvement can be
seen by this new version of MergeText. wwHTML::MergeText()
continues to be used by the HTML class internally to
support the extended ## syntax for codeblocks.
* The new MergeText functionality has been integrated with
ShowHTMLFile() and ShowMemoPage() for rendering of .WC
pages optionally. You can now specify <!-- WCS_TEMPLATE -->
at the top of a .WC page to force Web Connection to use
Active Server Syntax instead of the ## syntax for expanded
expressions and code. The new flag is optional and ## continues
to be the default behavior. The phrase WCS_TEMPLTATE must
appear within the first 80 characters of the document.
* New Log statistics form that summarize Web Connection
Hit logs based on the query string parameters. See at
glance which links are most frequently hit and how long
they take. Requires IE 4.
* wwIPStuff HTTPGetEx() method now does not require
a pre-allocated buffer. When omitting the tnSize
parameter or passing in 0 by reference the output
from HTTPGetEx() will now dynamically build the
string output.
* Fixed HTTP Header problem with overridden error pages
generated by the Web Connection DLL. Missing header would
cause pages to not display or try to download. FIXED.
* Fixed problem with WC.DLL not loading under old versions of
Windows 95. The DLL would not load due to missing DCOM
API functions. The functions are now late bound at runtime.
Fixed.
* Fixed Automation problem with wc.dll when reloading servers
after the initial timeout. The first hit on a server could
potentially be interrupted by another request resulting in
corrupted data. Problem also affected manually or GPF unloaded
servers. Fixed.
* Added new Active Server compatible method names to wwCGI
class: Form (like GetFormVar), QueryString (like
GetUrlEncodedParameter) and ServerVariables (like GetCGIVar).
All new methods work like the old ones except QueryString()
which has been enhanced to work with either positional,
numeric parameters or URLEncoded, named parameters. You can
now do: QueryString(1) or QueryString('Name') or QueryString()
to return the whole thing.
* Added Write Method to wwHTML for ASP compatibility.
* The Request/Status viewer now (finally<s>) supports copying
text to the clipboard.
* Fixed Setup for PWS 4.0 under Win95. Code tried to use the IIS4
set up routine which is completely different for Win95. Reverted
back to registry code (IIS3 type setup). Fixed.
* The DLL Status display has been significantly enhanced to provide
more information and allow basic admin task in a single form.
You can now Hold Requests in this form and see the change
immediately. You can also reload settings from here now.
Automation servers now show the machine name if running a
remote server (if specified through WC's syntax).
* DHTML Grid now displays numeric values right aligned.
* The Web Connection Log can now log a script name in addition
to the querystring. For those building applications with
scriptmaps the scriptname will be more important than
the querystring.
Version 2.60
---------------------
* Support for new scripting engine based on ASP model.
New script maps for .WCS and .FXP which allow running
pages using <% %> to embed FoxPro code and constructs
into static HTML pages stored on disk. Pages are compiled
prior to running. See sample page for example and
Classes.doc for detailed info. Beta Implementation with
limited documentation and minimal ASP Object support.
* IIS 4.0 installation migrated to VFP code. Scriptmaps
still require external code - moved to self contained
Delphi DLL as to not require any runtimes. New Admin
class wwIISAdmin.prg can be found in TOOLS and allows
access to most Active Directory services.
* Fixed bug in ISAPI DLL that did not properly return
variable names that contain spaces. Fixed.
* Miscellaneous bug fixes related to minor problems with
status form not properly updating the permanent settings.
Also, fixed log viewer bug that caused File In Use Erros.
Version 2.56
---------------------
* Fixed problems with IIS 4.0 installations related to VB runtime
compatibility. Also, added additional check code to give instructions
if the Registration component cannot be installed.
* Updated Error Handler logging code to properly set the Error flag.
Previously the flag was not used in wwProcess::Error. If you use
your own error methods it's suggested you pass the new 4th llError
parameter for any error requests.
Version 2.55
---------------------
* New DCOM remote server loading mechanism introduced
to avoid requirement for multiple classIds for instantiating
both local and remote servers. The Server name can now be
specified as part of the WC.INI ServerX= key. This greatly
simplifies remote server deployment and makes it feasible
to create servers off a single codebase.
* Session Object improvements for easier maintainance of user
specific state information. New wwProcess::InitSession() method
handles automatic retrieval and creation of Session Cookie making
it possible to simply access the new wwProcess::oSession object
and its Set and GetSessionVar() methods.
* The wwSQL Class now automatically connects to either a named connection
in a DBC or with Connection string passed to the Connect() method.
* Error Field on the CGILOG table makes retrieval of errors easier and
quicker. NOTE: PREVIOUS VERSION USERS MUST DELETE THEIR CGILOG FILE OR
UPDATE THE STRUCTURE WITH THE NEW ERROR FIELD!!!
* The Web Connection DLL now adds a default HTTP header if the VFP
application doesn't return one. Although this makes up for accidentally
left out headers on the VFP end it's still highly recommended to
create the header as part of each request!
* The Server Status request display now shows a request in progress rather
than the 'Processing...' message. This should help in debugging servers
that hang or crash due to a logic error by displaying the currently running
request. The display has also been truncated for more efficient use of
the display space.
* The Install program now supports entering setup info into the IIS 4.0
Metabase for automated setup on IIS4. The Enterprise Edition also adds
a wwIISAdmin component (VB5) for accessing the IIS4 metabase.
* New leaner versions of wc.dll and wwIPStuff. Binary file sizes cut by
30%.
Version 2.50
---------------------
* Enterprise edition introduced.
* New Customer Info IE 4.0 form demo. Demonstrates a complex
form running as is.
* Added wwSQL class to Enterprise Edition. This class wraps
SQL Passthrough into an error safe class for easy connection
management.
* Added FileDelete Win32 Executable application to Enterprise.
This utility allows deletion of files in a specified directory
in timed interval. Use to clean up and timeout temp files or to
manage temporary files created for display or file downloads.
See TOOLS directory.
* Fixed bug with wc.dll when submitting large POST forms.
The problem occcurred only on forms with over 30 fields
and containing several textareas. Re-wrote this piece of
MS code and in the process rewrote entire form posting
mechanism to be more efficient.
* New Edit Server Status page that uses IE 4.0 form rendering
to display the Status Form of the Web Connection server.
You can view and edit the values from this window.
* Addition of [HTML PAGES] section in wc.ini to allow error
messages to be overridden with custom pages. The pages are
fully static, but allow the page to look more tailored to
your own site image. See WCONNECT.DOC for more info.
* New wwCGI::aFormVars() method that parses all HTML form
variables into an array of key value pairs.
* Many fixes and updates to the wwHTMLForm class to
coincide with the release of IE 4.0. The documentation
has also been updated to outline the operation of the
class and some of the things you need to watch out for.
* wwHTMLForm now renders Images. Images are renamed to
.GIF from .BMP/.ICO and pathed to WWFORM_IMAGEPATH
defined in WCONNECT.H. Image Buttons are also supported
Image buttons submit form.
* TextBoxes now recognized explicit alignment from VFP
forms. Numeric fields now use TRANSFORM() instead of
always forcing number to 2 decimals (this results
in variable length numerics but it's much nicer for
editing where the form value determines the display).
* Stephen Genusa Process Viewer ASP component is now
auto-installed for use in Admin.asp. This component
lets you quickly view all NT processes running on
NT and you can program it to display only the relevant
processes for your application (default is ww*.exe and wc*.exe
and dr*.exe - you'll have to change the filter to
fit other EXE servers).
* New DCOMCnfgServer function in wwUtils
allows programmatic setting of the Impersonating
user security for Automation servers. This can
do away with the DCOMCnfg step in the build
cycle. Also added a sample on how you might
use this to automate building your Automation
servers in TOOLS\BldOle.prg.