Server Integration

iNetWord is designed to integrate with other online services and systems. The server portion of iNetWord is relatively lightweight. It runs on the Linux/Apache/MySQL/PHP (LAMP) platform without MySQL:

Linux
Suse is the default distribution. Redhat and others are supported.

Apache
Version 2.0 is preferred. Only a few commonly used modules are required.

PHP
Version 5.12 or above. We use this recent version for its XML support.

 

Platform Dispatch Layer

By default iNetWord's server runs on the Linux native file system and user accounts. The internals of the iNetWord server are structured, however, so that file and account operations travel through a Platform Dispatch Layer. We use the term Platform here to refer not to the operating system but to the entire server infrastructure, including network attached components.

 

The Platform Dispatch Layer consists of 29 primitive methods for querying and manipulating user accounts, files, and folders. The Layer dispatches requests made to it to the appropriate platform implementation. Which platform implementation to use is determined by examining:

  1. Which of the 29 primitives is being called.
  2. The configuration settings associated with this session and with the file or user in question.
  3. Characteristics of the file being accessed - what type is it, where it resides, etc.
  4. Semantics of the request being fulfilled. Is it an autosave? A publish operation? etc.

 

iNetWord's server is integrated and optimized by modifying the Platform Dispatch Layer dispatch logic. For example, since autosave requests from the editor running in the user's browser are frequent and do not indicate the user wishes to commit those changes yet, they are often dispatched to the server's native file system for interim storage. Then, when the user eventually presses the Save button, the file save operation is dispatched to their primary document store on a different server.

 

Another example is the thumbnails associated with an uploaded picture file. If the system iNetWord is integrated with does not yet support thumbnail generation or browsing, then the Platform Abstraction Layer dispatch code can be configured to dispatch all thumbnail operations to the native Linux+Apache file system.

 

 

 

The platform dispatch primitive methods are:

 

platform_AddGlob( $absfile, $glob_list, $globflags )

platform_folders_dropdown_data( $absfolder, $foldersarray )

platform_write_user_setting( $docfolder, $settingname, $settingvalue )

platform_read_user_setting( $docfolder, $settingname )

platform_get_web_url( $absfolder )

platform_get_ftp_url( $absfolder )

platform_get_local_pathrootDISK( $absfile )

platform_chdir_hook( $paneid, $absfolder )

platform_mkdir( $absfile, $ferrifexists )

platform_copy_file( $absfile_src, $absfile_dest )

platform_move_file( $absfile_src, $abssubdir_dest )

platform_link_file( $absfile_src, $abssubdir_dest, $fSymlink )

platform_is_file_link( $absfile )

platform_read_file( $absfile, $freturnit )

platform_write_file( $absfile, &$newcontents, $fprocesshtml )

platform_append_file( $absfile, &$appendcontents )

platform_process_locked_file( $absfile, $callbackfunc, &$callbackarg )

platform_dir_exists( $absfile )

platform_file_exists( $absfile )

platform_stat_file( $absfile, $ferrifmissing, $fsymfile )

platform_file_perms( $absfile )

platform_unlink( $absfile, $ferrifmissing )

platform_empty_subdir( $abssubdir, $fandsubsubdirs )

platform_can_we_convert_this_pict( $absfile )

platform_picture_ensurethumbnail( $absfile )

platform_login( $userid, $pword )

platform_validate_user( $file, $line )

platform_get_display_userid()

platform_is_a_user( $userid )

 

Configuration Subsystem

iNetWord has a server and client side configuration subsystem that initializes, maintains, and communicates configuration settings throughout the system. Configuration settings control iNetWord's location within the Apache URL namespace, its location within the Linux filesystem, the location of user files within the local file system, and many other options and operational details.

 

Examples of Configuration Directives are:

 

Version = b2.00.57
VersionProtocol = 1.00.40
DefaultTemplate = blank doc.html
bgcolor = #212347
LockDuration = 70
LockAttemptInterval = 5
AutoSaveInterval = 60
NewDocCGIAction = /n/
OpenDocCGIAction = /e/
RequestCGIAction = /s/request.php
UploadPictureCGIAction = /s/upload.php
SpellCheckCGIAction = /s/spellcheck.php
UserName = someuser
PublishRoot = /someuser
DisplayedFolderNew = /
DisplayedFolderOpen = /
DisplayedFolderPictures = Web Site/developer/
filesmulti = yes
ServerRequestTimeout = 30