My vendor (or I) put a DBAUTHKEY in our OpenEdge 12.x databases to protect them from unauthorized r-code. How do I authorize ProTop r-code to run against them?
NOTE: This only applies to OE12.x databases as ProTop works as is against OE11.x and earlier databases that use a DBAUTHKEY.
When I try to run ProTop against my OE12.x database, I get this fatal error popup box:
and this message at the bottom of the screen:
What do I do? I want to run ProTop on this database!
Starting in ProTop 327, you can authorize ProTop r-code to run against your OE12.x DBAUTHKEY-protected database. But, there are some prerequisites:
On the same *nix server:
- OE 12.x installed with ...
- A 4GL DEV license which allows you to compile
- ProTop 327 installed
- The database(s) or copy(s) containing the DBAUTHKEY you want to authorize ProTop r-code to run against
Here are the steps:
- Log onto your server as the owner of your ProTop installation and set up your ProTop environment:
. /data/protop/bin/protopenv
- Create a directory to work in and cd into it.
-
cp $PROTOP/bin/ptcompile.sh .
-
cp $PROTOP/util/ptcompile.p .
- Run the script with the following arguments, all of which are explicit paths; if the new r-code directory is not there, it will be created.
./ptcompile.sh <db w/DBAUTHKEY> <new r-code path> $PROTOP
[In this example, we will use ptdbak instead of <db w/DBAUTHKEY> from here on out.]
This will create a new protop-v12-ptdbak.pl in the new r-code directory you provided. Now ... -
cp <new r-code path>/protop-v12-ptdbak.pl $PROTOP
- If all of your databases use the same DDBAUTHKEY, edit the "PROPATH=" line in $PROTOP/bin/protopenv
change this: PROPATH=protop-v12.pl:${PROTOP}
to this: PROPATH=protop-v12-ptdbak.pl:${PROTOP} - If not all of your databases use the same DBAUTHKEY then edit $PROTOP/etc/dblist.cfg and add protop-v12-ptdbak.pl to the end of each line containing a database that uses this DBAUTHKEY, followed by " :. "
It will look something like this:
ptdbak|/db/ptdbak|yourServer|yes|||protop-v12-ptdbak.pl:.
FYI, you are editing the seventh pipe-delimited column, aka codePath.
You should now be able to run ProTop against your database containing the DBAUTHKEY:
protop ptdbak
- Repeat these steps for each of your databases that have a different DBAUTHKEY.