PIKT Changes
See the ChangeLog file in the latest official software release, pikt-current.tar.gz, for a more detailed list of changes.
Release 1.19.0, 2007/09/10
- Substantially revised the PIKT Reference, adding many more examples (including links to new web pages at pikt.org detailing function usage), expanding on several sections, and updating to reflect details in recent software versions.
- piktc '-x' & '-X' operations may now piggyback onto other piktc operations (e.g., '-i'), so that one can now, for example, install and execute a post-install command in one go.
- Added a new piktc & pikt command-line option, '-U', for running in "urgent mode" (where no lock file blocks operation). Also added the '-p#' option to piktx.
- Added a new piktc command-line option, '-p#', for pausing # seconds between successive piktc operations. Also added the '-p#' option to piktx.
- Implemented per-host (set in keys.conf) data_encryption_type & auth_encryption_type.
- Introduced several new alarm status settings: suspended, testing, debugging.
- Implemented a new built-in define, pikttest.
- Reformulated the '-T' command-line option to activate the new pikttest define, also to report actions rather than exec them, and in general to set up special test environments.
- Added the doexec Pikt script statement.
- Added several new built-in macros: =piktalert, =piktalarm, =piktstatus, =piktlevel, =piktprogram, =piktfile, =piktobject, =pikttest, =piktalways, =piktdataenctyp, =piktauthenctyp.
- Added several new script functions: $status(), $mailcmd(), $lpcmd().
- Alarm status & severity level may now be specified alert-wide in alerts.cfg.
- Repositioned 'input' statements in the run-script sequence (from before to just after the begin section).
- Implemented the retention of history info (in .hst files) in script quit situations.
- For the #age() & #fileage() functions, added the option to specify a file path argument (instead of, as before, some date arguments).
- In 'output log' statements, the logfile name may now be a computable string.
- 'piktc -G' debug output is now much more useful and relevant.
- Improved error handling and logging.
- Fixed some issues that broke authentication on 64-bit systems.
- Fixed a FreeBSD compile problem.
- Minor bug fixes.
- Made other code improvements.
Release 1.18.2, 2006/11/06
- Fixed a problem that broke the pikt script interpreter in Gentoo Linux.
- Fixed a problem related to logfile input and changing POSIX standards.
- Fixed a bug in the code for specifying piktd timings.
Release 1.18.1, 2006/09/10
- Fixed several problems that broke the compile in Red Hat Linux Fedora Core 5.
Release 1.18.0, 2005/01/10
- piktc_svc can now bind to a specific system port, facilitating PIKT's use in firewalled environments.
- Implemented the new piktc -w & -W vieW-file options.
- Implemented the new piktc +/-E option to set/unset environment variables.
- Implemented #unset & #unsetenv directives, and new #set & #setenv variants.
- Implemented new #setdef and defines.cfg variants.
- Added optional alarm message sorting by syslog level.
- Made other code improvements.
Release 1.17.0, 2004/09/14
- Implemented several new preprocessor directives--#set, #setenv, and #echo--making possible a form of parameter passing to #include files, among other uses.
- Implemented the 'piktc -B' option for restoring files from backup.
- Introduced a new program, piktf ("pikt find"), for finding elements within the PIKT configuration.
- Implemented command-line item macros, giving A, O, P & F item specs the alias- and group- like functionality of H specs.
- Added file names, line numbers, and hostnames to all macro-related error messages.
- Added PIKT.conf specs to override compiled-in NICECMD and CATCMD.
- Minor bug fixes.
- Made other code improvements.
Release 1.16.1, 2004/01/29
- Fixed a problem where ssh would hang when (re)starting piktd (open file descriptors are now handled correctly).
- Fixed broken piktd alert timing on 64-bit systems (such as Alpha).
- Fixed broken backslash escapes in macro args.
- Fixed several bugs involving the use of #indent and #unindent within #include files.
- Removed the arbitrary limits to the length of macro expansions.
- Fixed several minor bugs/glitches.
- Made a few other minor changes.
Release 1.16.0, 2002/10/15
- Implemented the piktc '-b' option for doing backups when installing or deleting files or installing a new PIKT.conf.
- Implemented multiple alert timing specs.
- Overhauled the PIKT exit code and error messaging schemes; error messages are now much more informative.
- Introduced a new utility, pikth (for "PIKT help")--an on-line help system.
- For Pikt scripts, added the #rule() (aka #rulenumber()) function, also the 'input "
"' variant. - Sending a kill signal to either piktc or piktd will now reliably kill the parent and all child processes.
- Fixed problem where ssh (or rsh) might hang when attempting to remotely (re)start piktc_svc on slave systems running OSes other than Solaris.
- For piktc operations, in all cases of "access denied," the program complains but no longer exits.
- Possibly fixed a bug where, on at least some Linux systems, defunct piktd processes might accumulate.
- Fixed several minor bugs.
- Made other code improvements.
Release 1.15.0, 2001/10/15
- Implemented per-slave authentication keys (so that the piktmaster shares a unique set of secret keys with each slave system).
- Introduced a new utility, rkey, for generating random authentication keys in keys.conf.
- Added the 'piktc -p' option for installing to slave systems PIKT.conf files with updated keys.
- Added ARP (MAC/ethernet address) piktmaster authentication.
- Completely revamped the configs_samples, increasing modularity, maintainability, clarity, ease of use, comprehensiveness, and accuracy.
- Revamped the configs_starter, and expanded the Tutorial to include Getting Started material. The expanded Tutorial is now based on the configs_starter.
- Added the built-in macros =piktuid, =piktgid, and =piktprivate_key.
- Introduced command path overrides (e.g., of arpcmd) in PIKT.conf.
- Fixed several piktx bugs (most importantly relating to connection timeouts) and improved the program in many small ways.
- Fixed a bug where alert headers would sometimes fail to appear.
- Fixed a bug involving omitting a '>' character in #include
directives. - Fixed a bug where, under very unusual circumstances, changing %foo-style history value attributes might dump core.
- Clarified several parse error messages.
Release 1.14.0, 2001/07/09
- Ported to SCO OpenServer (thanks to Antoine Ameurlain) and Digital UNIX (thanks to Arto Selonen).
- Improved the coding of piktx (thanks to Michel Blanc).
- Added the 'pikt +C
' option. - Added the #exec and #piktexec (also #pexec) preprocessor directives.
- Reworked parts of the script and config file lexers.
- Fixed several minor lexer and parser bugs.
- Improved the formatting of installed alarm scripts.
- Added the directives #ifsys, #endifsys, ...
- Permitted the use of #ifdef, #setdef, #define, ... within defines.cfg.
- Fixed it so that doing a '#include "/dev/null" [
]' won't clobber /dev/null. - Added the 'piktc -E' option for doing a dump of all PIKT config elements. (This is in support of gpikt, the new PIKT GUI project.)
- Fixed some security flaws in master-slave network communications.
- Fixed other minor bugs.
- Made other code improvements.
Release 1.13.1, 2001/05/31
- Fixed some security flaws in master-slave network communications.
Release 1.13.0, 2001/05/07
- Introduced the #include|#verbatim
[ ] variants, for including process output (not just file content) into config files. - Added the '-I' piktc option, which--together with #include|#verbatim
[ ]--can auto-update your configuration files. - Pikt scripts may now be stand-alone (exist outside of .alt files) and directly executable (much like scripts in other languages).
- Client-side Pikt scripts may now contain #-style comments.
- Introduced a new, "official" PIKT utility, piktx. piktx does remote command execution with PIKT-style macros and command-line (+H and -H) host lists. Moreover, piktx allows concurrent operation from any PIKT host, not just the piktmaster. (piktx is still in beta, a work-in-progress.)
- Introduced a new alerts.cfg keyword, execcmd, for registering crontab-like, one-liner command entries in piktd.conf.
- Introduced several new piktc options, including: -M (expand macro(s)), +M (macro(s)), -V (show version info).
- Added the #setdef and '!' variant define preprocessor directives.
- Added #verbatim support within systems.cfg (correcting an oversight).
- Added new PIKT.conf settings, fork_delay and debug.
- During the preprocessor syntax check, a parse error used to abort the entire piktc process. Now, we just report the error for the current host, and move on to the next.
- Resolved most AIX problems (especially relating to master operations).
- Improved debug logging.
- Fixed some long-standing problems with timing/sequencing of parent and child processes.
- Strengthened the safeguards against running multiple concurrent piktc, piktd, and piktc_svc processes.
- Fixed a problem where printing to screen (or logging) strings with embedded single or double quotes might garble the display.
- Fixed a bug where embedded quotes in a #popen() command string might cause problems.
- Removed an AIX kludge that might, on other OSes, erroneously report slave piktc_svc services as being down.
- Fixed a pikt bug where referencing a string like "\\.edu" (but strangely enough not "\") would dump core.
- Fixed a bug where 'piktc -R' operations might occasionally fail.
- Fixed a bug where, if standard directories between master and slave differ, files might not get installed or otherwise handled properly.
- Fixed a bug where non-existent #include files might cause piktc to dump core.
- Fixed a bug where, under certain circumstances, a piktc fetch/diff file operation ('piktc -f') might dump core.
- Fixed a bug where calling 'output log' or 'output syslog' within a Pikt script, but without specifying 'level ...' in the init section first, will dump core.
- Fixed other minor bugs.
- Made other code improvements.
Release 1.12.1, 2001/01/21
- "non" hostgroups are now referenceable within systems.cfg.
- Fixed a bug where syntax errors in the config files might cause orphaned piktc processes.
- Fixed several bugs involving automatic file rewrites (when using 'set $outlin = ...').
- Incomplete piktc commands (lacking a '+/-H ...' specification) now dump a usage statement to screen.
- Fixed several bugs involving memory block overwrite or over-/under- read.
- Fixed a bug where null strings as associative array indices might dump core.
- Fixed a preprocessor bug.
- Fixed a bug where processing a history file with a retired alarm script as the first listed script might dump core.
- Fixed a bug where attempting a fetchfile request to an unresponsive slave system might dump core.
- Fixed other minor bugs.
- Improved preprocessor garbage collection.
- Made other code improvements.
Release 1.12.0, 2000/11/13
- Added secret key authentication and data encryption to master-slave, piktc-to-piktc_svc communications.
- Made other security enhancements.
- Improved diagnostic logging.
- Allowed for empty host lists (hosts and members stanzas) in systems.cfg.
- Eased systems.cfg syntax rules, allowing intermixing of hosts, aliases, and members stanzas, and in just about any order.
- For when 'configure' is run with the --prefix= option, fixed 'make install' so it no longer has the potential to trash other, non-PIKT ownerships and permissions (before, --prefix= was effectively disallowed because of this).
- Modified how the master piktc does "fetch_file" operations (thereby enabling 'piktc -f' for the OSes lacking that functionality previously).
- Added the $alert(), $level(), #level(), and $task() Pikt functions.
- Fixed a log format string bug.
- Fixed how the pikt lexer handles 8-bit (negative signed char) values.
- Fixed a bug where cfgparse() errors might leave orphaned piktc processes.
- Fixed a history value bug.
- Fixed a 'piktc -L' bug.
- Fixed a bug where piktc might misinterpret comment lines in #indent'ed and #include'd Perl and shell scripts as preprocessor directive lines.
- Fixed a #verbatim bug.
- Fixed other minor bugs.
- Made other code improvements.
Release 1.11.0, 2000/09/04
- Added new 'piktc -m#' feature for doing checksum compares of slave files against the master's central configuration (file integrity checking).
- Made other direct and indirect security enhancements.
- Added new 'piktc -L' feature for listing command-line items (in the central configuration files; useful for generating custom host lists, etc.).
- Added #verbatim preprocessor directive (like #include, but with auto-indentation, no comment stripping or macro expansion, and suppression of other preprocessor directives--i.e., incorporate a file "as is").
- Added automatic input file rewrites (e.g., to exclude certain lines, or to modify lines).
- Added automatic, implicit definition of "non" groups (set complements) for every explicit OS and hostgroup defined in systems.cfg.
- Demonstrated many new macro uses in the configs_samples.
- Speeded up associative array processing by at least a factor of two times (and by a much greater factor for very large data sets).
- Revised how 'piktc -R' piktc_svc restarts are done, thereby speeding up both restarts and 'piktc -K' piktc_svc kills as well.
- Fixed a serious memory leak in the script parser.
- Fixed a parser bug involving decomposition of string functions embedded within quoted strings.
- Fixed a bug where files opened for show_alert_status operations were not being closed.
- Fixed a bug involving the last field resulting from a #split().
- Fixed several #indent-#unindent bugs.
- Fixed several other minor bugs.
- Made other code improvements.
Release 1.10.2, 2000/06/23
- Fixed a bug involving the error logging of changed array dimensions in %foo[]-type references.
Release 1.10.1, 2000/06/17
- Fixed a couple of obscure bugs dealing with exception handling (in array indices; also consecutive conditions, including $command() or #system(), in a single if statement).
Release 1.10.0, 2000/06/12
- Rewrote much of the script processing code in a more modular, readable, and maintainable fashion.
- Redid the array implementation, introducing AWK-style associative arrays, also multi-dimensional numerically indexed arrays.
- Added the #indent-#unindent preprocessor directives, for automatic indentation of PIKT configurations.
- Implemented automatic assignment-to-var in #split (and #parse()), for example: #split($f, $command("=grep $user /etc/passwd"), ":")
- Revised the value history mechanism, fixing a serious scalability problem (where system memory might be exhausted with very large data sets).
- Fixed bug involving very large integers in expressions.
- Fixed bug involving #daynumber() call (no args).
- Fixed bug where #defined() would, under some circumstances, return TRUE when it should have returned FALSE.
- Added the PIKT Source Code OVERVIEW file (src/OVERVIEW).
- Made other code improvements.
Release 1.9.0, 2000/02/26
- Ported to OpenBSD.
- Implemented macro arguments, including both config file and command-line macro arguments.
- Implemented a new alert timing parameter, "drift", for random scheduling around a central time (or times).
- Speeded up piktc processing (by tweaking the hash() function, thereby cutting about in half the number of strcmp() calls in lookupident()).
- #if statements may now reference unregistered idents (permitting, for example, statements like '#elif aix | irix' where neither of those OSes is registered in systems.cfg). The effect of this is to make it easier to distribute "standard library" config files written to support all operating systems.
- Script variable names may now include '_' (underscores).
- Fixed a bug where, for files/programs installs, fetches, lists, and deletes, files with duplicate names but different filepaths were not being handled properly. In files.cfg and programs.cfg, added the new 'path' keyword.
- Fixed a bug where, for FreeBSD, fork()'ed piktds would hang on _exit().
- Fixed a parser bug.
- Made other improvements to the code.
- Updated various files for the new year (2000).
Release 1.8.2, 1999/12/21
- Fixed a bug where, for certain alarm sequences, history lookup keys were not being made properly, causing sporadic lookup failures.
Release 1.8.1, 1999/12/16
- Added lokdir, an alternative location (from etcdir) for storing lock files. (This makes it easier for PIKT to conform to the Linux FSS.)
- If the user does 'configure --prefix=...', then tries a 'make install', make issues a warning and aborts. (The reason is that specifying a non- standard prefix might break the ownerships and permissions of other, non- PIKT files in the 'make install'. The user must then do the install manually. This safety check is here mainly to protect Linux users attempting to install in conformity with the Linux FSS. If it's total automation they want, they should use the PIKT RPMs. A longer-term fix for this problem is being worked on.)
Release 1.8.0, 1999/12/11
- Finished the IRIX port. The AIX port is mainly finished, except for a few lingering RPC difficulties. (Please see the README.AIX file.)
- For alert scheduling (in piktd.conf and alerts.cfg), introduced random timing values.
- Added the $checksum() function, to compute a file's BSD & SysV sum, Posix cksum, MD4 & MD5 hashes, etc.
- Added the $filemode(), #fileino(), #fileatime(), #filectime(), and #filemtime() functions.
- Added the #random() function.
- Without args, time and date functions assume an implied #now() arg (hence give current values).
- Added #include capabilities to systems.cfg.
- Added a new PIKT.conf parameter, tcp_only, for making all piktc-to-piktc_svc communications use TCP (by default, many use UDP).
- piktc_svc now deregisters from the portmapper on program exit.
- When processing command-line and config file items (for everything except commands and hosts), the order was the reverse of what was expected. This has been fixed.
- Fixed several other minor problems in the code. (See the ChangeLog for more details.)
Release 1.7.0, 1999/10/24
- Ported to HP-UX.
- Added preprocessor line indentation (e.g., '# if').
- Added a simplified configs_starter fileset. Simplified the config files in other ways.
- Introduced a new functionality: document management and text formatting.
- Added new =piktnullchar, =piktspacechar, =pikttabchar & =piktnewlinechar macros.
- Added selective comment stripping to pikts via the new '-b' & '-l' command-line options.
- Resolved some race conditions between the comment preprocessor (striplex()) and the config file parsers (sysparse() & tagparse()); resolved several other race conditions in the code, too, speeding up portions of PIKT's operations considerably.
- In rpcsvc.c, substantially revamped the client authentication in chkrequest(), enhancing security, flexibility, robustness, debugging, and clarity.
- Rearranged the header files for better maintainability.
- Revised chkpiktc_svc() to do rpcinfo retries in cases of timeout.
- Put in additional safeguards against running multiple concurrent pikt processes.
- Fixed a bug where hanging pikt processes might hang piktd.
- Fixed a bug where logging might be attempted before pikt*log was set.
- Fixed a bug where case differences blocked client-server authentication.
- Fixed a bug where 'piktc -x' commands might occasionally fail.
- Fixed a bug where 'piktc -x' commands not producing output (e.g., chown) were reported as not executing.
- Reduced default RPC_TIMEOUT from 600 seconds to 60.
- Fixed a few other minor bugs.
Release 1.6.0, 1999/07/26
- Added a new piktc option, +C "
", for remote execution of command-line commands (kind of like a "smart", macro-aware rsh/ssh). - Added a new piktc option, -X, for executing PIKT scripts remotely but without waiting for any response from the client(s).
- Considerably reduced the preprocess() overhead for most piktc commands, making them run faster.
- Allowed for partial configurations, with less than the eight basic config file types. Now, only systems.cfg is absolutely required. All the rest are optional.
- Added new file attribute, passwd file, and group file script functions (e.g., #filesize(), $pwgecos(), $grmem(), and others).
- If the binaries fail to find PIKT.conf in $HOME/etc, they now look also in /etc.
- Added the option to over-ride default PIKT directories in PIKT.conf (using the new parameters: bindir, etcdir, libdir, vardir, ...).
- Added a new PIKT.conf option, verbose_log, to toggle between verbose and non-verbose (default) logging.
- Added another new PIKT.conf option, auto_syslog, to send all log messages additionally to syslog. And still another, syslog_facility, to specify the syslog local facility level.
- In alerts.cfg, for non-alarm scripts, timing (otherwise set to '=piktnever') is now optional. Alerts/scripts with =piktnever timings are no longer written to piktd.conf.
- Fixed several minor bugs.
- Made other behind-the-scenes improvements.
Release 1.5.0, 1999/06/22
- Added a new piktc option, -x, for executing PIKT scripts remotely (for example, to SIGHUP inetd after installing a new inetd.conf file on a client system).
- Added a new piktc option, -f, for diff'ing the master configuration against client-side files (useful for setting up; also has important security applications).
- In systems.cfg, you can now define host groups using os and host groups defined earlier, not just individual hosts.
- Added the new 'leave' flowcontrol keyword.
- Added a run-time check for crucial compiled-in command paths (solving a potential problem when binaries are compiled on one machine and installed on another).
- Fixed a bug where the piktc -C doublecheck option might be blocked if `hostname` doesn't return a fully qualified domain name.
- Fixed a bug where piktc would crash if invoked with unknown options.
- Added several more piktc validation self-tests to check the above features and bug fixes.
- Fixed a bug where the PIKT binaries might crash in situations of virtual memory exhaustion.
- Fixed a bug involving #fix-#unfix and #include files.
- Fixed a Makefile glitch on Linux systems where piktc_svc might fail to compile. Fixed another Makefile glitch involving rpc.x dependencies where piktc_svc might fail to compile on some (not just Linux) systems.
- Added/modified examples in configs_samples: macros.cfg, alarms.cfg, programs.cfg, files.cfg, and others.
- Added to the docs an extended abstract giving a succinct description of PIKT.
- Made other minor improvements and fixes.
Release 1.4.0, 1999/05/18
- Introduced a new, eighth config file, files.cfg, for managing any system file (e.g., /etc/inetd.conf, /etc/syslog.conf, /etc/sudoers, /etc/motd, etc.)
- In both programs.cfg and files.cfg, we can now specify a file's mode, uid & gid.
- For greater security, added new piktc-to-piktc_svc access parameters (e.g., kill_piktd_service, install_files_service) to PIKT.conf.
- For even greater security, implemented server-to-client, piktc_svc-to piktc_svc callback. A slave will not fulfill a service request unless and until a callback verifies that request correctly on the master.
- Added new piktc '-K' and '-R' options for killing and restarting piktc_svc.
- Added several dozen new piktc validation self-tests. Now, just about all piktc and piktc_svc functionality is put to the test.
- Lock files now record the program pids.
- Fixed a bug where, on Linux systems only, a 'piktc -cv' against the configs_samples would crash piktc.
- Fixed a possible pikt lockup on certain Solaris systems.
- Fixed a bug where extra blank lines were being added to programs exported from programs.cfg.
- Fixed a bug where programs with fully specified paths in programs.cfg were not listing properly.
- In the configure step, the procedure will abort and issue a warning if it fails to find certain essential components.
- Removed the old-style ("Plan B") 'make' and 'make check' procedure.
Release 1.3.1, 1999/04/27
- Fixed a bug where, in the case of error, fopen(), fclose(), popen() & pclose() were returning an incorrect value (they now return ERR).
- Fixed a bug involving incorrect $, $-1, $-2, ... dat assignments for lines ending in whitespace.
Release 1.3.0, 1999/04/20
- Made many, many small changes, and eliminated many OS-specific references in the code, in connection with the move to autoconf/automake.
- Introduced some new preprocessor directives: #def(ine), #undef(ine), #ifdef, #ifndef, #elifdef, and so on, permitting one to include/exclude config file lines depending on whether a logical flag is set or unset (e.g., #ifdef debug, or #ifndef verbose). Added also a new, seventh config file, defines.cfg, and the new -/+D
command-line option. - Eliminated most hard-coded limits, in some cases replacing arrays with linked lists. Removals include: MAXHOSTS, MAXALT, MAXPATH, etc.
- Implemented new -T (Test) and -G (debuG) command-line options. Now, one compile fits all.
- All paths are now determined at run-time, eliminating the need to declare them in either the Makefile or common.h. (and eliminating the need to specify $HOME anywhere).
- Rewrote the signal handlers in a better, more generic way.
- Put a wrapper around the piktc_svc RPC code, allowing us to perform initializations (signal handling, file paths, lock files, etc.) as with piktc, piktd & pikt.
- Fixed a bug where piktc might dump core when moving from 32 to 33 machines.
- Fixed a bug where, in the event of a parser error occurring #include'd files, the name of the errant file was not reported properly.
- Fixed a bug where nested #if's might reference an uninitialized outer #if.
- Fixed a bug involving undefined macros.
- Fixed a bug where the various PIKT binaries were calling the wrong usage() function.
- piktc used to dereference returned pointers from remote piktc_svc's without checking for NULL values first, possibly on occasion leading to program crashes. Now, in this situation, piktc reports "no response from server."
- Removed some unnecessary free()'s in the purge() function that were causing FreeBSD (only) to dump core.
- Improved the parser error diagnostics.
- MASTER, DOMAIN & ACCESS are no longer hard-coded, instead now specified in a new $HOME/etc/PIKT.conf file. (PIKT.conf replaces the earlier $HOME/etc/master file.)
- For piktc-to-piktc_svc connections, permitted non-root use.
- Implemented some lexer speedups and increased the size of the input buffer.
- Fixed numerous declarations that before generated compiler warnings.
- Made many other small tweaks/improvements.
Release 1.2.1, 1999/02/23
- By adding the chkpiktc_svc() function to processcmd() (which does an rpcinfo() call to the slave system) in piktc.c, we determine that piktc_svc is up before sending off any service requests to the slave system. Before the fix, piktc would sometimes dump core when attempting to communicate with a dead piktc_svc.
- Redid the lock file code as functions isolated in their own source file, lock.c.
- Reworked some of the waitpid(), daemon restart, and lock file logic to address some instances of hangs or multiple concurrent alerts and/or piktd's observed under unusual operating conditions. In particular, fixed a bug in statement.c's EXECWAIT where the parent case would prematurely break out of the switch.
- In all cases, killdaemon() now does a SIGKILL instead of a SIGTERM. (Instances were observed where SIGKILL failed to kill the piktd.)
- Fixed a bug where pikt, upon finding a blocking alert lock file, would call logexit(), which always removes the lock file. We now call logreturn() and exit() instead.
- In chkrequest(), when necessary we now convert the client IP address from network byte order to host byte order before logging.
- Moved the TAILCMD definition from a #define statement in scan.c to a new Makefile -D define.
- Introduced a new Makefile -D define, RPCPRGNUM, replacing the hard-coded RPC program number in piktc.x, and making this value available to the new chkpiktc_svc() function.
Release 1.2, 1999/02/07
- Increased the max array size to 65535.
- Solved the problem of occasional Linux hangs by invoking execl() instead of system() and modifying the waitpid() logic.
- For Linux, killdaemon() now does a SIGKILL.
- piktd now logs all alert runs (useful for debugging, also monitoring the state of the PIKT system).
- piktc_svc now removes the piktd.lock file for killdaemon() & restartdaemon().
- Revised how piktc handles the nice command filepath. Introduced the "nicecmd" keyword (while still retaining "nice" & "priority").
- Fixed a bug in expr.y involving exceptionally large numbers.
- Fixed a minor parser bug (in both piktc & pikt).
- Fixed a bug involving cfg file-ending #if-#endif's.
- Fixed a bug involving
- Fixed a bug involving the absence of a cfg file-ending EOL.
- In piktc, when installing alerts/programs/objects, we no longer first delete all such files on the target slave.
- Added #ifdef VERBOSELOG switch to expr.y to squelch those "resolving number as string" WARNING log messages.
- Made other minor improvements/changes.
Release 1.1, 1999/01/17
- Improved script parser with variable prescans (which not incidentally eliminates almost any remaining shift/reduce & reduce/reduce conflicts of real significance). This eliminates a potential problem with %foo/ data types.
- Added collision-preventing pikt & piktd locks.
- Enhanced piktc & piktc_svc logging: all service requests are now logged (providing an audit trail and contributing to greater security).
- Introduced $[0], $[1], ..., as variants of $0, $1, ..., permitting reference of such variables by means of for loops.
- Effectively removed the 512-character limit on most strings, except for input strings.
- Extensively revamped the sample config files (with a renewed emphasis on fixing problems, not just reporting them--e.g., autorestart of dead system processes).
- As much as practical, isolated operating system differences in separate include files.
- macros.cfg now has a much more complete set of Unix command definitions.
- Introduced the technique of autogenerating portions of config files. In connection with this, programmed a new filter utility, pikts, for stripping PIKT-style comments from config files.
- Introduced pre-defined, built-in macros: =pikthostname, =piktmaster, =pikthosts, & =piktopsystems.
- Put in place checks to prevent duplicate identifiers within a single config domain.
- Added $newline() & $script() (or: $alarm()) functions.
- "ALL" is now a command-line alias for "+A all +O all +P all +H all".
- Added a new piktc -C option: first piktc does its usual -c check, then for each alert it invokes pikt to do a more thorough syntax doublecheck.
- For alarm level, "urgent" is now a synonym for "alert"
- Added & support (correcting an oversight).
- Revised procid() & daemonpid() to give more accurate results.
- Revised hash() in ident.c.
- Since log & history files might contain sensitive info (e.g., passwords), we now auto chmod 600 all log & history files (before it was 640).
- Fixed a few minor bugs.
- Made other minor improvements.
Release 1.0, 1998/11/29
- Eased the restriction on the number of variables (increased the alarm variable limit from 31 to 255).
- Tightened up client-server (piktc to pikt_svc) security. The user now has the option either to permit piktc_svc to entertain service requests from outside the local network domain, or to restrict such requests to within the local domain.
- The user now has the option to hard-code the master control machine into the pikt_svc binary, or to specify that machine in the file =piktdir/etc/master.
- The precompiled binaries now look for the master control machine in the =piktdir/etc/master file, making them as safe to use as user-compiled binaries.
- Introduced piktc validation tests, both by adding a dotest stanza to the piktc Makefile and by devising new test alerts for the pikt dotest.
- Reworked/consolidated the dotest portion of the pikt Makefile.
- Implemented tweaks to improve chances for successful compiles.
- When doing a mass distribution of all program files to all systems (e.g., piktc -iv +P all +H all), programs outside the default =piktdir/lib/programs directory (i.e., those whose identifier in programs.cfg is an absolute path) might be removed if their install directory is NFS crossmounted to more than one system. This has been fixed.
- Added more and better source code documentation.
Release 0.97, 1998/11/15
- Added the #include preprocessor directive, allowing nested config file inclusion.
- Relaxed host/alias naming rules in systems.cfg, permitting fully qualified host names, and not incidentally allowing the master machine to control systems outside its immediate network domain. In conjunction with this, tightened up client-server security.
- Added a new field to alerts.cfg--priority/nice--allowing one to specify how much CPU priority to give to each alert.
- Relaxed the placement of the PIKT home directory. The user can now specify an alternate to /pikt (e.g., /usr/pikt or /usr/local/pikt) at compile time.
- Introduced #elsif & #elseif as synonyms for #elif, and #fi as an alternate form of #endif. Likewise, #freeze-#unfreeze are new synonymous forms of #fix-#unfix.
- Added the #pprocessid()/#pprocid()/#ppid() function for determining the PID of a process' parent.
- As much as possible, piktc now removes the piktc.lock file on errors or other abnormal program terminations.
- If a syntax error occured at the very end of a config file, piktc would give the line number correctly but erroneously point to the next file in the systems.cfg, macros.cfg, alarms.cfg, alerts.cfg, programs.cfg, objects.cfg sequence. This has been fixed.
- Various other minor improvements.
Release 0.96, 1998/10/31
- Now compiles successfully using the latest Solaris gcc 2.8.1.
- Added the #fix-#unfix preprocessor directives.
- Introduced nesting of #if-#endif's (up to sixteen levels deep).
- Relaxed stanza ident naming rules to allow hyphens/underscores/periods; and, in the case of program stanzas, forward slashes.
- Enabled program installations to directories other than the default /pikt/lib/programs.
- piktc now rm's the lock file on logexit().
- Minor bug fixes.
Release 0.95, 1998/10/17
- Initial public release.