Releases: GridProtectionAlliance/openPDC
openPDC v2.9.318
Pre-release installer from nightly build, v2.9.318
What's Changed
- PDC-1 Apply culture settings to all WPF framework elements by @StephenCWills in #165
- Updated GrafanaController to sync GSF changes by @ritchiecarroll in #167
- PDC-8: Updated installer to WiX 3.14.0 by @ritchiecarroll in #166
- Service Command Controller by @ritchiecarroll in #169
- Added Targets for PR logic by @clackner-gpa in #162
Full Changelog: v2.9.148...v2.9.318
openPDC v2.9.148
This is the official release for openPDC v2.9.148
This is version 2.9.148 of the openPDC, released on March 31, 2022
FYI - Windows installers for openPDC v2.9.148 prior to 4/9/2024 were suspectable to CVE-2024-24810. The installer download below has been updated to compensate for this vulnerability. Note that since this only affected the installer, the openPDC version remains the same. If you have an installer (i.e., the openPDCSetup.msi
file) cached on your system, it is recommended to replace the file from the updated download below.
This is an optional minor point release of openPDC v2.9 which includes a POSIX deployment for Linux and OSX, see updates below for details.
NOTE: If you are upgrading from a prior version of the openPDC, older than v2.9, you must migrate your existing configuration to use the latest database schema when the Configuration Setup Utility is run after the installation completes - this version includes schema updates.
Updates Since v2.9 November Release
- This release includes a POSIX deployment (see deployment steps below)
- Windows installer includes updated PMU Connection Tester, v4.7.1
- Updated SerialClient to Disconnect and Dispose SerialPort on class Dispose (fixes rare unhandled exception on service shutdown)
- Added UpdateExistingTagCompressionState parameter to PI Adapter to control if tag compression attribute should be updated on existing tags when UseCompression parameter is enabled
- Added time reasonability parameters to PI Adapter
- Added SkipDigitalAlternateTagSync operation with PI Adapter Tag Sync
- Added Gzip export option to GEP data extractor tool
- Updated DeviceStats adapter SQL
- Added configuration timeout parameters to DeviceStats adapter
- Improved phasor protocol adapter for manual measurement key lookups
- Updated phasor protocol to better handle auto-repeats with spanned CFG3 frames
- Fixed phasor protocol CFG3 Guid attribute display
- Simplified IEEE C37.118 concentrator use of Device model (no local proxy settings required)
- Fixed encoding issues with ValidateAssemblyBindings
- Fixed issue with simulated timestamp ordering during file-based replay
- Fixed restoration of file-based auto-repeat playback checkbox when deserializing a saved connection file
openPDC POSIX Deployment Steps
Note: The following steps tested on Ubuntu 20.04
Prerequisites
- Make sure Mono is installed (this build tested with v6.12.0)
https://www.mono-project.com/download/stable/#download-lin-ubuntu
- Make sure
wget
is installed, e.g.:sudo apt install wget
- Make sure
unzip
is installed, e.g.:sudo apt install unzip
- Make sure
sqlite3
is installed, e.g.:sudo apt install sqlite3
- Make sure
build-essential
is installed, e.g.:sudo apt install build-essential
- Make sure PAM libraries, i.e.,
libpam0g-dev
, are installed, e.g.:sudo apt install libpam0g-dev
Install Steps
# Download openPDC POSIX release
wget https://github.com/GridProtectionAlliance/openPDC/releases/download/v2.9.148/openPDC-POSIX.zip
# Unzip POSIX release
unzip openPDC-POSIX.zip
# Find a suitable install location, e.g., /opt/
sudo mv openPDC /opt
cd /opt/openPDC
# Generate a service certificate
mono MonoGenCert.exe openPDC
# Enable local user auth for openPDC (must run as root):
sudo bash enable-security.sh
# Add current user as initial openPDC admin (must run as user):
bash add-user.sh
# Register openPDC service to run as a daemon (must run as root):
sudo bash register-openPDC.sh
openPDC Web Management Interface
Authenticate on openPDC web login page
Note that user name is in the format of domain\username
. If you are running as a local user you can use computer name as the domain name, or simply .
for short. For example, if the openPDC admin user is a local account called john
, then enter user name as .\john
Once logged in you can navigate to Settings > Users
on the main menu to add other users.
Available openPDC Web Services
- Statistics metadata web service, e.g.:
- Statistics data web service, e.g.:
http://localhost:6052/historian/timeseriesdata/read/current/32/json
- Grafana openHistorian data source for statistics, e.g.:
- Alarm web service, e.g.:
Run openPDC Console
cd ~
mono /opt/openPDC/openPDCConsole.exe
Authenticate as requested.
To login as another user, enter login
command into console.
Enter command exit
to exit console application. openPDC will continue to run.
Controlling openPDC Daemon
Stop openPDC Daemon
sudo /opt/openPDC/openPDC stop
Restart openPDC Daemon
sudo /opt/openPDC/openPDC start
Uninstall Steps
# Unregister openPDC as Daemon
cd /opt/openPDC
sudo bash register-openPDC.sh -u
# Remove openPDC folder
cd /opt
sudo rm -rdf openPDC
# Remove user cache
cd ~/.config/Grid\ Protection\ Alliance/
rm -rdf openPDCConsole
Asset Filename | SHA256 Hash |
---|---|
Synchrophasor.Binaries.zip | 3D40A8CFD33EA64825A586716A7DDAA15F8E80494FBAE1330C5DDBF3F941AAA5 |
Synchrophasor.Installs.zip | F3097477925768B4B7CB48C0CFB568F93D9DC92119A5D2B439E5D81A78BCFC24 |
Synchrophasor.Scripts.zip | D6047EE6816CD5D42BAF8A9B2B4C77D762DFB3B361F57B3FDD5E5668DB4DA9F7 |
openPDC-POSIX.zip | BD5C7E4A67C4150331B4FE120651C46A3CB354FA0B34A139FF7FA9C6D5ABF461 |
openPDC v2.9.118
This is the official release for openPDC v2.9.118
This is version 2.9.118 of the openPDC, released on November 17, 2021
NOTE: If you are upgrading from a prior version of the openPDC, older than v2.9, you must migrate your existing configuration to use the latest database schema when the Configuration Setup Utility is run after the installation completes - this version includes schema updates.
Updates Since v2.9 May Release
- Improvements for parsing / generating spanned IEEE C37.118-2011 Configuration 3 Frames
- Fixes for STTP Reverse Proxy subscribing server auto-reconnection
- Optimizations to PDC initialization for non-historian associated devices
- CSU updates to adjust default value of max thread pool values to reduce context switch issues on larger machines
- Added option to allow disconnection event for file-based inputs when end-of-file is encountered
- Improved Grafana metadata
select
operations for variable queries - Added slice-based expression
Eval
function to GSF Grafana functions - Improved access locking around legacy OH1.0 metadata files
- Added option to OSI-PI output adapter to only synchronize the
AlternateTag
field - Fixed manager statistic overflow issues related to average latency calculations
- Improved synchrophasor phase guessing to include high confidence options
- Updated phasor measurement mapper data stream monitor to allow restarts for passive connections
- Improved operation of the GEP Data Extraction tool
- Added extra security to loading tag template files with calculation operations
- Improved
SynchronizeLocalClock
adapter device time validation operations - Updated usages of
CreatePointTag
to apply analog and digital label parameters where applicable - Added SEL PDC Import tool to installation
- Added APP DFR Import tool to installation
- Updated included PMUConnectionTester installer to v4.6.7
- Updated included StreamSplitter installer to v1.1.3
- Improved default tag-naming expressions when applied from
UpdateTagNames
tool:
{CompanyAcronym}_{DeviceAcronym}[?{SignalType.Source}=Phasor[:eval{'{PhasorLabel}'.Trim().ToUpper().Replace(' ','_')}_eval{'{SignalType.Abbreviation}'.Substring(0,1)}eval{'{Phase}'=='+'?'1':('{Phase}'=='-'?'2':'{Phase}')}[?{BaseKV}>0[_{BaseKV}]][?{SignalType.Suffix}=PA[.ANG]][?{SignalType.Suffix}=PM[.MAG]]]][?{SignalType.Acronym}=ALOG[:eval{('{Label}'.Trim().Length>0?'{Label}'.Trim().ToUpper().Replace(' ','_'):'ALOG'+((int){SignalIndex}).ToString().PadLeft(2,(char)48))}]][?{SignalType.Source}!=Phasor[?{SignalType.Acronym}!=ALOG[:{SignalType.Acronym}[?{SignalIndex}!=-1[eval{((int){SignalIndex}).ToString().PadLeft(2,(char)48)}]]]]]
See latest updates since previous release.
File Hashes (SHA256)
Synchrophasor.Binaries.zip => 7A483F0CE8B1FA63DC7BCABEC48D0C813BD0AE8D8BB5ABB924E95875AB0D6C07
Synchrophasor.Installs.zip => BBE6D0878319B7379C7E4598F3D546878B51CBBE2912E30247F7A6CD4B6626BF
Synchrophasor.Scripts.zip => 6C5A2385F92AAB7E3524D348B40856C002915D6D004DAF745F14F2AC38401DE9
openPDC v2.9
This is the official release for openPDC v2.9
This is version 2.9.42 of the openPDC, released on May 15, 2021
NOTE: If you are upgrading from a prior version of the openPDC, you must migrate your existing configuration to use the latest database schema when the Configuration Setup Utility is run after the installation completes - this version includes schema updates.
Security Updates:
This version of the openPDC corrects two vulnerabilities, both related to the web interface in the version 2.8 release of the openPDC – note that the main branch and nightly builds have been patched since September 2020. The vulnerabilities were (1) CVE-2020-11023, related to the version of the jQuery JavaScript library embedded with openPDC, and (2) CVE-2019-10768, related to the version of the Angular JavaScript library embedded with openPDC.
The jQuery JavaScript library is heavily used by the openPDC web interface, including the login page. The Angular JavaScript library is only used on the “Real-time Measurements” screen and a user must be authenticated to access the screen. Both reported vulnerabilities require vulnerable JavaScript code to be exploited by an attacker and would require an authenticated user execute the modified code.
Note that none of the GPA web-based code actually used any of the affected functions identified in the JavaScript library vulnerabilities, as such, the noted vulnerabilities could only be exploited by manually modifying an existing or creating a new web page in the openPDC. Updating a web page in openPDC requires physical file access to the “wwwroot” folder in the openPDC. Generally, GPA does not consider either of these vulnerabilities as exploitable within an unmodified openPDC deployment.
New Tools / Features:
- AdapterExplorer Tool - analyzes the configuration of a Time-Series Library system validating inputs, outputs and current values
- BulkCalculationState Tool - allows bulk state management of action adapters by searching and filtering
- SEL PDC Importer Tool - directly imports SEL 3373 or 3573 PDC configuration files
- Bulk Sequence Calculator Adapter - creates and calculate sequence values (+/-/0), in bulk, based on current system configuration
- New system level statistics in Manager application with global lead/lag time adjustment option
Major Updates:
- Added full support for IEEE C37.118 Std2011 optional Configuration Frame 3
- Added tag removal options for OSIsoft PI adapter metadata synchronizations
- Improved phase guess operations for synchrophasor device wizard
- Updated DNP3 adapters to latest OpenDNP3 code base with SSL support
- Added "SystemName" for system level deployment level identification provided at install time
- Added SNMP reporting for system statistics
- Allows specification of alternate ID codes when using a multi-endpoints for device connections
- Improved operation with PostgeSQL schema
Notable Updates to openPDC for version 2.9
- Added adapter explorer tool from GSF to openPDC installation
- Added auto-sync ability for service / manager database configuration mismatch.
- Added BaseKV to PhasorDetail model for export
- Added code to correct any non-unique SQL Server Device unique IDs before database migration.
- Added full phasor export button (in addition to per-device functionality)
- Added Modbus to WPF manager UI menu option and cleaned up menu text
- Added new dependent DLLs to installer for updated PostgreSQL database assembly
- Added phasor CSV export to device details (CHNAM export)
- Added system name to HTML page titles
- Added UniqueID GET Parameter to DeviceStatus page to use across systems
- Fixed build issue with application of assembly bindings
- Fixed CSU failure messages for SQL server
- Fixed installer deployment names for Npgsql dependencies
- Fixed PostgreSQL operation for assigning existing database
- Improved installer description for historian view tool
- Null handling cleanup in DataHub / ServiceHost
- Updated all database connection tests and failure messages to be consistent
- Updated CSU for openPDC to default to virtual output adapter for archive, with description recommending use of OH2
- Updated CSU project language target to 8
- Updated CSU to execute ValidateAssemblyBindings with proper working directory.
- Updated CSU to minimize before attempting to start service to prevent unresponsive UI
- Updated CSU to start service on separate thread no prevent UI lockup
- Updated debug config to use legacy groups lookups for faster start times on non-domain attached systems.
- Updated installer to add Utilities folder with CLI shortcuts / also now remembers last install path.
- Updated installer to retrieve last service account during installation.
- Updated openPDC setup to pre-compile (NGEN) openPDC Manager application
- Updated openPDCConsole to default to Tls12 only.
- Updated Postgres assembly version to use 4.0.11
- Updated target config file to openPDC in UpdateTagNames config
See full release notes since last release.
Note that this release is a minor update to version 2.9.39 that was released on May 7, 2021. Updates to version 2.9.42 include: improved system CPU estimation, web device status now properly reports statistic values, web browse devices page now links to voltage/current mapping screen, and config file now set to allow for very large arrays for large deployments.
openPDC v2.8.196
Official intermediate stable release of version of the openPDC (v2.8.196).
Release Notes
This minor intermediate release version of the openPDC includes a new feature for specification of alternate ID codes when using a multi-endpoint server specification for device connections. To apply multiple access ID codes, update the connection string that targets multiple servers with a slash and alternate ID code at the end of each defined end point. For example:
accessID=95; server=192.168.1.10:4712, 192.168.1.12:4712/96, 192.168.2.10:4712, 192.168.2.12:4712/96
In the example above, both 192.168.1.10:4712
and 192.168.2.10:4712
use the normally configured access ID of 95
(now considered the default access ID), but 192.168.1.12:4712/96
and 192.168.2.12:4712/96
specify an access ID of 96
.
See updated docs for the AccessID property for the PhasorMeasurementMapper
input adapter.
Known Issues
If you are setting up device that publishes data unicast or multicast only over UDP, there is an exception that shows up in the log because of a missing dictionary key. If you encounter this, just add something like the following to your device connection string:
; server=localhost:9999
IP is local, port is expected to not exist, so this ignored from a connection process perspective, but this resolves the error and the UDP connection can proceed as normal. Note that you can add the same connection string (same IP and unused port) to any number of UDP devices safely.
Other Fixes
- Updated IEEE C37.118 frame realignment to be handled more gracefully during stream initialization
- Updated Configuration Setup Utility to properly add assembly redirect bindings to existing configuration files
- Improved metadata exchange operations in a mutual subscriptions to support remote calculation scenarios
- Updated bulk sequence calculator to be less sensitive to changes in configuration while child adapters are initializing
- Simplified bulk adapter input initialization sequence for independent action adapter managers
- Updated cron schedule part parsing to mod user input by max value so support day 7 and hour 60 style scenarios
- Added an "AdapterExplorer" utility to the installation
- Updated installer to pre-compile openPDC Manager application (NGEN)
- Updated openPDC Console to default to TLS v1.2 (removing older protocol options)
openPDC v2.8
Official stable release of version 2.8 of the openPDC (v2.8.115).
NOTE: If you are upgrading from a prior version of the openPDC, you must migrate your existing configuration to use the latest database schema when the Configuration Setup Utility is run after the installation completes - this version includes schema updates.
Security Fixes
Security scans of older releases of the openPDC have identified two JavaScript library vulnerabilities included from the Grid Solutions Framework, specifically jQuery and knockout. Installation of version 2.8 of the openPDC resolves these reported issues through library updates.
For jQuery the vulnerability was CVE-2019-11358:
jQuery before 3.4.0, as used in Drupal, Backdrop CMS, and other products, mishandles jQuery.extend(true, {}, ...) because of Object.prototype pollution. If an unsanitized source object contained an enumerable proto property, it could extend the native Object.prototype.
Because of the way GPA uses jQuery within the openPDC, GPA deems the risk of this vulnerability to be low.
For knockout the vulnerability was WS-2019-0015:
Knockout, before 3.5.0-beta, has an XSS injection point in “attr” name binding for browser IE7 and older.
Exploitation of the knockout vulnerability required the use of IE7. Since the openHistorian requires IE11 or better to function, GPA deems the risk of this vulnerability to be low. However, GPA does suggest updating to a newer, more secure browser regardless.
New Updates and Improvements
- Includes latest updates to STTP, including reverse connections
- Added NGEN based pre-compile at install time to boost overall performance and improve application start times.
- Improved functionality of point tag naming convention.
- Updated point tag naming convention to include phasor type and phase information.
- Added ability to disable self-web hosting
- Disabled checking for CAS publisher policy for all application config files to speed start time.
- Fixed various issues with web-based synchrophasor wizard
- Updated synchrophasor wizard to allow for either disabled or deleted phasors with better visual feedback on selected options.
- Updated synchrophasor device wizard to update baseKV for simple phasor updates.
- Improved phase guess operation in device wizard.
- Updated delete device operations in DataHub to also remove children devices before parent device.
- Updated dev wizard screen to allow export of config regardless of editor rights.
- Updated multi action adapter collection base implementation to allow for customized derived class connection string parsing.
- Updated independent adapter managers to support input, output and action adapter collection types.
- Updated to independent adapter manager samples to accommodate and end-user API.
- Updates to independent adapter manager classes to handle multiple inputs per adapter from collection manager base classes.
- Updated independent adapter managers to support grouped multiple inputs.
- Updated independent adapter manager collections functionality.
- Added configuration settings to control if eDNA and OSI-PI Grafana controllers are automatically loaded.
- Added error handling to SQL Server role migration in Configuration Setup Utility.
- Updated imported labels in device page to remove underscores with imported phasor labels
- Updated long/lat layout / operation on device wizard (dev page)
- Added initial options for connection string building with synchrophasor wizard screen
- Added serialized configuration section to device wizard
- Added ability to import and export config
- Updated location meta-data function signatures
- Cleared Sonar warnings and general code of newly added code.
- Fixed access keys to be unique in custom installer dialogs
- Applied custom action to installer to load previous company information.
- Added flag for enabling web hosting to systemSettings when missing
- Condensed PhasorHub initialization to web Startup.
- Updated knockout bindings in COMTRADE importer to target first body element.
- Updated GrafanAuthProxy to better handle initial startup user synchronization,
- Added sub-title feature to primary Layout.cshtml
- Cleaned up code for trend measurements and export data handler
- Updated buttons on select group devices page to read "export/import" instead of "save/load" to better serve context.
- Updated synchrophasor screen to accommodate application of calculation tags against devices setup with Gateway style connections.
- Added Grafana EndPoint to get all device alarm statuses
- Added Grafana Endpoint to get Device Groups
- Fixed naming of QueryAlarms issue in GrafanaController
- Updated device queries to only filter out device groups when both protocol is virtual and access ID is set
- Updated service host to inject DeviceGroupMeasurements selection table into data source updates
- Added extra safety checks for database to runtime ID conversion in data source propagation override in ServiceHost implementation.
- Updated metadata propagation handler for injection of DeviceGroupMeasurements table to better handle child devices of concentrator connections and to log error, but not fail, if there is an exception.
- Added check to ignore disabled group devices when creating DeviceGroupMeasurements metadata
- Improved comments and readability for propagation of DeviceGroupMeasurements
- Updated DeviceGroup model to default Enabled field to true
- Removed historian from device group setup, since it is not used.
- Added dynamic acronym database uniqueness validation to device and device group editing screens.
- Added code to dynamic selection tables to scroll to bottom after row is added.
- Added name as well as acronym to device group selection list
- Updated data operation for openHistorian adapters to automatically add metadata exclusions for device group records for all defined data publisher instances. This way device groups remain local.
- Updated default point tag name expression to always include base kV level when provided.
- Updated default point tag name expression in openHistorian manager application.
- Updated openHistorian manager to auto-elevate when using SQLite for cases when database is stored into program files folder.
- Fixed point tag name default expressions
- Updated SQLite database selection to not auto-select sample data script.
- Updated device dev wizard to ignore connection string values that contain a literal "null" string value.
- Updated web manager shortcut registry location to target SOFTWARE\Grid Protection Alliance instead of SOFTWARE\GPA to match other registry entries.
- Added additional config file for load file viewer application.
See full release notes since last release.
openPDC v2.7
Note: This is not the latest version.
Official stable release of version 2.7 of the openPDC (v2.7.4).
NOTE: if you are upgrading from a prior version of the openPDC, before version 2.6, you must migrate your existing configuration to use the latest database schema when the Configuration Setup Utility is run after the installation completes - this version includes schema updates. Upgrades from version 2.6 can use database schema as-is.
See full release notes since last release.
Note: PMU Connection Tester is installed separately:
https://github.com/GridProtectionAlliance/PMUConnectionTester/releases
New Updates and Improvements
- This version includes the BETA version of STTP: https://github.com/sttp
- Added Modbus Protocol to SQL scripts.
- Fixed up protocols in initial data set scripts.
- Fixed race condition between HandleConnectOnDemandAdapters and adapter initialization.
- Fix DataPublisher subscribe requests to propagate input measurement changes to the routing tables.
- Fixed event wiring in AllAdaptersCollection.
- Fixed casing on protocol definition for DNP3.
- Fixed protocol ID of the test device in the sample data set.
- Fixed NULL comparisons in SQL trigger for tracking changes to Device records.
- Updated the schema version of the databases to reflect the change to the device update trigger.
- Modified order of operations in DataPublisher.HandleSubscribeRequest to fix the issue of subscribers not receiving cached measurements upon subscription.
- Added ManageCertificate command to ServiceHostBase.
- Updated SerializedSchema.bin using refactored Schema class.
- Added code to detach from the StatisticsEngine.Calculated event in DataSubscriber.cs.
- Fixed parameter parsing for PublishInterval in unsynchronized data subscriber
- Added ping console command to servicehostbase.
- Updated ping command to split server setting to remove the port.
- Added code to handle connect on demand scenarios for DataSubscriber.
- Fixed temporal support in DataSubscriber.
- Updated gateway style statistics to fall-back on reflection in source object in case properties are available.
- Modified the sentinel value of objects derived from the AnalogValueBase and DigitalValueBase classes.
- Added validation to the routine that updates the connection string after the user updates a connection string parameter.
- Fixed design-time errors in PagedViewModelBase.
- Updated the status flag reference in the RealTimeMeasurementUserControl to match the status flag reference in InputStatusMonitorUserControl.
- Added IEEE C37.118.2 tab to the status flag reference.
- Fixed input wizard to apply the selected PDC vendor device ID to the concentrator on save.
- Added validation for the chart refresh interval to ensure that the Manger doesn't crash when the value is misconfigured.
- Fixed Latitude and Longitude fields so that trailing zeros don't cause validation errors on the Device page.
- Added line-to-line option under Phase to the Manage Phasor page of the Manager.
- Fixed up startup operation that fills in missing protocols.
- Removed stats from device outputs - although statistics may be associated with device, it will not be the adapter producing them...
- Added more messaging around ToogleBadData testing function and restricted command to admins and editors.
- Updated automated output measurement creation for power calculations to use HistorianID from associated voltage.
- Updated default lag-time of PowerMultiCalculatorAdapter to 5 seconds.
- Fixed the metadata import adapter to use the parent acronym when using source prefix to name child devices.
openPDC v2.6
Note: This is not the latest version.
Official stable release of version 2.6 of the openPDC (v2.6.13).
NOTE: if you are upgrading from a prior version of the openPDC, you must migrate your existing configuration to use the latest database schema when the Configuration Setup Utility is run after the installation completes - this version includes schema updates.
Note: the PMU Connection Tester is no longer automatically included with the installer package and will need to be installed separately:
https://github.com/GridProtectionAlliance/PMUConnectionTester/releases
Security Fixes:
Security scans of older release versions of the openPDC have identified vulnerabilities related to the version of SQLite that was being used. The vulnerability only applies when a SQLite database is being used as the primary configuration, however, because these older dependencies were distributed with the GSF dependent products, a higher level of concern is warranted. The current openPDC release version 2.6 corrects all SQLite vulnerabilities that have been idenfied, specifically by updating the included sqlite3.exe and System.Data.SQLite.dll files to their latest versions. Older versions of the openPDC can safely delete these files from the product installation folders for deployments that do not depend upon SQLite. The corrected CVE list is as follows: CVE-2015-3717, CVE-2018-8740, CVE-2015-3414, CVE-2015-3415, CVE-2015-3416, CVE-2015-3417, CVE-2015-5895, CVE-2017-10989, CVE-2015-6607, CVE-2016-6153, CVE-2018-8740
Also, security scans of openPDC may report CVE-2018-14041 based on the included version of Boostrap, specifically version 3.3.7, however the vulnerability only applies when the Bootstrap JavaScript files tooltip.js, collapse.js or scrollspy.js are accessible and in use. Since these JavaScript files are not included, neither via physical deployment nor as emebdded resources, the vulnerability does not apply to openPDC or any other GPA product based on the Grid Solutions Framework that includes web-based features.
New Updates and Improvements
- Upgraded included SQLite assemblies to version 1.0.109 to clear associated CVEs (see above)
- Restored old code for looking up a user's groups as a fallback strategy when the new (recommended) code fails - this will help with any authentication issues that can occur when certain AD environments reject user authentication (per last openPDC release)
- Fixed error that would occur with new SQL Server configuration setups that was causing user to have to go back and retry the step so setup would continue successfully
- Updated configuration setup utility so that it would not use connection string pooling for SQL Server connections during configuration
- Improved Dyanmic Calaculator adapter functionality
- Added Database Notifier adapter that will execute a database expression based on a user defined expression / condition (similar to existing Email Notifier adapter)
- Added configuration option to allow manual enabling or disabling use of FIPS cryptographic modules. Defaults to
Auto
which reads FIPS setting from registry. - Improved operation and integration of openPDC DNP3 adapters and updated core libraries to current version as available from https://www.automatak.com/opendnp3/
- Fixed DataPublisher subscribe requests to propagate any input measurement changes to the routing tables
- Fixed input wizard in openPDC Manager to apply the selected PDC vendor device ID to the concentrator on save
- Fixed Latitude and Longitude fields in openPDC Manager so that trailing zeros don't cause validation errors on the Device page.
- Added validation to the openPDC Manager routine that updates the connection strings after the user updates a connection string parameter in the custom adapter screens
- Added "L" option in openPDC Manager to phasor identifiers of line-to-line configurations
- Updated SQLite data provider strings to target latest version
- Added code to properly detach from the StatisticsEngine.Calculated event in DataSubscriber.cs
- Modified order of operations in DataPublisher.HandleSubscribeRequest to fix the issue of subscribers not receiving cached measurements upon subscription
- Improved Modbus configuration screen integration within openPDC UI Manager
- Added IEEE C37.118.2 tab to the status flag reference in the openPDC Manager
- Fixed minor issues with Postgres deployments
- Fixed parameter parsing for PublishInterval in unsynchronized data subscriber
- Updated StatHistorianReportGenerator to lookup for device status table and include nightly stats when available
- Fixed NULL comparisons in SQL trigger for tracking changes to Device records for all SQL scripts
- Improved DeviceStatus page in web UI for device monitoring
- Fixed layout options for screens in the HistorianView tool
- Added new web-based openPDC and device monitoring APIs for Grafana dashboards
- Added dashboard plugins for openPDC monitoring from openHistorian hosted Grafana visualizations
- Fixed web-based login issues with IE
- Modified IE subscriptions on DeviceStatus page to be throttled (IE was slower than other browsers)
- Cleaned up default settings for web-based authentication failure redirections
- Added current version number to setup UI screens
openPDC v2.5
Note: This is not the latest version.
Official stable release of version 2.5 of the openPDC (v2.5.6).
NOTE: if you are upgrading from a prior version of the openPDC, you must migrate your existing configuration to use the latest database schema when the Configuration Setup Utility is run after the installation completes - this version includes schema updates.
See full release notes since last release.
Note: the PMU Connection Tester is no longer automatically included with the installer package and will need to be installed separately:
https://github.com/GridProtectionAlliance/PMUConnectionTester/releases
New Features and Improvements
- Added initial web based management system available at http://localhost:8280/ (see screen capture below)
- Fully overhauled system security
- Added Modbus device connections and configuration screen
- Added eDNA historian adapters
- Added ability to control TCP Nagle algorithm through configuration and applied better defaults when applicable
- Added
quiet
/resume
console commands, withq
andr
alias shortcuts, to reduce noise during interaction - Improved sub-second time handling
- Improved startup time of applications without Internet access by allowing disabling of generate publisher evidence in the NoInetFixUtil
- Added new GSF time-series Filter Adapters and management screen
- Added new Grafana functions and capabilities (see full list)
- Better pre-compilation options of Razor web pages at service start
- Provided CSV export options to daily quality reporting
- Added "useSourcePrefixNames" boolean connection string parameter to DataSubscriber to allow override ability on subscription prefixes applied to devices names
- Included new GSF adapter to allow selection of a "best" value based on configuration options
- Updated POSIX based installations to default to Basic authentication
- Modified the latest values cache in DynamicCalculator to be fed by the concentration engine to resolve usability issues
- Updated Grafana annotation queries to always operate at full resolution so that no alarms will be missed
- Fixed memory leak in MultiProtocolFrameParser when replay start time and stop time is specified
- Fixed logic error in AverageFrequency calculator when reporting unreasonable results as NaN
- Fixed SQL syntax for updated Phasor synchronization in DataSubscriber
- Updated LDAP security provider to allow UserData.IsDefined to be assumed to be true if no cached user can be found to allow authentication to be attempted
- Added a safety check around target cache acquisition for cases where cache may have been disposed
- Handled edge case in SIDToAccountName to resolve errors with null input
- Removed references and dependencies on to Thread.CurrentPrincipal throughout system as part of security overhaul
openPDC v2.4
Official stable release of version 2.4 of the openPDC (v2.4.120).
See full change log since last release.
Note: the PMU Connection Tester is no longer automatically included with the installer package and will need to be installed separately:
https://github.com/GridProtectionAlliance/PMUConnectionTester/releases
New Features and Improvements
- GrafanaAdapters: Added full set of aggregation and operational functions that operate on a per-series or per-set for all data sources that implement Grafana interfaces. See documentation.
- LogFileViewer: Added new enhanced general logging capabilities along with a new application, Log File Viewer, that is used to analyze logs.
- PowerCalculations: Added calculators for wrapping angle difference and line impedance with resistance, reactance, conductance and susceptance results - includes both rectangular and polar based outputs.
- PowerCalculations: Updated average frequency calculator to (1) exclude NaN values from average results, (2) allow definable unreasonable thresholds, (3) improve flat-line value detection to throw out repeating values, and (4) added flag to AverageFrequency calculator to allow unreasonable results, e.g., zero, to be reported as NaN.
- GSF.PhasorProtocols.UI: Updated OutputStream data model to accommodate auto-assignment of "auto public config frame flag" based on current channel definitions
- GSF.TimeSeries: Added up-time statistics for system, subscriber, publisher, input streams and output streams.
- GSF.TimeSeries: Added a new enhanced version of the time-series special compression algorithm, automatically enabled for new connections, used with the Gateway Exchange Protocol that uses much less bandwidth. Add
; compression=true
to connection string of existing GEP subscriptions to enable. - GSF.TimeSeries: Created a lookup cache for the main adapter meta-data using dictionary based lookups. This improved load times for input adapters on large systems (e.g., from 160 seconds to less than 1 second in some cases).
- GSF.TimeSeries: Updated measurement definitions to carry meta-data as part of measurement key with an internal reference inside measurement implementations to reduce total memory footprint requirements for new measurements.
- GSF.Core: Added a static timer class to allow many hundreds of scheduled events that run at the same interval to be associated with a single wait event instead of creating a new timer for each event (e.g., as hundreds of devices needing to check statistics every second) - this alleviates thread pool exhaustion that can occur when hundreds of timer events get executed at the same time.
Important Fixes
- PhasorProtocolAdapters: Fixed issue in custom IEEE C37.118 concentrator output streams where phasors were being reordered if a cell had 10 or more phasors.
- PhasorProtocolAdapters: Updated IEEE C37.118 concentrator to allow an explicit config frame 1 to be returned when requested instead of defaulting to config frame 2 - this corrects issues with SEL RTAC devices connecting to openPDC.
- PhasorProtocolAdapters: Corrected issue for output stream mappings when using PMU source device acronyms that are longer than 16 characters.
- DataSubscriber: Updated measurements received with GEP to apply any linear adjustments defined in the local configuration.
- GSF.Core: Added code to ensure that log files won't become deadlocked if an error occurs during rollover.
- GSF.TimeSeries: Updated DataSubscriber meta-data synchronization to exclude calculation and alarm signals from the device measurement removal processing such that if a local subscription creates new calculations associated with a subscribed device, the locally created measurements will not get automatically removed at the next synchronization.
openHistorian 1.0 Time-Series Web Service Fix
If you use the web services hosted by the local openHistorian 1.0 adapter, download this patch to fix the timestamps displayed when accessing the latest archived values through the Time-Series Web Service. See GridProtectionAlliance/gsf#18 for more details.