-
Notifications
You must be signed in to change notification settings - Fork 205
/
salesforce-platform-events-sink-proxy-basic-auth.sh
executable file
·143 lines (115 loc) · 5.45 KB
/
salesforce-platform-events-sink-proxy-basic-auth.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#!/bin/bash
set -e
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
source ${DIR}/../../scripts/utils.sh
SALESFORCE_USERNAME=${SALESFORCE_USERNAME:-$1}
SALESFORCE_PASSWORD=${SALESFORCE_PASSWORD:-$2}
SALESFORCE_CONSUMER_KEY=${SALESFORCE_CONSUMER_KEY:-$3}
SALESFORCE_CONSUMER_PASSWORD=${SALESFORCE_CONSUMER_PASSWORD:-$4}
SALESFORCE_SECURITY_TOKEN=${SALESFORCE_SECURITY_TOKEN:-$5}
SALESFORCE_INSTANCE=${SALESFORCE_INSTANCE:-"https://login.salesforce.com"}
if [ -z "$SALESFORCE_USERNAME" ]
then
logerror "SALESFORCE_USERNAME is not set. Export it as environment variable or pass it as argument"
exit 1
fi
if [ -z "$SALESFORCE_PASSWORD" ]
then
logerror "SALESFORCE_PASSWORD is not set. Export it as environment variable or pass it as argument"
exit 1
fi
if [ -z "$SALESFORCE_CONSUMER_KEY" ]
then
logerror "SALESFORCE_CONSUMER_KEY is not set. Export it as environment variable or pass it as argument"
exit 1
fi
if [ -z "$SALESFORCE_CONSUMER_PASSWORD" ]
then
logerror "SALESFORCE_CONSUMER_PASSWORD is not set. Export it as environment variable or pass it as argument"
exit 1
fi
if [ -z "$SALESFORCE_SECURITY_TOKEN" ]
then
logerror "SALESFORCE_SECURITY_TOKEN is not set. Export it as environment variable or pass it as argument"
exit 1
fi
PLAYGROUND_ENVIRONMENT=${PLAYGROUND_ENVIRONMENT:-"plaintext"}
playground start-environment --environment "${PLAYGROUND_ENVIRONMENT}" --docker-compose-override-file "${PWD}/docker-compose.plaintext.proxy-basic-auth.yml"
DOMAIN=$(echo $SALESFORCE_INSTANCE | cut -d "/" -f 3)
IP=$(nslookup $DOMAIN | grep Address | grep -v "#" | cut -d " " -f 2 | tail -1)
log "Blocking $DOMAIN IP $IP to make sure proxy is used"
docker exec --privileged --user root connect bash -c "iptables -A INPUT -p tcp -s $IP -j DROP"
log "Creating Salesforce Platform Events Source connector"
playground connector create-or-update --connector salesforce-platform-events-source << EOF
{
"connector.class": "io.confluent.salesforce.SalesforcePlatformEventSourceConnector",
"kafka.topic": "sfdc-platform-events",
"tasks.max": "1",
"curl.logging": "true",
"salesforce.platform.event.name" : "MyPlatformEvent__e",
"salesforce.instance" : "$SALESFORCE_INSTANCE",
"salesforce.username" : "$SALESFORCE_USERNAME",
"salesforce.password" : "$SALESFORCE_PASSWORD",
"salesforce.password.token" : "$SALESFORCE_SECURITY_TOKEN",
"salesforce.consumer.key" : "$SALESFORCE_CONSUMER_KEY",
"salesforce.consumer.secret" : "$SALESFORCE_CONSUMER_PASSWORD",
"http.proxy": "squid:8888",
"http.proxy.auth.scheme": "BASIC",
"http.proxy.user": "admin",
"http.proxy.password": "1234",
"salesforce.initial.start" : "latest",
"key.converter": "org.apache.kafka.connect.json.JsonConverter",
"value.converter": "org.apache.kafka.connect.json.JsonConverter",
"confluent.license": "",
"confluent.topic.bootstrap.servers": "broker:9092",
"confluent.topic.replication.factor": "1"
}
EOF
sleep 5
docker exec -d --privileged --user root connect bash -c 'tcpdump -w /tmp/tcpdump.pcap -i eth0 -s 0 port 8888'
log "Login with sfdx CLI"
docker exec sfdx-cli sh -c "sfdx sfpowerkit:auth:login -u \"$SALESFORCE_USERNAME\" -p \"$SALESFORCE_PASSWORD\" -r \"$SALESFORCE_INSTANCE\" -s \"$SALESFORCE_SECURITY_TOKEN\""
log "Send Platform Events"
docker exec sfdx-cli sh -c "sfdx apex run --target-org \"$SALESFORCE_USERNAME\" -f \"/tmp/event.apex\""
sleep 10
log "Verify we have received the data in sfdc-platform-events topic"
playground topic consume --topic sfdc-platform-events --min-expected-messages 2 --timeout 60
log "Creating Salesforce Platform Events Sink connector"
playground connector create-or-update --connector salesforce-platform-events-sink << EOF
{
"connector.class": "io.confluent.salesforce.SalesforcePlatformEventSinkConnector",
"topics": "sfdc-platform-events",
"tasks.max": "1",
"curl.logging": "true",
"salesforce.platform.event.name" : "MyPlatformEvent__e",
"salesforce.instance" : "$SALESFORCE_INSTANCE",
"salesforce.username" : "$SALESFORCE_USERNAME",
"salesforce.password" : "$SALESFORCE_PASSWORD",
"salesforce.password.token" : "$SALESFORCE_SECURITY_TOKEN",
"salesforce.consumer.key" : "$SALESFORCE_CONSUMER_KEY",
"salesforce.consumer.secret" : "$SALESFORCE_CONSUMER_PASSWORD",
"http.proxy": "squid:8888",
"http.proxy.auth.scheme": "BASIC",
"http.proxy.user": "admin",
"http.proxy.password": "1234",
"connection.max.message.size": "10048576",
"key.converter": "org.apache.kafka.connect.json.JsonConverter",
"value.converter": "org.apache.kafka.connect.json.JsonConverter",
"reporter.bootstrap.servers": "broker:9092",
"reporter.error.topic.name": "error-responses",
"reporter.error.topic.replication.factor": 1,
"reporter.result.topic.name": "success-responses",
"reporter.result.topic.replication.factor": 1,
"transforms": "MaskField",
"transforms.MaskField.type": "org.apache.kafka.connect.transforms.MaskField\$Value",
"transforms.MaskField.fields": "Message__c",
"confluent.license": "",
"confluent.topic.bootstrap.servers": "broker:9092",
"confluent.topic.replication.factor": "1"
}
EOF
sleep 10
log "Verify topic success-responses"
playground topic consume --topic success-responses --min-expected-messages 2 --timeout 60
# log "Verify topic error-responses"
playground topic consume --topic error-responses --min-expected-messages 0 --timeout 60