mirror of
https://github.com/hyperledger/fabric-samples.git
synced 2026-06-17 07:25:10 +00:00
* Fix creating channel when ${PWD} contains space.
If the path of the project contains spaces, the "test-network/scripts/envVar.sh" script sets the value of "$ORDERER_CA" to a value containg "${PWD}" which, in turn, contains space(s).
When the variable used in "test-network/scripts/createChannel.sh", The first part of the value (before the first space) is handled as the whole value for "--cafile". Other parts are considered to be part of the command!
I tried putting (escaped) quotes in the "test-network/scripts/envVar.sh" definition for the variable "$ORDERER_CA" to make the fix more general, but the quotation marks were sometime interpreted to be part of the path that consisted of concatenated parts somewhere and it did not work.
While this edit will fix this issue, I belive this is just a work around. I expect that there is a better way to solve the root cause of the problem instead of just fixing it in one place. Moreover, All variables/paths that may include spaces should be properly handled as well.
Thanks
Signed-off-by: Waleed Mortaja <waleedmortaja@protonmail.com>
* Double quote variables evaluations that depends on $PWD
I tried to handle most (if not all) of the variables evaluations in the project that depends on $PWD by wrapping them in double-quotations to avoid values that contains white spaces.
Some lines I was not sure if they are Okay or not but I left them as they are. Samples (not all lines) as follows:
- commercial-paper/network-clean.sh:15:DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
- commercial-paper/network-starter.sh:15:DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
- asset-transfer-basic/chaincode-javascript/node_modules/fabric-shim/coverage/fabric-shim/lib/chaincode.js.html:997: optsCpy.pem = fs.readFileSync(process.env.CORE_PEER_TLS_ROOTCERT_FILE).toString();
- commercial-paper/organization/digibank/digibank.sh:29:export PEER_PARMS="${PEER_CONN_PARMS##*( )}"
The next sample I was not really sure, but still edited it:
- test-network/addOrg3/fabric-ca/registerEnroll.sh:68: cp ${PWD}/../organizations/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/tlscacerts/* ${PWD}/../organizations/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/ca.crt
I deliberately ignored some lines because I think they are not problem. These lines include:
- `export` sentences
- assignment sentences like: test-network/scripts/createChannel.sh:48: FABRIC_CFG_PATH=$PWD/../config/
- gradlew files: the line SAVED="`pwd`"
- gradlew files: the line APP_HOME="`pwd -P`"
- gradlew files: the line CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
Signed-off-by: Waleed Mortaja <waleedmortaja@protonmail.com>
* remove unnecessary leading space trimming
Signed-off-by: Waleed Mortaja <waleedmortaja@protonmail.com>
* resolved conflict with master
Co-authored-by: Arnaud J Le Hors <lehors@us.ibm.com>
106 lines
3.4 KiB
Bash
Executable file
106 lines
3.4 KiB
Bash
Executable file
#!/bin/bash
|
|
#
|
|
# Copyright IBM Corp All Rights Reserved
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
|
|
# This is a collection of bash functions used by different scripts
|
|
|
|
# imports
|
|
. scripts/utils.sh
|
|
|
|
export CORE_PEER_TLS_ENABLED=true
|
|
export ORDERER_CA=${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
|
|
export PEER0_ORG1_CA=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
|
|
export PEER0_ORG2_CA=${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
|
|
export PEER0_ORG3_CA=${PWD}/organizations/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/ca.crt
|
|
export ORDERER_ADMIN_TLS_SIGN_CERT=${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.crt
|
|
export ORDERER_ADMIN_TLS_PRIVATE_KEY=${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.key
|
|
|
|
# Set environment variables for the peer org
|
|
setGlobals() {
|
|
local USING_ORG=""
|
|
if [ -z "$OVERRIDE_ORG" ]; then
|
|
USING_ORG=$1
|
|
else
|
|
USING_ORG="${OVERRIDE_ORG}"
|
|
fi
|
|
infoln "Using organization ${USING_ORG}"
|
|
if [ $USING_ORG -eq 1 ]; then
|
|
export CORE_PEER_LOCALMSPID="Org1MSP"
|
|
export CORE_PEER_TLS_ROOTCERT_FILE=$PEER0_ORG1_CA
|
|
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
|
|
export CORE_PEER_ADDRESS=localhost:7051
|
|
elif [ $USING_ORG -eq 2 ]; then
|
|
export CORE_PEER_LOCALMSPID="Org2MSP"
|
|
export CORE_PEER_TLS_ROOTCERT_FILE=$PEER0_ORG2_CA
|
|
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
|
|
export CORE_PEER_ADDRESS=localhost:9051
|
|
|
|
elif [ $USING_ORG -eq 3 ]; then
|
|
export CORE_PEER_LOCALMSPID="Org3MSP"
|
|
export CORE_PEER_TLS_ROOTCERT_FILE=$PEER0_ORG3_CA
|
|
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp
|
|
export CORE_PEER_ADDRESS=localhost:11051
|
|
else
|
|
errorln "ORG Unknown"
|
|
fi
|
|
|
|
if [ "$VERBOSE" == "true" ]; then
|
|
env | grep CORE
|
|
fi
|
|
}
|
|
|
|
# Set environment variables for use in the CLI container
|
|
setGlobalsCLI() {
|
|
setGlobals $1
|
|
|
|
local USING_ORG=""
|
|
if [ -z "$OVERRIDE_ORG" ]; then
|
|
USING_ORG=$1
|
|
else
|
|
USING_ORG="${OVERRIDE_ORG}"
|
|
fi
|
|
if [ $USING_ORG -eq 1 ]; then
|
|
export CORE_PEER_ADDRESS=peer0.org1.example.com:7051
|
|
elif [ $USING_ORG -eq 2 ]; then
|
|
export CORE_PEER_ADDRESS=peer0.org2.example.com:9051
|
|
elif [ $USING_ORG -eq 3 ]; then
|
|
export CORE_PEER_ADDRESS=peer0.org3.example.com:11051
|
|
else
|
|
errorln "ORG Unknown"
|
|
fi
|
|
}
|
|
|
|
# parsePeerConnectionParameters $@
|
|
# Helper function that sets the peer connection parameters for a chaincode
|
|
# operation
|
|
parsePeerConnectionParameters() {
|
|
PEER_CONN_PARMS=()
|
|
PEERS=""
|
|
while [ "$#" -gt 0 ]; do
|
|
setGlobals $1
|
|
PEER="peer0.org$1"
|
|
## Set peer addresses
|
|
if [ -z "$PEERS" ]
|
|
then
|
|
PEERS="$PEER"
|
|
else
|
|
PEERS="$PEERS $PEER"
|
|
fi
|
|
PEER_CONN_PARMS=("${PEER_CONN_PARMS[@]}" --peerAddresses $CORE_PEER_ADDRESS)
|
|
## Set path to TLS certificate
|
|
CA=PEER0_ORG$1_CA
|
|
TLSINFO=(--tlsRootCertFiles "${!CA}")
|
|
PEER_CONN_PARMS=("${PEER_CONN_PARMS[@]}" "${TLSINFO[@]}")
|
|
# shift by one to get to the next organization
|
|
shift
|
|
done
|
|
}
|
|
|
|
verifyResult() {
|
|
if [ $1 -ne 0 ]; then
|
|
fatalln "$2"
|
|
fi
|
|
}
|