2024-04-29 Richard Frith-Macdonald * EcCommand.m: Record the name and host of the Control server so that, if they are changed and the new values don't work, we can still try the old values. This copes with the situation where the processes start up using values from the NSUserDefaults system but then something in Control.plist overrides those values for the running process. 2024-02-06 Richard Frith-Macdonald * EcCommand.m: Combine code for 'quit' into a single method to try to consistently manage shutdown for both running processes and those in the queue attempting to restart. 2024-01-15 Richard Frith-Macdonald * EcProcess.m: Remove excess frame in stack trace log * EcCommand.m: Fixup handling of config update to use the common variables when configuring the Command server itself. 2023-10-07 Richard Frith-Macdonald * EcProcess.h: clarify comment a little * EcProcess.m: fix typo * EcCommand.m: Check that the Home configured in the launch information is (if defined) a relative path inside the ECCL user directory, that the Home directory exists, and that it is writable. Create a debug log of any problems. Terminate.m: Calrify comment 2023-07-25 Richard Frith-Macdonald * EcProcess.h: * EcProcess.m: * EcTest.m: Add -ecDidAwakenCompletely 2023-04-07 Richard Frith-Macdonald * ECCL.h: * EcCommand.m: * EcConsole.m: * EcControl.m: * EcProcess.h: * EcProcess.m: Add display options 'mark' and 'prompt' to control output format to make it easier to perform pattern matching when using Console in a script. 2023-03-10 Richard Frith-Macdonald * EcCommand.m: * EcControl.m: * EcProcess.h: * EcProcess.m: * Operators.plist: Change Blocked array to Commands array so we list commands that the operator is allowed to use and default (where a Commands array is defined) to blocking all commands. 2023-03-08 Richard Frith-Macdonald * EcCommand.m: * EcControl.m: * EcProcess.h: * EcProcess.m: * Operators.plist: Implement a Blocked array to list the commands that an operator should not be allowed to perform. 2023-02-14 Richard Frith-Macdonald * EcProcess.m: When using the 'defaults' command from the Console, writing or deleting a key without the prefix should implicitly alter the default for both the prefixed and unprefixed versions of the key. This ensures that any low level code that does not use prefixes to access the defaults will still read the updated value. 2023-01-21 Richard Frith-Macdonald * EcCommand.m: Allow SetE and AddE configuration for the Command server to set up the default environment variables to be used for launched child processes. EcProcess.m: If MemoryMaximum is set to a value less than the initial memory usage of the process plus 20%, it is ignored but an alarm is raised. Once the configuration is fixed the alarm is cleared. 2023-01-13 Richard Frith-Macdonald * GNUmakefile: bump version to 1.2.0 for release 2023-01-03 Richard Frith-Macdonald EcCommand.m: Fix clearing of alarms about a process when it becomes stable. Implement 'alarms' and 'clear' commands like those in client processes. 2022-11-14 Richard Frith-Macdonald * EcProcess.h: * EcCommand.m: Add new method of Command server (-restart:reason:) to requst that it restart an individual process. 2022-11-11 Richard Frith-Macdonald * EcCommand.m: Fix a few incorrect checks for TLS certificate presence. 2022-11-09 Richard Frith-Macdonald * Control.plist: * EcCommand.m: * EcProcess.m: More TLS cleanup and support for setting TLS options in the Launch configuration in Control.plist 2022-11-07 Richard Frith-Macdonald * EcControl.m: Make Control specific config clearer and avoid polluting server specific config space with it. * EcCommand.m: Pass along more TLS control vlaues to clients * EcProcess.m: Clean up setting TLS configuration, fix to be present in all necessary code paths, add support for GSTLSVerify and GSTLSServerName in process config, so we can control inter process verification. 2022-11-04 Richard Frith-Macdonald * configure.ac: check for crypt * config.h.in: regenerate * config.make.in: regenerate * configure: regenerate * EcProcess.h: remove -cmdOperator: method. * EcProcess.m: remove -cmdOperator: method. * EcControl.m: Implement hashed passwords but allow password=username in plaintext for backward compatibility. 2022-11-04 Richard Frith-Macdonald * EcCommand.m: When a process shuts down due to a configuration error autolaunch is deferred for 5 minutes because human intervention is unlikely to be rapid (thereiis no point repeatedly trying to autolaunch a misconfigured process). 2022-11-01 Richard Frith-Macdonald * EcAlarmDestination.h: * EcAlarmDestination.m: Keep track of the alarm thread and signal it to flush alarms on shutdown. 2022-10-10 Richard Frith-Macdonald * EcProcess.m: Do not override signals which are intended for applications to use (SIGUSR1 and SIGUSR2). 2022-10-05 Richard Frith-Macdonald * EcConsole.m: Use SUDO_USER preferentially as username of person executing command. This is supplied when the command is run via sudo. 2022-07-12 Richard Frith-Macdonald configure.ac: configure: config.h.in: EcProcess.m: Check for valgrind and, if availeable, log when a 'memory' command is executed so that valgrind logs can be matched to events between successive memory check commands. 2022-07-11 Richard Frith-Macdonald * EcConsole.m: Exit immediately after registration with Control server is rejected (don't re-prompt for password before exit). 2022-06-17 Richard Frith-Macdonald * EcProcess.m: Intercept lock error handling and, in the case of a deadlock, raise an alarm before calling the normal handler to log and stop the thread. 2022-06-07 Richard Frith-Macdonald * GNUMakefile: Fix to supply local flags to build libraries * EcConsole.m: Add EC_LOGIN_NAME define set to 1 to permit the entry of a login name with a 'Login' prompt. Use the EffectiveUser default or the name of the user running the process as the default name to login with. If EC_LOGIN_NAME is not set then the name of the user running the process is used unconditionally. 2022-02-28 Richard Frith-Macdonald * EcCommand.m: When building config for a process, only count the part of a process name after the last hyphen as an instance ID if it is entirely composed of digits. 2022-02-08 Richard Frith-Macdonald * EcCommand.m: * EcProcess.m: Add EncryptedDO boolean user default value to turn on TLS for distributed objects (if the gnustep-base library supports it). This is used only if TLS_DISTRIBUTED_OBJECTS is NOT defined at compile time. 2022-02-07 Richard Frith-Macdonald * EcCommand.m: Use alarms rather than alerts to report lack of disk space or inodes. 2021-12-22 Richard Frith-Macdonald * EcControl.m: Add AlamrFilter as a config option to provide a regular expression to filter out alarms to be ignored. 2021-12-19 Richard Frith-Macdonald * EcAlarmDestination.h: * EcAlarmDestination.m: * EcControl.m: Add (-latest:) method to find the most recent match for an alarm in the queue/active/cleared data structures. Use it to filter out duplicate clears. 2021-12-16 Richard Frith-Macdonald * EcCommand.m: * EcControl.m: Make -alarm: method run in main thread so that bundles loaded and running on other threads can raise?clear alarms safely. 2021-12-10 Richard Frith-Macdonald * EcProcess.h: * EcCommand.m: * EcControl.m: New -clear: method in Command server to clear an alarm in one of its clients. Changed the Control server so that the 'suppress' command clears an alarm locally (suppressing its effects by leaving it raised in the originating client), while the 'clear' command clears the alarm in the originating client. 2021-09-13 Richard Frith-Macdonald * EcCommand.m: * EcProcess.m: * EcTest.m: Use TLS for DO only if TLS_DISTRIBUTED_OBJECTS is defined. 2021-09-03 Richard Frith-Macdonald * EcCommand.m: When deleting old logs, consider directories from all time rather than just those for the last year. This prevents logs from being left undeleted when the DeleteLogsAfter config is changed from a value longer than a year to a shorter value. 2021-06-30 Richard Frith-Macdonald * Command.m: * Console.m: * ECCL.h: * EcConsole.m: * EcProcess.m: Fixups for Console to return error status if it can't connect to the Control server or if the Control server rejects its login attempt. 2021-06-24 Richard Frith-Macdonald * EcProcess.m: * EcTest.h: * EcTest.m: Update for Distributed Objects over TLS API changes and to add EcTestShutdownByName() function to shut down a client process. 2021-06-23 Richard Frith-Macdonald * EcCommand.m: * EcProcess.m: * EcProcess.h: When we restart because MemoryMaximum is reached/near, use termination status -5. Raise an alarm to log this in the Command server. Change unregistering so that it reports the status the process intends to exit with. The Command server can then use this information in cases where the client process is not one of its children. 2021-06-20 Richard Frith-Macdonald * EcCommand.m: * EcProcess.m: * EcTest.m: * Control.plist: Improve building when TLS stuff is not available. Add code to allow a process launch configuration to contain a HungTime setting for automatic restart of apparently hung processes. Add HungTool configuration to specify a tool to be executed to gather information about a hung process before it is restarted (if not defined, the gcore tool is used). Add Ping configuration to control how long a process needs to be umresponsive to pings before it is considered hung. 2021-06-18 Richard Frith-Macdonald * EcCommand.m: * EcProcess.m: Pass TLS information from Command server to clients via pipe, so the clients can use a key/certificate shared with the Command server to encrypt communications. This avoids each client process having to do expensive generation of a key. 2021-06-17 Richard Frith-Macdonald * EcCommand.m: * EcProcess.m: Change the way the Command server launches subprocesses, so that the key/value pairs normally passed as process arguments to populate the NSUserDefaults NSArgumentDomain are mostly passed via a pipe to STDIN of the subprocess. This keeps the argument list visible to commands like 'ps' small and readable, and allows us to pass hidden values (eg encryption keys) to the subprocess. 2021-01-15 Wolfgang Lux * EcProcess.m(cmdMesgmemory:): Fix output of 'memory all' command to really report all allocations. 2020-04-06 Richard Frith-Macdonald * EcControl.m: Fix bug with AlertConfig.plist; when the file is not provided the value of the Alerter key in the Control (keyed on any empty string) area in Control.plist should be used, but instead it was failing. 2020-04-02 Richard Frith-Macdonald * EcCommand.m: * EcLogger.m: * EcProcess.h: * EcProcess.m: Remove obsolete methods for registration/unregistration. Change code to refrain from registering with Command server if in the process of shutting down, and to refrain from attempting an unregistration if not already registered. The hope is that this will prevent a race condition where loss of connection to the Command server can cause a shutdown and re-register during the shutdown fooling the Command server into thinking the process is still running. 2020-03-23 Richard Frith-Macdonald * EcProcess.h: * EcProcess.m: Add protocols to allow one process to register with another as a client to whom config should be forwarded. This allows closely cooperating processes to be aware of each-other's config changes. 2020-01-27 Richard Frith-Macdonald * EcAlarmSinkSNMP.m: * EcCommand.m: * EcLogger.h: * EcLogger.m: * EcProcess.h: * EcProcess.m: Changes to formally deprecate cmdAlert:... and cmdError:... 2019-11-01 Richard Frith-Macdonald * EcCommand.m: Restructure so that all ways we can be informed that a task has shut down/ended funnel into the same few methods to avoid code duplication and errors where different code paths treat things differently. All unregistration into one method (with options for a clean unregistration and a simple loss of connection ... dirty). Final task cleanup/restart code in one method called on notifiction of task termination or (if we don't have an NSTask object because the process was not launched by the Command server) simulated when the process unregisters or the connection is lost. Add comments. 2019-10-29 Richard Frith-Macdonald * EcClientI.h: * EcClientI.m: Remove a couple of methods only used by EcCommand. * EcCommand.m: Add more information to launch info and use it to ensure that suspended tasks remain suspended if they crash. Also check for task completion in case a task crashes before it can establish a DO connection back to the Command server. 2019-10-05 Richard Frith-Macdonald * EcLogger.m: * EcProcess.m: The debug command at the Console should report when debug (STDERR) is suppressed. 2019-10-04 Richard Frith-Macdonald * EcCommand.m: * EcClientI.m: When we ask a client to terminate, turn off restarting flag. When a client has restarted, turn off restarting flag. 2019-10-03 Richard Frith-Macdonald * EcCommand.m: When processes shut themselves down gracefully, don't relaunch them unless they are either configured to autolaunch or are being restarted. 2019-09-25 Richard Frith-Macdonald * EcCommand.m: Rename launch timeout methods to avoid conflict with EcProcess timeouts and make code clearer. 2019-09-25 Wolfgang Lux * EcCommand.m: Fix bugs that prevent the status command from working for abbreviated process names. 2019-08-23 Richard Frith-Macdonald * EcCommand.m: When checking to see if a process is alive/responding, set a short timeout for the DO request to get a proxy to the process so that we don't hang waiting for a response that never comes. 2019-08-11 Richard Frith-Macdonald * EcProcess.h: * EcProcess.m: Add MemoryAlarm config to control at whaich level of 'severity' a process actually starts raising alarms about memory usage. 2019-08-10 Richard Frith-Macdonald * EcMemoryLogger.h: Change protocol to pass more information. * EcProcess.h: Update comments/documentation. * EcProcess.m: Revise memory usage code to Provide resident and data memory stats to the memory logger Refrain from generating alerts (remove MemoryIncrement and MemoryPercent settings) having a base memory calculated simply as the average usage after ten minutes, plus 20 percent. Generate alarms for memory usage between the base/allowed value and the maximum allowed value. Add MemoryIdle setting to specify an 'idle' hour during the day in which the process will restart if it's near maximum allowed memory (in the critical alarm range). Change the status reporting to improve readability. 2019-08-06 Richard Frith-Macdonald * EcCommand.m: Prevent repeated clears of alarms for newly connected clients. Use a flag to record that a client is considered 'stable' and has already had alarms cleared. 2019-07-15 Richard Frith-Macdonald * EcProcess.h: * EcProcess.m: Change -ecWillQuit: behavior so that repeated calls are ignored rather than causing the process to abort; the risk of accidentally aborting during a clean shutdown (effectively turning the shutdown into a crash) is greater than any utility in having quit force an abort (the OS 'kill' command is adequate for that) of any process still capable of responding to the request over Distributed Objects. Added method to see how long we have been quitting, and method to set how long we are allowed to quit. 2019-07-12 Richard Frith-Macdonald * EcProcess.h: * EcProcess.m: Have ecHandleQuit call ecDidQuit in the main thread. That way an application can make the handling run in one thread, and still have the final shutdown done in the main thread. 2019-05-31 Richard Frith-Macdonald * EcProcess.h: * EcProcess.m: Add EcMemoryTypeto control what type of memory usage we track: Total, Resident, or Data (stack and heap). 2019-05-31 Richard Frith-Macdonald * EcControl.h: * EcControl.m: * EcProcess.h: * EcProcess.m: Tweaks to allow a new Command process to ask running clients to reconnect to it immediately, so that it doesn;t try to launch client processes unnecessarily. 2019-05-28 Richard Frith-Macdonald * EcControl.m: Stream alarm information to Console for Wolfgang. 2019-05-27 Richard Frith-Macdonald * EcUserDefaults.h: * EcUserDefaults.m: Extend API to allow temporary defaults overrides to have a specific limited life span (an interval after which they can be purged from the defaults database). * EcProcess.h: * EcProcess.m: Change error about long lived defaults to be warning. Change 'defaults' command to support specific lifetime settings from 1 to 168 hours. Add APIs for logging exceptions and other unexpected software/data errors using NSLog() and alarms. Add convenience macros for logging exeptions or code/data errors. 2019-05-23 Richard Frith-Macdonald * EcAlerter.m: Allow dot to match line separators so we can readily work with multi-line text. 2019-05-22 Richard Frith-Macdonald * EcAlerter.m: Add capture group support for Extra1 and Extra2 2019-05-21 Richard Frith-Macdonald * EcCommand.m: For 'quit all' fix code to wait 35 seconds before sending a second quit to recalcitrant processes. For 'restart all', do not send a second restart to processes as that would force a quit in the middle of shutting down cleanly, instead wait up to 35 seconds for all processes to shut down. 2019-05-14 Richard Frith-Macdonald * EcProcess.h: * EcCommand.m: Replace -terminate with -terminate: method. * Terminate.m: Extend termination to control the time allowed for the graceful shutdown (default to 30 seconds). 2019-05-14 Richard Frith-Macdonald * EcProcess.h: * EcCommand.m: New method to return count of active clients. * Terminate.m: New help output and option to wait until Command server shuts down (printing out number of active clients). 2019-05-09 Richard Frith-Macdonald * EcCommand.m: Add status command for daiagnostics. 2019-05-05 Richard Frith-Macdonald * EcCommand.m: Rewrite code for launching/relaunching processes so that a crashing process will not get relaunched too frequently (eg filling a disk with core dumps). We employ a fibonacci sequence to produce increasing delays between successive launch failures (starting with a tenth of a second). This sequence is not reset simply because a process launches successfully, the process must also stay alive and respond to a few 'pings' before it is considered a successful launch causing the inter-launch delay to be reset. Also, from the second relaunch onwards in any sequence of failures, the -CoreSize 0 arguments are passed to the lanched process to tell it ti suppress core dumps. 2019-03-02 Richard Frith-Macdonald * EcProcess.h: * EcProcess.m: Add KillDebugOutput option to configure a process to avoid logging on systems where logged information should not be available for security reasons. This option is not overidable from the Console. 2019-02-15 Richard Frith-Macdonald * EcControl.m: If we get an alarm clear before we have reported the original alarm, we should report the alarm before reporting the clear. * EcCommand.m: Be slower to clear alarms on client startup; in case it's just going to crash fairly immediately. 2019-02-11 Richard Frith-Macdonald * EcCommand.m: Relaunch process more rapidly, turn off alarm coalesce. * EcControl.m: Turn off alarm coalesce * EcProcess.[hm]: Expose the alarm destination object. 2019-02-11 Wolfgang Lux * EcAlerter.m: Define Regex class as a simple wrapper around NSRegularExpression. 2019-02-08 Wolfgang Lux * EcAlerter.m: Only ignore invalid rules in setRules: and update the cached rules with the remaining rules. 2019-02-08 Richard Frith-Macdonald * EcCommand.m: Allow the Command server to launch multiple tasks at the same time. Provide LaunchLimit config to specify the maximum number of concurrent launches (in case launching a large number of processes all at once would overload the hardware). Once the limit of launching tasks is reached, new tasks should be launched as and when launching tasks complete their startup and register with the Command server. Add suspend and resume command to control whether the Command server will actually launch/relaunch tasks, along with a LaunchStartSuspended user default to control whether launching starts as soon as the Command server starts up (by default launching is not suspended on startup). 2018-12-11 Richard Frith-Macdonald * EcCommand.m: Improve alarm generation to cover the case of hung processes better. 2018-11-23 Richard Frith-Macdonald * EcProcess.m: Remove excess comma which was messing up the printf formatting of the output of the --help option. 2018-11-22 Richard Frith-Macdonald * EcCommand.m: Report host name when we report that there are no clients. * EcControl.m: When a 'tell' command is not sent to a specific host, it should go to all the hosts, not to a random one. 2018-11-09 Wolfgang Lux EcProcess.m: Call ecAwaken only after registration at the name server was successful. 2018-10-24 Richard Frith-Macdonald * EcAlerter.m: Fix off by one error in getting string after colon. * EcProcess.m: Correct the number of hex digits we say we want when reading in an encryption key. * EcControl.m: Improve logging of Console commands and add casts and comments to avoid compiler warnings about using an NSHost as a dictionary key. * Control.m: Change the name of the encryption key we prompt for, from 'EcControlKey' to 'master encryption key'. 2018-07-30 Richard Frith-Macdonald * EcProcess.h: Add LT_CONSOLE for messages to be reported in the console and also be logged to file as an audit log. * EcProcess.m: Add LT_CONSOLE implementation/ * EcCommand.m: Use LT_CONSOLE for messages about process start/stop. * EcControl.m: Add option to turn on/off audit log reporting in Console and make it off by default, so we only see audit style logs specifically intended for the Console 2018-06-26 armando.pesentigritti@theengagehub.com * EcControl.m: Make some events audit logs where they might be security or system stability related. 2018-06-25 Richard Frith-Macdonald * EcAlerter.h: * EcAlerter.m: Extend to permit (simple) handling of audit logs as well as error/alert/alarm. New -handleAudit:withHost:andServer:timestamp: method. 2018-06-24 Richard Frith-Macdonald * EcProcess.h: * EcProcess.m: Change quit API to handle the quit in the main thread consistently and also provide a mechanism to ensure that handling a quit does not block other methods on which graceful shutdown depends. 2018-06-12 Richard Frith-Macdonald * EcClientI.h: * EcClientI.m: * EcCommand.m: * EcControl.m: * EcProcess.m: When we restart clients, store that information so that, when the client unregisters, we can immediately add them to the set of processes to be launched again (and ensure the next launch attempt is in 0.5 of a second or less). Improve audit messages for restart. Remove restart command from individual processes so that it is reliably done from Command server. 2018-05-10 Richard Frith-Macdonald * Control.m: * EcControl.m: * Command.m: * EcCommand.m: On restart of the Command server, lanch the new copy after half a second rather than the normal 30 seconds. 2018-04-05 Richard Frith-Macdonald * EcCommand.m: Do not try to compress old debug files if there is not enough space on the filesystem for both the uncompressed and compressed versions to co-exist while compressing. Instead delete the file and generate an error message. 2018-03-08 Richard Frith-Macdonald * EcControl.m: Allow EcControlKeyTest to be defined to supply a key without requring it to be entered from the terminal. This is solely to enable automated testing of systems. 2018-03-02 Richard Frith-Macdonald * Control.m: * EcControl.m: * EcProcess.h: * EcProcess.m: Allow EcControlKey to be an MD5 digest of the expected key, so we can easily tell if the expected key was entered correctly. Expose method to request entry of a hexadecimal key, with checking against an MD5 digest of the expected value. 2018-02-23 Richard Frith-Macdonald * AlarmTool.m: Add default values for arguments, suitable for sending a test/dummy alarm as an example. * Control.m: * EcControl.m: * ECCL.h: Add support for EcControlKey to force a value to be entered from the terminal and have that value made available to all processes in the cluster (eg so they can use a common encryption key not from disk). 2018-02-20 Richard Frith-Macdonald EcAlerter.h: EcAlerter.m: New type 'Raise' to match only an alarm being raised. Behavior of 'Alarm' changed to match both 'Raise' and 'Clear' (and reminders as long as ReminderInterval matches). 2018-01-05 Richard Frith-Macdonald EcProcess.h: EcProcess.m: New -ecRestart: method called when we pass the maximum memory usage limit or when a restart command is issued. The default implementation calls the -ecQuitFor:status: method using a status of minus one so that the Command server will restart the program after it shuts down. EcCommand.m: New Launch option 'Time' to specify how long after a crash we attempt to re-start an autolaunched program. Control.plist: Document launch options better 2018-01-04 Richard Frith-Macdonald EcProcess.h: Improve comments. EcProcess.m: Avoid warning about unknown connection on shutdown. Rewrite config update code to catch exceptions, ensure that methods are called in the correct order so that -cmdUpdated is always last, and ensure that -cmdUpdated is called when a local defaults update occurs. Also, ignore config updates while process is quitting. 2017-12-04 Richard Frith-Macdonald EcCommand.m: Change default period to start compressing logs to 7 days and default for starting del;eting logs to 180 days. 2017-11-02 Richard Frith-Macdonald * EcProcess.h: * EcProcess.m: New methods for handling clean quitting with abort if it takes too long. Fix the directory in which nightly archived logs are placed. 2017-09-18 Richard Frith-Macdonald * EcProcess.m: Fix for repeated log archiving on startup. 2017-08-09 Wolfgang Lux * EcProcess.m(ecNewDay:): Fix bug where archiving was no longer run every day unless some defaults had been changed locally. 2017-06-23 Richard Frith-Macdonald * EcCommand.m: * EcControl.m: * EcProcess.h: * EcProcess.m: Replace cmdArchive: with ecArchive: changing the log file archiving model to archive files primarily based on their last modification date. Fixes the bug where files were archived to a folder with the wrong date on startup, and simplifies archiving code generally. Move startup of timeouts to -ecRun so that they won't occur until after all initialisation. Add -ecAwaken, -ecDidAwaken, and -ecConfigurationError: to make it easy to initialise stuff at the start of -ecRun and to ignore config updates before that happens. Improve diagnostic logging for registration failure. 2017-03-06 Richard Frith-Macdonald * EcAlarmDestination.h: * EcAlarmDestination.m: Change signature of -setDebug: method to be consistent with other classes using a method of the same name. 2017-01-30 Wolfgang Lux * EcAlarmSinkSNMP.m (pollHeartBeat_handler): Don't use memdup, which is replaced by netsnmp_memdup with a different interface in net-snmp 5.7.3. 2016-07-20 Wolfgang Lux * EcConsole.m (-ecRun): Pass distantFuture to -runMode:beforeDate: to prevent returning immediately from the run loop after recent gnustep-base changes. 2016-06-09 Richard Frith-Macdonald * EcControl.m: Fix bug where alerter config was not always updated when changed, and where Control server defaults were lost during alerter updates. 2016-05-18 Richard Frith-Macdonald * EcProcess.m: When changing log files on a nightly basis, don't close descriptor 2 (stderr). Instead open the new log and use dup2() to switch the new log to be stderr. Wolfgang spotted that the existing code allowed another thread to ned up using the descriptor if it opened a device in the gap between the old log file being closed and the new one opened. 2016-01-21 Richard Frith-Macdonald * EcAlarm.h: * EcAlarm.m: * EcAlarmDestination.m: When coalescing alarms, allow a clear and alarm to cancel each other out, but only if the alarm is not yet active (only queued). Allow alarms to be set to persist in the queue for up to 255 seconds to allow more coalescing. This lets us raise an alarm which, if cleared within the delay period, will never be forwarded anywhere. 2015-11-18 Richard Frith-Macdonald * EcProcess.m: Improve output when changing/reading defaults, and restore tolerant behavior of doing a read by default. * ECAlerter.h: * ECAlerter.m: Remove obsolete methods, and a 'Quiet' configuration option, and log alarms (and their disposition) by default. 2015-11-18 Niels Grewe * EcProcess.m: Fix argument validation when reading/writing defaults. 2015-10-28 Niels Grewe * EcConsole.m: Use readpassphrase() instead of getpass() if available. * configure.ac * config.make.in: Test for readpassphrase in the C library and libbsd, link if needed. * configure: * config.h.in: Regenerate 2015-10-15 Richard Frith-Macdonald * EcTest.h: * EcTest.m: Add new function to shut down a process via DO connection. 2015-10-14 Richard Frith-Macdonald * EcUserDefaults.h: * EcUserDefaults.m: New -revertSettings method to revert all local config settings. * EcProcess.h: * EcProcess.m: Change cmdDefaultDbg to cmdBasicDbg to avoid confusion of the debug mode with default settings. Add 'defaults revert' command for Console to use. 2015-10-09 Richard Frith-Macdonald * EcProcess.h: declare new -launch: method * EcCommand.m: implement -launch: method * EcTest.m: use -launch: when asked to get a connection to a process. 2015-08-25 Richard Frith-Macdonald * AlarmTool.m: * LogTool.m: * Terminate.m: Set up well known hosts at start. 2015-07-21 Richard Frith-Macdonald * EcProcess.h: * EcProcess.m: Be more rigorous about checking instance id values. Ignore anything other than a non-negative integer instance ID. 2015-07-15 Niels Grewe * EcMemoryLogger.h * EcProcess.m: Add the ability to load a bundle to export memory logs to. Configured using the 'MemoryLoggerBundle' default key. 2015-07-13 Richard Frith-Macdonald * EcProcess.h: * EcProcess.m: Restore lost effect of -ecNotLeaked to moderate changes in our idea of when we should generate a warening about potential leaks 2015-07-08 Richard Frith-Macdonald * EcProcess.h: * EcProcess.m: Allow 'memory current' to list current object allocation values. Report time at which memory stats are generated. For allocation changes, also show time of previous report. 2015-07-08 Richard Frith-Macdonald * EcProcess.h: * EcProcess.m: Allow the memory monitoring configuration to be set from the Console via the 'memory' command. Improve the help text. Improve the info provided in the debug/error reports. 2015-07-06 Richard Frith-Macdonald * EcProcess.h: * EcProcess.m: Various tweaks to leak alert generation. Change default initial thresholds and change increments after an alert to be based upon the *peak* usage at the point when the alert was generated, rather than on the previous threshodld. This reduces the number of alerts in a process whose memory usage grows rapidly on startup. 2015-07-03 Richard Frith-Macdonald * EcProcess.h: * EcProcess.m: Revamp memory handling code to work with total process memory rather than heap size. Report usage in same units as the 'ps' command. 2015-06-17 Richard Frith-Macdonald * EcAlarmSinkSNMP.m: Fix stupid mistake setting notificationID. 2015-06-16 Richard Frith-Macdonald * EcAlarmSinkSNMP.m: Fix error in alarms table oid length. * EcCommand.m: Fix error in compression of debug logs. 2015-05-31 Richard Frith-Macdonald * EcLogger.m: When logging to stderr, use lock to synchronise with logs produced by gnustep-base NSLog(). 2015-05-29 Richard Frith-Macdonald * EcAlarmSinkSNMP.m: log SNMP errors via the main logging mechanism or NSLog. * EcControl.m: fix failure to perform includes in some cases. * EcAlerter.m: tidyups 2015-03-26 Richard Frith-Macdonald * Control.plist: * EcCommand.m: * EcProcess.h: * EcProcess.m: New options for dealing with I/O. In EcProcess we can set EcKeepStandardError to keep the stderr stream separate from the debug logging file. When a process is launched from the Command server, we can define KeepStandardInput, KeepStandardOutput, and KeepStandardError flags in the task info to stop the standard streams from being closed. 2015-03-19 Richard Frith-Macdonald * EcProcess.m: * EcAlerter.m: Use milliseconds in logging timestamps. 2015-02-02 Richard Frith-Macdonald * EcAlerter.h: Add options for time-limiting rule activity * EcAlerter.m: Implement those options * EcProcess.m: Put debug logs in 'DebugLogs' by default. * EcCommand.m: Put our logs in 'Logs' by default. * EcControl.m: Put our logs in 'Logs' by default. Change default logging locations. *GNUmakefile: bump version for release 2015-02-02 Richard Frith-Macdonald * EcAlarmDestination.m: When coalescing alarms, do not coalesce a clear with anything other than an earlier clear for the same event. We do not want to risk forwarding a clear without a preceding event raising the alarm. 2015-01-26 Richard Frith-Macdonald * GNUmakefile.preamble: fixup gcc flag filtering * EcClientI.h: EcClientI.m: * EcCommand.m: * EcControl.m: * EcProcess.h: * EcProcess.m: Implement forced kill by -terminate method if a client fails to close down gracefully within 30 seconds. 2015-01-19 Wolfgang Lux * GNUmakefile.preamble: Fix wrong option letter in sed command. 2015-01-15 Richard Frith-Macdonald * EcAlarmDestination.m: When shutting down, only wait for the background thread first time ... otherwise we could get into a recursive loop calling the -shutdown method while waiting for shutdown to complete. 2015-01-07 Richard Frith-Macdonald * configure.ac: * GNUMakefile.preamble: Filter out fstack-protect-strong from snmp cflags because clang doesn't support it. 2014-11-28 Richard Frith-Macdonald * EcAlarmSinkSNMP.m: Fix incorrect OID setup for alarm table in SNMP agent. 2014-11-27 Richard Frith-Macdonald * EcUserDefaults.m: The -doubleForKey: method was commented out! Restore it. 2014-11-26 Richard Frith-Macdonald * EcProcess.m: Make -cmdLastIP, -cmdLastOP (and their setters) thread-safe. 2014-11-02 Richard Frith-Macdonald * EcProcess.h: * EcProcess.m: Add method to register a user default / configuration key to have updates for a default automatically trigger a method to handle it, and to provide 'help' documentation for command line arguments. * EcCommand.m: Implement 'restart' command for when we want to quit a server and have it start up again. 2014-11-01 Richard Frith-Macdonald * EcProcess.m: Check for descriptor leaks at 1 minute intervals, and shut down if EcDescriptorsMaximum is exceeded or if the process runs out of descriptors. 2014-10-23 Richard Frith-Macdonald * EcCommand.m: * Control.plist: Add LaunchOrder config to control the order in which services are handled by the Command server. By default we now do them in lexicographic order rather than leaving the order undefined. 2014-09-16 Richard Frith-Macdonald * EcCommand.m: Simplify handling of loss of process and configuration error alarms. Clear such alarms when we receive a ping from the process. EcLogger.[hm]: Add documentation in the header, plus a new method to make subclassing a bit easier. Fix bug in naming of config keys. 2014-09-04 Richard Frith-Macdonald * EcProcess.m: Fix missing clear after unable to register with name server. 2014-09-02 Richard Frith-Macdonald * EcControl.m: If a Command server on a host registers and we already have a Command server registered, have the new registration replace the old one rather than rejecting it. The aim is to handle a race condition where a Command server is re-registering after some network problem and the old registration is still in place. * EcAlerter.m: Add more debug logging to show what elarms/alerts are handled by what rules. 2014-07-30 Richard Frith-Macdonald * EcProcess.h: * EcProcess.m: Added +ecSetup method to create/initialise the singleton instance. 2014-07-01 Richard Frith-Macdonald * Command.m: * Control.m: Implement auto-restart ... Run a 'Watcher' process as a daemon with the actual server as a subtask. If the subtask dies with a status other than zero, restart it after a 30 second delay. 2014-06-20 Richard Frith-Macdonald * EcProcess.m: Make sure the NSHost cache is flushed at least once per minute (by -ecNewMinute:) so that any stale information is replaced reasonably promptly. 2014-05-16 Richard Frith-Macdonald * EcAlarmDestination.m: Perform all connection operations in main thread (forwarding etc) and ensure that we run the current run loop while waiting for startup and shutdown. * EcLogger.m: Use floating point flush interval for modern systems which run faster and might want to flush more than once per second. * EcProcess.m: Don't start handling timeouts until the process is actually running (so we don't get any during initialisation of the class). * GNUmakefile: bump subminor version number for release Version 1.1.3 release 2014-05-14 Richard Frith-Macdonald * EcAlerter.m: fix bug processing alert emails * GNUmakefile: bump subminor version number for release Version 1.1.2 release 2014-05-08 Richard Frith-Macdonald * EcProcess.m: add memory commands 'class' and 'list' to record allocated instances of a specific class and list them... another memory debugging option. * GNUmakefile: bump subminor version number for release Version 1.1.1 release 2014-05-08 Richard Frith-Macdonald * GNUmakefile: bump subminor version number for release Version 1.1.0: scripting and alarm improvements. 2014-04-27 Richard Frith-Macdonald * EcProcess.h: * EcProcess.m: Add +ecInitialDefaults to allow subclasses to easily set and modify default configuration values. 2014-03-28 Richard Frith-Macdonald * EcTest.h: * EcTest.m: * EcProcess.m: * GNUmakefile: Add a few simple functions to connect to a process, set/get the config of a running process, and issue commands (and get back the response) so that regression test software can relatively easily exercie an entire system. 2014-03-26 Richard Frith-Macdonald * EcControl.m: Add option to allow any user to log in. 2014-03-25 Richard Frith-Macdonald * EcConsole.m: Don't read from stdin whn in non-interactive mode * EcProcess.m: Allow up to ten seconds to Contact Command server on startup. 2014-03-18 Richard Frith-Macdonald * ECCL.h: * EcCommand.m: * EcConsole.m: * GNUmakefile: Extend Console tool to support non-interactive use for scripting etc. 2014-02-28 Richard Frith-Macdonald * EcControl.m: * ECCL.h: Extend system so the Terminate tool can contact the Control server and shut down the entire cluster rather than just a singlee host. 2014-02-22 Richard Frith-Macdonald * EcAlarmDestination.h: * EcAlarmDestination.m: When clearing an alarm, forward the clear to the next destination unless we have already done so. When unmanaging a managed object, remove internal records of cleared and active alarms for that managed object. 2014-01-16 Richard Frith-Macdonald * EcProcess.m: * EcAlarmDestination.h: * EcAlarmDestination.m: Remove experimental force clear method ... obey the KISS rule and stick to using domanange and unmanage methods for clearing on startup/shutdown. People wanting alars which persist after process shutdown should create a secondary managed object for them. 2013-11-04 Richard Frith-Macdonald * EcProcess.m: * EcCommand.m: * EcClientI.h: * EcClientI.m: * EcAlarmDestination.h: Change error/alert logs to use alarm mechanism instead. 2013-08-20 Richard Frith-Macdonald * EcConsole.m: Ignore exception printing message on shutdown. * EcProcess.m: Improve SIGHUP handling. Add new option for memory usage logging and increase default alert increments again. Make name of allowed usage config consistent with other names. Add option to quit process when usage gets too high. 2013-08-05 Richard Frith-Macdonald * AlarmTool.m: Tool to raise/clear alarms * LogTool.m: Tool to generate logs * Terminate.m: Cleanups * GNUmakefile: Build new tools * ECCL.h: Document new tools 2013-07-12 Richard Frith-Macdonald * EcProcess.h: New method to get EC user directory * EcProcess.m: implement new method * EcCommand.m: Add simple auto compress/delete of logs CompressLogsAfter and DeleteLogsAfter control this. 2013-07-06 Richard Frith-Macdonald * EcConsole.m: Strip spaces from command line to avoid a space at end of line causing the line terminator to be treated as an argument. 2013-04-07 Richard Frith-Macdonald * EcControl.m: * EcAlerter.h: * EcAlerter.m: * Alaertconfig.plist: More restrucuturing plus addition of rules options for improving formatting of output messages and handling alerts due to alarms. Add some example alert configuration. 2013-04-06 Richard Frith-Macdonald * EcControl.m: * EcAlerter.h: * EcAlerter.m: Restructure for better integration of alrm system with alert system. Send critical alarms as alerts and major alarms as errors. Repeat delivery of outstanding critical/major alarms periodically (still need to make this period configurable). Send clear message when a major/critical alarm is cleared, trying to get mail clients to replace original email with the clear so the recipient can tell a problem has gone away. 2013-04-05 Richard Frith-Macdonald * EcControl.m: Fix to get 'control on ...' to work while connected to a specific server. 2013-03-22: Niels Grewe * EcControl.m: Fix bug that could remove a alerter when it was still needed. 2013-03-18: Niels Grewe * EcAlerter.h * EcAlerter.m: Rearrange and expose a few methods so that subclasses can easily inject alert rules. * EcControl.m: Allow dynamically loading the alerter class based on the AlerterBundle key in AlertConfig.plist 2013-03-18 Richard Frith-Macdonald * EcProcess.h: * EcProcess.m: Add test logging methods ([-ecTestLog:...]) 2013-03-15 Richard Frith-Macdonald * EcProcess.h: Document EcCoreSize * EcProcess.m: Change so that if no value is set, we don't use any limit, and so that if a negative value is set we use 1GB 2013-03-13 Richard Frith-Macdonald * GNUmakefile: 1.0.2 release 2013-03-13 Richard Frith-Macdonald * EcProcess.h: * EcProcess.m: Improve documentation of sequence of calls of configuration update methods and add convenience functionality to support alarming for fatal configuration errors. Add EcMemoryIncrement config to adjust alerting about potential leaks. 2013-01-26 Richard Frith-Macdonald * EcAlarmDestination.m: * EcAlarmSinkSNMP.m: Fix problem flushing alarms on process shutdown. 2012-12-17 Niels Grewe * EcAlarmDestination.m: Fix designated initializer behaviour. * EcControl.m: Make SNMP master agent port and host configurable. 2012-12-07 Richard Frith-Macdonald * EcAlarmSinkSNMP.m: * GNUSTEP-MIB.txt: Fix minor naming consistency errors. 2012-12-06 Richard Frith-Macdonald * EcProcess.m: Improve handling of signals ... quit process after the next event when an unexpected signal is caught. 2012-10-28 Richard Frith-Macdonald * EcCommand.m: 2012-11-26 Wolfgang Lux * EcLogger.m (+loggerForType): Fix wrong receiver when registering for notifications. 2012-11-16 Richard Frith-Macdonald * EcControl.m: Record a change in the alerter configuration as an update of the overall configuration. * EcProcess.m: Implement 'alarms' and 'clear' commands for local process alarm state. 2012-10-28 Richard Frith-Macdonald * EcCommand.m: * EcConsole.m: * EcControl.m: * EcLogger.m: * EcProcess.h: * EcProcess.m: Use NSInteger argument for -cmdQuit: 2012-10-18 Richard Frith-Macdonald * EcProcess.m: Remove unused variable. * EcControl.m: Yse -hostWithWellKnownName: in preference to -hostWithName: when trying to find/match hosts. 2012-10-05 Richard Frith-Macdonald Initial (1.0) release.