@scandipwa/magento-scripts 1.14.1-alpha.8 → 1.14.1-alpha.9

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 (43) hide show
  1. package/lib/config/docker.js +41 -9
  2. package/lib/config/get-port-config.js +5 -1
  3. package/lib/config/port-config.js +2 -1
  4. package/lib/config/ssl-terminator/index.js +10 -0
  5. package/lib/config/templates/nginx.template.conf +0 -31
  6. package/lib/config/templates/ssl-terminator.template.conf +27 -0
  7. package/lib/config/versions/magento-2.3.0.js +3 -1
  8. package/lib/config/versions/magento-2.3.1.js +3 -1
  9. package/lib/config/versions/magento-2.3.2-p2.js +3 -1
  10. package/lib/config/versions/magento-2.3.2.js +3 -1
  11. package/lib/config/versions/magento-2.3.3-p1.js +3 -1
  12. package/lib/config/versions/magento-2.3.3.js +3 -1
  13. package/lib/config/versions/magento-2.3.4-p2.js +3 -1
  14. package/lib/config/versions/magento-2.3.4.js +3 -1
  15. package/lib/config/versions/magento-2.3.5-p1.js +3 -1
  16. package/lib/config/versions/magento-2.3.5-p2.js +3 -1
  17. package/lib/config/versions/magento-2.3.5.js +3 -1
  18. package/lib/config/versions/magento-2.3.6-p1.js +3 -1
  19. package/lib/config/versions/magento-2.3.6.js +3 -1
  20. package/lib/config/versions/magento-2.3.7-p1.js +3 -1
  21. package/lib/config/versions/magento-2.3.7-p2.js +3 -1
  22. package/lib/config/versions/magento-2.3.7-p3.js +3 -1
  23. package/lib/config/versions/magento-2.3.7.js +3 -1
  24. package/lib/config/versions/magento-2.4.0-p1.js +3 -1
  25. package/lib/config/versions/magento-2.4.0.js +3 -1
  26. package/lib/config/versions/magento-2.4.1-p1.js +3 -1
  27. package/lib/config/versions/magento-2.4.1.js +3 -1
  28. package/lib/config/versions/magento-2.4.2-p1.js +3 -1
  29. package/lib/config/versions/magento-2.4.2-p2.js +3 -1
  30. package/lib/config/versions/magento-2.4.2.js +3 -1
  31. package/lib/config/versions/magento-2.4.3-p1.js +3 -1
  32. package/lib/config/versions/magento-2.4.3-p2.js +3 -1
  33. package/lib/config/versions/magento-2.4.3.js +3 -1
  34. package/lib/config/versions/magento-2.4.4.js +3 -1
  35. package/lib/tasks/file-system/create-nginx-config.js +2 -42
  36. package/lib/tasks/file-system/create-ssl-terminator-config.js +94 -0
  37. package/lib/tasks/file-system/create-varnish-config.js +22 -0
  38. package/lib/tasks/file-system/index.js +2 -0
  39. package/lib/tasks/status/index.js +24 -8
  40. package/lib/util/config-file-validator.js +2 -1
  41. package/lib/util/instance-metadata.js +2 -2
  42. package/package.json +2 -2
  43. package/typings/index.d.ts +13 -1
@@ -54,7 +54,7 @@ module.exports = async ({ configuration, ssl, host }, config) => {
54
54
  name: `${ prefix }_nginx-data`,
55
55
  opts: {
56
56
  type: 'nfs',
57
- device: `${ path.join(cacheDir, 'nginx', 'conf.d') }`,
57
+ device: path.join(cacheDir, 'nginx', 'conf.d'),
58
58
  o: 'bind'
59
59
  }
60
60
  };
@@ -62,7 +62,7 @@ module.exports = async ({ configuration, ssl, host }, config) => {
62
62
  name: `${ prefix }_pub-data`,
63
63
  opts: {
64
64
  type: 'nfs',
65
- device: `${ path.join(magentoDir, 'pub') }`,
65
+ device: path.join(magentoDir, 'pub'),
66
66
  o: 'bind'
67
67
  }
68
68
  };
@@ -70,7 +70,15 @@ module.exports = async ({ configuration, ssl, host }, config) => {
70
70
  name: `${ prefix }_setup-data`,
71
71
  opts: {
72
72
  type: 'nfs',
73
- device: `${ path.join(magentoDir, 'setup') }`,
73
+ device: path.join(magentoDir, 'setup'),
74
+ o: 'bind'
75
+ }
76
+ };
77
+ volumes.sslTerminator = {
78
+ name: `${ prefix }_ssl-terminator-data`,
79
+ opts: {
80
+ type: 'nfs',
81
+ device: path.join(cacheDir, 'ssl-terminator', 'conf.d'),
74
82
  o: 'bind'
75
83
  }
76
84
  };
@@ -80,7 +88,7 @@ module.exports = async ({ configuration, ssl, host }, config) => {
80
88
  name: `${ prefix }_varnish-data`,
81
89
  opts: {
82
90
  type: 'nfs',
83
- device: `${ path.join(cacheDir, 'varnish') }`,
91
+ device: path.join(cacheDir, 'varnish'),
84
92
  o: 'bind'
85
93
  }
86
94
  };
@@ -89,6 +97,31 @@ module.exports = async ({ configuration, ssl, host }, config) => {
89
97
 
90
98
  const getContainers = (ports = {}) => {
91
99
  const dockerConfig = {
100
+ sslTerminator: {
101
+ _: 'SSL Terminator (Nginx)',
102
+ ports: isNotNativeLinux ? [
103
+ `${ isIpAddress(host) ? host : '127.0.0.1' }:${ ports.sslTerminator }:80`
104
+ ] : [],
105
+ healthCheck: {
106
+ cmd: 'service nginx status'
107
+ },
108
+ /**
109
+ * Mount volumes directly on linux
110
+ */
111
+ mountVolumes: [
112
+ `${ isLinux ? path.join(cacheDir, 'ssl-terminator', 'conf.d') : volumes.sslTerminator.name }:/etc/nginx/conf.d`
113
+ ],
114
+ restart: 'on-failure:5',
115
+ // TODO: use connect instead
116
+ network: isNotNativeLinux ? network.name : 'host',
117
+ image: `nginx:${ nginx.version }`,
118
+ imageDetails: {
119
+ name: 'nginx',
120
+ tag: nginx.version
121
+ },
122
+ name: `${ prefix }_ssl-terminator`,
123
+ command: "nginx -g 'daemon off;'"
124
+ },
92
125
  nginx: {
93
126
  _: 'Nginx',
94
127
  ports: isNotNativeLinux ? [
@@ -216,10 +249,8 @@ module.exports = async ({ configuration, ssl, host }, config) => {
216
249
  tag: varnish.version
217
250
  },
218
251
  name: `${ prefix }_varnish`,
219
- mountVolumes: isLinux ? [
220
- `${ path.join(cacheDir, 'varnish') }:/etc/varnish`
221
- ] : [
222
- `${ volumes.varnish.name }:/etc/varnish`
252
+ mountVolumes: [
253
+ `${ isLinux ? path.join(cacheDir, 'varnish') : volumes.varnish.name }:/etc/varnish`
223
254
  ],
224
255
  ports: isNotNativeLinux ? [
225
256
  `${ isIpAddress(host) ? host : '127.0.0.1' }:${ ports.varnish }:80`
@@ -229,7 +260,8 @@ module.exports = async ({ configuration, ssl, host }, config) => {
229
260
  },
230
261
  restart: 'on-failure:30',
231
262
  network: isNotNativeLinux ? network.name : 'host',
232
- command: `varnishd -F -a :${ isNotNativeLinux ? 80 : ports.varnish } -t 600 -f /etc/varnish/default.vcl`,
263
+ // eslint-disable-next-line max-len
264
+ command: `/bin/bash -c "varnishd -a :${ isNotNativeLinux ? 80 : ports.varnish } -t 600 -f /etc/varnish/default.vcl -s malloc,512m && varnishlog"`,
233
265
  tmpfs: [
234
266
  '/var/lib/varnish:exec'
235
267
  ]
@@ -26,6 +26,10 @@ const getAvailablePorts = () => ({
26
26
  'utf-8'
27
27
  )
28
28
  );
29
+ if (!ports.sslTerminator) {
30
+ ports.sslTerminator = ports.app;
31
+ ports.app = defaultPorts.app;
32
+ }
29
33
  }
30
34
  const {
31
35
  systemConfiguration: {
@@ -41,7 +45,7 @@ const getAvailablePorts = () => ({
41
45
  if (!isPortAvailable) {
42
46
  throw new Error(`Port ${ctx.port} is not available`);
43
47
  } else {
44
- availablePorts.app = ctx.port;
48
+ availablePorts.sslTerminator = ctx.port;
45
49
  }
46
50
  }
47
51
 
@@ -54,8 +54,9 @@ const savePortsConfig = async (ports) => {
54
54
 
55
55
  // Map of default ports (key:value)
56
56
  const defaultPorts = {
57
- app: 80,
57
+ app: 3031,
58
58
  varnish: 8080,
59
+ sslTerminator: 80,
59
60
  fpm: 9000,
60
61
  xdebug: 9111,
61
62
  mysql: 3306,
@@ -0,0 +1,10 @@
1
+ const path = require('path');
2
+
3
+ const sslTerminator = ({ templateDir }) => ({
4
+ version: '1.18.0',
5
+ configTemplate: path.join(templateDir || '', 'ssl-terminator.template.conf')
6
+ });
7
+
8
+ module.exports = {
9
+ sslTerminator
10
+ };
@@ -1,8 +1,3 @@
1
- real_ip_header X-Forwarded-For;
2
- set_real_ip_from 10.0.0.0/8;
3
- set_real_ip_from 172.0.0.0/8;
4
- real_ip_recursive on;
5
-
6
1
  upstream fastcgi_backend {
7
2
  # use tcp connection
8
3
  server <%= it.hostMachine %>:<%= it.ports.fpm %>;
@@ -10,16 +5,7 @@ upstream fastcgi_backend {
10
5
 
11
6
  server {
12
7
  listen <%= it.hostPort %>;
13
- <% if (it.config.ssl.enabled) { %>listen 443 ssl;<% } %>
14
-
15
- <% if (it.config.ssl.enabled) { %>server_name <%= it.networkToBindTo %>;
16
-
17
- ssl_certificate /etc/nginx/conf.d/ssl_certificate.pem;
18
- ssl_certificate_key /etc/nginx/conf.d/ssl_certificate-key.pem;
19
- ssl_protocols TLSv1.2;<% } else if (it.config.host) { %>server_name <%= it.config.host %>;
20
- <% } else { %>
21
8
  server_name _;
22
- <% } %>
23
9
 
24
10
  set $MAGE_ROOT <%= it.mageRoot %>;
25
11
  resolver 127.0.0.11;
@@ -39,16 +25,6 @@ server {
39
25
  }
40
26
 
41
27
  location / {
42
- # proxy_set_header X-Real-IP $remote_addr;
43
- # proxy_set_header X-Forwarded-For $remote_addr;
44
- # proxy_set_header Host $http_host;
45
-
46
- # if ($request_method = PURGE) {
47
- # rewrite ^/(.*)$ $1 break;
48
- # proxy_pass http://<%= it.hostMachine %>:<%= it.ports.varnish %>/;
49
- # break;
50
- # }
51
-
52
28
  try_files $uri $uri/ /index.php$is_args$args;
53
29
  }
54
30
 
@@ -222,11 +198,4 @@ server {
222
198
  location @webp-to-jpg {
223
199
  rewrite ^(.*)\.webp$ $1.jpg last;
224
200
  }
225
-
226
- # location @purgepass {
227
- # # some other configuration
228
- # proxy_pass http://<%= it.hostMachine %>:<%= it.ports.varnish %>;
229
- # proxy_set_header Host $host;
230
- # proxy_set_header X-Real-IP $remote_addr;
231
- # }
232
201
  }
@@ -0,0 +1,27 @@
1
+ real_ip_header X-Forwarded-For;
2
+ set_real_ip_from 10.0.0.0/8;
3
+ set_real_ip_from 172.0.0.0/8;
4
+ real_ip_recursive on;
5
+
6
+ server {
7
+ listen <%= it.hostPort %>;
8
+ <% if (it.config.ssl.enabled) { %> listen 443 ssl;
9
+ server_name <%= it.networkToBindTo %>;
10
+
11
+ ssl_certificate /etc/nginx/conf.d/ssl_certificate.pem;
12
+ ssl_certificate_key /etc/nginx/conf.d/ssl_certificate-key.pem;
13
+ ssl_protocols TLSv1.2;<% } %>
14
+
15
+ server_name <% if (it.config.host) { %><%= it.config.host %><% } else { %>_<% } %>;
16
+
17
+ location / {
18
+ proxy_buffer_size 128k;
19
+ proxy_buffers 4 256k;
20
+ proxy_busy_buffers_size 256k;
21
+ proxy_set_header X-Real-IP $remote_addr;
22
+ proxy_set_header X-Forwarded-For $remote_addr;
23
+ proxy_set_header Host $http_host;
24
+
25
+ proxy_pass http://<%= it.hostMachine %>:<% if (it.config.configuration.varnish.enabled) { %><%= it.ports.varnish %><% } else { %><%= it.ports.app %><% } %>;
26
+ }
27
+ }
@@ -1,5 +1,6 @@
1
1
  const path = require('path');
2
2
  const { defaultMagentoConfig } = require('../magento-config');
3
+ const { sslTerminator } = require('../ssl-terminator');
3
4
  const { varnish66 } = require('../varnish/varnish-6-6');
4
5
 
5
6
  module.exports = ({ templateDir } = {}) => ({
@@ -45,7 +46,8 @@ module.exports = ({ templateDir } = {}) => ({
45
46
  composer: {
46
47
  version: '1'
47
48
  },
48
- varnish: varnish66({ templateDir })
49
+ varnish: varnish66({ templateDir }),
50
+ sslTerminator: sslTerminator({ templateDir })
49
51
  },
50
52
  magento: defaultMagentoConfig,
51
53
  host: 'localhost',
@@ -1,5 +1,6 @@
1
1
  const path = require('path');
2
2
  const { defaultMagentoConfig } = require('../magento-config');
3
+ const { sslTerminator } = require('../ssl-terminator');
3
4
  const { varnish66 } = require('../varnish/varnish-6-6');
4
5
 
5
6
  module.exports = ({ templateDir } = {}) => ({
@@ -45,7 +46,8 @@ module.exports = ({ templateDir } = {}) => ({
45
46
  composer: {
46
47
  version: '1'
47
48
  },
48
- varnish: varnish66({ templateDir })
49
+ varnish: varnish66({ templateDir }),
50
+ sslTerminator: sslTerminator({ templateDir })
49
51
  },
50
52
  magento: defaultMagentoConfig,
51
53
  host: 'localhost',
@@ -1,5 +1,6 @@
1
1
  const path = require('path');
2
2
  const { defaultMagentoConfig } = require('../magento-config');
3
+ const { sslTerminator } = require('../ssl-terminator');
3
4
  const { varnish66 } = require('../varnish/varnish-6-6');
4
5
 
5
6
  module.exports = ({ templateDir } = {}) => ({
@@ -45,7 +46,8 @@ module.exports = ({ templateDir } = {}) => ({
45
46
  composer: {
46
47
  version: '1'
47
48
  },
48
- varnish: varnish66({ templateDir })
49
+ varnish: varnish66({ templateDir }),
50
+ sslTerminator: sslTerminator({ templateDir })
49
51
  },
50
52
  magento: defaultMagentoConfig,
51
53
  host: 'localhost',
@@ -1,5 +1,6 @@
1
1
  const path = require('path');
2
2
  const { defaultMagentoConfig } = require('../magento-config');
3
+ const { sslTerminator } = require('../ssl-terminator');
3
4
  const { varnish66 } = require('../varnish/varnish-6-6');
4
5
 
5
6
  module.exports = ({ templateDir } = {}) => ({
@@ -45,7 +46,8 @@ module.exports = ({ templateDir } = {}) => ({
45
46
  composer: {
46
47
  version: '1'
47
48
  },
48
- varnish: varnish66({ templateDir })
49
+ varnish: varnish66({ templateDir }),
50
+ sslTerminator: sslTerminator({ templateDir })
49
51
  },
50
52
  magento: defaultMagentoConfig,
51
53
  host: 'localhost',
@@ -1,5 +1,6 @@
1
1
  const path = require('path');
2
2
  const { defaultMagentoConfig } = require('../magento-config');
3
+ const { sslTerminator } = require('../ssl-terminator');
3
4
  const { varnish66 } = require('../varnish/varnish-6-6');
4
5
 
5
6
  module.exports = ({ templateDir } = {}) => ({
@@ -45,7 +46,8 @@ module.exports = ({ templateDir } = {}) => ({
45
46
  composer: {
46
47
  version: '1'
47
48
  },
48
- varnish: varnish66({ templateDir })
49
+ varnish: varnish66({ templateDir }),
50
+ sslTerminator: sslTerminator({ templateDir })
49
51
  },
50
52
  magento: defaultMagentoConfig,
51
53
  host: 'localhost',
@@ -1,5 +1,6 @@
1
1
  const path = require('path');
2
2
  const { defaultMagentoConfig } = require('../magento-config');
3
+ const { sslTerminator } = require('../ssl-terminator');
3
4
  const { varnish66 } = require('../varnish/varnish-6-6');
4
5
 
5
6
  module.exports = ({ templateDir } = {}) => ({
@@ -45,7 +46,8 @@ module.exports = ({ templateDir } = {}) => ({
45
46
  composer: {
46
47
  version: '1'
47
48
  },
48
- varnish: varnish66({ templateDir })
49
+ varnish: varnish66({ templateDir }),
50
+ sslTerminator: sslTerminator({ templateDir })
49
51
  },
50
52
  magento: defaultMagentoConfig,
51
53
  host: 'localhost',
@@ -1,5 +1,6 @@
1
1
  const path = require('path');
2
2
  const { defaultMagentoConfig } = require('../magento-config');
3
+ const { sslTerminator } = require('../ssl-terminator');
3
4
  const { varnish66 } = require('../varnish/varnish-6-6');
4
5
 
5
6
  module.exports = ({ templateDir } = {}) => ({
@@ -45,7 +46,8 @@ module.exports = ({ templateDir } = {}) => ({
45
46
  composer: {
46
47
  version: '1'
47
48
  },
48
- varnish: varnish66({ templateDir })
49
+ varnish: varnish66({ templateDir }),
50
+ sslTerminator: sslTerminator({ templateDir })
49
51
  },
50
52
  magento: defaultMagentoConfig,
51
53
  host: 'localhost',
@@ -1,5 +1,6 @@
1
1
  const path = require('path');
2
2
  const { defaultMagentoConfig } = require('../magento-config');
3
+ const { sslTerminator } = require('../ssl-terminator');
3
4
  const { varnish66 } = require('../varnish/varnish-6-6');
4
5
 
5
6
  module.exports = ({ templateDir } = {}) => ({
@@ -45,7 +46,8 @@ module.exports = ({ templateDir } = {}) => ({
45
46
  composer: {
46
47
  version: '1'
47
48
  },
48
- varnish: varnish66({ templateDir })
49
+ varnish: varnish66({ templateDir }),
50
+ sslTerminator: sslTerminator({ templateDir })
49
51
  },
50
52
  magento: defaultMagentoConfig,
51
53
  host: 'localhost',
@@ -1,5 +1,6 @@
1
1
  const path = require('path');
2
2
  const { defaultMagentoConfig } = require('../magento-config');
3
+ const { sslTerminator } = require('../ssl-terminator');
3
4
  const { varnish66 } = require('../varnish/varnish-6-6');
4
5
 
5
6
  module.exports = ({ templateDir } = {}) => ({
@@ -45,7 +46,8 @@ module.exports = ({ templateDir } = {}) => ({
45
46
  composer: {
46
47
  version: '1'
47
48
  },
48
- varnish: varnish66({ templateDir })
49
+ varnish: varnish66({ templateDir }),
50
+ sslTerminator: sslTerminator({ templateDir })
49
51
  },
50
52
  magento: defaultMagentoConfig,
51
53
  host: 'localhost',
@@ -1,5 +1,6 @@
1
1
  const path = require('path');
2
2
  const { defaultMagentoConfig } = require('../magento-config');
3
+ const { sslTerminator } = require('../ssl-terminator');
3
4
  const { varnish66 } = require('../varnish/varnish-6-6');
4
5
 
5
6
  module.exports = ({ templateDir } = {}) => ({
@@ -45,7 +46,8 @@ module.exports = ({ templateDir } = {}) => ({
45
46
  composer: {
46
47
  version: '1'
47
48
  },
48
- varnish: varnish66({ templateDir })
49
+ varnish: varnish66({ templateDir }),
50
+ sslTerminator: sslTerminator({ templateDir })
49
51
  },
50
52
  magento: defaultMagentoConfig,
51
53
  host: 'localhost',
@@ -1,5 +1,6 @@
1
1
  const path = require('path');
2
2
  const { defaultMagentoConfig } = require('../magento-config');
3
+ const { sslTerminator } = require('../ssl-terminator');
3
4
  const { varnish66 } = require('../varnish/varnish-6-6');
4
5
 
5
6
  module.exports = ({ templateDir } = {}) => ({
@@ -45,7 +46,8 @@ module.exports = ({ templateDir } = {}) => ({
45
46
  composer: {
46
47
  version: '1'
47
48
  },
48
- varnish: varnish66({ templateDir })
49
+ varnish: varnish66({ templateDir }),
50
+ sslTerminator: sslTerminator({ templateDir })
49
51
  },
50
52
  magento: defaultMagentoConfig,
51
53
  host: 'localhost',
@@ -1,5 +1,6 @@
1
1
  const path = require('path');
2
2
  const { defaultMagentoConfig } = require('../magento-config');
3
+ const { sslTerminator } = require('../ssl-terminator');
3
4
  const { varnish66 } = require('../varnish/varnish-6-6');
4
5
 
5
6
  module.exports = ({ templateDir } = {}) => ({
@@ -45,7 +46,8 @@ module.exports = ({ templateDir } = {}) => ({
45
46
  composer: {
46
47
  version: '1'
47
48
  },
48
- varnish: varnish66({ templateDir })
49
+ varnish: varnish66({ templateDir }),
50
+ sslTerminator: sslTerminator({ templateDir })
49
51
  },
50
52
  magento: defaultMagentoConfig,
51
53
  host: 'localhost',
@@ -1,5 +1,6 @@
1
1
  const path = require('path');
2
2
  const { defaultMagentoConfig } = require('../magento-config');
3
+ const { sslTerminator } = require('../ssl-terminator');
3
4
  const { varnish66 } = require('../varnish/varnish-6-6');
4
5
 
5
6
  module.exports = ({ templateDir } = {}) => ({
@@ -45,7 +46,8 @@ module.exports = ({ templateDir } = {}) => ({
45
46
  composer: {
46
47
  version: '1'
47
48
  },
48
- varnish: varnish66({ templateDir })
49
+ varnish: varnish66({ templateDir }),
50
+ sslTerminator: sslTerminator({ templateDir })
49
51
  },
50
52
  magento: defaultMagentoConfig,
51
53
  host: 'localhost',
@@ -1,5 +1,6 @@
1
1
  const path = require('path');
2
2
  const { defaultMagentoConfig } = require('../magento-config');
3
+ const { sslTerminator } = require('../ssl-terminator');
3
4
  const { varnish66 } = require('../varnish/varnish-6-6');
4
5
 
5
6
  module.exports = ({ templateDir } = {}) => ({
@@ -43,7 +44,8 @@ module.exports = ({ templateDir } = {}) => ({
43
44
  composer: {
44
45
  version: '2'
45
46
  },
46
- varnish: varnish66({ templateDir })
47
+ varnish: varnish66({ templateDir }),
48
+ sslTerminator: sslTerminator({ templateDir })
47
49
  },
48
50
  magento: defaultMagentoConfig,
49
51
  host: 'localhost',
@@ -1,5 +1,6 @@
1
1
  const path = require('path');
2
2
  const { defaultMagentoConfig } = require('../magento-config');
3
+ const { sslTerminator } = require('../ssl-terminator');
3
4
  const { varnish66 } = require('../varnish/varnish-6-6');
4
5
 
5
6
  module.exports = ({ templateDir } = {}) => ({
@@ -43,7 +44,8 @@ module.exports = ({ templateDir } = {}) => ({
43
44
  composer: {
44
45
  version: '2'
45
46
  },
46
- varnish: varnish66({ templateDir })
47
+ varnish: varnish66({ templateDir }),
48
+ sslTerminator: sslTerminator({ templateDir })
47
49
  },
48
50
  magento: defaultMagentoConfig,
49
51
  host: 'localhost',
@@ -1,5 +1,6 @@
1
1
  const path = require('path');
2
2
  const { defaultMagentoConfig } = require('../magento-config');
3
+ const { sslTerminator } = require('../ssl-terminator');
3
4
  const { varnish66 } = require('../varnish/varnish-6-6');
4
5
 
5
6
  module.exports = ({ templateDir } = {}) => ({
@@ -43,7 +44,8 @@ module.exports = ({ templateDir } = {}) => ({
43
44
  composer: {
44
45
  version: '2'
45
46
  },
46
- varnish: varnish66({ templateDir })
47
+ varnish: varnish66({ templateDir }),
48
+ sslTerminator: sslTerminator({ templateDir })
47
49
  },
48
50
  magento: defaultMagentoConfig,
49
51
  host: 'localhost',
@@ -1,5 +1,6 @@
1
1
  const path = require('path');
2
2
  const { defaultMagentoConfig } = require('../magento-config');
3
+ const { sslTerminator } = require('../ssl-terminator');
3
4
  const { varnish66 } = require('../varnish/varnish-6-6');
4
5
 
5
6
  module.exports = ({ templateDir } = {}) => ({
@@ -43,7 +44,8 @@ module.exports = ({ templateDir } = {}) => ({
43
44
  composer: {
44
45
  version: '2'
45
46
  },
46
- varnish: varnish66({ templateDir })
47
+ varnish: varnish66({ templateDir }),
48
+ sslTerminator: sslTerminator({ templateDir })
47
49
  },
48
50
  magento: defaultMagentoConfig,
49
51
  host: 'localhost',
@@ -1,5 +1,6 @@
1
1
  const path = require('path');
2
2
  const { defaultMagentoConfig } = require('../magento-config');
3
+ const { sslTerminator } = require('../ssl-terminator');
3
4
  const { varnish60 } = require('../varnish/varnish-6-0');
4
5
 
5
6
  module.exports = ({ templateDir } = {}) => ({
@@ -43,7 +44,8 @@ module.exports = ({ templateDir } = {}) => ({
43
44
  composer: {
44
45
  version: '1'
45
46
  },
46
- varnish: varnish60({ templateDir })
47
+ varnish: varnish60({ templateDir }),
48
+ sslTerminator: sslTerminator({ templateDir })
47
49
  },
48
50
  magento: defaultMagentoConfig,
49
51
  host: 'localhost',
@@ -1,5 +1,6 @@
1
1
  const path = require('path');
2
2
  const { defaultMagentoConfig } = require('../magento-config');
3
+ const { sslTerminator } = require('../ssl-terminator');
3
4
  const { varnish60 } = require('../varnish/varnish-6-0');
4
5
 
5
6
  module.exports = ({ templateDir } = {}) => ({
@@ -43,7 +44,8 @@ module.exports = ({ templateDir } = {}) => ({
43
44
  composer: {
44
45
  version: '1'
45
46
  },
46
- varnish: varnish60({ templateDir })
47
+ varnish: varnish60({ templateDir }),
48
+ sslTerminator: sslTerminator({ templateDir })
47
49
  },
48
50
  magento: defaultMagentoConfig,
49
51
  host: 'localhost',
@@ -1,6 +1,7 @@
1
1
  const path = require('path');
2
2
  const { defaultMagentoConfig } = require('../magento-config');
3
3
  const { libsodium } = require('../php/extensions');
4
+ const { sslTerminator } = require('../ssl-terminator');
4
5
  const { varnish66 } = require('../varnish/varnish-6-6');
5
6
 
6
7
  module.exports = ({ templateDir } = {}) => ({
@@ -45,7 +46,8 @@ module.exports = ({ templateDir } = {}) => ({
45
46
  composer: {
46
47
  version: '1'
47
48
  },
48
- varnish: varnish66({ templateDir })
49
+ varnish: varnish66({ templateDir }),
50
+ sslTerminator: sslTerminator({ templateDir })
49
51
  },
50
52
  magento: defaultMagentoConfig,
51
53
  host: 'localhost',
@@ -1,5 +1,6 @@
1
1
  const path = require('path');
2
2
  const { defaultMagentoConfig } = require('../magento-config');
3
+ const { sslTerminator } = require('../ssl-terminator');
3
4
  const { varnish66 } = require('../varnish/varnish-6-6');
4
5
 
5
6
  module.exports = ({ templateDir } = {}) => ({
@@ -43,7 +44,8 @@ module.exports = ({ templateDir } = {}) => ({
43
44
  composer: {
44
45
  version: '1'
45
46
  },
46
- varnish: varnish66({ templateDir })
47
+ varnish: varnish66({ templateDir }),
48
+ sslTerminator: sslTerminator({ templateDir })
47
49
  },
48
50
  magento: defaultMagentoConfig,
49
51
  host: 'localhost',
@@ -1,6 +1,7 @@
1
1
  const path = require('path');
2
2
  const { defaultMagentoConfig } = require('../magento-config');
3
3
  const { libsodium } = require('../php/extensions');
4
+ const { sslTerminator } = require('../ssl-terminator');
4
5
  const { varnish66 } = require('../varnish/varnish-6-6');
5
6
 
6
7
  module.exports = ({ templateDir } = {}) => ({
@@ -47,7 +48,8 @@ module.exports = ({ templateDir } = {}) => ({
47
48
  composer: {
48
49
  version: '2'
49
50
  },
50
- varnish: varnish66({ templateDir })
51
+ varnish: varnish66({ templateDir }),
52
+ sslTerminator: sslTerminator({ templateDir })
51
53
  },
52
54
  magento: defaultMagentoConfig,
53
55
  host: 'localhost',
@@ -1,6 +1,7 @@
1
1
  const path = require('path');
2
2
  const { defaultMagentoConfig } = require('../magento-config');
3
3
  const { libsodium } = require('../php/extensions');
4
+ const { sslTerminator } = require('../ssl-terminator');
4
5
  const { varnish66 } = require('../varnish/varnish-6-6');
5
6
 
6
7
  module.exports = ({ templateDir } = {}) => ({
@@ -47,7 +48,8 @@ module.exports = ({ templateDir } = {}) => ({
47
48
  composer: {
48
49
  version: '2'
49
50
  },
50
- varnish: varnish66({ templateDir })
51
+ varnish: varnish66({ templateDir }),
52
+ sslTerminator: sslTerminator({ templateDir })
51
53
  },
52
54
  magento: defaultMagentoConfig,
53
55
  host: 'localhost',
@@ -1,6 +1,7 @@
1
1
  const path = require('path');
2
2
  const { defaultMagentoConfig } = require('../magento-config');
3
3
  const { libsodium } = require('../php/extensions');
4
+ const { sslTerminator } = require('../ssl-terminator');
4
5
  const { varnish66 } = require('../varnish/varnish-6-6');
5
6
 
6
7
  module.exports = ({ templateDir } = {}) => ({
@@ -46,7 +47,8 @@ module.exports = ({ templateDir } = {}) => ({
46
47
  composer: {
47
48
  version: '2'
48
49
  },
49
- varnish: varnish66({ templateDir })
50
+ varnish: varnish66({ templateDir }),
51
+ sslTerminator: sslTerminator({ templateDir })
50
52
  },
51
53
  magento: defaultMagentoConfig,
52
54
  host: 'localhost',
@@ -1,6 +1,7 @@
1
1
  const path = require('path');
2
2
  const { defaultMagentoConfig } = require('../magento-config');
3
3
  const { libsodium } = require('../php/extensions');
4
+ const { sslTerminator } = require('../ssl-terminator');
4
5
  const { varnish66 } = require('../varnish/varnish-6-6');
5
6
 
6
7
  module.exports = ({ templateDir } = {}) => ({
@@ -47,7 +48,8 @@ module.exports = ({ templateDir } = {}) => ({
47
48
  composer: {
48
49
  version: '2'
49
50
  },
50
- varnish: varnish66({ templateDir })
51
+ varnish: varnish66({ templateDir }),
52
+ sslTerminator: sslTerminator({ templateDir })
51
53
  },
52
54
  magento: defaultMagentoConfig,
53
55
  host: 'localhost',
@@ -1,6 +1,7 @@
1
1
  const path = require('path');
2
2
  const { defaultMagentoConfig } = require('../magento-config');
3
3
  const { libsodium } = require('../php/extensions');
4
+ const { sslTerminator } = require('../ssl-terminator');
4
5
  const { varnish66 } = require('../varnish/varnish-6-6');
5
6
 
6
7
  module.exports = ({ templateDir } = {}) => ({
@@ -47,7 +48,8 @@ module.exports = ({ templateDir } = {}) => ({
47
48
  composer: {
48
49
  version: '2'
49
50
  },
50
- varnish: varnish66({ templateDir })
51
+ varnish: varnish66({ templateDir }),
52
+ sslTerminator: sslTerminator({ templateDir })
51
53
  },
52
54
  magento: defaultMagentoConfig,
53
55
  host: 'localhost',
@@ -1,6 +1,7 @@
1
1
  const path = require('path');
2
2
  const { defaultMagentoConfig } = require('../magento-config');
3
3
  const { libsodium } = require('../php/extensions');
4
+ const { sslTerminator } = require('../ssl-terminator');
4
5
  const { varnish66 } = require('../varnish/varnish-6-6');
5
6
 
6
7
  module.exports = ({ templateDir } = {}) => ({
@@ -47,7 +48,8 @@ module.exports = ({ templateDir } = {}) => ({
47
48
  composer: {
48
49
  version: '2'
49
50
  },
50
- varnish: varnish66({ templateDir })
51
+ varnish: varnish66({ templateDir }),
52
+ sslTerminator: sslTerminator({ templateDir })
51
53
  },
52
54
  magento: defaultMagentoConfig,
53
55
  host: 'localhost',
@@ -1,6 +1,7 @@
1
1
  const path = require('path');
2
2
  const { defaultMagentoConfig } = require('../magento-config');
3
3
  const { libsodium } = require('../php/extensions');
4
+ const { sslTerminator } = require('../ssl-terminator');
4
5
  const { varnish70 } = require('../varnish/varnish-7-0');
5
6
 
6
7
  module.exports = ({ templateDir } = {}) => ({
@@ -47,7 +48,8 @@ module.exports = ({ templateDir } = {}) => ({
47
48
  composer: {
48
49
  version: '2'
49
50
  },
50
- varnish: varnish70({ templateDir })
51
+ varnish: varnish70({ templateDir }),
52
+ sslTerminator: sslTerminator({ templateDir })
51
53
  },
52
54
  magento: defaultMagentoConfig,
53
55
  host: 'localhost',
@@ -1,9 +1,6 @@
1
1
  const os = require('os');
2
2
  const path = require('path');
3
- const fs = require('fs');
4
3
  const setConfigFile = require('../../util/set-config');
5
- const pathExists = require('../../util/path-exists');
6
- const { isIpAddress } = require('../../util/ip');
7
4
 
8
5
  /**
9
6
  * @type {() => import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
@@ -23,45 +20,9 @@ const createNginxConfig = () => ({
23
20
  const {
24
21
  configuration: {
25
22
  nginx
26
- },
27
- ssl,
28
- host
29
- } = overridenConfiguration;
30
-
31
- if (ssl.enabled) {
32
- if (!(await pathExists(ssl.ssl_certificate))) {
33
- throw new Error('ssl.ssl_certificate file does not exist!');
34
- }
35
- if (!(await pathExists(ssl.ssl_certificate_key))) {
36
- throw new Error('ssl.ssl_certificate_key file does not exist!');
37
23
  }
24
+ } = overridenConfiguration;
38
25
 
39
- const nginxCacheDir = path.join(baseConfig.cacheDir, 'nginx', 'conf.d');
40
- if (!await pathExists(nginxCacheDir)) {
41
- await fs.promises.mkdir(nginxCacheDir, { recursive: true });
42
- }
43
-
44
- await fs.promises.copyFile(
45
- ssl.ssl_certificate,
46
- path.join(
47
- baseConfig.cacheDir,
48
- 'nginx',
49
- 'conf.d',
50
- 'ssl_certificate.pem'
51
- )
52
- );
53
- await fs.promises.copyFile(
54
- ssl.ssl_certificate_key,
55
- path.join(
56
- baseConfig.cacheDir,
57
- 'nginx',
58
- 'conf.d',
59
- 'ssl_certificate-key.pem'
60
- )
61
- );
62
- }
63
-
64
- const networkToBindTo = isIpAddress(host) ? host : '127.0.0.1';
65
26
  const isLinux = os.platform() === 'linux';
66
27
  const isNativeLinux = isLinux && !isWsl;
67
28
  const hostMachine = isNativeLinux ? '127.0.0.1' : 'host.docker.internal';
@@ -82,8 +43,7 @@ const createNginxConfig = () => ({
82
43
  mageRoot: baseConfig.magentoDir,
83
44
  hostMachine,
84
45
  hostPort,
85
- config: overridenConfiguration,
86
- networkToBindTo
46
+ config: overridenConfiguration
87
47
  }
88
48
  });
89
49
  } catch (e) {
@@ -0,0 +1,94 @@
1
+ const os = require('os');
2
+ const path = require('path');
3
+ const fs = require('fs');
4
+ const setConfigFile = require('../../util/set-config');
5
+ const pathExists = require('../../util/path-exists');
6
+ const { isIpAddress } = require('../../util/ip');
7
+
8
+ /**
9
+ * @type {() => import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
10
+ */
11
+ const createSSLTerminatorConfig = () => ({
12
+ title: 'Setting ssl terminator config',
13
+ task: async (ctx) => {
14
+ const {
15
+ ports,
16
+ config: {
17
+ overridenConfiguration,
18
+ baseConfig
19
+ },
20
+ isWsl
21
+ } = ctx;
22
+
23
+ const {
24
+ configuration: {
25
+ sslTerminator
26
+ },
27
+ ssl,
28
+ host
29
+ } = overridenConfiguration;
30
+
31
+ if (ssl.enabled) {
32
+ if (!(await pathExists(ssl.ssl_certificate))) {
33
+ throw new Error('ssl.ssl_certificate file does not exist!');
34
+ }
35
+ if (!(await pathExists(ssl.ssl_certificate_key))) {
36
+ throw new Error('ssl.ssl_certificate_key file does not exist!');
37
+ }
38
+
39
+ const nginxCacheDir = path.join(baseConfig.cacheDir, 'nginx', 'conf.d');
40
+ if (!await pathExists(nginxCacheDir)) {
41
+ await fs.promises.mkdir(nginxCacheDir, { recursive: true });
42
+ }
43
+
44
+ await fs.promises.copyFile(
45
+ ssl.ssl_certificate,
46
+ path.join(
47
+ baseConfig.cacheDir,
48
+ 'ssl-terminator',
49
+ 'conf.d',
50
+ 'ssl_certificate.pem'
51
+ )
52
+ );
53
+ await fs.promises.copyFile(
54
+ ssl.ssl_certificate_key,
55
+ path.join(
56
+ baseConfig.cacheDir,
57
+ 'ssl-terminator',
58
+ 'conf.d',
59
+ 'ssl_certificate-key.pem'
60
+ )
61
+ );
62
+ }
63
+
64
+ const networkToBindTo = isIpAddress(host) ? host : '127.0.0.1';
65
+ const isLinux = os.platform() === 'linux';
66
+ const isNativeLinux = isLinux && !isWsl;
67
+ const hostMachine = isNativeLinux ? '127.0.0.1' : 'host.docker.internal';
68
+ const hostPort = isNativeLinux ? ports.sslTerminator : 80;
69
+
70
+ try {
71
+ await setConfigFile({
72
+ configPathname: path.join(
73
+ baseConfig.cacheDir,
74
+ 'ssl-terminator',
75
+ 'conf.d',
76
+ 'default.conf'
77
+ ),
78
+ template: sslTerminator.configTemplate,
79
+ overwrite: true,
80
+ templateArgs: {
81
+ ports,
82
+ hostMachine,
83
+ hostPort,
84
+ config: overridenConfiguration,
85
+ networkToBindTo
86
+ }
87
+ });
88
+ } catch (e) {
89
+ throw new Error(`Unexpected error accrued during ssl terminator config creation\n\n${e}`);
90
+ }
91
+ }
92
+ });
93
+
94
+ module.exports = createSSLTerminatorConfig;
@@ -46,6 +46,28 @@ const createVarnishConfig = () => ({
46
46
  } catch (e) {
47
47
  throw new Error(`Unexpected error accrued during varnish config creation\n\n${e}`);
48
48
  }
49
+
50
+ // try {
51
+ // await setConfigFile({
52
+ // configPathname: path.join(
53
+ // cacheDir,
54
+ // 'nginx-cache-router',
55
+ // 'conf.d',
56
+ // 'default.conf'
57
+ // ),
58
+ // template: path.join(templateDir, 'nginx-cache-router.template.conf'),
59
+ // overwrite: true,
60
+ // templateArgs: {
61
+ // ports,
62
+ // hostMachine,
63
+ // hostPort,
64
+ // config: overridenConfiguration,
65
+ // networkToBindTo
66
+ // }
67
+ // });
68
+ // } catch (e) {
69
+ // throw new Error(`Unexpected error accrued during nginx-cache-router config creation\n\n${e}`);
70
+ // }
49
71
  }
50
72
  });
51
73
 
@@ -2,6 +2,7 @@ const createNginxConfig = require('./create-nginx-config');
2
2
  const createPhpConfig = require('./create-php-config');
3
3
  const createPhpFpmConfig = require('./create-php-fpm-config');
4
4
  const createPhpStormConfig = require('./create-php-storm-config');
5
+ const createSSLTerminatorConfig = require('./create-ssl-terminator-config');
5
6
  const createVarnishConfig = require('./create-varnish-config');
6
7
  const createVSCodeConfig = require('./create-vscode-config');
7
8
 
@@ -11,6 +12,7 @@ const createVSCodeConfig = require('./create-vscode-config');
11
12
  const prepareFileSystem = () => ({
12
13
  title: 'Preparing file system',
13
14
  task: (ctx, task) => task.newListr([
15
+ createSSLTerminatorConfig(),
14
16
  createNginxConfig(),
15
17
  createPhpFpmConfig(),
16
18
  createPhpConfig(),
@@ -6,6 +6,7 @@ const { version: packageVersion } = require('../../../package.json');
6
6
  const { getArchSync } = require('../../util/arch');
7
7
  const ConsoleBlock = require('../../util/console-block');
8
8
  const { getComposerVersion } = require('../composer');
9
+ const { getInstanceMetadata } = require('../../util/instance-metadata');
9
10
 
10
11
  /**
11
12
  * @param {string} port
@@ -23,11 +24,8 @@ const parsePort = (port) => {
23
24
 
24
25
  const prettyStatus = async (ctx) => {
25
26
  const {
26
- ports,
27
27
  config: {
28
- magentoConfiguration,
29
28
  baseConfig,
30
- overridenConfiguration: { host, ssl },
31
29
  php,
32
30
  composer
33
31
  },
@@ -107,15 +105,33 @@ const prettyStatus = async (ctx) => {
107
105
  }
108
106
  });
109
107
 
108
+ const instanceMetadata = getInstanceMetadata(ctx);
109
+
110
110
  block
111
111
  .addEmptyLine()
112
- .addSeparator('Magento status')
113
- .addEmptyLine()
114
- .addLine(`Web location: ${logger.style.link(`${ssl.enabled ? 'https' : 'http'}://${host}${ports.app === 80 ? '' : `:${ports.app}`}/`)}`)
115
- .addLine(`Magento Admin panel location: ${logger.style.link(`${ssl.enabled ? 'https' : 'http'}://${host}${ports.app === 80 ? '' : `:${ports.app}`}/${magentoConfiguration.adminuri}`)}`)
116
- .addLine(`Magento Admin panel credentials: ${logger.style.misc(magentoConfiguration.user)} - ${logger.style.misc(magentoConfiguration.password)}`)
112
+ .addSeparator('Magento 2')
117
113
  .addEmptyLine();
118
114
 
115
+ block.addLine(logger.style.misc('Frontend'));
116
+ instanceMetadata.frontend.forEach(({ title, text }) => {
117
+ block.addLine(` ${title}: ${text}`);
118
+ });
119
+
120
+ block.addEmptyLine();
121
+
122
+ block.addLine(logger.style.misc('Admin'));
123
+ instanceMetadata.admin.forEach(({ title, text }) => {
124
+ block.addLine(` ${title}: ${text}`);
125
+ });
126
+ // block
127
+ // .addEmptyLine()
128
+ // .addSeparator('Magento status')
129
+ // .addEmptyLine()
130
+ // .addLine(`Web location: ${logger.style.link(`${ssl.enabled ? 'https' : 'http'}://${host}${ports.app === 80 ? '' : `:${ports.app}`}/`)}`)
131
+ // .addLine(`Magento Admin panel location: ${logger.style.link(`${ssl.enabled ? 'https' : 'http'}://${host}${ports.app === 80 ? '' : `:${ports.app}`}/${magentoConfiguration.adminuri}`)}`)
132
+ // .addLine(`Magento Admin panel credentials: ${logger.style.misc(magentoConfiguration.user)} - ${logger.style.misc(magentoConfiguration.password)}`)
133
+ // .addEmptyLine();
134
+
119
135
  block.log();
120
136
  };
121
137
 
@@ -111,7 +111,8 @@ const configurationSchema = Joi.object({
111
111
  elasticsearch: serviceConfigurationSchema.optional(),
112
112
  redis: serviceConfigurationSchema.optional(),
113
113
  composer: composerConfigurationSchema.optional(),
114
- varnish: varnishConfigurationSchema.optional()
114
+ varnish: varnishConfigurationSchema.optional(),
115
+ sslTerminator: nginxConfigurationSchema.optional()
115
116
  });
116
117
 
117
118
  /**
@@ -38,7 +38,7 @@ const getInstanceMetadata = (ctx) => {
38
38
  if (isNgrok) {
39
39
  frontend.push({
40
40
  title: WEB_LOCAL_LOCATION_TITLE,
41
- text: `${ssl.enabled ? 'https' : 'http'}://localhost${ssl.enabled || ports.app === 80 ? '' : `:${ports.app}`}/`
41
+ text: `${ssl.enabled ? 'https' : 'http'}://localhost${ssl.enabled || ports.sslTerminator === 80 ? '' : `:${ports.sslTerminator}`}/`
42
42
  });
43
43
  frontend.push({
44
44
  title: WEB_LOCATION_TITLE,
@@ -47,7 +47,7 @@ const getInstanceMetadata = (ctx) => {
47
47
  } else {
48
48
  frontend.push({
49
49
  title: WEB_LOCATION_TITLE,
50
- text: `${ssl.enabled ? 'https' : 'http'}://${host}${ssl.enabled || ports.app === 80 ? '' : `:${ports.app}`}/`
50
+ text: `${ssl.enabled ? 'https' : 'http'}://${host}${ssl.enabled || ports.sslTerminator === 80 ? '' : `:${ports.sslTerminator}`}/`
51
51
  });
52
52
  }
53
53
 
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Scripts and configuration used by CMA.",
4
4
  "homepage": "https://docs.create-magento-app.com/",
5
5
  "repository": "github:scandipwa/create-magento-app",
6
- "version": "1.14.1-alpha.8",
6
+ "version": "1.14.1-alpha.9",
7
7
  "main": "./index.js",
8
8
  "types": "./typings/index.d.ts",
9
9
  "license": "OSL-3.0",
@@ -51,5 +51,5 @@
51
51
  "mysql",
52
52
  "scandipwa"
53
53
  ],
54
- "gitHead": "a59a530f5ebb1946f3138b57fb1674fe7df305c9"
54
+ "gitHead": "cf3f08226674ad5c6b6b03db93785dd9acf48025"
55
55
  }
@@ -10,7 +10,14 @@ export interface ServiceWithVersion {
10
10
  version: string
11
11
  }
12
12
 
13
- // export inter/
13
+ export interface SSLTerminatorConfiguration extends ServiceWithVersion {
14
+ /**
15
+ * Configuration file location
16
+ *
17
+ * @example ./my-ssl-terminator-config.conf
18
+ */
19
+ configTemplate: string
20
+ }
14
21
 
15
22
  export interface NginxConfiguration extends ServiceWithVersion {
16
23
  /**
@@ -194,6 +201,11 @@ export interface CMAConfiguration {
194
201
  * Varnish configuration
195
202
  */
196
203
  varnish: VarnishConfiguration
204
+
205
+ /**
206
+ * SSL Terminator configuration
207
+ */
208
+ sslTerminator: SSLTerminatorConfiguration
197
209
  }
198
210
  /**
199
211
  * Magento configuration