DataGate Change Log (newest changes first) 6.18.5 Fence points were not being saved after importing from csv file. 6.18.4 Fix crash when reading long ini file settings. 6.18.2 Fixed group checkboxes not toggling child nodes. Fixed html history style. Show notes under poi and fence properties window. Added setting to control when old assets are deleted from AIS/ADSB sources. 6.18.1 Adding confirmation of app registration (via GUI and email). Added random number seed file to improve generation at startup. Reduce shutdown time when being closed by operating system. Added wizards to generate CSRs and improve certificate import process. Added HSTS and content type options HTTP headers. Removed Suntronics and SatMate features. Added separate 1024-bit DKIM keys to work with most DNS providers. Use separate CSS files. Added ping check using shell command. Added separate customization and TLS settings for each domain. Send confirmation to Caitland devices with outstanding alerts when handling all alerts. Fix sending multiple warnings to Caitland devices. 6.17.16 Added ethernet connection for ICOM SAT100 connections. Remove add poi/fence option for users without permission. 6.17.7 Use https to www.webgate.org for licensing requests. 6.17.6 Use normal priority for Firebase messaging to test support for Apple devices. 6.17.4 Tag Class B AIS devices. 6.17.3 Don't wait for queries to complete when shutting down by system. 6.17.2 Only send geofence alerts on crossing (not on initial state). Removed email test buttons and final unsubscribe email. Added email abuse link. 6.17.1 Removed ping check. 6.16.44 Added Queclink GV65 support. 6.16.42 Improve UTF8 support to allow more characters in messages. 6.16.41 Initial ICOM SAT100 support. 6.16.40 Add heatmap reports. Add option to delete old AIS/ADS-B data from history. 6.16.26 Initial Pertamina support for emailing positions via attachment. 6.16.24 Improve start-up time with large asset lists. Improve map performance with large number of icons. 6.16.23 Show DMS mouse location in OpenLayers (if user has DMS enabled). 6.16.22 Show more AIS details under asset properties. 6.16.18 Added Meitrack TLS port. Added initial ADS-B decoding. Remove database writes for assets from sources with no history. 6.16.16 Unsubscribed admin emails were being sent in some cases. 6.16.15 Move nearest poi calculation to browser. Add link to nearest poi in properties. Nearest poi shows closest visible poi. Fixed nearest poi heading calculation. 6.16.14 Fix history page not showing. Improve history page layout. Don't count login attempts for inactive users (reduces alerts when old account tries to connect). 6.16.13 Inactive users not counted for license use. Refresh licenses whenever editing users or assets. Improve speed when enabling/disabling Google map labels. 6.16.12 Added labels to public user page Fixed radio site and rssi levels not showing on history. Fixed Google map labels not toggling correctly. 6.16.11 Added PLD settings command descriptions. Reduce number of toast messages when multiple messages updated. Removed internal raw data handling, as no longer used. 6.16.10 Clear Meitrack position if invalid flag set. Added Vocalis update rate option. Fixed issue with frames showing in separate tab in Firefox. Initial group messaging support. Show failed group messages in message list. 6.16.9 Minor UI fixes. Support fast database update with older databases. 6.16.3 Limit index reorganize to once per day. 6.16.2 Fixed touch/nontouch switch. Fixed history asset scan returning no results. 6.16.1 Added web token to post requests to prevent cross-site request forgery (CSRF) attacks. Reset low battery flag when changing asset types. Added new method to update database version 48, which should be much faster (but may only work on SQL Server). Enabled automatic database index reorgnization by default (during maintenance window). 6.15.9 Fixed history color gradient turning black at peak readings. 6.15.8 Clear Caitland alert state immediately when resetting trigger. 6.15.7 Bivystick SOS support. Caitland improvements. 6.15.4 Replaced Mapquest address lookup with Geoapify. Initial Bivystick support. Use chunked transfer for sending log files over http. Fixed decoding error with newer Meitrack devices. 6.15.3 Use pin state for shared output reason. Improved low battery handling. 6.15.2 Asset-side geofences now referred to as waypoints to distinguish from server geofences. Detect groups with looped-back parents, and move to Root at startup. Prevent parent loop-back when assigning group parents. 6.15.1 Major mapping update to OpenLayers 7.1.0. Added cow icon. For versions supporting shared output: - Set shared asset alert state when any unresolved alert present. - Added shared alert state event text. - Recover unresolved alert messages to ensure alert state is controllable. - Show asset alert state on GUI. - Fixed sharing status resetting to group state when asset updated. Added all Queclink device types to Queclink asset settings. Improved remote commands for all Queclink device types. Added Queclink buffer reset where supported by device type. Only show asset alert trigger for devices that support remote trigger reset. Now use date and time inputs for history/log panels, and poi/fence activation dates. Disabled selecting geofences when zoomed inside fence boundaries. Minimum Queclink report interval increased from 10 to 15 sec. Save unknown asset ID list and only create alert log on first appearance. 6.14.4 Enabled Queclink GV75M, GV350M and GL320M. Added save/recall environment buttons to persist screen layout/settings across browsers or on browsers with no storage. 6.14.3 Added default alert color. Asset with alarm trigger active will show this color. Added alarm triggers for most high priority events from all asset types. Show asset label in red when it has unresolved alerts. Fixed minor UI issues from previous release. 6.14.2 Fixed circular fence changing size slightly when saving in units of feet. Improved web page resize accuracy. Removed "take over handling" option for events a user is already handling. 6.14.1 Major web interface updates. Added emergency alert resolving. Improved feedback when sending web commands to the server. Web asset filter includes modem IDs for admin users. Show alert and low battery icons in asset list. Improved duplicate tab handling. Added user option to mute sounds. Added shortcuts to edit fence shapes and poi location. Fixed geofence bug where asset group assignment was being lost on restart. Create default fence shape when adding new fence. Updated Vocalis API to include asset speed, heading and altitude. 6.13.1 Added Edge Pro poll response handling. Added subscribed flags for admin/billing email addresses. 6.12.42 Added asset theft alerts option, where tow and power events become high priority. Added Queclink GV75M support. Track asset alert state (set by any high priority alert) separately from device alarm state (set by device itself) 6.12.37 Added Quecklink cell and battery info decoding. Initial Iridium Edge Pro support. 6.12.36 Switched date format from yyyy/mm/dd to yyyy-mm-dd. Use yyyy-mm-ddThh:mm:ss for SQL datetime values. Updated PLD settings response decoding. Removed unused PLD settings. 6.12.35 Fixed Google address lookup option not saving when Nominatim previously enabled. Asset type was being reset to Mobius when supervisors edited asset configuration. Active Directory user passwords were being set when setting new passwords for other users. Hide passwords in full HTTP logs. 6.12.34 Updated bus interface icons. Added opacity setting to bus routes. Log TLS certificate details at startup. Update closest POI when any POI is edited. 6.12.26 I/O headers and default button were not always showing on asset config screen. Removed some compiler optimizations to help debug win32 error. Fixed Caitland Handle and Warn button. Reset to armed no longer cancels alarm. Caitland programmable alerts now include high state text. Fixed Caitland poll not showing sent icon. 6.12.24 Include unsubscribe link as text attachment to email history reports. Cancel click when dragging legend/psap boxes (to prevent closing legend or opening message). 6.12.23 Show red warning overlay when high priority messages available. 6.12.22 Include unsubscribe links in emails to users or admin. Users can unsubscribe via email or web. Changed speed range for assets with person icon, so 10 km/h is max brightness. Asset modem variant was not saving when switching device types. Cache nearest POI to improve live updates with large poi lists. Users created via web or import had stopped speed/time set to zero. These will get reset to server defaults if detected. Show user connection state on WebGate user list. Added default stopped time to server config screen. WebGate icon stopped state now uses server default stopped speed. Asset with Person icon uses fixed stop speed of 1 km/h. OpenLayers overlay maps now default to hidden. 6.12.16 DKIM updates. Recompute email headers at time of sending, so any address or configuration changes get populated correctly. 6.12.11 Found issue where WebGate user could lose live connection if multiple browsers or tabs open during server restart. Added sync value to all web requests to detect the above condition and force refresh after server restart. Improved detection and handling of user WebGate sessions in duplicate tabs. Expand altitude range down to -500 metres. Allow network address masks for source IP addresses. Improve web error responses. Fixed duplicate web responses triggered by some live connections. Show status when deleting messages. Fixed typo on WebGate set driver/route page. Fixed WebGate user to user voice calls. Improve handling of large log files downloaded via WebGate. Check for out of range battery values before writing to database. Allow supervisor/admin users to see all other hosts in their group (but can only edit those they have full access to). Initial DKIM support. Always use port 25 for email relay. 6.12.10 Fixed partner sharing asset creation. 6.12.9 Change icon rotation to improve compatibility with Safari. Improved asset label placement. Fixed history not showing with Google maps when labels enabled. 6.12.8 Fixed Asset ID check when creating asset via web. Allow setting text-based AES keys via asset import. Added AD password column for asset import/export. Added blank password and AD flags to WebGate users list. Import/Export Simplex and Mini-C IDs with hyphen. Updated Public Key library to 20.4.0. 6.12.7 Re-enabled device postcode/grid/nearestpoi lookup (was disabled in 6.12 to improve performance). 6.12.6 Replace generic event names with event specific data in history table. Sort Poi and Fence groups on map menu. Control Caitland PLD alert priorities via I/O settings. Added options to change PLD mode and warn PLD user from alert message page. 6.12.5 Public/transit web interfaces were failing to load due to bug since 6.12.1. Added fence type and list to map menu to turn groups of fences on or off. Allow importing assets/users/fences/poi with blank IDs, which will be created automatically. Save asset/driver emergency info/notes with alerts when they happen. Fixed error displaying "handled by" and "comments" when emergency info/notes present. 6.12.4 Old file deletion now non-blocking to prevent delays when deleting large lists of files. Support Meitrack buffered positions with ACK. Show Loading... on messages list until messages have been received from server. 6.12.3 Default source port was not being set via GUI options page. Fixed TLS client certificate exchange with ECC cipher suite. 6.12.2 Fixed live log, which was broken in 6.12.1. Outgoing TLS connections were failing if remote server requested certificate. Improved TLS logging to show handshake payloads when handshake logging enabled. 6.12.1 Added Micron non-movement settings. Collapse lists on WebGate configuration pages. Assign group access to users from group config page. Added share with sub-groups for assets. Show users/drivers/fences/poi by group in WebGate lists. Added user/driver/fence/poi filtering in WebGate. Reduced web page memory usage with OpenLayers maps. Enabled asset/user/driver import via WebGate. Enable Caitland PLD commands over UDP. SMS command timeout now matches configurable packet timeout. 6.11.16 Start service button now set to non-default. Don't create message when unregistering app. Improved speed of writing fence links to database. Improved 3DES and database load speed. 6.11.15 Fixed email authentication and fence/poi edit button issues introduced in 6.11.10. 6.11.14 Fixed issue causing periodic ECC key failures. 6.11.12 History map was not setting initial zoom in some cases. 6.11.11 Fixed app icon and legend description. Removed option for red stopped icon. Adjusted compiler optimizations to improve overall speed. Randomize ECC key filenames to reduce file lock issues. Added error logging for ECC key problems. 6.11.10 WebGate message replies addressed to different asset if selected asset not visible in list. Check for deleted assets when showing webgate messages. Added share option to allow drivers/poi/fences to be shared with sub-groups (visible but read-only). Added POI type with option to turn icons on/off by group. Added POI unlisted option to allow large lists of POIs that are hidden on web list. Removed support for TLS 1.0 and 1.1. Outgoing TLS connections now use TLS 1.2. Added AEAD cipher support (GCM mode). Added Elliptic curve Diffie Hellman ciphers to enable perfect forward secrecy. Send Meitrack commands via SMS, if available. Batch POI SQL updates during import, to improve import speed. Added setting for WebGate trail color. Removed webRTC adapter. Street View follows selected point on map, and rotates when rotating maps. Save asset settings to database and restore at startup. Allow setting Traklink/Firelink app reporting rate. Reverted to showing asset icon backgrounds for stale data (to improve visibility). Use icon backgrounds for history to improve visibility. Added extra reporting rates for Queclink/Micron remote config. 6.11.9 Fixed fence/poi times showing wrong date for users in GMT zone. Added checks for fence/poi times being in allowable range (years 1900 to 9999). Added ESRI API Key. 6.11.8 Added KML export for POI/Geofence. Log all modifications made via GUI. Log user who creates/deletes items via web. Fixed geofence asset links not updating via web. Delete asset when unregistering via app. Added Billing email address that receives asset creation/deletion alerts. 6.11.7 Fixed decoding bug when receiving UDPC data without Caitland libraries installed. Initial POI/Geofence import feature enabled. 6.11.6 Fixed asset icon background where asset has motion but not speed. 6.11.5 Reduced number of alerts sent when high number of failed login attempts detected. Allow empty NTCIP messages and messages with carriage return/line feeds/tabs. 6.11.4 Added link to edit fence/poi inside enable/disable message. Cancel database transactions when deleting outstanding queries. Refer to drivers as drivers/pilots. Added options to hide logs, disable history, and delete old assets for AIS. Added Caitland enhanced encryption support. Show Caitland IP address under modem properties. Added helicopter icon. Asset icons now SVG. Added driver summary report. Updated Datalink logo. 6.11.1 Combined device classes. Licence simplified to use a single device count. Asset arrow and plane icons now rotate to exact heading. Map history now shows arrows when set to gradient. Removed icon stroke for history heat map to improve clarity with high icon density. Send Caitland ACKs over UDP when possible. 6.10.5 Cancel incoming Kenwood console calls if timed out waiting for PTT end. Fixed map type selection under web user config screen. 6.10.4 Added Queclink GV50M. Added AIS decoding support. Added Queclink GTLOC decoding. Show message to users when geofences/pois are activated or expire. 6.10.3 Added all user-configurable parameters to data exported via web. 6.10.2 Improved SMPP unbind process. Reset connection if server reports already bound. Force TAIP IDs to 4 characters. Previous ID refactor caused TAIP IDs to have leading zeros. Added per-user settings for map type and submap state. Allow users to change their own trail and submap settings. 6.10.1 Refactored modem IDs and cleaned up asset configuration screens. Light coloured POI now have black background. Dynamic geofences now trigger when any asset joins another in the group, or leaves all others. Don't automatically update database schema past version 48 if high number of historical records present. 6.9.56 Added automatic archiving and deleting old files on maintenance schedule. Added url to assets, geofences and poi. Added flag to control alerts for entering or exiting geofence. Added creation, activation and expiry times to geofences and poi. 6.9.55 When creating archive database, only update to the same version as the current history database. 6.9.54 Reverted to TLS 1.0 for outgoing connections, as some servers were rejecting our ciphers. New password form was switching to current user after error changing another user's password. 6.9.53 Outgoing TLS connections now support up to TLS 1.2 (previously used TLS 1.0 only). Added initial OpenID support using Google sign in. Added config pages for Firebase and OAuth settings. Fixed several minor history map issues. 6.9.52 Limit Hytera emergency rate. 6.9.51 Added Meitrack Iridium support. Initial Firebase Messaging interface. Moved "Keep logged in" checkbox above log in button. 6.9.50 Fixed error when logging Kenwood group registration delay. Compile against ActiveX Data Objects 6.1 (was 2.8). Fixed periodic database busy error/warning. 6.9.49 ISatDataPro sources were not all connecting when multiple such sources enabled. Use SIN 20 for polling IsatDataPro modems (instead of 19). 6.9.48 Fixed map history text aligment. 6.9.47 Added TrakLink device. 6.9.46 Show Queclink battery info and version on remote config page. 6.9.45 Hide asset info on map overlay when asset no longer visible in list. 6.9.44 Fixed POI color setting. Added advanced remote control setting to control which remote config commands are visible. Supervisor users now get access to asset emergency info, notes and icon settings. 6.9.43 Added Inmarsat IsatData Pro address handling. Show toast message when sending any packet, and when packet sent/failed. 6.9.42 Show asset menu on properties page when asset list hidden. 6.9.40 Initial remote control of Queclink/Micron/Gotek devices. 6.9.39 Ignore clicks on user's location circle. Added Micron device type. 6.9.38 Updated OpenLayers layer switching to improve support on touch devices. Reintroduced asset checkboxes, but with option to turn checks on or off. Initial View support to save current asset filters and map location. Updated splitter control to remove large handles and provide larger touch area. Added checks to detect invalid Meitrack data. Flash follow icon when updating map due to asset reports. Updated GoTek Prime support. Added WebGate full-screen mode. Added UK grid and postcode search. Added point info map overlay. Added map overlay to display selected item, with shortcuts for config/properties. 6.9.37 Combined Basic and Plus versions into single build, with features controlled by licence. Added option to enable/disable auto adding Vocalis devices. Fixed error when saving (unassigned) or (root) groups via GUI. 6.9.36 DataGate ini file was being backed up every minute. Backups now only happen when user edits settings. 6.9.35 Don't reinitialise listening TCP ports during init if currently pending connection. 6.9.34 Add Vocalis assets automatically. 6.9.33 Added asset firmware version record to database. Currently used to hold Sendum firmware string. 6.9.32 Force web cache revalidation for public pages. Reduce cache age for static items (images, sounds, etc). Thuraya SMPP gateway TON setting was being forced to zero. Improved handling of database passwords where keys mismatch. 6.9.31 Ignore SmartOne messages with unknown message sub-type. 6.9.30 Send copy of bounced messages to admin, rather than forwarding (which can fail due to bounced message headers being non-compliant). Increase width of some asset configuration input boxes. Improve speed of "scan for assets" feature on history page. Allow retrieval of Info packets (server alerts/errors) via history. Allow setting "Server Alerts" option under own account. Don't send error emails until files opened, as requires storing in database. Fixed archiving (was not working since 6.9.2 due to schema mismatch). Show current Sendum setting values on remote page if available. 6.9.29 Warn if Kenwood groups not registered for 5 minutes. Outgoing asset email retry timing now the same as other packets. Reset email expiry date when retrying outgoing emails. De-initialise ports when closing files. Delay receiving emails, polling for SMS, and receiving MUPS data until files opened. Allow both digest and basic authentication over SSL connections. Removed "Hide assets with no current position" option, as this was no longer being used internally. 6.9.28 Keep file data open during temporary database loss. Sources were not being initialised at startup or after reloading database due to bug introduced with early 6.9 changes. 6.9.27 Fixed regression in previous version where history was showing all GPS as estimated, and button colours were not showing. Process heatmap points in the background as it can take several seconds with a large report. Added AVL Service option for InmarsatPro modems to control how polls are sent. Fixed issue where user "hide trails" option was not being set via webgate config screen. Allow toggling trails in interactive history. Trails default on for general reports, and off for event-based reports. 6.9.26 Reduce common database write error to warning level, to prevent generating alert emails. This error occurs during high query loads. Fixed error parsing InmarsatPro data introduced with Bagis changes. Added heatmap option for history icons. Cleaned up history processing. 6.9.25 Redirect /gps (old clients may be accessing this) to root page. 6.9.24 Transit page update. 6.9.23 Added GeoJson feed. Parse Sendum events. Fixed Bagis feed - was continuing to send after successful delivery. 6.9.22 Log HTTP responses with no payload. Warn per asset when Bagis export fails. Not all assets where being exported to Bagis after any export failed. Now delay failed asset(s) only. Set public map to greedy touch, to allow scrolling map in iframe. 6.9.21 Allow public user page to save cookies in iframe (requires third party cookies to be enabled). 6.9.20 Cache public pages to reduce load. 6.9.19 Initial formatting of config screens for touch mode. 6.9.18 Allow public user page to be embedded in iframe. 6.9.17 Request WMS map layers in EPSG:900913 projection. 6.9.16 Allow storing asset battery values in mV resolution. 6.9.15 Sendum was not receiving multiple reports on same connection. Fixed latitude/longitude values in GeoRSS feed. 6.9.14 Added Sendum remote control commands. 6.9.13 Added Basic HTTP authentication for SSL connections. 6.9.12 Improved handling of duplicate WebGate sessions. Outgoing packets were not being removed when deleted via WebGate interface. 6.9.11 Initial Iridium GO text message support. Allow /rss, /kml, and /list requests without authentication by prepending user public links. WebGate Logout was only clearing client side cookie. Now clears server side as well. 6.9.10 Removed login over SSL option when using plain http connections (cookies weren't being saved correctly). Removed embedded Blackberry app download. Switched to using GET requests for main WebGate interface. Now requires cookies to log in. Added Bagis JSON external interface. Added support for Google map IDs (allows cloud-based style editing). Added settings to limit Google map types and control options. Save submap type and zoom when using Google maps. Fixed issue where asset labels weren't always updating for Google maps. Use orange status bar to show temporary connection problems. Warn when a browser session is being used twice (e.g. two tabs connected to WebGate). Updated Transit page to show dynamic bus locations. Added Thuraya SMPP connection to allow two SMS reception paths. Reduced priority of SmartOne battery and service provider alerts. Added Iridium Go modem (currently supports SMS data only). Log listing now shows if (and where) asset data is being exported to external servers. Increased length of Sendum device ID. Added GTINF decoding for GV300W devices. 6.9.9 Initial Aid Link app support for monitoring vests. 6.9.8 Increased size of external password in user database, as wasn't fitting with custom encryption key. 6.9.7 Remove query batch start/end delimiters. Don't load database if retrieving license during init sequence. Default to OLE DB Driver provider. Changed database type name as new schema is not backwards compatible (identity removed from history table). Reverted to showing filter age in WebGate when using default value. Allow Web Clients to forcefully clear alarm state for all asset types. Added external web service per user account. Include odometer and hourmeter in DataGate XML output to web servers. 6.9.6 Cancel application exit if database close is in progress. Added option to set default filter age. Show WebGate login screen when server is unlicensed or database is closed. Cleaned up WebGate page during loading, and added an orange banner. Gracefully discard database queries where index matches existing record (these failures are normally due to a database connection retry). 6.9.5 Fixed bug in WebGate when "mute all sounds" DataGate option enabled. Save queries/outbox/sessions whenever closing the database, not just when unloading the app. Simplified database init on options page (database gets closed and opened once when changing database settings). 6.9.4 DataHost support removed! File primary storage removed! Only "Datalink" databases supported! Read database history ID after applying outstanding records at startup. 6.9.3 Show server alerts and errors in WebGate for sys admin users with server alerts enabled. Keep group names visible in asset list when only one group selected or available. Allow config/message screens to become wider. Add warning message for users when closing server. Last version with DataHost support! Last version with File primary storage! Last version with support for multiple database variants! 6.9.2 Show warning bar when app is busy. Removed History table identity index. DataGate now generates IDs internally to improve query speed. Remove stale message links on an ongoing basis. Limit web live updates to once per second. Fixed control bug for GUI user same-as command. Allow users to edit geofences in their group (previously required full group access). Truncate asset trails if asset jumps more than 10km. Process saved queries before loading database to improve consistancy. 6.9.1 Added more SQL query batching to improve database performance. Added SQL max batch size setting. Added setting to disable asset byte counting. Buffer GUI updates to prevent lock ups during periods of high activity. 6.8.16 Asset tag was not being set during asset creation. Reduce shared asset log output. Hide blank ICCID values. Move shared asset properties higher up the list in WebGate. Hide driver property when logged out. Added packet priority and expiry values to better control number of retries. By default, XML messages are not buffered after failure. Improved performance when clearing emails. Added warning when email message to user cannot be sent for 24 hours. Switch to non-TLS email if server fails to respond to STARTTLS correctly. Removed ability to add comments to outgoing packets. Save outgoing packet creation time, and restore when restarting DataGate. Asset filter count was not updating correctly on WebGate. 6.8.15 Show asset trails on public page Reduced Kenwood packet retries by a factor of three. Don't save byte counts for incoming shared assets. 6.8.14 Fixed parsing of chunked PSAP events. 6.8.13 Fixed setting shared partners for assets from WebGate. 6.8.12 Disable Queclink motion events except for no-motion alerts. 6.8.11 Added Queclink GL300N. 6.8.10 Removed debug code and fixed layout. 6.8.9 Partner sharing with sub-groups. Clicking on asset trail with Google maps will select asset. Warn user if service is stopped when loading DataGate. 6.8.8 Hytera/Relm radio IDs were not saving when configuring from web interface. Accept PSAP formatted 911 data. 6.8.7 Switch to plain SMTP if TLS fails while sending emails. 6.8.6 Enabled trail path for history reports. Different color used for each asset when multiple assets present. 6.8.5 Added "No Maps" option to hide all location data and events from a user. 6.8.4 Added courier and tree icons. Hide WebGate selection outlines when using mouse. 6.8.3 Added Gotek device type. 6.8.2 Partner sharing updates. 6.8.1 Added partner sharing option. Removed checkboxes from individual assets in webgate. Added filter reset button. Removed web hide delay (use filter instead). Use treeview for showing asset/user lists in GUI. Allow sendhost to add to log when queuing packets. Hide built-in layers from OpenLayers switcher. 6.7.12 Refactored Queclink decoding to improve protocol support across range of devices. Added GT Prime device. Match KML and Interactive report icon colours. 6.7.11 Archive database creation was failing when using SQL authentication mode (username/password). Show 911 alerts as icons. Enter key was triggering first menu item when opening a menu in Edge browsers. 6.7.10 DataGate .ini file was being backed up every minute when using database as primary storage. Now set to daily. Fixed WebGate interface bug where wrong frame is highlighted when clicking on group in fence asset list. Fixed accessibility error preventing webgate loading with submap disabled. Added initial GV300W support. 6.7.9 Improved WebGate accessibility by allowing selection of all necessary controls. Keep WebGate menu visible during resize. Show PSAP alerts on WebGate screen. Fixed bug causing summary history reports to lock up when asset position occurs exactly at end of report interval. 6.7.8 Only enable voip call option when user is online. Update user online state immediately on WebGate. CSV export now uses commas in fields containing a list of items. 6.7.7 Increased precision of fuel economy to 1dp. RPM and fuel level were not showing in WebGate. Cleaned up export of data via WebGate. Send Lars Thrane polls to MSISDN number, instead of IMEI. 6.7.6 Fixed TK-STAR latitude sign error. Send Lars Thrane packets via SMS instead of SBD. Initial driver summary report implementation. Fixed bug that prevented adding/editing top level groups via WebGate. 6.7.5 Check for invalid selected group when loading assets, and default to All if necessary. Export all asset and user settings via WebGate. Added TK-STAR magnetic tracker. Added option to reorganize or rebuild SQL indexes. Allow deleting cookies at login screen. Show OBD-II parameters under live asset properties. Don't log unknown RealPTT assets in raw data. 6.7.4 Asset creation errors were not showing on web page. Added delay after receiving KW ACK. Use source timeout setting. 6.7.3 Backup datagate.ini each time settings are saved. Improved webgate asset list borders on Edge. Fixed extra end tags on main web page. Improved loading of assets and users when not enough licenses. Real PTT timezone was not taking effect after change from global settings. 6.7.2 Always show name of user who has handled or added comment to message. HTTP responses were not being processed when split into multiple packets. Added support for Meitrack TC68L. Added dog asset icon. 6.7.1 Added Spot X support. Added Tow Alert event to distinguish between motion detected and towing. Allow handling of alerts by a user, and adding comments to messages. High priority messages are marked as read when handled by another user. Added support for multiple levels of grouping. Users can no longer see any assets/users/drivers/poi/fences in higher level groups. (Shared) group renamed (Root). Users will see their own group labelled as (Root) when they have access to multiple groups. Added radius setting to asset geofence. Asset geofence now shared amongst users. Radio status messages were not triggering messages to users unless high priority. Removed RealPTT time query to ensure we capture all asset positions. Increased RealPTT interval from 10 to 30 seconds. Moved RealPTT to sources to allow multiple accounts. Allow Sys Admin users under groups, including ability to add users and assets. Added license parameters for each group, to control how many users and assets can be handled by each. Show Asset class next to device type. Improved "Keep Logged In" behaviour. Added incident report. Include RFID Tag reports when running history for messages. Don't send extra html headers until user has agreed to cookies (to prevent Google Analytics or similar scripts running). Allow duplicate radio IDs if sources are in unrelated groups. Update groups window when editing group in case names change. Scroll to bottom of message window when updating message. Show web user as disconnected when last connection > 10 minutes ago. Only match Caitland PLD and RFU devices in same group. Include datagate.ini in backup files. Session resumption was causing error on mail connections. Automatic ID option when adding asset. Initial part of ID is based on creator's group. WebGate was not showing last driver in list. Include fences and POI on web group config screen. Initial NENA PSAP CAD interface to process ALI/ANI data from 911 dispatch desks. Added Lars Thrane protocol support. 6.6.4 Updated ocx files in installer to latest SP6 security release. 6.6.3 DataGate was returning multiple responses after SMTP login with bad credentials. Combined transit domains with custom web domains. Web redirect option now works for all configured domain names. Ignore duplicate Hytera emergency packets received within 1 minute of intitial alert. 6.6.2 Send Hytera repeater acks before responding to packet contents. 6.6.1 Updated Caitland support (PLD ver 15 and RFU ver 28). Reject other versions to ensure compatibility. Ensure custom logos are re-read when saving settings. Added database index to improve searching for asset trails. Check ClickSend account for incoming SMS messages from assets. Changed voip code to non-async to allow loading in Internet Explorer. Units were not being detected properly when saving dynamic geofences. Leave rootcert.cer in file directory after creating self-signed cert, and add to Windows root store. Improved loading of custom sounds/logos. Updated cryptosys pki version. Allow selection of icon when running KML history report. Added basic polling mode for Kenwood radios. Hytera RCP packets were using radio IP address instead of radio ID. Sent messages were not being sent as emails to other user accounts. Added menu option to export settings in .NET format. 6.5.51 Now include high priority messages when deleting WebGate user messages when msg count is over the limit. Send original "to" tag when replying to repeat SIP INVITE. Text log was disappearing while adjusting splitter on main form. SmartOne speed/heading was not showing in history. Show modem IDs to supervisor users (previously limited to admin). Hide all HTTP body data when full HTTP logs disabled. Include decoded HTTPS bodies in full HTTP log. Look for inputs labelled "IGN/Ignition/ACC" when determining Meitrack ignition pin (for engine hours calc). 6.5.50 Initial voip implementation (DataGate Plus). Automatic address lookup was sometimes failing with small lat/lon values or in non-US locales. 6.5.49 Location icons were not loading on history reports with OpenLayers maps, since adding POI support. IsatPro modems now default to GPS valid state if the GPS validity flag is not included in the payload. 6.5.48 Moved site ID column to end of list output. DataGate was not processing zero-length responses from external web servers. Added time-zone correction for RealPTT data. 6.5.47 List output was missing radio site ID and RSSI columns. 6.5.46 Use odometer and hourmeter values when available to calculate historical distance and runtime. Fixed Smartone heading/speed display. Fixed adding email address to user account via WebGate. Fixed issue where wrong asset was selected after editing WebGate filter textbox. Added RealPTT GPS API. Daily history reports could cause memory fault. Removed SMS character encoding for ClickSend messages. 6.5.45 Select group when using history menu from group header row. Added Queclink encryption type 2, with a key per device. Set POI position to map center when creating new point. Show fence and POI on map when clicking on item in fence/POI list in single pane mode (small screen). 6.5.44 Disabled TLS session resumption, due to possible issues with some browsers. Allow reports based on individual button push events. Polygon shapes were being miscalculated after editing (until restart). Added POI labels. Fixed Meitrack TC68 battery calc. Added history option to WebGate group header rows. Separated user unit and alert settings, and allow editing by supervisors (users can also edit own settings). 6.5.43 Remove Google map style. Initial POI support. RSSI report gradient now absolute, from red (weak) to green (strong) Added alert logs when unknown device ID or invalid encryption key detected. Added Queclink GV300N support. Corrected input state polarity for Queclink devices. 6.5.42 Ignition state was always showing "on" in WebGate since 6.5.37. Some history reports where returning an error due to recent change. 6.5.41 Simplified Google map style to improve legibility. 6.5.40 Edit geofences directly on WebGate screen. Added traffic layer to Google maps. Change cross origin setting for Mapnik maps to improve support in Internet Explorer. 6.5.39 Added asset geofence enabled by user (currently with fixed 500m radius). 6.5.38 Added geofence export function from WebGate. Added three-button mode to use Meitrack SOS button for user-defined events. History reports can now be run for button push events, with icon colours based on input number. 6.5.37 Added ClickSend SMS API support. Allow editing ignition pin name and states. Initial Queclink AES support. Shared key across all devices. Security fix to hide AES keys from users. Added settings for multiple domain names, each with unique settings. Disabled TLS 1.0/1.1 for incoming connections. Check sound when loading WebGate screen, and show warning when browser blocks sound. 6.5.36 Chunked data was not being decoded correctly when receiving http responses. 6.5.35 Use start time when calculating COT device timestamps. Added Meitrack binary protocol support. 6.5.34 Kenwood RSSI values were double expected value. 6.5.33 DTC codes were not always displaying correctly in reports/messages. Added Meitrack command list to asset remote page. 6.5.32 Source COM port was still limited to 1-16. Fixed error when decoding Enfora timestamps (caused by change in 6.5.29) 6.5.31 Hard code Meitrack Input 1 as SOS, to prevent missing SOS alerts if config wrong. 6.5.30 COM port enumeration could fail if DOS device list too long. 6.5.29 Switched to byte arrays to send and receive serial data. Use full year (4 digit) where available in protocols. Handle GPS rollover dates by detecting 1024 week offsets. Cancel Alarm command now clears alarm state, even if remote command required. Current driver was not being saved to history. Include driver info in alert messages. Decode Site number and RSSI when present in NXIP GPS packets. Process GPS altitude in NXIP packets. Decode multiple NMEA sentences if present in data stream. Use System locale to convert strings. Check locale is compatible at startup. Allow commas when checking if string is a number. Support SIN 20 Inmarsat data. 6.5.28 Allow editing driver list from WebGate, including Wiegand tags. 6.5.25 IsatDataPro improvements. Outgoing packets were getting stuck when i50 reset received. 6.5.23 Only automatically add driver IDs if driver logs in or out (current driver may not be valid). 6.5.22 Parse RCP emergency alerts from Hytera repeater. Reject HTTP requests with large content length. Support SmartOne speed/heading packets. Kenwood ACKs were not working for DMR radios. 6.5.21 Asset messages/alerts were showing the previous asset location. 6.5.20 Archive database schema update was failing. Switched Cusor-on-Target to UDP. Added new commands for Sinocastel remote control. 6.5.19 Fixed GT301 support. 6.5.18 Added Queclink GT301. Added IGN input to Ulbotech. 6.5.17 Encrypt Inmarsat control station passwords. Added IsatData Pro interface. Addec Cursor-on-Target device support. Thuraya SMS was not decoding negative lat/lon values correctly. 6.5.16 Added Queclink GL520/GL530 support. Initial Hytera Repeater support. Added Meitrack modem type setting to improve ADC accuracy and I/O events. Added Meitrack RFID decoding. 6.5.15 Added notes for transit routes. Added toggle switch for transit routes. Added setting for sending routes to asset, instead of using RTUID. NMEA UDP packets are now forwarded via UDP (if forwarding enabled). 6.5.14 Disable web redirect when main domain name not set. Force HTTPS was redirecting transit page to main page. Use separate logo/icon files for bus interface. Whitelist was not working for downloaded emails. 6.5.13 Updated public bus interface to provide responsive interface. Added domain name setting to allow public bus interface to share main web ports. Added "DataGate Transit" version for bus routes. 6.5.12 Asset emails were not being accepted when addressed to asset name. Check for blank/missing modem IDs when validating assets. 6.5.11 Invalid asset driver index could cause history database write error. 6.5.10 Check for invalid lengths in TLS handshake, and reject silently. 6.5.9 Process Wiegand RF IDs inside driver log in packets. 6.5.8 Allow SatMate i60/Seagull 5000/Thuraya SF2500 data via SMS. 6.5.7 UnInit routine could get interrupted by database disconnection. When closing files/database, some background forms were being closed. 6.5.6 Decode Wiegand RF IDs to show 5-digit tag ID. 6.5.5 Use RF Tag for Driver logins. 6.5.4 Source screen was showing wrong connection options. 6.5.3 Added Hytera cancel alarm. Hide odometer values on Queclink GL300 units (as these are normally personal trackers). 6.5.2 Fixed Sinocastel error when parsing sleep packets, caused by change in 6.4.13 Input and Output event changes now use I/O pin name (and state, if known) as event title. Hytera and Skywave control station sources were not being saved correctly when using file storage. Now ignore case of local email domains. Added support for POP3 TLS on port 995 Added external POP3 settings per user to download emails to a user's assets. 6.5.1 Added Hytera remote commands. 6.4.16 Fixed first custom map layer being lost when saving map layers. Improved OpenLayers layer switching. Added GeoRSS feed. 6.4.15 Fixed Hytera triggered GPS report handling. 6.4.14 Hide run time when units have reported invalid packet times (e.g. Sinocastel buffered data). Fixed Hourly/Daily/Monthly summary reports, which were not handling gaps in data correctly. 6.4.13 Sinocastel buffered reports were being set with timestamp of first report in each packet. 6.4.12 Added Piccolo iButton support. 6.4.11 Sinocastel remote control was not including length when sending text-based settings. Hide Sinocastel length in received settings. 6.4.10 Close any WebGate config screen immediately when connection closed, instead of prompting to cancel changes. WebGate trips were not showing date and time correctly. Prevent time values wrapping in WebGate report selection frame. Don't show asset encryption keys on screen. Only allow setting new key, not editing old one. Added database encryption for asset encryption keys. Increased length of Sinocastel settings value on WebGate remote control page. Textual Sinocastel settings now show as text instead of hexadecimal characters. Added initial Hytera support (not yet enabled) Added note when loading most recent WebGate message, as this can take a while if it is required to load messages into the list. Clear SSL sessions when changing SSL certificate/key. Switch to https servers when accessing openstreetmap maps via SSL connection. Map and KML WebGate reports were being output as CSV if a Trip/Summary report had previously been run with the CSV option. 6.4.9 Don't redirect web requests for non-GET/HEAD requests, as these redirects will be retried as GET requests. Show cookie warning all the time, as cookies are always used for config. Kenwood IDs now included with DataHost/WebGate messages (if IDs enabled). Messages will show ID like "<123> Test" to allow matching responses. Show WebGate cookie warning for all users, but hide once acknowledged. Added Queclink GTCTN report type. 6.4.8 Added Queclink odometer readings and OBD status parsing. Allow turning asset trails off per user. Unicode characters were not being written to SQL database. One result of this was non-latin address look-ups being blank in history. Added SmartOne start/stop events based on vibration state. Added option to send start/stop alerts to users. User LAN Only option was not being saved correctly to database. Added option to use Google for automatic address lookups. Some extra event details were not being included in alerts. Supervisors now have permission to edit groups they have full access to, and to add groups if they have full access to parent. Warnings were not showing in WebGate config when changing groups/permissions/device types, etc. Updated permissions. Users can now only edit users with lower permissions. 6.4.7 Added "Clear Iridium Queue" command to WebGate asset remote control screen, and allow from outbox table (type 1024) 6.4.6 Event data was not being written to history database for all event types. 6.4.5 Allow Sinocastel version 3 data. Transparent data is now written to the database in raw format. Updating I/O status processing to handle each line separately, adding support for disabled I/O. Improved type-checking when saving asset properties to catch non-numeric values. 6.4.4 First DataGate Plus release. 6.4.3 Allow DataGate to run on a DataGate Plus or Milgate licence, but show warning that app upgrade exists. 6.4.2 Asset trails were not being cleared when asset list updated. Combine custom icon colours when multiple colours are define for an asset (e.g. multiple input pins). 6.4.1 Added Queclink driver ID support. Added check for negative hours/odo when loading assets. Delete user email addresses from database when deleting user account. Keep current asset pin states if Piccolo sends data without pin states. Now accept licence with future version number. e.g. DataGate 6 will run on a version 7 licence. Old licence version will be loaded OK, but server will not load data until correct licence is enabled. Added settings to control asset trail points and age. 6.3.25 WebGate was not reconnecting when offline in IE due to notifications not being supported. Improved Ulbotech support. 6.3.24 Added DataGate Plus version. Moving forward, all advanced radio networks (KW dPMR, DMR, Type-D, P25) and XML SOAP polling will only be available in Plus. WebGate was not loading when configured with no title image. 6.3.23 WebGate zoom to groups was not working due to re-enabled "hide old assets" feature. 6.3.22 Added status to show current database backup state on options page. User configuration screen was inaccessible in previous version. 6.3.21 Added IGN pin settings for Queclink devices. Re-enabled "hide old assets" feature for WebGate users. Added zoom icon to non-touch WebGate message list to select and zoom to asset. Added driver to GetAssetList XML output, and added method to set driver. 6.3.20 Asset odometer and hourmeter values were being saved incorrectly in database. 6.3.19 Kenwood Type 2 Digital status code increased to 4 digits. Check gpsvalid before adding to asset trail. 6.3.18 Fixed typo in Queclink parsing routine. Removed interactive link from Trip emails. Trip count was incorrect on Trip emails. 6.3.17 Asset trails now disappear when asset hidden. Highlight trail of selected asset. 6.3.16 Increased Mapnik zoom level to allow access to 10m resolution. Added basic support for Queclink OBD data, with events generated for OBD status monitoring packets. Added van and motorbike icons. Added "Pager On" message for Grace pagers. Added notifications to WebGate for alerts and server disconnection. Renamed Queclink motion event to movement. Motion is a separate event (GTSTT) which is not currently processed. Added detail to message status response from i50, including error state. Now clear polling flag if any position report is received from asset (even if it contains no GPS). Fixed issue where WebGate msg/config frame could not be closed when server off-line. Now include asset setting/string values in messages and historical data. Added asset trails. DataGate will keep track of last 10 positions for each asset. Fixed HTTPS issue where connection could be closed if previous http conversation used a "closed" connection header. 6.3.15 Added Queclink GMT200. Interactive report icons were not being set correctly in speed or altitude mode when user set to non-metric units. Added Queclink GV500N. Added Ulbotech GPS decoding. 6.3.14 Added support for NMEA messages with arbitrary talker ID (GN, GL, GS, etc). 6.3.13 Fixed KML track altitude mode. 6.3.12 Sinocastel was not parsing Commercial DTCs correctly. Still need to clarify data received. Added link in interactive history to open KML report. KML output now includes a track, allowing quick replay of position vs time. Now estimate engine hours when any IGN event is received. Doesn't have to be most recent data. Added remote control command to clear asset history for iSeries >= version 5.43 Initial Ulbotech support. 6.3.11 Added path to KML history output. This allows touring replay. WebGate zooms to selected assets when enabling follow mode, or refreshing with follow enabled. Added link in trip summary report to open interactive history for any trip. Queclink motion events were causing error due to negative speed. 6.3.10 Sinocastel was not setting IGN state. Iridium Extreme now Class B. Ensure selected asset remains visible in webgate list when switching panels. Smartphone parsing routine was not handling ESN/IMEI values with leading zeros. 6.3.9 Addresses over 255 characters were causing SQL write error. Now show altitude in feet for users set to nautical miles/knots units. 6.3.8 Added T-PASS data decoding for Piccolo devices. 6.3.7 WebGate History was failing if driver list was empty. 6.3.6 Further fix to allow group calls. 6.3.5 Now accept group calls from any ID to allow recording group conversations (if enabled under source settings). 6.3.4 Fixed Kenwood console deregister packets added in 6.3.2. 6.3.3 Added "Auto" option to KW console local IP address setting, allowing VPN connections with dynamic IP addresses. When above option is enabled, automatically select closest match if local IP address is unavailable. Query's written to disk when closing were being listed as unsaved in DataGate log. Added custom icon colors for Smartphone devices. "Use Custom Color" changed to "Use Dynamic Color". When enabled, icon color will be based on status and I/O. Manually remove OpenLayers event observers when deleting markers to improve browser memory usage. Added custom color per group. Group parent index was being set incorrectly when edited via WebGate. 6.3.2 Now keep track of registered console/group IDs for each KW console source. Deregister when not needed or closing. WebGate asset icon background was not always updating on map when changing to 'old' state. Added option to record Kenwood voice calls (received on console connection). Currently saved in raw format only. Added WebGate search option to limit results to a selected driver. 6.3.1 Added option to display Asset IDs in decimal form (as opposed to dotted octets). DataGate now parses decimal IDs if ID has no periods. This is supported for asset emails, history, etc. Added TAIP asset type. High priority msgs were being emailed/shown as low priority for users with "show msgs" on and "show alerts" off. Added current driver to alert messages. Now include current driver ID when writing asset history. Note that this driver could be incorrect when receiving old data. Added option to limit asset temperature alerts to specific times and days of the week. Asset "outside work hours" and temperature alerts now based on server time zone if no asset time zone is set. Write default values to ini file when reading an undefined setting. Added support for Kenwood dPMR, Type-D Trunking, and DMR radios. Added tag to all DataGate XML packet responses (previously was only included in asset list). Now check if received asset emails match more than one asset (desc or ID), and reject if unclear. Admin users without full group to their own group are now able to edit sub groups if they have access. Admin users can now only change asset group assignment if they have full access to the existing group. Adding driver via WebGate was setting incorrect name. Now allow admin users to add drivers if they have full access to any group. Hide add and export menu options on WebGate screen other than currently selected type (asset, user, driver, group). Added Export Driver list in WebGate. WebGate search now allows searching based on event type. 6.2.35 WebGate geofence list was not always showing correct geofences. Removed reference to sysinfo.ocx control, as some systems were failing to load this control. Above error was caused by Windows Defender falsely detecting sysinfo.ocx as Worm:Win32/Bluber.A 6.2.34 Added polygon list to WebGate screen, with map option to show/hide polygons. 6.2.33 Now allow two colours to be defined under asset/source custom icon settings (e.g. F0000F means F00 and 00F). Assets with two colours show with flashing icon, changing colour every second. Added colour settings for digital inputs. Reduced flicker when changing asset icons with Google maps. Added LAN Only option to user accounts. When enabled, users can only log in from private IP addresses. Asset name changing was not working since adding change-checking to WebGate screens. 6.2.32 Asset WebGate settings tab was not showing in recent builds. Clear POP3 emails button was not showing correctly for new users. 6.2.31 SelectRow routine was not clearing Unassigned group header in WebGate. Added initial feature to update the WebGate message list to show msgs for the selected asset only. Not enabled yet. Moved P25 support from MilGate to DataGate-256. Added P25 for Relm. Kenwood BYE request for incoming call contained invalid From field. Clicking on message zoom button in WebGate touch mode now switches to map if map is not visible. 6.2.30 Updated style on FleetNet page, which was not showing full height. 6.2.29 History reports were not showing local timestamps starting with "1/" (affected dates depend on server date format). 6.2.28 NTCIP BYE request was not including correct tag in From field. 6.2.27 Now ignore temperature alert thresholds if the high/low values are equal (easier to disable for both C and F scales). NTCIP get current message result was showing extra characters. 6.2.26 Fixed Kenwood NXIP badly formed contact field for conventional mode. Kenwood NXIP BYE request was not using correct route for incoming calls. NTCIP get current message command had extra parameter. 6.2.25 Added ability to send test messages to signs by starting message with '?' and adding 24 hexadecimal chars. 6.2.24 Added temperature alert thresholds to trigger alerts for any assets with temp sensors. Piccolo supports three. Added check for changes made to WebGate config screens. User is warned when closing a page before writing changes. Login autofill now works on Chrome. Now support multiple NXIP Packet Type blocks in single RTP packet, as sent by Kenwood NXR-x10 repeaters. Added setting to distinguish between NTCIP ethernet and serial signs. Required when sending current msg request. Check for PPP encoded response when requesting sign message. 6.2.23 Fixed lock-up due to badly formatted NTCIP message. 6.2.22 Changed non-MDT tilt alerts to "high angle" alerts. Tilt is now reserved for accel while stationary. Use server email address for MAIL FROM: commands when sending via external server. Turned off delivery bit for Kenwood conventional IP long data request. Added short data and status handling for Kenwood conventional IP. 6.2.21 ICOM and RELM assets were not having their source updated when data received. 6.2.20 Added support for RELM, connected via base radio. 6.2.19 Now allow autofill on WebGate login page. Added zeros to GenX iButton ID to force to 16 chars, allowing DataGate to handle it as an iButton ID. 6.2.18 Fixed error when assigning custom database encryption key on database with login credentials. Data sent via internal Inmarsat connection was not being logged. 6.2.17 Fixed Inmarsat custom alarm events. Piccolo battery was not being decoded in all cases. When user msgs over limit, DataGate now clears high priority messages if they've been read. 6.2.16 Treat Meitrack Event 255 as blank data (appears to contain invalid data). Fixed inittrans typo and added RAN encoding to status messaging for Kenwood console connections. Direct Inmarsat sources (HTTP) were not working for outgoing packets. Removed custom alarm events for Inmarsat poll class 8. Added Inmarsat altitude and voltage values to history. Added custom database encryption key. Added custom event handling for DMR devices. Added option to hide assets on map when message received with no position. 6.2.15 Bug in SelectRowGroup routine was causing WebGate supervisors with single group access. 6.2.13 Kenwood console routine was not converting REPLY messages to status text. 6.2.12 WebGate was not playing high priority sound for all alert messages. SMTP routine was including AUTH tags in from address of incoming messages, resulting in failed responses. 6.2.11 Added RIC-M emergency processing. 6.2.10 Added GenX iButton and iTemp decoding. Added RIC-M device. 6.2.9 Now allow null emails to be accepted for any asset, even if not configured to receive emails. 6.2.8 Removed all RC4 support. 6.2.7 WebGate Bing maps were not loading due to script error. Note that Bing v6 maps may be discontinued soon. Throttle WebGate filter updates to improve response. Allow emails to assets with null sender to be accepted (but not sent). This permits anti-spam address confirmations. Removed Sinocastel TCP connection drop as units seem to stay online after logout. Fixed incorrect field name "lastemp3" in asset update query. Emails were only being sent to users if the "Send Alerts" option was enabled (even low priority/gps messages) 6.2.6 Kenwood long data call was not always timing out if handshake failed. Leave Sinocastel packets with no position/event data out of history. Now drop Sinocastel TCP connection when it logs out. 6.2.5 Added temperature ID and name settings for Piccolo devices to allow custom readings from digitial temp sensors. Piccolo devices can now have internal temperature reading disabled, which hides value in WebGate and reports. Added VOUT column to history table 6.2.4 Changed default WebGate icon colour to light brown to reduce confusion with moving state. Built-in ESRI layer now switches to https when client logs in via secure connection. 6.2.3 Updated schema to allow NULL values when adding columns to history table. Should speed up schema updates. Fixed map history page not loading with older database versions. Unescape Nominatim results in case they contain escaped characters such as &. 6.2.2 WebGate group headers in asset list were slow to show zoom icons if map delayed. WebGate age filter was acting on GPS time. Now works on receive time. Sent messages in WebGate were showing current user instead of actual sender. Added group setting and iButton/email fields for pager/driver objects. Increased asset emergency and notes sections to 1024 bytes. Increased pager/driver info section to 1024 bytes. Reduced size of icon background for non-touch mode. Reverted to showing icons without arrows when asset speed is under stopped setting. Allow editing drivers from WebGate. When setting asset driver from WebGate, use drop-down driver list. Send email to driver (if driver emails enabled) when a message/trip is sent to driver's asset. Removed check on duplicate drivers. Now allow drivers to be logged in to multiple vehicles at once. Email bounce failures now forwarded to admin email address (unless bounce contains admin email address). Added option to send message to driver from WebGate. Added decoding for Piccolo temperature sensors (via RF Tag or 1-wire bus). Reduced outline size of "stopped" icon, and made background unclickable to allow easier selection of closely space assets. Automatically add unknown driver IDs to driver list. Write driver index to history table. Currently only sets value for packets containing driver info. Added driver column to CSV and interactive history reports. 6.2.1 Trigger alarm state when Mobius sends emergency message. Set WebGate asset icon background to indicate asset state. Icon colour now fixed. Added icon to asset list to indicate asset state. Allow users to edit other users with the same permission level. Previously could only edit users with lower permissions. Removed manual follow command from WebGate, and added general follow icon to follow selected asset. Allow selecting group row in WebGate. Added trip state to asset list. Now show driver and trip state in colour in asset properties. Send trips via WebGate. Save selected asset in WebGate so it can be reselected when page is reloaded. User public page was not updating asset positions. 6.1.16 Request Sinocastel parameters if login packet indicates new params available. Openlayers scale control now changes based on latitude of map center. Added asset device type to WebGate asset list for admin users. Check for Kenwood scrambled ACKs that are not actually scrambled. 6.1.15 Added support for requesting i50 IMEI and ICCID values, and setting password. Fixed Sinocastel speed scaling error. Speeds were reading around 30% too low. Kenwood emergency bit was being set for low priority messages (since 6.0.10). AddOutbox routine was refreshing live WebGate links too early, so clients could miss settings "Sending" status. 6.1.14 Updated Iridium clear queue function. 6.1.13 MapQuest maps were still showing under WebGate layer list, even though deleted from map settings. Check for errors when reading database to prevent lockup if provider returns record count errors. Fixed issue where poll commands could get stuck in queue. Added button to clear Iridium queue on asset properties window. Successful Iridium ring alerts were triggering unnecessary ACK. 6.1.12 Message history IDs were not being written correctly after change in 6.1.10. 6.1.11 Sinocastel was adding extra record in history table when receiving GPS position(s). Sendon routine was returning incorrect "could not send" error for certain networks. 6.1.10 Some GenX packets contain invalid GPS data. Added check to prevent high speed and voltage readings. Added boat and plane icons to asset custom icon list. Follow icon was disappearing when clicking on asset with invalid position. Added custom XML Polling methods to allow sending and receiving messages. Allow messages to show up in WebGate before writing to database (or if database disabled). Messages header higlight was not being cleared when all alerts read. Removed MapQuest map option, as open tiles no longer supported. Allow KW radio IDs to be re-used for separate customers. 6.1.9 Fixed previous database update. Now show schema update errors in log. Fixed cell RSSI value in CSV report. Show I/O states for assets when running group reports. Emails to assets were not being marked as sent for all asset types, resulting in undeliverable warnings. 6.1.8 Added support for Kenwood NXIP Console ver 2. AES not supported yet. Thuraya SMS was not being parsed. Hide Properties option on WebGate asset menu when properties visible. Added index to database history table to aid address lookup queries. Added usergroup.x@example.com email address aliases to allow sending to groups of assets. 6.1.7 User config screen was showing (unassigned) group for admin users of shared group. Fixed WebGate warning about incorrect time zone when adjusting asset settings. Thuraya GPS reports were not being marked as valid. 6.1.6 Added automatic check for licence at startup, instead of forcing user to resend request. Added Thuraya SMS handling. 6.1.5 Extended Kenwood Conventional IP support. 6.1.4 Daily email reports were formatted as CSV instead of HTML since 6.1.1. Now include Run Time value in all reports (previously limited to users with idling alerts). Poll requests were not being cancelled for some device types since 6.1.1. Added alert for movement out of work hours. Added support for outgoing SMTP with TLS (instead of STARTTLS). Genx alarm end report was always generating power down event. Now check extra data and asset battery status first. Initial support for Kenwood Conventional IP interface. 6.1.3 Allow duplicate asset names if assets have different parent group (and aren't shared). 6.1.2 Check for write access to datagate.ini file at startup. Users in sub-groups or without full group access can no longer create groups. Limit users to creating groups under their own group, except shared users with full access to a group. Removed transaction from database archive routine, as "delete output into" queries are atomic. Added archive status label to archive settings screen. Added Iridium ring alert duration setting. Added setting to allow asset notes field to be included in emergency alerts (and sent to DataHosts). Added initial Elert support. 6.1.1 Increased period between groups of three retries for iSeries packets. Now only try-once packets expire immediately. All others kept in memory for longer time. Reset outgoing data block timers when data received for all asset types. Meitrack freeze frame data had extra byte at beginning. WebGate asset menu was not resizing correctly. Now buffer TCP packets to allow sending when modem connects. Increased retry timeout for all networks to allow sending when modem connects. Reset asset nextsend timer if asset contacts server and new packets available for sending. Added pop-up message for poll and hot pursuit responses. Outgoing packets time out when sending after asset contacts server. Removed Reply button from outgoing/sent messages in WebGate. Save outgoing blocks to temp file. DB and Email blocks are not saved as these will be reloaded from DB. Added CSV/HTML option for Summary/Trip reports. Limit iSeries to sending one trans packet at once. File and Driver login events where showing "Msg=" prefix in history. NAL settings had no local time stamp. Added "waiting" state to outgoing packets which is set after ACK, then cleared when expected response received. WebGate frame was not always showing scrollbars if frame content increased in size. Moved red flashing highlight to messages header when messages visible to better focus on alerts. Keep high priority flashing when offline, but prevent opening messages. Don't delete high priority messages when clearing webgate user inboxes. Added Suntronics interface. Use Meitrack Input 3 for IGN if default IGN input is inactive. Added setting request status to WebGate remote control screen to see if settings rx/tx active. Allow editing users' public page addresses. Fixed race condition on WebGate live connection. Added subgroups to allow grouping assets within each customer group. Google maps were picking up a title style from the WebGate page. 6.0.26 Remove formatting from support div when custom text contains surrounding div element. Added asset settings for NTCIP message formatting. Check NXIP scrambled messages to see if they are sent in plain text. Added Iridium support for Naviset modem. Trip summary reports were not showing all trips if more than 500 metres movement between a stop and start. Simplified trip summary report calculations. 6.0.25 Check for zero length SSL packets as some clients report periodic web_arrival errors. Removed RC4 support for incoming SSL connections. Added TLS 1.1 and 1.2 protocol support for incoming web connections. Checkbox for all messages was not displaying in correct position on web site. Messages were not showing with checkboxes if they were loaded with checkboxes enabled. Wait for settings ACK before requesting settings over Kenwood console. 6.0.24 WebGate asset list was moving to selected asset every time data received. Fixed GSatMicro heading. Reinstated asset checkboxes for non-touch WebGate. Updated max bounds for OpenLayers maps to match EPS:4326, as some custom WMS maps were not displaying correctly. Idling reports were not detecting IGN off state. 6.0.23 Fixed redirecting local web connections to local web ports. Added option and cookie to switch between touch and non-touch WebGate. Kenwood cancel alarm was generating two packets in outbox (one for local cancel and another for status message to radio). Idling reports now based on current IGN state instead of last IGN change. 6.0.22 Asset locations were not beinge updated automatically on map. Added GSatMicro "check in" message, plus distress and external power inputs. 6.0.21 Added initial support for GSatMicro Iridium device. 6.0.20 Piccolo internal battery voltage was being set to the external voltage reading. Messages were not being deleted correctly when deleting a large group via WebGate. Asset list was not updating immediately when data received. Added log message shown before updating database schema, warning that process may take a long time. 6.0.19 WebGate message "zoom" icons were not showing immediately when page refreshed. Added device type to WebGate remote control screen. Provides access to VIN/ESN data, where available. Added support link to show on WebGate user menu for all users. Assets or messages in alert state are now shown with red background in WebGate. Removed settings for "hide old assets", "show driver name" and "hide delay". Above settings are no longer required with new WebGate screens. Hide zoom button on group heading in WebGate if no assets in that group have a position. 6.0.18 WebGate age filter was not updating list. Remove WebGate message "zoom" icon if asset is not visible in list. Added external web port settings to allow redirecting clients to public facing ports. DataGate will redirect using internal ports when accessed via a local IP address. Updated user public links to use server name instead of host name. iFrame was not loading after being manually refreshed. 6.0.17 Keep record of recent login attempts, and only trigger multiple login warning if logins differ. Piccolo was not handling multiple packets received at same time due to checksum mis-calculation. WebGate logout not working when map search turned off (due to reference to cancel search function). 6.0.16 WebGate asset list and properties were not being sized correctly when showing/hiding asset list. Message selection toggle icon was not visible in Firefox. iFrame was not closing after deleting messages. 6.0.15 Now send emergency cancel status when user cancels Kenwood alarm. Added descriptions for stationary/motion/lone worker Kenwood status codes. Piccolo output states inverted when parsing change event. Now ignore Piccolo GPS distance (as may get reset). But will process Jbus odometer. Users now limited to seeing/editing other users only in groups they have full access to. 6.0.14 WebGate was not loading for supervisor and non-superuser admin users due to invalid reference. 6.0.12 New WebGate version with dynamic sizing for different screen sizes. Web live update routine was not clearing buffer when updating multiple connections. Kenwood Direct IP timeout increased from 1 to 5 sec. IsatPhone Pro was not handling negative lat/lon values in SMS format. Now use * at end of user email address to force short (SMS) format for message body. Back button was causing iFrame navigation. Now close frame when user navigates back. Web lost connection timeout was expiring too fast since change to 1 sec live updates. Live log web page was closing when connection lost, even when session saving enabled. 6.0.11 Added hover text showing message date/time for messages on GPS web page. Allow assigning asset driver names via web interface. Added message count to webgate message icon. Hide submap when switching to user or group view. Now check SSL padding to prevent POODLE vulnerability. Fixed trip summary report headers, which were missing new idle fields. 6.0.10 Kenwood NXIP call timeout was not occuring if IP address changed. Set alarm flag for KW and ICOM emergency packets. Read layer cookie for map history page. Layer settings from main page should be used for history map. Fixed expected AirLink packet lengths for sleep/wakeup data. 6.0.9 Fixed Sinocastel bug when parsing GPS packet with no GPS data. 6.0.8 Sendalerts routine had error when parsing sent packets. Now ignore Sinocastel DTC packets with zero codes. 6.0.7 Added SMS processing for Queclink devices. Added polling feature to automatically poll iSeries devices (intended for RF networks to minimize peak traffic). Added option to show driver's name beside WebGate asset list. Fixed RPM readings to Sinocastel data. Added DTC decoding for Sinocastel. DTC codes (OBD and J1939) are now translated into text descriptions if found in the internal database. 6.0.6 Fixed Sinocastel polling. 6.0.5 Fixed ACK for Kenwood console status messages. 6.0.4 Added remote settings for Sinocastel. Now hide address lookup features from webpage when Google geocoding disabled and MapQuest API Key not entered. 6.0.3 Kenwood console was not sending status messages. 6.0.2 Added Sinocastel event/GPS parsing. 6.0.1 New version based on 5.2.27 Allow superusers to change active directory setting for all other users. MapQuest address lookups now use HTTPS when loading the web page over a secure link. Added IMEI to outgoing NAL GSM packets. Low priority user emails were only being sent if "Send Alert Emails" was also enabled. Fixed sub-map splitter position for web interface. Long running history queries for multiple assets were timing out. Some Airlink software versions were too long to fit into database. Now check length. Airlink software version was not being saved when using file storage. Failed source TCP connections were being retried even after being disabled or ports changed. Show Kenwood NXIP data when source debug is turned on. Some events were not showing in WebGate unless email alerts were enabled. Added domain name to user name shown when starting app. Added admin password to setup program, which places local admin password hash in ini file. User accounts can be set up to allow public access to their assets via a unique web page. Added "Send Stop" option to assets that support stops. Also added address lookup on standard new message screen. Now allow user email addresses to point to assets. This allows basic messaging between assets. Added support for NAL email messages from assets. Added Sinocastel modem type. -------------------------------------------------------- 5.2.35 Fixed sendalerts error. Messages were not being deleted correctly when deleting a large group via WebGate. Check for zero length SSL packets. 5.2.34 Now check SSL padding to prevent POODLE vulnerability. Web live update routine was not clearing buffer when updating multiple connections. Web lost connection timeout was expiring too fast since change to 1 sec live updates. Live log web page was closing when connection lost, even when session saving enabled. 5.2.33 Kenwood NXIP call timeout was not occuring if IP address changed. 5.2.32 Sendalerts routine had error when parsing sent packets. 5.2.31 Some events were not showing in WebGate unless email alerts were enabled. 5.2.30 Show Kenwood NXIP data when source debug is turned on. 5.2.29 Fixed sub-map splitter position for web interface. Long running history queries for multiple assets were timing out. Some Airlink software versions were too long to fit into database. Now check length. Airlink software version was not being saved when using file storage. Failed source TCP connections were being retried even after being disabled or ports changed. 5.2.28 Allow superusers to change active directory setting for all other users. MapQuest address lookups now use HTTPS when loading the web page over a secure link. Added IMEI to outgoing NAL GSM packets. Low priority user emails were only being sent if "Send Alert Emails" was also enabled. 5.2.27 Added stop reporting to Android app. New version 6 created. 5.2.26 Removed time zone adjustment for open logs feature. Date will be interpreted as server-side date/time. Added NMEA UDP device type, which receives NMEA GPS data on a unique UDP port for each asset. 5.2.25 Accelerometer events over 1.2G were being sent to all users. Now limit to users with high priority alerts active. Added Fusion REST web service. 5.2.24 Added route summary export. 5.2.23 Added MapQuest API key for Nominatim lookup. Stop speed setting was not being set properly on new user screen. Added creation timestamp to route export data. 5.2.22 Added trolley route outlines (thin background routes) on route entry page. Added stop chime sound for trolley app. 5.2.21 Google maps 3.21 icons had letter showing in icon due to new 'label' parameter. Fixed by renaming WebGate custom label. Added filter option to WebGate to filter asset list. Added low battery processing for Spot XML data. Keep multiple sessions IDs active for each user (if user has selected "Keep Alive" option). Allow users to restart sessions after connecting from another device. Added Log out (all devices) option to clear all sessions. 5.2.20 Email bounce messages changed to low priority for delay warnings. Now use overspeed end events to calculate overspeed time for reports if events don't contain overspeed time. Updated route system with approaching sound and automatic setting of optional stops through route name. 5.2.19 Improved speed of redundant event lookup. Now encode all characters over char 255 for Javascript or XML. Some UTF values where causing browser parsing errors. Allow saving of unicode text in database, using FEFF header to indicate U-16 format. Map link and emergency asset details were being added twice to emergency emails. Fixed GMT formatting under user properties window. Negative timezones for users were not being saved correctly in database or files. Allow Simplex data to be posted to root page, which provides compatibility with existing PlexGate feeds. Added NAL events for Start/Stop, Waypoint In/Out, Man Down, and Input Trigger. Don't auto-switch asset radio sources to RX Only sources. This leaves them on previous TX source, which is better choice. 5.2.18 Allow admin users to edit their own account settings (not asset list). Fixed sign issue with display of user time zone. Accept Queclink data with any device version. Export route data in .zip format. 5.2.17 Fixed rounding issues with history stop speed. Kenwood last status message was not showing IGN/PWR states correctly. Now process emails with multiple to addresses. Ignore radio ACKs for polls over Fleetsync network, as some radios always return ACKs. Removed Kenwood NAK packets. Radios will get retried until timeout fails. 5.2.16 Added Piccolo OBD/J1939 support. Added battery state and low battery setting to asset configuration, used for Piccolo power/battery alerts. Improved server-side idling detection. Idling setting now hidden for iSeries devices, which have their own idle timers. 5.2.15 Fixed previous build output (routes disabled). 5.2.14 Updated Iridium Extreme to protocol version 2, with reduced packet support. Added sound parameter for stop locations (for trolley app). Can load/download via web interface. Iridium Extreme code was returning emergency ACK when protocol version unrecognised. DataGate was not able to save unwritten database queries when closing if over 32k records. Polygon name now limited to 50 chars on route editing page. Improved speed of loading saved database queries at startup. Increased query index values to long integers to handle large query buffers. Backup queries.bak file after processing at startup. 5.2.13 Added stop time/speed settings for user daily reports. Allow users to select stop time/speed when running reports. History record type was not always being processed. 5.2.12 Improved address lookup for interactive history reports. Added address column to interactive reports. Now save interactive columns list as cookie. Trip reports are now based on GPS and/or start/stop events only. Status data is ignored. Improved summary reports. Status data is used where possible - otherwise based on GPS data. 5.2.11 NXIP packets may continue to be received for a short time after a SIP BYE. Removed warning about these packets. Send status command was not functioning for Kenwood radios. Added server-based idling timer to trigger idling events for assets that don't provide built-in idle reports. Added IGN On/Off and Power On/Off status options to Kenwood/ICOM data sources. These status changes will trigger events instead of msgs. 5.2.10 Fixed minor formatting issues with Kenwood console packets. 5.2.9 Browsers with Keep Logged In enabled were sending live update requests even though user logged out. Isatphone Pro SMS messages were being parsed by line, instead of as a whole. Created separate screen for editing archive database. Improved handling of databases created/updated on the settings screen. 5.2.8 Force apple touch icons to use non-secure link. Secure icons were not being downloaded. Check database update rate changed to 10 sec for all database schemas (was 1 sec for type 1) Added global database connection counters, which are reset when database opened, reducing database connection resets. 5.2.7 History database connection was sometimes loading too soon. 5.2.6 Database was being read before new history connection (introduced in 5.2.1) was confirmed open. 5.2.5 Archive routine was removing all WebGate message links. Updated to remove only old records. 5.2.4 Create database routine was causing app crash if query failed. Status timeout was not available on Kenwood console settings screen. Recent Kenwood status timer was using wrong time zone => duplicate detection not working properly. Keep logged in sessions were not refreshing message list correctly. 5.2.3 Kenwood status messages were being processed without source info since 5.1.47. Force password change and disclaimer screens now affect /gps page only. Added global "Keep logged in" options to replace user-specific setting. Keep logged in sessions can now be saved to disk when DataGate closes, allowing reconnection when server restarts. 5.2.2 Kenwood scrambled encryption key was defaulting to key 0 when using files for primary storage. Kenwood stun command was not including required parameter. WebGate page will keep retrying connection when it is lost, if "keep connected" option enabled for user. 5.2.1 Added non-async connection object for history table. Previous versions used async object when loading ext data/addresses, which could be busy. Default custom icon changed to standard arrows. Custom web title text was being escaped twice, causing problems with reserved characters. Removed 114x114 web touch icon. Now standardize on 144x144 icon. Added html link for Windows 8/10 icons (uses the 144x144 touch icon). Removed web-app-capable flag, as app was not showing correctly when pinned to home screen on iOS. Check POP3 emails in queue, and fail any that are not addressed to a valid user. POP3 emails were being delivered to external email server. Don't forward bounced emails or SBD responses to admin account. Treat emails from assets addressed to valid local user as completed. Added ini file key (CONTROL/AddressScanRecords)to control how many database records are scanned for addresses at startup. Include POP emails in message count on Users screen. 5.1.54 Added address lookup using MapQuest's Nominatim Search. Addresses are searched in the background, and added to the history database. 5.1.53 Check if app has been closed after long running timers return (from uninit and closesql routines). Create database query was failing on certain database servers due to being inside a transacation. 5.1.52 Allow custom icon colour to apply to standard arrow icons. 5.1.51 Added "Forward Simplex" option for users, which is enabled by new licence option. When on, incoming simplex packets are forwarded to user. Deny incoming emails from server's email address to prevent email looping. /xml page now returns plain text response to unrecognised request. 5.1.50 Outgoing emails are put on hold if a 500 failure response is received during sending. Can be reset manually by resend option. Use Piccolo input 5 for hourmeter counting. Added login attempt warnings for POP and SMTP logins. Added offset settings for hourmeter and odometer values. Offsets are added to values reported by devices. Increase allowed future GPS time stamps to 1 min (some KW devices might have timing bug?) 5.1.49 Resend all domain emails received (server from address, postmaster, abuse, etc) to admin email address. Accept emails to with no domain. Added log when outgoing email fails. Allow RCPT mail command for any asset, to give valid response to mail servers performing sender validation. Emails to non-email enabled assets will fail after the DATA command is issued. 5.1.48 DataGate was not accepting emails with blank from address (bounce emails). 5.1.47 Added index to hostmessage table to improve speed of loading messages at startup. Batch queries for deleting old messages at startup. Delete old message links when archiving. Delay processing of Kenwood status packets in case GPS is being sent afterwards. Recent Kenwood status packets are now kept on a global basis, instead of per source. 5.1.46 Changed GenX Alarm End event to Main Power Disconnected. Added ICOM Multi-Trunk support. DecodeCSV routine was losing last variable if quote encoded (causing ICOM GPS problem). Google map labels were being duplicated when asset list updated, resulting in labels stuck on screen. Admin/supervisors in (Unassigned) group now cannot export user list. Remove superuser permission when moving user to non-shared group. Admin users with access to (Shared) group had too much control over superuser accounts. Tightened permissions for users editing other users through WebGate. Can only edit users with lower permissions. Users "Same As" command now only selects from users with same or lower permission as user making change. 5.1.45 Make sure email IDs for messages to assets are unique, and match replies to any email with correct ID. This allows us to send emails to radio groups, and have individual replies matched to original message. Email headers were treating whole address as phrase => address was being placed inside quotes. 5.1.44 Group settings window was showing source list instead of asset list when first opened. NTCIP blank messages were not being detected due to formatting. Updated NTCIP formatting to left/middle justify, and translate to upper case. 5.1.43 Allow Set Driver permission even if host has "Remote Ctrl" disabled. 5.1.42 Some user permissions were being set incorrectly when using files for primary storage. Added option to control user permissions for updating driver IDs from DataHost. Added driver ID to host data queue. This ID represents the driver assigned at the time of data reception (not generation). 5.1.41 Allow time zone bias up to +/-14 hours. 5.1.40 Short (<=8 chars) Client/Host/Source passwords were getting corrupted when saving to file since 5.0.11. Default asset notes field was being set to nulls in files -> query error due to too many string concatenations. 5.1.39 Added "transparent data" and "messages to external port" to redundant message descriptions (not shown). 5.1.38 Removed Clear Stops remote command for assets with Garmin disabled. Get Current Sign Message command is now available for any user with message access (previously required config rights). Accept driver changes from DataHosts. 5.1.37 Added option for setting email text encoding, and including low priority Google map links. Added asset desciption and message subject to SMS messages. Removed asset description and subject from email messages. These are available in email headers. Added basic A607 support for GenX. Hourly/Daily report distances were showing cumulative totals. Removed fixed space between sensor value and units. If space is required, it can be added to unit setting. GenX routine was generating multiple packets for user messages. Added IGN to MDT. Improved database creation screen. Added initial archiving support. Added authentication support to SMTP server, and added second SMTP port for submission. Database creation was failing if an existing database did not exist. Added POP3 server. Each user gets own email address, based on DataGate email domain. Check for looped back email when sending. Don't look up domain MX records or try to send emails with local domains. Store for POP3 retrieval. Email headers now written when message created. Previous versions created headers dynamically. Added email clearing option for local emails. Renamed Pagers to Pager/Driver devices. Send driver list to DataHosts. Replaced VB filecopy with Windows API version. Possible rare corruption happening when copying files? Simplified NTCIP message formatting to suit more signs. Messages were not being formatted correctly for devices using combined NTCIP/Amsig code. Added remote command to check current NTCIP message. Added NTCIP option to iSeries devices (defaults to ON). NTCIP devices will be sent NTCIP formatted messages. Added Garmin option for iSeries. When disabled, "Add Stop" option will not be shown on new msg screen. 5.1.36 Notes field was not showing on asset properties page. Use notes field to set SPOT custom message text. SPOT SOS/Help alerts now processed as Input 1/2 events. SPOT 911 event changed to SOS. When SOS active, WebGate icon is changed to emergency. Added warning for user to update I/O pin setup when changing asset device type. Default I/O button now also resets pin active states to default. I/O change events now show description in WebGate message list, instead of event type. 5.1.35 Allow multiple /list requests for same client, allowing user to have more than one DTS app. Added ref and selfID parameters to /list request to improve results. 5.1.34 Added hourly and daily summary reports for WebGate. 5.1.33 Added speed alert setting to trigger overspeed alerts for assets that don't support this internally. Updated "Asset Same As..." routine to ensure all settings are copied. 5.1.32 History data was not accumulating time/distance values if multiple status events received for single trip. Mark distance and drive/idle time values as unknown ("-") for trips without status events if one or more status events are present. 5.1.31 Remove Kenwood page ID from message text when sending to other users. Naviset lat/long were overflowing when negative. Corrected speed calculation. 5.1.30 Added XML GetLastAVLPositions method, and fixed GetLastAVLPositionByAVLID response. Limit XML data to those assets that have "Send to External Server" enabled (or all if selected under auxilliary settings). 5.1.29 Added Queclink GV500 5.1.28 Updated Piccolo input descriptions for WebGate config screens. 5.1.27 Now clear sensor 1/2 values when creating an alert from an incoming packet. This prevents duplicate passenger counts. Piccolo now maps inputs 5/6 to asset input pins 3/4, as Piccolo STX doesn't use inputs 3/4. Piccolo output states were not being updated correctly. 5.1.26 Radio Source 2.6.1 and older were not connecting to DataGate since delayed logins were added. Queclink code now supports GL200, GL300, GV55, GV55Lite and GV300. Updated Naviset to protocol version 2. Added DTS device type for Smartphone protocol. This adds support for messages to app. Added AssetID index to raw database tables. Added RF link packet support for Piccolo. Message text was not being saved in db when sending messages to some asset types. DataHost/database event text now updated in separate routine. 5.1.25 Ring alerts were being queued for failed direct IP packets. Now cancel ring alerts if modem IMEI is invalid/unknown. Fixed web socket error when invalid TLS certificate installed. Added groups to WebGate reports. 5.1.24 Main toolbar was being hidden since last build. WebGate user config screen was not allowing updates by non-admin users. 5.1.23 Added Globalsat remote command. 5.1.22 Database query count was not being shown correctly in status bar. Added new warning when queries in memory but database disabled. Errors in addtext (from writing files) were being picked up by open database routine. Improved data file storage when files are unavailable. 5.1.21 Piccolo speed was being scaled incorrectly (approx 0.3 times actual speed). 5.1.20 Globalsat code was causing error for UDPC data. Now check for specific error indicating log backup failure due to being in SIMPLE mode. Noncecount was not being updated for http auth web pages. Only show /list and /kml requests in main log when a fresh nonce is used. Raw data and byte counts now written to secondary history database (if enabled). Webgate history can now access raw data and byte counts when using secondary database. History was being read from primary db at startup, even if secondary database enabled. Force secondary database to be disabled if primary storage set to files. WebGate host messages were not being loaded from secondary history database. Now check secondary database when moving from files to database to check for existing data. Added Naviset TCP port. Data usage warnings were not being reset daily when using files for storage. Added full encryption key list to source data files. Added cancel alarm button for Piccolo. 5.1.19 Clearpac routine was not resetting input states. Multiple packets received at once could end up with wrong I/O status. Update database name when creating/editing database. Now revert to file storage if copying data to database fails when switching primary storage. Initial Globalsat support. 5.1.18 Status/Trip reports were scaling max speed values incorrectly (mph values being shown as km/h). Added custom color icon support for Kenwood status messages. Added altitude and custom color to KML output. Added wait parameter for /list CSV web page. With wait defined, DataGate will not respond until data is available. If "wait" seconds expires, connection will be closed. 5.1.17 Added Idle Alert Time and Idle Count to Webgate reports. 5.1.16 Ignore Meitrack external voltage if outside range (USB voltages were being decoded as invalid battery values) Fixed hiding query text from alert emails. If foreign language VB6 DLLs present on host server, True/False strings might be translated. Updated ini routines to handle this. Also updated database query responses to ensure translated true/false results are accepted. Removed X-MSMail-Priority header from emails, as SpamAssassin increases spam score. Interactive history report was showing blank line if no speed available. WebGate log requests were not being handled as local time. WebGate history reports were using all/event/msg setting for all reports. Fixed error when report is run with map limit and map is not valid. Status/Trip reports were not accessing event data correctly. Status/Trip reports now use status report values if available. This will be more accurate, but time resolution will be reduced to status interval. 5.1.15 Allow editing of custom icon/color from WebGate. Layer order was not updating when changing Openlayers layer to or from base/overlay. Added internal SQL scripting to create database and update schema. Added option to update schema automatically (on by default). Database version 15 saves custom icon/color information. Automatically disable log backups if database is in simple mode. Added alert status to /list output. Added IsatPhone Pro 2 automatic reports and alerts. 5.1.14 WebGate assets with no position now show "No position" icon when hidden (instead of "hidden" icon). Terminal client assigned to single asset was not being granted access to asset when reconnecting without proper disconnect. KML page was causing error when user was assigned group access. Now allow http authenticated connections to reuse nonce within 1 hour. Previous code required new login for each connection. Hide max RPM and coolant values for i50s with bug that causes invalid values to be sent. Added custom icon option for assets, with person or car icon and 12-bit color options. Added asset group to /list output. Added IsatPhone Pro SMS support. 5.1.13 Kenwood console voice data was assigning incorrect asset ID. 5.1.12 Added output control for NAL devices. 5.1.11 APC daily counter was not adding counts when multiple positions received at once. 5.1.10 Added error warning when database connection times out. Adding asset via WebGate was generating minor error in log. WebGate report routine (timer 13) was not referencing string builder object correctly since 5.1.3. Updated Datong protocol to support new voltage calculations and 32-bit cell ID. Alert messages now converted to simple format for SMS. Picture and File emails are no longer sent to SMS recipients. SMS CRLF processing changed to reduce message size. 5.1.9 Hide query text from alert emails to improve security. AES encryption was defaulting to ECB mode, causing Fleet Broadband decryption error. 5.1.8 Added alarm state based on NAL emergency input. NAL assets will show with emergency icon while input active. Added oauth support for ArcGIS tokens. WebGate now only groups assets if more than one group is visible. 5.1.7 Allow email domains to include square brackets around IP addresses. Trip and summary reports were calculating incorrect stopped times if final trip did not have a stop. Added code for APC counting via special i50 firmware. Passenger counts added to trip and summary reports. 5.1.6 Modified StrConv routines for converting bytes to strings to force US conversions when in other locales. Updated trip reports to improve accuracy. Modified ini file routines to support unicode values. Show warning on settings screen and don't overwrite unicode with non-unicode strings. 5.1.5 GenX parsing routine was not clearing pacin variable for non-GPS packets -> error in log. Modified UTF routine to allow non-latin characters to be encoded. Modified xml and java escape routines to allow unicode characters. Map was not loading correctly on OpenLayers history page if less than two GPS positions were available. Find geofence for trip stop locations. 5.1.4 Added soapaction value for SOAP web service calls. 5.1.3 Updated user checkbox links on WebGate asset config screen. Trip and summary reports now include trip duration for trips where start or end times are unknown (using report start/end time). If two stops are detected in a row, assume start time was previous stop time. 5.1.2 Outgoing NAL Shout messages now get encrypted (if asset has encryption key set). 5.1.1 NAL routines were not handling encrypted messages. Now process encrypted packets for any number of encrypted blocks. Now use HTML web storage instead of cookies, where possible. This keeps local variables stored on local machine, without sending them as part of every request. DecodeEvents routine was mishandling quoted data, resulting in some parameter names losing their first character. Updated OpenLayers script to 2.13.1. Previous script had bug when using a zoom box at max zoom. Save OpenLayers overlay visibility state between sessions. 5.1.0 Now check data and log folders are valid, even if using database for primary storage. Updated permissions system. Added System Admin. Allow selection of groups when setting permissions. Supervisor/Admin users can see other users in the same group, plus users in any group they have full permissions to. Supervisors now limited to modifying links of other users - not user email/alert settings. Users can only modify other users of a lower permission level. e.g. Supervisors can edit normal user links, but not admin user links. Added Piccolo modem support. 5.0.37 Changed (All) group to (Shared), and (None) to (Unassigned) Now allow user asset selection based on group. WebGate address lookup now supports multiple returned results. 5.0.36 Changed "Volts" to "V" in battery text fields. 5.0.35 Added support for processing data inside Kenwood IP console voice calls. This allows emergency status and PTT GPS data support. Kenwood console connections now support concurrent inbound and outbound calls. Cancel incoming voice call if call dropped. Fixed Timer_24 overflow when console offline for 11 days. 5.0.33 Remove old database log backups when performing full backup. Kenwood console IP long data message reception was waiting for repeater custom feed (added for Kenwood testing). 5.0.32 Automatic summary and trip reports were both being run if either enabled. Set sensor units and scale factors at startup if default values found. 5.0.31 Now buffer user data while host inactive. Previous versions discarded data. Support text is now sent to inactive DataHost users. 5.0.30 Added sources to group config screen (in GUI and WebGate). WebGate was not able to edit (All) or (None) groups. 5.0.29 Sub-map margin was being reset by OpenLayers => sub-map slightly too short. CalAmp speed calculation fixed. Previous code resulted in zero speed values. 5.0.28 New source now defaults to (All) group, instead of (None). 5.0.27 Changed Kenwood console 9600 bps setting to "Very Narrow Band", where 9600 checked becomes Very Narrow unchecked. Added unique event IDs for engine alerts. CalAmp event IDs now mapped to standard range. Added Input processing for CalAmp. Added ADC sensor configuration for supported devices. Fixed asset notes field label. Now store ADC value in history even if disabled. Still only show to user if enabled. Added owner setting to sources (database v14 script required). This allows sources to be accessible by only one group. Added setting to include custom projection strings for OpenLayers maps. 5.0.26 Added check for truncated UDP packets for Mobius file reception. Include leading 0x in raw data report to prevent Excel removing leading zeros. Now update custom logo image when closing settings screen. Allow any Kenwood console local IP address. Previous code limited addresses to local IP addresses. 5.0.25 Translated Enfora event IDs into DataNet ID range, which DataHost can decode. COM port sources were entering error state during status check. Query backup routine was not handling multiple query entries. 5.0.24 Fixed WebGate script error for non-admin users. Added GPS antenna fault events for supported assets. 5.0.23 WebGate submap position was offset. GenX command responses now get acked. Service screen was not being shown in taskbar. 5.0.22 Fixed duplicate database record created when removing old WebGate messages. Meitrack coolant temp was off by 40 degrees. Now ignore Meitrack fuel consumption values outside normal range. Major WebGate update. 5.0.21 Some user property permission checkboxes were not being enabled when switching from admin user type. Password policy was always being applied when min password length set. Now only apply when enabled under settings. When editing license, now default to licensed values for User, Company and Email, instead of using previously entered values. Save last sent license details field and use it as default value when sending new license. Added notes field to asset settings, which can be edited under Asset Properties in GUI or in WebGate. Changing COM port settings now causes port to be reopened automatically. Source COM port numer was being limited to 1-16. Now allow 1-255. Source remote connections were not being cleared properly when socket disconnected. AES routine was always using CBC mode (required for TLS). Now enable EBC mode for modem communications. Renamed Volts to Battery for i50 packets to DataHosts. DataHost was not parsing Volts parameter as battery voltage. 5.0.20 Allow (None) group to be edited in WebGate. 5.0.19 Replaced most references to GPRS/CDMA with generic Cellular term. Moved Iridium MTMSN storage to Modems table. Now store last status message for each asset, and show in WebGate. 5.0.18 Removed Apply button from Group list screen, as it was not being used. Status message text now shows in WebGate message preview. 5.0.17 Handle Kenwood radio data (including status messages) from Sprite or i50 units. 5.0.16 Added xml and javascript escaping to resource text strings used in web pages. Now update geeServerDefs to point to actual map server. 5.0.15 Reverted to old Google Earth Enterprise map scripts. 5.0.14 Added CRLF breaks to Summary and Trip HTML output, so it will not be affected when sent as email (1000 char lines). Added proper handling of encoded-word email headers, both inbound and outbound. Updated string resource table to include most text references on WebGate (except error and config text). KW console messages were being sent with trailing ETX character. Added KW console processing for incoming long data messages. Added CalAmp support. 5.0.13 Added extra error handling to DNS UDP data arrival routine to remove log when remote side unreachable. Added timers for Kenwood console connections, allowing better retry and delay timing. Now find closest local IP address when console bound address not available. Received Kenwood console long/short messages were including leading zero byte in data. 5.0.12 Allow new DataHosts to have 16-char passwords. Summary report battery disc and reset counters were counting low battery and sleep/wake events. Now count specific events only. New Password window now returns to referer on close, if triggered by a force change request. Added force user password reset option to admin WebGate. Check for plain-text passwords in database when loading, and update records with encrypted versions. HTTP 304 response was including content type and length. Added "blank password" warning to user config screen. Added alert when multiple invalid logins are detected. Added password policy setting based on password length. Option to force password change when non-compliant passwords exist. Summary report distance was not being counted correctly. Added TCP connection limit per source IP address. This limit should be < total TCP connection limit. Added ini settings for TCP connection limits. Web connection limit can now be manually increased. Clear login error when submitting new login. Added throttling for source/web logins. 5.0.11 Added emergency reporting and alarm cancel to ASTRO25. Asset Properties window device type list was not being updated when license type changed. When updating licence, run init routine in case capabilities have changed. Run TTS and MUPS init routines with all licence types to ensure connections close when licensed capabilities change. Now save all host, terminal client and source passwords as encrypted data. Hide source, terminal client and aux web passwords on settings screens. Usernames now case insensitive, except for DataHosts logging in using user name. Increased host password length to 16 chars. DataHost still limited to 10. Added support text field, which is shown on WebGate login screen. Can contain link or email address for support. 5.0.10 Trip reports now ignore data until motion state changes. Summary report now sent in html format. Trip and summary report columns based on user alert settings. 5.0.9 Removed WebGate shortcut from installation script. Reports of some PCs not being able to uninstall this shortcut. Google Enterprise setting now includes map folder, allowing custom folders to be selected. WebGate asset config screen was not including a default inmarsat source option, causing error when updating asset. Bug since 4.9.62. FleetBB ID now looks for IDs ending in 0xFFFF or 0x0000, and processes these as 12-nibble IDs. Otherwise trims 0xF nibbles from end. Unlicensed assets now visible in WebGate for Admin users. 5.0.8 Server automatically removes trailing 0xF nibbles for FleetBB asset IDs when loading and saving. Bluetree, Airlink and Sendum WebGate config was not handling IDs less than 8 bytes long. 5.0.7 Cell TCP routine was not writing data to raw table for some unprocessed packets. Meitrack freezeframe data was being truncated if it contained comma. Allow asset type change if device is licenced and staying in same class, even if licence usage is exceeded by other devices. Changed /list page header to start with Asset_ID, instead of ID, to work around Excel bug where "ID" triggers SYLK decoding. 5.0.6 Class B assets can be assigned to unused class A license, if no class B licenses available. 5.0.5 Increased database timer rate when executing queries to improve speed. Now send BYE when finished Kenwood IP message, to speed up processing. Show warning when bound IP address or Kenwood Console IP address are not found in current adapter list. Update adapter list periodically. Added SecTrack setting to enable battery voltage decoding. Iridium Extreme emergency input now sets alarmState. Renamed Source ACK Time as TX Delay Time. Zero values for ACK Time were showing as -0.1. Now format times in HTML output as full IETF format. French locales were not decoding yyyy/mm/dd hh:mm:ss GMT format. Updated Google enterprise maps to latest version. Some email servers respond as if they support APOP, but do not. Now switch back to plain text if APOP fails. Now save unfinished SQL queries with asset/host IDs instead of index. dbTxt data was not being saved in database if no event (such as odo/hours in position reports). Now always decode database event field when loading data. Check for + sign (and remove) for SMPP source number. Set SMPP NPI setting based on dest phone number format. Numbers starting with + or 15-digits long are international. Added Trip based report, and automatic trip summary reports. 5.0.4 License form was referencing Form1 before it was loaded. Scramble key was not being detected for Kenwood console data. 5.0.3 Improved AES speed. Added AES-128/256 ciphers for SSL. IE11 on Windows 8.1 disables RC4, which is now considered insecure. BEAST attack possible with AES and TLS 1.0, but this is now considered less of a problem than RC4. Improved MD5 and SHA1 hash speed. Added 64 encryption keys for Kenwood repeaters. Added Queclink GL300 support. Added PotsDOCK setting to allow protocol to encode speeds up to 65535 km/h, instead of original 655 km/h. Increased max asset speed to 32767 km/h from 254 km/h. This limitation is based on database and file storage. AddText routine now buffers logs until main form is shown. Updated to DiCRPKI 3.9.4, which should fix memory error allowing us to revert to faster UTF routines. Added outgoing RTP support for Kenwood Console. 5.0.2 SQL query transactions now cancelled immediately when deleting an incomplete transaction. Service now closes if DataGate init routine returns error. Form1 load now delayed until licence OK. Add log routines were saving error log files to app folder before settings loaded. Save unfinished database queries when closing. 5.0.1 Now install service as part of main install routine. Updated service to allow command line install/uninstall. DataGate now shows service status screen when it detects another copy running. Added command line switches to start/stop service, with admin prompt for UAC. Updated Host 'Same As' routine to include group and active settings, and fix email alert setting. Added index for raw data reports (in database schema version 13). Updated application icon. WebGate history screen was showing error when queuing a new history request while old one not completed. Now shows latest request status. 4.9.63 WebGate user config screen was not disabling permission settings for admin users. Added NAL 10-byte packet support. Driver log out will clear route status for Trolley system. 4.9.62 SMPP messages are now delayed exponentially when a temporary error or throttling response is received. Fatal TLS alerts now close the connection immediately and clear any session values. Created Control Station option for Inmarsat sources, allowing DataGate to support multiple control stations locally. Added Kenwood options to select email ID and 200-byte email messages. Added ping component to run pings in separate thread. This allows DataGate to monitor remote servers. Show log when custom images/sound files are changed or removed (at startup and when saving settings). Server host and domain names were not being detected when manual DNS entry configured. Switched to international-aware processing for Radio ACK time and Hour/Odo editing. License now only accepted if PC host name matches. Now accept any GPS report as latest if report date or time unknown. 4.9.61 Fixed Google Enterprise maps interface. Kenwood console routines were not removing checksum from short message data. 4.9.60 Added separate user permissions for polling, sending messages, setting outputs and cancelling alarms. TT3000 output events now only accessible to users with set outputs permission. Accept URL encoded web addresses. 4.9.59 Don't redirect web hosts to primary domain name if using an IP address to access server. Kenwood routines were not handling group ID acks. 4.9.58 Keep outgoing Kenwood packets alive while channel busy, and then clear resend timer when acked/nacked. Kenwood console messages were having first and last characters truncated. Switched to serComm routines, replacing MSCOMM.OCX. Removed Transparent source option from Data Source setup. Added network info to asset export page. Added email/msg count, connection/buffer info to user export page. Added radius setting for Trolley route stops. This should allow less frequent reporting. Added Skywave XML support. Warning was showing when saving settings while data waiting to be written to disk. Warning now only shows if changing file locations. Cancelling unload while data waiting to be written was preventing unload happening a second time. Added command to save settings in flash when changing GenX settings. Added Google address search when using Google maps with Reverse Geocoding enabled. Added MeiTrack protocol support. Use GPRS setting was not being shown for NAL devices in WebGate config. Setting was being disabled when asset updated via web. Webgate history retrieve button now only enabled if user has not changed the report type. Updated OneLine routine to better compact lines with multiple spaces or repeat CR or LF characters. 4.9.57 COM port check routine was resetting source status every minute. Send network check to trolleys that have not communicated recently. 4.9.56 Public web site improvements. Set noAnswer bit when cancelling outgoing blocks. This forces frame reset. 4.9.55 Only set remote setting value input box if selected setting received. WebGate submap and addr lookup were being disabled if Google API location was not set. 4.9.54 Admin users are no longer able to add users or assets unless they belong to All group. This allows superuser to control where users/assets are assigned, and to preserve ID structure. 4.9.53 Moved live connection updates so that they are done after receiving a block of positions, instead of after each position. Optional stops now enabled/disabled based on previous trip, rather than being enabled for entire day. Added hidden and shelter fields to stops. Hidden stops allow better route synchronization. Added random component to web live connection timers to prevent simultaneous reconnects. 4.9.52 Public page now refreshes data automatically when any changes are made to assets, routes or stops. 4.9.51 Added custom Apple touch icons. Public page is now cacheable. Added sync string to public page. When page changes (settings modified), the page is automatically reloaded. 4.9.50 Don't send automatic licence update requests if licence disabled. History page was referencing street view object with non-Google maps. Now include scale on Google maps. Use iSeries status reports to populate asset battery voltage reading, using min voltage from report. 4.9.49 Dispatch database was not limiting input pin descriptions to 10 chars -> query error with long descriptions. 4.9.48 Public web page asset icons were sharing single icon object. Switched to multiple icons to fix display issue. 4.9.47 History reports limited to map view were using incorrect longitude checks. Improved route display for public page. Allow source connections from any IP address. Fixed setting reply type when replying to message using WebGate. Now include hash in logo, icon and sound urls to force cache updates when custom images/sounds changed. Custom image/sound files refreshed each time settings are updated. Don't need to restart to take effect. Default cache time now 1 year. 4.9.46 Added route zindex setting, multiple links and updates to public page. 4.9.45 Message links and ext data now read using synchronous connection at startup, to ensure all data is available. Clear public web page flag for https connections. Added custom favicon feature. DataGate looks for favicon.ico in program folder at startup. 4.9.44 Secure login page was not working when using non-standard HTTPS port. Added manual route control via web Config screen. 4.9.43 Public page Google icon performance improved. 4.9.42 Updated public web page to improve smartphone usage. 4.9.41 Added public web page for bus/trolley version. 4.9.40 Enabled error checking for history routine. Checking had been disabled in 4.9.38 for debugging purposes. Added database version check when accesing host ID in history table. Error was occuring when using database version < 3. Added clock check for live web links. WebGate shows warning if clock is off by more than 30 sec. Server generates alert if valid GPS reports are received with future timestamp. Indicates server clock error. WebGate uses server clock difference when calculating last activity. Now handle lat/lon data as double with 5 decimal places, instead of converting to single precision. Added route and stop editing for bus/trolley version. Hide GPS position in history reports where lat/lon=0. 4.9.39 Fixed WebGate history and export GET request error. Changed Google maps to use separate highlight icon instead of shadow (no longer available). Google highlight icon now larger. 4.9.38 History reports that are limited to map view now ignore data without position. Added GenX Garmin stops/eta. ETA currently requires ETA and Stop ID columns in reports. Map history page event data rows were not being cleared when changing icon types. Hot pursuit state was not being updated properly on WebGates when server time-zone > GMT. Updated processEmailData routine to handle header names appearing within fields (DKIM headers could contain header names). Some Gforce events were being sent to users with maintenance events turned on, instead of as accel alerts. Now delay WebGate message loading until after asset list is complete. This should improve reponsiveness with long lists. Added msg count to Users list window. Now delete message links at startup for users with msg panel disabled. Added setting to limit number of messages stored for Web Clients. Delete Web Client messages links at startup if over the limit. Use message link with historyID=-1 to indicate that messages have been deleted. Map history icons were showing "old" state for stale data when set to display heading. Now show heading for any report age. Removed message icon (shown when selecting message and using OpenLayers) from map screen. Added monitoring settings to generate alerts if servers go offline. Now send alerts when smpp/kenwood/mups servers reconnect after alerts generated for being offline. Removed Unicode check from cCDECL class, as this uses a call to get the desktop (DataGate service can now run without requiring 'interact with desktop' option). AddLength routine was using incorrect ID when incrementing asset byte counts for data transmitted to assets. Debug option was not being shown when using database ver < 11 as primary storage. ICOM data was not being written to raw data log. Added Raw Data and Usage reports to WebGate history. Asset position and telemetry data now blanked out for transmitted data in reports. Added icon to WebGate message header to quickly access most recent new messages/alerts. Added script to detect DOM loaded event for web pages. Should improve perceived loading speed. Web client time-zones were not being updated during login. These zones are used when formatting alerts. Enfora odometer was not being written to database. Added daily summary email report option for users. iOS 6 has problem with long polling connections. Fixed by pre-caching required images and aborting poll when loading iframes. Android download manager cannot fetch files using POST. Changed export and non-map history to use GET. Added check for IMEI when marking Iridium packets as sent. Now include email status messages for detecting sent status. Added user's time-zone to WebGate user properties screen. Added Street View for Google maps. This view is based on the selected asset's location and heading. Added history report column selection. Added follow icon to Google maps. Previously was only enabled on OpenLayers. Changed icons to non-optimized to allow animated gif. Multipart emails now contain random boundary string. Removed code that was adding extra spaces at end of email lines to prevent Outlook removing extra line breaks. This code was interfering with multipart boundaries. Limit SMTP RSET commands to 4 per connection. Some servers will detect repeated RSETs as spam. Added ZIP routines. Future development will allow DataGate to export .xlsx or .ods history data. Changed all csv output to us-ascii. This allows iOS to open the files. Added option to use separate history database. This should make archiving easier and backups quicker. Fixed HTML error on New Password page. Enable history search button when changing parameters, instead of waiting for server response. Now escape all control characters in Java and HTML data. Improved code to ensure message and history report lines becomes visible when selected. Turned off compiler option to optimize for speed, as this was causing compile performance problems with nested UDTs. Added support for Google Earth Enterprise maps. 4.9.37 Fixed WebGate script error where screen did not display correctly when using Google maps (since 4.9.33). Added basic TFTP support for GenX config updates. 4.9.36 Removed "remote source" option for Icom sources. Added emergency reports for ICOM. WebGate user properties screen had minor display issue with alert-only users. Enabled selection of asset permissions for supervisor users. Previous versions gave full access to supervisors. Fixed Airlink RF packet processing. RSSI was causing overflow. Airlink socket tag was being reset with each data packet. TCP socket now shows warning if receiving Airlink data without ID. TCP socket now logs all unprocessed data (for incomplete packets or connection timeouts). 4.9.35 Updated ICOM support. Changed history and log webgate backgrounds to plain blue. Now default to openlayersdev.js for OpenLayers maps as opposed to stable release openlayers.js. OpenLayers stable release causes map tile offset errors in IE10. 4.9.34 Expiring licence warnings were being sent every hour. Now limit to every 24 hours. Reset alarm state for old BB app when user sends cancel alarm function. 4.9.33 Added delay to openlayers asset icon click to allow Chrome to pick up double-click. Added initial ICOM support. Added print link and labels to map history page. Outgoing messages were not having all fields reset. Could trigger high priority warning in browser. No longer hide browser address bar for log and history windows. Some browsers weren't hiding anyway. Hide asset name in history window if report is for a single asset. Also shortened time string. Map history page now includes full event description. Replaced Host_ID with Host name for CSV history reports. Added table to map history page, showing more details for each event. Made map history report more interactive, including a printer friendly option. csvField routine was not quoting fields with carriage returns (unless they also had a space). Kenwood P25 ID was not being set via WebGate. Now refresh all asset links when modifying or deleting groups. WebGate config screens now automatically populate when adding assets/users/groups. Changed P25 addresses to decimal. Turned off WebGate warning beeps when offline (after warning screen cancelled by user). Added "Scan for Assets" option to history window. Added option to select events or messages for history. Now keep all http connections alive, except for error responses. 4.9.32 Improved handling of zero-byte UDP packets. Removed TCP connection timeout for modems. This prevents increased billing on some networks. Garmin Enfora messages sent to assets were not showing text in WebGate. User email addresses where being marked active if "Send Alerts" option disabled (when using database for primary storage). 4.9.31 Allow custom logo by default for certain builds. 4.9.30 Added options to choose what messages WebGate users see in browser: messages, data sent to assets, and/or alerts. Moved low priority messages, data sent to assets, and gps positions from user alert settings to user email settings. Added email tab to user properties. 4.9.29 Updated database error handling. Database Backup timeout was being set too high for SQL Server, causing default of 30 sec. Now set to 32000. Sending message via WebGate was failing due to change in last version. 4.9.28 Now clear user web session ID when session expires. Only show "user is logged in" message if session is active. Updated MDT send routine so that each remote command type can only be sent one at a time. Added option to choose between data warnings per day or per month. No longer send asset data usage warnings to admin email address. Only send to users with maintenance alert bit. Added monthly data limits (only enabled when using database for primary storage). Fixed array index typo in UpdateHostItem routine. OpenLog routine was converting timestamp to local time, but it was already in local timezone => log retrieved could be a day off in certain time zones. Reuse Sendum TCP sockets if no data has been received for approx 10 sec and new connection comes in. Increased Sendum TCP timeout to 10 min (if no data is received). Added support for 100 Continue response when sending web data. Added basic support for chunked web responses. Added OPTIONS response to web server. Source debug option was linking to the RX Only checkbox. Added unscrambling for NXDN data. Added support for PUBLISH method for Kenwood console. Dynamic geofence radius was showing in metres instead of feet for imperial users. When replying to message using WebGate, create external data response if original message was external data. Added GPRS/CDMA source port to log entries for unprocessed data. Now save remote port in raw received data log, instead of local port. Added ENFORA and TCP network types for logging. Now keep a record of most recent StopID for iSeries devices. Send to DataHost >= 4.2.22. Update ETA when Stop status becomes active or done. Added ETA to WebGate asset properties. 4.9.27 Added Server Alerts option to user email alerts page. When enabled, this user will get server error/alert logs emailed to their addresses. Sensor 2 values were not being formatted correctly for web page. Sensor 2 and VOUT were not being cleared as part of changes in previous version. 4.9.26 Added IMEI to Direct IP transmit status log. Clear iSeries battery, motion, sensor, etc states if not included in a new position. Added host name to from address for outgoing emails from DataGate. 4.9.25 Database byte counts now stored in local time. This matches internal records. Now combine raw data queries into batches. Fixed SQL query for updating daily usage. 4.9.24 Enabled remote server setting configuration for GPSTrac smartphones. Now send ACK to Enfora wakeup with no ID. Modems should not be reporting these packets, so may need to check why they are being received. Store incoming Message-ID from emails, and include this with "In-Reply-To" header when replying to message. Monitor and log web client connection timeouts. Improved web client status on user list, including adding IP address. Fixed possible race condition on web redirect page, where cookie might not get updated before page redirect. Sendmail routines were not checking whether host was valid when matching HostID to user account. Now disconnect DataHost web and WebGate connections when "Disconnect" user button is pushed. Invalidate sessions when a host is disconnected. Monthly satellite byte usage was not incrementing. If using database, values would update at reboot only. Updated Spot email processing to pick up case insensitive "findmespot.com" string. G* changed web service address from findmespot.com to fms.ws. Now prompt user to continue session if session cookie found in GET request. Added /reset web page to clear cookie. Added separate packet timer for Iridium switchover delay. Reset timer if new data received. SMS limit was not being checked when using database for primary storage. SQL queries for updating daily usage were being combined with other assets. This would shift usage to other assets, and create false usage warnings. Limit number of packet retries in situation where data is being received from an asset, but asset is not responding to server. Now force network switch after one extra retry. 4.9.23 Iridium MO ACK was not being sent correctly. Added MTMSN field for modems to allow incrementing these values. Set MTMSN when sending Iridium data, and monitor for successful send. If not sent, send ring alerts. Added setting to control how often ring alerts are sent. Added setting to delay switchover to Iridium from terrestrial network. Changed most internal timing references to UTC. Previous code was using local time, which would cause timing inconsistancies during time zone changes. Added wavTimeStr to store last modified time for sounds files. This gets updated when the sound filenames are changed, causing browsers to load the new sounds. 4.9.20 Login page timeout now changes login button to "Refresh Page", instead of popping up alert box. Added X-Robots-Tag HTTP header to prevent search engine indexing. Now use email host name for preloading ESRI tokens, instead of host name. Now retrieve ESRI tokens for both http and https domains. Daily token check now updates tokens for any domain (previously was only updating for local host name). Moved Timer8 enable step to after init routine, rather than after db open. When editing map overlay layer, it would always move to bottom of list. Order is now retained. Added initial MTDATA support. Change max password length for WebGate to 28 chars Added Iridium Denied error message, which is sent by iSeries devices when Iridium transceiver is locked. Email receiving routine was not handling MIME boundaries without quotes. 4.9.19 Removed