4 # URI: postgres:///db_name
6 DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
7 if ! $(echo "$PATH" | grep -q "$DIR/toolbox/scripts"); then
8 PATH="$DIR/toolbox/scripts:$PATH"
13 pass show Travail/Fretlink/$1
15 pass show Travail/Fretlink/$1 | grep "^$2:" | sed -e "s/^$2: //"
20 if [ "$1" = "--old" ]; then
29 if [ -z "$1" -o -z "$2" -o -z "$3" -o -z "$4" ]; then
30 echo "build_macaroon [--old] secret src-key-id target realm" >&2
36 target="uri://fretlink/$3"
39 pushd "$HOME/workdir/haskell-commons" >/dev/null 2>/dev/null
40 MACAROON_PRIVATE_KEY="$secret" MACAROON_SECRET="$secret" stack exec macaroon-bakery -- $action --location "$target" --key-id "$src" $ttl "$realm"
41 popd 2>/dev/null >/dev/null
44 function capitalize() {
45 echo "$1" | sed -e 's!\(^\|-\)\(.\)!\U\2!g'
48 APP=$(basename $(pwd))
50 FL_APPS_HOST="localhost"
53 FL_ADMIN_ROOT_PORT=8079
54 FL_ADMIN_ROOT_PRIVATE_KEY="{{ lookup('passwordstore', 'Travail/Fretlink/Macaroons/AdminRoot subkey=PrivateKey') }}"
55 FL_ADMIN_ROOT_URL="$FL_APPS_SCHEME://$FL_APPS_HOST:$FL_ADMIN_ROOT_PORT/api/"
58 FL_APP_MONGO_URI="mongodb://localhost:27017/fretlink"
59 FL_APP_SECRET="{{ lookup('passwordstore', 'Travail/Fretlink/Macaroons/App subkey=Secret') }}"
60 FL_APP_URL="$FL_APPS_SCHEME://$FL_APPS_HOST:$FL_APP_PORT"
62 FL_CARRIER_DIRECTORY_PORT=8082
63 FL_CARRIER_DIRECTORY_SECRET="{{ lookup('passwordstore', 'Travail/Fretlink/Macaroons/CarrierDirectory subkey=Secret') }}"
64 FL_CARRIER_DIRECTORY_PRIVATE_KEY="{{ lookup('passwordstore', 'Travail/Fretlink/Macaroons/CarrierDirectory subkey=PrivateKey') }}"
65 FL_CARRIER_DIRECTORY_URL="$FL_APPS_SCHEME://$FL_APPS_HOST:$FL_CARRIER_DIRECTORY_PORT/api"
68 FL_NOTIFIER_SECRET="{{ lookup('passwordstore', 'Travail/Fretlink/Macaroons/Notifier subkey=Secret') }}"
69 FL_NOTIFIER_PRIVATE_KEY="{{ lookup('passwordstore', 'Travail/Fretlink/Macaroons/Notifier subkey=PrivateKey') }}"
70 FL_NOTIFIER_URL="$FL_APPS_SCHEME://$FL_APPS_HOST:$FL_NOTIFIER_PORT/api"
73 FL_PRICER_PRIVATE_KEY="{{ lookup('passwordstore', 'Travail/Fretlink/Macaroons/Pricer subkey=PrivateKey') }}"
76 FL_FREIGHT_SECRET="{{ lookup('passwordstore', 'Travail/Fretlink/Macaroons/Freight subkey=Secret') }}"
78 FL_BOOKKEEPING_SECRET="dummy"
79 FL_LANE_EXPLORER_SECRET="dummy"
81 FL_PSQL_HOST="{{ lookup('passwordstore', 'Travail/Fretlink/Psql/Local subkey=Host') }}"
82 FL_PSQL_PORT="{{ lookup('passwordstore', 'Travail/Fretlink/Psql/Local subkey=Port') }}"
83 FL_PSQL_USER="{{ lookup('passwordstore', 'Travail/Fretlink/Psql/Local subkey=User') }}"
84 FL_PSQL_PASSWORD="{{ lookup('passwordstore', 'Travail/Fretlink/Psql/Local') }}"
86 FL_TOOLBOX_AGENT_MACAROON="{{ lookup('passwordstore', 'Travail/Fretlink/Macaroons/ToolboxAgent') }}"
88 export FRETLINK_ENV="$APP ${FL_ENV:-local}"
90 if [ -f "local.env.example" ]; then
91 source local.env.example
94 if [ "$APP" != "app" ]; then
96 port_var="FL_${name^^}_PORT"
97 secret_var="FL_${name^^}_SECRET"
98 private_key_var="FL_${name^^}_PRIVATE_KEY"
100 if [ -n "${!secret_var}" ]; then
101 export MACAROON_SECRET="${!secret_var}"
103 if [ -n "${!private_key_var}" ]; then
104 export MACAROON_PRIVATE_KEY="${!private_key_var}"
106 export PORT="${!port_var}"
107 export PG_URI="postgres:///$name"
109 if [ -z "$FL_ENV" ]; then
110 export POSTGRESQL_ADDON_HOST="$FL_PSQL_HOST"
111 export POSTGRESQL_ADDON_PORT="$FL_PSQL_PORT"
112 export POSTGRESQL_ADDON_USER="$FL_PSQL_USER"
113 export POSTGRESQL_ADDON_PASSWORD="$FL_PSQL_PASSWORD"
114 export POSTGRESQL_ADDON_DB="$name"
116 key=Psql/$(capitalize $FL_ENV)/$(capitalize $APP)
117 export POSTGRESQL_ADDON_HOST=$(p $key Host)
118 export POSTGRESQL_ADDON_PORT=$(p $key Port)
119 export POSTGRESQL_ADDON_USER=$(p $key User)
120 export POSTGRESQL_ADDON_PASSWORD=$(p $key)
121 export POSTGRESQL_ADDON_DB=$(p $key Database)
125 if [ "$APP" = "app" ]; then
126 export FRETLINK_MONGO_URI="$FL_APP_MONGO_URI"
127 export FRETLINK_PORT="$FL_APP_PORT"
128 export FRETLINK_BASE_URL="$FL_APP_URL"
130 # Dummies mandatory but not defined by default
131 export FRETLINK_SMTP_PASSWORD="password"
132 export FRETLINK_AMAZON_PUBLIC_KEY="password"
133 export FRETLINK_AMAZON_PRIVATE_KEY="password"
134 export FRETLINK_GMAPS_API_KEY="password"
135 export FRETLINK_PASSWORD_REQUEST_SECRET="password"
138 export FRETLINK_MACAROON_SECRET=$FL_APP_SECRET
141 export CARRIER_DIRECTORY_URI="$FL_CARRIER_DIRECTORY_URL/"
142 export FRETLINK_CARDIR_URL="$FL_CARRIER_DIRECTORY_URL"
143 export FRETLINK_CARDIR_ENABLED="true"
144 export FRETLINK_CARDIRV3_ACCESS_KEY="$(build_macaroon $FL_CARRIER_DIRECTORY_SECRET carrier-directory carrier-directory carrier-directory::read)"
147 export FRETLINK_NOTIFIER_API=$FL_NOTIFIER_URL
148 export FRETLINK_NOTIFIER_ACCESS_KEY="$(build_macaroon $FL_NOTIFIER_SECRET notifier notifier messaging)"
149 export FRETLINK_NOTIFIER_TRANSPOREON_ACCESS_KEY="$(build_macaroon --old $FL_NOTIFIER_PRIVATE_KEY notifier notifier external)"
150 export FRETLINK_NOTIFIER_TRANSPOREON_ENABLED="true"
152 export FRETLINK_NOTIFIER_ENABLED="true"
153 export FRETLINK_NOTIFIER_AMQP_ENABLED="true"
154 export FRETLINK_NOTIFIER_AMQP_TLS="{{ lookup('passwordstore', 'Travail/Fretlink/Rabbitmq/Local/Notifier subkey=TLS') }}"
155 export FRETLINK_NOTIFIER_AMQP_USER="{{ lookup('passwordstore', 'Travail/Fretlink/Rabbitmq/Local/Notifier subkey=User') }}"
156 export FRETLINK_NOTIFIER_AMQP_PASSWORD="{{ lookup('passwordstore', 'Travail/Fretlink/Rabbitmq/Local/Notifier') }}"
157 export FRETLINK_NOTIFIER_AMQP_HOSTS="{{ lookup('passwordstore', 'Travail/Fretlink/Rabbitmq/Local/Notifier subkey=Hosts') }}"
158 export FRETLINK_NOTIFIER_AMQP_QUEUE="{{ lookup('passwordstore', 'Travail/Fretlink/Rabbitmq/Local/Notifier subkey=Queue') }}"
159 export FRETLINK_NOTIFIER_AMQP_EXCHANGE="{{ lookup('passwordstore', 'Travail/Fretlink/Rabbitmq/Local/Notifier subkey=Exchange') }}"
160 export FRETLINK_NOTIFIER_AMQP_PORT="{{ lookup('passwordstore', 'Travail/Fretlink/Rabbitmq/Local/Notifier subkey=Port') }}"
161 export FRETLINK_NOTIFIER_AMQP_VHOST="{{ lookup('passwordstore', 'Travail/Fretlink/Rabbitmq/Local/Notifier subkey=Vhost') }}"
165 export FRETLINK_ADMINROOT_URL=$FL_ADMIN_ROOT_URL
166 export FRETLINK_ADMINROOT_ACCESS_KEY="$(build_macaroon $FL_ADMIN_ROOT_PRIVATE_KEY admin-root admin-root admin-root::token-delivery)"
169 export FRETLINK_GEODATA_API="{{ lookup('passwordstore', 'Travail/Fretlink/Macaroons/GeodataDev subkey=Url') }}"
170 export FRETLINK_GEODATA_ACCESS_KEY="{{ lookup('passwordstore', 'Travail/Fretlink/Macaroons/GeodataDev') }}"
171 export GEODATA_URI="$FRETLINK_GEODATA_API"
174 if [ "$APP" = "admin-root" ]; then
175 export BASE_URL=$FL_APPS_HOST
176 export API_ROOT="http://$BASE_URL:$PORT/api"
177 export UI_ROOT="http://$BASE_URL:$PORT/admin"
178 export TOK="$(build_macaroon $FL_ADMIN_ROOT_PRIVATE_KEY admin-root admin-root admin-root::provisioning)"
180 export CARDIR_MACAROON_SECRET=$FL_CARRIER_DIRECTORY_SECRET
181 export NOTIFIER_MACAROON_SECRET=$FL_NOTIFIER_SECRET
182 export BOOKKEEPING_MACAROON_SECRET=$FL_BOOKKEEPING_SECRET
183 export LANE_EXPLORER_MACAROON_SECRET=$FL_LANE_EXPLORER_SECRET
186 if [ "$APP" = "carrier-directory" ]; then
187 export ADMIN_BASE_URL=$FL_APP_URL
188 export ACCESS_KEY="$(build_macaroon $FL_CARRIER_DIRECTORY_SECRET carrier-directory carrier-directory carrier-directory::read)"
191 if [ "$APP" = "notifier" ]; then
192 export MAILGUN_API_KEY="dummy"
193 export MAILGUN_DOMAIN="dummy"
194 export TEMPLATES_ASSETS_BASE_URL="http://dummy/"
195 export TRANSPOREON_USER="{{ lookup('passwordstore', 'Travail/Fretlink/Transporeon/ApiTest subkey=Login') }}"
196 export TRANSPOREON_PASSWORD="{{ lookup('passwordstore', 'Travail/Fretlink/Transporeon/ApiTest') }}"
197 export TRANSPOREON_HOST="api.test.transporeon.com"
198 export TRANSPOREON_CALLBACK_USER="{{ lookup('passwordstore', 'Travail/Fretlink/Transporeon/NotifierCallbackTest subkey=Login') }}"
199 export TRANSPOREON_CALLBACK_PASSWORD="{{ lookup('passwordstore', 'Travail/Fretlink/Transporeon/NotifierCallbackTest') }}"
203 #export MACAROON="$(build_macaroon $FL_NOTIFIER_SECRET notifier notifier external)"
205 export MACAROON="$(build_macaroon --old $FL_NOTIFIER_PRIVATE_KEY notifier notifier external)"
207 # To push transporeon cargos to app
208 export TRANSPOREON_APP_PUSH_URL="http://localhost:8080/api/transporeon/cargo"
209 export TRANSPOREON_APP_PUSH_MACAROON="$(build_macaroon $FL_APP_SECRET notifier app app::transporeon-cargos-write)"
212 export AMQP_VHOST="notifier"
213 export AMQP_USER="notifier"
214 export AMQP_PASSWORD="notifier"
215 export AMQP_QUEUE="notifier"
216 export AMQP_SERVER="localhost"
217 export AMQP_TLS="false"
220 if [ "$APP" = "pricer" ]; then
221 export GOOGLE_AUTH_CLIENT_ID="dummy"
224 if [ "$APP" = "toolbox" ]; then
225 export AGENT_HOST=$FL_APP_URL
226 export AGENT_PATH="/"
227 export AGENT_MACAROON=$FL_TOOLBOX_AGENT_MACAROON