 |
Miva Empresa UNIX v3.63 Changelog
Valid for all Unix ports: BSDI,
Cobalt RaQ2, DEC UNIX,
Free BSD, Linux, SCO, SGI IRIX, and Sun Solaris.
Changes from 3.62
-----------------
1. EIN/ECIN now return 0 when their left operand is NULL. This fixes
backwards compatibility with Miva v3.57 and earlier and Htmlscript.
2. Fixed a bug which caused the Htmlscript operator SUBSTR to crash if one
of the two numbers was omitted from the right operand (i.e. "Xyz" SUBSTR ",1").
Changes from 3.61
-----------------
1. Fixed a bug in the processing of multipart/form-data POSTed data which
would sometimes cause garbage to be placed in fields.
2. Fixed a bug on the SGI IRIX platform which caused xBase files created
on IRIX to be incompatible with all other platforms. This means that
existing xBase files created on IRIX must be repaired. A program is
available from Miva Corporation to repair xBase files created on
IRIX systems.
Changes from 3.57
-----------------
1. Fixed a bug which caused the creation of temporary files to
fail on some platforms.
2. The MvCOMMERCE tag now uses dynamically loaded commerce libraries.
The available commerce libraries are configured via the
tag in the Miva configuration file:
METHOD is the same value as will be passed to the METHOD
attribute of the MvCOMMERCE tag.
LIBRARY is the *full* path to the commerce library.
Note: may not be used in a tag, and it
must be specified *before* any tags in the Miva
configuration file.
3. A new option for the STANDARDOUTPUTLEVEL attribute of the MIVA tag
has been added: compresswhitespace, when enabled, will cause the
Miva Engine to eliminate extra whitespace in the output of Miva scripts.
4. The ACTION and FIELDS attributes of the MvCOMMERCE tag are no longer
required by default (some commerce libraries may still require them).
5. The METAMETHOD attribute of the MvCOMMERCE tag has been deprecated in
favor of METHOD.
6. Fixed a bug which caused NULL left operands to the IN/CIN/EIN/ECIN to
return 0. They now return 1, which was the previous behavior.
7. Fixed a bug which could cause a crash on some platforms if
or was used on a database with an empty index.
8. A new configuration variable, path, has been added. This option
configures
the value of the PATH environment variable. The default value is the
current
working directory. This option is required for dynamic commerce libraries
to function correctly under BSDI 2.x and BSDI 3.x.
9. Macros may now be used in the definition of the mivaroot configuration
variable to obtain the value of any environment variable. This can be
used to dynamically set the mivaroot variable based on the DOCUMENT_ROOT
environment variable. For example:
mivaroot=&[ DOCUMENT_ROOT ]
10. Fixed a bug which prevented the configuration directive
from
functioning.
11. Added package management. Available packages are configured via the
configuration tag, and the packages configuration option.
The configuration tag configures the "master" list of available
packages, while the packages configuration option controls which packages
are available for a specific virtual domain.
CODE is a unique identifier used for the package.
NAME is the name of the package.
DESCRIPTION is a brief description of the package.
VERSION is the version of the package.
PATH is the *full* path to a .tar file containing the files
required by the package.
DEFAULTPATH is the default installation path. This path will
be used as the default by the Miva Package Manager.
Once a package has been defined by the tag, it must be
made available to a domain (or domains) via the packages configuration
option:
packages=merchant,order
Note: may not be used in a tag, and it
must be specified *before* any tags in the Miva
configuration file. However, packages may be used in a
tag, if desired.
12. Added package management builtin functions:
miva_package_list
Returns a comma separated list of the codes of available
packages.
miva_package_name( code )
Returns the name of the package specified by code.
miva_package_description( code )
Returns the description of the package specified by code.
miva_package_version( code )
Returns the version of the package specified by code.
miva_package_defaultpath( code )
Returns the default installation path of the package
specified by code.
miva_package_extract( code, directory, license )
Attempts to extract the package specified by code into
the directory specified by directory. If an error occurs,
a description of the error is returned. Otherwise, NULL
is returned.
13. Fixed a bug which caused STANDARDOUTPUTLEVEL and/or ERROROUTPUTLEVEL not
to be restored upon returning from a function call that changed the
value(s),
if the values had not been changed from the defaults by the caller of the
function.
14. Fixed a bug which prevented fdelete from removing directories.
Changes from 3.56
-----------------
1. Fixed a bug which prevented the sdelete() builtin function
from working.
2. Fixed a bug in MvCALL which prevented text which immediately
preceded EOF from being processed correctly.
Changes from 3.55
-----------------
1. Fixed a bug in MvCALL that prevented fields from being passed
when the METHOD attribute was GET.
Changes from 3.54
-----------------
1. Fixed a bug in the handling of multipart/form-data that could
cause data corruption and deadlocks.
2. Fixed a bug in MvCALL regarding the handling of slashes in
the middle of an unquoted attribute value.
3. Fixed a bug in MvCALL regarding the handling of attributes with
empty values.
4. Fixed a bug in MvCALL regarding the handling of slashes at the
ends of tags (ie ).
5. Fixed a bug which would cause Miva to go into an infinite loop
if the builtin function glosub was called with a NULL search
parameter.
6. Changed the wording of the error message displayed when attempting
to access an unopened database to be grammatically correct.
Changes from 3.52
-----------------
1. Fixed a bug which affected the generation of temporary filenames
under most UNIX platforms.
Changes from 3.51
-----------------
1. Fixed a bug which prevented scripts from passing arguments when
using CGI-style URLs.
2. Fixed a bug which caused the miva_getvarlist builtin function to
return all system variables twice.
3. Fixed a bug in the generation of temporary filenames which would
cause MvPOP to fail when downloading large numbers of Email
messages.
Changes from 3.50
-----------------
1. CyberCash results which return multiple results (query, etc..) now
have their results sorted properly.
2. tagname_Error attributes to the MIVA tag are no longer case-sensitive.
Changes from 3.22
-----------------
1. Fixed a bug which caused the recno database variable to be clobbered
by an loop.
2. Fixed a bug which caused Miva to enter an infinite loop when reading
some xBase memo files.
3. Fixed a bug which caused an MvDELETE or MvUNDELETE to update the current
database record, which made indexes get out of sync, and caused "Record
not in index" errors.
4. Fixed a bug which caused the documenturl system variable to contain
the port number when used via an SSL connection on the standard SSL
port (443).
5. Added support for the CyberCash Cash Register API.
6. Added support for HTTP file upload.
7. A new configuration option, validextensions, has been added.
validextensions=.mv,.hts
When defined, Miva will only execute scripts with one
of the extensions listed.
8. A new configuration variable, contentbuffersize has been added.
contentbuffersize configures the buffer size used when reading POST'ed
FORM data. The default value is 8192.
9. The CGI version of Miva will now exit with a timeout error
when the following signals are received:
SIGHUP
SIGINT
SIGQUIT
SIGPIPE
SIGTERM
10. Variable names posted from an HTML FORM or passed on the URL
command line are no longer checked for invalid characters. If
a variable name contains a character that may not be used in an
expression (i.e. -, +, *, %, etc..) it can be escaped by prepending
a backslash.
11. Added builtin functions to manipulate files in the script directory.
The following functions are functional equivalents the "f" functions,
except that they manipulate files in the script directory:
sexists( path )
smkdir( path )
sdelete( path )
scopy( source, dest )
srename( source, dest )
schmod( path, mode )
ssize( path )
smode( path )
The following functions transfer files from the script directory
to the data directory (functions starting in "sf") or from the
data directory to the script directory (functions starting in "fs"):
fscopy( source, dest )
sfcopy( source, dest )
fsrename( source, dest )
sfrename( source, dest )
12. Two new system variables have been added to allow scripts to deal with
globaltimeout:
globaltimeout Contains the maximum number of seconds that the
current script may execute
dyn_time_remaining Contains the number of seconds that may elapse
before the current script is terminated
13. The following builtin functions have been added:
isalpha( string )
isupper( string )
islower( string )
isdigit( string )
isxdigit( string )
isalnum( string )
isspace( string )
ispunct( string )
isprint( string )
isgraph( string )
iscntrl( string )
isascii( string )
14. The following builtin functions have been added:
abs( number )
acos( number )
asin( number )
atan( number )
atan2( x, y )
ceil( number )
cos( number )
cosh( number )
exp( number )
floor( number )
fmod( x, y )
int( number )
log( number )
log10( number )
sin( number )
sinh( number )
sqrt( number )
tan( number )
tanh( number )
15. Two new system variables have been added:
tm_usec
dyn_tm_usec
The variables contain the current microsecond relative to tm_sec/
dyn_tm_sec. Note that under Windows, the operating system only
allows Miva to receive this value in 50-0 increments.
16. MvDO is now subject to the maxfunctiondepth configuration limit. This
prevents MvDO loops from causing a stack overflow.
17. A new builtin function, miva_getvarlist, has been added.
miva_getvarlist( scope )
Returns a comma separated list of variables in the specified scope
18. Runtime errors may now be controlled on a per-tag basis.
For example:
Would cause all runtime errors generated by MvOPEN to be
fatal (script execution stops) and displayed (Miva outputs
the error message).
Would cause all runtime errors generated by MvOPEN to be
non-fatal (script execution continues) and not to be
displayed by Miva.
Changes from 3.21
-----------------
1. Fixed a bug which prevented MvPOP from loading the system variables
describing an e-mail message.
2. Fixed a bug which caused MvPACK to fail when packing databases contained
in a sub-directory on some platforms.
3. Changed the handling of large number comparisons. Miva should now handle
very large numbers correctly.
4. Strings consisting solely of spaces are now NOT EQUAL to NULL. Previous
versions of Miva (and Htmlscript) considered them equal.
5. Fixed a bug which caused MvHIDE to change the case of variable names.
Changes from 3.2
----------------
1. Fixed a crash which occurred when MvEXIT was used inside a function.
2. Fixed an error message which would occur when workdir was defined in
the configuration file.
Changes from 1.12
-----------------
1. redirectonly configuration variable
A new configuration variable, redirectonly, has been
added to the CGI versions of Miva. This flag allows you
to configure Miva to only allow itself to be invoked
via Apache redirect.
redirectonly=yes|no
2. serveruserid configuration variable
A new configuration variable, serveruserid, has been
added to the CGI versions of Miva. serveruserid allows you
to control which user id may execute the Miva binary. This
allows you to prevent people with shell access from executing
the Miva binary from a shell prompt.
serveruserid=[numeric userid]
3. GET support
Miva now supports name/value pairs as part of the URL. This
allows Miva to process HTML FORMs submitted using a METHOD of
GET. In addition, it makes parsing the s.argN variables a
thing of the past.
A global variable is created for each variable passed in the
URL. For example, the URL:
http://www.somesite.com.mv?VarA=This+is+a+test&VarB=123
would create two global variables:
VarA = This is a test
VarB = 123
If a variable is specified without a value, it will be created
with its value equal to the name of the variable.
4. UPS OnLine Cost Calculation
MvCOMMERCE now supports a METAMETHOD of UPSCost. This allows
you to do *online* calculation of UPS shipping charges using
UPS' CGI gateway.
Syntax:
The value of the FIELDS attribute is dependent on the request, and
is beyond the scope of this document. You can see ups.mv for
a partial list, or download the complete documentation from
UPS' web site.
Depending on the services requested, MvCOMMERCE will iterate
once or multiple times. Iteration may be stopped by using
MvCOMMERCESTOP.
While inside the MvCOMMERCE block, the following variables are
available:
errmsg Description of error, or NULL if no
error occurred.
errorcode Numeric code of error, or NULL if no
error occurred.
message Informational message
product UPS product code
orig_postal Shipment source postal code
orig_country Shipment source country code
dest_postal Shipment destination postal code
dest_country Shipment destination country code
zone UPS shipping zone
weight Shipment weight
productchrg Shipment charge, minus any accessory or
surcharges
accs_surcharg Shipment accessory or surcharges
totalchrg Total cost of shipment
time Commit time, or -1 if EOD
5. dBase III Memo Fields
dBase III memo fields are now supported.
Syntax:
Memo field data is stored in a separate file. The memo file
has the same name as the database file, but with the extension
.DBT. The memo file is automatically created/opened by Miva.
Due to the structure of the dBase III memo file, all updates are
done by simply appending the new data to the end of the file.
To prevent the memo files from growing out of control, Miva only
updates the memo file when a field is considered "dirty." A
field is flagged as dirty whenever a value is assigned to it,
even if that value is the same as the previous value of the field.
6. MvFILTER
A new tag, MvFILTER, has been added. MvFILTER provides a fast,
easy way to do sequential searches through a dBase database.
Syntax:
After specifying a filter, only fields which match the filter
will be "visible."
The variables totrec and recno will still refer to the total
number of records in the database and the absolute record
number.
When using MvFIND with a filter, the first record which matches
both the value being searched for and the filter will be found.
7. MvDO
A new tag, MvDO, has been added. MvDO provides an easy way
to include HTML and/or Miva code from supplemental script
files.
Syntax:
If the NAME and VALUE attributes are specified, Miva will
evaluate the expression in VALUE and store the result into
NAME (this would be used, for example, to call a function
in the file specified by FILE).
If NAME/VALUE are not specified, Miva will simply begin
executing the file specified by FILE from the top, and
will merge the output of the supplemental file with the
output of the primary file.
8. encodeentities/decodeentities
Two new builtin functions are provided to encode and decode
HTML entities (ie >, <, etc..).
Syntax:
9. makesessionid/Cookies
Cookies have been revamped again. The htscallerid cookie now
expires one year after being set, and has been lengthened to
128 bits to aid uniqueness.
In addition, a builtin function, makesessionid, has been
provided to generate a 128 bit unique id.
Syntax:
10. MvLOCKFILE
...
MvLOCKFILE exclusively locks a file.
11. Macro Encoding
The output of macros may now be optionally encoded:
&[ [:encoding] ]
Where encoding is one of the following:
entities Functionally the same as encodeentities()
attribute Functionally the same as encodeattribute()
i.e.:
&[ g.FormField:entities ]
Changes from 1.1
----------------
1. The security system has been redesigned.
By default, Miva runs in its most secure mode. In the event
that this conflicts with your system configuration, you will
need to enable one or more options using the securityoptions
configuration directive.
securityoptions is a bitmask. Each bit turns on a specific
feature. The bits are as follows:
MSB LSB
... 00000
^^^^^
|||||
||||+-- [1] Follow symlinks in script directory
|||+--- [2] Ignore symlink ownership in script directory
||+---- [4] Follow symlinks in data directory
|+----- [8] Ignore symlink ownership in data directory
+------ [16] Allow absolute paths for data files
By default, all bits are turned off (value of 0). To enable
one or more flags, add the value in square brackets ([]).
For example, to enable following symlinks in the script directory
AND the data directory, you would set securitylevel to 5.
2. New variables have been added for xBase fields of type DATE:
Assuming fieldname is the name of a database date field:
fieldname_raw contains a YYYYMMDD format string
fieldname_day contains the day of the month
fieldname_month contains the month of the year
fieldname_year contains the year
fieldname still contains a time_t representation of
the field value.
3. Fixed a bug in the sitevars processor that would cause
an extra carriage return to be appended to every variable.
4. Fixed another bug in the indexing algorithm that would
cause "Record is not in index" error messages.
5. Changed scope names to be non case-sensitive.
6. Added a check and error message for nested 2.x-style tags.
7. Fixed a bug that would cause index operations with numbers
longer than 12 digits to fail.
8. Fixed a bug that would sometimes cause a crash when a single
variable containing more than 8192 bytes was evaluated.
9. Fixed a bug that prevented arguments to function calls in an
index expression from being saved to the index.
10. Fixed a bug that caused "Mismatched Parenthesis" errors when
parameters to functions contained parenthesis.
11. Fixed a bug that would sometimes cause a crash when calling
a forward-referenced function with no parameters.
12. Fixed a bug that would cause a crash when a function contained
a mismatched IF.
13. Fixed a bug that caused occasional corruption of database
date fields.
14. Added a check for multiple function declarations with the
same name.
15. Added a check to prevent opening multiple databases with the
same NAME attribute.
16. A new builtin function, padl, has been added.
padl( string, length, pad_character )
Will pad "string" to length characters long, using
pad_character.
Pad characters are added to the beginning of the string.
17. A new builtin function, padr, has been added.
padr( string, length, pad_character )
Will pad "string" to length characters long, using
pad_character.
Pad characters are added to the end of the string.
18. A new builtin function, glosub, has been added.
glosub( string, search, replace )
Will globally search for "search" in string and replace it with
"replace."
19. A new configuration directive, dnslookup, has been added.
dnslookup controls whether Miva will attempt to resolve
directives to IP addresses, or compare them
as they appear in the file. The default value for dnslookup
is 1.
20. The authfile configuration directive is now honored in standard mode.
21. Fixed numerous bugs in the expression analyzer.
22. Fixed cookies.
23. The EXPRESSION attribute to has been deprecated in favor
of EXPR.
24. Fixed a bug in the mktime_t builtin function that would cause the
incorrect timezone to be applied.
25. Fixed a backwards-compatibility bug in the handling of flat files
that would cause whitespace to be removed from fields on import.
26. Added a check and error message for database field names longer than
10 characters.
27. Added a new value for the securitylevel configuration directive
that permits symbolic links in data/script directories. See
the administration manual for more information.
Changes from 1.0
----------------
1. Fixed a serious bug in the indexing algorithm that would cause
records to mysteriously disappear or appear in the incorrect order.
2. Variables passed from a form via POST are now canonically mapped
using the following rules:
. is replaced with _
3. A new configuration variable, securitylevel, is provided to control
the level of restriction on access to data files.
securitylevel=0
Allows Miva applications to read/write data files
(subject to normal UNIX permissions) that are outside
of the configured data directory, via symbolic links
or ../ in the file path.
securitylevel=1 (default)
Does not allow Miva applications to read or write
data outside of the configured data directory.
4. Fixed a security flaw that would allow remote users to read any file
owned by a user authorized to run Miva.
5. Changed the old Htmlscript-style MAIL tag to automatically delete
messages on the POP3 server as they are downloaded. This was the
behavior under Htmlscript 2.99.
6. Fixed a bug which would cause an "Unexpected end of file looking for
" error when the MvPOP tag was used and no messages were
available.
7. Added "Line:" in front of line numbers in error messages to prevent
confusion.
8. NSAPI version only -- added the URI system variable.
9. Added a Host: request line in the HTTP headers sent by the MvCALL tag.
This resolves "404 File Not Found" errors when calling URLs on servers
running software virtual domains.
### end CHANGELOG ###
|
|