------------------------------------------------------------------------------
Domain Time II for Linux (dtlinux) CHANGELOG
Oldest entries at the top of this file. Newest entries at the bottom.
------------------------------------------------------------------------------

5.2.b.20210103 (03 Jan 2021) - first public beta release

  - Extensive instructions are embedded in these two files:

        /etc/opt/domtime/dtlinux.conf
        /opt/domtime/README.txt

  - Manual pages are provided for dtlinux(8) and dtcheck(3).
    Access them from a Linux command line by typing:

        man dtlinux
        man dtcheck

  - Support information is in the /opt/domtime/SUPPORT.txt file.

  - Online documentation may be accessed using /opt/domtime/help.sh
    or /opt/domtime/help.html.

5.2.b.20210105 (05 Jan 2021)
  
  - Fixed instructions for applying the registration code from the
    Linux command line. Eliminated the need to restart or reload the
    dtlinux service for registration to be recognized.

5.2.b.20210205 (05 Feb 2021) - first production release

  - Changed status from beta-test to production.
  - Added arguments to dtlinux-update (/opt/domtime/update.sh) so
    you may specify -y|--yes to answer yes to questions. Also
    added -h|--help to display syntax, and improved parameter
    parsing.
  - Added /opt/domtime/UpdatingDTLinux.html to explain how to set up
    and use an alternate source for updating DTLinux, or how to use
    Domain Time II Manager (Windows) to "push" upgrades.
  - Added misc:updateURL (default blank) to dtlinux.conf.
  - Added dt2Security:managerUpgrade (default true) to dtlinux.conf.
  - Added dt2Security:managerRestart (default true) to dtlinux.conf.
  - Added new switch: dtcheck -authorize NameOrIP. Requires root or sudo.
  - Added new switch: dtlinux --add-missing. This command compares the
    current dtlinux.conf file against the default conf file and adds any
    new or missing options. Requires root or sudo.
  - Added /opt/domtime/archives folder, which contains backup copies made
    before changes made by Domain Time II Manager are applied. This folder
    also contains a log showing what files were changed, when they were
    changed, and by what IP address.
  - Fixed recreation of folders mounted on RAM drives or other volatile
    storage mounts.
  - Many internal improvements for efficiency and security.

5.2.b.20210331 (31 Mar 2021)

  - Added median to dtcheck -txt output
  - Added dtcheck -revokeAuth NameOrIP. Requires root or sudo.
  - Added ptp:utcOffsetOverride to dtlinux.conf; default value Auto.
    This setting allows you to override the TAI-UTC offset sent by
    the PTP master (37 is the correct current TAI-UTC offset as of
    March 2021) as long as the master has set the ptpTimescale flag.
    If the PTP master is using the ARBitrary timescale, this setting
    has no effect.
  - Added FilesAndFolders.html file to help admins understand the
    folder layout and which files are used for what things.
  - Changed allowed syntax for PTP Telecom masters to allow either
    a colon or a comma to separate the IP address from the domain. If
    using a colon with an IPv6 address, you must use the canonical
    IPv6 format of [address]:domain. Using a comma is preferred.
  - Fixed error parsing PTP Telecom responses.

5.2.b.20210630 (30 Jun 2021)

  - Fixed little-endian error in drift.dtex binary file. This bug
    could cause IPv6 sources to be reported as IPv4 under rare
    conditions.
  - Added spew-level output for duplicate UDP packets, showing the
    protocol, sequence number, message type, and packet length.
  - Added command-line options --strip-comments and --restore-comments
    to dtlinux. Root or sudo required. Use dtlinux -help for more in-
    formation.
  - Fixed problem updating /opt/domtime/bin/hashes.txt on Debian-
    based systems.
  - Fixed TGZ's install.sh script to prevent message about non-existent
    /opt/domtime/bin files
  - Added dtcheck -authList -- shows the entries in authorized.managers
    file.
  - Fixed dtcheck parsing error of optional parameters.
  - Added dtcheck -setPassword to set password protection for Manager
    operations. Passwords are stored encrypted, and only a salted hash
    is ever sent over the network. If you set a password, Manager will
    prompt you for the password before accessing your DTLinux machine.
  - Increased size of stats structure to allow showing deltas of less
    than 1 millisecond with dtcheck -stats command.
  - Fixed dtlinux -prepClone bug which could leave some machine-specific
    information in the dtlinux.conf file.
  - Added support for "short" SHA keys (that is, an SHA1 key with fewer
    than 40 hex chars, an SHA256 key with fewer than 64 hex chars, or
    an SHA512 key with fewer than 128 hex chars).
  - Added dt2Security:managerReadOnly to dtlinux.conf file, default
    false. If set to true, then Manager will be allowed to read settings,
    but not change them.

5.2.b.20210718 (18 Jul 2021)

  - Fixed recreation of /tmp/domtime folder if it disappears after
    reboot (i.e., is mounted on an ephemeral mount point).

5.2.b.20220111 (11 Jan 2022)

  - Updated copyright date
  - Fixed text log typo
  - Changed realTimeAlert:auditGroup to allow 0-9. A value of zero means
    use the Audit Server's default group; 1-8 means Audit Group 1-8; 9
    means "Do not change the audit group." Other values not allowed.

5.2.b.20220322 (22 Mar 2022)

  - Recompiled to take advantage of new compiler optimizations. No
    changes to functionality.

5.2.b.20220714 (14 Jul 2022)

  - Fixed recreation of /tmp/domtime folder if not present when running
    dtcheck as root.

5.2.b.20221031 (31 Oct 2022)

  - Fixed typos in help text for both dtcheck and dtlinux.

5.2.b.20230302 (02 Mar 2023)

  - Made PTP slave status more fault tolerant of missing Announce messages.
  - Updated copyright year.

5.2.b.20240101 (01 Jan 2024)

  - Recompiled to take advantage of new compiler optimizations. No
    changes to functionality.
  - Updated copyright year.

5.2.b.20240425 (25 Apr 2024)

  - Updated documentation and support information.

5.2.b.20240922 (22 Sep 2024)

  - Support for SHA256 and SHA512 symmetric keys for use with DT2
    and NTP protocols. Prior versions only allowed MD5 and SHA1.
    Not all NTP implementations (appliance or software) support
    SHA256 or SHA512 hashes. You should test with your NTP timesource
    for compatibility before selecting SHA256 or SHA512.

5.2.b.20250101 (01 Jan 2025)

  - Updated copyright year.
  - Recompiled to take advantage of new compiler optimizations.
  - Changed problem report to exclude drift.dtex and driftptp.dt if
    these files are empty.
  - Changed a bit definition in binary drift records to make them
    compatible with changes in Domain Time for Windows. This adds
    a trailing 'p' to Phase column in the textual conversion of a
    drift file. Also added a leading '+' if a phase value is positive
    (the leading '-' was already present if the value was negative).
  - Updated readme and support text files to include new information
    and supply new URLs for easier access.

5.2.b.20250331 (31 Mar 2025)

  - Improved STL optimization by changing container types.
  - Fixed several typos in the log files and man pages.

5.2.b.20250630 (30 Jun 2025)

  - Changed binary .dt drift file trim to keep 3/4ths of old data
    when full instead of 1/2. This extends the lifetime of old
    data points so the period covered is longer.
  - Optimized code for building PTP packets (minor speed improvement).

5.2.b.20250922 (22 Sep 2025)

  - Updated README.txt to include instructions for installing or
    removing DTLinux if sudo does not grant rights to modify the
    systemd database.
  - Added a note at the top of UpdatingDTLinux.html to address the
    sudo rights limitations.
  - Recompiled to take advantage of compiler security fixes.

5.2.b.20251225 (25 Dec 2025)

  - Corrected two constants for PTP packet minimum lengths that
    could cause unnecessary handling of malformed packets. This
    provides an early-out for packets that would be discarded
    in later processing.
  - Corrected a text log typo.

5.2.b.20260123 (23 Jan 2026)

*** IMPORTANT fix for the RPM package. Earlier versions
    of the RPM might not copy the dtlinux.service file correctly,
    leading to an error after a "successful" installation. If
    you encounter this problem, use /opt/domtime/remove.sh to
    remove the partial install and then try again using the newer
    RPM. (Note: TGZ and DEB installs not affected.)

5.2.b.20260302 (02 Mar 2026)

  - Added min/max brackets of 1-10 minutes to the loop:checkInterval
    setting when operating as a PTP slave. When not using PTP, the
    checkInterval you specify operates as expected. This functionality
    mirrors the Windows versions of Domain Time.
  - Changed Next Timecheck line in the text log file to express time
    as hours, minutes, and seconds as appropriate. The former behavior
    was to report only seconds, no matter how large the value.
  - Changed the max timecheck interval to 86400 (one day in seconds).

5.2.b.20260516 (16 May 2026)

  - Updated documentation to reflect that glibc v2.17 or newer is
    required.
  - Refactored several internal loops to reduce memory use and improve
    speed by hoisting variables out of the loops. Forced lock-free
    buffers to be 64-bit aligned in memory to reduce cache-line misses
    on modern processors.

5.2.b.20260704 (04 Jul 2026) - Recommended Upgrade

  - Changed permissions on .sh files during install or upgrade to
    remove execute permission for non-root/non-sudo users. The files
    themselves check for root, but this extra step lets the operating
    system issue the permission-denied message instead of relying on
    each script's check for proper permissions.
  - Hardened security against potential malicious attack vectors. No
    CVEs or active explotations known.
  - Added log:allowTextRead to dtlinux.conf (default true). Set to
    false to disable remote machines from reading any text files.
  - Changed the meaning of dt2Security:managerRestart to include both
    restarting the DTLinux service and resetting the timings.
  - Changed the tmp folder from /tmp/domtime to /run/domtime.
  - Updated the dtlinux.service systemd service unit file to use more
    modern options. Note: The service unit file is not updated if you
    use Manager to push upgrades. Only RPM, DEB, and TGZ installations
    will use the new file.
  - PLEASE read the post-install instructions in README.txt for more
    information on locking down dtlinux, especially Step 3.
