Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Get External Security Manager name #415

Merged
merged 11 commits into from
Nov 28, 2023
84 changes: 84 additions & 0 deletions .github/workflows/build-getesm.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
name: Build getesm
on:
push:
branches:
- v2.x/staging
- v2.x/master
- v2.x/rc
- v3.x/staging
- v3.x/master
- v3.x/rc
pull_request:
types: [opened, reopened, synchronize]
workflow_dispatch:
inputs:
PERFORM_RELEASE:
description: '[Release] perform release'
required: false
default: 'false'

jobs:
check-permission:
runs-on: ubuntu-latest
steps:
# this action will fail the whole workflow if permission check fails
- name: check permission
uses: zowe-actions/shared-actions/permission-check@main
with:
github-token: ${{ secrets.GITHUB_TOKEN }}

build-test:
runs-on: ubuntu-latest
needs: check-permission
steps:
- name: '[Prep 1] Checkout'
uses: actions/checkout@v2

- name: '[Prep 2] Setup jFrog CLI'
uses: jfrog/setup-jfrog-cli@v2
env:
JF_ARTIFACTORY_1: ${{ secrets.JF_ARTIFACTORY_TOKEN }}

- name: '[Prep 3] Set date'
id: date
run: echo "date=$(date +'%Y%m%d%S')" >> $GITHUB_OUTPUT

- name: '[Prep 4] Set version'
id: version
run: echo "version=$(cat build/getesm.proj.env | grep VERSION | cut -f 2 -d=)" >> $GITHUB_OUTPUT

- name: '[Prep 5] Set branchname'
id: branch
run: echo "branch=$(if [ -n '${{ github.head_ref }}' ]; then echo '${{ github.head_ref }}' | tr '[:lower:]' '[:upper:]'; else echo '${{ github.ref_name }}' | tr '[:lower:]' '[:upper:]'; fi | sed 's@/@-@g')" >> $GITHUB_OUTPUT


- name: '[Prep 6] Prepare workflow'
uses: zowe-actions/shared-actions/prepare-workflow@main


- name: '[Packaging] Make pax'
uses: zowe-actions/shared-actions/make-pax@main
with:
pax-name: 'getesm'
pax-options: '-x os390 -pp'
pax-local-workspace: './.pax/getesm'
pax-ssh-username: ${{ secrets.SSH_MARIST_USERNAME }}
pax-ssh-password: ${{ secrets.SSH_MARIST_RACF_PASSWORD }}

- name: '[Publish] Publish'
uses: zowe-actions/shared-actions/publish@main
if: success()
with:
artifacts: |
.pax/getesm/getesm.pax
publish-target-path-pattern: libs-snapshot-local/org/zowe/utils/${{ steps.version.outputs.version }}-${{ steps.branch.outputs.branch }}
publish-target-file-pattern: getesm-${{ steps.version.outputs.version }}-${{ steps.date.outputs.date }}.pax
perform-release: ${{ github.event.inputs.PERFORM_RELEASE }}

- name: '[Prep Release] Bump version'
if: ${{ github.event.inputs.PERFORM_RELEASE == 'true' }}
uses: zowe-actions/zlux-builds/[email protected]/main
with:
version: 'MINOR'
env:
GITHUB_TOKEN: ${{ secrets.ZOWE_ROBOT_TOKEN }}
35 changes: 35 additions & 0 deletions .pax/getesm/pre-packaging.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#!/bin/sh -e
set -xe

################################################################################
# This program and the accompanying materials are made available under the terms of the
# Eclipse Public License v2.0 which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-v20.html
#
# SPDX-License-Identifier: EPL-2.0
#
# Copyright Contributors to the Zowe Project.
################################################################################


# contants
SCRIPT_NAME=$(basename "$0")
SCRIPT_DIR=$(pwd)

# build
echo "$SCRIPT_NAME build getesm ..."
echo "build folder:"
ls -ltr "$SCRIPT_DIR/content/build"
echo "parent folder:"
ls -ltr "$SCRIPT_DIR/content"
STEPLIB=CBC.SCCNCMP "$SCRIPT_DIR/content/build/build_getesm.sh"

# clean up content folder
echo "$SCRIPT_NAME cleaning up pax folder ..."
cd "$SCRIPT_DIR"
mv content bak && mkdir -p content

# move real files to the content folder
echo "$SCRIPT_NAME coping files should be in pax ..."
cd "$SCRIPT_DIR/content"
cp ../bak/bin/getesm .
44 changes: 44 additions & 0 deletions .pax/getesm/prepare-workspace.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#!/bin/sh -e
set -xe

################################################################################
# This program and the accompanying materials are made available under the terms of the
# Eclipse Public License v2.0 which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-v20.html
#
# SPDX-License-Identifier: EPL-2.0
#
# Copyright Contributors to the Zowe Project.
################################################################################

################################################################################
# Prepare folders/files will be uploaded to Build/PAX server
################################################################################

# contants
SCRIPT_NAME=$(basename "$0")
SCRIPT_DIR=$(dirname "$0")
PAX_WORKSPACE_DIR=.pax/getesm

# make sure in project root folder
cd $SCRIPT_DIR/../..

# prepare pax workspace
echo "[${SCRIPT_NAME}] preparing folders ..."
rm -fr "${PAX_WORKSPACE_DIR}/ascii" && mkdir -p "${PAX_WORKSPACE_DIR}/ascii"
rm -fr "${PAX_WORKSPACE_DIR}/content" && mkdir -p "${PAX_WORKSPACE_DIR}/content"

echo "[${SCRIPT_NAME}] copying files ..."
cp -R * "${PAX_WORKSPACE_DIR}/ascii"
# move files shouldn't change encoding to IBM-1047 to content folder
rsync -rv \
--include '*/' \
--include '*.png' \
--exclude '*' \
--prune-empty-dirs --remove-source-files \
"${PAX_WORKSPACE_DIR}/ascii/" \
"${PAX_WORKSPACE_DIR}/content/"

# update build information
# BRANCH_NAME and BUILD_NUMBER is Jenkins environment variable
commit_hash=$(git rev-parse --verify HEAD)
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

## `2.13.0`
- Added support for using "zowe.network" and "components.zss.zowe.network" to set TLS version properties. (#411)
- Added utility for general usage returning the name of External Security Manager

## `2.11.0`

Expand Down
47 changes: 47 additions & 0 deletions build/build_getesm.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
#!/bin/sh

# This program and the accompanying materials are
# made available under the terms of the Eclipse Public License v2.0 which accompanies
# this distribution, and is available at https://www.eclipse.org/legal/epl-v20.html
#
# SPDX-License-Identifier: EPL-2.0
#
# Copyright Contributors to the Zowe Project.

echo "********************************************************************************"
echo "Building getesm..."

WORKING_DIR=$(cd $(dirname "$0") && pwd)
COMMON="$WORKING_DIR/.."

date_stamp=$(date +%Y%m%d%S)
TMP_DIR="${WORKING_DIR}/tmp-${date_stamp}"
mkdir -p "${TMP_DIR}" && cd "${TMP_DIR}"

rm -f "${COMMON}/bin/getesm"

xlclang \
-q64 \
"-Wc,float(ieee),longname,langlvl(extc99),gonum,goff,ASM,asmlib('SYS1.MACLIB')" \
-D_OPEN_SYS_FILE_EXT=1 \
-D_XOPEN_SOURCE=600 \
-D_OPEN_THREADS=1 \
-DNOIBMHTTP=1 \
-DCMGRTEST=1 \
-I "${COMMON}/h" \
-o "${COMMON}/bin/getesm" \
${COMMON}/c/alloc.c \
${COMMON}/c/getesm.c \
${COMMON}/c/timeutls.c \
${COMMON}/c/utils.c \
${COMMON}/c/zos.c

rm -rf "${TMP_DIR}"

# This program and the accompanying materials are
# made available under the terms of the Eclipse Public License v2.0 which accompanies
# this distribution, and is available at https://www.eclipse.org/legal/epl-v20.html
#
# SPDX-License-Identifier: EPL-2.0
#
# Copyright Contributors to the Zowe Project.
3 changes: 3 additions & 0 deletions build/getesm.proj.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
PROJECT="getesm"
VERSION=2.13.0
DEPS=""
65 changes: 65 additions & 0 deletions c/getesm.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@


/*
This program and the accompanying materials are
made available under the terms of the Eclipse Public License v2.0 which accompanies
this distribution, and is available at https://www.eclipse.org/legal/epl-v20.html

SPDX-License-Identifier: EPL-2.0

Copyright Contributors to the Zowe Project.
*/

#include "stdio.h"
#include "string.h"
#include "zowetypes.h"
#include "zos.h"

int getESMHelp(int error) {
if (error)
printf("Wrong parameter(s), see help:\n");
printf("getesm - gets the External Security Manager name and returns RACF, TSS, ACF2 or NONE\n");
printf(" Format: getesm [-h]\n");
printf(" Options:\n -h This help\n");
printf(" Exit values:\n 0 for succesful detection\n 1 otherwise\n");
return error;
}

int main(int argc, char *argv[]) {
int rc;

if ( argc > 1 ){
if (argc == 2 && strcmp(argv[1], "-h") == 0)
return getESMHelp(0);
else
return getESMHelp(1);
}

switch(getExternalSecurityManager()) {
case ZOS_ESM_RTSS:
printf("TSS\n");
return 0;
case ZOS_ESM_RACF:
printf("RACF\n");
return 0;
case ZOS_ESM_ACF2:
printf("ACF2\n");
return 0;
case ZOS_ESM_NONE:
printf("NONE\n");
return 0;
default:
printf("Error processing Communications Vector Table (CVT).\n");
return 1;
}
}

/*
This program and the accompanying materials are
made available under the terms of the Eclipse Public License v2.0 which accompanies
this distribution, and is available at https://www.eclipse.org/legal/epl-v20.html

SPDX-License-Identifier: EPL-2.0

Copyright Contributors to the Zowe Project.
*/
25 changes: 14 additions & 11 deletions c/zos.c
Original file line number Diff line number Diff line change
Expand Up @@ -206,17 +206,20 @@ int ddnameExists(char *ddname){

ExternalSecurityManager getExternalSecurityManager(void) {
CVT *cvt = getCVT();

if (!memcmp(cvt->cvtrac, RACF_EYECATCHER, ESM_EYECATCHER_LENGTH)) {
return ZOS_ESM_RACF;
}
else if (!memcmp(cvt->cvtrac, RTSS_EYECATCHER, ESM_EYECATCHER_LENGTH)) {
return ZOS_ESM_RTSS;
}
else if (!memcmp(cvt->cvtrac, ACF2_EYECATCHER, ESM_EYECATCHER_LENGTH)) {
return ZOS_ESM_ACF2;
}
else {
if (cvt->cvtrac) {
if (!memcmp(cvt->cvtrac, RACF_EYECATCHER, ESM_EYECATCHER_LENGTH)) {
return ZOS_ESM_RACF;
}
else if (!memcmp(cvt->cvtrac, RTSS_EYECATCHER, ESM_EYECATCHER_LENGTH)) {
return ZOS_ESM_RTSS;
}
else if (!memcmp(cvt->cvtrac, ACF2_EYECATCHER, ESM_EYECATCHER_LENGTH)) {
return ZOS_ESM_ACF2;
}
else {
return ZOS_ESM_NONE;
}
} else {
return ZOS_ESM_NONE;
}
}
Expand Down
3 changes: 3 additions & 0 deletions h/zos.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@
#define isCallerSRB ZOSCSRB
#define isCallerCrossMemory ZOSCXMEM

#define getExternalSecurityManager GETESM

#endif


Expand Down Expand Up @@ -650,6 +652,7 @@ Addr31 getATCVT(void);
void *getIEACSTBL(void);
cvtfix *getCVTPrefix(void);
ECVT *getECVT(void);
ExternalSecurityManager getExternalSecurityManager(void);

typedef struct ocvt_tag{ /* see SYS1.MACLIB(BPXZOCVT) */
char eyecatcher[4]; /* "OCVT" */
Expand Down
Loading