Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
e1a62a3
Update the ABLDuck and PCTDoc output under OE 12.5
DustinGrau-PSC Apr 18, 2022
6026f71
After builds, keep the version.i file but clear it of any prior build…
DustinGrau-PSC Apr 27, 2022
496b3db
Rebuild PL for OE 12.5
DustinGrau-PSC Apr 28, 2022
5e75164
Remove unused USING
DustinGrau-PSC Jun 12, 2023
db4dc4e
Build PL for current 12.8 ALPHA
DustinGrau-PSC Jun 14, 2023
80e62a1
Correct build for 12.8
DustinGrau-PSC Jun 14, 2023
fe84941
Rebuild using latest 12.8 build
DustinGrau-PSC Sep 7, 2023
e09317e
Merge remote-tracking branch 'remotes/origin/master' into develop
DustinGrau-PSC Sep 2, 2025
b2d42da
Remove the Diagnostic portions of the library, rebuild for OE 13
DustinGrau-PSC Sep 2, 2025
610e475
Code fix
DustinGrau-PSC Sep 2, 2025
b4b1551
Recompiled for 12.8
DustinGrau-PSC Sep 2, 2025
c3dea68
Recompile for 12.2
DustinGrau-PSC Sep 2, 2025
b7cbf68
Update docs
DustinGrau-PSC Sep 3, 2025
cde9d19
Sync script
DustinGrau-PSC Sep 3, 2025
638455e
Adjust build to work correctly for 13.0, remove outdated classes
DustinGrau-PSC Sep 3, 2025
d64bfa6
Update docs
DustinGrau-PSC Sep 3, 2025
3c4b8dd
Replace use of encode()
DustinGrau-PSC Sep 3, 2025
ea62d6d
Recompile for 12.8
DustinGrau-PSC Sep 3, 2025
3309258
Recompile for 13.0
DustinGrau-PSC Sep 3, 2025
009c21b
Fix hashing
DustinGrau-PSC Sep 3, 2025
6a7b82b
Update docs to remove Diagnostic class packages, update version number.
DustinGrau-PSC Sep 4, 2025
8bba78b
Update spark library
DustinGrau-PSC Sep 4, 2025
1a821b9
Update spark library
DustinGrau-PSC Sep 4, 2025
6697f23
Sync changes to OERealm docs, change to SHA-256 where possible
DustinGrau-PSC Oct 13, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
17 changes: 10 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,20 @@

The **Progress Spark Toolkit** is a [CCS-compliant](https://github.com/progress/CCS) reference implementation from Progress meant to aid in creating an ABL application which provides RESTful API's for microservices. This repository primarily contains ABL artifacts and was built specifically for the **Progress Application Server for OpenEdge** to provide the back-end (server-side) support for exposing ABL logic via HTTP/HTTP.

**Latest Release:** v6.0.2 (April 2022) for OE 11.7.13+ and OE 12.2.8+
**Latest Release:** v7.0.0 (Sept. 2025) for OE 12.2.8+

## Requirements

For reference, the CCS libraries and newer Business Logic features are included with OpenEdge versions **11.7.8+** and **12.2.4+** though we recommend use of the latest LTS release or latest supported OpenEdge 12 release. Use of toolkit version **6.0.2** or later is highly recommended if you are on an earlier version. Current builds of the PL files in the following distribution directories are compiled using the following OpenEdge versions for proper compatibility:
For reference, the CCS libraries and newer Business Logic features are included with OpenEdge version **12.2.4+** and we recommend use of the latest OpenEdge 12 LTS release. Current builds of the PL files in the following distribution directories are compiled using the following OpenEdge versions for proper compatibility:

* /dist/oe11 - 11.7.13+ preferred
* /dist/oe12 - 12.2.8+ preferred
* /dist/oe122 - 12.2 LTS through 12.7
* /dist/oe128 - 12.8 LTS (Preferred)
* /dist/oe130 - 13.0.x (TBD)

**Previous Release Requirements:**

OE 11.7.x for v6.0.x (retired product, deprecated support)

OE 11.7.5+ or OE 12.1+ for v5.0.x (deprecated)

OE 11.7.4+ or OE 12.0+ for v4.4.0 through 4.6.x (deprecated)
Expand All @@ -23,8 +26,8 @@ OE 11.7.3+ for v4.3.0 (deprecated, upgrade required)

### Supporting Tools

- Apache Ant 1.9.x+ (included with OE 11.7+/12.0+ at DLC/ant) executed as `DLC/bin/proant`
- Progress Compile Tools, aka. "PCT" (included as of OE 11.7.3/12.0+ at DLC/pct/PCT.jar)
- Apache Ant 1.9.x+ (included with OE 12.0+ at DLC/ant) executed as `DLC/bin/proant`
- Progress Compile Tools, aka. "PCT" (included since OE 12.0+ at DLC/pct/PCT.jar)


## Project Usage
Expand All @@ -38,7 +41,7 @@ As previously mentioned, the Progress Spark Toolkit library is intended for use
5. Copy the .json and .cp files from the `/cfg/` folder to a new `CATALINA_BASE/conf/spark/` directory.
6. If intending to utilize OERealm security, copy the `/cfg/Realm/SparkRealm.json` file to `CATALINA_BASE/conf/spark/` and `/cfg/Realm/SparkRealm.cp` to `CATALINA_BASE/common/lib/`.

**CCS Note:** As of release **4.6.0** the inclusion of the CCS source code and Ccs.pl has been discontinued and all related source is removed from this repository. As of **OpenEdge 11.7.5 / 12.1** all CCS class interfaces are already included within the product and are utilized to build the Spark.pl library. Therefore, it is no longer necessary to include this PL file within your PROPATH or included as part of your code promotion processes.
**CCS Note:** As of **OpenEdge 12.1** all CCS class interfaces are already included within the product and are utilized to build the `Spark.pl` library. Therefore, it is no longer necessary to include a separate `ccs.pl` file within your PROPATH or included as part of your code promotion processes.


## Contributions / Changes
Expand Down
2 changes: 1 addition & 1 deletion cfg/Realm/SparkRealm.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"debug": false,
"domain": "OESPA",
"password": "odeb0::h89wUJTwvKly2BsqXZeX3hAM8LHnMLypry7LZsxwFKWCQ76JPqKXj0idvZZrLM2S",
"password": "sp4rkR3alm",
"role": "SPAClient"
}
30 changes: 14 additions & 16 deletions cfg/Realm/SparkRealmREADME.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,39 +12,37 @@ To generate a serialized Client Principal file that will be passed from the REST

genspacp -password sp4rkR3alm -user sparkRest -file SparkRealm.cp

genspacp 1.0
genspacp 1.1
Generated sealed Client Principal...
User: sparkRest@OESPA
Id: 6EeGh6ptSrWBp9Ekrp0kRw
Id: FCEc+NW3QIW5RIpp1TuMgQ
Role: SPAClient
Encoded Password: oech1::23227b35391760323c3f
File: SparkRealm.cp
State: SSO from external authentication system
Seal is valid

2. Copy the encoded password generated above and update the password in the SparkRealm.json file
Note: Be sure to state the correct domain name (default "OESPA") as well within this config file.
2. Copy the original, clear-text password used above and update the password in the SparkRealm.json file.
Reminder: Be sure to state the correct domain name (default "OESPA") as well within the JSON config file.

3. Copy the role generated above and update the role in the SparkRealm.json file
Security Note: Ideally this value should be encrypted in such a way that it can be decrypted from within the OERealm service. The encrypted value would be stored in the JSON file, while the OERealm service would decrypt it before applying via VALIDATE-SEAL("<password>") against the incoming request's CP token.

4. Copy the SparkRealm.cp to somewhere the REST application can read it from
Note: You would expect this to be the classes directory, i.e. {$CATALINA_BASE}/webapps/<PROJECT>/WEB-INF/classes
However as of 11.5+ for PAS the intended location is the {$CATALINA_BASE}/common/lib directory
3. Copy the role as generated above (eg. "SPAClient") and update the role in the SparkRealm.json file.

4. Copy the SparkRealm.cp to somewhere the REST application can read it from: e.g. the {$CATALINA_BASE}/common/lib directory.

5. Copy the SparkRealm.json file to {$CATALINA_BASE}/conf/spark (or your SPARK_CONF directory).

6. Specify "SparkRealm.cp" file as the "realmTokenFile" attribute value in the oeablSecurity-*-oerealm.xml file.
Note: This is located in the OERealmUserDetails bean.

7. Restart the PAS instance to ensure that the configuration change is picked up.

7. Update the password in the ABLDomainRegistry.csv replacing any existing existing value following the "spark" domain (default: "spark01").

New for OE12:
8. Run the following command to generate the binary keystore file:

1. Copy the encoded password into the ABLDomainRegistry.csv replacing any existing key for the "spark" domain.
DLC/bin/gendomreg ABLDomainRegistry.csv ABLDomainRegistry.keystore

2. Run the following command to generate the binary keystore file:
9. Copy the updated keystore file to the CATALINA_BASE/conf directory.

DLC/bin/gendomreg ABLDomainRegistry.csv ABLDomainRegistry.keystore
10. Restart the PAS instance to ensure that the configuration change is picked up.

3. Copy the updated keystore file to the CATALINA_BASE/conf directory.
Alternatively, the OESPA domain could be defined in the database connected to the OERealm service provider, using the password as the domain access code. In order to obtain validation of the CP token you would use the VALIDATE-SEAL() without a parameter. This will then use the domain access code associated with the OESPA domain (on the database) to validate the incoming CP token which was sealed using the OESPA domain and the same password as provided to the genspacp utility.
13 changes: 10 additions & 3 deletions cfg/SparkResetREADME.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,11 @@ The "ResetClientPrincipal" parameter in the config points to a serialized Client
1. To Generate a serialized Client Principal file, use the genspacp utility in $DLC/bin

proenv>genspacp -password spark01 -user sparkRest -role NoAccess -domain spark -file SparkReset.cp
genspacp 1.0
genspacp 1.1
Generated sealed Client Principal...
User: sparkRest@spark
Id: R0omT2H7TN6p7Gyn1Rbq+g
Id: cltI3rp3TkW1HxWvTM+XHA
Role: NoAccess
Encoded Password: oech1::23222e35397562
File: SparkReset.cp
State: SSO from external authentication system
Seal is valid
Expand All @@ -22,3 +21,11 @@ domain, and password must match the domain(s) created in the database, with the
Note: the -password parameter above is NOT the users password, this is the Domain Access Code.

3. Copy the serialized Client Principal file to the standard config location, where your other configs reside.

4. For the "session.json" file use the genpassword utility to generate the domain passcode using the "odeb0" prefix.

proenv>genpassword -prefix odeb0 -password spark01
odeb0::aqb/3jhBtLDaqwvy0c1440wXieKSyGTFg8QLu6hn4ZWuzD5shUpT24ti1BsfM4up

5. Supply the generated passcode into the "accessCode" property, escaping any forward slashes as necessary.

24 changes: 14 additions & 10 deletions cfg/session.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
{
"Config": {
"SessionParam": [{
"ResetClientPrincipal": "SparkReset.cp"
}],
"Domains": [{
"domain": "",
"accessCode": "",
"description": ""
}]
}
"Config": {
"SessionParam": [
{
"ResetClientPrincipal": "SparkReset.cp"
}
],
"Domains": [
{
"domain": "",
"accessCode": "",
"description": ""
}
]
}
}
Binary file removed dist/oe117/Diagnostic.pl
Binary file not shown.
Binary file removed dist/oe117/Spark.pl
Binary file not shown.
Binary file modified dist/oe122/Spark.pl
Binary file not shown.
Binary file renamed dist/oe125/Spark.pl → dist/oe128/Spark.pl
Binary file not shown.
Binary file added dist/oe130/Spark.pl
Binary file not shown.
18,134 changes: 18,133 additions & 1 deletion docs/ABLDuck/data.js

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions docs/ABLDuck/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@
</head>
<body id="ext-body">

<div id="loading"><span class="title">Documentation - Progress Spark Toolkit (v6.0.2)</span><span class="logo"></span></div>
<div id="loading"><span class="title">Documentation - Progress Spark Toolkit (v7.0.0)</span><span class="logo"></span></div>

<div id="header-content"><strong>Documentation</strong> Progress Spark Toolkit (v6.0.2)</div>
<div id="header-content"><strong>Documentation</strong> Progress Spark Toolkit (v7.0.0)</div>

<div id='categories-content' style='display:none'>

</div>

<div id='footer-content' style='display: none'>Generated on Fri 15 Apr 2022 11:50:30 by <a href='https://github.com/Riverside-Software/pct'>PCT ABLDuck</a> pct-221-master-6a069eab179c9bf5f2e5b40ee81b444641c394d1</div>
<div id='footer-content' style='display: none'>Generated on Mon 18 Apr 2022 11:21:08 by <a href='https://github.com/Riverside-Software/pct'>PCT ABLDuck</a> pct-222-pre-bugfix/PCT-479-2e1b2b592889ab70c1cc22bd6dd4d08a3699c6e2</div>

<script type="text/javascript">
(function(){
Expand Down

Large diffs are not rendered by default.

Loading