2.95 Changes



Change Log
Topics

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.