@govuk-pay/cli 0.0.29 → 0.0.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/package.json +5 -2
  2. package/resources/legacy-ruby-cli/config/secrets.yml +2 -2
  3. package/resources/legacy-ruby-cli/config/service_secrets.yml +2 -2
  4. package/resources/pay-local/config/localstack/init-aws.sh +70 -0
  5. package/resources/pay-local/config/postgres/docker-entrypoint-initdb.d/make_payments_databases.sql +26 -0
  6. package/resources/pay-local/config/service_config.yaml +193 -0
  7. package/resources/pay-local/config/services/adminusers.env +49 -0
  8. package/resources/pay-local/config/services/cardid.env +2 -0
  9. package/resources/pay-local/config/services/connector.env +70 -0
  10. package/resources/pay-local/config/services/demo-service.env +10 -0
  11. package/resources/pay-local/config/services/egress/squid.conf +47 -0
  12. package/resources/pay-local/config/services/frontend.env +12 -0
  13. package/resources/pay-local/config/services/java_app.env +1 -0
  14. package/resources/pay-local/config/services/ledger.env +10 -0
  15. package/resources/pay-local/config/services/products-ui.env +14 -0
  16. package/resources/pay-local/config/services/products.env +25 -0
  17. package/resources/pay-local/config/services/publicapi.env +13 -0
  18. package/resources/pay-local/config/services/publicauth.env +13 -0
  19. package/resources/pay-local/config/services/selfservice.env +21 -0
  20. package/resources/pay-local/config/services/ssl/certs/frontend-proxy.crt +18 -0
  21. package/resources/pay-local/config/services/ssl/certs/products-ui-proxy.crt +20 -0
  22. package/resources/pay-local/config/services/ssl/certs/publicapi-proxy.crt +18 -0
  23. package/resources/pay-local/config/services/ssl/certs/selfservice-proxy.crt +20 -0
  24. package/resources/pay-local/config/services/ssl/certs/stubs-proxy.crt +18 -0
  25. package/resources/pay-local/config/services/ssl/keys/frontend-proxy.key +28 -0
  26. package/resources/pay-local/config/services/ssl/keys/products-ui-proxy.key +28 -0
  27. package/resources/pay-local/config/services/ssl/keys/publicapi-proxy.key +28 -0
  28. package/resources/pay-local/config/services/ssl/keys/selfservice-proxy.key +28 -0
  29. package/resources/pay-local/config/services/ssl/keys/stubs-proxy.key +28 -0
  30. package/resources/pay-local/config/services/ssl/make-selfsigned.sh +2 -0
  31. package/resources/pay-local/config/services/stubs.env +12 -0
  32. package/resources/pay-local/config/services/toolbox.env +6 -0
  33. package/resources/pay-local/config/services/webhooks.env +9 -0
  34. package/resources/pay-local/templates/docker-compose.hbs +276 -0
  35. package/resources/usageDetails.txt +1 -0
  36. package/src/commands/local/config/default_config_setup.js +13 -0
  37. package/src/commands/local/config/last_up_record.js +50 -0
  38. package/src/commands/local/config/pay_local_cluster.js +221 -0
  39. package/src/commands/local/config/renderer.js +46 -0
  40. package/src/commands/local/docker_compose_controller.js +24 -0
  41. package/src/commands/local/subcommands/down.js +56 -0
  42. package/src/commands/local/subcommands/nuke.js +28 -0
  43. package/src/commands/local/subcommands/otp.js +27 -0
  44. package/src/commands/local/subcommands/restart.js +35 -0
  45. package/src/commands/local/subcommands/up.js +55 -0
  46. package/src/commands/local.js +98 -0
  47. package/src/core/commandRouter.js +4 -0
  48. package/src/util/configs.js +47 -0
  49. package/src/util/md5.js +16 -0
@@ -0,0 +1,20 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDTzCCAjegAwIBAgIJAJTMRAWxLjdOMA0GCSqGSIb3DQEBCwUAMD4xGjAYBgNV
3
+ BAMMEXNlbGZzZXJ2aWNlLXByb3h5MRMwEQYDVQQKDApHT1YuVUsgUGF5MQswCQYD
4
+ VQQGEwJHQjAeFw0xODEwMDUxMzI1NTFaFw0xOTEwMDUxMzI1NTFaMD4xGjAYBgNV
5
+ BAMMEXNlbGZzZXJ2aWNlLXByb3h5MRMwEQYDVQQKDApHT1YuVUsgUGF5MQswCQYD
6
+ VQQGEwJHQjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALMqC2PBeWXf
7
+ 4y841dai6Jpnci7mPICjtgk3bMEzeTS3u79XqR0tm4nNRs7jJzRGL4q1uYGIlRPn
8
+ bfiFBAKRJTR1thntZV5kiUf5c4rdFIDlhjJF8WbWoTpys1ZQ1pJwpYSDbppdt3Cz
9
+ 3gh/LHmlTFxP84Ha/4Bk+W6+VVMNdY07ymjYt2f327983XEmvFmm0ZUMPrUHzU2J
10
+ kppt/H01Se4clGU1ngqSYcQoD4SWDctRFXjv7YY/cZKmNARnCMCHKChmTWNiRjCx
11
+ R9khg+ZOYCWsU11V6OuKizs8DedOmQnnISJ5JoY9ACC+/Ll0F0GKBsc87ZYh5mdw
12
+ uWMYEfGUuesCAwEAAaNQME4wHQYDVR0OBBYEFJYeywmQGYJ0+U28cXRmGK+/HGzy
13
+ MB8GA1UdIwQYMBaAFJYeywmQGYJ0+U28cXRmGK+/HGzyMAwGA1UdEwQFMAMBAf8w
14
+ DQYJKoZIhvcNAQELBQADggEBAEH4TgXZSRU66qeiVIphuMtajkpCKIYkhSJiy+BS
15
+ 5Q8hnqAVWUvihhBpfdBpV2vosTAYU9I7eEkJ+t1utDgH6nzriIVuUKEeeMDmel+M
16
+ zLqMy8M4+9Y/Stesxm646iWIJMzGT8PoZSYBbcjvb4bsLBy7nxkkFvVluo90uBoK
17
+ xY60fSLLobh1Uh0Nr3/Ui9u712gjq1IZ3bcohqVXEumck9cH3z84BjzUlCPRoYPN
18
+ SUydh086XTBz4yjP7DK68QyCAfVoTwWz7P7rLjYZH9NB57b3DrwizYlwMX7kKfHj
19
+ POXim9pVku1mI1IdBFxN3XbqzeqHUeCRyyqWxCIlDeHCEmA=
20
+ -----END CERTIFICATE-----
@@ -0,0 +1,18 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIC9DCCAdwCCQDCic1s3YTXrjANBgkqhkiG9w0BAQsFADA8MRgwFgYDVQQDDA9w
3
+ dWJsaWNhcGktcHJveHkxEzARBgNVBAoMCkdPVi5VSyBQYXkxCzAJBgNVBAYTAkdC
4
+ MB4XDTI0MDMwNDE1MzA0OVoXDTI1MDMwNDE1MzA0OVowPDEYMBYGA1UEAwwPcHVi
5
+ bGljYXBpLXByb3h5MRMwEQYDVQQKDApHT1YuVUsgUGF5MQswCQYDVQQGEwJHQjCC
6
+ ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALN/gveplxRPaCWANwe2S9LD
7
+ ZAeFD0rQFFETt1IKHmk0qFn/4Gxdf5svMhrk6fV7HJW5v93bpz8fgFlwTeHh5FKN
8
+ 6AeGzqhP16LrBNNIavuFwEU/LRER+FlMjNN66EHGrcPClF3c5eAmWarYdZYkpkCN
9
+ +Nh2TEAB/biJXb95YxJjg5NZUCJnS4LC0GYjS4Gu3dauIsQbJ0L4oYo9K/1FZfJc
10
+ 7u5FTY5T9zRJPGVEMN/HFqe2PzgesP1dWs/HMlFMgtefcb/9ESkx+SzRwITkE9mq
11
+ MlNL5lpNC/joK30vKj6ZclRBwQ6EgtdzgrvnIAvP4gklZqqUuSCdYsqjzTc7uoUC
12
+ AwEAATANBgkqhkiG9w0BAQsFAAOCAQEAhzI5eFhRG+DYvtJVHtwm6YudpEJ/MT/P
13
+ jHhnymVLfTNrvkhZ+75VUTKXdhnZQWMBpH4ZV5ASktB+BeiMz/lKcA1tdAZvnZyB
14
+ 6O9QLYKMEfU5fg5i7fdrAimv3rvj/KMgejUZrHobKaMWcPBRiIpKbxWI6+DFTHyc
15
+ hCcMdeC8rNT5Iz1WG2Uqo66otv83g6dyIrbq8cOZxXI9ocTQgTyfLSIWp72NBxk5
16
+ xxMzuyojVU678zb7oX3qCRTX4TlxMU/+o7QQ/oPwpHi9S/oDpeZBfepLf6nmwQJT
17
+ TGWlUWlb2gCJef8UtrJSDg9B4nZR83L7qutEberZJrkzBxbqXz6GfQ==
18
+ -----END CERTIFICATE-----
@@ -0,0 +1,20 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDTzCCAjegAwIBAgIJAJTMRAWxLjdOMA0GCSqGSIb3DQEBCwUAMD4xGjAYBgNV
3
+ BAMMEXNlbGZzZXJ2aWNlLXByb3h5MRMwEQYDVQQKDApHT1YuVUsgUGF5MQswCQYD
4
+ VQQGEwJHQjAeFw0xODEwMDUxMzI1NTFaFw0xOTEwMDUxMzI1NTFaMD4xGjAYBgNV
5
+ BAMMEXNlbGZzZXJ2aWNlLXByb3h5MRMwEQYDVQQKDApHT1YuVUsgUGF5MQswCQYD
6
+ VQQGEwJHQjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALMqC2PBeWXf
7
+ 4y841dai6Jpnci7mPICjtgk3bMEzeTS3u79XqR0tm4nNRs7jJzRGL4q1uYGIlRPn
8
+ bfiFBAKRJTR1thntZV5kiUf5c4rdFIDlhjJF8WbWoTpys1ZQ1pJwpYSDbppdt3Cz
9
+ 3gh/LHmlTFxP84Ha/4Bk+W6+VVMNdY07ymjYt2f327983XEmvFmm0ZUMPrUHzU2J
10
+ kppt/H01Se4clGU1ngqSYcQoD4SWDctRFXjv7YY/cZKmNARnCMCHKChmTWNiRjCx
11
+ R9khg+ZOYCWsU11V6OuKizs8DedOmQnnISJ5JoY9ACC+/Ll0F0GKBsc87ZYh5mdw
12
+ uWMYEfGUuesCAwEAAaNQME4wHQYDVR0OBBYEFJYeywmQGYJ0+U28cXRmGK+/HGzy
13
+ MB8GA1UdIwQYMBaAFJYeywmQGYJ0+U28cXRmGK+/HGzyMAwGA1UdEwQFMAMBAf8w
14
+ DQYJKoZIhvcNAQELBQADggEBAEH4TgXZSRU66qeiVIphuMtajkpCKIYkhSJiy+BS
15
+ 5Q8hnqAVWUvihhBpfdBpV2vosTAYU9I7eEkJ+t1utDgH6nzriIVuUKEeeMDmel+M
16
+ zLqMy8M4+9Y/Stesxm646iWIJMzGT8PoZSYBbcjvb4bsLBy7nxkkFvVluo90uBoK
17
+ xY60fSLLobh1Uh0Nr3/Ui9u712gjq1IZ3bcohqVXEumck9cH3z84BjzUlCPRoYPN
18
+ SUydh086XTBz4yjP7DK68QyCAfVoTwWz7P7rLjYZH9NB57b3DrwizYlwMX7kKfHj
19
+ POXim9pVku1mI1IdBFxN3XbqzeqHUeCRyyqWxCIlDeHCEmA=
20
+ -----END CERTIFICATE-----
@@ -0,0 +1,18 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIC7DCCAdQCCQChntfK5crC9TANBgkqhkiG9w0BAQsFADA4MRQwEgYDVQQDDAtz
3
+ dHVicy1wcm94eTETMBEGA1UECgwKR09WLlVLIFBheTELMAkGA1UEBhMCR0IwHhcN
4
+ MTgxMDAzMDk0NzIwWhcNMTkxMDAzMDk0NzIwWjA4MRQwEgYDVQQDDAtzdHVicy1w
5
+ cm94eTETMBEGA1UECgwKR09WLlVLIFBheTELMAkGA1UEBhMCR0IwggEiMA0GCSqG
6
+ SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDe04Va9XOuKi9lhnJLuaSRv0XSnSMextaW
7
+ EW6HCT8PbC9U4CaIlM3f/iypHusCvWFjMBsB1I5ZaPb3EnpmNCiQNYm1Kt6Jjz4a
8
+ CnA1TX5VT0XlrMlTY7WaPL97SD1Si4a67PuMcio/9ZUHhNRbLV21VuleMeV9fueK
9
+ wPRpjiORFEey56AJt4dNFl4XVDoJN9RP8KViWzAArFcOnECpM7NnVS7PiRDAA0ZL
10
+ OilDKE+rePuGTm6ym584gWs4bX505C6teoAZ6QpiuXOk8/j9fcyRoCevPy4SogXJ
11
+ Yf2aUQ4EzJUziBMZM7xh3m/+JMKWrmqFLPOmOS5mPXsvQ8eVvh4fAgMBAAEwDQYJ
12
+ KoZIhvcNAQELBQADggEBAABmE1vBgVNxTH+2rTHEs6ZKfU4EGRR1Qq+PRhHOfus7
13
+ zF9Z/nJ63YXdSt99DLeRwpVzQvRBT6Sl0tFy6CVmogW8c38Tkt2pdR5lnzfcQPrN
14
+ MwzUYGKetiAvHREBblR1bs+9IzpybEz1j+i8bX3kG8PKcIK0m4gnIvwWZwHDlBHr
15
+ i4tG3ank+nKPMnITwMK6OR4C4NdI6O3FdU0jLgmdVFWbbuZ6saFW/3oGWgvi2M3E
16
+ LC6dmWgwf2GwMb3xO9lgtQFgTy1TPCk8IwB/bXIrwG4rIEwuI8Kki6JvucGwPtUp
17
+ 8j3po7WhWDmpauwIpD+5xVTxbCyd5uuecPa9CsJukG4=
18
+ -----END CERTIFICATE-----
@@ -0,0 +1,28 @@
1
+ -----BEGIN PRIVATE KEY-----
2
+ MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCyQ5bPLhR1njJc
3
+ 3eGtAyChrQPS/oKHDUm1H61HSv9OJFZvm4La1hQD9BhxbT47ZC1qTGAnaXoP3SJJ
4
+ SooyZxIcrEQpNs9zVsGjZ6wdn4Dhjks4x70qEcZawkrgPhJEIGaYlSs928LOrBLW
5
+ Av+cSew+YSMAMen6wdg5fWDaue91LMc/Scp7YIGfVWU3oRe+nVKF7jvQv7qu1C4H
6
+ IEqEyRDiDM2IPOrYTvst9FIGHcEV5FqfKa5rfy5A8wpXFdg3DaC0US5dZPQDdz/q
7
+ +pM/+42lt3R6vTPUVpESOgRaa2sr6j6/B5VltIgXN4oXak+Ho5KSsi3DWAivriIe
8
+ NXGAsnM3AgMBAAECggEBAJ+pXceOVBDMcfsvV9On+3ATEFvITIw9YIjzKDW0fFo2
9
+ vZwUwuzR1Pd9hu8Akz6KiQquAWkLVaIjw3O1aXWfT1+TAzGOv9tkFucOEeAuXjan
10
+ RcRDUa/+X5QmdP3HWoDeLEX5RNOQoziMcgpwgRQwOYHdaoXgLtrDB7DmFPuSkWB2
11
+ DPlKrX1tL2m8PkMMFyLpm1oRwGY8VRcz47DpYnAeB9UwQN5HcPFYVdL9dK4GY8NE
12
+ +uLy8FoDOxcSbDdOY0nF+JgjLGCX2kqyFCE0s40AEazwyGORXSfSpokUigJLrMnX
13
+ OYyTNZ5BNc/dySrrx6BP5rFp3wziaIBiqNd7/lWIg7ECgYEA5jdk5/Bb0QKqHmvS
14
+ ZwZthpEc1nLtiIpwm6q4b6xB/pI/epi03wpghYxQ6aYR1X/2HMT/7M0wm+YCYotb
15
+ O7gmVNIavS49WevfpI3V6D1hjFOzlRD9KGJz9owM3Da5AZVEtl3OwLixuvgb5oCI
16
+ byE6U9tH/zN8LWbeE0dlAMqzEf0CgYEAxjqnCcbjLIe4BTJJr+UqfgD0fCii1/72
17
+ 9C58MuccGziOT8Ig/efm39u763GFovQ1yuNx2g4Uj77wMAJkFJRJLhP3rATtccPe
18
+ 9obphn+kVGzPGpO5dvaeN30eHT/+lRKjdZwNfvhB38q8YjFfhf+bwxFTNFm4TBK1
19
+ wz1WEBM9FkMCgYASVi8vWjG2ACRUr/neQuDOaxiE7DqHOZ+mhn6SRoIrKLLtrOQb
20
+ L9RoTrjTI2sgOkT8HaTU07Mfd76Q4tCtfQlwkBuZHem9E9CIZtO238y5RKF1Khk/
21
+ 8jeSV61ejO1HdwA2Flq1dwCRB9oRDgPP9jGTJFAjv5IQe7UMjA87dOm2cQKBgDHd
22
+ c0OMWn1LLslv2wV6WnQT/Wx2NHCtXKYUQ33ykSlv0qzRosb8XSGW/vC9P+a8FAQT
23
+ rwIxZI68c2NAVriujLIgp78IBksGAMJ3Mat51HbAYGDJJHB+nVJMERU+keYiKChf
24
+ ty1nefq33ye8T9E/eYlahFm48BmC42JXvZyRml5NAoGAGeQ6ub2MEH/gC4AyCU49
25
+ XfziuznchGl5OyERtw9h87D25eRZe7b9E/mHVJKkvZZ9Q6cgtRmK3PHuHpWFScZ7
26
+ 4vyNaRmqLlMCDNTNmYhmJ+aAGWE648UFH8dzDJGUIzj6pjVDWIyD2Q2inFViCert
27
+ 5ank4Cv+OwTv3okVs1M4ggI=
28
+ -----END PRIVATE KEY-----
@@ -0,0 +1,28 @@
1
+ -----BEGIN PRIVATE KEY-----
2
+ MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCzKgtjwXll3+Mv
3
+ ONXWouiaZ3Iu5jyAo7YJN2zBM3k0t7u/V6kdLZuJzUbO4yc0Ri+KtbmBiJUT5234
4
+ hQQCkSU0dbYZ7WVeZIlH+XOK3RSA5YYyRfFm1qE6crNWUNaScKWEg26aXbdws94I
5
+ fyx5pUxcT/OB2v+AZPluvlVTDXWNO8po2Ldn99u/fN1xJrxZptGVDD61B81NiZKa
6
+ bfx9NUnuHJRlNZ4KkmHEKA+Elg3LURV47+2GP3GSpjQEZwjAhygoZk1jYkYwsUfZ
7
+ IYPmTmAlrFNdVejrios7PA3nTpkJ5yEieSaGPQAgvvy5dBdBigbHPO2WIeZncLlj
8
+ GBHxlLnrAgMBAAECggEADlEcyeLrBYYHjH15MQahmb0Mdcz2Jr1uTXw9V476b4kD
9
+ Gr4xiGBdnnxl3SBvwJCfOfFdmolEiGuk8QgIEwBwPanuXFIJGKrmAXdgkUcrXUV6
10
+ HMhUCwi5p4cE56/cBaW0xEsQaot0ni/xXTJ0ZmAcIwBMkCLk6einuf7BqLpZm2h6
11
+ UGqqjd/8FLCWlFkEG2zZKr8rLg8hnKwcyt3VKGXWcXAnOupoQMhyLmQGGSGzC+m4
12
+ xh5tXTkOnUmcZUI5oi9RHI1aMV4jnI/4hwAe8kWxvMpMUu3GczVWOeBrRt2AVpqi
13
+ I8oqHSpLdvkXpM9O9x7Xmg+X33XG1dyh7YY40TyByQKBgQDt6erEldK+KCFDbyXO
14
+ EsyUn9Bc1wfxMUBGKp0l2GflwMaShQxNRd+8Vy2igADXOKtOWdWw2k4zaWM/0wU6
15
+ UwZiIzuQOP8nahbN060H1Ot3TTHqbuiClj1YqpuSYh/ghAgwVyElt57NKGuyZUTj
16
+ LnvZqaCyAUUBnyuRgxfvHZ7wZwKBgQDAyMrmn2DNyAM1Q2FBv01gnQhc/gCoc2jB
17
+ qLvd0XtGluTcCW+y3fwq+10+RzhgMPEfKt+aTLKhuAmhMi7HH8gUScajnQzkRwoS
18
+ cJMjCGjS7CCbOIdvkqj6fFuZUy+jvhZvbenf5Ivi1nibVSoU6j9dtcX7ZUSb3dqA
19
+ 4hhdg5Sn3QKBgQDlVtMXk7Fl2vtNrOwNfTO2pWPOyv3989MYkGWSIMzuvejtPtH/
20
+ /zZQsNztw2SMEzWXPqPualJt3s5srPdiJLyHh50YRsk3bl3zJXSrkwU0qLZQXX9G
21
+ upsCSNvUvUArRjs6lhL+78Vl0OwYOOSx9pIu3QRp8y1ZBd2S1IMS3kPjSwKBgQCp
22
+ Xb4j7lE1eEqZOKDxCggIoO0ABYa+duXJfVvO/IK4+UgGp6OiGLO5byvz0s4Mc/Lh
23
+ 1uCqxkcJHI4ZN+UwuxMj/8yrYQY6Zs7KdGxPksvEwf3DYF5b/xTFOwueIB7yU8WS
24
+ D5YwRLFAj/tVO/TEeydARLmyqr0j0jxsjjWpsjefYQKBgQCxLc2aG4s/1jMIW3yP
25
+ nzoTai23bn9DyIxfPyM9Aiv3vdHa/WvZIdB739HAzcVNDfmMPjuo+IebpFsIfyjZ
26
+ uSbFVyhPsdVKWjXYv3xCopWyuqUoerD8Bj/WYUaGgBM3LvxNAtio5G9JiqpG3HsP
27
+ nmnnb5AbYJxn+s5lVni/tlmRfQ==
28
+ -----END PRIVATE KEY-----
@@ -0,0 +1,28 @@
1
+ -----BEGIN PRIVATE KEY-----
2
+ MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCzf4L3qZcUT2gl
3
+ gDcHtkvSw2QHhQ9K0BRRE7dSCh5pNKhZ/+BsXX+bLzIa5On1exyVub/d26c/H4BZ
4
+ cE3h4eRSjegHhs6oT9ei6wTTSGr7hcBFPy0REfhZTIzTeuhBxq3DwpRd3OXgJlmq
5
+ 2HWWJKZAjfjYdkxAAf24iV2/eWMSY4OTWVAiZ0uCwtBmI0uBrt3WriLEGydC+KGK
6
+ PSv9RWXyXO7uRU2OU/c0STxlRDDfxxantj84HrD9XVrPxzJRTILXn3G//REpMfks
7
+ 0cCE5BPZqjJTS+ZaTQv46Ct9Lyo+mXJUQcEOhILXc4K75yALz+IJJWaqlLkgnWLK
8
+ o803O7qFAgMBAAECggEAEEFY6/LIwscaKGM/GIyyuyiEs4WiR+UmId2GOYC/Fkn1
9
+ gQkCGu4wsy4H/JWEdn2qrgh/TqkosTe6GN9pvi4FzlAZlizoJCfu4EsmSbgCMDsB
10
+ mYPKIgSdmACttC0qQWKrs9G4O/PYQX9XmXg21d0FzUzOH1Q/PYCwqHiQK9njVfPU
11
+ SSuC5g7bJTTIpSzo64sX2AfmlVetRGJ9mdWfLZi/Q/PppBTjWth0ADHLb0e99cyM
12
+ da4LrCQSXqym8+LyTOU8rxRBzn8gjT7wyoIHBEujGsqLEFPkPKHiUTsvpjlIU2v3
13
+ 7CY4fpsfxjX1JlGxmUhaJvZKLTnYY6v6kyytWmXo4QKBgQDejSKZ+IDrS792URFw
14
+ SoN6WrKzvDY1sxxdSFLTbjrAyIlz9XX+LrmHbwwa2cmDHSQyP1p3p4hVeLRkYFDu
15
+ qKX3VRCTSlXGCKMbLz7CK9tm5VNzh4H2pHXfZz0lt+235tHZtoD8JwzsVdCLANpn
16
+ 7kTFTTpyswD8AJMIi7YvM5lJmQKBgQDOed1VxyI8q3pSXPM6Ij+7K5dsN3W3zY1r
17
+ G24pqaiQg+HRf7XBhHKseaJAxUVl4DRJHZXorwH/cCuhp2k60rnjGfX2zDnnV55v
18
+ 2abE9ziUhawdF6nSAvV00DvUEAJ9kgp7aNJMAdajhLXuW9ERiHl+rX3ykId2Ue43
19
+ 8p0FL/cDzQKBgGFsJRaD22OlYCYaLOkcJVwdchcOMCjnxGXtcByQJ3YXE1zIuiNQ
20
+ LvVjnkfuyLD1w8+fPiodE6he05ERPLyM5UJVYZEovE2ZoFUZJH75le0APLzZOAJR
21
+ Uiw+1Fy7nHuhtoF4zBQVwCmBE26WLAXNHxvDx+9H/wlR8wuNpW4aR2MZAoGBAJbO
22
+ ZX3wSy5a5KXho/kS6M+RYDC3NTDBXogbadPeSfL7kGUOzTcBwSv+TybVrwFgx2+b
23
+ v1FK+b+TMxsIBpDjNsgLvx26PpSc52i0ZN054EaCd5psHSn55UOjj/8sjlUe5K8M
24
+ eYTwVs/p72OgBkyzDGIc33/aVkZyQvb0KgGO7fEFAoGALKnWcnvDBDU++H+AD1RO
25
+ ECWk45FJ756dhZSZ/2E3/JUgTDQmddny2P/2vhK/MhitdyBi5yWUpjl4jn1Hl9nW
26
+ fJS4ExA7xgyzKhKXKD6lOen0CbXofHEm8JoC5Hj4nj2LocT/kerkdrbBw7DbPGtr
27
+ e3Z1chiiNRGt8+v43VKurXU=
28
+ -----END PRIVATE KEY-----
@@ -0,0 +1,28 @@
1
+ -----BEGIN PRIVATE KEY-----
2
+ MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCzKgtjwXll3+Mv
3
+ ONXWouiaZ3Iu5jyAo7YJN2zBM3k0t7u/V6kdLZuJzUbO4yc0Ri+KtbmBiJUT5234
4
+ hQQCkSU0dbYZ7WVeZIlH+XOK3RSA5YYyRfFm1qE6crNWUNaScKWEg26aXbdws94I
5
+ fyx5pUxcT/OB2v+AZPluvlVTDXWNO8po2Ldn99u/fN1xJrxZptGVDD61B81NiZKa
6
+ bfx9NUnuHJRlNZ4KkmHEKA+Elg3LURV47+2GP3GSpjQEZwjAhygoZk1jYkYwsUfZ
7
+ IYPmTmAlrFNdVejrios7PA3nTpkJ5yEieSaGPQAgvvy5dBdBigbHPO2WIeZncLlj
8
+ GBHxlLnrAgMBAAECggEADlEcyeLrBYYHjH15MQahmb0Mdcz2Jr1uTXw9V476b4kD
9
+ Gr4xiGBdnnxl3SBvwJCfOfFdmolEiGuk8QgIEwBwPanuXFIJGKrmAXdgkUcrXUV6
10
+ HMhUCwi5p4cE56/cBaW0xEsQaot0ni/xXTJ0ZmAcIwBMkCLk6einuf7BqLpZm2h6
11
+ UGqqjd/8FLCWlFkEG2zZKr8rLg8hnKwcyt3VKGXWcXAnOupoQMhyLmQGGSGzC+m4
12
+ xh5tXTkOnUmcZUI5oi9RHI1aMV4jnI/4hwAe8kWxvMpMUu3GczVWOeBrRt2AVpqi
13
+ I8oqHSpLdvkXpM9O9x7Xmg+X33XG1dyh7YY40TyByQKBgQDt6erEldK+KCFDbyXO
14
+ EsyUn9Bc1wfxMUBGKp0l2GflwMaShQxNRd+8Vy2igADXOKtOWdWw2k4zaWM/0wU6
15
+ UwZiIzuQOP8nahbN060H1Ot3TTHqbuiClj1YqpuSYh/ghAgwVyElt57NKGuyZUTj
16
+ LnvZqaCyAUUBnyuRgxfvHZ7wZwKBgQDAyMrmn2DNyAM1Q2FBv01gnQhc/gCoc2jB
17
+ qLvd0XtGluTcCW+y3fwq+10+RzhgMPEfKt+aTLKhuAmhMi7HH8gUScajnQzkRwoS
18
+ cJMjCGjS7CCbOIdvkqj6fFuZUy+jvhZvbenf5Ivi1nibVSoU6j9dtcX7ZUSb3dqA
19
+ 4hhdg5Sn3QKBgQDlVtMXk7Fl2vtNrOwNfTO2pWPOyv3989MYkGWSIMzuvejtPtH/
20
+ /zZQsNztw2SMEzWXPqPualJt3s5srPdiJLyHh50YRsk3bl3zJXSrkwU0qLZQXX9G
21
+ upsCSNvUvUArRjs6lhL+78Vl0OwYOOSx9pIu3QRp8y1ZBd2S1IMS3kPjSwKBgQCp
22
+ Xb4j7lE1eEqZOKDxCggIoO0ABYa+duXJfVvO/IK4+UgGp6OiGLO5byvz0s4Mc/Lh
23
+ 1uCqxkcJHI4ZN+UwuxMj/8yrYQY6Zs7KdGxPksvEwf3DYF5b/xTFOwueIB7yU8WS
24
+ D5YwRLFAj/tVO/TEeydARLmyqr0j0jxsjjWpsjefYQKBgQCxLc2aG4s/1jMIW3yP
25
+ nzoTai23bn9DyIxfPyM9Aiv3vdHa/WvZIdB739HAzcVNDfmMPjuo+IebpFsIfyjZ
26
+ uSbFVyhPsdVKWjXYv3xCopWyuqUoerD8Bj/WYUaGgBM3LvxNAtio5G9JiqpG3HsP
27
+ nmnnb5AbYJxn+s5lVni/tlmRfQ==
28
+ -----END PRIVATE KEY-----
@@ -0,0 +1,28 @@
1
+ -----BEGIN PRIVATE KEY-----
2
+ MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDe04Va9XOuKi9l
3
+ hnJLuaSRv0XSnSMextaWEW6HCT8PbC9U4CaIlM3f/iypHusCvWFjMBsB1I5ZaPb3
4
+ EnpmNCiQNYm1Kt6Jjz4aCnA1TX5VT0XlrMlTY7WaPL97SD1Si4a67PuMcio/9ZUH
5
+ hNRbLV21VuleMeV9fueKwPRpjiORFEey56AJt4dNFl4XVDoJN9RP8KViWzAArFcO
6
+ nECpM7NnVS7PiRDAA0ZLOilDKE+rePuGTm6ym584gWs4bX505C6teoAZ6QpiuXOk
7
+ 8/j9fcyRoCevPy4SogXJYf2aUQ4EzJUziBMZM7xh3m/+JMKWrmqFLPOmOS5mPXsv
8
+ Q8eVvh4fAgMBAAECggEBAMMOFEmIXahTQ0QzSfAh5P60mhGA/pJdatDZF5Dbtjjw
9
+ 8gnxYanj4Mg4fq3Y4851K0AhhzK195oq+S1VHpJDDFMYmqBdk4qFOs6e3pS6bmGN
10
+ UFl6RI5b1Ufb756ioROWEe2lr5nFAlkUyE1ZqG7cKpCoMQcE1Khjo5phyFJyW44N
11
+ uS5ILas8xYA+qk77KKX6OffxC9UfXKIaJJwnTWMgpL1Xg4tPpPYHBAnPH5I/qErg
12
+ lUaFueqQ9jtY7yhLH+eD35toOJWVP1j6HRdeybMs3b5N1qDK8pXw75HSbkTCtQ1P
13
+ cxGgV4OFSFpVbpko4rg+EIzJyH72uUTwq0Nw8Thps4ECgYEA+JQGLslKNLCrY4KE
14
+ 37Pf07J9y0Sa1asHhpRFHmysrKYEjyQe2gNq0xRWtZv2BjZMT5gcg4J280R0oUEb
15
+ HPfl74dY8sdVtZTIFhj4JPA3TUF8nBY1w95LMDYQE092vNuhijUsoxNtTnJHJhM8
16
+ oIHGFlZNhdN7r9UPXmqxh/yWLEECgYEA5XqqN3ivru6qwIuw+rfcAfGuAXyX1Nm5
17
+ weXqFcn/M8e8MF3AYWFaqOSGvrVAdPjZi+PvohWunxLZKW/VwFCJLTfPxnWQwuKL
18
+ HE9IdI/5jJDAPZ2XGxndw6WZBIn9lXBihYLh5Ej04OV8F1EFU4hii1oGzaznLjg+
19
+ 9znHN8mfMl8CgYEAn0fqdkxRGlYiXE8j6VwPDk2PQZKiTEudNOUJLSehtbdjsH0K
20
+ r9QEvWCI9zIKgYyFdXMYwkP1CIhS24kmYHeQhN2LZ3XHO+UsGMzDJJgwN3bA7Btn
21
+ NCzarPfXcSg4A2gQqMjN42jtX5jmckVdUdQWI/YFEr2iwdaaVHu1ale1uoECgYEA
22
+ lcjYO/bpbVxZVe6YKT5DO32dn1jM3eDzj61berdrfUfc/RDklmtuOplXnjk+hls7
23
+ 3ER+UKSoYypxVsupkKrAryQj2Z05TQuD04moeHTVZTvCTzWCwOzERITdeQn83EML
24
+ +6tveItqUzVXJvz6Zgi6kczEbhFyoEeUSdiLwU04PS8CgYByG9aNDwMfUvDJgXcN
25
+ 0nwO/0EzmTQ50BKyUgXTDOzyQ1s3ahZ4a/eZr7gLKcv+IsS++HWiIE84mZf1PJrL
26
+ y4QtAB7LpigremSxAr3NIJJdSXIfFr0/UP7w0W6N86ZCRH3pxJbNWPPMVdJAH7ky
27
+ w4uKgEXFQLcp8EPN2+W1DMIo2Q==
28
+ -----END PRIVATE KEY-----
@@ -0,0 +1,2 @@
1
+ #!/bin/bash
2
+ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -sha256 -keyout keys/$1.key -out certs/$1.crt -subj "/CN=$1/O=GOV.UK Pay/C=GB"
@@ -0,0 +1,12 @@
1
+ PORT=9900
2
+ SMARTPAY_EXPECTED_USER=smartpay-user
3
+ SMARTPAY_EXPECTED_PASSWORD=smartpay-password
4
+ WORLDPAY_EXPECTED_USER=worldpay-user
5
+ WORLDPAY_EXPECTED_PASSWORD=worldpay-password
6
+ CONNECTOR_SANDBOX_NOTIFICATION_URL=http://connector:9300/v1/api/notifications/sandbox
7
+ CONNECTOR_WORLDPAY_NOTIFICATION_URL=http://connector:9300/v1/api/notifications/worldpay
8
+ CONNECTOR_SMARTPAY_NOTIFICATION_URL=http://connector:9300/v1/api/notifications/smartpay
9
+ CONNECTOR_EPDQ_NOTIFICATION_URL=http://connector:9300/v1/api/notifications/epdq
10
+ EPDQ_SHA_OUT_PASSPHRASE=mysecretpassphrase
11
+ EXTERNAL_STUBS_URL=http://stubs:3030/
12
+ FRONTEND_URL=http://localhost:9000
@@ -0,0 +1,6 @@
1
+ COOKIE_SESSION_ENCRYPTION_SECRET=aezoor3eig0Looche1waeh1caiph3Mek # pragma: allowlist secret
2
+ NODE_ENV=development
3
+ TOOLBOX_FILE_ROOT=.
4
+ BUILD_FOLDER_ROOT=./dist
5
+ AUTH_GITHUB_ENABLED=false
6
+ PUBLIC_AUTH_URL=http://publicauth:9600
@@ -0,0 +1,9 @@
1
+ PORT=10800
2
+ ADMIN_PORT=10801
3
+ DB_HOST=webhooks_db
4
+ DB_PORT=5432
5
+ DB_SSL_OPTION=ssl=true
6
+ DB_USER=webhooks
7
+ DB_PASSWORD=mysecretpassword
8
+ WEBHOOK_MESSAGE_SENDING_QUEUE_NUMBER_OF_THREADS=2
9
+ DISABLE_INTERNAL_HTTPS=true
@@ -0,0 +1,276 @@
1
+ # Cluster: {{name}}
2
+
3
+ services:
4
+ {{#each dbServices}}
5
+ {{name}}:
6
+ image: postgres:15.7
7
+ container_name: {{name}}
8
+ environment:
9
+ - BIND_HOST=0.0.0.0
10
+ - POSTGRES_PASSWORD=mysecretpassword
11
+ mem_limit: 250M
12
+ logging:
13
+ driver: "json-file"
14
+ healthcheck:
15
+ test: ["CMD-SHELL", "pg_isready -d postgres -U postgres"]
16
+ interval: 10s
17
+ timeout: 5s
18
+ retries: 5
19
+ volumes:
20
+ - {{../defaultServiceConfigsPath}}/postgres/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
21
+ ports:
22
+ - "{{port}}:5432"
23
+ networks:
24
+ - pay_local_mimic_aws_vpc
25
+
26
+ {{/each}}
27
+
28
+ {{#each javaApps}}
29
+ {{name}}:
30
+ {{#if localBuild}}
31
+ build: "$WORKSPACE/pay-{{name}}"
32
+ {{else}}
33
+ image: governmentdigitalservice/pay-{{name}}:{{imageTag}}
34
+ {{/if}}
35
+ container_name: {{name}}
36
+ {{#if hasDB}}
37
+ depends_on:
38
+ {{name}}_db:
39
+ condition: service_healthy
40
+ {{/if}}
41
+ healthcheck:
42
+ test: ["CMD", "wget", "-O", "/dev/null", "http://{{name}}:{{port}}/healthcheck"]
43
+ interval: 10s
44
+ timeout: 5s
45
+ retries: 12
46
+ env_file:
47
+ - {{../defaultServiceConfigsPath}}/services/java_app.env
48
+ - {{../defaultServiceConfigsPath}}/services/{{name}}.env
49
+ {{#ifFileExists environmentOverrideFilePath}}
50
+ - {{../environmentOverrideFilePath}}
51
+ {{/ifFileExists}}
52
+ environment:
53
+ - BIND_HOST=0.0.0.0
54
+ - RUN_MIGRATION=true
55
+ - RUN_APP=true
56
+ - PORT={{port}}
57
+ - DISABLE_INTERNAL_HTTPS=true
58
+
59
+ {{#if hasDB}}
60
+ - DB_HOST={{name}}_db
61
+ - DB_USER={{name}}
62
+ - DB_PASSWORD=mysecretpassword
63
+ - DB_SSL_OPTION=ssl=none
64
+ {{/if}}
65
+
66
+ {{#if requiresLocalStack}}
67
+ - AWS_ACCESS_KEY=mockAccessKey
68
+ - AWS_SECRET_ACCESS_KEY=mockSecretAccessKey
69
+ {{/if}}
70
+
71
+ {{#if useEgressProxy}}
72
+ - http_proxy=http://egress:8080
73
+ - HTTP_PROXY=http://egress:8080
74
+ - https_proxy=http://egress:8080
75
+ - HTTPS_PROXY=http://egress:8080
76
+ - HTTP_PROXY_HOST=egress
77
+ - HTTPS_PROXY_HOST=egress
78
+ - HTTP_PROXY_URI=http://egress:8080
79
+ - HTTPS_PROXY_URI=http://egress:8080
80
+ - HTTP_PROXY_ENABLED=true
81
+ - HTTPS_PROXY_ENABLED=true
82
+ - HTTP_PROXY_PORT=8080
83
+ - HTTPS_PROXY_PORT=8080
84
+ - HTTP_PROXY_SCHEME=http
85
+ - NO_PROXY={{noProxyEnvVar}}
86
+ {{/if}}
87
+
88
+ {{#if hasSQSQueues}}
89
+ - AWS_SQS_REGION=eu-west-1
90
+ - AWS_SQS_MESSAGE_MAXIMUM_WAIT_TIME_IN_SECONDS=20
91
+ - AWS_SQS_NON_STANDARD_SERVICE_ENDPOINT=true
92
+ - AWS_SQS_ENDPOINT=http://localstack:4566
93
+ {{#each sqsQueues}}
94
+ - {{envVarName}}=http://localstack:4566/000000000000/{{queueName}}
95
+ {{/each}}
96
+ {{/if}}
97
+
98
+ {{#if hasSNSTopics}}
99
+ - AWS_SNS_NON_STANDARD_SERVICE_ENDPOINT=true
100
+ - AWS_SNS_ENDPOINT=http://localstack:4566
101
+ - AWS_SNS_REGION=eu-west-1
102
+ {{#each snsTopics}}
103
+ - {{envVarName}}_ARN=arn:aws:sns:eu-west-1:000000000000:{{topicName}}
104
+ {{/each}}
105
+ {{/if}}
106
+
107
+ {{#each ../serviceURLEnvVars}}
108
+ - {{name}}={{value}}
109
+ {{/each}}
110
+ mem_limit: 2G
111
+ logging:
112
+ driver: "json-file"
113
+ ports:
114
+ - "{{port}}:{{port}}"
115
+ {{#if adminPort}}
116
+ - "{{adminPort}}:{{adminPort}}"
117
+ {{/if}}
118
+ networks:
119
+ - pay_local_mimic_aws_vpc
120
+
121
+ {{/each}}
122
+
123
+ {{#each nodeApps}}
124
+ {{name}}:
125
+ {{#if localBuild}}
126
+ build: "$WORKSPACE/pay-{{name}}"
127
+ {{else}}
128
+ image: governmentdigitalservice/pay-{{name}}:{{imageTag}}
129
+ {{/if}}
130
+ container_name: {{name}}
131
+ {{#if hasDB }}
132
+ depends_on:
133
+ {{name}}_db:
134
+ condition: service_healthy
135
+ {{/if}}
136
+ healthcheck:
137
+ test: ["CMD", "wget", "-O", "/dev/null", "http://{{name}}:{{port}}/healthcheck"]
138
+ interval: 10s
139
+ timeout: 5s
140
+ retries: 12
141
+ env_file:
142
+ - {{../defaultServiceConfigsPath}}/services/{{name}}.env
143
+ {{#ifFileExists environmentOverrideFilePath}}
144
+ - {{../environmentOverrideFilePath}}
145
+ {{/ifFileExists}}
146
+ {{#ifBoth ../mountLocalNodeApps localBuild}}
147
+ volumes:
148
+ - "$WORKSPACE/pay-{{../name}}:/app"
149
+ {{/ifBoth}}
150
+ environment:
151
+ - BIND_HOST=0.0.0.0
152
+ - SECURE_COOKIE_OFF=true
153
+ - RUN_APP=true
154
+ - DISABLE_INTERNAL_HTTPS=true
155
+ - PORT={{port}}
156
+ {{#if useEgressProxy}}
157
+ - http_proxy=http://egress:8080
158
+ - HTTP_PROXY=http://egress:8080
159
+ - https_proxy=http://egress:8080
160
+ - HTTPS_PROXY=http://egress:8080
161
+ - HTTP_PROXY_HOST=egress
162
+ - HTTPS_PROXY_HOST=egress
163
+ - HTTP_PROXY_URI=http://egress:8080
164
+ - HTTPS_PROXY_URI=http://egress:8080
165
+ - HTTP_PROXY_ENABLED=true
166
+ - HTTPS_PROXY_ENABLED=true
167
+ - HTTP_PROXY_PORT=8080
168
+ - HTTPS_PROXY_PORT=8080
169
+ - HTTP_PROXY_SCHEME=http
170
+ - NO_PROXY={{../noProxyEnvVar}}
171
+ {{/if}}
172
+
173
+ {{#each ../serviceURLEnvVars}}
174
+ - {{name}}={{value}}
175
+ {{/each}}
176
+ mem_limit: 1G
177
+ working_dir: '/app'
178
+ {{#ifBoth localBuild entrypointOverrideLocal}}
179
+ entrypoint: {{{../entrypointOverrideLocal}}}
180
+ {{else}}
181
+ entrypoint: "npx nodemon --inspect=0.0.0.0:{{../debugPort}} start.js"
182
+ {{/ifBoth}}
183
+ ports:
184
+ - "{{port}}:{{port}}"
185
+ {{#if debugPort}}
186
+ - "{{debugPort}}:{{debugPort}}"
187
+ {{/if}}
188
+ logging:
189
+ driver: "json-file"
190
+ networks:
191
+ - pay_local_mimic_aws_vpc
192
+
193
+ {{/each}}
194
+
195
+ {{#if requiresLocalStack}}
196
+ localstack:
197
+ image: localstack/localstack:3
198
+ container_name: localstack
199
+ environment:
200
+ - EAGER_SERVICE_LOADING=1
201
+ - SERVICES=sns,sqs
202
+ ports:
203
+ - "4566:4566" # All AWS services exposed on this port
204
+ volumes:
205
+ - {{defaultServiceConfigsPath}}/localstack/init-aws.sh:/etc/localstack/init/ready.d/init-aws.sh
206
+ networks:
207
+ - pay_local_mimic_aws_vpc
208
+ {{/if}}
209
+
210
+ {{#if requiresRedis}}
211
+ redis:
212
+ image: redis:latest
213
+ container_name: localRedis
214
+ ports:
215
+ - "6379:6379"
216
+ networks:
217
+ - pay_local_mimic_aws_vpc
218
+ {{/if}}
219
+
220
+ {{#if requiresEgressProxy}}
221
+ egress:
222
+ image: governmentdigitalservice/pay-egress:latest-master
223
+ container_name: egress
224
+ volumes:
225
+ - "{{defaultServiceConfigsPath}}/egress/squid.conf:/etc/squid/squid.conf"
226
+ networks:
227
+ pay_local_mimic_aws_vpc:
228
+ ipv4_address: 172.18.0.253
229
+ expose:
230
+ - 8080
231
+ {{/if}}
232
+
233
+ {{#each reverseProxyServices}}
234
+ {{name}}:
235
+ image: governmentdigitalservice/pay-docker-nginx-proxy:latest-master
236
+ container_name: {{name}}
237
+ healthcheck:
238
+ test: ["CMD", "wget", "--no-check-certificate", "-O", "/dev/null", "https://{{name}}:{{port}}/healthcheck"]
239
+ interval: 10s
240
+ timeout: 5s
241
+ retries: 12
242
+ depends_on:
243
+ {{appName}}:
244
+ condition: service_healthy
245
+ environment:
246
+ - BIND_HOST=0.0.0.0
247
+ - PROXY_SERVICE_HOST=http://{{appName}}
248
+ - PROXY_SERVICE_PORT={{appPort}}
249
+ - HTTPS_LISTEN_PORT={{port}}
250
+ - NAXSI_RULES_URL_CSV=/etc/nginx/naxsi/locations/1/{{appName}}.rules
251
+ - NAXSI_RULES_MD5_CSV={{naxsiRulesSourceFileMD5}}
252
+ - CLIENT_BODY_BUFFER_SIZE=10
253
+ - CLIENT_MAX_BODY_SIZE=10
254
+ mem_limit: 1G
255
+ volumes:
256
+ - "{{naxsiRulesSourceFile}}:/etc/nginx/naxsi/locations/1/{{appName}}.rules"
257
+ - "{{../defaultServiceConfigsPath}}/services/ssl/certs/{{name}}.crt:/etc/keys/crt"
258
+ - "{{../defaultServiceConfigsPath}}/services/ssl/keys/{{name}}.key:/etc/keys/key"
259
+ ports:
260
+ - "{{port}}:{{port}}"
261
+ logging:
262
+ driver: "json-file"
263
+ networks:
264
+ - pay_local_mimic_aws_vpc
265
+
266
+ {{/each}}
267
+
268
+ networks:
269
+ pay_local_mimic_aws_vpc:
270
+ name: pay_local_mimic_aws_vpc
271
+ driver_opts:
272
+ com.docker.network.bridge.host_binding_ipv4: "127.0.0.1"
273
+ ipam:
274
+ driver: default
275
+ config:
276
+ - subnet: 172.18.0.0/24
@@ -3,6 +3,7 @@ Commands:
3
3
  pay doctor # Attempts to initialise or fix the Pay CLI
4
4
  pay help [COMMAND] # Describe available commands or one specific ...
5
5
  pay local # Sets up local Pay development environment
6
+ pay localx # EXPERIMENTAL: Nodejs replacement of `pay local`
6
7
  pay schema # Generates web based database diagrams and me...
7
8
  pay secrets # Manage secrets in and between environments
8
9
  pay tunnel # Open tunnel to application database
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.copyDefaultConfigs = void 0;
7
+ const node_fs_1 = __importDefault(require("node:fs"));
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ function copyDefaultConfigs(to) {
10
+ const sourceDir = node_path_1.default.join(__dirname, '..', '..', '..', '..', 'resources', 'pay-local', 'config');
11
+ node_fs_1.default.cpSync(sourceDir, to, { recursive: true, force: true });
12
+ }
13
+ exports.copyDefaultConfigs = copyDefaultConfigs;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getLastUp = exports.recordUp = void 0;
7
+ const node_fs_1 = __importDefault(require("node:fs"));
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const LAST_UP_FILENAME = 'last-up-DO-NOT-EDIT.yaml';
10
+ /* Records the last 'up' command docker-compose file by creating a symlink to it in the
11
+ * rendered templates path
12
+ */
13
+ function recordUp(renderedTemplatesPath, cluster) {
14
+ const lastUpRecordPath = node_path_1.default.resolve(node_path_1.default.join(renderedTemplatesPath, LAST_UP_FILENAME));
15
+ const lastUpActualFilename = `${cluster.name}.yaml`;
16
+ node_fs_1.default.rmSync(lastUpRecordPath, { force: true });
17
+ node_fs_1.default.symlinkSync(lastUpActualFilename, lastUpRecordPath);
18
+ }
19
+ exports.recordUp = recordUp;
20
+ /* Gets the path of the most recently used docker-compose file.
21
+ *
22
+ * Returns undefined if one can't be found, otherwise returns the full path
23
+ * to the yaml file which was last generated by the 'up' command
24
+ */
25
+ function getLastUp(renderedTemplatesPath) {
26
+ const lastUpRecordPath = node_path_1.default.resolve(node_path_1.default.join(renderedTemplatesPath, LAST_UP_FILENAME));
27
+ const pathStat = node_fs_1.default.lstatSync(lastUpRecordPath, { throwIfNoEntry: false });
28
+ if (pathStat === undefined) {
29
+ return;
30
+ }
31
+ if (!pathStat.isSymbolicLink()) {
32
+ return;
33
+ }
34
+ const symlinkTarget = node_fs_1.default.readlinkSync(lastUpRecordPath);
35
+ if (symlinkTarget === undefined) {
36
+ return;
37
+ }
38
+ if (!symlinkTarget.endsWith('.yaml')) {
39
+ return;
40
+ }
41
+ const lastUpActualPath = node_path_1.default.resolve(node_path_1.default.join(renderedTemplatesPath, symlinkTarget));
42
+ const lastUpActualPathStat = node_fs_1.default.statSync(lastUpActualPath, { throwIfNoEntry: false });
43
+ if (lastUpActualPathStat === undefined) {
44
+ return;
45
+ }
46
+ if (lastUpActualPathStat.isFile()) {
47
+ return lastUpActualPath;
48
+ }
49
+ }
50
+ exports.getLastUp = getLastUp;