��������,��,>Xe/� �,hg����,�,p�,o�t����d��+��P��_���,0�,0�,Xe��,�t���������� �P��_��,�,�,����HC��$����h]���� ���������,����^��������X�,��,����h]K����������,����`fK���,HC���������HC�(���������HC�H$���������45P5�6.this_function]�H�,�s�p�p����x���8�8������ ��
-���`�����(�h�(�P�`�`� �
-`:�:�:�<�< ?@C0�YXY�Y \p^�``i�qX��� ��
-@�x���
��}��9�@:��:��;��>�B��F��H�J�b� e�
-(��(�HL��L��L��M� Q��U�����z�8{��{������@��`��@��ؤ�0�� �-�0.�x.� 0�h0�7�<�XF��V��i� l�
-h|�H��p��
@�����������P��p3��3�4�5��@��I� �h���������x������������� ���
-���@@�Ї�H����0n�xn��n��o�@p�0w�{�}��~���� ���
-�M�-�X-��-��.��1�@4�8�:�`<��C� ���Ѝ��������Ȥ�����0����� ��x��p��h�� h��
-�(��(P�(
��(��(�(�))P)�!)�#)P%)P-)�6)@o)�o)�o)�p)Xw)|)��)��)0�)0�)�)X�)��)��)�)h�)��)�)H�)��)��)��)��)(�)8�)h�) (*
-P*�*�
-*
hN*�R*@a*p�*��*�*�*h�*��*��*��*��*��*��*��*��*@+��*��*0�*h�*��*P�*(�* �*��*��* ��*
-X�+�~+�~+(+(�+@�+P�+(�+ �+0�+��+ �+h�+��+��+0�+x�+��+��+��+�,�,�,�,�, �,
-�,�#,&,
�!x"#�' (h(0*x*�/Ȗ p�
-�5�R)
��,0�,x�,��,�' (h(0*x*�/Ȗ p�
-�5�R)
��,�,0�,x�,��,
diff --git a/Chapter03/working-with-files/incremental-processing/file.dat b/Chapter03/working-with-files/incremental-processing/file.dat
deleted file mode 100644
index 6a97696..0000000
Binary files a/Chapter03/working-with-files/incremental-processing/file.dat and /dev/null differ
diff --git a/Chapter03/working-with-files/incremental-processing/log.txt b/Chapter03/working-with-files/incremental-processing/log.txt
deleted file mode 100644
index d210d7f..0000000
--- a/Chapter03/working-with-files/incremental-processing/log.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-Wed Jun 08 2016 23:48:13 GMT+0100 (BST) 896977 bytes removed
-Wed Jun 08 2016 23:48:17 GMT+0100 (BST) 896977 bytes removed
-Wed Jun 08 2016 23:49:25 GMT+0100 (BST) 896977 bytes removed
-Wed Jun 08 2016 23:50:17 GMT+0100 (BST) 896977 bytes removed
diff --git a/Chapter03/working-with-files/incremental-processing/null-byte-remover.js b/Chapter03/working-with-files/incremental-processing/null-byte-remover.js
deleted file mode 100644
index 9a57267..0000000
--- a/Chapter03/working-with-files/incremental-processing/null-byte-remover.js
+++ /dev/null
@@ -1,23 +0,0 @@
-'use strict'
-
-setInterval(() => process.stdout.write('.'), 10).unref()
-
-const fs = require('fs')
-const path = require('path')
-const cwd = process.cwd()
-
-const sbs = require('strip-bytes-stream')
-
-fs.createReadStream(path.join(cwd, 'file.dat'))
- .pipe(sbs((n) => n))
- .on('end', function () { log(this.total) })
- .pipe(fs.createWriteStream(path.join(cwd, 'clean.dat')))
-
-function log(total) {
- fs.appendFile(
- path.join(cwd, 'log.txt'),
- (new Date) + ' ' + total + ' bytes removed\n'
- )
-}
-
-
diff --git a/Chapter03/working-with-files/incremental-processing/package.json b/Chapter03/working-with-files/incremental-processing/package.json
deleted file mode 100644
index 859e5c4..0000000
--- a/Chapter03/working-with-files/incremental-processing/package.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "name": "piping",
- "version": "1.0.0",
- "description": "",
- "main": "null-byte-remover.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "author": "David Mark Clements",
- "license": "MIT",
- "dependencies": {
- "strip-bytes-stream": "^1.1.0"
- }
-}
diff --git a/Chapter03/working-with-files/log.txt b/Chapter03/working-with-files/log.txt
deleted file mode 100644
index 4706c31..0000000
--- a/Chapter03/working-with-files/log.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Wed Jun 08 2016 22:56:41 GMT+0100 (BST) 100000000 bytes removed
-Wed Jun 08 2016 22:56:54 GMT+0100 (BST) 897090 bytes removed
-Wed Jun 08 2016 22:58:02 GMT+0100 (BST) 897090 bytes removed
-Wed Jun 08 2016 22:58:03 GMT+0100 (BST) 897090 bytes removed
-Wed Jun 08 2016 22:58:15 GMT+0100 (BST) 897090 bytes removed
-Wed Jun 08 2016 22:59:08 GMT+0100 (BST) 897090 bytes removed
diff --git a/Chapter03/working-with-files/null-byte-remover.js b/Chapter03/working-with-files/null-byte-remover.js
deleted file mode 100644
index e891808..0000000
--- a/Chapter03/working-with-files/null-byte-remover.js
+++ /dev/null
@@ -1,15 +0,0 @@
-'use strict'
-
-const fs = require('fs')
-const path = require('path')
-const cwd = process.cwd()
-const bytes = fs.readFileSync(path.join(cwd, 'file.dat'))
-
-const clean = bytes.filter(n => n)
-fs.writeFileSync(path.join(cwd, 'clean.dat'), clean)
-
-fs.appendFileSync(
- path.join(cwd, 'log.txt'),
- (new Date) + ' ' + (bytes.length - clean.length) + ' bytes removed\n'
-)
-
diff --git a/Chapter08/anticipating-malicious-input/app/index-fixed.js b/Chapter08/anticipating-malicious-input/app/index-fixed.js
deleted file mode 100644
index 1de4afa..0000000
--- a/Chapter08/anticipating-malicious-input/app/index-fixed.js
+++ /dev/null
@@ -1,21 +0,0 @@
-'use strict'
-
-const express = require('express')
-const app = express()
-
-app.get('/', (req, res) => {
- pretendDbQuery(() => {
- var msg = req.query.msg
-
- if (Array.isArray(msg)) msg = msg.pop()
-
- const yelling = (msg || '').toUpperCase()
- res.send(yelling)
- })
-})
-
-app.listen(3000)
-
-function pretendDbQuery (cb) {
- setTimeout(cb, 0)
-}
diff --git a/Chapter08/anticipating-malicious-input/app/index.js b/Chapter08/anticipating-malicious-input/app/index.js
deleted file mode 100644
index 120c6ae..0000000
--- a/Chapter08/anticipating-malicious-input/app/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-'use strict'
-
-const express = require('express')
-const app = express()
-
-app.get('/', (req, res) => {
- pretendDbQuery(() => {
- const yelling = (req.query.msg || '').toUpperCase()
- res.send(yelling)
- })
-})
-
-app.listen(3000)
-
-function pretendDbQuery (cb) {
- setTimeout(cb, 0)
-}
diff --git a/Chapter08/anticipating-malicious-input/app/package.json b/Chapter08/anticipating-malicious-input/app/package.json
deleted file mode 100644
index 8711bc5..0000000
--- a/Chapter08/anticipating-malicious-input/app/package.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "app",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "",
- "license": "ISC",
- "dependencies": {
- "express": "^4.15.2"
- }
-}
diff --git a/Chapter08/anticipating-malicious-input/buffer-safety/index-fixed.js b/Chapter08/anticipating-malicious-input/buffer-safety/index-fixed.js
deleted file mode 100644
index d40f2c2..0000000
--- a/Chapter08/anticipating-malicious-input/buffer-safety/index-fixed.js
+++ /dev/null
@@ -1,87 +0,0 @@
-'use strict'
-
-const http = require('http')
-
-const server = http.createServer((req, res) => {
- if (req.method === 'GET') {
- res.setHeader('Content-Type', 'text/html')
- if (req.url === '/') return res.end(html())
- res.setHeader('Content-Type', 'application/json')
- if (req.url === '/friends') return res.end(friends())
-
- return
- }
- if (req.method === 'POST') {
- if (req.url === '/') return action(req, res)
- }
-})
-
-function html (res) {
- return `
-
-
-
- `
-}
-
-function friends () {
- return JSON.stringify(friends.list)
-}
-friends.list = [Buffer.from('Dave').toString('base64')]
-friends.add = (friend) => {
- friends.list.push(Buffer.from(friend).toString('base64'))
-}
-
-function action (req, res) {
- var data = ''
- req.on('data', (chunk) => data += chunk)
- req.on('end', () => {
- try {
- data = JSON.parse(data)
- } catch (e) {
- console.error(e)
- res.end('{"ok": false}')
- return
- }
- if (data.cmd === 'add') {
- try {
- friends.add(data.friend)
- } catch (e) {
- console.error(e)
- res.end('{"ok": false}')
- }
- }
- })
-}
-
-server.listen(3000)
\ No newline at end of file
diff --git a/Chapter08/anticipating-malicious-input/buffer-safety/index.js b/Chapter08/anticipating-malicious-input/buffer-safety/index.js
deleted file mode 100644
index a155ac8..0000000
--- a/Chapter08/anticipating-malicious-input/buffer-safety/index.js
+++ /dev/null
@@ -1,80 +0,0 @@
-'use strict'
-
-const http = require('http')
-
-const server = http.createServer((req, res) => {
- if (req.method === 'GET') {
- res.setHeader('Content-Type', 'text/html')
- if (req.url === '/') return res.end(html())
- res.setHeader('Content-Type', 'application/json')
- if (req.url === '/friends') return res.end(friends())
-
- return
- }
- if (req.method === 'POST') {
- if (req.url === '/') return action(req, res)
- }
-})
-
-function html (res) {
- return `
-
-
-
- `
-}
-
-function friends () {
- return JSON.stringify(friends.list)
-}
-friends.list = [Buffer('Dave').toString('base64')]
-friends.add = (friend) => friends.list.push(Buffer(friend).toString('base64'))
-
-function action (req, res) {
- var data = ''
- req.on('data', (chunk) => data += chunk)
- req.on('end', () => {
- try {
- data = JSON.parse(data)
- } catch (e) {
- res.end('{"ok": false}')
- return
- }
- if (data.cmd === 'add') {
- friends.add(data.friend)
- }
- res.end('{"ok": true}')
- })
-}
-
-server.listen(3000)
\ No newline at end of file
diff --git a/Chapter08/anticipating-malicious-input/json-validation/index-fixed.js b/Chapter08/anticipating-malicious-input/json-validation/index-fixed.js
deleted file mode 100644
index 2ccb7f6..0000000
--- a/Chapter08/anticipating-malicious-input/json-validation/index-fixed.js
+++ /dev/null
@@ -1,78 +0,0 @@
-'use strict'
-
-const http = require('http')
-const Ajv = require('ajv')
-const ajv = new Ajv
-const schema = {
- title: 'UserReg',
- properties: {
- id: {type: 'integer'},
- name: {type: 'string'},
- privileges: {
- anyOf: [
- {type: 'string'},
- {type: 'boolean'},
- {type: 'array', items: {type: 'string'}},
- {type: 'object'}
- ]
- }
- },
- additionalProperties: false,
- required: ['id', 'name']
-}
-const validate = ajv.compile(schema)
-const {STATUS_CODES} = http
-
-const server = http.createServer((req, res) => {
-
- if (req.method !== 'POST') {
- res.statusCode = 404
- res.end(STATUS_CODES[res.statusCode])
- return
- }
- if (req.url === '/register') {
- register(req, res)
- return
- }
- res.statusCode = 404
- res.end(STATUS_CODES[res.statusCode])
-
-})
-
-function register (req, res) {
- var data = ''
- req.on('data', (chunk) => data += chunk)
- req.on('end', () => {
- try {
- data = JSON.parse(data)
- } catch (e) {
- res.end('{"ok": false}')
- return
- }
- const valid = validate(data, schema)
- if (!valid) {
- console.error(validate.errors)
- res.end('{"ok": false}')
- return
- }
-
- if (data.hasOwnProperty('privileges')) {
- createAdminUser(data)
- res.end('{"ok": true, "admin": true}')
- } else {
- createUser(data)
- res.end('{"ok": true, "admin": false}')
- }
- })
-}
-
-function createAdminUser (user) {
- const key = user.id + user.name
- // ...
-}
-
-function createUser (user) {
- // ...
-}
-
-server.listen(3000)
\ No newline at end of file
diff --git a/Chapter08/anticipating-malicious-input/json-validation/index.js b/Chapter08/anticipating-malicious-input/json-validation/index.js
deleted file mode 100644
index 9b39327..0000000
--- a/Chapter08/anticipating-malicious-input/json-validation/index.js
+++ /dev/null
@@ -1,53 +0,0 @@
-'use strict'
-
-const http = require('http')
-const {STATUS_CODES} = http
-
-const server = http.createServer((req, res) => {
-
- if (req.method !== 'POST') {
- res.statusCode = 404
- res.end(STATUS_CODES[res.statusCode])
- return
- }
- if (req.url === '/register') {
- register(req, res)
- return
- }
- res.statusCode = 404
- res.end(STATUS_CODES[res.statusCode])
-
-})
-
-function register (req, res) {
- var data = ''
- req.on('data', (chunk) => data += chunk)
- req.on('end', () => {
- try {
- data = JSON.parse(data)
- } catch (e) {
- res.end('{"ok": false}')
- return
- }
- // privileges can be multiple types, boolean, array, object, string,
- // but the presence of the key means the user is an admin
- if (data.hasOwnProperty('privileges')) {
- createAdminUser(data)
- res.end('{"ok": true, "admin": true}')
- } else {
- createUser(data)
- res.end('{"ok": true, "admin": false}')
- }
- })
-}
-
-function createAdminUser (user) {
- const key = user.id + user.name
- // ...
-}
-
-function createUser (user) {
- // ...
-}
-
-server.listen(3000)
\ No newline at end of file
diff --git a/Chapter08/anticipating-malicious-input/json-validation/package.json b/Chapter08/anticipating-malicious-input/json-validation/package.json
deleted file mode 100644
index 23855f0..0000000
--- a/Chapter08/anticipating-malicious-input/json-validation/package.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "json-validation",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "",
- "license": "ISC",
- "dependencies": {
- "ajv": "^4.11.5"
- }
-}
diff --git a/Chapter08/detecting-dependency-vulnerabilities/app/.snyk b/Chapter08/detecting-dependency-vulnerabilities/app/.snyk
deleted file mode 100644
index 127718e..0000000
--- a/Chapter08/detecting-dependency-vulnerabilities/app/.snyk
+++ /dev/null
@@ -1,4 +0,0 @@
-# Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities.
-version: v1.7.0
-ignore: {}
-patch: {}
diff --git a/Chapter08/detecting-dependency-vulnerabilities/app/package.json b/Chapter08/detecting-dependency-vulnerabilities/app/package.json
deleted file mode 100644
index e449c98..0000000
--- a/Chapter08/detecting-dependency-vulnerabilities/app/package.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "app",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1",
- "audit": "auditjs"
- },
- "keywords": [],
- "author": "",
- "license": "ISC",
- "dependencies": {
- "express": "^4.15.2"
- },
- "devDependencies": {
- "auditjs": "^2.0.2"
- }
-}
diff --git a/Chapter08/guarding-against-xss/app/index.js b/Chapter08/guarding-against-xss/app/index.js
deleted file mode 100644
index 5bd2a69..0000000
--- a/Chapter08/guarding-against-xss/app/index.js
+++ /dev/null
@@ -1,32 +0,0 @@
-'use strict'
-
-const express = require('express')
-const app = express()
-
-app.get('/', (req, res) => {
- const {prev = '', handoverToken = '', lang = 'en'} = req.query
- pretendDbQuery((err, status) => {
- if (err) {
- res.sendStatus(500)
- return
- }
- res.send(`
- Current Status
-
- ${status}
-
-
- `)
- })
-
-})
-
-function pretendDbQuery (cb) {
- const status = 'ON FIRE!!! HELP!!!'
- cb(null, status)
-}
-
-
-app.listen(3000)
\ No newline at end of file
diff --git a/Chapter08/guarding-against-xss/app/package.json b/Chapter08/guarding-against-xss/app/package.json
deleted file mode 100644
index 8711bc5..0000000
--- a/Chapter08/guarding-against-xss/app/package.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "app",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "",
- "license": "ISC",
- "dependencies": {
- "express": "^4.15.2"
- }
-}
diff --git a/Chapter08/guarding-against-xss/fixed-app/index.js b/Chapter08/guarding-against-xss/fixed-app/index.js
deleted file mode 100644
index 5bc4145..0000000
--- a/Chapter08/guarding-against-xss/fixed-app/index.js
+++ /dev/null
@@ -1,34 +0,0 @@
-'use strict'
-
-const express = require('express')
-const he = require('he')
-const app = express()
-
-
-app.get('/', (req, res) => {
- const {prev = '', handoverToken = '', lang = 'en'} = req.query
- pretendDbQuery((err, status) => {
- if (err) {
- res.sendStatus(500)
- return
- }
- const href = he.encode(`${prev}${handoverToken}/${lang}`)
- res.send(`
- Current Status
-
- ${he.escape(status)}
-
-
- Back to Control HQ
- `)
- })
-
-})
-
-function pretendDbQuery (cb) {
- const status = 'ON FIRE!!! HELP!!!'
- cb(null, status)
-}
-
-
-app.listen(3000)
\ No newline at end of file
diff --git a/Chapter08/guarding-against-xss/fixed-app/package.json b/Chapter08/guarding-against-xss/fixed-app/package.json
deleted file mode 100644
index f6f3dbc..0000000
--- a/Chapter08/guarding-against-xss/fixed-app/package.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "name": "app",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "",
- "license": "ISC",
- "dependencies": {
- "express": "^4.15.2",
- "he": "^1.1.1"
- }
-}
diff --git a/Chapter08/guarding-against-xss/fully-escaped-app/index.js b/Chapter08/guarding-against-xss/fully-escaped-app/index.js
deleted file mode 100644
index 36251e0..0000000
--- a/Chapter08/guarding-against-xss/fully-escaped-app/index.js
+++ /dev/null
@@ -1,33 +0,0 @@
-'use strict'
-
-const express = require('express')
-const escapeHtml = require('escape-html')
-const app = express()
-
-
-app.get('/', (req, res) => {
- const {prev = '', handoverToken = '', lang = 'en'} = req.query
- pretendDbQuery((err, status) => {
- if (err) {
- res.sendStatus(500)
- return
- }
- const href = escapeHtml(`/${prev}${handoverToken}/${lang}`)
- res.send(`
- Current Status
-
- ${escapeHtml(status)}
-
-
- Back to Control HQ
- `)
- })
-})
-
-function pretendDbQuery (cb) {
- const status = 'ON FIRE!!! HELP!!!'
- cb(null, status)
-}
-
-
-app.listen(3000)
\ No newline at end of file
diff --git a/Chapter08/guarding-against-xss/fully-escaped-app/package.json b/Chapter08/guarding-against-xss/fully-escaped-app/package.json
deleted file mode 100644
index c18daca..0000000
--- a/Chapter08/guarding-against-xss/fully-escaped-app/package.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "name": "app",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "",
- "license": "ISC",
- "dependencies": {
- "escape-html": "^1.0.3",
- "express": "^4.15.2",
- "he": "^1.1.1"
- }
-}
diff --git a/Chapter08/guarding-against-xss/param-constraints-app/index.js b/Chapter08/guarding-against-xss/param-constraints-app/index.js
deleted file mode 100644
index 955a110..0000000
--- a/Chapter08/guarding-against-xss/param-constraints-app/index.js
+++ /dev/null
@@ -1,46 +0,0 @@
-'use strict'
-
-const express = require('express')
-const app = express()
-
-function validate ({prev, handoverToken, lang}, query) {
- var valid = Object.keys(query).length <= 3
- valid = valid && typeof lang === 'string' && lang.length === 2
- valid = valid && typeof handoverToken === 'string' && handoverToken.length === 16
- valid = valid && typeof prev === 'string' && prev.length < 10
- return valid
-}
-
-app.get('/', (req, res) => {
- const {prev = '', handoverToken = '', lang = 'en'} = req.query
-
- if (!validate({prev, handoverToken, lang}, req.query)) {
- res.sendStatus(422)
- return
- }
-
- pretendDbQuery((err, status) => {
- if (err) {
- res.sendStatus(500)
- return
- }
- res.send(`
- Current Status
-
- ${status}
-
-
- `)
- })
-
-})
-
-function pretendDbQuery (cb) {
- const status = 'ON FIRE!!! HELP!!!'
- cb(null, status)
-}
-
-
-app.listen(3000)
\ No newline at end of file
diff --git a/Chapter08/guarding-against-xss/param-constraints-app/package.json b/Chapter08/guarding-against-xss/param-constraints-app/package.json
deleted file mode 100644
index a09118c..0000000
--- a/Chapter08/guarding-against-xss/param-constraints-app/package.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "name": "app",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "",
- "license": "ISC",
- "dependencies": {
- "escape-html": "^1.0.3",
- "express": "^4.15.2"
- }
-}
diff --git a/Chapter08/guarding-against-xss/protocol-safe-app/index.js b/Chapter08/guarding-against-xss/protocol-safe-app/index.js
deleted file mode 100644
index 36251e0..0000000
--- a/Chapter08/guarding-against-xss/protocol-safe-app/index.js
+++ /dev/null
@@ -1,33 +0,0 @@
-'use strict'
-
-const express = require('express')
-const escapeHtml = require('escape-html')
-const app = express()
-
-
-app.get('/', (req, res) => {
- const {prev = '', handoverToken = '', lang = 'en'} = req.query
- pretendDbQuery((err, status) => {
- if (err) {
- res.sendStatus(500)
- return
- }
- const href = escapeHtml(`/${prev}${handoverToken}/${lang}`)
- res.send(`
- Current Status
-
- ${escapeHtml(status)}
-
-
- Back to Control HQ
- `)
- })
-})
-
-function pretendDbQuery (cb) {
- const status = 'ON FIRE!!! HELP!!!'
- cb(null, status)
-}
-
-
-app.listen(3000)
\ No newline at end of file
diff --git a/Chapter08/guarding-against-xss/protocol-safe-app/package.json b/Chapter08/guarding-against-xss/protocol-safe-app/package.json
deleted file mode 100644
index a09118c..0000000
--- a/Chapter08/guarding-against-xss/protocol-safe-app/package.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "name": "app",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "",
- "license": "ISC",
- "dependencies": {
- "escape-html": "^1.0.3",
- "express": "^4.15.2"
- }
-}
diff --git a/Chapter08/preventing-cross-site-request-forgery/app/index.js b/Chapter08/preventing-cross-site-request-forgery/app/index.js
deleted file mode 100644
index c541738..0000000
--- a/Chapter08/preventing-cross-site-request-forgery/app/index.js
+++ /dev/null
@@ -1,80 +0,0 @@
-'use strict'
-
-const express = require('express')
-const bodyParser = require('body-parser')
-const session = require('express-session')
-const he = require('he')
-const app = express()
-
-const pretendData = {
- dave: {
- ac: '12345678',
- sc: '88-26-26'
- }
-}
-
-app.use(session({
- secret: 'AI overlords are coming',
- name: 'SESSIONID',
- resave: false,
- saveUninitialized: false
-}))
-
-app.use(bodyParser.urlencoded({extended: false}))
-
-app.get('/', (req, res) => {
- if (req.session.user) return res.redirect('/profile')
- res.send(`
- Login
-
- `)
-})
-
-app.post('/', (req, res) => {
- if (req.body.user === 'dave' && req.body.pass === 'ncb') {
- req.session.user = req.body.user
- }
- if (req.session.user) res.redirect('/profile')
- else res.redirect('/')
-})
-
-app.get('/profile', (req, res) => {
- if (!req.session.user) return res.redirect('/')
- const {prev = '', handoverToken = '', lang = 'en'} = req.query
- pretendDbQuery(req.session.user, (err, {sc, ac}) => {
- if (err) {
- res.sendStatus(500)
- return
- }
- sc = he.encode(sc)
- ac = he.encode(ac)
- res.send(`
- Employee Payment Profile
-
- `)
- })
-})
-
-app.post('/update', (req, res) => {
- if (!req.session.user) return res.sendStatus(403)
- pretendData[req.session.user].ac = req.body.ac
- pretendData[req.session.user].sc = req.body.sc
- res.send(`
- updated
-
- `)
-})
-
-function pretendDbQuery (user, cb) {
- cb(null, pretendData[user])
-}
-
-app.listen(3000)
diff --git a/Chapter08/preventing-cross-site-request-forgery/app/package.json b/Chapter08/preventing-cross-site-request-forgery/app/package.json
deleted file mode 100644
index b7d89f0..0000000
--- a/Chapter08/preventing-cross-site-request-forgery/app/package.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "name": "app",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "",
- "license": "ISC",
- "dependencies": {
- "body-parser": "^1.17.1",
- "express": "^4.15.2",
- "express-session": "^1.15.2",
- "he": "^1.1.1"
- }
-}
diff --git a/Chapter08/preventing-cross-site-request-forgery/attacker/index.js b/Chapter08/preventing-cross-site-request-forgery/attacker/index.js
deleted file mode 100644
index 747e3e8..0000000
--- a/Chapter08/preventing-cross-site-request-forgery/attacker/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-const http = require('http')
-
-const attackerAc = '87654321'
-const attackerSc = '11-11-11'
-const attackerMsg = 'Everything you could ever want is only one click away'
-
-const server = http.createServer((req, res) => {
- res.writeHead(200, {'Content-Type': 'text/html'})
- res.end(`
-
-
- `)
-})
-
-server.listen(3001)
\ No newline at end of file
diff --git a/Chapter08/preventing-cross-site-request-forgery/fixed-app/index.js b/Chapter08/preventing-cross-site-request-forgery/fixed-app/index.js
deleted file mode 100644
index 36aa5c9..0000000
--- a/Chapter08/preventing-cross-site-request-forgery/fixed-app/index.js
+++ /dev/null
@@ -1,83 +0,0 @@
-'use strict'
-
-const express = require('express')
-const bodyParser = require('body-parser')
-const session = require('express-session')
-const he = require('he')
-const app = express()
-
-const pretendData = {
- dave: {
- ac: '12345678',
- sc: '88-26-26'
- }
-}
-
-app.use(session({
- secret: 'AI overlords are coming',
- name: 'SESSIONID',
- resave: false,
- saveUninitialized: false,
- cookie: {
- sameSite: true
- }
-}))
-
-app.use(bodyParser.urlencoded({extended: false}))
-
-app.get('/', (req, res) => {
- if (req.session.user) return res.redirect('/profile')
- res.send(`
- Login
-
- `)
-})
-
-app.post('/', (req, res) => {
- if (req.body.user === 'dave' && req.body.pass === 'ncb') {
- req.session.user = req.body.user
- }
- if (req.session.user) res.redirect('/profile')
- else res.redirect('/')
-})
-
-app.get('/profile', (req, res) => {
- if (!req.session.user) return res.redirect('/')
- const {prev = '', handoverToken = '', lang = 'en'} = req.query
- pretendDbQuery(req.session.user, (err, {sc, ac}) => {
- if (err) {
- res.sendStatus(500)
- return
- }
- sc = he.encode(sc)
- ac = he.encode(ac)
- res.send(`
- Employee Payment Profile
-
- `)
- })
-})
-
-app.post('/update', (req, res) => {
- if (!req.session.user) return res.sendStatus(403)
- pretendData[req.session.user].ac = req.body.ac
- pretendData[req.session.user].sc = req.body.sc
- res.send(`
- updated
-
- `)
-})
-
-function pretendDbQuery (user, cb) {
- cb(null, pretendData[user])
-}
-
-app.listen(3000)
diff --git a/Chapter08/preventing-cross-site-request-forgery/fixed-app/package.json b/Chapter08/preventing-cross-site-request-forgery/fixed-app/package.json
deleted file mode 100644
index b7d89f0..0000000
--- a/Chapter08/preventing-cross-site-request-forgery/fixed-app/package.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "name": "app",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "",
- "license": "ISC",
- "dependencies": {
- "body-parser": "^1.17.1",
- "express": "^4.15.2",
- "express-session": "^1.15.2",
- "he": "^1.1.1"
- }
-}
diff --git a/Chapter08/preventing-cross-site-request-forgery/secured-app/index.js b/Chapter08/preventing-cross-site-request-forgery/secured-app/index.js
deleted file mode 100644
index 90a8a22..0000000
--- a/Chapter08/preventing-cross-site-request-forgery/secured-app/index.js
+++ /dev/null
@@ -1,86 +0,0 @@
-'use strict'
-
-const express = require('express')
-const bodyParser = require('body-parser')
-const session = require('express-session')
-const he = require('he')
-const csurf = require('csurf')
-const app = express()
-const csrf = csurf()
-
-const pretendData = {
- dave: {
- ac: '12345678',
- sc: '88-26-26'
- }
-}
-
-app.use(session({
- secret: 'AI overlords are coming',
- name: 'SESSIONID',
- resave: false,
- saveUninitialized: false,
- cookie: {
- sameSite: true
- }
-}))
-
-app.use(bodyParser.urlencoded({extended: false}))
-
-app.get('/', (req, res) => {
- if (req.session.user) return res.redirect('/profile')
- res.send(`
- Login
-
- `)
-})
-
-app.post('/', (req, res) => {
- if (req.body.user === 'dave' && req.body.pass === 'ncb') {
- req.session.user = req.body.user
- }
- if (req.session.user) res.redirect('/profile')
- else res.redirect('/')
-})
-
-app.get('/profile', csrf, (req, res) => {
- if (!req.session.user) return res.redirect('/')
- const {prev = '', handoverToken = '', lang = 'en'} = req.query
- pretendDbQuery(req.session.user, (err, {sc, ac}) => {
- if (err) {
- res.sendStatus(500)
- return
- }
- sc = he.encode(sc)
- ac = he.encode(ac)
- res.send(`
- Employee Payment Profile
-
- `)
- })
-})
-
-app.post('/update', csrf, (req, res) => {
- if (!req.session.user) return res.sendStatus(403)
- pretendData[req.session.user].ac = req.body.ac
- pretendData[req.session.user].sc = req.body.sc
- res.send(`
- updated
-
- `)
-})
-
-function pretendDbQuery (user, cb) {
- cb(null, pretendData[user])
-}
-
-app.listen(3000)
diff --git a/Chapter08/preventing-cross-site-request-forgery/secured-app/package.json b/Chapter08/preventing-cross-site-request-forgery/secured-app/package.json
deleted file mode 100644
index 86cf66b..0000000
--- a/Chapter08/preventing-cross-site-request-forgery/secured-app/package.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "app",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "",
- "license": "ISC",
- "dependencies": {
- "body-parser": "^1.17.1",
- "csurf": "^1.9.0",
- "express": "^4.15.2",
- "express-session": "^1.15.2",
- "he": "^1.1.1"
- }
-}
diff --git a/Chapter08/web-server-hardening/app/app.js b/Chapter08/web-server-hardening/app/app.js
deleted file mode 100644
index 1e9ad86..0000000
--- a/Chapter08/web-server-hardening/app/app.js
+++ /dev/null
@@ -1,47 +0,0 @@
-var express = require('express')
-var path = require('path')
-var favicon = require('serve-favicon')
-var logger = require('morgan')
-var cookieParser = require('cookie-parser')
-var bodyParser = require('body-parser')
-var helmet = require('helmet')
-var index = require('./routes/index')
-var users = require('./routes/users')
-
-var app = express()
-
-// view engine setup
-app.set('views', path.join(__dirname, 'views'))
-app.set('view engine', 'jade')
-
-// uncomment after placing your favicon in /public
-// app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
-app.use(helmet())
-app.use(logger('dev'))
-app.use(bodyParser.json())
-app.use(bodyParser.urlencoded({ extended: false }))
-app.use(cookieParser())
-app.use(express.static(path.join(__dirname, 'public')))
-
-app.use('/', index)
-app.use('/users', users)
-
-// catch 404 and forward to error handler
-app.use(function (req, res, next) {
- var err = new Error('Not Found')
- err.status = 404
- next(err)
-})
-
-// error handler
-app.use(function (err, req, res, next) {
- // set locals, only providing error in development
- res.locals.message = err.message
- res.locals.error = req.app.get('env') === 'development' ? err : {}
-
- // render the error page
- res.status(err.status || 500)
- res.render('error')
-})
-
-module.exports = app
diff --git a/Chapter08/web-server-hardening/app/bin/www b/Chapter08/web-server-hardening/app/bin/www
deleted file mode 100644
index a8c2d36..0000000
--- a/Chapter08/web-server-hardening/app/bin/www
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/usr/bin/env node
-
-/**
- * Module dependencies.
- */
-
-var app = require('../app');
-var debug = require('debug')('app:server');
-var http = require('http');
-
-/**
- * Get port from environment and store in Express.
- */
-
-var port = normalizePort(process.env.PORT || '3000');
-app.set('port', port);
-
-/**
- * Create HTTP server.
- */
-
-var server = http.createServer(app);
-
-/**
- * Listen on provided port, on all network interfaces.
- */
-
-server.listen(port);
-server.on('error', onError);
-server.on('listening', onListening);
-
-/**
- * Normalize a port into a number, string, or false.
- */
-
-function normalizePort(val) {
- var port = parseInt(val, 10);
-
- if (isNaN(port)) {
- // named pipe
- return val;
- }
-
- if (port >= 0) {
- // port number
- return port;
- }
-
- return false;
-}
-
-/**
- * Event listener for HTTP server "error" event.
- */
-
-function onError(error) {
- if (error.syscall !== 'listen') {
- throw error;
- }
-
- var bind = typeof port === 'string'
- ? 'Pipe ' + port
- : 'Port ' + port;
-
- // handle specific listen errors with friendly messages
- switch (error.code) {
- case 'EACCES':
- console.error(bind + ' requires elevated privileges');
- process.exit(1);
- break;
- case 'EADDRINUSE':
- console.error(bind + ' is already in use');
- process.exit(1);
- break;
- default:
- throw error;
- }
-}
-
-/**
- * Event listener for HTTP server "listening" event.
- */
-
-function onListening() {
- var addr = server.address();
- var bind = typeof addr === 'string'
- ? 'pipe ' + addr
- : 'port ' + addr.port;
- debug('Listening on ' + bind);
-}
diff --git a/Chapter08/web-server-hardening/app/package.json b/Chapter08/web-server-hardening/app/package.json
deleted file mode 100644
index 35569d5..0000000
--- a/Chapter08/web-server-hardening/app/package.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "name": "app",
- "version": "0.0.0",
- "private": true,
- "scripts": {
- "start": "node ./bin/www"
- },
- "dependencies": {
- "body-parser": "~1.16.0",
- "cookie-parser": "~1.4.3",
- "debug": "~2.6.0",
- "express": "~4.14.1",
- "helmet": "^3.5.0",
- "jade": "~1.11.0",
- "morgan": "~1.7.0",
- "serve-favicon": "~2.3.2"
- }
-}
diff --git a/Chapter08/web-server-hardening/app/public/stylesheets/style.css b/Chapter08/web-server-hardening/app/public/stylesheets/style.css
deleted file mode 100644
index 9453385..0000000
--- a/Chapter08/web-server-hardening/app/public/stylesheets/style.css
+++ /dev/null
@@ -1,8 +0,0 @@
-body {
- padding: 50px;
- font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
-}
-
-a {
- color: #00B7FF;
-}
diff --git a/Chapter08/web-server-hardening/app/routes/index.js b/Chapter08/web-server-hardening/app/routes/index.js
deleted file mode 100644
index 956680b..0000000
--- a/Chapter08/web-server-hardening/app/routes/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var express = require('express')
-var router = express.Router()
-
-/* GET home page. */
-router.get('/', function (req, res, next) {
- res.render('index', { title: 'Express' })
-})
-
-module.exports = router
diff --git a/Chapter08/web-server-hardening/app/routes/users.js b/Chapter08/web-server-hardening/app/routes/users.js
deleted file mode 100644
index 8cfe88f..0000000
--- a/Chapter08/web-server-hardening/app/routes/users.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var express = require('express')
-var router = express.Router()
-
-/* GET users listing. */
-router.get('/', function (req, res, next) {
- res.send('respond with a resource')
-})
-
-module.exports = router
diff --git a/Chapter08/web-server-hardening/app/views/error.jade b/Chapter08/web-server-hardening/app/views/error.jade
deleted file mode 100644
index 51ec12c..0000000
--- a/Chapter08/web-server-hardening/app/views/error.jade
+++ /dev/null
@@ -1,6 +0,0 @@
-extends layout
-
-block content
- h1= message
- h2= error.status
- pre #{error.stack}
diff --git a/Chapter08/web-server-hardening/app/views/index.jade b/Chapter08/web-server-hardening/app/views/index.jade
deleted file mode 100644
index 3d63b9a..0000000
--- a/Chapter08/web-server-hardening/app/views/index.jade
+++ /dev/null
@@ -1,5 +0,0 @@
-extends layout
-
-block content
- h1= title
- p Welcome to #{title}
diff --git a/Chapter08/web-server-hardening/app/views/layout.jade b/Chapter08/web-server-hardening/app/views/layout.jade
deleted file mode 100644
index 15af079..0000000
--- a/Chapter08/web-server-hardening/app/views/layout.jade
+++ /dev/null
@@ -1,7 +0,0 @@
-doctype html
-html
- head
- title= title
- link(rel='stylesheet', href='/stylesheets/style.css')
- body
- block content
diff --git a/Chapter08/web-server-hardening/hapi-app/.gitignore b/Chapter08/web-server-hardening/hapi-app/.gitignore
deleted file mode 100644
index 40b878d..0000000
--- a/Chapter08/web-server-hardening/hapi-app/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules/
\ No newline at end of file
diff --git a/Chapter08/web-server-hardening/hapi-app/LICENSE b/Chapter08/web-server-hardening/hapi-app/LICENSE
deleted file mode 100644
index b253f47..0000000
--- a/Chapter08/web-server-hardening/hapi-app/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2017 Azaritech
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/Chapter08/web-server-hardening/hapi-app/README.md b/Chapter08/web-server-hardening/hapi-app/README.md
deleted file mode 100644
index 1fb3729..0000000
--- a/Chapter08/web-server-hardening/hapi-app/README.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# hapi-starter-kit
-Starter kit for Hapi
-
-## Install
-```bash
-git clone git@github.com:azaritech/hapi-starter-kit.git
-cd hapi-starter-kit/
-yarn install
-# or
-npm install
-```
-
-## Start
-```bash
-npm run start
-```
-
-### Open browser and go to
-[http://localhost:3000/](http://localhost:3000/)
-
-[http://localhost:3000/hello](http://localhost:3000/hello)
diff --git a/Chapter08/web-server-hardening/hapi-app/config/default.json b/Chapter08/web-server-hardening/hapi-app/config/default.json
deleted file mode 100644
index cc83a42..0000000
--- a/Chapter08/web-server-hardening/hapi-app/config/default.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "connections":
- [
- {
- "server": {
- "port": 3000,
- "host": "0.0.0.0",
- "labels": ["server"]
- }
- }
- ]
-}
\ No newline at end of file
diff --git a/Chapter08/web-server-hardening/hapi-app/lib/index.js b/Chapter08/web-server-hardening/hapi-app/lib/index.js
deleted file mode 100644
index 5b9dab6..0000000
--- a/Chapter08/web-server-hardening/hapi-app/lib/index.js
+++ /dev/null
@@ -1,34 +0,0 @@
-'use strict';
-
-const util = require('util');
-const hapi = require('hapi');
-const config = require('getconfig');
-
-const init = require('./init');
-const server = new hapi.Server();
-
-// init connections before registering plugins
-init.connections(server, config);
-server.ext('onPreResponse', (request, reply) => {
- var response = request.response.isBoom ?
- request.response.output :
- request.response;
- response.headers['X-DNS-Prefetch-Control'] = 'off';
- response.headers['X-DNS-Prefetch-Control'] = 'off';
- response.headers['X-Frame-Options'] = 'SAMEORIGIN';
- response.headers['X-Download-Options'] = 'noopen';
- response.headers['X-Content-Type-Options'] = 'nosniff';
- response.headers['X-XSS-Protection'] = '1; mode=block';
- reply.continue();
-});
-// register plugins
-init.registers(server);
-// loading views
-init.views(server);
-
-server.start((err) => {
- if (err) {
- throw err;
- }
- server.log('info', 'Server running');
-});
\ No newline at end of file
diff --git a/Chapter08/web-server-hardening/hapi-app/lib/init.js b/Chapter08/web-server-hardening/hapi-app/lib/init.js
deleted file mode 100644
index 071838a..0000000
--- a/Chapter08/web-server-hardening/hapi-app/lib/init.js
+++ /dev/null
@@ -1,39 +0,0 @@
-'use strict';
-
-module.exports.connections = function(server, config) {
- require('./server').connection(server, config);
-};
-
-module.exports.registers = function(server) {
- server.register([{
- register: require('./logs').register,
- options: require('./logs').options
- }, {
- register: require('nes')
- }, {
- register: require('vision')
- }, {
- register: require('inert')
- }, {
- register: require('./server').register,
- select: ['server']
- }], (err) => {
- if (err) {
- throw err;
- }
- });
-};
-
-module.exports.views = function(server) {
- server.views({
- engines: {
- html: require('handlebars')
- },
- path: __dirname + '/views',
- layout: false
- //layoutPath: 'views/layout',
- //layout: 'default',
- //helpersPath: 'views/helpers',
- //partialsPath: 'views/partials'
- });
-}
\ No newline at end of file
diff --git a/Chapter08/web-server-hardening/hapi-app/lib/logs.js b/Chapter08/web-server-hardening/hapi-app/lib/logs.js
deleted file mode 100644
index 3e0d146..0000000
--- a/Chapter08/web-server-hardening/hapi-app/lib/logs.js
+++ /dev/null
@@ -1,21 +0,0 @@
-'use strict';
-
-// logging to console
-const logs = {
- register: require('good'),
- options: {
- ops: {
- interval: 60 * 1000
- },
- reporters: {
- console: [{
- module: 'good-console',
- args: [ { log: '*', response: '*', request: '*' } ]
- },
- 'stdout'
- ]
- }
- }
-};
-
-module.exports = logs;
\ No newline at end of file
diff --git a/Chapter08/web-server-hardening/hapi-app/lib/server/index.js b/Chapter08/web-server-hardening/hapi-app/lib/server/index.js
deleted file mode 100644
index 8d3b4ef..0000000
--- a/Chapter08/web-server-hardening/hapi-app/lib/server/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-'use strict';
-
-module.exports.connection = function(server, config) {
- server.connection({
- host: config.connections[0].server.host,
- port: config.connections[0].server.port,
- labels: config.connections[0].server.labels
- });
-};
-
-// register plugin
-module.exports.register = function (server, options, next) {
- require('./routes')(server);
- next();
-};
-
-module.exports.register.attributes = {
- pkg: require('./package.json')
-};
\ No newline at end of file
diff --git a/Chapter08/web-server-hardening/hapi-app/lib/server/package.json b/Chapter08/web-server-hardening/hapi-app/lib/server/package.json
deleted file mode 100644
index 69a979e..0000000
--- a/Chapter08/web-server-hardening/hapi-app/lib/server/package.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "name": "server",
- "version": "1.0.0"
-}
\ No newline at end of file
diff --git a/Chapter08/web-server-hardening/hapi-app/lib/server/routes.js b/Chapter08/web-server-hardening/hapi-app/lib/server/routes.js
deleted file mode 100644
index 2eb3f5d..0000000
--- a/Chapter08/web-server-hardening/hapi-app/lib/server/routes.js
+++ /dev/null
@@ -1,22 +0,0 @@
-'use strict';
-
-module.exports = function(server) {
- server.route({
- method: 'GET',
- path: '/',
- handler: function (request, reply) {
- reply.view('index');
- }
- });
- server.route({
- method: 'GET',
- path: '/hello',
- handler: function (request, reply) {
- const data = {
- message1: 'Hello',
- message2: 'Paris, France'
- };
- reply.view('hello', data);
- }
- });
-};
diff --git a/Chapter08/web-server-hardening/hapi-app/lib/views/hello.html b/Chapter08/web-server-hardening/hapi-app/lib/views/hello.html
deleted file mode 100644
index e5ea604..0000000
--- a/Chapter08/web-server-hardening/hapi-app/lib/views/hello.html
+++ /dev/null
@@ -1 +0,0 @@
-{{message1}} from {{message2}}.
\ No newline at end of file
diff --git a/Chapter08/web-server-hardening/hapi-app/lib/views/index.html b/Chapter08/web-server-hardening/hapi-app/lib/views/index.html
deleted file mode 100644
index a403e71..0000000
--- a/Chapter08/web-server-hardening/hapi-app/lib/views/index.html
+++ /dev/null
@@ -1 +0,0 @@
-Hapi Starter Kit
\ No newline at end of file
diff --git a/Chapter08/web-server-hardening/hapi-app/package.json b/Chapter08/web-server-hardening/hapi-app/package.json
deleted file mode 100644
index 8ae93a3..0000000
--- a/Chapter08/web-server-hardening/hapi-app/package.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "name": "hapi-starter-kit",
- "version": "1.0.2",
- "description": "Starter kit for Hapi",
- "main": "lib/index.js",
- "repository": "git@github.com:azaritech/hapi-starter-kit.git",
- "author": "Nicolas Azari",
- "license": "MIT",
- "scripts": {
- "start": "node lib/index.js",
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "dependencies": {
- "getconfig": "^3.0.0",
- "good": "^7.1.0",
- "good-console": "^6.4.0",
- "handlebars": "^4.0.6",
- "hapi": "^16.1.0",
- "inert": "^4.1.0",
- "nes": "^6.4.0",
- "vision": "^4.1.1"
- },
- "devDependencies": {}
-}
diff --git a/Chapter08/web-server-hardening/hapi-app/yarn.lock b/Chapter08/web-server-hardening/hapi-app/yarn.lock
deleted file mode 100644
index 8ef51d4..0000000
--- a/Chapter08/web-server-hardening/hapi-app/yarn.lock
+++ /dev/null
@@ -1,551 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-accept@2.x.x:
- version "2.1.3"
- resolved "https://registry.yarnpkg.com/accept/-/accept-2.1.3.tgz#ab0f5bda4c449bbe926aea607b3522562f5acf86"
- dependencies:
- boom "4.x.x"
- hoek "4.x.x"
-
-align-text@^0.1.1, align-text@^0.1.3:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
- dependencies:
- kind-of "^3.0.2"
- longest "^1.0.1"
- repeat-string "^1.5.2"
-
-amdefine@>=0.0.4:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
-
-ammo@2.x.x:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/ammo/-/ammo-2.0.3.tgz#914bbcf65b043ed0f58a8a9d0196e250ec51e6a7"
- dependencies:
- boom "4.x.x"
- hoek "4.x.x"
-
-async@^1.4.0:
- version "1.5.2"
- resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
-
-async@~0.2.6:
- version "0.2.10"
- resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1"
-
-b64@3.x.x:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/b64/-/b64-3.0.2.tgz#7a9d60466adf7b8de114cbdf651a5fdfcc90894d"
-
-boom@4.x.x:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/boom/-/boom-4.2.0.tgz#c1a74174b11fbba223f6162d4fd8851a1b82a536"
- dependencies:
- hoek "4.x.x"
-
-buffer-shims@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
-
-call@3.x.x:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/call/-/call-3.0.4.tgz#e380f2f2a491330aa79085355f8be080877d559e"
- dependencies:
- boom "4.x.x"
- hoek "4.x.x"
-
-call@4.x.x:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/call/-/call-4.0.0.tgz#cd29381a98046a132db26e2628e70bd8321a1ddf"
- dependencies:
- boom "4.x.x"
- hoek "4.x.x"
-
-camelcase@^1.0.2:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
-
-catbox-memory@2.x.x:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/catbox-memory/-/catbox-memory-2.0.4.tgz#433e255902caf54233d1286429c8f4df14e822d5"
- dependencies:
- hoek "4.x.x"
-
-catbox@7.x.x:
- version "7.1.3"
- resolved "https://registry.yarnpkg.com/catbox/-/catbox-7.1.3.tgz#9817edec5a921743282addfc9c45ace52847eebb"
- dependencies:
- boom "4.x.x"
- hoek "4.x.x"
- joi "10.x.x"
-
-center-align@^0.1.1:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
- dependencies:
- align-text "^0.1.3"
- lazy-cache "^1.0.3"
-
-cliui@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
- dependencies:
- center-align "^0.1.1"
- right-align "^0.1.1"
- wordwrap "0.0.2"
-
-content@3.x.x:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/content/-/content-3.0.3.tgz#000f8a01371b95c66afe99be9390fa6cb91aa87a"
- dependencies:
- boom "4.x.x"
-
-core-util-is@~1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
-
-cryptiles@3.x.x:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.1.tgz#86a9203f7367a0e9324bc7555ff0fcf5f81979ee"
- dependencies:
- boom "4.x.x"
-
-decamelize@^1.0.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
-
-duplexify@^3.1.2:
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.0.tgz#1aa773002e1578457e9d9d4a50b0ccaaebcbd604"
- dependencies:
- end-of-stream "1.0.0"
- inherits "^2.0.1"
- readable-stream "^2.0.0"
- stream-shift "^1.0.0"
-
-end-of-stream@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.0.0.tgz#d4596e702734a93e40e9af864319eabd99ff2f0e"
- dependencies:
- once "~1.3.0"
-
-end-of-stream@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.1.0.tgz#e9353258baa9108965efc41cb0ef8ade2f3cfb07"
- dependencies:
- once "~1.3.0"
-
-getconfig@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/getconfig/-/getconfig-3.0.0.tgz#e74ca2581d5ec805f8778e1236569453a0f0ae1d"
-
-good-console@^6.4.0:
- version "6.4.0"
- resolved "https://registry.yarnpkg.com/good-console/-/good-console-6.4.0.tgz#7294c9d90c4c9f059a082e180625495966d2ba59"
- dependencies:
- hoek "4.x.x"
- joi "8.1.x"
- json-stringify-safe "5.0.x"
- moment "2.15.x"
-
-good@^7.1.0:
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/good/-/good-7.1.0.tgz#9e05ad24c58a11b71cf5081700f3778db0b22c1c"
- dependencies:
- hoek "4.x.x"
- joi "10.x.x"
- oppsy "1.x.x"
- pumpify "1.3.x"
-
-handlebars@^4.0.6:
- version "4.0.6"
- resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.6.tgz#2ce4484850537f9c97a8026d5399b935c4ed4ed7"
- dependencies:
- async "^1.4.0"
- optimist "^0.6.1"
- source-map "^0.4.4"
- optionalDependencies:
- uglify-js "^2.6"
-
-hapi@^16.1.0:
- version "16.1.0"
- resolved "https://registry.yarnpkg.com/hapi/-/hapi-16.1.0.tgz#419dd86347588821eb5a0a5f493bce019802d33b"
- dependencies:
- accept "2.x.x"
- ammo "2.x.x"
- boom "4.x.x"
- call "4.x.x"
- catbox "7.x.x"
- catbox-memory "2.x.x"
- cryptiles "3.x.x"
- heavy "4.x.x"
- hoek "4.x.x"
- iron "4.x.x"
- items "2.x.x"
- joi "10.x.x"
- mimos "3.x.x"
- podium "^1.2.x"
- shot "3.x.x"
- statehood "5.x.x"
- subtext "^4.3.x"
- topo "2.x.x"
-
-heavy@4.x.x:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/heavy/-/heavy-4.0.3.tgz#976bba118b011b15fe904aa4f292a168bfc6232f"
- dependencies:
- boom "4.x.x"
- hoek "4.x.x"
- joi "10.x.x"
-
-hoek@4.x.x:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.1.0.tgz#4a4557460f69842ed463aa00628cc26d2683afa7"
-
-inert@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/inert/-/inert-4.1.0.tgz#e68df9fb0b87d8ad688e3428daaf35d623b64f5d"
- dependencies:
- ammo "2.x.x"
- boom "4.x.x"
- hoek "4.x.x"
- items "2.x.x"
- joi "10.x.x"
- lru-cache "4.0.x"
-
-inherits@^2.0.1, inherits@~2.0.1:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
-
-iron@4.x.x:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/iron/-/iron-4.0.4.tgz#c1f8cc4c91454194ab8920d9247ba882e528061a"
- dependencies:
- boom "4.x.x"
- cryptiles "3.x.x"
- hoek "4.x.x"
-
-is-buffer@^1.0.2:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b"
-
-isarray@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
-
-isemail@2.x.x:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/isemail/-/isemail-2.2.1.tgz#0353d3d9a62951080c262c2aa0a42b8ea8e9e2a6"
-
-items@2.x.x, items@^2.1.x:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/items/-/items-2.1.1.tgz#8bd16d9c83b19529de5aea321acaada78364a198"
-
-joi@10.x.x:
- version "10.2.2"
- resolved "https://registry.yarnpkg.com/joi/-/joi-10.2.2.tgz#dc5a792b7b4c6fffa562242a95b55d9d3f077e24"
- dependencies:
- hoek "4.x.x"
- isemail "2.x.x"
- items "2.x.x"
- topo "2.x.x"
-
-joi@8.1.x:
- version "8.1.1"
- resolved "https://registry.yarnpkg.com/joi/-/joi-8.1.1.tgz#2d8b52a5d909d217ed47248577eefe8b1798f48f"
- dependencies:
- hoek "4.x.x"
- isemail "2.x.x"
- moment "2.x.x"
- topo "2.x.x"
-
-json-stringify-safe@5.0.x:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
-
-kind-of@^3.0.2:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47"
- dependencies:
- is-buffer "^1.0.2"
-
-lazy-cache@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
-
-longest@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
-
-lru-cache@4.0.x:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e"
- dependencies:
- pseudomap "^1.0.1"
- yallist "^2.0.0"
-
-mime-db@1.x.x:
- version "1.26.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff"
-
-mimos@3.x.x:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/mimos/-/mimos-3.0.3.tgz#b9109072ad378c2b72f6a0101c43ddfb2b36641f"
- dependencies:
- hoek "4.x.x"
- mime-db "1.x.x"
-
-minimist@~0.0.1:
- version "0.0.10"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
-
-moment@2.15.x, moment@2.x.x:
- version "2.15.2"
- resolved "https://registry.yarnpkg.com/moment/-/moment-2.15.2.tgz#1bfdedf6a6e345f322fe956d5df5bd08a8ce84dc"
-
-nes@^6.4.0:
- version "6.4.0"
- resolved "https://registry.yarnpkg.com/nes/-/nes-6.4.0.tgz#35831781df19cbe5a8014169bbd70887bc5c63d0"
- dependencies:
- boom "4.x.x"
- call "3.x.x"
- cryptiles "3.x.x"
- hoek "4.x.x"
- iron "4.x.x"
- items "^2.1.x"
- joi "10.x.x"
- ws "1.x.x"
-
-nigel@2.x.x:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/nigel/-/nigel-2.0.2.tgz#93a1866fb0c52d87390aa75e2b161f4b5c75e5b1"
- dependencies:
- hoek "4.x.x"
- vise "2.x.x"
-
-once@^1.3.1:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
- dependencies:
- wrappy "1"
-
-once@~1.3.0:
- version "1.3.3"
- resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20"
- dependencies:
- wrappy "1"
-
-oppsy@1.x.x:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/oppsy/-/oppsy-1.0.2.tgz#98014cd6967653a83cfffa554226dc90050baad4"
- dependencies:
- hoek "4.x.x"
- items "2.x.x"
-
-optimist@^0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
- dependencies:
- minimist "~0.0.1"
- wordwrap "~0.0.2"
-
-options@>=0.0.5:
- version "0.0.6"
- resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f"
-
-pez@2.x.x:
- version "2.1.4"
- resolved "https://registry.yarnpkg.com/pez/-/pez-2.1.4.tgz#73f822fa62d599d65c4606f490d54d345191bc7c"
- dependencies:
- b64 "3.x.x"
- boom "4.x.x"
- content "3.x.x"
- hoek "4.x.x"
- nigel "2.x.x"
-
-podium@^1.2.x:
- version "1.2.5"
- resolved "https://registry.yarnpkg.com/podium/-/podium-1.2.5.tgz#87c566c2f0365bcf0a1ec7602c4d01948cdd2ad5"
- dependencies:
- hoek "4.x.x"
- items "2.x.x"
- joi "10.x.x"
-
-process-nextick-args@~1.0.6:
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
-
-pseudomap@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
-
-pump@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.2.tgz#3b3ee6512f94f0e575538c17995f9f16990a5d51"
- dependencies:
- end-of-stream "^1.1.0"
- once "^1.3.1"
-
-pumpify@1.3.x:
- version "1.3.5"
- resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.3.5.tgz#1b671c619940abcaeac0ad0e3a3c164be760993b"
- dependencies:
- duplexify "^3.1.2"
- inherits "^2.0.1"
- pump "^1.0.0"
-
-readable-stream@^2.0.0:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e"
- dependencies:
- buffer-shims "^1.0.0"
- core-util-is "~1.0.0"
- inherits "~2.0.1"
- isarray "~1.0.0"
- process-nextick-args "~1.0.6"
- string_decoder "~0.10.x"
- util-deprecate "~1.0.1"
-
-repeat-string@^1.5.2:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
-
-right-align@^0.1.1:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
- dependencies:
- align-text "^0.1.1"
-
-shot@3.x.x:
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/shot/-/shot-3.4.0.tgz#e7125ee72575ae5218349e933636808d790d4b92"
- dependencies:
- hoek "4.x.x"
- joi "10.x.x"
-
-source-map@^0.4.4:
- version "0.4.4"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
- dependencies:
- amdefine ">=0.0.4"
-
-source-map@~0.5.1:
- version "0.5.6"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
-
-statehood@5.x.x:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/statehood/-/statehood-5.0.1.tgz#fc13c97b37751c18e70513d2b97e896ac8b73005"
- dependencies:
- boom "4.x.x"
- cryptiles "3.x.x"
- hoek "4.x.x"
- iron "4.x.x"
- items "2.x.x"
- joi "10.x.x"
-
-stream-shift@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
-
-string_decoder@~0.10.x:
- version "0.10.31"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
-
-subtext@^4.3.x:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/subtext/-/subtext-4.3.0.tgz#dfac90492ec35669fd6e00c6e5d938b06d7ccfbb"
- dependencies:
- boom "4.x.x"
- content "3.x.x"
- hoek "4.x.x"
- pez "2.x.x"
- wreck "10.x.x"
-
-topo@2.x.x:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/topo/-/topo-2.0.2.tgz#cd5615752539057c0dc0491a621c3bc6fbe1d182"
- dependencies:
- hoek "4.x.x"
-
-uglify-js@^2.6:
- version "2.7.5"
- resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.5.tgz#4612c0c7baaee2ba7c487de4904ae122079f2ca8"
- dependencies:
- async "~0.2.6"
- source-map "~0.5.1"
- uglify-to-browserify "~1.0.0"
- yargs "~3.10.0"
-
-uglify-to-browserify@~1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
-
-ultron@1.0.x:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa"
-
-util-deprecate@~1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
-
-vise@2.x.x:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/vise/-/vise-2.0.2.tgz#6b08e8fb4cb76e3a50cd6dd0ec37338e811a0d39"
- dependencies:
- hoek "4.x.x"
-
-vision@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/vision/-/vision-4.1.1.tgz#e1b612b2d2e2f20310a039290fd49d51248f82da"
- dependencies:
- boom "4.x.x"
- hoek "4.x.x"
- items "2.x.x"
- joi "10.x.x"
-
-window-size@0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
-
-wordwrap@0.0.2:
- version "0.0.2"
- resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
-
-wordwrap@~0.0.2:
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
-
-wrappy@1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
-
-wreck@10.x.x:
- version "10.0.0"
- resolved "https://registry.yarnpkg.com/wreck/-/wreck-10.0.0.tgz#98ab882f85e16a526332507f101f5a7841162278"
- dependencies:
- boom "4.x.x"
- hoek "4.x.x"
-
-ws@1.x.x:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f"
- dependencies:
- options ">=0.0.5"
- ultron "1.0.x"
-
-yallist@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.0.0.tgz#306c543835f09ee1a4cb23b7bce9ab341c91cdd4"
-
-yargs@~3.10.0:
- version "3.10.0"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
- dependencies:
- camelcase "^1.0.2"
- cliui "^2.1.0"
- decamelize "^1.0.0"
- window-size "0.1.0"
diff --git a/Chapter08/web-server-hardening/http-app/index.js b/Chapter08/web-server-hardening/http-app/index.js
deleted file mode 100644
index f6a2a09..0000000
--- a/Chapter08/web-server-hardening/http-app/index.js
+++ /dev/null
@@ -1,25 +0,0 @@
-const http = require('http')
-
-const server = http.createServer((req, res) => {
- secureHeaders(res)
- switch (req.url) {
- case '/': return res.end('hello world')
- case '/users': return res.end('oh, some users!')
- default: return error('404', res)
- }
-})
-
-function secureHeaders (res) {
- res.setHeader('X-DNS-Prefetch-Control', 'off')
- res.setHeader('X-Frame-Options', 'SAMEORIGIN')
- res.setHeader('X-Download-Options', 'noopen')
- res.setHeader('X-Content-Type-Options', 'nosniff')
- res.setHeader('X-XSS-Protection', '1; mode=block')
-}
-
-function error(code, res) {
- res.statusCode = code
- res.end(http.STATUS_CODES[code])
-}
-
-server.listen(3000)
\ No newline at end of file
diff --git a/Chapter08/web-server-hardening/koa-app/app.js b/Chapter08/web-server-hardening/koa-app/app.js
deleted file mode 100644
index 569f219..0000000
--- a/Chapter08/web-server-hardening/koa-app/app.js
+++ /dev/null
@@ -1,61 +0,0 @@
-const Koa = require('koa')
-const helmet = require('koa-helmet')
-const app = new Koa()
-const router = require('koa-router')()
-const views = require('koa-views')
-const co = require('co')
-const json = require('koa-json')
-const onerror = require('koa-onerror')
-const bodyparser = require('koa-bodyparser')
-const serve = require('koa-static')
-const path = require('path')
-const log4js = require('koa-log4')
-const logger = log4js.getLogger('app')
-
-const index = require('./routes/index')
-const users = require('./routes/users')
-
-// middlewares
-app.use(helmet())
-app.use(bodyparser())
-app.use(json())
-app.use(log4js.koaLogger(log4js.getLogger('http'), { level: 'auto' }))
-app.use(serve(path.join(__dirname, 'public')))
-
-// handle error
-onerror(app)
-
-// setup view
-app.use(views(path.join(__dirname, 'views'), {
- extension: 'jade'
-}))
-
-// logger
-// app.use(async (ctx, next) => {
-// const start = new Date()
-// await next()
-// const ms = new Date() - start
-// logger.info(`${ctx.method} ${ctx.url} - ${ms}ms`)
-// })
-app.use(co.wrap(function * (ctx, next) {
- const start = new Date()
- yield next()
- const ms = new Date() - start
- logger.info(`${ctx.method} ${ctx.url} - ${ms}ms`)
-}))
-
-// routes definition
-router.use('/', index.routes(), index.allowedMethods())
-router.use('/users', users.routes(), users.allowedMethods())
-
-// mount root routes
-app.use(router.routes())
- .use(router.allowedMethods())
-
-// log error
-app.on('error', function (err, ctx) {
- logger.error(err)
- logger.error('server error', err, ctx)
-})
-
-module.exports = app
diff --git a/Chapter08/web-server-hardening/koa-app/bin/www b/Chapter08/web-server-hardening/koa-app/bin/www
deleted file mode 100644
index d8f1386..0000000
--- a/Chapter08/web-server-hardening/koa-app/bin/www
+++ /dev/null
@@ -1,106 +0,0 @@
-#!/usr/bin/env node
-
-/**
- * Module dependencies.
- */
-
-const app = require('../app')
-const http = require('http')
-const path = require('path')
-
-const appDir = path.resolve(__dirname, '..')
-const logDir = path.join(appDir, 'logs')
-/**
- * make a log directory, just in case it isn't there.
- */
-try {
- require('fs').mkdirSync(logDir)
-} catch (e) {
- if (e.code !== 'EEXIST') {
- console.error('Could not set up log directory, error was: ', e)
- process.exit(1)
- }
-}
-const log4js = require('koa-log4')
-log4js.configure(path.join(appDir, 'log4js.json'), { cwd: logDir })
-const logger = log4js.getLogger('startup')
-/**
- * Get port from environment and store in Express.
- */
-
-var port = normalizePort(process.env.PORT || '3000')
-// app.set('port', port)
-
-/**
- * Create HTTP server.
- */
-
-var server = http.createServer(app.callback())
-
-/**
- * Listen on provided port, on all network interfaces.
- */
-
-server.listen(port)
-server.on('error', onError)
-server.on('listening', onListening)
-
-/**
- * Normalize a port into a number, string, or false.
- */
-
-function normalizePort (val) {
- var port = parseInt(val, 10)
-
- if (isNaN(port)) {
- // named pipe
- return val
- }
-
- if (port >= 0) {
- // port number
- return port
- }
-
- return false
-}
-
-/**
- * Event listener for HTTP server "error" event.
- */
-
-function onError (error) {
- if (error.syscall !== 'listen') {
- throw error
- }
-
- var bind = typeof port === 'string'
- ? 'Pipe ' + port
- : 'Port ' + port
-
- // handle specific listen errors with friendly messages
- switch (error.code) {
- case 'EACCES':
- logger.error(bind + ' requires elevated privileges')
- process.exit(1)
- break
- case 'EADDRINUSE':
- logger.error(bind + ' is already in use')
- process.exit(1)
- break
- default:
- throw error
- }
-}
-
-/**
- * Event listener for HTTP server "listening" event.
- */
-
-function onListening () {
- var addr = server.address()
- var bind = typeof addr === 'string'
- ? 'pipe ' + addr
- : 'port ' + addr.port
- logger.info('Listening on ' + bind)
-}
diff --git a/Chapter08/web-server-hardening/koa-app/gulpfile.js b/Chapter08/web-server-hardening/koa-app/gulpfile.js
deleted file mode 100644
index c54a01a..0000000
--- a/Chapter08/web-server-hardening/koa-app/gulpfile.js
+++ /dev/null
@@ -1,66 +0,0 @@
-var gulp = require('gulp')
-var nodemon = require('gulp-nodemon')
-var sourcemaps = require('gulp-sourcemaps')
-var concat = require('gulp-concat')
-var uglify = require('gulp-uglify')
-var cssmin = require('gulp-cssmin')
-var del = require('del')
-var path = require('path')
-
-var client = {
- js: {
- src: 'client/js',
- dest: 'public/js'
- },
- css: {
- src: 'client/css',
- dest: 'public/css'
- }
-}
-
-gulp.task('default', ['jsmin', 'cssmin', 'start'])
-
-gulp.task('start', function () {
- nodemon({
- script: 'bin/www',
- ext: 'js css ejs',
- ignore: ['public', 'logs'],
- tasks: function (files) {
- var tasks = []
- files.forEach(function (file) {
- if (path.relative(client.js.src, file).substr(0, 2) !== '..'
- && !~tasks.indexOf('jsmin')) {
- tasks.push('jsmin')
- }
- if (path.relative(client.css.src, file).substr(0, 2) !== '..'
- && !~tasks.indexOf('cssmin')) {
- tasks.push('cssmin')
- }
- })
- return tasks
- }
- })
-})
-
-gulp.task('cleanjs', function () {
- return del([client.js.dest])
-})
-
-gulp.task('cleancss', function () {
- return del([client.css.dest])
-})
-
-gulp.task('jsmin', ['cleanjs'], function () {
- return gulp.src(client.js.src + '/**/*.js')
- .pipe(sourcemaps.init())
- .pipe(concat('graph.js'))
- .pipe(uglify())
- .pipe(gulp.dest(client.js.dest))
-})
-
-gulp.task('cssmin', ['cleancss'], function () {
- return gulp.src(client.css.src + '/**/*.css')
- .pipe(concat('style.css'))
- .pipe(cssmin())
- .pipe(gulp.dest(client.css.dest))
-})
diff --git a/Chapter08/web-server-hardening/koa-app/log4js.json b/Chapter08/web-server-hardening/koa-app/log4js.json
deleted file mode 100644
index febe3b5..0000000
--- a/Chapter08/web-server-hardening/koa-app/log4js.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "appenders": [
- {
- "type": "console"
- },
- {
- "type": "clustered",
- "appenders": [
- {
- "type": "dateFile",
- "filename": "startup.log",
- "pattern": "-yyyy-MM-dd",
- "category": "startup"
- },
- {
- "type": "dateFile",
- "filename": "http.log",
- "pattern": "-yyyy-MM-dd",
- "category": "http"
- },
- {
- "type": "file",
- "filename": "app.log",
- "maxLogSize": 10485760,
- "numBackups": 5
- },
- {
- "type": "logLevelFilter",
- "level": "ERROR",
- "appender": {
- "type": "file",
- "filename": "errors.log"
- }
- }
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/Chapter08/web-server-hardening/koa-app/package.json b/Chapter08/web-server-hardening/koa-app/package.json
deleted file mode 100644
index 8b18f50..0000000
--- a/Chapter08/web-server-hardening/koa-app/package.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "name": "koa-app",
- "version": "0.0.0",
- "private": true,
- "scripts": {
- "start": "node ./bin/www",
- "test": "gulp"
- },
- "dependencies": {
- "co": "^4.6.0",
- "jade": "~1.11.0",
- "koa": "^2.0.0",
- "koa-bodyparser": "^3.0.0",
- "koa-helmet": "^3.1.0",
- "koa-json": "^2.0.0",
- "koa-log4": "^2.0.1",
- "koa-onerror": "^1.2.1",
- "koa-router": "^7.0.0",
- "koa-static": "^3.0.0",
- "koa-views": "^5.0.1"
- },
- "devDependencies": {
- "del": "^2.2.0",
- "gulp": "^3.9.1",
- "gulp-concat": "^2.6.0",
- "gulp-cssmin": "^0.1.7",
- "gulp-nodemon": "^2.0.6",
- "gulp-sourcemaps": "^1.6.0",
- "gulp-uglify": "^1.5.3"
- }
-}
diff --git a/Chapter08/web-server-hardening/koa-app/public/stylesheets/style.css b/Chapter08/web-server-hardening/koa-app/public/stylesheets/style.css
deleted file mode 100644
index 9453385..0000000
--- a/Chapter08/web-server-hardening/koa-app/public/stylesheets/style.css
+++ /dev/null
@@ -1,8 +0,0 @@
-body {
- padding: 50px;
- font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
-}
-
-a {
- color: #00B7FF;
-}
diff --git a/Chapter08/web-server-hardening/koa-app/routes/index.js b/Chapter08/web-server-hardening/koa-app/routes/index.js
deleted file mode 100644
index b0bbe62..0000000
--- a/Chapter08/web-server-hardening/koa-app/routes/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-const co = require('co')
-const router = require('koa-router')()
-
-router.get('/', co.wrap(function *(ctx, next) {
- ctx.state = {
- title: 'Welcome to Koa'
- }
- yield ctx.render('index', {})
-}))
-
-// router.get('/', async function (ctx, next) {
-// ctx.state = {
-// title: 'koa2 title'
-// }
-//
-// await ctx.render('index', {
-// })
-// })
-module.exports = router
diff --git a/Chapter08/web-server-hardening/koa-app/routes/users.js b/Chapter08/web-server-hardening/koa-app/routes/users.js
deleted file mode 100644
index eae6d06..0000000
--- a/Chapter08/web-server-hardening/koa-app/routes/users.js
+++ /dev/null
@@ -1,7 +0,0 @@
-const router = require('koa-router')()
-
-router.get('/', function (ctx, next) {
- ctx.body = 'this a users response!'
-})
-
-module.exports = router
diff --git a/Chapter08/web-server-hardening/koa-app/views/error.jade b/Chapter08/web-server-hardening/koa-app/views/error.jade
deleted file mode 100644
index 51ec12c..0000000
--- a/Chapter08/web-server-hardening/koa-app/views/error.jade
+++ /dev/null
@@ -1,6 +0,0 @@
-extends layout
-
-block content
- h1= message
- h2= error.status
- pre #{error.stack}
diff --git a/Chapter08/web-server-hardening/koa-app/views/index.jade b/Chapter08/web-server-hardening/koa-app/views/index.jade
deleted file mode 100644
index 3d63b9a..0000000
--- a/Chapter08/web-server-hardening/koa-app/views/index.jade
+++ /dev/null
@@ -1,5 +0,0 @@
-extends layout
-
-block content
- h1= title
- p Welcome to #{title}
diff --git a/Chapter08/web-server-hardening/koa-app/views/layout.jade b/Chapter08/web-server-hardening/koa-app/views/layout.jade
deleted file mode 100644
index 15af079..0000000
--- a/Chapter08/web-server-hardening/koa-app/views/layout.jade
+++ /dev/null
@@ -1,7 +0,0 @@
-doctype html
-html
- head
- title= title
- link(rel='stylesheet', href='/stylesheets/style.css')
- body
- block content
diff --git a/Chapter09/async-opt/calculate-average.js b/Chapter09/async-opt/calculate-average.js
deleted file mode 100644
index 302b357..0000000
--- a/Chapter09/async-opt/calculate-average.js
+++ /dev/null
@@ -1,23 +0,0 @@
-'use strict'
-
-const MongoClient = require('mongodb').MongoClient
-const url = 'mongodb://localhost:27017/test';
-var count = 0
-var max = 1000
-
-MongoClient.connect(url, function(err, db) {
- if (err) { throw err }
- const collection = db.collection('data')
- const average = db.collection('averages')
-
- collection.find({}).toArray(function (err, data) {
- if (err) { throw err }
- average.insert({
- value: data.reduce((acc, v) => acc + v, 0) / data.length
- }, function (err) {
- if (err) { throw err }
- db.close()
- })
- })
-})
-
diff --git a/Chapter09/async-opt/load.js b/Chapter09/async-opt/load.js
deleted file mode 100644
index d1c2285..0000000
--- a/Chapter09/async-opt/load.js
+++ /dev/null
@@ -1,26 +0,0 @@
-'use strict'
-
-const MongoClient = require('mongodb').MongoClient
-const url = 'mongodb://localhost:27017/test';
-var count = 0
-var max = 1000
-
-MongoClient.connect(url, function(err, db) {
- if (err) { throw err }
- const collection = db.collection('data')
-
- function insert (err) {
- if (err) throw err
-
- if (count++ === max) {
- return db.close()
- }
-
- collection.insert({
- value: Math.random() * 1000000
- }, insert)
- }
-
- insert()
-})
-
diff --git a/Chapter09/async-opt/package.json b/Chapter09/async-opt/package.json
deleted file mode 100644
index fc82b7b..0000000
--- a/Chapter09/async-opt/package.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "name": "async-opt",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "author": "",
- "license": "ISC",
- "dependencies": {
- "express": "^4.14.0",
- "fastq": "^1.4.1",
- "lru-cache": "^4.0.1",
- "mongodb": "^2.1.18"
- }
-}
diff --git a/Chapter09/async-opt/server-average.js b/Chapter09/async-opt/server-average.js
deleted file mode 100644
index 863a0de..0000000
--- a/Chapter09/async-opt/server-average.js
+++ /dev/null
@@ -1,19 +0,0 @@
-'use strict'
-
-const MongoClient = require('mongodb').MongoClient
-const express = require('express')
-const app = express()
-
-var url = 'mongodb://localhost:27017/test';
-
-MongoClient.connect(url, function(err, db) {
- if (err) { throw err }
- const collection = db.collection('data')
- app.get('/hello', (req, res) => {
- collection.findOne({}, function sum (err, data) {
- res.send('' + data.value)
- })
- })
-
- app.listen(3000)
-})
diff --git a/Chapter09/async-opt/server-cache.js b/Chapter09/async-opt/server-cache.js
deleted file mode 100644
index 61e0818..0000000
--- a/Chapter09/async-opt/server-cache.js
+++ /dev/null
@@ -1,56 +0,0 @@
-'use strict'
-
-const MongoClient = require('mongodb').MongoClient
-const express = require('express')
-const LRU = require('lru-cache')
-const fastq = require('fastq')
-const app = express()
-
-var url = 'mongodb://localhost:27017/test';
-
-function sum (data) {
- var sum = 0
- const l = data.length
- for (var i = 0; i < l; i++) {
- sum += data[i].value
- }
- return sum
-}
-
-MongoClient.connect(url, function(err, db) {
- if (err) { throw err }
- const collection = db.collection('data')
- const queue = fastq(work)
- const cache = LRU({
- maxAge: 1000 * 5 // 5 seconds
- })
-
- function work (req, done) {
- const elem = cache.get('average')
- if (elem) {
- done(null, elem)
- return
- }
- collection.find({}).toArray(function (err, data) {
- if (err) {
- done(err)
- return
- }
- const result = sum(data) / data.length
- cache.set('average', result)
- done(null, result)
- })
- }
-
- app.get('/hello', (req, res) => {
- queue.push(req, function (err, result) {
- if (err) {
- res.send(err.message)
- return
- }
- res.send('' + result)
- })
- })
-
- app.listen(3000)
-})
diff --git a/Chapter09/async-opt/server-no-reduce.js b/Chapter09/async-opt/server-no-reduce.js
deleted file mode 100644
index f0f5db3..0000000
--- a/Chapter09/async-opt/server-no-reduce.js
+++ /dev/null
@@ -1,29 +0,0 @@
-'use strict'
-
-const MongoClient = require('mongodb').MongoClient
-const express = require('express')
-const app = express()
-
-var url = 'mongodb://localhost:27017/test'
-
-MongoClient.connect(url, function(err, db) {
- if (err) { throw err }
- const collection = db.collection('data')
- app.get('/hello', (req, res) => {
- collection.find({}).toArray(function sum (err, data) {
- if (err) {
- res.send(err)
- return
- }
- var sum = 0
- const l = data.length
- for (var i = 0; i < l; i++) {
- sum += data[i].value
- }
- const result = sum / data.length
- res.send('' + result)
- })
- })
-
- app.listen(3000)
-})
\ No newline at end of file
diff --git a/Chapter09/async-opt/server-one-sum-fn.js b/Chapter09/async-opt/server-one-sum-fn.js
deleted file mode 100644
index d828303..0000000
--- a/Chapter09/async-opt/server-one-sum-fn.js
+++ /dev/null
@@ -1,33 +0,0 @@
-'use strict'
-
-const MongoClient = require('mongodb').MongoClient
-const express = require('express')
-const app = express()
-
-var url = 'mongodb://localhost:27017/test';
-
-function sum (data) {
- var sum = 0
- const l = data.length
- for (var i = 0; i < l; i++) {
- sum += data[i].value
- }
- return sum
-}
-
-MongoClient.connect(url, function(err, db) {
- if (err) { throw err }
- const collection = db.collection('data')
- app.get('/hello', (req, res) => {
- collection.find({}).toArray(function (err, data) {
- if (err) {
- res.send(err)
- return
- }
- const result = sum(data) / data.length
- res.send('' + result)
- })
- })
-
- app.listen(3000)
-})
diff --git a/Chapter09/async-opt/server.js b/Chapter09/async-opt/server.js
deleted file mode 100644
index 26c8f62..0000000
--- a/Chapter09/async-opt/server.js
+++ /dev/null
@@ -1,26 +0,0 @@
-'use strict'
-
-const MongoClient = require('mongodb').MongoClient
-const express = require('express')
-const app = express()
-
-var url = 'mongodb://localhost:27017/test';
-
-
-MongoClient.connect(url, function(err, db) {
- if (err) { throw err }
- const collection = db.collection('data')
- app.get('/hello', (req, res) => {
- collection.find({}).toArray(function sum (err, data) {
- if (err) {
- res.send(err)
- return
- }
- const total = data.reduce((acc, d) => acc + d.value, 0)
- const result = total / data.length
- res.send('' + result)
- })
- })
-
- app.listen(3000)
-})
diff --git a/Chapter09/async-opt/server2.js b/Chapter09/async-opt/server2.js
deleted file mode 100644
index 85b1ec4..0000000
--- a/Chapter09/async-opt/server2.js
+++ /dev/null
@@ -1,27 +0,0 @@
-'use strict'
-
-const MongoClient = require('mongodb').MongoClient
-const express = require('express')
-const app = express()
-
-var url = 'mongodb://localhost:27017/test';
-
-
-MongoClient.connect(url, function(err, db) {
- if (err) { throw err }
- const collection = db.collection('data')
- app.get('/hello', (req, res) => {
- var count = 0
- var result = 0
- collection.find({})
- .on('data', function (chunk) {
- count++
- result += chunk.value
- })
- .on('end', function () {
- res.send('' + (result / count))
- })
- })
-
- app.listen(3000)
-})
diff --git a/Chapter09/bench-http/measuring-post-performance/package.json b/Chapter09/bench-http/measuring-post-performance/package.json
deleted file mode 100644
index 3865d17..0000000
--- a/Chapter09/bench-http/measuring-post-performance/package.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "bench-http",
- "version": "0.0.1",
- "description": "",
- "main": "server.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "author": "",
- "license": "UNLICENSED",
- "dependencies": {
- "body-parser": "^1.15.2",
- "express": "^4.13.4"
- }
-}
diff --git a/Chapter09/bench-http/measuring-post-performance/server.js b/Chapter09/bench-http/measuring-post-performance/server.js
deleted file mode 100644
index 13bdf4e..0000000
--- a/Chapter09/bench-http/measuring-post-performance/server.js
+++ /dev/null
@@ -1,14 +0,0 @@
-'use strict'
-
-const express = require('express')
-const bodyParser = require('body-parser')
-const app = express()
-
-app.use(bodyParser.json())
-app.use(bodyParser.urlencoded({extended: false}))
-
-app.post('/echo', (req, res) => {
- res.send(req.body)
-})
-
-app.listen(3000)
diff --git a/Chapter09/bench-http/package.json b/Chapter09/bench-http/package.json
deleted file mode 100644
index 13e3c65..0000000
--- a/Chapter09/bench-http/package.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "name": "bench-http",
- "version": "0.0.1",
- "description": "",
- "main": "server.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "author": "",
- "license": "UNLICENSED",
- "dependencies": {
- "express": "^4.13.4"
- }
-}
diff --git a/Chapter09/bench-http/profiling-for-production/package.json b/Chapter09/bench-http/profiling-for-production/package.json
deleted file mode 100644
index e7fb00e..0000000
--- a/Chapter09/bench-http/profiling-for-production/package.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "bench-http",
- "version": "0.0.1",
- "description": "",
- "main": "server.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "author": "",
- "license": "UNLICENSED",
- "dependencies": {
- "express": "^4.13.4",
- "jade": "^1.11.0"
- }
-}
diff --git a/Chapter09/bench-http/profiling-for-production/server.js b/Chapter09/bench-http/profiling-for-production/server.js
deleted file mode 100644
index 2a499b2..0000000
--- a/Chapter09/bench-http/profiling-for-production/server.js
+++ /dev/null
@@ -1,14 +0,0 @@
-'use strict'
-
-const express = require('express')
-const path = require('path')
-const app = express()
-
-app.set('views', path.join(__dirname, 'views'));
-app.set('view engine', 'jade');
-
-app.get('/hello', (req, res) => {
- res.render('hello', { title: 'Express' });
-})
-
-app.listen(3000)
diff --git a/Chapter09/bench-http/profiling-for-production/views/hello.jade b/Chapter09/bench-http/profiling-for-production/views/hello.jade
deleted file mode 100644
index b3dd2e7..0000000
--- a/Chapter09/bench-http/profiling-for-production/views/hello.jade
+++ /dev/null
@@ -1,7 +0,0 @@
-doctype html
-html
- head
- title= title
- link(rel='stylesheet', href='/stylesheets/style.css')
- body
- h1= title
diff --git a/Chapter09/bench-http/server.js b/Chapter09/bench-http/server.js
deleted file mode 100644
index ad8c0d6..0000000
--- a/Chapter09/bench-http/server.js
+++ /dev/null
@@ -1,10 +0,0 @@
-'use strict'
-
-const express = require('express')
-const app = express()
-
-app.get('/hello', (req, res) => {
- res.send('hello world')
-})
-
-app.listen(3000)
diff --git a/Chapter09/hello-server/package.json b/Chapter09/hello-server/package.json
deleted file mode 100644
index 5dfcc8c..0000000
--- a/Chapter09/hello-server/package.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "name": "hello-server",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "David Mark Clements",
- "license": "MIT",
- "dependencies": {
- "express": "^4.14.0",
- "jade": "^1.11.0"
- }
-}
diff --git a/Chapter09/hello-server/server.js b/Chapter09/hello-server/server.js
deleted file mode 100644
index 413b1dc..0000000
--- a/Chapter09/hello-server/server.js
+++ /dev/null
@@ -1,12 +0,0 @@
-const express = require('express')
-const path = require('path')
-const app = express()
-
-app.set('views', path.join(__dirname, 'views'));
-app.set('view engine', 'jade');
-
-app.get('/hello', (req, res) => {
- res.render('hello', { title: 'Express' });
-})
-
-app.listen(3000)
diff --git a/Chapter09/hello-server/views/hello.jade b/Chapter09/hello-server/views/hello.jade
deleted file mode 100644
index b3dd2e7..0000000
--- a/Chapter09/hello-server/views/hello.jade
+++ /dev/null
@@ -1,7 +0,0 @@
-doctype html
-html
- head
- title= title
- link(rel='stylesheet', href='/stylesheets/style.css')
- body
- h1= title
diff --git a/Chapter09/name-server/climem-enabled/index.js b/Chapter09/name-server/climem-enabled/index.js
deleted file mode 100644
index 45485f8..0000000
--- a/Chapter09/name-server/climem-enabled/index.js
+++ /dev/null
@@ -1,16 +0,0 @@
-const http = require('http')
-const starwarsName = require('starwars-names').random
-const names = {}
-
-http.createServer((req, res) => {
- res.end(`Your unique name is: ${createName(req)} \n`)
-}).listen(8080)
-
-function createName () {
- var result = starwarsName()
- if (names[result]) {
- result += names[result]++
- }
- names[result] = 1
- return result
-}
\ No newline at end of file
diff --git a/Chapter09/name-server/climem-enabled/package.json b/Chapter09/name-server/climem-enabled/package.json
deleted file mode 100644
index 4b1d390..0000000
--- a/Chapter09/name-server/climem-enabled/package.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "name": "name-server",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "David Mark Clements",
- "license": "MIT",
- "dependencies": {
- "starwars-names": "^1.6.0"
- },
- "devDependencies": {
- "climem": "^1.0.2"
- }
-}
diff --git a/Chapter09/name-server/index.js b/Chapter09/name-server/index.js
deleted file mode 100644
index 45485f8..0000000
--- a/Chapter09/name-server/index.js
+++ /dev/null
@@ -1,16 +0,0 @@
-const http = require('http')
-const starwarsName = require('starwars-names').random
-const names = {}
-
-http.createServer((req, res) => {
- res.end(`Your unique name is: ${createName(req)} \n`)
-}).listen(8080)
-
-function createName () {
- var result = starwarsName()
- if (names[result]) {
- result += names[result]++
- }
- names[result] = 1
- return result
-}
\ No newline at end of file
diff --git a/Chapter09/name-server/non-leaky/index.js b/Chapter09/name-server/non-leaky/index.js
deleted file mode 100644
index 62f7c4a..0000000
--- a/Chapter09/name-server/non-leaky/index.js
+++ /dev/null
@@ -1,15 +0,0 @@
-const http = require('http')
-const starwarsName = require('starwars-names').random
-const names = {}
-
-http.createServer((req, res) => {
- res.end(`Your unique name is: ${createName(req)} \n`)
-}).listen(8080)
-
-function createName () {
- var result = starwarsName()
- names[result] = names[result] ?
- names[result] + 1 :
- 1
- return result + names[result]
-}
\ No newline at end of file
diff --git a/Chapter09/name-server/non-leaky/package.json b/Chapter09/name-server/non-leaky/package.json
deleted file mode 100644
index cc9bf3f..0000000
--- a/Chapter09/name-server/non-leaky/package.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "name-server",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "David Mark Clements",
- "license": "MIT",
- "dependencies": {
- "sillyname": "^0.1.0"
- }
-}
diff --git a/Chapter09/name-server/package.json b/Chapter09/name-server/package.json
deleted file mode 100644
index 854c33b..0000000
--- a/Chapter09/name-server/package.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "name-server",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "David Mark Clements",
- "license": "MIT",
- "dependencies": {
- "starwars-names": "^1.6.0"
- }
-}
diff --git a/Chapter09/placeholder.deleteme b/Chapter09/placeholder.deleteme
deleted file mode 100644
index e69de29..0000000
diff --git a/Chapter09/sync-opt/bench.js b/Chapter09/sync-opt/bench.js
deleted file mode 100644
index 3b9d63c..0000000
--- a/Chapter09/sync-opt/bench.js
+++ /dev/null
@@ -1,33 +0,0 @@
-'use strict'
-
-const benchmark = require('benchmark')
-const slow = require('./slow')
-const noCollection = require('./no-collections')
-
-const suite = new benchmark.Suite()
-
-const numbers = []
-
-for (let i = 0; i < 1000; i++) {
- numbers.push(Math.random() * i)
-}
-
-suite.add('slow', function () {
- slow(12, numbers)
-})
-
-suite.add('no-collections', function () {
- noCollection(12, numbers)
-})
-
-suite.on('complete', print)
-
-suite.run()
-
-function print () {
- for (var i = 0; i < this.length; i++) {
- console.log(this[i].toString())
- }
-
- console.log('Fastest is', this.filter('fastest').map('name')[0])
-}
diff --git a/Chapter09/sync-opt/checking-optimization-status/bench.js b/Chapter09/sync-opt/checking-optimization-status/bench.js
deleted file mode 100644
index 6562c99..0000000
--- a/Chapter09/sync-opt/checking-optimization-status/bench.js
+++ /dev/null
@@ -1,42 +0,0 @@
-'use strict'
-
-const benchmark = require('benchmark')
-const slow = require('./slow')
-const noCollection = require('./no-collections')
-const noTryCatch = require('./no-try-catch')
-const funcStatus = require('./func-status')
-
-const suite = new benchmark.Suite()
-
-const numbers = []
-
-for (let i = 0; i < 1000; i++) {
- numbers.push(Math.random() * i)
-}
-
-suite.add('slow', function () {
- slow(12, numbers)
-})
-
-suite.add('no-collections', function () {
- noCollection(12, numbers)
-})
-
-suite.add('no-try-catch', function () {
- noTryCatch(12, numbers)
-})
-
-suite.on('complete', print)
-
-suite.run()
-
-function print () {
- for (var i = 0; i < this.length; i++) {
- console.log(this[i].toString())
- }
- funcStatus('slow', slow)
- funcStatus('noCollection', noCollection)
- funcStatus('noTryCatch', noTryCatch)
-
- console.log('Fastest is', this.filter('fastest').map('name')[0])
-}
diff --git a/Chapter09/sync-opt/checking-optimization-status/func-status.js b/Chapter09/sync-opt/checking-optimization-status/func-status.js
deleted file mode 100644
index 0c66940..0000000
--- a/Chapter09/sync-opt/checking-optimization-status/func-status.js
+++ /dev/null
@@ -1,15 +0,0 @@
-'use strict'
-
-function printStatus (name, fn) {
- switch(%GetOptimizationStatus(fn)) {
- case 1: console.log(`${name} function is optimized`); break;
- case 2: console.log(`${name} function is not optimized`); break;
- case 3: console.log(`${name} function is always optimized`); break;
- case 4: console.log(`${name} function is never optimized`); break;
- case 6: console.log(`${name} function is maybe deoptimized`); break;
- case 7: console.log(`${name} function is optimized by TurboFan`); break;
- default: console.log(`${name} function optimization status unknown`); break;
- }
-}
-
-module.exports = printStatus
diff --git a/Chapter09/sync-opt/checking-optimization-status/no-collections-vs-no-try-catch.js b/Chapter09/sync-opt/checking-optimization-status/no-collections-vs-no-try-catch.js
deleted file mode 100644
index 651a1a7..0000000
--- a/Chapter09/sync-opt/checking-optimization-status/no-collections-vs-no-try-catch.js
+++ /dev/null
@@ -1,28 +0,0 @@
-'use strict'
-
-const benchmark = require('benchmark')
-const noCollection = require('./no-collections')
-
-const suite = new benchmark.Suite()
-
-const numbers = []
-
-for (let i = 0; i < 1000; i++) {
- numbers.push(Math.random() * i)
-}
-
-suite.add('no-collections', function () {
- noCollection(12, numbers)
-})
-
-suite.on('complete', print)
-
-suite.run()
-
-function print () {
- for (var i = 0; i < this.length; i++) {
- console.log(this[i].toString())
- }
-
- console.log('Fastest is', this.filter('fastest').map('name')[0])
-}
diff --git a/Chapter09/sync-opt/checking-optimization-status/no-collections.js b/Chapter09/sync-opt/checking-optimization-status/no-collections.js
deleted file mode 100644
index e93243c..0000000
--- a/Chapter09/sync-opt/checking-optimization-status/no-collections.js
+++ /dev/null
@@ -1,15 +0,0 @@
-'use strict'
-
-function divideByAndSum (num, array) {
- var result = 0
- try {
- for (var i = 0; i < array.length; i++) {
- result += array[i] / num
- }
- } catch (err) {
- // to guard for division by zero
- return 0
- }
-}
-
-module.exports = divideByAndSum
diff --git a/Chapter09/sync-opt/checking-optimization-status/no-try-catch-bench.js b/Chapter09/sync-opt/checking-optimization-status/no-try-catch-bench.js
deleted file mode 100644
index 91ffffd..0000000
--- a/Chapter09/sync-opt/checking-optimization-status/no-try-catch-bench.js
+++ /dev/null
@@ -1,28 +0,0 @@
-'use strict'
-
-const benchmark = require('benchmark')
-const noTryCatch = require('./no-try-catch')
-
-const suite = new benchmark.Suite()
-
-const numbers = []
-
-for (let i = 0; i < 1000; i++) {
- numbers.push(Math.random() * i)
-}
-
-suite.add('no-try-catch', function () {
- noTryCatch(12, numbers)
-})
-
-suite.on('complete', print)
-
-suite.run()
-
-function print () {
- for (var i = 0; i < this.length; i++) {
- console.log(this[i].toString())
- }
-
- console.log('Fastest is', this.filter('fastest').map('name')[0])
-}
diff --git a/Chapter09/sync-opt/checking-optimization-status/no-try-catch.js b/Chapter09/sync-opt/checking-optimization-status/no-try-catch.js
deleted file mode 100644
index 213026b..0000000
--- a/Chapter09/sync-opt/checking-optimization-status/no-try-catch.js
+++ /dev/null
@@ -1,17 +0,0 @@
-'use strict'
-
-function divideByAndSum (num, array) {
- var result = 0
-
- if (num === 0) {
- return 0
- }
-
- for (var i = 0; i < array.length; i++) {
- result += array[i] / num
- }
-
- return result
-}
-
-module.exports = divideByAndSum
diff --git a/Chapter09/sync-opt/checking-optimization-status/slow.js b/Chapter09/sync-opt/checking-optimization-status/slow.js
deleted file mode 100644
index f3f38f0..0000000
--- a/Chapter09/sync-opt/checking-optimization-status/slow.js
+++ /dev/null
@@ -1,16 +0,0 @@
-'use strict'
-
-function divideByAndSum (num, array) {
- try {
- array.map(function (item) {
- return item / num
- }).reduce(function (acc, item) {
- return acc + item
- }, 0)
- } catch (err) {
- // to guard for division by zero
- return 0
- }
-}
-
-module.exports = divideByAndSum
diff --git a/Chapter09/sync-opt/function-inlining/bench.js b/Chapter09/sync-opt/function-inlining/bench.js
deleted file mode 100644
index 01ec5f7..0000000
--- a/Chapter09/sync-opt/function-inlining/bench.js
+++ /dev/null
@@ -1,38 +0,0 @@
-'use strict'
-
-const benchmark = require('benchmark')
-const slow = require('./slow')
-const noCollection = require('./no-collections')
-const noTryCatch = require('./no-try-catch')
-
-const suite = new benchmark.Suite()
-
-const numbers = []
-
-for (let i = 0; i < 1000; i++) {
- numbers.push(Math.random() * i)
-}
-
-suite.add('slow', function () {
- slow(12, numbers)
-})
-
-suite.add('no-collections', function () {
- noCollection(12, numbers)
-})
-
-suite.add('no-try-catch', function () {
- noTryCatch(12, numbers)
-})
-
-suite.on('complete', print)
-
-suite.run()
-
-function print () {
- for (var i = 0; i < this.length; i++) {
- console.log(this[i].toString())
- }
-
- console.log('Fastest is', this.filter('fastest').map('name')[0])
-}
diff --git a/Chapter09/sync-opt/function-inlining/initial-bench.js b/Chapter09/sync-opt/function-inlining/initial-bench.js
deleted file mode 100644
index 03021cf..0000000
--- a/Chapter09/sync-opt/function-inlining/initial-bench.js
+++ /dev/null
@@ -1,29 +0,0 @@
-'use strict'
-
-const benchmark = require('benchmark')
-const noCollection = require('./no-collections')
-const noTryCatch = require('./no-try-catch')
-
-const suite = new benchmark.Suite()
-
-const numbers = []
-
-for (let i = 0; i < 1000; i++) {
- numbers.push(Math.random() * i)
-}
-
-suite.add('no-collections', function () {
- noCollection(12, numbers)
-})
-
-suite.on('complete', print)
-
-suite.run()
-
-function print () {
- for (var i = 0; i < this.length; i++) {
- console.log(this[i].toString())
- }
-
- console.log('Fastest is', this.filter('fastest').map('name')[0])
-}
diff --git a/Chapter09/sync-opt/function-inlining/no-collections-vs-no-try-catch.js b/Chapter09/sync-opt/function-inlining/no-collections-vs-no-try-catch.js
deleted file mode 100644
index 651a1a7..0000000
--- a/Chapter09/sync-opt/function-inlining/no-collections-vs-no-try-catch.js
+++ /dev/null
@@ -1,28 +0,0 @@
-'use strict'
-
-const benchmark = require('benchmark')
-const noCollection = require('./no-collections')
-
-const suite = new benchmark.Suite()
-
-const numbers = []
-
-for (let i = 0; i < 1000; i++) {
- numbers.push(Math.random() * i)
-}
-
-suite.add('no-collections', function () {
- noCollection(12, numbers)
-})
-
-suite.on('complete', print)
-
-suite.run()
-
-function print () {
- for (var i = 0; i < this.length; i++) {
- console.log(this[i].toString())
- }
-
- console.log('Fastest is', this.filter('fastest').map('name')[0])
-}
diff --git a/Chapter09/sync-opt/function-inlining/no-collections.js b/Chapter09/sync-opt/function-inlining/no-collections.js
deleted file mode 100644
index e93243c..0000000
--- a/Chapter09/sync-opt/function-inlining/no-collections.js
+++ /dev/null
@@ -1,15 +0,0 @@
-'use strict'
-
-function divideByAndSum (num, array) {
- var result = 0
- try {
- for (var i = 0; i < array.length; i++) {
- result += array[i] / num
- }
- } catch (err) {
- // to guard for division by zero
- return 0
- }
-}
-
-module.exports = divideByAndSum
diff --git a/Chapter09/sync-opt/function-inlining/no-try-catch-bench.js b/Chapter09/sync-opt/function-inlining/no-try-catch-bench.js
deleted file mode 100644
index 91ffffd..0000000
--- a/Chapter09/sync-opt/function-inlining/no-try-catch-bench.js
+++ /dev/null
@@ -1,28 +0,0 @@
-'use strict'
-
-const benchmark = require('benchmark')
-const noTryCatch = require('./no-try-catch')
-
-const suite = new benchmark.Suite()
-
-const numbers = []
-
-for (let i = 0; i < 1000; i++) {
- numbers.push(Math.random() * i)
-}
-
-suite.add('no-try-catch', function () {
- noTryCatch(12, numbers)
-})
-
-suite.on('complete', print)
-
-suite.run()
-
-function print () {
- for (var i = 0; i < this.length; i++) {
- console.log(this[i].toString())
- }
-
- console.log('Fastest is', this.filter('fastest').map('name')[0])
-}
diff --git a/Chapter09/sync-opt/function-inlining/no-try-catch.js b/Chapter09/sync-opt/function-inlining/no-try-catch.js
deleted file mode 100644
index 213026b..0000000
--- a/Chapter09/sync-opt/function-inlining/no-try-catch.js
+++ /dev/null
@@ -1,17 +0,0 @@
-'use strict'
-
-function divideByAndSum (num, array) {
- var result = 0
-
- if (num === 0) {
- return 0
- }
-
- for (var i = 0; i < array.length; i++) {
- result += array[i] / num
- }
-
- return result
-}
-
-module.exports = divideByAndSum
diff --git a/Chapter09/sync-opt/function-inlining/slow.js b/Chapter09/sync-opt/function-inlining/slow.js
deleted file mode 100644
index f3f38f0..0000000
--- a/Chapter09/sync-opt/function-inlining/slow.js
+++ /dev/null
@@ -1,16 +0,0 @@
-'use strict'
-
-function divideByAndSum (num, array) {
- try {
- array.map(function (item) {
- return item / num
- }).reduce(function (acc, item) {
- return acc + item
- }, 0)
- } catch (err) {
- // to guard for division by zero
- return 0
- }
-}
-
-module.exports = divideByAndSum
diff --git a/Chapter09/sync-opt/initial-bench.js b/Chapter09/sync-opt/initial-bench.js
deleted file mode 100644
index 3801655..0000000
--- a/Chapter09/sync-opt/initial-bench.js
+++ /dev/null
@@ -1,28 +0,0 @@
-'use strict'
-
-const benchmark = require('benchmark')
-const slow = require('./slow')
-
-const suite = new benchmark.Suite()
-
-const numbers = []
-
-for (let i = 0; i < 1000; i++) {
- numbers.push(Math.random() * i)
-}
-
-suite.add('slow', function () {
- slow(12, numbers)
-})
-
-suite.on('complete', print)
-
-suite.run()
-
-function print () {
- for (var i = 0; i < this.length; i++) {
- console.log(this[i].toString())
- }
-
- console.log('Fastest is', this.filter('fastest').map('name')[0])
-}
diff --git a/Chapter09/sync-opt/no-collections.js b/Chapter09/sync-opt/no-collections.js
deleted file mode 100644
index e93243c..0000000
--- a/Chapter09/sync-opt/no-collections.js
+++ /dev/null
@@ -1,15 +0,0 @@
-'use strict'
-
-function divideByAndSum (num, array) {
- var result = 0
- try {
- for (var i = 0; i < array.length; i++) {
- result += array[i] / num
- }
- } catch (err) {
- // to guard for division by zero
- return 0
- }
-}
-
-module.exports = divideByAndSum
diff --git a/Chapter09/sync-opt/package.json b/Chapter09/sync-opt/package.json
deleted file mode 100644
index b0d4c6d..0000000
--- a/Chapter09/sync-opt/package.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "name": "sync-opt",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "author": "",
- "license": "ISC",
- "dependencies": {
- "benchmark": "^2.1.0"
- }
-}
diff --git a/Chapter09/sync-opt/slow.js b/Chapter09/sync-opt/slow.js
deleted file mode 100644
index f3f38f0..0000000
--- a/Chapter09/sync-opt/slow.js
+++ /dev/null
@@ -1,16 +0,0 @@
-'use strict'
-
-function divideByAndSum (num, array) {
- try {
- array.map(function (item) {
- return item / num
- }).reduce(function (acc, item) {
- return acc + item
- }, 0)
- } catch (err) {
- // to guard for division by zero
- return 0
- }
-}
-
-module.exports = divideByAndSum
diff --git a/Chapter10/adding-a-queue-based-service/micro/adderservice/index.js b/Chapter10/adding-a-queue-based-service/micro/adderservice/index.js
deleted file mode 100644
index 1f2d9cf..0000000
--- a/Chapter10/adding-a-queue-based-service/micro/adderservice/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict'
-
-const wiring = require('./wiring')
-const service = require('./service')()
-
-
-wiring(service)
diff --git a/Chapter10/adding-a-queue-based-service/micro/adderservice/package.json b/Chapter10/adding-a-queue-based-service/micro/adderservice/package.json
deleted file mode 100644
index 7cef23a..0000000
--- a/Chapter10/adding-a-queue-based-service/micro/adderservice/package.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "name": "adderservice",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "tap test"
- },
- "keywords": [],
- "author": "Peter Elger",
- "license": "ISC",
- "dependencies": {
- "restify": "^4.3.0"
- },
- "devDependencies": {
- "tap": "^10.3.1"
- }
-}
diff --git a/Chapter10/adding-a-queue-based-service/micro/adderservice/service.js b/Chapter10/adding-a-queue-based-service/micro/adderservice/service.js
deleted file mode 100644
index 9d0d175..0000000
--- a/Chapter10/adding-a-queue-based-service/micro/adderservice/service.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict'
-
-module.exports = service
-
-function service () {
- function add (args, cb) {
- const {first, second} = args
- const result = (parseInt(first, 10) + parseInt(second, 10))
- cb(null, {result: result.toString()})
- }
-
- return { add }
-}
diff --git a/Chapter10/adding-a-queue-based-service/micro/adderservice/test/index.js b/Chapter10/adding-a-queue-based-service/micro/adderservice/test/index.js
deleted file mode 100644
index 32c45e5..0000000
--- a/Chapter10/adding-a-queue-based-service/micro/adderservice/test/index.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict'
-
-const {test} = require('tap')
-const service = require('../service')()
-
-test('test add', (t) => {
- t.plan(2)
-
- service.add({first: 1, second: 2}, (err, answer) => {
- t.error(err)
- t.same(answer, {result: 3})
- })
-})
diff --git a/Chapter10/adding-a-queue-based-service/micro/adderservice/wiring.js b/Chapter10/adding-a-queue-based-service/micro/adderservice/wiring.js
deleted file mode 100644
index 0ed018c..0000000
--- a/Chapter10/adding-a-queue-based-service/micro/adderservice/wiring.js
+++ /dev/null
@@ -1,27 +0,0 @@
-'use strict'
-
-const restify = require('restify')
-const { ADDERSERVICE_SERVICE_PORT } = process.env
-
-module.exports = wiring
-
-function wiring (service) {
- const server = restify.createServer()
-
- server.get('/add/:first/:second', (req, res, next) => {
- service.add(req.params, (err, result) => {
- if (err) {
- res.send(err)
- next()
- return
- }
- res.send(200, result)
- next()
- })
- })
-
- server.listen(ADDERSERVICE_SERVICE_PORT, '0.0.0.0', () => {
- console.log('%s listening at %s', server.name, server.url)
- })
-}
-
diff --git a/Chapter10/adding-a-queue-based-service/micro/auditservice/index.js b/Chapter10/adding-a-queue-based-service/micro/auditservice/index.js
deleted file mode 100644
index 40a4677..0000000
--- a/Chapter10/adding-a-queue-based-service/micro/auditservice/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-'use strict'
-
-const wiring = require('./wiring')
-const service = require('./service')()
-
-wiring(service)
diff --git a/Chapter10/adding-a-queue-based-service/micro/auditservice/package.json b/Chapter10/adding-a-queue-based-service/micro/auditservice/package.json
deleted file mode 100644
index d93b31e..0000000
--- a/Chapter10/adding-a-queue-based-service/micro/auditservice/package.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "name": "auditservice",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "Peter Elger",
- "license": "ISC",
- "dependencies": {
- "concordant": "^0.2.1",
- "mongo": "^0.1.0",
- "restify": "^4.3.0"
- }
-}
diff --git a/Chapter10/adding-a-queue-based-service/micro/auditservice/service.js b/Chapter10/adding-a-queue-based-service/micro/auditservice/service.js
deleted file mode 100644
index c416e4c..0000000
--- a/Chapter10/adding-a-queue-based-service/micro/auditservice/service.js
+++ /dev/null
@@ -1,74 +0,0 @@
-'use strict'
-
-const { MongoClient } = require('mongodb')
-const { dns } = require('concordant')()
-
-module.exports = service
-
-function service () {
-
- var db
-
- setup()
-
- function setup () {
- const mongo = '_main._tcp.mongo.micro.svc.cluster.local'
-
- dns.resolve(mongo, (err, locs) => {
- if (err) {
- console.error(err)
- return
- }
- const { host, port } = locs[0]
- const url = `mongodb://${host}:${port}/audit`
- MongoClient.connect(url, (err, client) => {
- if (err) {
- console.log('failed to connect to MongoDB retrying in 100ms')
- setTimeout(setup, 100)
- return
- }
- db = client
- db.on('close', () => db = null)
- })
- })
- }
-
- function append (args, cb) {
- if (!db) {
- cb(Error('No database connection'))
- return
- }
- const audit = db.collection('audit')
- const data = {
- ts: Date.now(),
- calc: args.calc,
- result: args.calcResult
- }
-
- audit.insert(data, (err, result) => {
- if (err) {
- cb(err)
- return
- }
- cb(null, {result: result.toString()})
- })
- }
-
- function list (args, cb) {
- if (!db) {
- cb(Error('No database connection'))
- return
- }
- const audit = db.collection('audit')
- audit.find({}, {limit: 10}).toArray((err, docs) => {
- if (err) {
- cb(err)
- return
- }
- cb(null, {list: docs})
- })
- }
-
- return { append, list }
-}
-
diff --git a/Chapter10/adding-a-queue-based-service/micro/auditservice/wiring.js b/Chapter10/adding-a-queue-based-service/micro/auditservice/wiring.js
deleted file mode 100644
index b18dce8..0000000
--- a/Chapter10/adding-a-queue-based-service/micro/auditservice/wiring.js
+++ /dev/null
@@ -1,39 +0,0 @@
-'use strict'
-
-const restify = require('restify')
-const { AUDITSERVICE_SERVICE_PORT } = process.env
-
-module.exports = wiring
-
-function wiring (service) {
- const server = restify.createServer()
-
- server.use(restify.bodyParser())
-
- server.post('/append', (req, res, next) => {
- service.append(req.params, (err, result) => {
- if (err) {
- res.send(err)
- return
- }
- res.send(result)
- next()
- })
- })
-
- server.get('/list', (req, res, next) => {
- service.list(req.params, (err, result) => {
- if (err) {
- res.send(err)
- return
- }
- res.send(200, result)
- next()
- })
- })
-
- server.listen(AUDITSERVICE_SERVICE_PORT, '0.0.0.0', () => {
- console.log('%s listening at %s', server.name, server.url)
- })
-}
-
diff --git a/Chapter10/adding-a-queue-based-service/micro/eventservice/index.js b/Chapter10/adding-a-queue-based-service/micro/eventservice/index.js
deleted file mode 100644
index df3a380..0000000
--- a/Chapter10/adding-a-queue-based-service/micro/eventservice/index.js
+++ /dev/null
@@ -1,5 +0,0 @@
-'use strict'
-
-const wiring = require('./wiring')
-const service = require('./service')()
-wiring(service)
diff --git a/Chapter10/adding-a-queue-based-service/micro/eventservice/package.json b/Chapter10/adding-a-queue-based-service/micro/eventservice/package.json
deleted file mode 100644
index d8a7d4b..0000000
--- a/Chapter10/adding-a-queue-based-service/micro/eventservice/package.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "name": "eventservice",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "Peter Elger",
- "license": "ISC",
- "dependencies": {
- "concordant": "^0.2.1",
- "mongo": "^0.1.0",
- "redis": "^2.6.5",
- "restify": "^4.3.0"
- }
-}
diff --git a/Chapter10/adding-a-queue-based-service/micro/eventservice/service.js b/Chapter10/adding-a-queue-based-service/micro/eventservice/service.js
deleted file mode 100644
index 4082d3e..0000000
--- a/Chapter10/adding-a-queue-based-service/micro/eventservice/service.js
+++ /dev/null
@@ -1,80 +0,0 @@
-'use strict'
-
-const { MongoClient } = require('mongodb')
-const { dns } = require('concordant')()
-
-module.exports = service
-
-function service () {
- var db
-
- setup()
-
- function setup () {
- const mongo = '_main._tcp.mongo.micro.svc.cluster.local'
-
- dns.resolve(mongo, (err, locs) => {
- if (err) {
- console.error(err)
- return
- }
- const { host, port } = locs[0]
- const url = `mongodb://${host}:${port}/events`
- MongoClient.connect(url, (err, client) => {
- if (err) {
- console.log('failed to connect to MongoDB retrying in 100ms')
- setTimeout(setup, 100)
- return
- }
- db = client
- db.on('close', () => db = null)
- })
- })
- }
-
- function record (args, cb) {
- if (!db) {
- cb(Error('No database connection'))
- return
- }
- const events = db.collection('events')
- const data = {
- ts: Date.now(),
- eventType: args.type,
- url: args.url
- }
- events.insert(data, (err, result) => {
- if (err) {
- cb(err)
- return
- }
- cb(null, result)
- })
- }
-
- function summary (args, cb) {
- if (!db) {
- cb(Error('No database connection'))
- return
- }
- const summary = {}
- const events = db.collection('events')
- events.find({}).toArray( (err, docs) => {
- if (err) return cb(err)
-
- docs.forEach(function (doc) {
- if (!(summary[doc.url])) {
- summary[doc.url] = 1
- } else {
- summary[doc.url]++
- }
- })
- cb(null, summary)
- })
- }
-
- return {
- record: record,
- summary: summary
- }
-}
diff --git a/Chapter10/adding-a-queue-based-service/micro/eventservice/wiring.js b/Chapter10/adding-a-queue-based-service/micro/eventservice/wiring.js
deleted file mode 100644
index b04ab35..0000000
--- a/Chapter10/adding-a-queue-based-service/micro/eventservice/wiring.js
+++ /dev/null
@@ -1,53 +0,0 @@
-'use strict'
-
-const { dns } = require('concordant')()
-const redis = require('redis')
-const QNAME = 'eventservice'
-
-module.exports = wiring
-
-function wiring (service) {
-
- const endpoint = '_main._tcp.redis.micro.svc.cluster.local'
-
- dns.resolve(endpoint, (err, locs) => {
- if (err) {
- console.log(err)
- return
- }
- const { port, host } = locs[0]
- pullFromQueue(redis.createClient(port, host))
- })
-
- function pullFromQueue (client) {
- client.brpop(QNAME, 5, function (err, data) {
- if (err) console.error(err)
- if (err || !data) {
- pullFromQueue(client)
- return
- }
- const msg = JSON.parse(data[1])
- const { action, returnPath } = msg
- const cmd = service[action]
- if (typeof cmd !== 'function') {
- pullFromQueue(client)
- return
- }
- cmd(msg, (err, result) => {
- if (err) {
- console.error(err)
- pullFromQueue(client)
- return
- }
- if (!returnPath) {
- pullFromQueue(client)
- return
- }
- client.lpush(returnPath, JSON.stringify(result), (err) => {
- if (err) console.error(err)
- pullFromQueue(client)
- })
- })
- })
- }
-}
diff --git a/Chapter10/adding-a-queue-based-service/micro/fuge/fuge.yml b/Chapter10/adding-a-queue-based-service/micro/fuge/fuge.yml
deleted file mode 100644
index 839ba34..0000000
--- a/Chapter10/adding-a-queue-based-service/micro/fuge/fuge.yml
+++ /dev/null
@@ -1,45 +0,0 @@
-fuge_global:
- run_containers: true
- dns_enabled: true
- dns_host: 127.0.0.1
- dns_port: 53053
- dns_suffix: svc.cluster.local
- dns_namespace: micro
- tail: true
- monitor: true
- monitor_excludes:
- - '**/node_modules/**'
- - '**/.git/**'
- - '**/*.log'
-adderservice:
- type: node
- path: ../adderservice
- run: node index.js
- ports:
- - main=8080
-auditservice:
- type: process
- path: ../auditservice
- run: 'node index.js'
- ports:
- - main=8081
-eventservice:
- type: process
- path: ../eventservice
- run: 'node index.js'
-webapp:
- type: process
- path: ../webapp
- run: npm start
- ports:
- - http=3000
-mongo:
- image: mongo
- type: container
- ports:
- - main=27017:27017
-redis:
- image: redis
- type: container
- ports:
- - main=6379:6379
diff --git a/Chapter10/adding-a-queue-based-service/micro/report/env.js b/Chapter10/adding-a-queue-based-service/micro/report/env.js
deleted file mode 100644
index a4d26e9..0000000
--- a/Chapter10/adding-a-queue-based-service/micro/report/env.js
+++ /dev/null
@@ -1,17 +0,0 @@
-'use strict'
-
-// provides environment variable setup for concordant
-
-const env = {
- DNS_NAMESPACE: 'micro',
- DNS_SUFFIX: 'svc.cluster.local'
-}
-
-if (process.env.NODE_ENV !== 'production') {
- Object.assign(env, {
- DNS_HOST: '127.0.0.1',
- DNS_PORT: '53053'
- })
-}
-
-Object.assign(process.env, env)
\ No newline at end of file
diff --git a/Chapter10/adding-a-queue-based-service/micro/report/index.js b/Chapter10/adding-a-queue-based-service/micro/report/index.js
deleted file mode 100644
index b65b65a..0000000
--- a/Chapter10/adding-a-queue-based-service/micro/report/index.js
+++ /dev/null
@@ -1,43 +0,0 @@
-'use strict'
-require('./env')
-const { dns } = require('concordant')()
-const redis = require('redis')
-const CliTable = require('cli-table')
-const QNAME = 'eventservice'
-const RESPONSE_QUEUE = 'summary'
-const ENDPOINT = '_main._tcp.redis.micro.svc.cluster.local'
-
-dns.resolve(ENDPOINT, report)
-
-function report (err, locs) {
- if (err) { return console.log(err) }
- const { port, host } = locs[0]
- const client = redis.createClient(port, host)
- const event = JSON.stringify({
- action: 'summary',
- returnPath: RESPONSE_QUEUE
- })
-
- client.lpush(QNAME, event, (err) => {
- if (err) {
- console.error(err)
- return
- }
-
- client.brpop(RESPONSE_QUEUE, 5, (err, data) => {
- if (err) {
- console.error(err)
- return
- }
- const summary = JSON.parse(data[1])
- const cols = Object.keys(summary).map((url) => [url, summary[url]])
- const table = new CliTable({
- head: ['url', 'count'],
- colWidths: [50, 10]
- })
- table.push(...cols)
- console.log(table.toString())
- client.quit()
- })
- })
-}
\ No newline at end of file
diff --git a/Chapter10/adding-a-queue-based-service/micro/report/package.json b/Chapter10/adding-a-queue-based-service/micro/report/package.json
deleted file mode 100644
index f22e52e..0000000
--- a/Chapter10/adding-a-queue-based-service/micro/report/package.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "name": "report",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "Peter Elger",
- "license": "ISC",
- "dependencies": {
- "cli-table": "^0.3.1",
- "concordant": "^0.2.1",
- "redis": "^2.6.5"
- }
-}
diff --git a/Chapter10/adding-a-queue-based-service/micro/webapp/app.js b/Chapter10/adding-a-queue-based-service/micro/webapp/app.js
deleted file mode 100644
index eef315b..0000000
--- a/Chapter10/adding-a-queue-based-service/micro/webapp/app.js
+++ /dev/null
@@ -1,52 +0,0 @@
-var express = require('express')
-var path = require('path')
-var favicon = require('serve-favicon')
-var logger = require('morgan')
-var cookieParser = require('cookie-parser')
-var bodyParser = require('body-parser')
-var eventLogger = require('./lib/event-logger')
-
-var index = require('./routes/index')
-var users = require('./routes/users')
-var add = require('./routes/add')
-var audit = require('./routes/audit')
-
-var app = express()
-
-// view engine setup
-app.set('views', path.join(__dirname, 'views'))
-app.set('view engine', 'ejs')
-
-// uncomment after placing your favicon in /public
-// app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
-app.use(eventLogger())
-app.use(logger('dev'))
-app.use(bodyParser.json())
-app.use(bodyParser.urlencoded({ extended: false }))
-app.use(cookieParser())
-app.use(express.static(path.join(__dirname, 'public')))
-
-app.use('/', index)
-app.use('/users', users)
-app.use('/add', add)
-app.use('/audit', audit)
-
-// catch 404 and forward to error handler
-app.use(function (req, res, next) {
- var err = new Error('Not Found')
- err.status = 404
- next(err)
-})
-
-// error handler
-app.use(function (err, req, res, next) {
- // set locals, only providing error in development
- res.locals.message = err.message
- res.locals.error = req.app.get('env') === 'development' ? err : {}
-
- // render the error page
- res.status(err.status || 500)
- res.render('error')
-})
-
-module.exports = app
diff --git a/Chapter10/adding-a-queue-based-service/micro/webapp/bin/www b/Chapter10/adding-a-queue-based-service/micro/webapp/bin/www
deleted file mode 100644
index 8715eeb..0000000
--- a/Chapter10/adding-a-queue-based-service/micro/webapp/bin/www
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/usr/bin/env node
-
-/**
- * Module dependencies.
- */
-
-var app = require('../app');
-var debug = require('debug')('webapp:server');
-var http = require('http');
-
-/**
- * Get port from environment and store in Express.
- */
-
-var port = normalizePort(process.env.PORT || '3000');
-app.set('port', port);
-
-/**
- * Create HTTP server.
- */
-
-var server = http.createServer(app);
-
-/**
- * Listen on provided port, on all network interfaces.
- */
-
-server.listen(port);
-server.on('error', onError);
-server.on('listening', onListening);
-
-/**
- * Normalize a port into a number, string, or false.
- */
-
-function normalizePort(val) {
- var port = parseInt(val, 10);
-
- if (isNaN(port)) {
- // named pipe
- return val;
- }
-
- if (port >= 0) {
- // port number
- return port;
- }
-
- return false;
-}
-
-/**
- * Event listener for HTTP server "error" event.
- */
-
-function onError(error) {
- if (error.syscall !== 'listen') {
- throw error;
- }
-
- var bind = typeof port === 'string'
- ? 'Pipe ' + port
- : 'Port ' + port;
-
- // handle specific listen errors with friendly messages
- switch (error.code) {
- case 'EACCES':
- console.error(bind + ' requires elevated privileges');
- process.exit(1);
- break;
- case 'EADDRINUSE':
- console.error(bind + ' is already in use');
- process.exit(1);
- break;
- default:
- throw error;
- }
-}
-
-/**
- * Event listener for HTTP server "listening" event.
- */
-
-function onListening() {
- var addr = server.address();
- var bind = typeof addr === 'string'
- ? 'pipe ' + addr
- : 'port ' + addr.port;
- debug('Listening on ' + bind);
-}
diff --git a/Chapter10/adding-a-queue-based-service/micro/webapp/lib/event-logger.js b/Chapter10/adding-a-queue-based-service/micro/webapp/lib/event-logger.js
deleted file mode 100644
index 0140d3f..0000000
--- a/Chapter10/adding-a-queue-based-service/micro/webapp/lib/event-logger.js
+++ /dev/null
@@ -1,40 +0,0 @@
-'use strict'
-
-const { dns } = require('concordant')()
-const redis = require('redis')
-
-module.exports = eventLogger
-
-function eventLogger () {
- const QNAME = 'eventservice'
- var client
-
- const endpoint = '_main._tcp.redis.micro.svc.cluster.local'
- dns.resolve(endpoint, (err, locs) => {
- if (err) {
- console.error(err)
- return
- }
- const { port, host } = locs[0]
- client = redis.createClient(port, host)
- })
-
- function middleware (req, res, next) {
- if (!client) {
- console.log('client not ready, waiting 100ms')
- setTimeout(middleware, 100, req, res, next)
- return
- }
- const event = {
- action: 'record',
- type: 'page',
- url: `${req.protocol}://${req.get('host')}${req.originalUrl}`
- }
- client.lpush(QNAME, JSON.stringify(event), (err) => {
- if (err) console.error(err)
- next()
- })
- }
-
- return middleware
-}
diff --git a/Chapter10/adding-a-queue-based-service/micro/webapp/package.json b/Chapter10/adding-a-queue-based-service/micro/webapp/package.json
deleted file mode 100644
index 1c45acf..0000000
--- a/Chapter10/adding-a-queue-based-service/micro/webapp/package.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "webapp",
- "version": "0.0.0",
- "private": true,
- "scripts": {
- "start": "node ./bin/www"
- },
- "dependencies": {
- "body-parser": "~1.16.0",
- "concordant": "^0.2.1",
- "cookie-parser": "~1.4.3",
- "debug": "~2.6.0",
- "ejs": "~2.5.5",
- "express": "~4.14.1",
- "morgan": "~1.7.0",
- "mu": "^2.1.2",
- "restify": "^4.3.0",
- "serve-favicon": "~2.3.2"
- }
-}
diff --git a/Chapter10/adding-a-queue-based-service/micro/webapp/public/stylesheets/style.css b/Chapter10/adding-a-queue-based-service/micro/webapp/public/stylesheets/style.css
deleted file mode 100644
index 9453385..0000000
--- a/Chapter10/adding-a-queue-based-service/micro/webapp/public/stylesheets/style.css
+++ /dev/null
@@ -1,8 +0,0 @@
-body {
- padding: 50px;
- font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
-}
-
-a {
- color: #00B7FF;
-}
diff --git a/Chapter10/adding-a-queue-based-service/micro/webapp/routes/add.js b/Chapter10/adding-a-queue-based-service/micro/webapp/routes/add.js
deleted file mode 100644
index 3ab03cc..0000000
--- a/Chapter10/adding-a-queue-based-service/micro/webapp/routes/add.js
+++ /dev/null
@@ -1,68 +0,0 @@
-'use strict'
-
-const { Router } = require('express')
-const restify = require('restify')
-const { dns } = require('concordant')()
-const router = Router()
-var clients
-
-router.get('/', function (req, res) {
- res.render('add', { first: 0, second: 0, result: 0 })
-})
-
-router.post('/calculate', resolve, respond)
-
-function resolve (req, res, next) {
- if (clients) {
- next()
- return
- }
- const adderservice = `_main._tcp.adderservice.micro.svc.cluster.local`
- const auditservice = `_main._tcp.auditservice.micro.svc.cluster.local`
- dns.resolve(adderservice, (err, locs) => {
- if (err) {
- next(err)
- return
- }
- const { host, port } = locs[0]
- const adder = `${host}:${port}`
- dns.resolve(auditservice, (err, locs) => {
- if (err) {
- next(err)
- return
- }
- const { host, port } = locs[0]
- const audit = `${host}:${port}`
- clients = {
- adder: restify.createJSONClient({url: `http://${adder}`}),
- audit: restify.createJSONClient({url: `http://${audit}`})
- }
- next()
- })
- })
-}
-
-function respond (req, res, next) {
- const { first, second } = req.body
- clients.adder.get(
- `/add/${first}/${second}`,
- (err, svcReq, svcRes, data) => {
- if (err) {
- next(err)
- return
- }
-
- const { result } = data
- clients.audit.post('/append', {
- calc: first + '+' + second,
- calcResult: result
- }, (err) => {
- if (err) console.error(err)
- })
-
- res.render('add', { first, second, result })
- }
- )
-}
-
-module.exports = router
diff --git a/Chapter10/adding-a-queue-based-service/micro/webapp/routes/audit.js b/Chapter10/adding-a-queue-based-service/micro/webapp/routes/audit.js
deleted file mode 100644
index a083eef..0000000
--- a/Chapter10/adding-a-queue-based-service/micro/webapp/routes/audit.js
+++ /dev/null
@@ -1,37 +0,0 @@
-'use strict'
-
-const { Router } = require('express')
-const restify = require('restify')
-const { dns } = require('concordant')()
-const router = Router()
-var client
-
-router.get('/', resolve, respond)
-
-function resolve (req, res, next) {
- if (client) {
- next()
- return
- }
- const auditservice = `_main._tcp.auditservice.micro.svc.cluster.local`
- dns.resolve(auditservice, (err, locs) => {
- if (err) {
- next(err)
- return
- }
- const { host, port } = locs[0]
- client = restify.createJSONClient(`http://${host}:${port}`)
- })
-}
-
-function respond (req, res, next) {
- client.get('/list', (err, svcReq, svcRes, data) => {
- if (err) {
- next(err)
- return
- }
- res.render('audit', data)
- })
-}
-
-module.exports = router
diff --git a/Chapter10/adding-a-queue-based-service/micro/webapp/routes/index.js b/Chapter10/adding-a-queue-based-service/micro/webapp/routes/index.js
deleted file mode 100644
index 956680b..0000000
--- a/Chapter10/adding-a-queue-based-service/micro/webapp/routes/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var express = require('express')
-var router = express.Router()
-
-/* GET home page. */
-router.get('/', function (req, res, next) {
- res.render('index', { title: 'Express' })
-})
-
-module.exports = router
diff --git a/Chapter10/adding-a-queue-based-service/micro/webapp/routes/users.js b/Chapter10/adding-a-queue-based-service/micro/webapp/routes/users.js
deleted file mode 100644
index 8cfe88f..0000000
--- a/Chapter10/adding-a-queue-based-service/micro/webapp/routes/users.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var express = require('express')
-var router = express.Router()
-
-/* GET users listing. */
-router.get('/', function (req, res, next) {
- res.send('respond with a resource')
-})
-
-module.exports = router
diff --git a/Chapter10/adding-a-queue-based-service/micro/webapp/views/add.ejs b/Chapter10/adding-a-queue-based-service/micro/webapp/views/add.ejs
deleted file mode 100644
index da8279c..0000000
--- a/Chapter10/adding-a-queue-based-service/micro/webapp/views/add.ejs
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
- Add
-
-
-
- Add it up!
-
-
- result = <%= result %>
-
-
diff --git a/Chapter10/adding-a-queue-based-service/micro/webapp/views/audit.ejs b/Chapter10/adding-a-queue-based-service/micro/webapp/views/audit.ejs
deleted file mode 100644
index dd6d71b..0000000
--- a/Chapter10/adding-a-queue-based-service/micro/webapp/views/audit.ejs
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
- Audit
-
-
-
- Calculation History
-
- <% list.forEach(function (el) { %>
- - at: <%= new Date(el.ts).toLocaleString() %>, calculated: <%= el.calc %>, result: <%= el.result %>
- <% }) %>
-
-
-
\ No newline at end of file
diff --git a/Chapter10/adding-a-queue-based-service/micro/webapp/views/error.ejs b/Chapter10/adding-a-queue-based-service/micro/webapp/views/error.ejs
deleted file mode 100644
index 7cf94ed..0000000
--- a/Chapter10/adding-a-queue-based-service/micro/webapp/views/error.ejs
+++ /dev/null
@@ -1,3 +0,0 @@
-<%= message %>
-<%= error.status %>
-<%= error.stack %>
diff --git a/Chapter10/adding-a-queue-based-service/micro/webapp/views/index.ejs b/Chapter10/adding-a-queue-based-service/micro/webapp/views/index.ejs
deleted file mode 100644
index 7b7a1d6..0000000
--- a/Chapter10/adding-a-queue-based-service/micro/webapp/views/index.ejs
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
- <%= title %>
-
-
-
- <%= title %>
- Welcome to <%= title %>
-
-
diff --git a/Chapter10/consuming-a-service/micro/adderservice/package.json b/Chapter10/consuming-a-service/micro/adderservice/package.json
deleted file mode 100644
index dedef88..0000000
--- a/Chapter10/consuming-a-service/micro/adderservice/package.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "adderservice",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "Peter Elger",
- "license": "ISC",
- "dependencies": {
- "restify": "^4.3.0"
- }
-}
diff --git a/Chapter10/consuming-a-service/micro/adderservice/service.js b/Chapter10/consuming-a-service/micro/adderservice/service.js
deleted file mode 100644
index a6d6e74..0000000
--- a/Chapter10/consuming-a-service/micro/adderservice/service.js
+++ /dev/null
@@ -1,18 +0,0 @@
-'use strict'
-
-const restify = require('restify')
-
-function respond (req, res, next) {
- const result = (parseInt(req.params.first, 10) +
- parseInt(req.params.second, 10)).toString()
- res.send(result)
- next()
-}
-
-const server = restify.createServer()
-server.get('/add/:first/:second', respond)
-
-server.listen(8080, () => {
- console.log('%s listening at %s', server.name, server.url)
-})
-
diff --git a/Chapter10/consuming-a-service/micro/inttest/addtest.js b/Chapter10/consuming-a-service/micro/inttest/addtest.js
deleted file mode 100644
index 10698e3..0000000
--- a/Chapter10/consuming-a-service/micro/inttest/addtest.js
+++ /dev/null
@@ -1,18 +0,0 @@
-'use strict'
-
-const request = require('superagent')
-const { test } = require('tap')
-
-test('add test', (t) => {
- t.plan(2)
-
- request
- .post('http://localhost:3000/add/calculate')
- .send('first=1')
- .send('second=2')
- .end((err, res) => {
- t.equal(err, null)
- t.ok(/result = 3/ig.test(res.text))
- })
-})
-
diff --git a/Chapter10/consuming-a-service/micro/inttest/package.json b/Chapter10/consuming-a-service/micro/inttest/package.json
deleted file mode 100644
index 672c6b2..0000000
--- a/Chapter10/consuming-a-service/micro/inttest/package.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "name": "inttest",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "Peter Elger",
- "license": "ISC",
- "devDependencies": {
- "superagent": "^3.5.2",
- "tap": "^10.3.1"
- }
-}
diff --git a/Chapter10/consuming-a-service/micro/webapp/app.js b/Chapter10/consuming-a-service/micro/webapp/app.js
deleted file mode 100644
index 90f0e7a..0000000
--- a/Chapter10/consuming-a-service/micro/webapp/app.js
+++ /dev/null
@@ -1,48 +0,0 @@
-var express = require('express')
-var path = require('path')
-var favicon = require('serve-favicon')
-var logger = require('morgan')
-var cookieParser = require('cookie-parser')
-var bodyParser = require('body-parser')
-
-var index = require('./routes/index')
-var users = require('./routes/users')
-var add = require('./routes/add')
-
-var app = express()
-
-// view engine setup
-app.set('views', path.join(__dirname, 'views'))
-app.set('view engine', 'ejs')
-
-// uncomment after placing your favicon in /public
-// app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
-app.use(logger('dev'))
-app.use(bodyParser.json())
-app.use(bodyParser.urlencoded({ extended: false }))
-app.use(cookieParser())
-app.use(express.static(path.join(__dirname, 'public')))
-
-app.use('/', index)
-app.use('/users', users)
-app.use('/add', add)
-
-// catch 404 and forward to error handler
-app.use(function (req, res, next) {
- var err = new Error('Not Found')
- err.status = 404
- next(err)
-})
-
-// error handler
-app.use(function (err, req, res, next) {
- // set locals, only providing error in development
- res.locals.message = err.message
- res.locals.error = req.app.get('env') === 'development' ? err : {}
-
- // render the error page
- res.status(err.status || 500)
- res.render('error')
-})
-
-module.exports = app
diff --git a/Chapter10/consuming-a-service/micro/webapp/bin/www b/Chapter10/consuming-a-service/micro/webapp/bin/www
deleted file mode 100644
index 8715eeb..0000000
--- a/Chapter10/consuming-a-service/micro/webapp/bin/www
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/usr/bin/env node
-
-/**
- * Module dependencies.
- */
-
-var app = require('../app');
-var debug = require('debug')('webapp:server');
-var http = require('http');
-
-/**
- * Get port from environment and store in Express.
- */
-
-var port = normalizePort(process.env.PORT || '3000');
-app.set('port', port);
-
-/**
- * Create HTTP server.
- */
-
-var server = http.createServer(app);
-
-/**
- * Listen on provided port, on all network interfaces.
- */
-
-server.listen(port);
-server.on('error', onError);
-server.on('listening', onListening);
-
-/**
- * Normalize a port into a number, string, or false.
- */
-
-function normalizePort(val) {
- var port = parseInt(val, 10);
-
- if (isNaN(port)) {
- // named pipe
- return val;
- }
-
- if (port >= 0) {
- // port number
- return port;
- }
-
- return false;
-}
-
-/**
- * Event listener for HTTP server "error" event.
- */
-
-function onError(error) {
- if (error.syscall !== 'listen') {
- throw error;
- }
-
- var bind = typeof port === 'string'
- ? 'Pipe ' + port
- : 'Port ' + port;
-
- // handle specific listen errors with friendly messages
- switch (error.code) {
- case 'EACCES':
- console.error(bind + ' requires elevated privileges');
- process.exit(1);
- break;
- case 'EADDRINUSE':
- console.error(bind + ' is already in use');
- process.exit(1);
- break;
- default:
- throw error;
- }
-}
-
-/**
- * Event listener for HTTP server "listening" event.
- */
-
-function onListening() {
- var addr = server.address();
- var bind = typeof addr === 'string'
- ? 'pipe ' + addr
- : 'port ' + addr.port;
- debug('Listening on ' + bind);
-}
diff --git a/Chapter10/consuming-a-service/micro/webapp/package.json b/Chapter10/consuming-a-service/micro/webapp/package.json
deleted file mode 100644
index 1c0bcc8..0000000
--- a/Chapter10/consuming-a-service/micro/webapp/package.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "name": "webapp",
- "version": "0.0.0",
- "private": true,
- "scripts": {
- "start": "node ./bin/www"
- },
- "dependencies": {
- "body-parser": "~1.16.0",
- "cookie-parser": "~1.4.3",
- "debug": "~2.6.0",
- "ejs": "~2.5.5",
- "express": "~4.14.1",
- "morgan": "~1.7.0",
- "restify": "^4.3.0",
- "serve-favicon": "~2.3.2"
- }
-}
diff --git a/Chapter10/consuming-a-service/micro/webapp/public/stylesheets/style.css b/Chapter10/consuming-a-service/micro/webapp/public/stylesheets/style.css
deleted file mode 100644
index 9453385..0000000
--- a/Chapter10/consuming-a-service/micro/webapp/public/stylesheets/style.css
+++ /dev/null
@@ -1,8 +0,0 @@
-body {
- padding: 50px;
- font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
-}
-
-a {
- color: #00B7FF;
-}
diff --git a/Chapter10/consuming-a-service/micro/webapp/routes/add.js b/Chapter10/consuming-a-service/micro/webapp/routes/add.js
deleted file mode 100644
index 3240051..0000000
--- a/Chapter10/consuming-a-service/micro/webapp/routes/add.js
+++ /dev/null
@@ -1,26 +0,0 @@
-const { Router } = require('express')
-const restify = require('restify')
-const router = Router()
-
-router.get('/', function (req, res) {
- res.render('add', { first: 0, second: 0, result: 0 })
-})
-
-router.post('/calculate', function (req, res, next) {
- const client = restify.createStringClient({
- url: 'http://localhost:8080'
- })
- const {first, second} = req.body
- client.get(
- `/add/${first}/${second}`,
- (err, svcReq, svcRes, result) => {
- if (err) {
- next(err)
- return
- }
- res.render('add', { first, second, result })
- }
- )
-})
-
-module.exports = router
diff --git a/Chapter10/consuming-a-service/micro/webapp/routes/index.js b/Chapter10/consuming-a-service/micro/webapp/routes/index.js
deleted file mode 100644
index 956680b..0000000
--- a/Chapter10/consuming-a-service/micro/webapp/routes/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var express = require('express')
-var router = express.Router()
-
-/* GET home page. */
-router.get('/', function (req, res, next) {
- res.render('index', { title: 'Express' })
-})
-
-module.exports = router
diff --git a/Chapter10/consuming-a-service/micro/webapp/routes/users.js b/Chapter10/consuming-a-service/micro/webapp/routes/users.js
deleted file mode 100644
index 8cfe88f..0000000
--- a/Chapter10/consuming-a-service/micro/webapp/routes/users.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var express = require('express')
-var router = express.Router()
-
-/* GET users listing. */
-router.get('/', function (req, res, next) {
- res.send('respond with a resource')
-})
-
-module.exports = router
diff --git a/Chapter10/consuming-a-service/micro/webapp/views/add.ejs b/Chapter10/consuming-a-service/micro/webapp/views/add.ejs
deleted file mode 100644
index da8279c..0000000
--- a/Chapter10/consuming-a-service/micro/webapp/views/add.ejs
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
- Add
-
-
-
- Add it up!
-
-
- result = <%= result %>
-
-
diff --git a/Chapter10/consuming-a-service/micro/webapp/views/error.ejs b/Chapter10/consuming-a-service/micro/webapp/views/error.ejs
deleted file mode 100644
index 7cf94ed..0000000
--- a/Chapter10/consuming-a-service/micro/webapp/views/error.ejs
+++ /dev/null
@@ -1,3 +0,0 @@
-<%= message %>
-<%= error.status %>
-<%= error.stack %>
diff --git a/Chapter10/consuming-a-service/micro/webapp/views/index.ejs b/Chapter10/consuming-a-service/micro/webapp/views/index.ejs
deleted file mode 100644
index 7b7a1d6..0000000
--- a/Chapter10/consuming-a-service/micro/webapp/views/index.ejs
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
- <%= title %>
-
-
-
- <%= title %>
- Welcome to <%= title %>
-
-
diff --git a/Chapter10/creating-a-simple-RESTful-microservice/micro-core-http/adderservice/package.json b/Chapter10/creating-a-simple-RESTful-microservice/micro-core-http/adderservice/package.json
deleted file mode 100644
index dedef88..0000000
--- a/Chapter10/creating-a-simple-RESTful-microservice/micro-core-http/adderservice/package.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "adderservice",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "Peter Elger",
- "license": "ISC",
- "dependencies": {
- "restify": "^4.3.0"
- }
-}
diff --git a/Chapter10/creating-a-simple-RESTful-microservice/micro-core-http/adderservice/service.js b/Chapter10/creating-a-simple-RESTful-microservice/micro-core-http/adderservice/service.js
deleted file mode 100644
index b130c44..0000000
--- a/Chapter10/creating-a-simple-RESTful-microservice/micro-core-http/adderservice/service.js
+++ /dev/null
@@ -1,30 +0,0 @@
-'use strict'
-
-const http = require('http')
-
-const server = http.createServer(respond)
-
-server.listen(8080, function () {
- console.log('listening on port 8080')
-})
-
-function respond (req, res) {
- const [cmd, first, second] = req.url.split('/').slice(1)
- const notFound = cmd !== 'add' ||
- first === undefined ||
- second === undefined
-
- if (notFound) {
- error(404, res)
- return
- }
-
- const result = parseInt(first, 10) + parseInt(second, 10)
- res.end(result)
-}
-
-function error(code, res) {
- res.statusCode = code
- res.end(http.STATUS_CODES[code])
-}
-
diff --git a/Chapter10/creating-a-simple-RESTful-microservice/micro-core-http/curlexample.sh b/Chapter10/creating-a-simple-RESTful-microservice/micro-core-http/curlexample.sh
deleted file mode 100644
index fb9583e..0000000
--- a/Chapter10/creating-a-simple-RESTful-microservice/micro-core-http/curlexample.sh
+++ /dev/null
@@ -1 +0,0 @@
-curl http://localhost:8080/add/1/2
diff --git a/Chapter10/creating-a-simple-RESTful-microservice/micro/adderservice/package.json b/Chapter10/creating-a-simple-RESTful-microservice/micro/adderservice/package.json
deleted file mode 100644
index dedef88..0000000
--- a/Chapter10/creating-a-simple-RESTful-microservice/micro/adderservice/package.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "adderservice",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "Peter Elger",
- "license": "ISC",
- "dependencies": {
- "restify": "^4.3.0"
- }
-}
diff --git a/Chapter10/creating-a-simple-RESTful-microservice/micro/adderservice/service.js b/Chapter10/creating-a-simple-RESTful-microservice/micro/adderservice/service.js
deleted file mode 100644
index a6d6e74..0000000
--- a/Chapter10/creating-a-simple-RESTful-microservice/micro/adderservice/service.js
+++ /dev/null
@@ -1,18 +0,0 @@
-'use strict'
-
-const restify = require('restify')
-
-function respond (req, res, next) {
- const result = (parseInt(req.params.first, 10) +
- parseInt(req.params.second, 10)).toString()
- res.send(result)
- next()
-}
-
-const server = restify.createServer()
-server.get('/add/:first/:second', respond)
-
-server.listen(8080, () => {
- console.log('%s listening at %s', server.name, server.url)
-})
-
diff --git a/Chapter10/creating-a-simple-RESTful-microservice/micro/curlexample.sh b/Chapter10/creating-a-simple-RESTful-microservice/micro/curlexample.sh
deleted file mode 100644
index fb9583e..0000000
--- a/Chapter10/creating-a-simple-RESTful-microservice/micro/curlexample.sh
+++ /dev/null
@@ -1 +0,0 @@
-curl http://localhost:8080/add/1/2
diff --git a/Chapter10/service-discovery-with-dns/micro/adderservice/index.js b/Chapter10/service-discovery-with-dns/micro/adderservice/index.js
deleted file mode 100644
index 1f2d9cf..0000000
--- a/Chapter10/service-discovery-with-dns/micro/adderservice/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict'
-
-const wiring = require('./wiring')
-const service = require('./service')()
-
-
-wiring(service)
diff --git a/Chapter10/service-discovery-with-dns/micro/adderservice/package.json b/Chapter10/service-discovery-with-dns/micro/adderservice/package.json
deleted file mode 100644
index 7cef23a..0000000
--- a/Chapter10/service-discovery-with-dns/micro/adderservice/package.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "name": "adderservice",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "tap test"
- },
- "keywords": [],
- "author": "Peter Elger",
- "license": "ISC",
- "dependencies": {
- "restify": "^4.3.0"
- },
- "devDependencies": {
- "tap": "^10.3.1"
- }
-}
diff --git a/Chapter10/service-discovery-with-dns/micro/adderservice/service.js b/Chapter10/service-discovery-with-dns/micro/adderservice/service.js
deleted file mode 100644
index 9d0d175..0000000
--- a/Chapter10/service-discovery-with-dns/micro/adderservice/service.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict'
-
-module.exports = service
-
-function service () {
- function add (args, cb) {
- const {first, second} = args
- const result = (parseInt(first, 10) + parseInt(second, 10))
- cb(null, {result: result.toString()})
- }
-
- return { add }
-}
diff --git a/Chapter10/service-discovery-with-dns/micro/adderservice/test/index.js b/Chapter10/service-discovery-with-dns/micro/adderservice/test/index.js
deleted file mode 100644
index 32c45e5..0000000
--- a/Chapter10/service-discovery-with-dns/micro/adderservice/test/index.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict'
-
-const {test} = require('tap')
-const service = require('../service')()
-
-test('test add', (t) => {
- t.plan(2)
-
- service.add({first: 1, second: 2}, (err, answer) => {
- t.error(err)
- t.same(answer, {result: 3})
- })
-})
diff --git a/Chapter10/service-discovery-with-dns/micro/adderservice/wiring.js b/Chapter10/service-discovery-with-dns/micro/adderservice/wiring.js
deleted file mode 100644
index 0ed018c..0000000
--- a/Chapter10/service-discovery-with-dns/micro/adderservice/wiring.js
+++ /dev/null
@@ -1,27 +0,0 @@
-'use strict'
-
-const restify = require('restify')
-const { ADDERSERVICE_SERVICE_PORT } = process.env
-
-module.exports = wiring
-
-function wiring (service) {
- const server = restify.createServer()
-
- server.get('/add/:first/:second', (req, res, next) => {
- service.add(req.params, (err, result) => {
- if (err) {
- res.send(err)
- next()
- return
- }
- res.send(200, result)
- next()
- })
- })
-
- server.listen(ADDERSERVICE_SERVICE_PORT, '0.0.0.0', () => {
- console.log('%s listening at %s', server.name, server.url)
- })
-}
-
diff --git a/Chapter10/service-discovery-with-dns/micro/auditservice/index.js b/Chapter10/service-discovery-with-dns/micro/auditservice/index.js
deleted file mode 100644
index 40a4677..0000000
--- a/Chapter10/service-discovery-with-dns/micro/auditservice/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-'use strict'
-
-const wiring = require('./wiring')
-const service = require('./service')()
-
-wiring(service)
diff --git a/Chapter10/service-discovery-with-dns/micro/auditservice/package.json b/Chapter10/service-discovery-with-dns/micro/auditservice/package.json
deleted file mode 100644
index d93b31e..0000000
--- a/Chapter10/service-discovery-with-dns/micro/auditservice/package.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "name": "auditservice",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "Peter Elger",
- "license": "ISC",
- "dependencies": {
- "concordant": "^0.2.1",
- "mongo": "^0.1.0",
- "restify": "^4.3.0"
- }
-}
diff --git a/Chapter10/service-discovery-with-dns/micro/auditservice/service.js b/Chapter10/service-discovery-with-dns/micro/auditservice/service.js
deleted file mode 100644
index c416e4c..0000000
--- a/Chapter10/service-discovery-with-dns/micro/auditservice/service.js
+++ /dev/null
@@ -1,74 +0,0 @@
-'use strict'
-
-const { MongoClient } = require('mongodb')
-const { dns } = require('concordant')()
-
-module.exports = service
-
-function service () {
-
- var db
-
- setup()
-
- function setup () {
- const mongo = '_main._tcp.mongo.micro.svc.cluster.local'
-
- dns.resolve(mongo, (err, locs) => {
- if (err) {
- console.error(err)
- return
- }
- const { host, port } = locs[0]
- const url = `mongodb://${host}:${port}/audit`
- MongoClient.connect(url, (err, client) => {
- if (err) {
- console.log('failed to connect to MongoDB retrying in 100ms')
- setTimeout(setup, 100)
- return
- }
- db = client
- db.on('close', () => db = null)
- })
- })
- }
-
- function append (args, cb) {
- if (!db) {
- cb(Error('No database connection'))
- return
- }
- const audit = db.collection('audit')
- const data = {
- ts: Date.now(),
- calc: args.calc,
- result: args.calcResult
- }
-
- audit.insert(data, (err, result) => {
- if (err) {
- cb(err)
- return
- }
- cb(null, {result: result.toString()})
- })
- }
-
- function list (args, cb) {
- if (!db) {
- cb(Error('No database connection'))
- return
- }
- const audit = db.collection('audit')
- audit.find({}, {limit: 10}).toArray((err, docs) => {
- if (err) {
- cb(err)
- return
- }
- cb(null, {list: docs})
- })
- }
-
- return { append, list }
-}
-
diff --git a/Chapter10/service-discovery-with-dns/micro/auditservice/wiring.js b/Chapter10/service-discovery-with-dns/micro/auditservice/wiring.js
deleted file mode 100644
index b18dce8..0000000
--- a/Chapter10/service-discovery-with-dns/micro/auditservice/wiring.js
+++ /dev/null
@@ -1,39 +0,0 @@
-'use strict'
-
-const restify = require('restify')
-const { AUDITSERVICE_SERVICE_PORT } = process.env
-
-module.exports = wiring
-
-function wiring (service) {
- const server = restify.createServer()
-
- server.use(restify.bodyParser())
-
- server.post('/append', (req, res, next) => {
- service.append(req.params, (err, result) => {
- if (err) {
- res.send(err)
- return
- }
- res.send(result)
- next()
- })
- })
-
- server.get('/list', (req, res, next) => {
- service.list(req.params, (err, result) => {
- if (err) {
- res.send(err)
- return
- }
- res.send(200, result)
- next()
- })
- })
-
- server.listen(AUDITSERVICE_SERVICE_PORT, '0.0.0.0', () => {
- console.log('%s listening at %s', server.name, server.url)
- })
-}
-
diff --git a/Chapter10/service-discovery-with-dns/micro/fuge/fuge.yml b/Chapter10/service-discovery-with-dns/micro/fuge/fuge.yml
deleted file mode 100644
index c263ca7..0000000
--- a/Chapter10/service-discovery-with-dns/micro/fuge/fuge.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-fuge_global:
- dns_enabled: true
- dns_host: 127.0.0.1
- dns_port: 53053
- dns_suffix: svc.cluster.local
- dns_namespace: micro
- tail: true
- monitor: true
- monitor_excludes:
- - '**/node_modules/**'
- - '**/.git/**'
- - '*.log'
-adderservice:
- type: process
- path: ../adderservice
- run: node index.js
- ports:
- - main=8080
-webapp:
- type: process
- path: ../webapp
- run: npm start
- ports:
- - main=3000
-auditservice:
- type: process
- path: ../auditservice
- run: 'node index.js'
- ports:
- - main=8081
-mongo:
- image: mongo
- type: container
- ports:
- - main=27017:27017
diff --git a/Chapter10/service-discovery-with-dns/micro/webapp/app.js b/Chapter10/service-discovery-with-dns/micro/webapp/app.js
deleted file mode 100644
index ec527f4..0000000
--- a/Chapter10/service-discovery-with-dns/micro/webapp/app.js
+++ /dev/null
@@ -1,50 +0,0 @@
-var express = require('express')
-var path = require('path')
-var favicon = require('serve-favicon')
-var logger = require('morgan')
-var cookieParser = require('cookie-parser')
-var bodyParser = require('body-parser')
-
-var index = require('./routes/index')
-var users = require('./routes/users')
-var add = require('./routes/add')
-var audit = require('./routes/audit')
-
-var app = express()
-
-// view engine setup
-app.set('views', path.join(__dirname, 'views'))
-app.set('view engine', 'ejs')
-
-// uncomment after placing your favicon in /public
-// app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
-app.use(logger('dev'))
-app.use(bodyParser.json())
-app.use(bodyParser.urlencoded({ extended: false }))
-app.use(cookieParser())
-app.use(express.static(path.join(__dirname, 'public')))
-
-app.use('/', index)
-app.use('/users', users)
-app.use('/add', add)
-app.use('/audit', audit)
-
-// catch 404 and forward to error handler
-app.use(function (req, res, next) {
- var err = new Error('Not Found')
- err.status = 404
- next(err)
-})
-
-// error handler
-app.use(function (err, req, res, next) {
- // set locals, only providing error in development
- res.locals.message = err.message
- res.locals.error = req.app.get('env') === 'development' ? err : {}
-
- // render the error page
- res.status(err.status || 500)
- res.render('error')
-})
-
-module.exports = app
diff --git a/Chapter10/service-discovery-with-dns/micro/webapp/bin/www b/Chapter10/service-discovery-with-dns/micro/webapp/bin/www
deleted file mode 100644
index 8715eeb..0000000
--- a/Chapter10/service-discovery-with-dns/micro/webapp/bin/www
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/usr/bin/env node
-
-/**
- * Module dependencies.
- */
-
-var app = require('../app');
-var debug = require('debug')('webapp:server');
-var http = require('http');
-
-/**
- * Get port from environment and store in Express.
- */
-
-var port = normalizePort(process.env.PORT || '3000');
-app.set('port', port);
-
-/**
- * Create HTTP server.
- */
-
-var server = http.createServer(app);
-
-/**
- * Listen on provided port, on all network interfaces.
- */
-
-server.listen(port);
-server.on('error', onError);
-server.on('listening', onListening);
-
-/**
- * Normalize a port into a number, string, or false.
- */
-
-function normalizePort(val) {
- var port = parseInt(val, 10);
-
- if (isNaN(port)) {
- // named pipe
- return val;
- }
-
- if (port >= 0) {
- // port number
- return port;
- }
-
- return false;
-}
-
-/**
- * Event listener for HTTP server "error" event.
- */
-
-function onError(error) {
- if (error.syscall !== 'listen') {
- throw error;
- }
-
- var bind = typeof port === 'string'
- ? 'Pipe ' + port
- : 'Port ' + port;
-
- // handle specific listen errors with friendly messages
- switch (error.code) {
- case 'EACCES':
- console.error(bind + ' requires elevated privileges');
- process.exit(1);
- break;
- case 'EADDRINUSE':
- console.error(bind + ' is already in use');
- process.exit(1);
- break;
- default:
- throw error;
- }
-}
-
-/**
- * Event listener for HTTP server "listening" event.
- */
-
-function onListening() {
- var addr = server.address();
- var bind = typeof addr === 'string'
- ? 'pipe ' + addr
- : 'port ' + addr.port;
- debug('Listening on ' + bind);
-}
diff --git a/Chapter10/service-discovery-with-dns/micro/webapp/package.json b/Chapter10/service-discovery-with-dns/micro/webapp/package.json
deleted file mode 100644
index 1c45acf..0000000
--- a/Chapter10/service-discovery-with-dns/micro/webapp/package.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "webapp",
- "version": "0.0.0",
- "private": true,
- "scripts": {
- "start": "node ./bin/www"
- },
- "dependencies": {
- "body-parser": "~1.16.0",
- "concordant": "^0.2.1",
- "cookie-parser": "~1.4.3",
- "debug": "~2.6.0",
- "ejs": "~2.5.5",
- "express": "~4.14.1",
- "morgan": "~1.7.0",
- "mu": "^2.1.2",
- "restify": "^4.3.0",
- "serve-favicon": "~2.3.2"
- }
-}
diff --git a/Chapter10/service-discovery-with-dns/micro/webapp/public/stylesheets/style.css b/Chapter10/service-discovery-with-dns/micro/webapp/public/stylesheets/style.css
deleted file mode 100644
index 9453385..0000000
--- a/Chapter10/service-discovery-with-dns/micro/webapp/public/stylesheets/style.css
+++ /dev/null
@@ -1,8 +0,0 @@
-body {
- padding: 50px;
- font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
-}
-
-a {
- color: #00B7FF;
-}
diff --git a/Chapter10/service-discovery-with-dns/micro/webapp/routes/add.js b/Chapter10/service-discovery-with-dns/micro/webapp/routes/add.js
deleted file mode 100644
index 3ab03cc..0000000
--- a/Chapter10/service-discovery-with-dns/micro/webapp/routes/add.js
+++ /dev/null
@@ -1,68 +0,0 @@
-'use strict'
-
-const { Router } = require('express')
-const restify = require('restify')
-const { dns } = require('concordant')()
-const router = Router()
-var clients
-
-router.get('/', function (req, res) {
- res.render('add', { first: 0, second: 0, result: 0 })
-})
-
-router.post('/calculate', resolve, respond)
-
-function resolve (req, res, next) {
- if (clients) {
- next()
- return
- }
- const adderservice = `_main._tcp.adderservice.micro.svc.cluster.local`
- const auditservice = `_main._tcp.auditservice.micro.svc.cluster.local`
- dns.resolve(adderservice, (err, locs) => {
- if (err) {
- next(err)
- return
- }
- const { host, port } = locs[0]
- const adder = `${host}:${port}`
- dns.resolve(auditservice, (err, locs) => {
- if (err) {
- next(err)
- return
- }
- const { host, port } = locs[0]
- const audit = `${host}:${port}`
- clients = {
- adder: restify.createJSONClient({url: `http://${adder}`}),
- audit: restify.createJSONClient({url: `http://${audit}`})
- }
- next()
- })
- })
-}
-
-function respond (req, res, next) {
- const { first, second } = req.body
- clients.adder.get(
- `/add/${first}/${second}`,
- (err, svcReq, svcRes, data) => {
- if (err) {
- next(err)
- return
- }
-
- const { result } = data
- clients.audit.post('/append', {
- calc: first + '+' + second,
- calcResult: result
- }, (err) => {
- if (err) console.error(err)
- })
-
- res.render('add', { first, second, result })
- }
- )
-}
-
-module.exports = router
diff --git a/Chapter10/service-discovery-with-dns/micro/webapp/routes/audit.js b/Chapter10/service-discovery-with-dns/micro/webapp/routes/audit.js
deleted file mode 100644
index a083eef..0000000
--- a/Chapter10/service-discovery-with-dns/micro/webapp/routes/audit.js
+++ /dev/null
@@ -1,37 +0,0 @@
-'use strict'
-
-const { Router } = require('express')
-const restify = require('restify')
-const { dns } = require('concordant')()
-const router = Router()
-var client
-
-router.get('/', resolve, respond)
-
-function resolve (req, res, next) {
- if (client) {
- next()
- return
- }
- const auditservice = `_main._tcp.auditservice.micro.svc.cluster.local`
- dns.resolve(auditservice, (err, locs) => {
- if (err) {
- next(err)
- return
- }
- const { host, port } = locs[0]
- client = restify.createJSONClient(`http://${host}:${port}`)
- })
-}
-
-function respond (req, res, next) {
- client.get('/list', (err, svcReq, svcRes, data) => {
- if (err) {
- next(err)
- return
- }
- res.render('audit', data)
- })
-}
-
-module.exports = router
diff --git a/Chapter10/service-discovery-with-dns/micro/webapp/routes/index.js b/Chapter10/service-discovery-with-dns/micro/webapp/routes/index.js
deleted file mode 100644
index 956680b..0000000
--- a/Chapter10/service-discovery-with-dns/micro/webapp/routes/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var express = require('express')
-var router = express.Router()
-
-/* GET home page. */
-router.get('/', function (req, res, next) {
- res.render('index', { title: 'Express' })
-})
-
-module.exports = router
diff --git a/Chapter10/service-discovery-with-dns/micro/webapp/routes/users.js b/Chapter10/service-discovery-with-dns/micro/webapp/routes/users.js
deleted file mode 100644
index 8cfe88f..0000000
--- a/Chapter10/service-discovery-with-dns/micro/webapp/routes/users.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var express = require('express')
-var router = express.Router()
-
-/* GET users listing. */
-router.get('/', function (req, res, next) {
- res.send('respond with a resource')
-})
-
-module.exports = router
diff --git a/Chapter10/service-discovery-with-dns/micro/webapp/views/add.ejs b/Chapter10/service-discovery-with-dns/micro/webapp/views/add.ejs
deleted file mode 100644
index da8279c..0000000
--- a/Chapter10/service-discovery-with-dns/micro/webapp/views/add.ejs
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
- Add
-
-
-
- Add it up!
-
-
- result = <%= result %>
-
-
diff --git a/Chapter10/service-discovery-with-dns/micro/webapp/views/audit.ejs b/Chapter10/service-discovery-with-dns/micro/webapp/views/audit.ejs
deleted file mode 100644
index dd6d71b..0000000
--- a/Chapter10/service-discovery-with-dns/micro/webapp/views/audit.ejs
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
- Audit
-
-
-
- Calculation History
-
- <% list.forEach(function (el) { %>
- - at: <%= new Date(el.ts).toLocaleString() %>, calculated: <%= el.calc %>, result: <%= el.result %>
- <% }) %>
-
-
-
\ No newline at end of file
diff --git a/Chapter10/service-discovery-with-dns/micro/webapp/views/error.ejs b/Chapter10/service-discovery-with-dns/micro/webapp/views/error.ejs
deleted file mode 100644
index 7cf94ed..0000000
--- a/Chapter10/service-discovery-with-dns/micro/webapp/views/error.ejs
+++ /dev/null
@@ -1,3 +0,0 @@
-<%= message %>
-<%= error.status %>
-<%= error.stack %>
diff --git a/Chapter10/service-discovery-with-dns/micro/webapp/views/index.ejs b/Chapter10/service-discovery-with-dns/micro/webapp/views/index.ejs
deleted file mode 100644
index 7b7a1d6..0000000
--- a/Chapter10/service-discovery-with-dns/micro/webapp/views/index.ejs
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
- <%= title %>
-
-
-
- <%= title %>
- Welcome to <%= title %>
-
-
diff --git a/Chapter10/setting-up-a-development-environment/micro-lil-pids/adderservice/package.json b/Chapter10/setting-up-a-development-environment/micro-lil-pids/adderservice/package.json
deleted file mode 100644
index dedef88..0000000
--- a/Chapter10/setting-up-a-development-environment/micro-lil-pids/adderservice/package.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "adderservice",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "Peter Elger",
- "license": "ISC",
- "dependencies": {
- "restify": "^4.3.0"
- }
-}
diff --git a/Chapter10/setting-up-a-development-environment/micro-lil-pids/adderservice/service.js b/Chapter10/setting-up-a-development-environment/micro-lil-pids/adderservice/service.js
deleted file mode 100644
index 5131b53..0000000
--- a/Chapter10/setting-up-a-development-environment/micro-lil-pids/adderservice/service.js
+++ /dev/null
@@ -1,19 +0,0 @@
-'use strict'
-
-const restify = require('restify')
-
-function respond (req, res, next) {
- const result = (parseInt(req.params.first, 10) +
- parseInt(req.params.second, 10)).toString()
- console.log('adding numbers!')
- res.send(result)
- next()
-}
-
-const server = restify.createServer()
-server.get('/add/:first/:second', respond)
-
-server.listen(8080, () => {
- console.log('%s listening at %s', server.name, server.url)
-})
-
diff --git a/Chapter10/setting-up-a-development-environment/micro-lil-pids/services b/Chapter10/setting-up-a-development-environment/micro-lil-pids/services
deleted file mode 100644
index 8d17b4a..0000000
--- a/Chapter10/setting-up-a-development-environment/micro-lil-pids/services
+++ /dev/null
@@ -1,2 +0,0 @@
-cd webapp && npm start
-cd adderservice && node service
diff --git a/Chapter10/setting-up-a-development-environment/micro-lil-pids/webapp/app.js b/Chapter10/setting-up-a-development-environment/micro-lil-pids/webapp/app.js
deleted file mode 100644
index 90f0e7a..0000000
--- a/Chapter10/setting-up-a-development-environment/micro-lil-pids/webapp/app.js
+++ /dev/null
@@ -1,48 +0,0 @@
-var express = require('express')
-var path = require('path')
-var favicon = require('serve-favicon')
-var logger = require('morgan')
-var cookieParser = require('cookie-parser')
-var bodyParser = require('body-parser')
-
-var index = require('./routes/index')
-var users = require('./routes/users')
-var add = require('./routes/add')
-
-var app = express()
-
-// view engine setup
-app.set('views', path.join(__dirname, 'views'))
-app.set('view engine', 'ejs')
-
-// uncomment after placing your favicon in /public
-// app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
-app.use(logger('dev'))
-app.use(bodyParser.json())
-app.use(bodyParser.urlencoded({ extended: false }))
-app.use(cookieParser())
-app.use(express.static(path.join(__dirname, 'public')))
-
-app.use('/', index)
-app.use('/users', users)
-app.use('/add', add)
-
-// catch 404 and forward to error handler
-app.use(function (req, res, next) {
- var err = new Error('Not Found')
- err.status = 404
- next(err)
-})
-
-// error handler
-app.use(function (err, req, res, next) {
- // set locals, only providing error in development
- res.locals.message = err.message
- res.locals.error = req.app.get('env') === 'development' ? err : {}
-
- // render the error page
- res.status(err.status || 500)
- res.render('error')
-})
-
-module.exports = app
diff --git a/Chapter10/setting-up-a-development-environment/micro-lil-pids/webapp/bin/www b/Chapter10/setting-up-a-development-environment/micro-lil-pids/webapp/bin/www
deleted file mode 100644
index 8715eeb..0000000
--- a/Chapter10/setting-up-a-development-environment/micro-lil-pids/webapp/bin/www
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/usr/bin/env node
-
-/**
- * Module dependencies.
- */
-
-var app = require('../app');
-var debug = require('debug')('webapp:server');
-var http = require('http');
-
-/**
- * Get port from environment and store in Express.
- */
-
-var port = normalizePort(process.env.PORT || '3000');
-app.set('port', port);
-
-/**
- * Create HTTP server.
- */
-
-var server = http.createServer(app);
-
-/**
- * Listen on provided port, on all network interfaces.
- */
-
-server.listen(port);
-server.on('error', onError);
-server.on('listening', onListening);
-
-/**
- * Normalize a port into a number, string, or false.
- */
-
-function normalizePort(val) {
- var port = parseInt(val, 10);
-
- if (isNaN(port)) {
- // named pipe
- return val;
- }
-
- if (port >= 0) {
- // port number
- return port;
- }
-
- return false;
-}
-
-/**
- * Event listener for HTTP server "error" event.
- */
-
-function onError(error) {
- if (error.syscall !== 'listen') {
- throw error;
- }
-
- var bind = typeof port === 'string'
- ? 'Pipe ' + port
- : 'Port ' + port;
-
- // handle specific listen errors with friendly messages
- switch (error.code) {
- case 'EACCES':
- console.error(bind + ' requires elevated privileges');
- process.exit(1);
- break;
- case 'EADDRINUSE':
- console.error(bind + ' is already in use');
- process.exit(1);
- break;
- default:
- throw error;
- }
-}
-
-/**
- * Event listener for HTTP server "listening" event.
- */
-
-function onListening() {
- var addr = server.address();
- var bind = typeof addr === 'string'
- ? 'pipe ' + addr
- : 'port ' + addr.port;
- debug('Listening on ' + bind);
-}
diff --git a/Chapter10/setting-up-a-development-environment/micro-lil-pids/webapp/package.json b/Chapter10/setting-up-a-development-environment/micro-lil-pids/webapp/package.json
deleted file mode 100644
index 1c0bcc8..0000000
--- a/Chapter10/setting-up-a-development-environment/micro-lil-pids/webapp/package.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "name": "webapp",
- "version": "0.0.0",
- "private": true,
- "scripts": {
- "start": "node ./bin/www"
- },
- "dependencies": {
- "body-parser": "~1.16.0",
- "cookie-parser": "~1.4.3",
- "debug": "~2.6.0",
- "ejs": "~2.5.5",
- "express": "~4.14.1",
- "morgan": "~1.7.0",
- "restify": "^4.3.0",
- "serve-favicon": "~2.3.2"
- }
-}
diff --git a/Chapter10/setting-up-a-development-environment/micro-lil-pids/webapp/public/stylesheets/style.css b/Chapter10/setting-up-a-development-environment/micro-lil-pids/webapp/public/stylesheets/style.css
deleted file mode 100644
index 9453385..0000000
--- a/Chapter10/setting-up-a-development-environment/micro-lil-pids/webapp/public/stylesheets/style.css
+++ /dev/null
@@ -1,8 +0,0 @@
-body {
- padding: 50px;
- font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
-}
-
-a {
- color: #00B7FF;
-}
diff --git a/Chapter10/setting-up-a-development-environment/micro-lil-pids/webapp/routes/add.js b/Chapter10/setting-up-a-development-environment/micro-lil-pids/webapp/routes/add.js
deleted file mode 100644
index e1c2ebc..0000000
--- a/Chapter10/setting-up-a-development-environment/micro-lil-pids/webapp/routes/add.js
+++ /dev/null
@@ -1,26 +0,0 @@
-const { Router } = require('express')
-const restify = require('restify')
-const router = Router()
-
-router.get('/', function (req, res) {
- res.render('add', { first: 0, second: 0, result: 0 })
-})
-
-router.post('/calculate', function (req, res, next) {
- const client = restify.createStringClient({
- url: 'http://localhost:8080'
- })
- const {first, second} = req.body
- client.get(
- `/add/${first}/${second}`,
- (err, svcReq, svcRes, result) => {
- if (err) {
- next(err)
- return
- }
- res.render('add', { first, second, result })
- }
- )
-})
-
-module.exports = router
diff --git a/Chapter10/setting-up-a-development-environment/micro-lil-pids/webapp/routes/index.js b/Chapter10/setting-up-a-development-environment/micro-lil-pids/webapp/routes/index.js
deleted file mode 100644
index 956680b..0000000
--- a/Chapter10/setting-up-a-development-environment/micro-lil-pids/webapp/routes/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var express = require('express')
-var router = express.Router()
-
-/* GET home page. */
-router.get('/', function (req, res, next) {
- res.render('index', { title: 'Express' })
-})
-
-module.exports = router
diff --git a/Chapter10/setting-up-a-development-environment/micro-lil-pids/webapp/routes/users.js b/Chapter10/setting-up-a-development-environment/micro-lil-pids/webapp/routes/users.js
deleted file mode 100644
index 8cfe88f..0000000
--- a/Chapter10/setting-up-a-development-environment/micro-lil-pids/webapp/routes/users.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var express = require('express')
-var router = express.Router()
-
-/* GET users listing. */
-router.get('/', function (req, res, next) {
- res.send('respond with a resource')
-})
-
-module.exports = router
diff --git a/Chapter10/setting-up-a-development-environment/micro-lil-pids/webapp/views/add.ejs b/Chapter10/setting-up-a-development-environment/micro-lil-pids/webapp/views/add.ejs
deleted file mode 100644
index da8279c..0000000
--- a/Chapter10/setting-up-a-development-environment/micro-lil-pids/webapp/views/add.ejs
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
- Add
-
-
-
- Add it up!
-
-
- result = <%= result %>
-
-
diff --git a/Chapter10/setting-up-a-development-environment/micro-lil-pids/webapp/views/error.ejs b/Chapter10/setting-up-a-development-environment/micro-lil-pids/webapp/views/error.ejs
deleted file mode 100644
index 7cf94ed..0000000
--- a/Chapter10/setting-up-a-development-environment/micro-lil-pids/webapp/views/error.ejs
+++ /dev/null
@@ -1,3 +0,0 @@
-<%= message %>
-<%= error.status %>
-<%= error.stack %>
diff --git a/Chapter10/setting-up-a-development-environment/micro-lil-pids/webapp/views/index.ejs b/Chapter10/setting-up-a-development-environment/micro-lil-pids/webapp/views/index.ejs
deleted file mode 100644
index 7b7a1d6..0000000
--- a/Chapter10/setting-up-a-development-environment/micro-lil-pids/webapp/views/index.ejs
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
- <%= title %>
-
-
-
- <%= title %>
- Welcome to <%= title %>
-
-
diff --git a/Chapter10/setting-up-a-development-environment/micro/adderservice/package.json b/Chapter10/setting-up-a-development-environment/micro/adderservice/package.json
deleted file mode 100644
index dedef88..0000000
--- a/Chapter10/setting-up-a-development-environment/micro/adderservice/package.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "adderservice",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "Peter Elger",
- "license": "ISC",
- "dependencies": {
- "restify": "^4.3.0"
- }
-}
diff --git a/Chapter10/setting-up-a-development-environment/micro/adderservice/service.js b/Chapter10/setting-up-a-development-environment/micro/adderservice/service.js
deleted file mode 100644
index 5131b53..0000000
--- a/Chapter10/setting-up-a-development-environment/micro/adderservice/service.js
+++ /dev/null
@@ -1,19 +0,0 @@
-'use strict'
-
-const restify = require('restify')
-
-function respond (req, res, next) {
- const result = (parseInt(req.params.first, 10) +
- parseInt(req.params.second, 10)).toString()
- console.log('adding numbers!')
- res.send(result)
- next()
-}
-
-const server = restify.createServer()
-server.get('/add/:first/:second', respond)
-
-server.listen(8080, () => {
- console.log('%s listening at %s', server.name, server.url)
-})
-
diff --git a/Chapter10/setting-up-a-development-environment/micro/fuge/fuge.yml b/Chapter10/setting-up-a-development-environment/micro/fuge/fuge.yml
deleted file mode 100644
index 1868afd..0000000
--- a/Chapter10/setting-up-a-development-environment/micro/fuge/fuge.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-fuge_global:
- tail: true
- monitor: true
- monitor_excludes:
- - '**/node_modules/**'
- - '**/.git/**'
- - '*.log'
-adderservice:
- type: process
- path: ../adderservice
- run: 'node service.js'
- ports:
- - main=8080
-webapp:
- type: process
- path: ../webapp
- run: 'npm start'
- ports:
- - main=3000
diff --git a/Chapter10/setting-up-a-development-environment/micro/fuge/fuge2.yml b/Chapter10/setting-up-a-development-environment/micro/fuge/fuge2.yml
deleted file mode 100644
index 642a1ba..0000000
--- a/Chapter10/setting-up-a-development-environment/micro/fuge/fuge2.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-fuge_global:
- tail: true
- monitor: true
- monitor_excludes:
- - '**/node_modules/**'
- - '**/.git/**'
- - '*.log'
-adderservice:
- type: node
- path: ../adderservice
- run: 'node service.js'
- ports:
- - main=8080
-webapp:
- type: process
- path: ../webapp
- run: 'npm start'
- ports:
- - main=3000
diff --git a/Chapter10/setting-up-a-development-environment/micro/webapp/app.js b/Chapter10/setting-up-a-development-environment/micro/webapp/app.js
deleted file mode 100644
index 90f0e7a..0000000
--- a/Chapter10/setting-up-a-development-environment/micro/webapp/app.js
+++ /dev/null
@@ -1,48 +0,0 @@
-var express = require('express')
-var path = require('path')
-var favicon = require('serve-favicon')
-var logger = require('morgan')
-var cookieParser = require('cookie-parser')
-var bodyParser = require('body-parser')
-
-var index = require('./routes/index')
-var users = require('./routes/users')
-var add = require('./routes/add')
-
-var app = express()
-
-// view engine setup
-app.set('views', path.join(__dirname, 'views'))
-app.set('view engine', 'ejs')
-
-// uncomment after placing your favicon in /public
-// app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
-app.use(logger('dev'))
-app.use(bodyParser.json())
-app.use(bodyParser.urlencoded({ extended: false }))
-app.use(cookieParser())
-app.use(express.static(path.join(__dirname, 'public')))
-
-app.use('/', index)
-app.use('/users', users)
-app.use('/add', add)
-
-// catch 404 and forward to error handler
-app.use(function (req, res, next) {
- var err = new Error('Not Found')
- err.status = 404
- next(err)
-})
-
-// error handler
-app.use(function (err, req, res, next) {
- // set locals, only providing error in development
- res.locals.message = err.message
- res.locals.error = req.app.get('env') === 'development' ? err : {}
-
- // render the error page
- res.status(err.status || 500)
- res.render('error')
-})
-
-module.exports = app
diff --git a/Chapter10/setting-up-a-development-environment/micro/webapp/bin/www b/Chapter10/setting-up-a-development-environment/micro/webapp/bin/www
deleted file mode 100644
index 8715eeb..0000000
--- a/Chapter10/setting-up-a-development-environment/micro/webapp/bin/www
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/usr/bin/env node
-
-/**
- * Module dependencies.
- */
-
-var app = require('../app');
-var debug = require('debug')('webapp:server');
-var http = require('http');
-
-/**
- * Get port from environment and store in Express.
- */
-
-var port = normalizePort(process.env.PORT || '3000');
-app.set('port', port);
-
-/**
- * Create HTTP server.
- */
-
-var server = http.createServer(app);
-
-/**
- * Listen on provided port, on all network interfaces.
- */
-
-server.listen(port);
-server.on('error', onError);
-server.on('listening', onListening);
-
-/**
- * Normalize a port into a number, string, or false.
- */
-
-function normalizePort(val) {
- var port = parseInt(val, 10);
-
- if (isNaN(port)) {
- // named pipe
- return val;
- }
-
- if (port >= 0) {
- // port number
- return port;
- }
-
- return false;
-}
-
-/**
- * Event listener for HTTP server "error" event.
- */
-
-function onError(error) {
- if (error.syscall !== 'listen') {
- throw error;
- }
-
- var bind = typeof port === 'string'
- ? 'Pipe ' + port
- : 'Port ' + port;
-
- // handle specific listen errors with friendly messages
- switch (error.code) {
- case 'EACCES':
- console.error(bind + ' requires elevated privileges');
- process.exit(1);
- break;
- case 'EADDRINUSE':
- console.error(bind + ' is already in use');
- process.exit(1);
- break;
- default:
- throw error;
- }
-}
-
-/**
- * Event listener for HTTP server "listening" event.
- */
-
-function onListening() {
- var addr = server.address();
- var bind = typeof addr === 'string'
- ? 'pipe ' + addr
- : 'port ' + addr.port;
- debug('Listening on ' + bind);
-}
diff --git a/Chapter10/setting-up-a-development-environment/micro/webapp/package.json b/Chapter10/setting-up-a-development-environment/micro/webapp/package.json
deleted file mode 100644
index 1c0bcc8..0000000
--- a/Chapter10/setting-up-a-development-environment/micro/webapp/package.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "name": "webapp",
- "version": "0.0.0",
- "private": true,
- "scripts": {
- "start": "node ./bin/www"
- },
- "dependencies": {
- "body-parser": "~1.16.0",
- "cookie-parser": "~1.4.3",
- "debug": "~2.6.0",
- "ejs": "~2.5.5",
- "express": "~4.14.1",
- "morgan": "~1.7.0",
- "restify": "^4.3.0",
- "serve-favicon": "~2.3.2"
- }
-}
diff --git a/Chapter10/setting-up-a-development-environment/micro/webapp/public/stylesheets/style.css b/Chapter10/setting-up-a-development-environment/micro/webapp/public/stylesheets/style.css
deleted file mode 100644
index 9453385..0000000
--- a/Chapter10/setting-up-a-development-environment/micro/webapp/public/stylesheets/style.css
+++ /dev/null
@@ -1,8 +0,0 @@
-body {
- padding: 50px;
- font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
-}
-
-a {
- color: #00B7FF;
-}
diff --git a/Chapter10/setting-up-a-development-environment/micro/webapp/routes/add.js b/Chapter10/setting-up-a-development-environment/micro/webapp/routes/add.js
deleted file mode 100644
index e1c2ebc..0000000
--- a/Chapter10/setting-up-a-development-environment/micro/webapp/routes/add.js
+++ /dev/null
@@ -1,26 +0,0 @@
-const { Router } = require('express')
-const restify = require('restify')
-const router = Router()
-
-router.get('/', function (req, res) {
- res.render('add', { first: 0, second: 0, result: 0 })
-})
-
-router.post('/calculate', function (req, res, next) {
- const client = restify.createStringClient({
- url: 'http://localhost:8080'
- })
- const {first, second} = req.body
- client.get(
- `/add/${first}/${second}`,
- (err, svcReq, svcRes, result) => {
- if (err) {
- next(err)
- return
- }
- res.render('add', { first, second, result })
- }
- )
-})
-
-module.exports = router
diff --git a/Chapter10/setting-up-a-development-environment/micro/webapp/routes/index.js b/Chapter10/setting-up-a-development-environment/micro/webapp/routes/index.js
deleted file mode 100644
index 956680b..0000000
--- a/Chapter10/setting-up-a-development-environment/micro/webapp/routes/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var express = require('express')
-var router = express.Router()
-
-/* GET home page. */
-router.get('/', function (req, res, next) {
- res.render('index', { title: 'Express' })
-})
-
-module.exports = router
diff --git a/Chapter10/setting-up-a-development-environment/micro/webapp/routes/users.js b/Chapter10/setting-up-a-development-environment/micro/webapp/routes/users.js
deleted file mode 100644
index 8cfe88f..0000000
--- a/Chapter10/setting-up-a-development-environment/micro/webapp/routes/users.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var express = require('express')
-var router = express.Router()
-
-/* GET users listing. */
-router.get('/', function (req, res, next) {
- res.send('respond with a resource')
-})
-
-module.exports = router
diff --git a/Chapter10/setting-up-a-development-environment/micro/webapp/views/add.ejs b/Chapter10/setting-up-a-development-environment/micro/webapp/views/add.ejs
deleted file mode 100644
index da8279c..0000000
--- a/Chapter10/setting-up-a-development-environment/micro/webapp/views/add.ejs
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
- Add
-
-
-
- Add it up!
-
-
- result = <%= result %>
-
-
diff --git a/Chapter10/setting-up-a-development-environment/micro/webapp/views/error.ejs b/Chapter10/setting-up-a-development-environment/micro/webapp/views/error.ejs
deleted file mode 100644
index 7cf94ed..0000000
--- a/Chapter10/setting-up-a-development-environment/micro/webapp/views/error.ejs
+++ /dev/null
@@ -1,3 +0,0 @@
-<%= message %>
-<%= error.status %>
-<%= error.stack %>
diff --git a/Chapter10/setting-up-a-development-environment/micro/webapp/views/index.ejs b/Chapter10/setting-up-a-development-environment/micro/webapp/views/index.ejs
deleted file mode 100644
index 7b7a1d6..0000000
--- a/Chapter10/setting-up-a-development-environment/micro/webapp/views/index.ejs
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
- <%= title %>
-
-
-
- <%= title %>
- Welcome to <%= title %>
-
-
diff --git a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/adderservice/index.js b/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/adderservice/index.js
deleted file mode 100644
index 1f2d9cf..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/adderservice/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict'
-
-const wiring = require('./wiring')
-const service = require('./service')()
-
-
-wiring(service)
diff --git a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/adderservice/package.json b/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/adderservice/package.json
deleted file mode 100644
index e2d4f59..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/adderservice/package.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "name": "adderservice",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "Peter Elger",
- "license": "ISC",
- "dependencies": {
- "bloomrun": "^3.0.4",
- "net-object-stream": "^2.0.0",
- "pump": "^1.0.2",
- "through2": "^2.0.3"
- },
- "devDependencies": {
- "tap": "^10.3.1"
- }
-}
diff --git a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/adderservice/service.js b/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/adderservice/service.js
deleted file mode 100644
index 9d0d175..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/adderservice/service.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict'
-
-module.exports = service
-
-function service () {
- function add (args, cb) {
- const {first, second} = args
- const result = (parseInt(first, 10) + parseInt(second, 10))
- cb(null, {result: result.toString()})
- }
-
- return { add }
-}
diff --git a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/adderservice/test/test.js b/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/adderservice/test/test.js
deleted file mode 100644
index 3b775c3..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/adderservice/test/test.js
+++ /dev/null
@@ -1,12 +0,0 @@
-var test = require('tap').test
-var service = require('../service')()
-
-test('test add', function (t) {
- t.plan(2)
-
- service.add({first: 1, second: 2}, function (err, result) {
- t.equal(err, null)
- t.equal(result, 3)
- })
-})
-
diff --git a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/adderservice/wiring.js b/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/adderservice/wiring.js
deleted file mode 100644
index 6411252..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/adderservice/wiring.js
+++ /dev/null
@@ -1,55 +0,0 @@
-'use strict'
-
-const net = require('net')
-const nos = require('net-object-stream')
-const through = require('through2')
-const pump = require('pump')
-const bloomrun = require('bloomrun')
-
-const { ADDERSERVICE_SERVICE_PORT } = process.env
-
-module.exports = wiring
-
-function wiring (service) {
- const patterns = createPatternRoutes(service)
- const matcher = createMatcherStream(patterns)
-
- const server = net.createServer((socket) => {
- socket = nos(socket)
- pump(socket, matcher, socket, failure)
- })
-
- server.listen(ADDERSERVICE_SERVICE_PORT, '0.0.0.0', () => {
- console.log('server listening at', ADDERSERVICE_SERVICE_PORT)
- })
-}
-
-function createPatternRoutes (service) {
- const patterns = bloomrun()
-
- patterns.add({role: 'adder', cmd: 'add'}, service.add)
-
- return patterns
-}
-
-function createMatcherStream (patterns) {
- return through.obj((object, enc, cb) => {
- const match = patterns.lookup(object)
- if (match === null) {
- cb()
- return
- }
- match(object, (err, data) => {
- if (err) {
- cb(null, {status: 'error', err: err})
- return
- }
- cb(null, data)
- })
- })
-}
-
-function failure (err) {
- if (err) console.error('Server error', err)
- else console.error('Stream pipeline ended')
-}
\ No newline at end of file
diff --git a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/fuge/fuge.yml b/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/fuge/fuge.yml
deleted file mode 100644
index 94093bd..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/fuge/fuge.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-fuge_global:
- tail: true
- monitor: true
- monitor_excludes:
- - '**/node_modules/**'
- - '**/.git/**'
- - '*.log'
-adderservice:
- type: process
- path: ../adderservice
- run: node index.js
- ports:
- - main=8080
-webapp:
- type: process
- path: ../webapp
- run: npm start
- ports:
- - main=3000
diff --git a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/webapp/app.js b/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/webapp/app.js
deleted file mode 100644
index 90f0e7a..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/webapp/app.js
+++ /dev/null
@@ -1,48 +0,0 @@
-var express = require('express')
-var path = require('path')
-var favicon = require('serve-favicon')
-var logger = require('morgan')
-var cookieParser = require('cookie-parser')
-var bodyParser = require('body-parser')
-
-var index = require('./routes/index')
-var users = require('./routes/users')
-var add = require('./routes/add')
-
-var app = express()
-
-// view engine setup
-app.set('views', path.join(__dirname, 'views'))
-app.set('view engine', 'ejs')
-
-// uncomment after placing your favicon in /public
-// app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
-app.use(logger('dev'))
-app.use(bodyParser.json())
-app.use(bodyParser.urlencoded({ extended: false }))
-app.use(cookieParser())
-app.use(express.static(path.join(__dirname, 'public')))
-
-app.use('/', index)
-app.use('/users', users)
-app.use('/add', add)
-
-// catch 404 and forward to error handler
-app.use(function (req, res, next) {
- var err = new Error('Not Found')
- err.status = 404
- next(err)
-})
-
-// error handler
-app.use(function (err, req, res, next) {
- // set locals, only providing error in development
- res.locals.message = err.message
- res.locals.error = req.app.get('env') === 'development' ? err : {}
-
- // render the error page
- res.status(err.status || 500)
- res.render('error')
-})
-
-module.exports = app
diff --git a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/webapp/bin/www b/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/webapp/bin/www
deleted file mode 100644
index 8715eeb..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/webapp/bin/www
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/usr/bin/env node
-
-/**
- * Module dependencies.
- */
-
-var app = require('../app');
-var debug = require('debug')('webapp:server');
-var http = require('http');
-
-/**
- * Get port from environment and store in Express.
- */
-
-var port = normalizePort(process.env.PORT || '3000');
-app.set('port', port);
-
-/**
- * Create HTTP server.
- */
-
-var server = http.createServer(app);
-
-/**
- * Listen on provided port, on all network interfaces.
- */
-
-server.listen(port);
-server.on('error', onError);
-server.on('listening', onListening);
-
-/**
- * Normalize a port into a number, string, or false.
- */
-
-function normalizePort(val) {
- var port = parseInt(val, 10);
-
- if (isNaN(port)) {
- // named pipe
- return val;
- }
-
- if (port >= 0) {
- // port number
- return port;
- }
-
- return false;
-}
-
-/**
- * Event listener for HTTP server "error" event.
- */
-
-function onError(error) {
- if (error.syscall !== 'listen') {
- throw error;
- }
-
- var bind = typeof port === 'string'
- ? 'Pipe ' + port
- : 'Port ' + port;
-
- // handle specific listen errors with friendly messages
- switch (error.code) {
- case 'EACCES':
- console.error(bind + ' requires elevated privileges');
- process.exit(1);
- break;
- case 'EADDRINUSE':
- console.error(bind + ' is already in use');
- process.exit(1);
- break;
- default:
- throw error;
- }
-}
-
-/**
- * Event listener for HTTP server "listening" event.
- */
-
-function onListening() {
- var addr = server.address();
- var bind = typeof addr === 'string'
- ? 'pipe ' + addr
- : 'port ' + addr.port;
- debug('Listening on ' + bind);
-}
diff --git a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/webapp/package.json b/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/webapp/package.json
deleted file mode 100644
index ce66c6a..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/webapp/package.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "webapp",
- "version": "0.0.0",
- "private": true,
- "scripts": {
- "start": "node ./bin/www"
- },
- "dependencies": {
- "body-parser": "~1.16.0",
- "cookie-parser": "~1.4.3",
- "debug": "~2.6.0",
- "ejs": "~2.5.5",
- "express": "~4.14.1",
- "morgan": "~1.7.0",
- "mu": "^2.1.2",
- "net-object-stream": "^2.0.0",
- "restify": "^4.3.0",
- "serve-favicon": "~2.3.2"
- }
-}
diff --git a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/webapp/public/stylesheets/style.css b/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/webapp/public/stylesheets/style.css
deleted file mode 100644
index 9453385..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/webapp/public/stylesheets/style.css
+++ /dev/null
@@ -1,8 +0,0 @@
-body {
- padding: 50px;
- font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
-}
-
-a {
- color: #00B7FF;
-}
diff --git a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/webapp/routes/add.js b/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/webapp/routes/add.js
deleted file mode 100644
index d96af85..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/webapp/routes/add.js
+++ /dev/null
@@ -1,38 +0,0 @@
-'use strict'
-
-const { Router } = require('express')
-const restify = require('restify')
-const net = require('net')
-const nos = require('net-object-stream')
-const router = Router()
-
-const {
- ADDERSERVICE_SERVICE_HOST,
- ADDERSERVICE_SERVICE_PORT
-} = process.env
-
-function createClient (ns, opts) {
- return createClient[ns] || (createClient[ns] = nos(net.connect(opts)))
-}
-
-router.get('/', function (req, res) {
- res.render('add', { first: 0, second: 0, result: 0 })
-})
-
-router.post('/calculate', function (req, res, next) {
- const client = createClient('calculate', {
- host: ADDERSERVICE_SERVICE_HOST,
- port: ADDERSERVICE_SERVICE_PORT
- })
-
- const role = 'adder'
- const cmd = 'add'
- const { first, second } = req.body
- client.once('data', (data) => {
- const { result } = data
- res.render('add', { first, second, result })
- })
- client.write({role, cmd, first, second})
-})
-
-module.exports = router
diff --git a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/webapp/routes/index.js b/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/webapp/routes/index.js
deleted file mode 100644
index 956680b..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/webapp/routes/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var express = require('express')
-var router = express.Router()
-
-/* GET home page. */
-router.get('/', function (req, res, next) {
- res.render('index', { title: 'Express' })
-})
-
-module.exports = router
diff --git a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/webapp/routes/users.js b/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/webapp/routes/users.js
deleted file mode 100644
index 8cfe88f..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/webapp/routes/users.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var express = require('express')
-var router = express.Router()
-
-/* GET users listing. */
-router.get('/', function (req, res, next) {
- res.send('respond with a resource')
-})
-
-module.exports = router
diff --git a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/webapp/views/add.ejs b/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/webapp/views/add.ejs
deleted file mode 100644
index da8279c..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/webapp/views/add.ejs
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
- Add
-
-
-
- Add it up!
-
-
- result = <%= result %>
-
-
diff --git a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/webapp/views/error.ejs b/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/webapp/views/error.ejs
deleted file mode 100644
index 7cf94ed..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/webapp/views/error.ejs
+++ /dev/null
@@ -1,3 +0,0 @@
-<%= message %>
-<%= error.status %>
-<%= error.stack %>
diff --git a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/webapp/views/index.ejs b/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/webapp/views/index.ejs
deleted file mode 100644
index 7b7a1d6..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro-pattern-routing/webapp/views/index.ejs
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
- <%= title %>
-
-
-
- <%= title %>
- Welcome to <%= title %>
-
-
diff --git a/Chapter10/standardizing-service-boilerplate/micro/adderservice/index.js b/Chapter10/standardizing-service-boilerplate/micro/adderservice/index.js
deleted file mode 100644
index 1f2d9cf..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro/adderservice/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict'
-
-const wiring = require('./wiring')
-const service = require('./service')()
-
-
-wiring(service)
diff --git a/Chapter10/standardizing-service-boilerplate/micro/adderservice/package.json b/Chapter10/standardizing-service-boilerplate/micro/adderservice/package.json
deleted file mode 100644
index 7cef23a..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro/adderservice/package.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "name": "adderservice",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "tap test"
- },
- "keywords": [],
- "author": "Peter Elger",
- "license": "ISC",
- "dependencies": {
- "restify": "^4.3.0"
- },
- "devDependencies": {
- "tap": "^10.3.1"
- }
-}
diff --git a/Chapter10/standardizing-service-boilerplate/micro/adderservice/service.js b/Chapter10/standardizing-service-boilerplate/micro/adderservice/service.js
deleted file mode 100644
index 9d0d175..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro/adderservice/service.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict'
-
-module.exports = service
-
-function service () {
- function add (args, cb) {
- const {first, second} = args
- const result = (parseInt(first, 10) + parseInt(second, 10))
- cb(null, {result: result.toString()})
- }
-
- return { add }
-}
diff --git a/Chapter10/standardizing-service-boilerplate/micro/adderservice/test/index.js b/Chapter10/standardizing-service-boilerplate/micro/adderservice/test/index.js
deleted file mode 100644
index 32c45e5..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro/adderservice/test/index.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict'
-
-const {test} = require('tap')
-const service = require('../service')()
-
-test('test add', (t) => {
- t.plan(2)
-
- service.add({first: 1, second: 2}, (err, answer) => {
- t.error(err)
- t.same(answer, {result: 3})
- })
-})
diff --git a/Chapter10/standardizing-service-boilerplate/micro/adderservice/wiring.js b/Chapter10/standardizing-service-boilerplate/micro/adderservice/wiring.js
deleted file mode 100644
index 0ed018c..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro/adderservice/wiring.js
+++ /dev/null
@@ -1,27 +0,0 @@
-'use strict'
-
-const restify = require('restify')
-const { ADDERSERVICE_SERVICE_PORT } = process.env
-
-module.exports = wiring
-
-function wiring (service) {
- const server = restify.createServer()
-
- server.get('/add/:first/:second', (req, res, next) => {
- service.add(req.params, (err, result) => {
- if (err) {
- res.send(err)
- next()
- return
- }
- res.send(200, result)
- next()
- })
- })
-
- server.listen(ADDERSERVICE_SERVICE_PORT, '0.0.0.0', () => {
- console.log('%s listening at %s', server.name, server.url)
- })
-}
-
diff --git a/Chapter10/standardizing-service-boilerplate/micro/fuge/fuge.yml b/Chapter10/standardizing-service-boilerplate/micro/fuge/fuge.yml
deleted file mode 100644
index 94093bd..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro/fuge/fuge.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-fuge_global:
- tail: true
- monitor: true
- monitor_excludes:
- - '**/node_modules/**'
- - '**/.git/**'
- - '*.log'
-adderservice:
- type: process
- path: ../adderservice
- run: node index.js
- ports:
- - main=8080
-webapp:
- type: process
- path: ../webapp
- run: npm start
- ports:
- - main=3000
diff --git a/Chapter10/standardizing-service-boilerplate/micro/webapp/app.js b/Chapter10/standardizing-service-boilerplate/micro/webapp/app.js
deleted file mode 100644
index 90f0e7a..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro/webapp/app.js
+++ /dev/null
@@ -1,48 +0,0 @@
-var express = require('express')
-var path = require('path')
-var favicon = require('serve-favicon')
-var logger = require('morgan')
-var cookieParser = require('cookie-parser')
-var bodyParser = require('body-parser')
-
-var index = require('./routes/index')
-var users = require('./routes/users')
-var add = require('./routes/add')
-
-var app = express()
-
-// view engine setup
-app.set('views', path.join(__dirname, 'views'))
-app.set('view engine', 'ejs')
-
-// uncomment after placing your favicon in /public
-// app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
-app.use(logger('dev'))
-app.use(bodyParser.json())
-app.use(bodyParser.urlencoded({ extended: false }))
-app.use(cookieParser())
-app.use(express.static(path.join(__dirname, 'public')))
-
-app.use('/', index)
-app.use('/users', users)
-app.use('/add', add)
-
-// catch 404 and forward to error handler
-app.use(function (req, res, next) {
- var err = new Error('Not Found')
- err.status = 404
- next(err)
-})
-
-// error handler
-app.use(function (err, req, res, next) {
- // set locals, only providing error in development
- res.locals.message = err.message
- res.locals.error = req.app.get('env') === 'development' ? err : {}
-
- // render the error page
- res.status(err.status || 500)
- res.render('error')
-})
-
-module.exports = app
diff --git a/Chapter10/standardizing-service-boilerplate/micro/webapp/bin/www b/Chapter10/standardizing-service-boilerplate/micro/webapp/bin/www
deleted file mode 100644
index 8715eeb..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro/webapp/bin/www
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/usr/bin/env node
-
-/**
- * Module dependencies.
- */
-
-var app = require('../app');
-var debug = require('debug')('webapp:server');
-var http = require('http');
-
-/**
- * Get port from environment and store in Express.
- */
-
-var port = normalizePort(process.env.PORT || '3000');
-app.set('port', port);
-
-/**
- * Create HTTP server.
- */
-
-var server = http.createServer(app);
-
-/**
- * Listen on provided port, on all network interfaces.
- */
-
-server.listen(port);
-server.on('error', onError);
-server.on('listening', onListening);
-
-/**
- * Normalize a port into a number, string, or false.
- */
-
-function normalizePort(val) {
- var port = parseInt(val, 10);
-
- if (isNaN(port)) {
- // named pipe
- return val;
- }
-
- if (port >= 0) {
- // port number
- return port;
- }
-
- return false;
-}
-
-/**
- * Event listener for HTTP server "error" event.
- */
-
-function onError(error) {
- if (error.syscall !== 'listen') {
- throw error;
- }
-
- var bind = typeof port === 'string'
- ? 'Pipe ' + port
- : 'Port ' + port;
-
- // handle specific listen errors with friendly messages
- switch (error.code) {
- case 'EACCES':
- console.error(bind + ' requires elevated privileges');
- process.exit(1);
- break;
- case 'EADDRINUSE':
- console.error(bind + ' is already in use');
- process.exit(1);
- break;
- default:
- throw error;
- }
-}
-
-/**
- * Event listener for HTTP server "listening" event.
- */
-
-function onListening() {
- var addr = server.address();
- var bind = typeof addr === 'string'
- ? 'pipe ' + addr
- : 'port ' + addr.port;
- debug('Listening on ' + bind);
-}
diff --git a/Chapter10/standardizing-service-boilerplate/micro/webapp/package.json b/Chapter10/standardizing-service-boilerplate/micro/webapp/package.json
deleted file mode 100644
index c0d6ed3..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro/webapp/package.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "webapp",
- "version": "0.0.0",
- "private": true,
- "scripts": {
- "start": "node ./bin/www"
- },
- "dependencies": {
- "body-parser": "~1.16.0",
- "cookie-parser": "~1.4.3",
- "debug": "~2.6.0",
- "ejs": "~2.5.5",
- "express": "~4.14.1",
- "morgan": "~1.7.0",
- "mu": "^2.1.2",
- "restify": "^4.3.0",
- "serve-favicon": "~2.3.2"
- }
-}
diff --git a/Chapter10/standardizing-service-boilerplate/micro/webapp/public/stylesheets/style.css b/Chapter10/standardizing-service-boilerplate/micro/webapp/public/stylesheets/style.css
deleted file mode 100644
index 9453385..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro/webapp/public/stylesheets/style.css
+++ /dev/null
@@ -1,8 +0,0 @@
-body {
- padding: 50px;
- font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
-}
-
-a {
- color: #00B7FF;
-}
diff --git a/Chapter10/standardizing-service-boilerplate/micro/webapp/routes/add.js b/Chapter10/standardizing-service-boilerplate/micro/webapp/routes/add.js
deleted file mode 100644
index 2074c32..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro/webapp/routes/add.js
+++ /dev/null
@@ -1,34 +0,0 @@
-'use strict'
-
-const { Router } = require('express')
-const restify = require('restify')
-const router = Router()
-
-const {
- ADDERSERVICE_SERVICE_HOST,
- ADDERSERVICE_SERVICE_PORT
-} = process.env
-
-router.get('/', function (req, res) {
- res.render('add', { first: 0, second: 0, result: 0 })
-})
-
-router.post('/calculate', function (req, res, next) {
- const client = restify.createJSONClient({
- url: `http://${ADDERSERVICE_SERVICE_HOST}:${ADDERSERVICE_SERVICE_PORT}`
- })
- const { first, second } = req.body
- client.get(
- `/add/${first}/${second}`,
- (err, svcReq, svcRes, data) => {
- if (err) {
- next(err)
- return
- }
- const { result } = data
- res.render('add', { first, second, result })
- }
- )
-})
-
-module.exports = router
diff --git a/Chapter10/standardizing-service-boilerplate/micro/webapp/routes/index.js b/Chapter10/standardizing-service-boilerplate/micro/webapp/routes/index.js
deleted file mode 100644
index 956680b..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro/webapp/routes/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var express = require('express')
-var router = express.Router()
-
-/* GET home page. */
-router.get('/', function (req, res, next) {
- res.render('index', { title: 'Express' })
-})
-
-module.exports = router
diff --git a/Chapter10/standardizing-service-boilerplate/micro/webapp/routes/users.js b/Chapter10/standardizing-service-boilerplate/micro/webapp/routes/users.js
deleted file mode 100644
index 8cfe88f..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro/webapp/routes/users.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var express = require('express')
-var router = express.Router()
-
-/* GET users listing. */
-router.get('/', function (req, res, next) {
- res.send('respond with a resource')
-})
-
-module.exports = router
diff --git a/Chapter10/standardizing-service-boilerplate/micro/webapp/views/add.ejs b/Chapter10/standardizing-service-boilerplate/micro/webapp/views/add.ejs
deleted file mode 100644
index da8279c..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro/webapp/views/add.ejs
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
- Add
-
-
-
- Add it up!
-
-
- result = <%= result %>
-
-
diff --git a/Chapter10/standardizing-service-boilerplate/micro/webapp/views/error.ejs b/Chapter10/standardizing-service-boilerplate/micro/webapp/views/error.ejs
deleted file mode 100644
index 7cf94ed..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro/webapp/views/error.ejs
+++ /dev/null
@@ -1,3 +0,0 @@
-<%= message %>
-<%= error.status %>
-<%= error.stack %>
diff --git a/Chapter10/standardizing-service-boilerplate/micro/webapp/views/index.ejs b/Chapter10/standardizing-service-boilerplate/micro/webapp/views/index.ejs
deleted file mode 100644
index 7b7a1d6..0000000
--- a/Chapter10/standardizing-service-boilerplate/micro/webapp/views/index.ejs
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
- <%= title %>
-
-
-
- <%= title %>
- Welcome to <%= title %>
-
-
diff --git a/Chapter10/using-containerized-infrastructure/micro/adderservice/index.js b/Chapter10/using-containerized-infrastructure/micro/adderservice/index.js
deleted file mode 100644
index 1f2d9cf..0000000
--- a/Chapter10/using-containerized-infrastructure/micro/adderservice/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict'
-
-const wiring = require('./wiring')
-const service = require('./service')()
-
-
-wiring(service)
diff --git a/Chapter10/using-containerized-infrastructure/micro/adderservice/package.json b/Chapter10/using-containerized-infrastructure/micro/adderservice/package.json
deleted file mode 100644
index 7cef23a..0000000
--- a/Chapter10/using-containerized-infrastructure/micro/adderservice/package.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "name": "adderservice",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "tap test"
- },
- "keywords": [],
- "author": "Peter Elger",
- "license": "ISC",
- "dependencies": {
- "restify": "^4.3.0"
- },
- "devDependencies": {
- "tap": "^10.3.1"
- }
-}
diff --git a/Chapter10/using-containerized-infrastructure/micro/adderservice/service.js b/Chapter10/using-containerized-infrastructure/micro/adderservice/service.js
deleted file mode 100644
index 9d0d175..0000000
--- a/Chapter10/using-containerized-infrastructure/micro/adderservice/service.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict'
-
-module.exports = service
-
-function service () {
- function add (args, cb) {
- const {first, second} = args
- const result = (parseInt(first, 10) + parseInt(second, 10))
- cb(null, {result: result.toString()})
- }
-
- return { add }
-}
diff --git a/Chapter10/using-containerized-infrastructure/micro/adderservice/test/index.js b/Chapter10/using-containerized-infrastructure/micro/adderservice/test/index.js
deleted file mode 100644
index 32c45e5..0000000
--- a/Chapter10/using-containerized-infrastructure/micro/adderservice/test/index.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict'
-
-const {test} = require('tap')
-const service = require('../service')()
-
-test('test add', (t) => {
- t.plan(2)
-
- service.add({first: 1, second: 2}, (err, answer) => {
- t.error(err)
- t.same(answer, {result: 3})
- })
-})
diff --git a/Chapter10/using-containerized-infrastructure/micro/adderservice/wiring.js b/Chapter10/using-containerized-infrastructure/micro/adderservice/wiring.js
deleted file mode 100644
index 0ed018c..0000000
--- a/Chapter10/using-containerized-infrastructure/micro/adderservice/wiring.js
+++ /dev/null
@@ -1,27 +0,0 @@
-'use strict'
-
-const restify = require('restify')
-const { ADDERSERVICE_SERVICE_PORT } = process.env
-
-module.exports = wiring
-
-function wiring (service) {
- const server = restify.createServer()
-
- server.get('/add/:first/:second', (req, res, next) => {
- service.add(req.params, (err, result) => {
- if (err) {
- res.send(err)
- next()
- return
- }
- res.send(200, result)
- next()
- })
- })
-
- server.listen(ADDERSERVICE_SERVICE_PORT, '0.0.0.0', () => {
- console.log('%s listening at %s', server.name, server.url)
- })
-}
-
diff --git a/Chapter10/using-containerized-infrastructure/micro/auditservice/index.js b/Chapter10/using-containerized-infrastructure/micro/auditservice/index.js
deleted file mode 100644
index 40a4677..0000000
--- a/Chapter10/using-containerized-infrastructure/micro/auditservice/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-'use strict'
-
-const wiring = require('./wiring')
-const service = require('./service')()
-
-wiring(service)
diff --git a/Chapter10/using-containerized-infrastructure/micro/auditservice/package.json b/Chapter10/using-containerized-infrastructure/micro/auditservice/package.json
deleted file mode 100644
index 0231ff1..0000000
--- a/Chapter10/using-containerized-infrastructure/micro/auditservice/package.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "name": "auditservice",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "Peter Elger",
- "license": "ISC",
- "dependencies": {
- "mongo": "^0.1.0",
- "restify": "^4.3.0"
- }
-}
diff --git a/Chapter10/using-containerized-infrastructure/micro/auditservice/service.js b/Chapter10/using-containerized-infrastructure/micro/auditservice/service.js
deleted file mode 100644
index f6592f2..0000000
--- a/Chapter10/using-containerized-infrastructure/micro/auditservice/service.js
+++ /dev/null
@@ -1,58 +0,0 @@
-'use strict'
-
-const { MongoClient } = require('mongodb')
-const {
- MONGO_SERVICE_HOST,
- MONGO_SERVICE_PORT
-} = process.env
-const url = `mongodb://${MONGO_SERVICE_HOST}:${MONGO_SERVICE_PORT}/audit`
-
-module.exports = service
-
-function service () {
- function append (args, cb) {
- MongoClient.connect(url, (err, db) => {
- if (err) {
- cb(err)
- return
- }
-
- const audit = db.collection('audit')
- const data = {
- ts: Date.now(),
- calc: args.calc,
- result: args.calcResult
- }
-
- audit.insert(data, (err, result) => {
- if (err) {
- cb(err)
- return
- }
- cb(null, {result: result.toString()})
- db.close()
- })
- })
- }
-
- function list (args, cb) {
- MongoClient.connect(url, (err, db) => {
- if (err) {
- cb(err)
- return
- }
- const audit = db.collection('audit')
- audit.find({}, {limit: 10}).toArray((err, docs) => {
- if (err) {
- cb(err)
- return
- }
- cb(null, {list: docs})
- db.close()
- })
- })
- }
-
- return { append, list }
-}
-
diff --git a/Chapter10/using-containerized-infrastructure/micro/auditservice/wiring.js b/Chapter10/using-containerized-infrastructure/micro/auditservice/wiring.js
deleted file mode 100644
index b18dce8..0000000
--- a/Chapter10/using-containerized-infrastructure/micro/auditservice/wiring.js
+++ /dev/null
@@ -1,39 +0,0 @@
-'use strict'
-
-const restify = require('restify')
-const { AUDITSERVICE_SERVICE_PORT } = process.env
-
-module.exports = wiring
-
-function wiring (service) {
- const server = restify.createServer()
-
- server.use(restify.bodyParser())
-
- server.post('/append', (req, res, next) => {
- service.append(req.params, (err, result) => {
- if (err) {
- res.send(err)
- return
- }
- res.send(result)
- next()
- })
- })
-
- server.get('/list', (req, res, next) => {
- service.list(req.params, (err, result) => {
- if (err) {
- res.send(err)
- return
- }
- res.send(200, result)
- next()
- })
- })
-
- server.listen(AUDITSERVICE_SERVICE_PORT, '0.0.0.0', () => {
- console.log('%s listening at %s', server.name, server.url)
- })
-}
-
diff --git a/Chapter10/using-containerized-infrastructure/micro/fuge/fuge.yml b/Chapter10/using-containerized-infrastructure/micro/fuge/fuge.yml
deleted file mode 100644
index c3311d4..0000000
--- a/Chapter10/using-containerized-infrastructure/micro/fuge/fuge.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-fuge_global:
- tail: true
- monitor: true
- monitor_excludes:
- - '**/node_modules/**'
- - '**/.git/**'
- - '*.log'
-adderservice:
- type: process
- path: ../adderservice
- run: node index.js
- ports:
- - main=8080
-webapp:
- type: process
- path: ../webapp
- run: npm start
- ports:
- - main=3000
-auditservice:
- type: process
- path: ../auditservice
- run: 'node index.js'
- ports:
- - main=8081
-mongo:
- image: mongo
- type: container
- ports:
- - main=27017:27017
diff --git a/Chapter10/using-containerized-infrastructure/micro/fuge/fuge2.yml b/Chapter10/using-containerized-infrastructure/micro/fuge/fuge2.yml
deleted file mode 100644
index e5c2a4b..0000000
--- a/Chapter10/using-containerized-infrastructure/micro/fuge/fuge2.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-fuge_global:
- run_containers: false
- tail: true
- monitor: true
- monitor_excludes:
- - '**/node_modules/**'
- - '**/.git/**'
- - '*.log'
-adderservice:
- type: process
- path: ../adderservice
- run: node index.js
- ports:
- - main=8080
-webapp:
- type: process
- path: ../webapp
- run: npm start
- ports:
- - main=3000
-auditservice:
- type: process
- path: ../auditservice
- run: 'node index.js'
- ports:
- - main=8081
-mongo:
- image: mongo
- type: container
- ports:
- - main=27017:27017
diff --git a/Chapter10/using-containerized-infrastructure/micro/webapp/app.js b/Chapter10/using-containerized-infrastructure/micro/webapp/app.js
deleted file mode 100644
index ec527f4..0000000
--- a/Chapter10/using-containerized-infrastructure/micro/webapp/app.js
+++ /dev/null
@@ -1,50 +0,0 @@
-var express = require('express')
-var path = require('path')
-var favicon = require('serve-favicon')
-var logger = require('morgan')
-var cookieParser = require('cookie-parser')
-var bodyParser = require('body-parser')
-
-var index = require('./routes/index')
-var users = require('./routes/users')
-var add = require('./routes/add')
-var audit = require('./routes/audit')
-
-var app = express()
-
-// view engine setup
-app.set('views', path.join(__dirname, 'views'))
-app.set('view engine', 'ejs')
-
-// uncomment after placing your favicon in /public
-// app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
-app.use(logger('dev'))
-app.use(bodyParser.json())
-app.use(bodyParser.urlencoded({ extended: false }))
-app.use(cookieParser())
-app.use(express.static(path.join(__dirname, 'public')))
-
-app.use('/', index)
-app.use('/users', users)
-app.use('/add', add)
-app.use('/audit', audit)
-
-// catch 404 and forward to error handler
-app.use(function (req, res, next) {
- var err = new Error('Not Found')
- err.status = 404
- next(err)
-})
-
-// error handler
-app.use(function (err, req, res, next) {
- // set locals, only providing error in development
- res.locals.message = err.message
- res.locals.error = req.app.get('env') === 'development' ? err : {}
-
- // render the error page
- res.status(err.status || 500)
- res.render('error')
-})
-
-module.exports = app
diff --git a/Chapter10/using-containerized-infrastructure/micro/webapp/bin/www b/Chapter10/using-containerized-infrastructure/micro/webapp/bin/www
deleted file mode 100644
index 8715eeb..0000000
--- a/Chapter10/using-containerized-infrastructure/micro/webapp/bin/www
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/usr/bin/env node
-
-/**
- * Module dependencies.
- */
-
-var app = require('../app');
-var debug = require('debug')('webapp:server');
-var http = require('http');
-
-/**
- * Get port from environment and store in Express.
- */
-
-var port = normalizePort(process.env.PORT || '3000');
-app.set('port', port);
-
-/**
- * Create HTTP server.
- */
-
-var server = http.createServer(app);
-
-/**
- * Listen on provided port, on all network interfaces.
- */
-
-server.listen(port);
-server.on('error', onError);
-server.on('listening', onListening);
-
-/**
- * Normalize a port into a number, string, or false.
- */
-
-function normalizePort(val) {
- var port = parseInt(val, 10);
-
- if (isNaN(port)) {
- // named pipe
- return val;
- }
-
- if (port >= 0) {
- // port number
- return port;
- }
-
- return false;
-}
-
-/**
- * Event listener for HTTP server "error" event.
- */
-
-function onError(error) {
- if (error.syscall !== 'listen') {
- throw error;
- }
-
- var bind = typeof port === 'string'
- ? 'Pipe ' + port
- : 'Port ' + port;
-
- // handle specific listen errors with friendly messages
- switch (error.code) {
- case 'EACCES':
- console.error(bind + ' requires elevated privileges');
- process.exit(1);
- break;
- case 'EADDRINUSE':
- console.error(bind + ' is already in use');
- process.exit(1);
- break;
- default:
- throw error;
- }
-}
-
-/**
- * Event listener for HTTP server "listening" event.
- */
-
-function onListening() {
- var addr = server.address();
- var bind = typeof addr === 'string'
- ? 'pipe ' + addr
- : 'port ' + addr.port;
- debug('Listening on ' + bind);
-}
diff --git a/Chapter10/using-containerized-infrastructure/micro/webapp/package.json b/Chapter10/using-containerized-infrastructure/micro/webapp/package.json
deleted file mode 100644
index c0d6ed3..0000000
--- a/Chapter10/using-containerized-infrastructure/micro/webapp/package.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "webapp",
- "version": "0.0.0",
- "private": true,
- "scripts": {
- "start": "node ./bin/www"
- },
- "dependencies": {
- "body-parser": "~1.16.0",
- "cookie-parser": "~1.4.3",
- "debug": "~2.6.0",
- "ejs": "~2.5.5",
- "express": "~4.14.1",
- "morgan": "~1.7.0",
- "mu": "^2.1.2",
- "restify": "^4.3.0",
- "serve-favicon": "~2.3.2"
- }
-}
diff --git a/Chapter10/using-containerized-infrastructure/micro/webapp/public/stylesheets/style.css b/Chapter10/using-containerized-infrastructure/micro/webapp/public/stylesheets/style.css
deleted file mode 100644
index 9453385..0000000
--- a/Chapter10/using-containerized-infrastructure/micro/webapp/public/stylesheets/style.css
+++ /dev/null
@@ -1,8 +0,0 @@
-body {
- padding: 50px;
- font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
-}
-
-a {
- color: #00B7FF;
-}
diff --git a/Chapter10/using-containerized-infrastructure/micro/webapp/routes/add.js b/Chapter10/using-containerized-infrastructure/micro/webapp/routes/add.js
deleted file mode 100644
index 2744945..0000000
--- a/Chapter10/using-containerized-infrastructure/micro/webapp/routes/add.js
+++ /dev/null
@@ -1,49 +0,0 @@
-'use strict'
-
-const { Router } = require('express')
-const restify = require('restify')
-const router = Router()
-
-const {
- ADDERSERVICE_SERVICE_HOST,
- ADDERSERVICE_SERVICE_PORT,
- AUDITSERVICE_SERVICE_HOST,
- AUDITSERVICE_SERVICE_PORT,
-} = process.env
-
-router.get('/', function (req, res) {
- res.render('add', { first: 0, second: 0, result: 0 })
-})
-
-router.post('/calculate', function (req, res, next) {
- const clients = {
- adder: restify.createJSONClient({
- url: `http://${ADDERSERVICE_SERVICE_HOST}:${ADDERSERVICE_SERVICE_PORT}`
- }),
- audit: restify.createJSONClient({
- url: `http://${AUDITSERVICE_SERVICE_HOST}:${AUDITSERVICE_SERVICE_PORT}`
- })
- }
- const { first, second } = req.body
- clients.adder.get(
- `/add/${first}/${second}`,
- (err, svcReq, svcRes, data) => {
- if (err) {
- next(err)
- return
- }
-
- const { result } = data
- clients.audit.post('/append', {
- calc: first + '+' + second,
- calcResult: result
- }, (err) => {
- if (err) console.error(err)
- })
-
- res.render('add', { first, second, result })
- }
- )
-})
-
-module.exports = router
diff --git a/Chapter10/using-containerized-infrastructure/micro/webapp/routes/audit.js b/Chapter10/using-containerized-infrastructure/micro/webapp/routes/audit.js
deleted file mode 100644
index 1385f8f..0000000
--- a/Chapter10/using-containerized-infrastructure/micro/webapp/routes/audit.js
+++ /dev/null
@@ -1,25 +0,0 @@
-'use strict'
-
-const { Router } = require('express')
-const restify = require('restify')
-const router = Router()
-
-const {
- AUDITSERVICE_SERVICE_HOST,
- AUDITSERVICE_SERVICE_PORT
-} = process.env
-
-router.get('/', (req, res, next) => {
- const url = `http://${AUDITSERVICE_SERVICE_HOST}:${AUDITSERVICE_SERVICE_PORT}`
- const client = restify.createJsonClient({ url })
-
- client.get('/list', (err, svcReq, svcRes, data) => {
- if (err) {
- next(err)
- return
- }
- res.render('audit', data)
- })
-})
-
-module.exports = router
diff --git a/Chapter10/using-containerized-infrastructure/micro/webapp/routes/index.js b/Chapter10/using-containerized-infrastructure/micro/webapp/routes/index.js
deleted file mode 100644
index 956680b..0000000
--- a/Chapter10/using-containerized-infrastructure/micro/webapp/routes/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var express = require('express')
-var router = express.Router()
-
-/* GET home page. */
-router.get('/', function (req, res, next) {
- res.render('index', { title: 'Express' })
-})
-
-module.exports = router
diff --git a/Chapter10/using-containerized-infrastructure/micro/webapp/routes/users.js b/Chapter10/using-containerized-infrastructure/micro/webapp/routes/users.js
deleted file mode 100644
index 8cfe88f..0000000
--- a/Chapter10/using-containerized-infrastructure/micro/webapp/routes/users.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var express = require('express')
-var router = express.Router()
-
-/* GET users listing. */
-router.get('/', function (req, res, next) {
- res.send('respond with a resource')
-})
-
-module.exports = router
diff --git a/Chapter10/using-containerized-infrastructure/micro/webapp/views/add.ejs b/Chapter10/using-containerized-infrastructure/micro/webapp/views/add.ejs
deleted file mode 100644
index da8279c..0000000
--- a/Chapter10/using-containerized-infrastructure/micro/webapp/views/add.ejs
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
- Add
-
-
-
- Add it up!
-
-
- result = <%= result %>
-
-
diff --git a/Chapter10/using-containerized-infrastructure/micro/webapp/views/audit.ejs b/Chapter10/using-containerized-infrastructure/micro/webapp/views/audit.ejs
deleted file mode 100644
index dd6d71b..0000000
--- a/Chapter10/using-containerized-infrastructure/micro/webapp/views/audit.ejs
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
- Audit
-
-
-
- Calculation History
-
- <% list.forEach(function (el) { %>
- - at: <%= new Date(el.ts).toLocaleString() %>, calculated: <%= el.calc %>, result: <%= el.result %>
- <% }) %>
-
-
-
\ No newline at end of file
diff --git a/Chapter10/using-containerized-infrastructure/micro/webapp/views/error.ejs b/Chapter10/using-containerized-infrastructure/micro/webapp/views/error.ejs
deleted file mode 100644
index 7cf94ed..0000000
--- a/Chapter10/using-containerized-infrastructure/micro/webapp/views/error.ejs
+++ /dev/null
@@ -1,3 +0,0 @@
-<%= message %>
-<%= error.status %>
-<%= error.stack %>
diff --git a/Chapter10/using-containerized-infrastructure/micro/webapp/views/index.ejs b/Chapter10/using-containerized-infrastructure/micro/webapp/views/index.ejs
deleted file mode 100644
index 7b7a1d6..0000000
--- a/Chapter10/using-containerized-infrastructure/micro/webapp/views/index.ejs
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
- <%= title %>
-
-
-
- <%= title %>
- Welcome to <%= title %>
-
-
diff --git a/Chapter11/building-a-single-container/micro/adderservice/.dockerignore b/Chapter11/building-a-single-container/micro/adderservice/.dockerignore
deleted file mode 100644
index 90718e6..0000000
--- a/Chapter11/building-a-single-container/micro/adderservice/.dockerignore
+++ /dev/null
@@ -1,4 +0,0 @@
-.git
-.gitignore
-node_modules
-npm-debug.log
diff --git a/Chapter11/building-a-single-container/micro/adderservice/Dockerfile b/Chapter11/building-a-single-container/micro/adderservice/Dockerfile
deleted file mode 100644
index 4d2e56b..0000000
--- a/Chapter11/building-a-single-container/micro/adderservice/Dockerfile
+++ /dev/null
@@ -1,7 +0,0 @@
-FROM node:slim
-RUN mkdir -p /home/node/service
-WORKDIR /home/node/service
-COPY package.json /home/node/service
-RUN npm install
-COPY . /home/node/service
-CMD [ "node", "index.js" ]
diff --git a/Chapter11/building-a-single-container/micro/adderservice/index.js b/Chapter11/building-a-single-container/micro/adderservice/index.js
deleted file mode 100644
index 753a4ce..0000000
--- a/Chapter11/building-a-single-container/micro/adderservice/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-'use strict'
-
-const wiring = require('./wiring')
-const service = require('./service')()
-
-wiring(service)
\ No newline at end of file
diff --git a/Chapter11/building-a-single-container/micro/adderservice/package.json b/Chapter11/building-a-single-container/micro/adderservice/package.json
deleted file mode 100644
index 595a5b0..0000000
--- a/Chapter11/building-a-single-container/micro/adderservice/package.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "adder-service",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "Peter Elger ",
- "license": "ISC",
- "dependencies": {
- "restify": "^4.3.0"
- }
-}
diff --git a/Chapter11/building-a-single-container/micro/adderservice/service.js b/Chapter11/building-a-single-container/micro/adderservice/service.js
deleted file mode 100644
index af95084..0000000
--- a/Chapter11/building-a-single-container/micro/adderservice/service.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict'
-
-module.exports = service
-
-function service () {
- function add (args, cb) {
- const {first, second} = args
- const result = (parseInt(first, 10) + parseInt(second, 10))
- cb(null, {result: result.toString()})
- }
-
- return { add }
-}
\ No newline at end of file
diff --git a/Chapter11/building-a-single-container/micro/adderservice/wiring.js b/Chapter11/building-a-single-container/micro/adderservice/wiring.js
deleted file mode 100644
index 0e81c6c..0000000
--- a/Chapter11/building-a-single-container/micro/adderservice/wiring.js
+++ /dev/null
@@ -1,26 +0,0 @@
-'use strict'
-
-const restify = require('restify')
-const { ADDERSERVICE_SERVICE_PORT } = process.env
-
-module.exports = wiring
-
-function wiring (service) {
- const server = restify.createServer()
-
- server.get('/add/:first/:second', (req, res, next) => {
- service.add(req.params, (err, result) => {
- if (err) {
- res.send(err)
- next()
- return
- }
- res.send(200, result)
- next()
- })
- })
-
- server.listen(ADDERSERVICE_SERVICE_PORT, '0.0.0.0', () => {
- console.log('%s listening at %s', server.name, server.url)
- })
-}
\ No newline at end of file
diff --git a/Chapter11/building-a-single-container/test.sh b/Chapter11/building-a-single-container/test.sh
deleted file mode 100644
index 5086478..0000000
--- a/Chapter11/building-a-single-container/test.sh
+++ /dev/null
@@ -1 +0,0 @@
-curl http://localhost:8080/add/2/3
diff --git a/Chapter11/creating-a-deployment-pipeline/micro/adderservice/.dockerignore b/Chapter11/creating-a-deployment-pipeline/micro/adderservice/.dockerignore
deleted file mode 100644
index 90718e6..0000000
--- a/Chapter11/creating-a-deployment-pipeline/micro/adderservice/.dockerignore
+++ /dev/null
@@ -1,4 +0,0 @@
-.git
-.gitignore
-node_modules
-npm-debug.log
diff --git a/Chapter11/creating-a-deployment-pipeline/micro/adderservice/Dockerfile b/Chapter11/creating-a-deployment-pipeline/micro/adderservice/Dockerfile
deleted file mode 100644
index 4d2e56b..0000000
--- a/Chapter11/creating-a-deployment-pipeline/micro/adderservice/Dockerfile
+++ /dev/null
@@ -1,7 +0,0 @@
-FROM node:slim
-RUN mkdir -p /home/node/service
-WORKDIR /home/node/service
-COPY package.json /home/node/service
-RUN npm install
-COPY . /home/node/service
-CMD [ "node", "index.js" ]
diff --git a/Chapter11/creating-a-deployment-pipeline/micro/adderservice/Jenkinsfile b/Chapter11/creating-a-deployment-pipeline/micro/adderservice/Jenkinsfile
deleted file mode 100644
index 8ea826e..0000000
--- a/Chapter11/creating-a-deployment-pipeline/micro/adderservice/Jenkinsfile
+++ /dev/null
@@ -1,32 +0,0 @@
-pipeline {
- agent any
-
- stages {
- stage('Checkout') {
- steps {
- checkout scm
- }
- }
- stage('Build') {
- steps {
- sh 'source ~/.bashrc && cd adderservice && npm install'
- }
- }
- stage('Test'){
- steps {
- sh 'source ~/.bashrc && cd adderservice && npm test'
- }
- }
- stage('Container'){
- steps {
- sh 'source ~/.bashrc && cd adderservice && sh build.sh container'
- }
- }
- stage('Deploy'){
- steps {
- sh 'source ~/.bashrc && cd adderservice && sh build.sh deploy'
- }
- }
- }
-}
-
diff --git a/Chapter11/creating-a-deployment-pipeline/micro/adderservice/build.sh b/Chapter11/creating-a-deployment-pipeline/micro/adderservice/build.sh
deleted file mode 100644
index 7da8cb6..0000000
--- a/Chapter11/creating-a-deployment-pipeline/micro/adderservice/build.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash
-source ~/.bashrc
-
-GITSHA=$(git rev-parse --short HEAD)
-
-case "$1" in
- container)
- sudo -u pelger docker build -t adderservice:$GITSHA .
- sudo -u pelger docker tag adderservice:$GITSHA pelger/adderservice:$GITSHA
- sudo -i -u pelger docker push pelger/adderservice:$GITSHA
- ;;
- deploy)
- sed -e s/_NAME_/adderservice/ -e s/_PORT_/8080/ < ../deployment/service-template.yml > svc.yml
- sed -e s/_NAME_/adderservice/ -e s/_PORT_/8080/ -e s/_IMAGE_/pelger\\/adderservice:$GITSHA/ < ../deployment/deployment-template.yml > dep.yml
- sudo -i -u pelger kubectl apply -f $(pwd)/svc.yml
- sudo -i -u pelger kubectl apply -f $(pwd)/dep.yml
- ;;
- *)
- echo 'invalid build command'
- exit 1
- ;;
-esac
-
diff --git a/Chapter11/creating-a-deployment-pipeline/micro/adderservice/index.js b/Chapter11/creating-a-deployment-pipeline/micro/adderservice/index.js
deleted file mode 100644
index 1f2d9cf..0000000
--- a/Chapter11/creating-a-deployment-pipeline/micro/adderservice/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict'
-
-const wiring = require('./wiring')
-const service = require('./service')()
-
-
-wiring(service)
diff --git a/Chapter11/creating-a-deployment-pipeline/micro/adderservice/package.json b/Chapter11/creating-a-deployment-pipeline/micro/adderservice/package.json
deleted file mode 100644
index 7cef23a..0000000
--- a/Chapter11/creating-a-deployment-pipeline/micro/adderservice/package.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "name": "adderservice",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "tap test"
- },
- "keywords": [],
- "author": "Peter Elger",
- "license": "ISC",
- "dependencies": {
- "restify": "^4.3.0"
- },
- "devDependencies": {
- "tap": "^10.3.1"
- }
-}
diff --git a/Chapter11/creating-a-deployment-pipeline/micro/adderservice/service.js b/Chapter11/creating-a-deployment-pipeline/micro/adderservice/service.js
deleted file mode 100644
index 9d0d175..0000000
--- a/Chapter11/creating-a-deployment-pipeline/micro/adderservice/service.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict'
-
-module.exports = service
-
-function service () {
- function add (args, cb) {
- const {first, second} = args
- const result = (parseInt(first, 10) + parseInt(second, 10))
- cb(null, {result: result.toString()})
- }
-
- return { add }
-}
diff --git a/Chapter11/creating-a-deployment-pipeline/micro/adderservice/wiring.js b/Chapter11/creating-a-deployment-pipeline/micro/adderservice/wiring.js
deleted file mode 100644
index 0ed018c..0000000
--- a/Chapter11/creating-a-deployment-pipeline/micro/adderservice/wiring.js
+++ /dev/null
@@ -1,27 +0,0 @@
-'use strict'
-
-const restify = require('restify')
-const { ADDERSERVICE_SERVICE_PORT } = process.env
-
-module.exports = wiring
-
-function wiring (service) {
- const server = restify.createServer()
-
- server.get('/add/:first/:second', (req, res, next) => {
- service.add(req.params, (err, result) => {
- if (err) {
- res.send(err)
- next()
- return
- }
- res.send(200, result)
- next()
- })
- })
-
- server.listen(ADDERSERVICE_SERVICE_PORT, '0.0.0.0', () => {
- console.log('%s listening at %s', server.name, server.url)
- })
-}
-
diff --git a/Chapter11/creating-a-deployment-pipeline/micro/deployment/deployment-template.yml b/Chapter11/creating-a-deployment-pipeline/micro/deployment/deployment-template.yml
deleted file mode 100644
index 42ee070..0000000
--- a/Chapter11/creating-a-deployment-pipeline/micro/deployment/deployment-template.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-apiVersion: extensions/v1beta1
-kind: Deployment
-metadata:
- name: _NAME_
-spec:
- replicas: 1
- template:
- metadata:
- labels:
- run: _NAME_
- spec:
- containers:
- - name: _NAME_
- image: _IMAGE_
- ports:
- - containerPort: _PORT_
-
diff --git a/Chapter11/creating-a-deployment-pipeline/micro/deployment/namespace.yml b/Chapter11/creating-a-deployment-pipeline/micro/deployment/namespace.yml
deleted file mode 100644
index 1351cbb..0000000
--- a/Chapter11/creating-a-deployment-pipeline/micro/deployment/namespace.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-apiVersion: v1
-kind: Namespace
-metadata:
- name: micro
- labels:
- name: micro
diff --git a/Chapter11/creating-a-deployment-pipeline/micro/deployment/service-template.yml b/Chapter11/creating-a-deployment-pipeline/micro/deployment/service-template.yml
deleted file mode 100644
index 11010f6..0000000
--- a/Chapter11/creating-a-deployment-pipeline/micro/deployment/service-template.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-apiVersion: v1
-kind: Service
-metadata:
- name: _NAME_
- labels:
- run: _NAME_
-spec:
- ports:
- - port: _PORT_
- name: main
- protocol: TCP
- targetPort: _PORT_
- selector:
- run: _NAME_
- type: NodePort
-
diff --git a/Chapter11/deploying-a-container-to-kubernetes/micro/adderservice/.dockerignore b/Chapter11/deploying-a-container-to-kubernetes/micro/adderservice/.dockerignore
deleted file mode 100644
index 90718e6..0000000
--- a/Chapter11/deploying-a-container-to-kubernetes/micro/adderservice/.dockerignore
+++ /dev/null
@@ -1,4 +0,0 @@
-.git
-.gitignore
-node_modules
-npm-debug.log
diff --git a/Chapter11/deploying-a-container-to-kubernetes/micro/adderservice/Dockerfile b/Chapter11/deploying-a-container-to-kubernetes/micro/adderservice/Dockerfile
deleted file mode 100644
index 4d2e56b..0000000
--- a/Chapter11/deploying-a-container-to-kubernetes/micro/adderservice/Dockerfile
+++ /dev/null
@@ -1,7 +0,0 @@
-FROM node:slim
-RUN mkdir -p /home/node/service
-WORKDIR /home/node/service
-COPY package.json /home/node/service
-RUN npm install
-COPY . /home/node/service
-CMD [ "node", "index.js" ]
diff --git a/Chapter11/deploying-a-container-to-kubernetes/micro/adderservice/index.js b/Chapter11/deploying-a-container-to-kubernetes/micro/adderservice/index.js
deleted file mode 100644
index 753a4ce..0000000
--- a/Chapter11/deploying-a-container-to-kubernetes/micro/adderservice/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-'use strict'
-
-const wiring = require('./wiring')
-const service = require('./service')()
-
-wiring(service)
\ No newline at end of file
diff --git a/Chapter11/deploying-a-container-to-kubernetes/micro/adderservice/package.json b/Chapter11/deploying-a-container-to-kubernetes/micro/adderservice/package.json
deleted file mode 100644
index 595a5b0..0000000
--- a/Chapter11/deploying-a-container-to-kubernetes/micro/adderservice/package.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "adder-service",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "Peter Elger ",
- "license": "ISC",
- "dependencies": {
- "restify": "^4.3.0"
- }
-}
diff --git a/Chapter11/deploying-a-container-to-kubernetes/micro/adderservice/service.js b/Chapter11/deploying-a-container-to-kubernetes/micro/adderservice/service.js
deleted file mode 100644
index af95084..0000000
--- a/Chapter11/deploying-a-container-to-kubernetes/micro/adderservice/service.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict'
-
-module.exports = service
-
-function service () {
- function add (args, cb) {
- const {first, second} = args
- const result = (parseInt(first, 10) + parseInt(second, 10))
- cb(null, {result: result.toString()})
- }
-
- return { add }
-}
\ No newline at end of file
diff --git a/Chapter11/deploying-a-container-to-kubernetes/micro/adderservice/wiring.js b/Chapter11/deploying-a-container-to-kubernetes/micro/adderservice/wiring.js
deleted file mode 100644
index 0e81c6c..0000000
--- a/Chapter11/deploying-a-container-to-kubernetes/micro/adderservice/wiring.js
+++ /dev/null
@@ -1,26 +0,0 @@
-'use strict'
-
-const restify = require('restify')
-const { ADDERSERVICE_SERVICE_PORT } = process.env
-
-module.exports = wiring
-
-function wiring (service) {
- const server = restify.createServer()
-
- server.get('/add/:first/:second', (req, res, next) => {
- service.add(req.params, (err, result) => {
- if (err) {
- res.send(err)
- next()
- return
- }
- res.send(200, result)
- next()
- })
- })
-
- server.listen(ADDERSERVICE_SERVICE_PORT, '0.0.0.0', () => {
- console.log('%s listening at %s', server.name, server.url)
- })
-}
\ No newline at end of file
diff --git a/Chapter11/deploying-a-container-to-kubernetes/micro/deployment/adderservice-dep.yml b/Chapter11/deploying-a-container-to-kubernetes/micro/deployment/adderservice-dep.yml
deleted file mode 100644
index 65b998f..0000000
--- a/Chapter11/deploying-a-container-to-kubernetes/micro/deployment/adderservice-dep.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-apiVersion: extensions/v1beta1
-kind: Deployment
-metadata:
- name: adderservice
-spec:
- replicas: 1
- template:
- metadata:
- labels:
- run: adderservice
- spec:
- containers:
- - name: adderservice
- image: pelger/adderservice
- ports:
- - containerPort: 8080
diff --git a/Chapter11/deploying-a-container-to-kubernetes/micro/deployment/adderservice-svc.yml b/Chapter11/deploying-a-container-to-kubernetes/micro/deployment/adderservice-svc.yml
deleted file mode 100644
index 5327532..0000000
--- a/Chapter11/deploying-a-container-to-kubernetes/micro/deployment/adderservice-svc.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-apiVersion: v1
-kind: Service
-metadata:
- name: adderservice
- labels:
- run: adderservice
-spec:
- ports:
- - port: 8080
- name: main
- protocol: TCP
- targetPort: 8080
- selector:
- run: adderservice
- type: NodePort
diff --git a/Chapter11/deploying-a-container-to-kubernetes/micro/deployment/namespace.yml b/Chapter11/deploying-a-container-to-kubernetes/micro/deployment/namespace.yml
deleted file mode 100644
index 1351cbb..0000000
--- a/Chapter11/deploying-a-container-to-kubernetes/micro/deployment/namespace.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-apiVersion: v1
-kind: Namespace
-metadata:
- name: micro
- labels:
- name: micro
diff --git a/Chapter11/deploying-a-container-to-kubernetes/micro2/adderservice/.dockerignore b/Chapter11/deploying-a-container-to-kubernetes/micro2/adderservice/.dockerignore
deleted file mode 100644
index 90718e6..0000000
--- a/Chapter11/deploying-a-container-to-kubernetes/micro2/adderservice/.dockerignore
+++ /dev/null
@@ -1,4 +0,0 @@
-.git
-.gitignore
-node_modules
-npm-debug.log
diff --git a/Chapter11/deploying-a-container-to-kubernetes/micro2/adderservice/Dockerfile b/Chapter11/deploying-a-container-to-kubernetes/micro2/adderservice/Dockerfile
deleted file mode 100644
index 4d2e56b..0000000
--- a/Chapter11/deploying-a-container-to-kubernetes/micro2/adderservice/Dockerfile
+++ /dev/null
@@ -1,7 +0,0 @@
-FROM node:slim
-RUN mkdir -p /home/node/service
-WORKDIR /home/node/service
-COPY package.json /home/node/service
-RUN npm install
-COPY . /home/node/service
-CMD [ "node", "index.js" ]
diff --git a/Chapter11/deploying-a-container-to-kubernetes/micro2/adderservice/index.js b/Chapter11/deploying-a-container-to-kubernetes/micro2/adderservice/index.js
deleted file mode 100644
index 753a4ce..0000000
--- a/Chapter11/deploying-a-container-to-kubernetes/micro2/adderservice/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-'use strict'
-
-const wiring = require('./wiring')
-const service = require('./service')()
-
-wiring(service)
\ No newline at end of file
diff --git a/Chapter11/deploying-a-container-to-kubernetes/micro2/adderservice/package.json b/Chapter11/deploying-a-container-to-kubernetes/micro2/adderservice/package.json
deleted file mode 100644
index 595a5b0..0000000
--- a/Chapter11/deploying-a-container-to-kubernetes/micro2/adderservice/package.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "adder-service",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "Peter Elger ",
- "license": "ISC",
- "dependencies": {
- "restify": "^4.3.0"
- }
-}
diff --git a/Chapter11/deploying-a-container-to-kubernetes/micro2/adderservice/service.js b/Chapter11/deploying-a-container-to-kubernetes/micro2/adderservice/service.js
deleted file mode 100644
index d7510a9..0000000
--- a/Chapter11/deploying-a-container-to-kubernetes/micro2/adderservice/service.js
+++ /dev/null
@@ -1,14 +0,0 @@
-'use strict'
-
-module.exports = service
-
-function service () {
- function add (args, cb) {
- const {first, second} = args
- console.log(`add called: ${first} ${second}`)
- const result = (parseInt(first, 10) + parseInt(second, 10))
- cb(null, {result: result.toString()})
- }
-
- return { add }
-}
\ No newline at end of file
diff --git a/Chapter11/deploying-a-container-to-kubernetes/micro2/adderservice/wiring.js b/Chapter11/deploying-a-container-to-kubernetes/micro2/adderservice/wiring.js
deleted file mode 100644
index 0e81c6c..0000000
--- a/Chapter11/deploying-a-container-to-kubernetes/micro2/adderservice/wiring.js
+++ /dev/null
@@ -1,26 +0,0 @@
-'use strict'
-
-const restify = require('restify')
-const { ADDERSERVICE_SERVICE_PORT } = process.env
-
-module.exports = wiring
-
-function wiring (service) {
- const server = restify.createServer()
-
- server.get('/add/:first/:second', (req, res, next) => {
- service.add(req.params, (err, result) => {
- if (err) {
- res.send(err)
- next()
- return
- }
- res.send(200, result)
- next()
- })
- })
-
- server.listen(ADDERSERVICE_SERVICE_PORT, '0.0.0.0', () => {
- console.log('%s listening at %s', server.name, server.url)
- })
-}
\ No newline at end of file
diff --git a/Chapter11/deploying-a-container-to-kubernetes/micro2/deployment/adderservice-dep.yml b/Chapter11/deploying-a-container-to-kubernetes/micro2/deployment/adderservice-dep.yml
deleted file mode 100644
index 540d543..0000000
--- a/Chapter11/deploying-a-container-to-kubernetes/micro2/deployment/adderservice-dep.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-apiVersion: extensions/v1beta1
-kind: Deployment
-metadata:
- name: adderservice
-spec:
- replicas: 1
- template:
- metadata:
- labels:
- run: adderservice
- spec:
- containers:
- - name: adderservice
- image: pelger/adderservice:2
- ports:
- - containerPort: 8080
diff --git a/Chapter11/deploying-a-container-to-kubernetes/micro2/deployment/adderservice-svc.yml b/Chapter11/deploying-a-container-to-kubernetes/micro2/deployment/adderservice-svc.yml
deleted file mode 100644
index 5327532..0000000
--- a/Chapter11/deploying-a-container-to-kubernetes/micro2/deployment/adderservice-svc.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-apiVersion: v1
-kind: Service
-metadata:
- name: adderservice
- labels:
- run: adderservice
-spec:
- ports:
- - port: 8080
- name: main
- protocol: TCP
- targetPort: 8080
- selector:
- run: adderservice
- type: NodePort
diff --git a/Chapter11/deploying-a-container-to-kubernetes/micro2/deployment/namespace.yml b/Chapter11/deploying-a-container-to-kubernetes/micro2/deployment/namespace.yml
deleted file mode 100644
index 1351cbb..0000000
--- a/Chapter11/deploying-a-container-to-kubernetes/micro2/deployment/namespace.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-apiVersion: v1
-kind: Namespace
-metadata:
- name: micro
- labels:
- name: micro
diff --git a/Chapter11/deploying-a-container-to-kubernetes/test.sh b/Chapter11/deploying-a-container-to-kubernetes/test.sh
deleted file mode 100644
index 5086478..0000000
--- a/Chapter11/deploying-a-container-to-kubernetes/test.sh
+++ /dev/null
@@ -1 +0,0 @@
-curl http://localhost:8080/add/2/3
diff --git a/Chapter11/deploying-a-full-system/micro/adderservice/.dockerignore b/Chapter11/deploying-a-full-system/micro/adderservice/.dockerignore
deleted file mode 100644
index 90718e6..0000000
--- a/Chapter11/deploying-a-full-system/micro/adderservice/.dockerignore
+++ /dev/null
@@ -1,4 +0,0 @@
-.git
-.gitignore
-node_modules
-npm-debug.log
diff --git a/Chapter11/deploying-a-full-system/micro/adderservice/Dockerfile b/Chapter11/deploying-a-full-system/micro/adderservice/Dockerfile
deleted file mode 100644
index 4d2e56b..0000000
--- a/Chapter11/deploying-a-full-system/micro/adderservice/Dockerfile
+++ /dev/null
@@ -1,7 +0,0 @@
-FROM node:slim
-RUN mkdir -p /home/node/service
-WORKDIR /home/node/service
-COPY package.json /home/node/service
-RUN npm install
-COPY . /home/node/service
-CMD [ "node", "index.js" ]
diff --git a/Chapter11/deploying-a-full-system/micro/adderservice/Jenkinsfile b/Chapter11/deploying-a-full-system/micro/adderservice/Jenkinsfile
deleted file mode 100644
index 8ea826e..0000000
--- a/Chapter11/deploying-a-full-system/micro/adderservice/Jenkinsfile
+++ /dev/null
@@ -1,32 +0,0 @@
-pipeline {
- agent any
-
- stages {
- stage('Checkout') {
- steps {
- checkout scm
- }
- }
- stage('Build') {
- steps {
- sh 'source ~/.bashrc && cd adderservice && npm install'
- }
- }
- stage('Test'){
- steps {
- sh 'source ~/.bashrc && cd adderservice && npm test'
- }
- }
- stage('Container'){
- steps {
- sh 'source ~/.bashrc && cd adderservice && sh build.sh container'
- }
- }
- stage('Deploy'){
- steps {
- sh 'source ~/.bashrc && cd adderservice && sh build.sh deploy'
- }
- }
- }
-}
-
diff --git a/Chapter11/deploying-a-full-system/micro/adderservice/build.sh b/Chapter11/deploying-a-full-system/micro/adderservice/build.sh
deleted file mode 100644
index 7da8cb6..0000000
--- a/Chapter11/deploying-a-full-system/micro/adderservice/build.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash
-source ~/.bashrc
-
-GITSHA=$(git rev-parse --short HEAD)
-
-case "$1" in
- container)
- sudo -u pelger docker build -t adderservice:$GITSHA .
- sudo -u pelger docker tag adderservice:$GITSHA pelger/adderservice:$GITSHA
- sudo -i -u pelger docker push pelger/adderservice:$GITSHA
- ;;
- deploy)
- sed -e s/_NAME_/adderservice/ -e s/_PORT_/8080/ < ../deployment/service-template.yml > svc.yml
- sed -e s/_NAME_/adderservice/ -e s/_PORT_/8080/ -e s/_IMAGE_/pelger\\/adderservice:$GITSHA/ < ../deployment/deployment-template.yml > dep.yml
- sudo -i -u pelger kubectl apply -f $(pwd)/svc.yml
- sudo -i -u pelger kubectl apply -f $(pwd)/dep.yml
- ;;
- *)
- echo 'invalid build command'
- exit 1
- ;;
-esac
-
diff --git a/Chapter11/deploying-a-full-system/micro/adderservice/index.js b/Chapter11/deploying-a-full-system/micro/adderservice/index.js
deleted file mode 100644
index 1f2d9cf..0000000
--- a/Chapter11/deploying-a-full-system/micro/adderservice/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict'
-
-const wiring = require('./wiring')
-const service = require('./service')()
-
-
-wiring(service)
diff --git a/Chapter11/deploying-a-full-system/micro/adderservice/package.json b/Chapter11/deploying-a-full-system/micro/adderservice/package.json
deleted file mode 100644
index c612751..0000000
--- a/Chapter11/deploying-a-full-system/micro/adderservice/package.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "adder-service",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"no test specified\" && exit 0"
- },
- "keywords": [],
- "author": "Peter Elger ",
- "license": "ISC",
- "dependencies": {
- "restify": "^4.3.0"
- }
-}
diff --git a/Chapter11/deploying-a-full-system/micro/adderservice/service.js b/Chapter11/deploying-a-full-system/micro/adderservice/service.js
deleted file mode 100644
index 9d0d175..0000000
--- a/Chapter11/deploying-a-full-system/micro/adderservice/service.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict'
-
-module.exports = service
-
-function service () {
- function add (args, cb) {
- const {first, second} = args
- const result = (parseInt(first, 10) + parseInt(second, 10))
- cb(null, {result: result.toString()})
- }
-
- return { add }
-}
diff --git a/Chapter11/deploying-a-full-system/micro/adderservice/wiring.js b/Chapter11/deploying-a-full-system/micro/adderservice/wiring.js
deleted file mode 100644
index 0ed018c..0000000
--- a/Chapter11/deploying-a-full-system/micro/adderservice/wiring.js
+++ /dev/null
@@ -1,27 +0,0 @@
-'use strict'
-
-const restify = require('restify')
-const { ADDERSERVICE_SERVICE_PORT } = process.env
-
-module.exports = wiring
-
-function wiring (service) {
- const server = restify.createServer()
-
- server.get('/add/:first/:second', (req, res, next) => {
- service.add(req.params, (err, result) => {
- if (err) {
- res.send(err)
- next()
- return
- }
- res.send(200, result)
- next()
- })
- })
-
- server.listen(ADDERSERVICE_SERVICE_PORT, '0.0.0.0', () => {
- console.log('%s listening at %s', server.name, server.url)
- })
-}
-
diff --git a/Chapter11/deploying-a-full-system/micro/auditservice/.dockerignore b/Chapter11/deploying-a-full-system/micro/auditservice/.dockerignore
deleted file mode 100644
index 90718e6..0000000
--- a/Chapter11/deploying-a-full-system/micro/auditservice/.dockerignore
+++ /dev/null
@@ -1,4 +0,0 @@
-.git
-.gitignore
-node_modules
-npm-debug.log
diff --git a/Chapter11/deploying-a-full-system/micro/auditservice/Dockerfile b/Chapter11/deploying-a-full-system/micro/auditservice/Dockerfile
deleted file mode 100644
index 4d2e56b..0000000
--- a/Chapter11/deploying-a-full-system/micro/auditservice/Dockerfile
+++ /dev/null
@@ -1,7 +0,0 @@
-FROM node:slim
-RUN mkdir -p /home/node/service
-WORKDIR /home/node/service
-COPY package.json /home/node/service
-RUN npm install
-COPY . /home/node/service
-CMD [ "node", "index.js" ]
diff --git a/Chapter11/deploying-a-full-system/micro/auditservice/Jenkinsfile b/Chapter11/deploying-a-full-system/micro/auditservice/Jenkinsfile
deleted file mode 100644
index 6a75d1a..0000000
--- a/Chapter11/deploying-a-full-system/micro/auditservice/Jenkinsfile
+++ /dev/null
@@ -1,32 +0,0 @@
-pipeline {
- agent any
-
- stages {
- stage('Checkout') {
- steps {
- checkout scm
- }
- }
- stage('Build') {
- steps {
- sh 'source ~/.bashrc && cd auditservice && npm install'
- }
- }
- stage('Test'){
- steps {
- sh 'source ~/.bashrc && cd auditservice && npm test'
- }
- }
- stage('Container'){
- steps {
- sh 'source ~/.bashrc && cd auditservice && sh build.sh container'
- }
- }
- stage('Deploy'){
- steps {
- sh 'source ~/.bashrc && cd auditservice && sh build.sh deploy'
- }
- }
- }
-}
-
diff --git a/Chapter11/deploying-a-full-system/micro/auditservice/build.sh b/Chapter11/deploying-a-full-system/micro/auditservice/build.sh
deleted file mode 100644
index efa553c..0000000
--- a/Chapter11/deploying-a-full-system/micro/auditservice/build.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash
-source ~/.bashrc
-
-GITSHA=$(git rev-parse --short HEAD)
-
-case "$1" in
- container)
- sudo -u pelger docker build -t auditservice:$GITSHA .
- sudo -u pelger docker tag auditservice:$GITSHA pelger/auditservice:$GITSHA
- sudo -i -u pelger docker push pelger/auditservice:$GITSHA
- ;;
- deploy)
- sed -e s/_NAME_/auditservice/ -e s/_PORT_/8081/ < ../deployment/service-template.yml > svc.yml
- sed -e s/_NAME_/auditservice/ -e s/_PORT_/8081/ -e s/_IMAGE_/pelger\\/auditservice:$GITSHA/ < ../deployment/deployment-template.yml > dep.yml
- sudo -i -u pelger kubectl apply -f $(pwd)/svc.yml
- sudo -i -u pelger kubectl apply -f $(pwd)/dep.yml
- ;;
- *)
- echo 'invalid build command'
- exit 1
- ;;
-esac
-
diff --git a/Chapter11/deploying-a-full-system/micro/auditservice/index.js b/Chapter11/deploying-a-full-system/micro/auditservice/index.js
deleted file mode 100644
index 40a4677..0000000
--- a/Chapter11/deploying-a-full-system/micro/auditservice/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-'use strict'
-
-const wiring = require('./wiring')
-const service = require('./service')()
-
-wiring(service)
diff --git a/Chapter11/deploying-a-full-system/micro/auditservice/package.json b/Chapter11/deploying-a-full-system/micro/auditservice/package.json
deleted file mode 100644
index bcb0138..0000000
--- a/Chapter11/deploying-a-full-system/micro/auditservice/package.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "name": "auditservice",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"no test specified\" && exit 0"
- },
- "keywords": [],
- "author": "Peter Elger ",
- "license": "ISC",
- "dependencies": {
- "concordant": "^0.2.1",
- "mongodb": "^2.2.25",
- "restify": "^4.3.0"
- }
-}
diff --git a/Chapter11/deploying-a-full-system/micro/auditservice/service.js b/Chapter11/deploying-a-full-system/micro/auditservice/service.js
deleted file mode 100644
index c416e4c..0000000
--- a/Chapter11/deploying-a-full-system/micro/auditservice/service.js
+++ /dev/null
@@ -1,74 +0,0 @@
-'use strict'
-
-const { MongoClient } = require('mongodb')
-const { dns } = require('concordant')()
-
-module.exports = service
-
-function service () {
-
- var db
-
- setup()
-
- function setup () {
- const mongo = '_main._tcp.mongo.micro.svc.cluster.local'
-
- dns.resolve(mongo, (err, locs) => {
- if (err) {
- console.error(err)
- return
- }
- const { host, port } = locs[0]
- const url = `mongodb://${host}:${port}/audit`
- MongoClient.connect(url, (err, client) => {
- if (err) {
- console.log('failed to connect to MongoDB retrying in 100ms')
- setTimeout(setup, 100)
- return
- }
- db = client
- db.on('close', () => db = null)
- })
- })
- }
-
- function append (args, cb) {
- if (!db) {
- cb(Error('No database connection'))
- return
- }
- const audit = db.collection('audit')
- const data = {
- ts: Date.now(),
- calc: args.calc,
- result: args.calcResult
- }
-
- audit.insert(data, (err, result) => {
- if (err) {
- cb(err)
- return
- }
- cb(null, {result: result.toString()})
- })
- }
-
- function list (args, cb) {
- if (!db) {
- cb(Error('No database connection'))
- return
- }
- const audit = db.collection('audit')
- audit.find({}, {limit: 10}).toArray((err, docs) => {
- if (err) {
- cb(err)
- return
- }
- cb(null, {list: docs})
- })
- }
-
- return { append, list }
-}
-
diff --git a/Chapter11/deploying-a-full-system/micro/auditservice/wiring.js b/Chapter11/deploying-a-full-system/micro/auditservice/wiring.js
deleted file mode 100644
index b18dce8..0000000
--- a/Chapter11/deploying-a-full-system/micro/auditservice/wiring.js
+++ /dev/null
@@ -1,39 +0,0 @@
-'use strict'
-
-const restify = require('restify')
-const { AUDITSERVICE_SERVICE_PORT } = process.env
-
-module.exports = wiring
-
-function wiring (service) {
- const server = restify.createServer()
-
- server.use(restify.bodyParser())
-
- server.post('/append', (req, res, next) => {
- service.append(req.params, (err, result) => {
- if (err) {
- res.send(err)
- return
- }
- res.send(result)
- next()
- })
- })
-
- server.get('/list', (req, res, next) => {
- service.list(req.params, (err, result) => {
- if (err) {
- res.send(err)
- return
- }
- res.send(200, result)
- next()
- })
- })
-
- server.listen(AUDITSERVICE_SERVICE_PORT, '0.0.0.0', () => {
- console.log('%s listening at %s', server.name, server.url)
- })
-}
-
diff --git a/Chapter11/deploying-a-full-system/micro/deployment/deployment-template.yml b/Chapter11/deploying-a-full-system/micro/deployment/deployment-template.yml
deleted file mode 100644
index 42ee070..0000000
--- a/Chapter11/deploying-a-full-system/micro/deployment/deployment-template.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-apiVersion: extensions/v1beta1
-kind: Deployment
-metadata:
- name: _NAME_
-spec:
- replicas: 1
- template:
- metadata:
- labels:
- run: _NAME_
- spec:
- containers:
- - name: _NAME_
- image: _IMAGE_
- ports:
- - containerPort: _PORT_
-
diff --git a/Chapter11/deploying-a-full-system/micro/deployment/namespace.yml b/Chapter11/deploying-a-full-system/micro/deployment/namespace.yml
deleted file mode 100644
index 1351cbb..0000000
--- a/Chapter11/deploying-a-full-system/micro/deployment/namespace.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-apiVersion: v1
-kind: Namespace
-metadata:
- name: micro
- labels:
- name: micro
diff --git a/Chapter11/deploying-a-full-system/micro/deployment/service-template.yml b/Chapter11/deploying-a-full-system/micro/deployment/service-template.yml
deleted file mode 100644
index 11010f6..0000000
--- a/Chapter11/deploying-a-full-system/micro/deployment/service-template.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-apiVersion: v1
-kind: Service
-metadata:
- name: _NAME_
- labels:
- run: _NAME_
-spec:
- ports:
- - port: _PORT_
- name: main
- protocol: TCP
- targetPort: _PORT_
- selector:
- run: _NAME_
- type: NodePort
-
diff --git a/Chapter11/deploying-a-full-system/micro/eventservice/.dockerignore b/Chapter11/deploying-a-full-system/micro/eventservice/.dockerignore
deleted file mode 100644
index 90718e6..0000000
--- a/Chapter11/deploying-a-full-system/micro/eventservice/.dockerignore
+++ /dev/null
@@ -1,4 +0,0 @@
-.git
-.gitignore
-node_modules
-npm-debug.log
diff --git a/Chapter11/deploying-a-full-system/micro/eventservice/Dockerfile b/Chapter11/deploying-a-full-system/micro/eventservice/Dockerfile
deleted file mode 100644
index 4d2e56b..0000000
--- a/Chapter11/deploying-a-full-system/micro/eventservice/Dockerfile
+++ /dev/null
@@ -1,7 +0,0 @@
-FROM node:slim
-RUN mkdir -p /home/node/service
-WORKDIR /home/node/service
-COPY package.json /home/node/service
-RUN npm install
-COPY . /home/node/service
-CMD [ "node", "index.js" ]
diff --git a/Chapter11/deploying-a-full-system/micro/eventservice/Jenkinsfile b/Chapter11/deploying-a-full-system/micro/eventservice/Jenkinsfile
deleted file mode 100644
index 81614ce..0000000
--- a/Chapter11/deploying-a-full-system/micro/eventservice/Jenkinsfile
+++ /dev/null
@@ -1,32 +0,0 @@
-pipeline {
- agent any
-
- stages {
- stage('Checkout') {
- steps {
- checkout scm
- }
- }
- stage('Build') {
- steps {
- sh 'source ~/.bashrc && cd eventservice && npm install'
- }
- }
- stage('Test'){
- steps {
- sh 'source ~/.bashrc && cd eventservice && npm test'
- }
- }
- stage('Container'){
- steps {
- sh 'source ~/.bashrc && cd eventservice && sh build.sh container'
- }
- }
- stage('Deploy'){
- steps {
- sh 'source ~/.bashrc && cd eventservice && sh build.sh deploy'
- }
- }
- }
-}
-
diff --git a/Chapter11/deploying-a-full-system/micro/eventservice/build.sh b/Chapter11/deploying-a-full-system/micro/eventservice/build.sh
deleted file mode 100644
index 68099f0..0000000
--- a/Chapter11/deploying-a-full-system/micro/eventservice/build.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash
-source ~/.bashrc
-
-GITSHA=$(git rev-parse --short HEAD)
-
-case "$1" in
- container)
- sudo -u pelger docker build -t eventservice:$GITSHA .
- sudo -u pelger docker tag eventservice:$GITSHA pelger/eventservice:$GITSHA
- sudo -i -u pelger docker push pelger/eventservice:$GITSHA
- ;;
- deploy)
- sed -e s/_NAME_/eventservice/ -e s/_PORT_/8082/ < ../deployment/service-template.yml > svc.yml
- sed -e s/_NAME_/eventservice/ -e s/_PORT_/8082/ -e s/_IMAGE_/pelger\\/eventservice:$GITSHA/ < ../deployment/deployment-template.yml > dep.yml
- sudo -i -u pelger kubectl apply -f $(pwd)/svc.yml
- sudo -i -u pelger kubectl apply -f $(pwd)/dep.yml
- ;;
- *)
- echo 'invalid build command'
- exit 1
- ;;
-esac
-
diff --git a/Chapter11/deploying-a-full-system/micro/eventservice/index.js b/Chapter11/deploying-a-full-system/micro/eventservice/index.js
deleted file mode 100644
index df3a380..0000000
--- a/Chapter11/deploying-a-full-system/micro/eventservice/index.js
+++ /dev/null
@@ -1,5 +0,0 @@
-'use strict'
-
-const wiring = require('./wiring')
-const service = require('./service')()
-wiring(service)
diff --git a/Chapter11/deploying-a-full-system/micro/eventservice/package.json b/Chapter11/deploying-a-full-system/micro/eventservice/package.json
deleted file mode 100644
index baca7cb..0000000
--- a/Chapter11/deploying-a-full-system/micro/eventservice/package.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "name": "event-service",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"no test specified\" && exit 0"
- },
- "keywords": [],
- "author": "Peter Elger ",
- "license": "ISC",
- "dependencies": {
- "concordant": "^0.2.1",
- "mongodb": "^2.2.25",
- "redis": "^2.6.5"
- }
-}
diff --git a/Chapter11/deploying-a-full-system/micro/eventservice/service.js b/Chapter11/deploying-a-full-system/micro/eventservice/service.js
deleted file mode 100644
index 4082d3e..0000000
--- a/Chapter11/deploying-a-full-system/micro/eventservice/service.js
+++ /dev/null
@@ -1,80 +0,0 @@
-'use strict'
-
-const { MongoClient } = require('mongodb')
-const { dns } = require('concordant')()
-
-module.exports = service
-
-function service () {
- var db
-
- setup()
-
- function setup () {
- const mongo = '_main._tcp.mongo.micro.svc.cluster.local'
-
- dns.resolve(mongo, (err, locs) => {
- if (err) {
- console.error(err)
- return
- }
- const { host, port } = locs[0]
- const url = `mongodb://${host}:${port}/events`
- MongoClient.connect(url, (err, client) => {
- if (err) {
- console.log('failed to connect to MongoDB retrying in 100ms')
- setTimeout(setup, 100)
- return
- }
- db = client
- db.on('close', () => db = null)
- })
- })
- }
-
- function record (args, cb) {
- if (!db) {
- cb(Error('No database connection'))
- return
- }
- const events = db.collection('events')
- const data = {
- ts: Date.now(),
- eventType: args.type,
- url: args.url
- }
- events.insert(data, (err, result) => {
- if (err) {
- cb(err)
- return
- }
- cb(null, result)
- })
- }
-
- function summary (args, cb) {
- if (!db) {
- cb(Error('No database connection'))
- return
- }
- const summary = {}
- const events = db.collection('events')
- events.find({}).toArray( (err, docs) => {
- if (err) return cb(err)
-
- docs.forEach(function (doc) {
- if (!(summary[doc.url])) {
- summary[doc.url] = 1
- } else {
- summary[doc.url]++
- }
- })
- cb(null, summary)
- })
- }
-
- return {
- record: record,
- summary: summary
- }
-}
diff --git a/Chapter11/deploying-a-full-system/micro/eventservice/wiring.js b/Chapter11/deploying-a-full-system/micro/eventservice/wiring.js
deleted file mode 100644
index b04ab35..0000000
--- a/Chapter11/deploying-a-full-system/micro/eventservice/wiring.js
+++ /dev/null
@@ -1,53 +0,0 @@
-'use strict'
-
-const { dns } = require('concordant')()
-const redis = require('redis')
-const QNAME = 'eventservice'
-
-module.exports = wiring
-
-function wiring (service) {
-
- const endpoint = '_main._tcp.redis.micro.svc.cluster.local'
-
- dns.resolve(endpoint, (err, locs) => {
- if (err) {
- console.log(err)
- return
- }
- const { port, host } = locs[0]
- pullFromQueue(redis.createClient(port, host))
- })
-
- function pullFromQueue (client) {
- client.brpop(QNAME, 5, function (err, data) {
- if (err) console.error(err)
- if (err || !data) {
- pullFromQueue(client)
- return
- }
- const msg = JSON.parse(data[1])
- const { action, returnPath } = msg
- const cmd = service[action]
- if (typeof cmd !== 'function') {
- pullFromQueue(client)
- return
- }
- cmd(msg, (err, result) => {
- if (err) {
- console.error(err)
- pullFromQueue(client)
- return
- }
- if (!returnPath) {
- pullFromQueue(client)
- return
- }
- client.lpush(returnPath, JSON.stringify(result), (err) => {
- if (err) console.error(err)
- pullFromQueue(client)
- })
- })
- })
- }
-}
diff --git a/Chapter11/deploying-a-full-system/micro/fuge/fuge.yml b/Chapter11/deploying-a-full-system/micro/fuge/fuge.yml
deleted file mode 100644
index 839ba34..0000000
--- a/Chapter11/deploying-a-full-system/micro/fuge/fuge.yml
+++ /dev/null
@@ -1,45 +0,0 @@
-fuge_global:
- run_containers: true
- dns_enabled: true
- dns_host: 127.0.0.1
- dns_port: 53053
- dns_suffix: svc.cluster.local
- dns_namespace: micro
- tail: true
- monitor: true
- monitor_excludes:
- - '**/node_modules/**'
- - '**/.git/**'
- - '**/*.log'
-adderservice:
- type: node
- path: ../adderservice
- run: node index.js
- ports:
- - main=8080
-auditservice:
- type: process
- path: ../auditservice
- run: 'node index.js'
- ports:
- - main=8081
-eventservice:
- type: process
- path: ../eventservice
- run: 'node index.js'
-webapp:
- type: process
- path: ../webapp
- run: npm start
- ports:
- - http=3000
-mongo:
- image: mongo
- type: container
- ports:
- - main=27017:27017
-redis:
- image: redis
- type: container
- ports:
- - main=6379:6379
diff --git a/Chapter11/deploying-a-full-system/micro/infrastructure/Jenkinsfile b/Chapter11/deploying-a-full-system/micro/infrastructure/Jenkinsfile
deleted file mode 100644
index d204b09..0000000
--- a/Chapter11/deploying-a-full-system/micro/infrastructure/Jenkinsfile
+++ /dev/null
@@ -1,22 +0,0 @@
-pipeline {
- agent any
-
- stages {
- stage('Checkout') {
- steps {
- checkout scm
- }
- }
- stage('DeployMongo'){
- steps {
- sh 'source ~/.bashrc && cd infrastructure && sh build.sh mongo'
- }
- }
- stage('DeployRedis'){
- steps {
- sh 'source ~/.bashrc && cd infrastructure && sh build.sh redis'
- }
- }
- }
-}
-
diff --git a/Chapter11/deploying-a-full-system/micro/infrastructure/build.sh b/Chapter11/deploying-a-full-system/micro/infrastructure/build.sh
deleted file mode 100644
index dc36a20..0000000
--- a/Chapter11/deploying-a-full-system/micro/infrastructure/build.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/bash
-sh source ~/.bashrc
-
-case "$1" in
- mongo)
- sed -e s/_NAME_/mongo/ -e s/_PORT_/27017/ < ../deployment/service-template.yml > svc.yml
- sed -e s/_NAME_/mongo/ -e s/_PORT_/27017/ -e s/_IMAGE_/mongo/ < ../deployment/deployment-template.yml > dep.yml
- sudo -i -u pelger kubectl apply -f $(pwd)/svc.yml
- sudo -i -u pelger kubectl apply -f $(pwd)/dep.yml
- ;;
- redis)
- sed -e s/_NAME_/redis/ -e s/_PORT_/6379/ < ../deployment/service-template.yml > svc.yml
- sed -e s/_NAME_/redis/ -e s/_PORT_/6379/ -e s/_IMAGE_/redis/ < ../deployment/deployment-template.yml > dep.yml
- sudo -i -u pelger kubectl apply -f $(pwd)/svc.yml
- sudo -i -u pelger kubectl apply -f $(pwd)/dep.yml
- ;;
- *)
- echo 'invalid build command'
- exit 1
- ;;
-esac
-
diff --git a/Chapter11/deploying-a-full-system/micro/report/.dockerignore b/Chapter11/deploying-a-full-system/micro/report/.dockerignore
deleted file mode 100644
index 90718e6..0000000
--- a/Chapter11/deploying-a-full-system/micro/report/.dockerignore
+++ /dev/null
@@ -1,4 +0,0 @@
-.git
-.gitignore
-node_modules
-npm-debug.log
diff --git a/Chapter11/deploying-a-full-system/micro/report/Dockerfile b/Chapter11/deploying-a-full-system/micro/report/Dockerfile
deleted file mode 100644
index 4d2e56b..0000000
--- a/Chapter11/deploying-a-full-system/micro/report/Dockerfile
+++ /dev/null
@@ -1,7 +0,0 @@
-FROM node:slim
-RUN mkdir -p /home/node/service
-WORKDIR /home/node/service
-COPY package.json /home/node/service
-RUN npm install
-COPY . /home/node/service
-CMD [ "node", "index.js" ]
diff --git a/Chapter11/deploying-a-full-system/micro/report/env.js b/Chapter11/deploying-a-full-system/micro/report/env.js
deleted file mode 100644
index a4d26e9..0000000
--- a/Chapter11/deploying-a-full-system/micro/report/env.js
+++ /dev/null
@@ -1,17 +0,0 @@
-'use strict'
-
-// provides environment variable setup for concordant
-
-const env = {
- DNS_NAMESPACE: 'micro',
- DNS_SUFFIX: 'svc.cluster.local'
-}
-
-if (process.env.NODE_ENV !== 'production') {
- Object.assign(env, {
- DNS_HOST: '127.0.0.1',
- DNS_PORT: '53053'
- })
-}
-
-Object.assign(process.env, env)
\ No newline at end of file
diff --git a/Chapter11/deploying-a-full-system/micro/report/index.js b/Chapter11/deploying-a-full-system/micro/report/index.js
deleted file mode 100644
index b65b65a..0000000
--- a/Chapter11/deploying-a-full-system/micro/report/index.js
+++ /dev/null
@@ -1,43 +0,0 @@
-'use strict'
-require('./env')
-const { dns } = require('concordant')()
-const redis = require('redis')
-const CliTable = require('cli-table')
-const QNAME = 'eventservice'
-const RESPONSE_QUEUE = 'summary'
-const ENDPOINT = '_main._tcp.redis.micro.svc.cluster.local'
-
-dns.resolve(ENDPOINT, report)
-
-function report (err, locs) {
- if (err) { return console.log(err) }
- const { port, host } = locs[0]
- const client = redis.createClient(port, host)
- const event = JSON.stringify({
- action: 'summary',
- returnPath: RESPONSE_QUEUE
- })
-
- client.lpush(QNAME, event, (err) => {
- if (err) {
- console.error(err)
- return
- }
-
- client.brpop(RESPONSE_QUEUE, 5, (err, data) => {
- if (err) {
- console.error(err)
- return
- }
- const summary = JSON.parse(data[1])
- const cols = Object.keys(summary).map((url) => [url, summary[url]])
- const table = new CliTable({
- head: ['url', 'count'],
- colWidths: [50, 10]
- })
- table.push(...cols)
- console.log(table.toString())
- client.quit()
- })
- })
-}
\ No newline at end of file
diff --git a/Chapter11/deploying-a-full-system/micro/report/package.json b/Chapter11/deploying-a-full-system/micro/report/package.json
deleted file mode 100644
index da2bd04..0000000
--- a/Chapter11/deploying-a-full-system/micro/report/package.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "name": "report",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"no test specified\" && exit 0"
- },
- "keywords": [],
- "author": "Peter Elger ",
- "license": "ISC",
- "dependencies": {
- "cli-table": "^0.3.1",
- "concordant": "^0.2.1",
- "redis": "^2.6.5"
- }
-}
diff --git a/Chapter11/deploying-a-full-system/micro/webapp/.dockerignore b/Chapter11/deploying-a-full-system/micro/webapp/.dockerignore
deleted file mode 100644
index 90718e6..0000000
--- a/Chapter11/deploying-a-full-system/micro/webapp/.dockerignore
+++ /dev/null
@@ -1,4 +0,0 @@
-.git
-.gitignore
-node_modules
-npm-debug.log
diff --git a/Chapter11/deploying-a-full-system/micro/webapp/Dockerfile b/Chapter11/deploying-a-full-system/micro/webapp/Dockerfile
deleted file mode 100644
index b2ffa24..0000000
--- a/Chapter11/deploying-a-full-system/micro/webapp/Dockerfile
+++ /dev/null
@@ -1,7 +0,0 @@
-FROM node:slim
-RUN mkdir -p /home/node/service
-WORKDIR /home/node/service
-COPY package.json /home/node/service
-RUN npm install
-COPY . /home/node/service
-CMD [ "npm", "start" ]
diff --git a/Chapter11/deploying-a-full-system/micro/webapp/app.js b/Chapter11/deploying-a-full-system/micro/webapp/app.js
deleted file mode 100644
index eef315b..0000000
--- a/Chapter11/deploying-a-full-system/micro/webapp/app.js
+++ /dev/null
@@ -1,52 +0,0 @@
-var express = require('express')
-var path = require('path')
-var favicon = require('serve-favicon')
-var logger = require('morgan')
-var cookieParser = require('cookie-parser')
-var bodyParser = require('body-parser')
-var eventLogger = require('./lib/event-logger')
-
-var index = require('./routes/index')
-var users = require('./routes/users')
-var add = require('./routes/add')
-var audit = require('./routes/audit')
-
-var app = express()
-
-// view engine setup
-app.set('views', path.join(__dirname, 'views'))
-app.set('view engine', 'ejs')
-
-// uncomment after placing your favicon in /public
-// app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
-app.use(eventLogger())
-app.use(logger('dev'))
-app.use(bodyParser.json())
-app.use(bodyParser.urlencoded({ extended: false }))
-app.use(cookieParser())
-app.use(express.static(path.join(__dirname, 'public')))
-
-app.use('/', index)
-app.use('/users', users)
-app.use('/add', add)
-app.use('/audit', audit)
-
-// catch 404 and forward to error handler
-app.use(function (req, res, next) {
- var err = new Error('Not Found')
- err.status = 404
- next(err)
-})
-
-// error handler
-app.use(function (err, req, res, next) {
- // set locals, only providing error in development
- res.locals.message = err.message
- res.locals.error = req.app.get('env') === 'development' ? err : {}
-
- // render the error page
- res.status(err.status || 500)
- res.render('error')
-})
-
-module.exports = app
diff --git a/Chapter11/deploying-a-full-system/micro/webapp/bin/www b/Chapter11/deploying-a-full-system/micro/webapp/bin/www
deleted file mode 100644
index 8715eeb..0000000
--- a/Chapter11/deploying-a-full-system/micro/webapp/bin/www
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/usr/bin/env node
-
-/**
- * Module dependencies.
- */
-
-var app = require('../app');
-var debug = require('debug')('webapp:server');
-var http = require('http');
-
-/**
- * Get port from environment and store in Express.
- */
-
-var port = normalizePort(process.env.PORT || '3000');
-app.set('port', port);
-
-/**
- * Create HTTP server.
- */
-
-var server = http.createServer(app);
-
-/**
- * Listen on provided port, on all network interfaces.
- */
-
-server.listen(port);
-server.on('error', onError);
-server.on('listening', onListening);
-
-/**
- * Normalize a port into a number, string, or false.
- */
-
-function normalizePort(val) {
- var port = parseInt(val, 10);
-
- if (isNaN(port)) {
- // named pipe
- return val;
- }
-
- if (port >= 0) {
- // port number
- return port;
- }
-
- return false;
-}
-
-/**
- * Event listener for HTTP server "error" event.
- */
-
-function onError(error) {
- if (error.syscall !== 'listen') {
- throw error;
- }
-
- var bind = typeof port === 'string'
- ? 'Pipe ' + port
- : 'Port ' + port;
-
- // handle specific listen errors with friendly messages
- switch (error.code) {
- case 'EACCES':
- console.error(bind + ' requires elevated privileges');
- process.exit(1);
- break;
- case 'EADDRINUSE':
- console.error(bind + ' is already in use');
- process.exit(1);
- break;
- default:
- throw error;
- }
-}
-
-/**
- * Event listener for HTTP server "listening" event.
- */
-
-function onListening() {
- var addr = server.address();
- var bind = typeof addr === 'string'
- ? 'pipe ' + addr
- : 'port ' + addr.port;
- debug('Listening on ' + bind);
-}
diff --git a/Chapter11/deploying-a-full-system/micro/webapp/lib/event-logger.js b/Chapter11/deploying-a-full-system/micro/webapp/lib/event-logger.js
deleted file mode 100644
index 0140d3f..0000000
--- a/Chapter11/deploying-a-full-system/micro/webapp/lib/event-logger.js
+++ /dev/null
@@ -1,40 +0,0 @@
-'use strict'
-
-const { dns } = require('concordant')()
-const redis = require('redis')
-
-module.exports = eventLogger
-
-function eventLogger () {
- const QNAME = 'eventservice'
- var client
-
- const endpoint = '_main._tcp.redis.micro.svc.cluster.local'
- dns.resolve(endpoint, (err, locs) => {
- if (err) {
- console.error(err)
- return
- }
- const { port, host } = locs[0]
- client = redis.createClient(port, host)
- })
-
- function middleware (req, res, next) {
- if (!client) {
- console.log('client not ready, waiting 100ms')
- setTimeout(middleware, 100, req, res, next)
- return
- }
- const event = {
- action: 'record',
- type: 'page',
- url: `${req.protocol}://${req.get('host')}${req.originalUrl}`
- }
- client.lpush(QNAME, JSON.stringify(event), (err) => {
- if (err) console.error(err)
- next()
- })
- }
-
- return middleware
-}
diff --git a/Chapter11/deploying-a-full-system/micro/webapp/package.json b/Chapter11/deploying-a-full-system/micro/webapp/package.json
deleted file mode 100644
index 1c45acf..0000000
--- a/Chapter11/deploying-a-full-system/micro/webapp/package.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "webapp",
- "version": "0.0.0",
- "private": true,
- "scripts": {
- "start": "node ./bin/www"
- },
- "dependencies": {
- "body-parser": "~1.16.0",
- "concordant": "^0.2.1",
- "cookie-parser": "~1.4.3",
- "debug": "~2.6.0",
- "ejs": "~2.5.5",
- "express": "~4.14.1",
- "morgan": "~1.7.0",
- "mu": "^2.1.2",
- "restify": "^4.3.0",
- "serve-favicon": "~2.3.2"
- }
-}
diff --git a/Chapter11/deploying-a-full-system/micro/webapp/public/stylesheets/style.css b/Chapter11/deploying-a-full-system/micro/webapp/public/stylesheets/style.css
deleted file mode 100644
index 9453385..0000000
--- a/Chapter11/deploying-a-full-system/micro/webapp/public/stylesheets/style.css
+++ /dev/null
@@ -1,8 +0,0 @@
-body {
- padding: 50px;
- font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
-}
-
-a {
- color: #00B7FF;
-}
diff --git a/Chapter11/deploying-a-full-system/micro/webapp/routes/add.js b/Chapter11/deploying-a-full-system/micro/webapp/routes/add.js
deleted file mode 100644
index 3ab03cc..0000000
--- a/Chapter11/deploying-a-full-system/micro/webapp/routes/add.js
+++ /dev/null
@@ -1,68 +0,0 @@
-'use strict'
-
-const { Router } = require('express')
-const restify = require('restify')
-const { dns } = require('concordant')()
-const router = Router()
-var clients
-
-router.get('/', function (req, res) {
- res.render('add', { first: 0, second: 0, result: 0 })
-})
-
-router.post('/calculate', resolve, respond)
-
-function resolve (req, res, next) {
- if (clients) {
- next()
- return
- }
- const adderservice = `_main._tcp.adderservice.micro.svc.cluster.local`
- const auditservice = `_main._tcp.auditservice.micro.svc.cluster.local`
- dns.resolve(adderservice, (err, locs) => {
- if (err) {
- next(err)
- return
- }
- const { host, port } = locs[0]
- const adder = `${host}:${port}`
- dns.resolve(auditservice, (err, locs) => {
- if (err) {
- next(err)
- return
- }
- const { host, port } = locs[0]
- const audit = `${host}:${port}`
- clients = {
- adder: restify.createJSONClient({url: `http://${adder}`}),
- audit: restify.createJSONClient({url: `http://${audit}`})
- }
- next()
- })
- })
-}
-
-function respond (req, res, next) {
- const { first, second } = req.body
- clients.adder.get(
- `/add/${first}/${second}`,
- (err, svcReq, svcRes, data) => {
- if (err) {
- next(err)
- return
- }
-
- const { result } = data
- clients.audit.post('/append', {
- calc: first + '+' + second,
- calcResult: result
- }, (err) => {
- if (err) console.error(err)
- })
-
- res.render('add', { first, second, result })
- }
- )
-}
-
-module.exports = router
diff --git a/Chapter11/deploying-a-full-system/micro/webapp/routes/audit.js b/Chapter11/deploying-a-full-system/micro/webapp/routes/audit.js
deleted file mode 100644
index a083eef..0000000
--- a/Chapter11/deploying-a-full-system/micro/webapp/routes/audit.js
+++ /dev/null
@@ -1,37 +0,0 @@
-'use strict'
-
-const { Router } = require('express')
-const restify = require('restify')
-const { dns } = require('concordant')()
-const router = Router()
-var client
-
-router.get('/', resolve, respond)
-
-function resolve (req, res, next) {
- if (client) {
- next()
- return
- }
- const auditservice = `_main._tcp.auditservice.micro.svc.cluster.local`
- dns.resolve(auditservice, (err, locs) => {
- if (err) {
- next(err)
- return
- }
- const { host, port } = locs[0]
- client = restify.createJSONClient(`http://${host}:${port}`)
- })
-}
-
-function respond (req, res, next) {
- client.get('/list', (err, svcReq, svcRes, data) => {
- if (err) {
- next(err)
- return
- }
- res.render('audit', data)
- })
-}
-
-module.exports = router
diff --git a/Chapter11/deploying-a-full-system/micro/webapp/routes/index.js b/Chapter11/deploying-a-full-system/micro/webapp/routes/index.js
deleted file mode 100644
index 956680b..0000000
--- a/Chapter11/deploying-a-full-system/micro/webapp/routes/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var express = require('express')
-var router = express.Router()
-
-/* GET home page. */
-router.get('/', function (req, res, next) {
- res.render('index', { title: 'Express' })
-})
-
-module.exports = router
diff --git a/Chapter11/deploying-a-full-system/micro/webapp/routes/users.js b/Chapter11/deploying-a-full-system/micro/webapp/routes/users.js
deleted file mode 100644
index 8cfe88f..0000000
--- a/Chapter11/deploying-a-full-system/micro/webapp/routes/users.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var express = require('express')
-var router = express.Router()
-
-/* GET users listing. */
-router.get('/', function (req, res, next) {
- res.send('respond with a resource')
-})
-
-module.exports = router
diff --git a/Chapter11/deploying-a-full-system/micro/webapp/views/add.ejs b/Chapter11/deploying-a-full-system/micro/webapp/views/add.ejs
deleted file mode 100644
index da8279c..0000000
--- a/Chapter11/deploying-a-full-system/micro/webapp/views/add.ejs
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
- Add
-
-
-
- Add it up!
-
-
- result = <%= result %>
-
-
diff --git a/Chapter11/deploying-a-full-system/micro/webapp/views/audit.ejs b/Chapter11/deploying-a-full-system/micro/webapp/views/audit.ejs
deleted file mode 100644
index dd6d71b..0000000
--- a/Chapter11/deploying-a-full-system/micro/webapp/views/audit.ejs
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
- Audit
-
-
-
- Calculation History
-
- <% list.forEach(function (el) { %>
- - at: <%= new Date(el.ts).toLocaleString() %>, calculated: <%= el.calc %>, result: <%= el.result %>
- <% }) %>
-
-
-
\ No newline at end of file
diff --git a/Chapter11/deploying-a-full-system/micro/webapp/views/error.ejs b/Chapter11/deploying-a-full-system/micro/webapp/views/error.ejs
deleted file mode 100644
index 7cf94ed..0000000
--- a/Chapter11/deploying-a-full-system/micro/webapp/views/error.ejs
+++ /dev/null
@@ -1,3 +0,0 @@
-<%= message %>
-<%= error.status %>
-<%= error.stack %>
diff --git a/Chapter11/deploying-a-full-system/micro/webapp/views/index.ejs b/Chapter11/deploying-a-full-system/micro/webapp/views/index.ejs
deleted file mode 100644
index 7b7a1d6..0000000
--- a/Chapter11/deploying-a-full-system/micro/webapp/views/index.ejs
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
- <%= title %>
-
-
-
- <%= title %>
- Welcome to <%= title %>
-
-
diff --git a/Chapter11/deploying-to-the-cloud/micro/adderservice/.dockerignore b/Chapter11/deploying-to-the-cloud/micro/adderservice/.dockerignore
deleted file mode 100644
index 90718e6..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/adderservice/.dockerignore
+++ /dev/null
@@ -1,4 +0,0 @@
-.git
-.gitignore
-node_modules
-npm-debug.log
diff --git a/Chapter11/deploying-to-the-cloud/micro/adderservice/Dockerfile b/Chapter11/deploying-to-the-cloud/micro/adderservice/Dockerfile
deleted file mode 100644
index 4d2e56b..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/adderservice/Dockerfile
+++ /dev/null
@@ -1,7 +0,0 @@
-FROM node:slim
-RUN mkdir -p /home/node/service
-WORKDIR /home/node/service
-COPY package.json /home/node/service
-RUN npm install
-COPY . /home/node/service
-CMD [ "node", "index.js" ]
diff --git a/Chapter11/deploying-to-the-cloud/micro/adderservice/Jenkinsfile b/Chapter11/deploying-to-the-cloud/micro/adderservice/Jenkinsfile
deleted file mode 100644
index 8ea826e..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/adderservice/Jenkinsfile
+++ /dev/null
@@ -1,32 +0,0 @@
-pipeline {
- agent any
-
- stages {
- stage('Checkout') {
- steps {
- checkout scm
- }
- }
- stage('Build') {
- steps {
- sh 'source ~/.bashrc && cd adderservice && npm install'
- }
- }
- stage('Test'){
- steps {
- sh 'source ~/.bashrc && cd adderservice && npm test'
- }
- }
- stage('Container'){
- steps {
- sh 'source ~/.bashrc && cd adderservice && sh build.sh container'
- }
- }
- stage('Deploy'){
- steps {
- sh 'source ~/.bashrc && cd adderservice && sh build.sh deploy'
- }
- }
- }
-}
-
diff --git a/Chapter11/deploying-to-the-cloud/micro/adderservice/build.sh b/Chapter11/deploying-to-the-cloud/micro/adderservice/build.sh
deleted file mode 100644
index 7da8cb6..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/adderservice/build.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash
-source ~/.bashrc
-
-GITSHA=$(git rev-parse --short HEAD)
-
-case "$1" in
- container)
- sudo -u pelger docker build -t adderservice:$GITSHA .
- sudo -u pelger docker tag adderservice:$GITSHA pelger/adderservice:$GITSHA
- sudo -i -u pelger docker push pelger/adderservice:$GITSHA
- ;;
- deploy)
- sed -e s/_NAME_/adderservice/ -e s/_PORT_/8080/ < ../deployment/service-template.yml > svc.yml
- sed -e s/_NAME_/adderservice/ -e s/_PORT_/8080/ -e s/_IMAGE_/pelger\\/adderservice:$GITSHA/ < ../deployment/deployment-template.yml > dep.yml
- sudo -i -u pelger kubectl apply -f $(pwd)/svc.yml
- sudo -i -u pelger kubectl apply -f $(pwd)/dep.yml
- ;;
- *)
- echo 'invalid build command'
- exit 1
- ;;
-esac
-
diff --git a/Chapter11/deploying-to-the-cloud/micro/adderservice/index.js b/Chapter11/deploying-to-the-cloud/micro/adderservice/index.js
deleted file mode 100644
index 1f2d9cf..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/adderservice/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict'
-
-const wiring = require('./wiring')
-const service = require('./service')()
-
-
-wiring(service)
diff --git a/Chapter11/deploying-to-the-cloud/micro/adderservice/package.json b/Chapter11/deploying-to-the-cloud/micro/adderservice/package.json
deleted file mode 100644
index c612751..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/adderservice/package.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "adder-service",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"no test specified\" && exit 0"
- },
- "keywords": [],
- "author": "Peter Elger ",
- "license": "ISC",
- "dependencies": {
- "restify": "^4.3.0"
- }
-}
diff --git a/Chapter11/deploying-to-the-cloud/micro/adderservice/service.js b/Chapter11/deploying-to-the-cloud/micro/adderservice/service.js
deleted file mode 100644
index 9d0d175..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/adderservice/service.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict'
-
-module.exports = service
-
-function service () {
- function add (args, cb) {
- const {first, second} = args
- const result = (parseInt(first, 10) + parseInt(second, 10))
- cb(null, {result: result.toString()})
- }
-
- return { add }
-}
diff --git a/Chapter11/deploying-to-the-cloud/micro/adderservice/wiring.js b/Chapter11/deploying-to-the-cloud/micro/adderservice/wiring.js
deleted file mode 100644
index 0ed018c..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/adderservice/wiring.js
+++ /dev/null
@@ -1,27 +0,0 @@
-'use strict'
-
-const restify = require('restify')
-const { ADDERSERVICE_SERVICE_PORT } = process.env
-
-module.exports = wiring
-
-function wiring (service) {
- const server = restify.createServer()
-
- server.get('/add/:first/:second', (req, res, next) => {
- service.add(req.params, (err, result) => {
- if (err) {
- res.send(err)
- next()
- return
- }
- res.send(200, result)
- next()
- })
- })
-
- server.listen(ADDERSERVICE_SERVICE_PORT, '0.0.0.0', () => {
- console.log('%s listening at %s', server.name, server.url)
- })
-}
-
diff --git a/Chapter11/deploying-to-the-cloud/micro/auditservice/.dockerignore b/Chapter11/deploying-to-the-cloud/micro/auditservice/.dockerignore
deleted file mode 100644
index 90718e6..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/auditservice/.dockerignore
+++ /dev/null
@@ -1,4 +0,0 @@
-.git
-.gitignore
-node_modules
-npm-debug.log
diff --git a/Chapter11/deploying-to-the-cloud/micro/auditservice/Dockerfile b/Chapter11/deploying-to-the-cloud/micro/auditservice/Dockerfile
deleted file mode 100644
index 4d2e56b..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/auditservice/Dockerfile
+++ /dev/null
@@ -1,7 +0,0 @@
-FROM node:slim
-RUN mkdir -p /home/node/service
-WORKDIR /home/node/service
-COPY package.json /home/node/service
-RUN npm install
-COPY . /home/node/service
-CMD [ "node", "index.js" ]
diff --git a/Chapter11/deploying-to-the-cloud/micro/auditservice/Jenkinsfile b/Chapter11/deploying-to-the-cloud/micro/auditservice/Jenkinsfile
deleted file mode 100644
index 6a75d1a..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/auditservice/Jenkinsfile
+++ /dev/null
@@ -1,32 +0,0 @@
-pipeline {
- agent any
-
- stages {
- stage('Checkout') {
- steps {
- checkout scm
- }
- }
- stage('Build') {
- steps {
- sh 'source ~/.bashrc && cd auditservice && npm install'
- }
- }
- stage('Test'){
- steps {
- sh 'source ~/.bashrc && cd auditservice && npm test'
- }
- }
- stage('Container'){
- steps {
- sh 'source ~/.bashrc && cd auditservice && sh build.sh container'
- }
- }
- stage('Deploy'){
- steps {
- sh 'source ~/.bashrc && cd auditservice && sh build.sh deploy'
- }
- }
- }
-}
-
diff --git a/Chapter11/deploying-to-the-cloud/micro/auditservice/build.sh b/Chapter11/deploying-to-the-cloud/micro/auditservice/build.sh
deleted file mode 100644
index efa553c..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/auditservice/build.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash
-source ~/.bashrc
-
-GITSHA=$(git rev-parse --short HEAD)
-
-case "$1" in
- container)
- sudo -u pelger docker build -t auditservice:$GITSHA .
- sudo -u pelger docker tag auditservice:$GITSHA pelger/auditservice:$GITSHA
- sudo -i -u pelger docker push pelger/auditservice:$GITSHA
- ;;
- deploy)
- sed -e s/_NAME_/auditservice/ -e s/_PORT_/8081/ < ../deployment/service-template.yml > svc.yml
- sed -e s/_NAME_/auditservice/ -e s/_PORT_/8081/ -e s/_IMAGE_/pelger\\/auditservice:$GITSHA/ < ../deployment/deployment-template.yml > dep.yml
- sudo -i -u pelger kubectl apply -f $(pwd)/svc.yml
- sudo -i -u pelger kubectl apply -f $(pwd)/dep.yml
- ;;
- *)
- echo 'invalid build command'
- exit 1
- ;;
-esac
-
diff --git a/Chapter11/deploying-to-the-cloud/micro/auditservice/index.js b/Chapter11/deploying-to-the-cloud/micro/auditservice/index.js
deleted file mode 100644
index 40a4677..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/auditservice/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-'use strict'
-
-const wiring = require('./wiring')
-const service = require('./service')()
-
-wiring(service)
diff --git a/Chapter11/deploying-to-the-cloud/micro/auditservice/package.json b/Chapter11/deploying-to-the-cloud/micro/auditservice/package.json
deleted file mode 100644
index bcb0138..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/auditservice/package.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "name": "auditservice",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"no test specified\" && exit 0"
- },
- "keywords": [],
- "author": "Peter Elger ",
- "license": "ISC",
- "dependencies": {
- "concordant": "^0.2.1",
- "mongodb": "^2.2.25",
- "restify": "^4.3.0"
- }
-}
diff --git a/Chapter11/deploying-to-the-cloud/micro/auditservice/service.js b/Chapter11/deploying-to-the-cloud/micro/auditservice/service.js
deleted file mode 100644
index c416e4c..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/auditservice/service.js
+++ /dev/null
@@ -1,74 +0,0 @@
-'use strict'
-
-const { MongoClient } = require('mongodb')
-const { dns } = require('concordant')()
-
-module.exports = service
-
-function service () {
-
- var db
-
- setup()
-
- function setup () {
- const mongo = '_main._tcp.mongo.micro.svc.cluster.local'
-
- dns.resolve(mongo, (err, locs) => {
- if (err) {
- console.error(err)
- return
- }
- const { host, port } = locs[0]
- const url = `mongodb://${host}:${port}/audit`
- MongoClient.connect(url, (err, client) => {
- if (err) {
- console.log('failed to connect to MongoDB retrying in 100ms')
- setTimeout(setup, 100)
- return
- }
- db = client
- db.on('close', () => db = null)
- })
- })
- }
-
- function append (args, cb) {
- if (!db) {
- cb(Error('No database connection'))
- return
- }
- const audit = db.collection('audit')
- const data = {
- ts: Date.now(),
- calc: args.calc,
- result: args.calcResult
- }
-
- audit.insert(data, (err, result) => {
- if (err) {
- cb(err)
- return
- }
- cb(null, {result: result.toString()})
- })
- }
-
- function list (args, cb) {
- if (!db) {
- cb(Error('No database connection'))
- return
- }
- const audit = db.collection('audit')
- audit.find({}, {limit: 10}).toArray((err, docs) => {
- if (err) {
- cb(err)
- return
- }
- cb(null, {list: docs})
- })
- }
-
- return { append, list }
-}
-
diff --git a/Chapter11/deploying-to-the-cloud/micro/auditservice/wiring.js b/Chapter11/deploying-to-the-cloud/micro/auditservice/wiring.js
deleted file mode 100644
index b18dce8..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/auditservice/wiring.js
+++ /dev/null
@@ -1,39 +0,0 @@
-'use strict'
-
-const restify = require('restify')
-const { AUDITSERVICE_SERVICE_PORT } = process.env
-
-module.exports = wiring
-
-function wiring (service) {
- const server = restify.createServer()
-
- server.use(restify.bodyParser())
-
- server.post('/append', (req, res, next) => {
- service.append(req.params, (err, result) => {
- if (err) {
- res.send(err)
- return
- }
- res.send(result)
- next()
- })
- })
-
- server.get('/list', (req, res, next) => {
- service.list(req.params, (err, result) => {
- if (err) {
- res.send(err)
- return
- }
- res.send(200, result)
- next()
- })
- })
-
- server.listen(AUDITSERVICE_SERVICE_PORT, '0.0.0.0', () => {
- console.log('%s listening at %s', server.name, server.url)
- })
-}
-
diff --git a/Chapter11/deploying-to-the-cloud/micro/deployment/deployment-template.yml b/Chapter11/deploying-to-the-cloud/micro/deployment/deployment-template.yml
deleted file mode 100644
index 42ee070..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/deployment/deployment-template.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-apiVersion: extensions/v1beta1
-kind: Deployment
-metadata:
- name: _NAME_
-spec:
- replicas: 1
- template:
- metadata:
- labels:
- run: _NAME_
- spec:
- containers:
- - name: _NAME_
- image: _IMAGE_
- ports:
- - containerPort: _PORT_
-
diff --git a/Chapter11/deploying-to-the-cloud/micro/deployment/namespace.yml b/Chapter11/deploying-to-the-cloud/micro/deployment/namespace.yml
deleted file mode 100644
index 1351cbb..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/deployment/namespace.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-apiVersion: v1
-kind: Namespace
-metadata:
- name: micro
- labels:
- name: micro
diff --git a/Chapter11/deploying-to-the-cloud/micro/deployment/service-template-lb.yml b/Chapter11/deploying-to-the-cloud/micro/deployment/service-template-lb.yml
deleted file mode 100644
index 0f6a1b6..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/deployment/service-template-lb.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-apiVersion: v1
-kind: Service
-metadata:
- name: _NAME_
- labels:
- run: _NAME_
-spec:
- ports:
- - port: _PORT_
- name: main
- protocol: TCP
- targetPort: _PORT_
- selector:
- run: _NAME_
- type: LoadBalancer
-
diff --git a/Chapter11/deploying-to-the-cloud/micro/deployment/service-template.yml b/Chapter11/deploying-to-the-cloud/micro/deployment/service-template.yml
deleted file mode 100644
index 11010f6..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/deployment/service-template.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-apiVersion: v1
-kind: Service
-metadata:
- name: _NAME_
- labels:
- run: _NAME_
-spec:
- ports:
- - port: _PORT_
- name: main
- protocol: TCP
- targetPort: _PORT_
- selector:
- run: _NAME_
- type: NodePort
-
diff --git a/Chapter11/deploying-to-the-cloud/micro/eventservice/.dockerignore b/Chapter11/deploying-to-the-cloud/micro/eventservice/.dockerignore
deleted file mode 100644
index 90718e6..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/eventservice/.dockerignore
+++ /dev/null
@@ -1,4 +0,0 @@
-.git
-.gitignore
-node_modules
-npm-debug.log
diff --git a/Chapter11/deploying-to-the-cloud/micro/eventservice/Dockerfile b/Chapter11/deploying-to-the-cloud/micro/eventservice/Dockerfile
deleted file mode 100644
index 4d2e56b..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/eventservice/Dockerfile
+++ /dev/null
@@ -1,7 +0,0 @@
-FROM node:slim
-RUN mkdir -p /home/node/service
-WORKDIR /home/node/service
-COPY package.json /home/node/service
-RUN npm install
-COPY . /home/node/service
-CMD [ "node", "index.js" ]
diff --git a/Chapter11/deploying-to-the-cloud/micro/eventservice/Jenkinsfile b/Chapter11/deploying-to-the-cloud/micro/eventservice/Jenkinsfile
deleted file mode 100644
index 81614ce..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/eventservice/Jenkinsfile
+++ /dev/null
@@ -1,32 +0,0 @@
-pipeline {
- agent any
-
- stages {
- stage('Checkout') {
- steps {
- checkout scm
- }
- }
- stage('Build') {
- steps {
- sh 'source ~/.bashrc && cd eventservice && npm install'
- }
- }
- stage('Test'){
- steps {
- sh 'source ~/.bashrc && cd eventservice && npm test'
- }
- }
- stage('Container'){
- steps {
- sh 'source ~/.bashrc && cd eventservice && sh build.sh container'
- }
- }
- stage('Deploy'){
- steps {
- sh 'source ~/.bashrc && cd eventservice && sh build.sh deploy'
- }
- }
- }
-}
-
diff --git a/Chapter11/deploying-to-the-cloud/micro/eventservice/build.sh b/Chapter11/deploying-to-the-cloud/micro/eventservice/build.sh
deleted file mode 100644
index 68099f0..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/eventservice/build.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash
-source ~/.bashrc
-
-GITSHA=$(git rev-parse --short HEAD)
-
-case "$1" in
- container)
- sudo -u pelger docker build -t eventservice:$GITSHA .
- sudo -u pelger docker tag eventservice:$GITSHA pelger/eventservice:$GITSHA
- sudo -i -u pelger docker push pelger/eventservice:$GITSHA
- ;;
- deploy)
- sed -e s/_NAME_/eventservice/ -e s/_PORT_/8082/ < ../deployment/service-template.yml > svc.yml
- sed -e s/_NAME_/eventservice/ -e s/_PORT_/8082/ -e s/_IMAGE_/pelger\\/eventservice:$GITSHA/ < ../deployment/deployment-template.yml > dep.yml
- sudo -i -u pelger kubectl apply -f $(pwd)/svc.yml
- sudo -i -u pelger kubectl apply -f $(pwd)/dep.yml
- ;;
- *)
- echo 'invalid build command'
- exit 1
- ;;
-esac
-
diff --git a/Chapter11/deploying-to-the-cloud/micro/eventservice/index.js b/Chapter11/deploying-to-the-cloud/micro/eventservice/index.js
deleted file mode 100644
index df3a380..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/eventservice/index.js
+++ /dev/null
@@ -1,5 +0,0 @@
-'use strict'
-
-const wiring = require('./wiring')
-const service = require('./service')()
-wiring(service)
diff --git a/Chapter11/deploying-to-the-cloud/micro/eventservice/package.json b/Chapter11/deploying-to-the-cloud/micro/eventservice/package.json
deleted file mode 100644
index baca7cb..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/eventservice/package.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "name": "event-service",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"no test specified\" && exit 0"
- },
- "keywords": [],
- "author": "Peter Elger ",
- "license": "ISC",
- "dependencies": {
- "concordant": "^0.2.1",
- "mongodb": "^2.2.25",
- "redis": "^2.6.5"
- }
-}
diff --git a/Chapter11/deploying-to-the-cloud/micro/eventservice/service.js b/Chapter11/deploying-to-the-cloud/micro/eventservice/service.js
deleted file mode 100644
index 4082d3e..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/eventservice/service.js
+++ /dev/null
@@ -1,80 +0,0 @@
-'use strict'
-
-const { MongoClient } = require('mongodb')
-const { dns } = require('concordant')()
-
-module.exports = service
-
-function service () {
- var db
-
- setup()
-
- function setup () {
- const mongo = '_main._tcp.mongo.micro.svc.cluster.local'
-
- dns.resolve(mongo, (err, locs) => {
- if (err) {
- console.error(err)
- return
- }
- const { host, port } = locs[0]
- const url = `mongodb://${host}:${port}/events`
- MongoClient.connect(url, (err, client) => {
- if (err) {
- console.log('failed to connect to MongoDB retrying in 100ms')
- setTimeout(setup, 100)
- return
- }
- db = client
- db.on('close', () => db = null)
- })
- })
- }
-
- function record (args, cb) {
- if (!db) {
- cb(Error('No database connection'))
- return
- }
- const events = db.collection('events')
- const data = {
- ts: Date.now(),
- eventType: args.type,
- url: args.url
- }
- events.insert(data, (err, result) => {
- if (err) {
- cb(err)
- return
- }
- cb(null, result)
- })
- }
-
- function summary (args, cb) {
- if (!db) {
- cb(Error('No database connection'))
- return
- }
- const summary = {}
- const events = db.collection('events')
- events.find({}).toArray( (err, docs) => {
- if (err) return cb(err)
-
- docs.forEach(function (doc) {
- if (!(summary[doc.url])) {
- summary[doc.url] = 1
- } else {
- summary[doc.url]++
- }
- })
- cb(null, summary)
- })
- }
-
- return {
- record: record,
- summary: summary
- }
-}
diff --git a/Chapter11/deploying-to-the-cloud/micro/eventservice/wiring.js b/Chapter11/deploying-to-the-cloud/micro/eventservice/wiring.js
deleted file mode 100644
index b04ab35..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/eventservice/wiring.js
+++ /dev/null
@@ -1,53 +0,0 @@
-'use strict'
-
-const { dns } = require('concordant')()
-const redis = require('redis')
-const QNAME = 'eventservice'
-
-module.exports = wiring
-
-function wiring (service) {
-
- const endpoint = '_main._tcp.redis.micro.svc.cluster.local'
-
- dns.resolve(endpoint, (err, locs) => {
- if (err) {
- console.log(err)
- return
- }
- const { port, host } = locs[0]
- pullFromQueue(redis.createClient(port, host))
- })
-
- function pullFromQueue (client) {
- client.brpop(QNAME, 5, function (err, data) {
- if (err) console.error(err)
- if (err || !data) {
- pullFromQueue(client)
- return
- }
- const msg = JSON.parse(data[1])
- const { action, returnPath } = msg
- const cmd = service[action]
- if (typeof cmd !== 'function') {
- pullFromQueue(client)
- return
- }
- cmd(msg, (err, result) => {
- if (err) {
- console.error(err)
- pullFromQueue(client)
- return
- }
- if (!returnPath) {
- pullFromQueue(client)
- return
- }
- client.lpush(returnPath, JSON.stringify(result), (err) => {
- if (err) console.error(err)
- pullFromQueue(client)
- })
- })
- })
- }
-}
diff --git a/Chapter11/deploying-to-the-cloud/micro/fuge/fuge.yml b/Chapter11/deploying-to-the-cloud/micro/fuge/fuge.yml
deleted file mode 100644
index 839ba34..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/fuge/fuge.yml
+++ /dev/null
@@ -1,45 +0,0 @@
-fuge_global:
- run_containers: true
- dns_enabled: true
- dns_host: 127.0.0.1
- dns_port: 53053
- dns_suffix: svc.cluster.local
- dns_namespace: micro
- tail: true
- monitor: true
- monitor_excludes:
- - '**/node_modules/**'
- - '**/.git/**'
- - '**/*.log'
-adderservice:
- type: node
- path: ../adderservice
- run: node index.js
- ports:
- - main=8080
-auditservice:
- type: process
- path: ../auditservice
- run: 'node index.js'
- ports:
- - main=8081
-eventservice:
- type: process
- path: ../eventservice
- run: 'node index.js'
-webapp:
- type: process
- path: ../webapp
- run: npm start
- ports:
- - http=3000
-mongo:
- image: mongo
- type: container
- ports:
- - main=27017:27017
-redis:
- image: redis
- type: container
- ports:
- - main=6379:6379
diff --git a/Chapter11/deploying-to-the-cloud/micro/infrastructure/Jenkinsfile b/Chapter11/deploying-to-the-cloud/micro/infrastructure/Jenkinsfile
deleted file mode 100644
index d204b09..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/infrastructure/Jenkinsfile
+++ /dev/null
@@ -1,22 +0,0 @@
-pipeline {
- agent any
-
- stages {
- stage('Checkout') {
- steps {
- checkout scm
- }
- }
- stage('DeployMongo'){
- steps {
- sh 'source ~/.bashrc && cd infrastructure && sh build.sh mongo'
- }
- }
- stage('DeployRedis'){
- steps {
- sh 'source ~/.bashrc && cd infrastructure && sh build.sh redis'
- }
- }
- }
-}
-
diff --git a/Chapter11/deploying-to-the-cloud/micro/infrastructure/build.sh b/Chapter11/deploying-to-the-cloud/micro/infrastructure/build.sh
deleted file mode 100644
index dc36a20..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/infrastructure/build.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/bash
-sh source ~/.bashrc
-
-case "$1" in
- mongo)
- sed -e s/_NAME_/mongo/ -e s/_PORT_/27017/ < ../deployment/service-template.yml > svc.yml
- sed -e s/_NAME_/mongo/ -e s/_PORT_/27017/ -e s/_IMAGE_/mongo/ < ../deployment/deployment-template.yml > dep.yml
- sudo -i -u pelger kubectl apply -f $(pwd)/svc.yml
- sudo -i -u pelger kubectl apply -f $(pwd)/dep.yml
- ;;
- redis)
- sed -e s/_NAME_/redis/ -e s/_PORT_/6379/ < ../deployment/service-template.yml > svc.yml
- sed -e s/_NAME_/redis/ -e s/_PORT_/6379/ -e s/_IMAGE_/redis/ < ../deployment/deployment-template.yml > dep.yml
- sudo -i -u pelger kubectl apply -f $(pwd)/svc.yml
- sudo -i -u pelger kubectl apply -f $(pwd)/dep.yml
- ;;
- *)
- echo 'invalid build command'
- exit 1
- ;;
-esac
-
diff --git a/Chapter11/deploying-to-the-cloud/micro/report/.dockerignore b/Chapter11/deploying-to-the-cloud/micro/report/.dockerignore
deleted file mode 100644
index 90718e6..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/report/.dockerignore
+++ /dev/null
@@ -1,4 +0,0 @@
-.git
-.gitignore
-node_modules
-npm-debug.log
diff --git a/Chapter11/deploying-to-the-cloud/micro/report/Dockerfile b/Chapter11/deploying-to-the-cloud/micro/report/Dockerfile
deleted file mode 100644
index 4d2e56b..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/report/Dockerfile
+++ /dev/null
@@ -1,7 +0,0 @@
-FROM node:slim
-RUN mkdir -p /home/node/service
-WORKDIR /home/node/service
-COPY package.json /home/node/service
-RUN npm install
-COPY . /home/node/service
-CMD [ "node", "index.js" ]
diff --git a/Chapter11/deploying-to-the-cloud/micro/report/env.js b/Chapter11/deploying-to-the-cloud/micro/report/env.js
deleted file mode 100644
index a4d26e9..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/report/env.js
+++ /dev/null
@@ -1,17 +0,0 @@
-'use strict'
-
-// provides environment variable setup for concordant
-
-const env = {
- DNS_NAMESPACE: 'micro',
- DNS_SUFFIX: 'svc.cluster.local'
-}
-
-if (process.env.NODE_ENV !== 'production') {
- Object.assign(env, {
- DNS_HOST: '127.0.0.1',
- DNS_PORT: '53053'
- })
-}
-
-Object.assign(process.env, env)
\ No newline at end of file
diff --git a/Chapter11/deploying-to-the-cloud/micro/report/index.js b/Chapter11/deploying-to-the-cloud/micro/report/index.js
deleted file mode 100644
index b65b65a..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/report/index.js
+++ /dev/null
@@ -1,43 +0,0 @@
-'use strict'
-require('./env')
-const { dns } = require('concordant')()
-const redis = require('redis')
-const CliTable = require('cli-table')
-const QNAME = 'eventservice'
-const RESPONSE_QUEUE = 'summary'
-const ENDPOINT = '_main._tcp.redis.micro.svc.cluster.local'
-
-dns.resolve(ENDPOINT, report)
-
-function report (err, locs) {
- if (err) { return console.log(err) }
- const { port, host } = locs[0]
- const client = redis.createClient(port, host)
- const event = JSON.stringify({
- action: 'summary',
- returnPath: RESPONSE_QUEUE
- })
-
- client.lpush(QNAME, event, (err) => {
- if (err) {
- console.error(err)
- return
- }
-
- client.brpop(RESPONSE_QUEUE, 5, (err, data) => {
- if (err) {
- console.error(err)
- return
- }
- const summary = JSON.parse(data[1])
- const cols = Object.keys(summary).map((url) => [url, summary[url]])
- const table = new CliTable({
- head: ['url', 'count'],
- colWidths: [50, 10]
- })
- table.push(...cols)
- console.log(table.toString())
- client.quit()
- })
- })
-}
\ No newline at end of file
diff --git a/Chapter11/deploying-to-the-cloud/micro/report/package.json b/Chapter11/deploying-to-the-cloud/micro/report/package.json
deleted file mode 100644
index da2bd04..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/report/package.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "name": "report",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"no test specified\" && exit 0"
- },
- "keywords": [],
- "author": "Peter Elger ",
- "license": "ISC",
- "dependencies": {
- "cli-table": "^0.3.1",
- "concordant": "^0.2.1",
- "redis": "^2.6.5"
- }
-}
diff --git a/Chapter11/deploying-to-the-cloud/micro/webapp/.dockerignore b/Chapter11/deploying-to-the-cloud/micro/webapp/.dockerignore
deleted file mode 100644
index 90718e6..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/webapp/.dockerignore
+++ /dev/null
@@ -1,4 +0,0 @@
-.git
-.gitignore
-node_modules
-npm-debug.log
diff --git a/Chapter11/deploying-to-the-cloud/micro/webapp/Dockerfile b/Chapter11/deploying-to-the-cloud/micro/webapp/Dockerfile
deleted file mode 100644
index b2ffa24..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/webapp/Dockerfile
+++ /dev/null
@@ -1,7 +0,0 @@
-FROM node:slim
-RUN mkdir -p /home/node/service
-WORKDIR /home/node/service
-COPY package.json /home/node/service
-RUN npm install
-COPY . /home/node/service
-CMD [ "npm", "start" ]
diff --git a/Chapter11/deploying-to-the-cloud/micro/webapp/app.js b/Chapter11/deploying-to-the-cloud/micro/webapp/app.js
deleted file mode 100644
index eef315b..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/webapp/app.js
+++ /dev/null
@@ -1,52 +0,0 @@
-var express = require('express')
-var path = require('path')
-var favicon = require('serve-favicon')
-var logger = require('morgan')
-var cookieParser = require('cookie-parser')
-var bodyParser = require('body-parser')
-var eventLogger = require('./lib/event-logger')
-
-var index = require('./routes/index')
-var users = require('./routes/users')
-var add = require('./routes/add')
-var audit = require('./routes/audit')
-
-var app = express()
-
-// view engine setup
-app.set('views', path.join(__dirname, 'views'))
-app.set('view engine', 'ejs')
-
-// uncomment after placing your favicon in /public
-// app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
-app.use(eventLogger())
-app.use(logger('dev'))
-app.use(bodyParser.json())
-app.use(bodyParser.urlencoded({ extended: false }))
-app.use(cookieParser())
-app.use(express.static(path.join(__dirname, 'public')))
-
-app.use('/', index)
-app.use('/users', users)
-app.use('/add', add)
-app.use('/audit', audit)
-
-// catch 404 and forward to error handler
-app.use(function (req, res, next) {
- var err = new Error('Not Found')
- err.status = 404
- next(err)
-})
-
-// error handler
-app.use(function (err, req, res, next) {
- // set locals, only providing error in development
- res.locals.message = err.message
- res.locals.error = req.app.get('env') === 'development' ? err : {}
-
- // render the error page
- res.status(err.status || 500)
- res.render('error')
-})
-
-module.exports = app
diff --git a/Chapter11/deploying-to-the-cloud/micro/webapp/bin/www b/Chapter11/deploying-to-the-cloud/micro/webapp/bin/www
deleted file mode 100644
index 8715eeb..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/webapp/bin/www
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/usr/bin/env node
-
-/**
- * Module dependencies.
- */
-
-var app = require('../app');
-var debug = require('debug')('webapp:server');
-var http = require('http');
-
-/**
- * Get port from environment and store in Express.
- */
-
-var port = normalizePort(process.env.PORT || '3000');
-app.set('port', port);
-
-/**
- * Create HTTP server.
- */
-
-var server = http.createServer(app);
-
-/**
- * Listen on provided port, on all network interfaces.
- */
-
-server.listen(port);
-server.on('error', onError);
-server.on('listening', onListening);
-
-/**
- * Normalize a port into a number, string, or false.
- */
-
-function normalizePort(val) {
- var port = parseInt(val, 10);
-
- if (isNaN(port)) {
- // named pipe
- return val;
- }
-
- if (port >= 0) {
- // port number
- return port;
- }
-
- return false;
-}
-
-/**
- * Event listener for HTTP server "error" event.
- */
-
-function onError(error) {
- if (error.syscall !== 'listen') {
- throw error;
- }
-
- var bind = typeof port === 'string'
- ? 'Pipe ' + port
- : 'Port ' + port;
-
- // handle specific listen errors with friendly messages
- switch (error.code) {
- case 'EACCES':
- console.error(bind + ' requires elevated privileges');
- process.exit(1);
- break;
- case 'EADDRINUSE':
- console.error(bind + ' is already in use');
- process.exit(1);
- break;
- default:
- throw error;
- }
-}
-
-/**
- * Event listener for HTTP server "listening" event.
- */
-
-function onListening() {
- var addr = server.address();
- var bind = typeof addr === 'string'
- ? 'pipe ' + addr
- : 'port ' + addr.port;
- debug('Listening on ' + bind);
-}
diff --git a/Chapter11/deploying-to-the-cloud/micro/webapp/lib/event-logger.js b/Chapter11/deploying-to-the-cloud/micro/webapp/lib/event-logger.js
deleted file mode 100644
index 0140d3f..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/webapp/lib/event-logger.js
+++ /dev/null
@@ -1,40 +0,0 @@
-'use strict'
-
-const { dns } = require('concordant')()
-const redis = require('redis')
-
-module.exports = eventLogger
-
-function eventLogger () {
- const QNAME = 'eventservice'
- var client
-
- const endpoint = '_main._tcp.redis.micro.svc.cluster.local'
- dns.resolve(endpoint, (err, locs) => {
- if (err) {
- console.error(err)
- return
- }
- const { port, host } = locs[0]
- client = redis.createClient(port, host)
- })
-
- function middleware (req, res, next) {
- if (!client) {
- console.log('client not ready, waiting 100ms')
- setTimeout(middleware, 100, req, res, next)
- return
- }
- const event = {
- action: 'record',
- type: 'page',
- url: `${req.protocol}://${req.get('host')}${req.originalUrl}`
- }
- client.lpush(QNAME, JSON.stringify(event), (err) => {
- if (err) console.error(err)
- next()
- })
- }
-
- return middleware
-}
diff --git a/Chapter11/deploying-to-the-cloud/micro/webapp/package.json b/Chapter11/deploying-to-the-cloud/micro/webapp/package.json
deleted file mode 100644
index 1c45acf..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/webapp/package.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "webapp",
- "version": "0.0.0",
- "private": true,
- "scripts": {
- "start": "node ./bin/www"
- },
- "dependencies": {
- "body-parser": "~1.16.0",
- "concordant": "^0.2.1",
- "cookie-parser": "~1.4.3",
- "debug": "~2.6.0",
- "ejs": "~2.5.5",
- "express": "~4.14.1",
- "morgan": "~1.7.0",
- "mu": "^2.1.2",
- "restify": "^4.3.0",
- "serve-favicon": "~2.3.2"
- }
-}
diff --git a/Chapter11/deploying-to-the-cloud/micro/webapp/public/stylesheets/style.css b/Chapter11/deploying-to-the-cloud/micro/webapp/public/stylesheets/style.css
deleted file mode 100644
index 9453385..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/webapp/public/stylesheets/style.css
+++ /dev/null
@@ -1,8 +0,0 @@
-body {
- padding: 50px;
- font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
-}
-
-a {
- color: #00B7FF;
-}
diff --git a/Chapter11/deploying-to-the-cloud/micro/webapp/routes/add.js b/Chapter11/deploying-to-the-cloud/micro/webapp/routes/add.js
deleted file mode 100644
index 3ab03cc..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/webapp/routes/add.js
+++ /dev/null
@@ -1,68 +0,0 @@
-'use strict'
-
-const { Router } = require('express')
-const restify = require('restify')
-const { dns } = require('concordant')()
-const router = Router()
-var clients
-
-router.get('/', function (req, res) {
- res.render('add', { first: 0, second: 0, result: 0 })
-})
-
-router.post('/calculate', resolve, respond)
-
-function resolve (req, res, next) {
- if (clients) {
- next()
- return
- }
- const adderservice = `_main._tcp.adderservice.micro.svc.cluster.local`
- const auditservice = `_main._tcp.auditservice.micro.svc.cluster.local`
- dns.resolve(adderservice, (err, locs) => {
- if (err) {
- next(err)
- return
- }
- const { host, port } = locs[0]
- const adder = `${host}:${port}`
- dns.resolve(auditservice, (err, locs) => {
- if (err) {
- next(err)
- return
- }
- const { host, port } = locs[0]
- const audit = `${host}:${port}`
- clients = {
- adder: restify.createJSONClient({url: `http://${adder}`}),
- audit: restify.createJSONClient({url: `http://${audit}`})
- }
- next()
- })
- })
-}
-
-function respond (req, res, next) {
- const { first, second } = req.body
- clients.adder.get(
- `/add/${first}/${second}`,
- (err, svcReq, svcRes, data) => {
- if (err) {
- next(err)
- return
- }
-
- const { result } = data
- clients.audit.post('/append', {
- calc: first + '+' + second,
- calcResult: result
- }, (err) => {
- if (err) console.error(err)
- })
-
- res.render('add', { first, second, result })
- }
- )
-}
-
-module.exports = router
diff --git a/Chapter11/deploying-to-the-cloud/micro/webapp/routes/audit.js b/Chapter11/deploying-to-the-cloud/micro/webapp/routes/audit.js
deleted file mode 100644
index a083eef..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/webapp/routes/audit.js
+++ /dev/null
@@ -1,37 +0,0 @@
-'use strict'
-
-const { Router } = require('express')
-const restify = require('restify')
-const { dns } = require('concordant')()
-const router = Router()
-var client
-
-router.get('/', resolve, respond)
-
-function resolve (req, res, next) {
- if (client) {
- next()
- return
- }
- const auditservice = `_main._tcp.auditservice.micro.svc.cluster.local`
- dns.resolve(auditservice, (err, locs) => {
- if (err) {
- next(err)
- return
- }
- const { host, port } = locs[0]
- client = restify.createJSONClient(`http://${host}:${port}`)
- })
-}
-
-function respond (req, res, next) {
- client.get('/list', (err, svcReq, svcRes, data) => {
- if (err) {
- next(err)
- return
- }
- res.render('audit', data)
- })
-}
-
-module.exports = router
diff --git a/Chapter11/deploying-to-the-cloud/micro/webapp/routes/index.js b/Chapter11/deploying-to-the-cloud/micro/webapp/routes/index.js
deleted file mode 100644
index 956680b..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/webapp/routes/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var express = require('express')
-var router = express.Router()
-
-/* GET home page. */
-router.get('/', function (req, res, next) {
- res.render('index', { title: 'Express' })
-})
-
-module.exports = router
diff --git a/Chapter11/deploying-to-the-cloud/micro/webapp/routes/users.js b/Chapter11/deploying-to-the-cloud/micro/webapp/routes/users.js
deleted file mode 100644
index 8cfe88f..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/webapp/routes/users.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var express = require('express')
-var router = express.Router()
-
-/* GET users listing. */
-router.get('/', function (req, res, next) {
- res.send('respond with a resource')
-})
-
-module.exports = router
diff --git a/Chapter11/deploying-to-the-cloud/micro/webapp/views/add.ejs b/Chapter11/deploying-to-the-cloud/micro/webapp/views/add.ejs
deleted file mode 100644
index da8279c..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/webapp/views/add.ejs
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
- Add
-
-
-
- Add it up!
-
-
- result = <%= result %>
-
-
diff --git a/Chapter11/deploying-to-the-cloud/micro/webapp/views/audit.ejs b/Chapter11/deploying-to-the-cloud/micro/webapp/views/audit.ejs
deleted file mode 100644
index dd6d71b..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/webapp/views/audit.ejs
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
- Audit
-
-
-
- Calculation History
-
- <% list.forEach(function (el) { %>
- - at: <%= new Date(el.ts).toLocaleString() %>, calculated: <%= el.calc %>, result: <%= el.result %>
- <% }) %>
-
-
-
\ No newline at end of file
diff --git a/Chapter11/deploying-to-the-cloud/micro/webapp/views/error.ejs b/Chapter11/deploying-to-the-cloud/micro/webapp/views/error.ejs
deleted file mode 100644
index 7cf94ed..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/webapp/views/error.ejs
+++ /dev/null
@@ -1,3 +0,0 @@
-<%= message %>
-<%= error.status %>
-<%= error.stack %>
diff --git a/Chapter11/deploying-to-the-cloud/micro/webapp/views/index.ejs b/Chapter11/deploying-to-the-cloud/micro/webapp/views/index.ejs
deleted file mode 100644
index 7b7a1d6..0000000
--- a/Chapter11/deploying-to-the-cloud/micro/webapp/views/index.ejs
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
- <%= title %>
-
-
-
- <%= title %>
- Welcome to <%= title %>
-
-
diff --git a/Chapter11/running-a-docker-registry/micro/adderservice/.dockerignore b/Chapter11/running-a-docker-registry/micro/adderservice/.dockerignore
deleted file mode 100644
index 90718e6..0000000
--- a/Chapter11/running-a-docker-registry/micro/adderservice/.dockerignore
+++ /dev/null
@@ -1,4 +0,0 @@
-.git
-.gitignore
-node_modules
-npm-debug.log
diff --git a/Chapter11/running-a-docker-registry/micro/adderservice/Dockerfile b/Chapter11/running-a-docker-registry/micro/adderservice/Dockerfile
deleted file mode 100644
index 4d2e56b..0000000
--- a/Chapter11/running-a-docker-registry/micro/adderservice/Dockerfile
+++ /dev/null
@@ -1,7 +0,0 @@
-FROM node:slim
-RUN mkdir -p /home/node/service
-WORKDIR /home/node/service
-COPY package.json /home/node/service
-RUN npm install
-COPY . /home/node/service
-CMD [ "node", "index.js" ]
diff --git a/Chapter11/running-a-docker-registry/micro/adderservice/index.js b/Chapter11/running-a-docker-registry/micro/adderservice/index.js
deleted file mode 100644
index 753a4ce..0000000
--- a/Chapter11/running-a-docker-registry/micro/adderservice/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-'use strict'
-
-const wiring = require('./wiring')
-const service = require('./service')()
-
-wiring(service)
\ No newline at end of file
diff --git a/Chapter11/running-a-docker-registry/micro/adderservice/package.json b/Chapter11/running-a-docker-registry/micro/adderservice/package.json
deleted file mode 100644
index 595a5b0..0000000
--- a/Chapter11/running-a-docker-registry/micro/adderservice/package.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "adder-service",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "Peter Elger ",
- "license": "ISC",
- "dependencies": {
- "restify": "^4.3.0"
- }
-}
diff --git a/Chapter11/running-a-docker-registry/micro/adderservice/service.js b/Chapter11/running-a-docker-registry/micro/adderservice/service.js
deleted file mode 100644
index af95084..0000000
--- a/Chapter11/running-a-docker-registry/micro/adderservice/service.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict'
-
-module.exports = service
-
-function service () {
- function add (args, cb) {
- const {first, second} = args
- const result = (parseInt(first, 10) + parseInt(second, 10))
- cb(null, {result: result.toString()})
- }
-
- return { add }
-}
\ No newline at end of file
diff --git a/Chapter11/running-a-docker-registry/micro/adderservice/wiring.js b/Chapter11/running-a-docker-registry/micro/adderservice/wiring.js
deleted file mode 100644
index 0e81c6c..0000000
--- a/Chapter11/running-a-docker-registry/micro/adderservice/wiring.js
+++ /dev/null
@@ -1,26 +0,0 @@
-'use strict'
-
-const restify = require('restify')
-const { ADDERSERVICE_SERVICE_PORT } = process.env
-
-module.exports = wiring
-
-function wiring (service) {
- const server = restify.createServer()
-
- server.get('/add/:first/:second', (req, res, next) => {
- service.add(req.params, (err, result) => {
- if (err) {
- res.send(err)
- next()
- return
- }
- res.send(200, result)
- next()
- })
- })
-
- server.listen(ADDERSERVICE_SERVICE_PORT, '0.0.0.0', () => {
- console.log('%s listening at %s', server.name, server.url)
- })
-}
\ No newline at end of file
diff --git a/Chapter11/running-a-docker-registry/micro/certs/localhost.crt b/Chapter11/running-a-docker-registry/micro/certs/localhost.crt
deleted file mode 100644
index ba20df3..0000000
--- a/Chapter11/running-a-docker-registry/micro/certs/localhost.crt
+++ /dev/null
@@ -1,34 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIF9DCCA9ygAwIBAgIJANNfvhUTrvvCMA0GCSqGSIb3DQEBCwUAMFkxCzAJBgNV
-BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX
-aWRnaXRzIFB0eSBMdGQxEjAQBgNVBAMTCWxvY2FsaG9zdDAeFw0xNzA0MjQxNTEx
-MDJaFw0xODA0MjQxNTExMDJaMFkxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21l
-LVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxEjAQBgNV
-BAMTCWxvY2FsaG9zdDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMAG
-+IOL0sVf1S/4YZ9bzMgIb+n9Z4f5EZQ+6Cs43ohmFpnNcHPw5GsW8I4rKNBmA+Lh
-Bgix9HwjWi7ZagbCYErw3avFRA9xSd8MUelLuIzSfhKZVSsMeDNiE1z9PtdkTASz
-i2bSgxx4iH1uGH0WDwC84vzMiIX3gNGsbThGVcjG7IFuS4QdeUA2n8zLcPG6lRLB
-gPXD6v21bVKBo7FS7UthLWsa1dhvUKk/dpMaVMXINCS90TkyXxIjTkfy8epwD+Vr
-98CLboooqt1ETwSdNii0QtP+6fkZ5dhjMfOLmuJ70bEGeK95CjW2ajRDwooNbp0j
-dzdPfYGj2tuYQfKf+EJLanTE1W3ohUCAwYpmD8xZ+tsNKxcvCFy8iypBMRiyKKLr
-swVaaO3qaM/suGSeTtKGBj2HKPU2IlTvjHfa/sogJyyHdhye0Wy1xQijsDzgL9x3
-+PfoprlQ6mhGCTi4q+oJnmqVq6A6xdvo6L/pYbh/6C5GcdUoILAjL3q4bFxt+PEP
-AX+ZYpiZy9q3qRizZuysVMBcNbyNOH9uGXpX13QBjL39rQmIel3ieAmwB4LWsM+x
-6+JmPtA/UJ4WyImbUQMW9PM0KQdEkv569VBg6jo0hwjuMaliPCbZZIqBqXpTzAyr
-ctMSu6HMmYmicmsThqlHk/C027YqEnRZJao4jz9pAgMBAAGjgb4wgbswHQYDVR0O
-BBYEFGHzPwViRuKw8MgGm+HhTnox0k/aMIGLBgNVHSMEgYMwgYCAFGHzPwViRuKw
-8MgGm+HhTnox0k/aoV2kWzBZMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1T
-dGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMRIwEAYDVQQD
-Ewlsb2NhbGhvc3SCCQDTX74VE677wjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEB
-CwUAA4ICAQBPdvbD/IQGPiW4GOxux+tmF83ZDNI/mA4WaNcEsn/edm89TYowktkZ
-6f7uMak4CBp0M+1wVGmi0iuM+GrQNysnVbo918+W3OPV1ukons1U6DyzT/0ObsiG
-3Iicos64xK5u95AdTvH1Hk0nyGN6Q+O9Pp/clRNA3ulESCjFMOr6pTSjxBZbb1CP
-87waZrIB/NVOxFQKPkqJd8e8Q4tiG5e5/ZmhuoYlcU82tTH7dqYFhwQMCvLkZjbv
-c9vBcImfS0Qz7nTgh3ZzZIsAyo1BOj24SxRwM/8sCf051VWIJnd0ds4LploeL6dK
-QntMK5hVHFLwdfx5glbOSFr1bLGuFQufZSI36bIpkYPd7clmVSwt/tD3C+YEhPBq
-7s/DZj8fyvNFxg2tBH6Lw0Z8QM+UVC8eQNUbaVuVDmw3M5/4szDt98hrniUBW4zF
-Ep7J3ERSSB7KRwlj623KaF+9EhWKFQTazcVxtSF7a2UmTMuXpIlWgATbYPsXP5fE
-wivMvYjXiJrdUuJoAXaGMU+Eo7yT5oEZgRr4LeoOjaCDeWCpoMPxsZ3JnNWqodCN
-ZQxGEewNrt/fHdEaEIO79R24t1so4be3vi/1fUU/l4ewdw0ImQvC6IZAFrCUlOsL
-rvwPu37M6Mgj4VZ6tcfNWgPUGuhpK9TFIF4R2l0heeHsOs/tpxb3bw==
------END CERTIFICATE-----
diff --git a/Chapter11/running-a-docker-registry/micro/certs/localhost.key b/Chapter11/running-a-docker-registry/micro/certs/localhost.key
deleted file mode 100644
index 1415238..0000000
--- a/Chapter11/running-a-docker-registry/micro/certs/localhost.key
+++ /dev/null
@@ -1,51 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIJKAIBAAKCAgEAwAb4g4vSxV/VL/hhn1vMyAhv6f1nh/kRlD7oKzjeiGYWmc1w
-c/Dkaxbwjiso0GYD4uEGCLH0fCNaLtlqBsJgSvDdq8VED3FJ3wxR6Uu4jNJ+EplV
-Kwx4M2ITXP0+12RMBLOLZtKDHHiIfW4YfRYPALzi/MyIhfeA0axtOEZVyMbsgW5L
-hB15QDafzMtw8bqVEsGA9cPq/bVtUoGjsVLtS2EtaxrV2G9QqT92kxpUxcg0JL3R
-OTJfEiNOR/Lx6nAP5Wv3wItuiiiq3URPBJ02KLRC0/7p+Rnl2GMx84ua4nvRsQZ4
-r3kKNbZqNEPCig1unSN3N099gaPa25hB8p/4QktqdMTVbeiFQIDBimYPzFn62w0r
-Fy8IXLyLKkExGLIoouuzBVpo7epoz+y4ZJ5O0oYGPYco9TYiVO+Md9r+yiAnLId2
-HJ7RbLXFCKOwPOAv3Hf49+imuVDqaEYJOLir6gmeapWroDrF2+jov+lhuH/oLkZx
-1SggsCMverhsXG348Q8Bf5limJnL2repGLNm7KxUwFw1vI04f24ZelfXdAGMvf2t
-CYh6XeJ4CbAHgtawz7Hr4mY+0D9QnhbIiZtRAxb08zQpB0SS/nr1UGDqOjSHCO4x
-qWI8JtlkioGpelPMDKty0xK7ocyZiaJyaxOGqUeT8LTbtioSdFklqjiPP2kCAwEA
-AQKCAgBEbzeJyf7nkGutmNtRq6mjcD5SKZkIAF+fcXvUS4QjIB7V2T1GVIdTEu3P
-/Nmiy3h/FqrL1n/G7eJp59m9ZvBiRMz7NmY3CqzE7OMUPYQby7hacILFwL/lsAIu
-laIbqQbedg4sKsHHF72s1dusWHwoSyip50qQU9B46PZTo91WnG4VAnWvM8HOfKke
-lzI9M72E3alT7OqGWG4JhWINA/zWbHB/RyUG6UTZzGA5tJyZj+vlXDCALc9r62Eu
-iwpj/mPr4zp8SDSw0CV0ja+LeWufvf5DBwnjWLNtFozqusoMBQyKBkBkaMKWudfH
-oI5oHLlbDxShhZa46OhKckyuZwxWFMO7Hv+3TTLik0Sg3bXTs9iCiXhWI+21le1E
-LLpZRM36q1UBrXCuzPfenbMkI6OFp+Nz5HVDHf1gRPoYRgVhyrIawc3Bs1lUWFx/
-BM/CdDtabMS+kv3eydXtQ3AkkRxlLSAkqYAXG3kd3Rnyzmxb8+cbTBnkBY1hI4fr
-43g30Bg0pinUvSAKoGFTkoA99FKvekjyOQBo62/GiCAYqO5DG7/lHrF6LHWuJ6/H
-CgLVTjqUpd4bpcLSokmT9cF43f/vdrRotM2xvd/MsGisiG/0dO1788OR4biUIav3
-1RuSF8YXBVGUfQOvsgcK3Gwvrc0CtWa6Qv7Cu6TwQ6AE1sei8QKCAQEA+uuIl/UB
-AhNXpqQsk72fgUMxAJXjiuZc/Ed66kewxLqAQRaT1OtrjqcyY1XyFL4TCVAzTk5v
-H1N7aer8urVwFtN7r3xQmWrlJI+ANhx0L6b/smxR0/ndk6sI9IRSBFOgJrRFKpR3
-Cwdn7hi5W6WeSSMTQwIgI+e+VdUz2ByHhImQkcIFk9hXqs9dBm9ud8yr0qa6ebet
-0jLc8RCekQCoo5wV+UfSy9ev/G/nDCV7FGsnhQe7b21m7OIQ8RjhNNy7A/dlrhnY
-pD6IxnMQY3tbwqwJjip/eZJyLNdngbLVw0nkxNyJg0s0Ypx0eR3Iy0I3BzKrCTip
-BDCG3TMAtFzmewKCAQEAw+o1O1uONf8LBqsFq9dPrvn5CGLfxC8MNNsYlcFPvD8Y
-9naYg9earFrDk0YaxtygUjcHX43vO6y3CRckZzThB0+vZdizablle4qYapv9m7uw
-+JeHb/OlPtcJG57bNC5OQQgHD5TldCMDt48uwPPjfq7XjCuHmeMzpQFejuTcwaAU
-Fqv04ar2nWUOrvKL4x6/2mujkS2sCpbz/m5CUIStAWXtWT9HrtOUXevqEBxv1K/9
-I29LLhO94hp6vYsFIltoDPw+dhL39WmboIuUBmpjGrfIKbYq2/ccxtspNrrkttNH
-YvaifVR91h6c59bkBnOHOdTj4aPz/9/Hxd1C+wGeawKCAQBXz4ua2jQDHO/Espmj
-Dm4+l1wTv2DFID8UTpOWX4ZeIoJ1xMfxcH3Qi3SXzOEOH0KcNMPvuIUs6lM7SvAt
-CwfyBQq47AFs3zrXo5yT0ztZ3dCICV5Nl5jSb72PjKsDNpzKTrYR46kRZAMcEOz1
-RK1zHOJFxf2ncxdqBFXDYKCQYnAEgmjfR4vOjAkbEm4PYMIU0yJZLE2ZTRGDD3Te
-e+OIdjw+Y8NCcPX2mta5qng7OhC3fnA624d0iNyy8ykFDeYoyjB8UDE/sV6+TFBE
-8Eu5gelKJlc8HWL1jGB9xC8Iy9hSiHdbSjtH80bTh/fYIhEN5M50SK7ld3ILASlS
-9Vv3AoIBAG4AzY7co4cSA2DlGjQYmzdGSFw7GCWRvSrYcn9zoY+zZhLNGGm+36wy
-8ml5DYPnUWWYXF181n0NR2ClS91fRZLTXUq0WFjermqlsVr653VP99g9TODBT2Fv
-YD/P/IjaDzpYhY5sLkH9fxLMJJZW2r/A8GpV7reraM4XbL6TJpjZhy4Ls14anopV
-ud7ldUI7e8HqelcD6/uuMqYDxtxrArEsSA66h0dUqZPq6OvO68PiZSJGVVIz54RT
-FePjcSiPZmcUIwYtNGjpuWZ1uNG5Xpgb5Rn2nS4RHGlTmVqPqeg1zXl1vlrc3CMj
-4ToT4Mj2iVEhhiql4lUjk4o36GoDyK0CggEBAI1Nw1tna7iU1jLcOaCcaXALa8qI
-AqjmtmUeQAD9zvjZaWfU9wS8EK2UNB02fG16Fxd1MMNzU9+rzZ2dmUyEFjGbRG8L
-nexR1lAuGdALP2lvU9GhBCSkZ9BpBIfaH3n/j0fWG6LKdAjnoyYCtazTqCSESQFH
-jymtnlX40y27FoBV5hKVM7pgjxpBusRTm4r08Ml7slzqQXxuaQc/x9y1db3lXtTq
-NSXP+wYTPFIwqpC9GWokZLGhF/Il//jKKOymUMKIQX0gYJ9Zt1sPUtOZs8saEZZA
-uVFa27HCSCQVNQImCQ0vQZmXd7g7xeTvFFo4hpfKGyMclHT13hCwm18rmNw=
------END RSA PRIVATE KEY-----
diff --git a/Chapter11/storing-images-on-dockerhub/micro/adderservice/.dockerignore b/Chapter11/storing-images-on-dockerhub/micro/adderservice/.dockerignore
deleted file mode 100644
index 90718e6..0000000
--- a/Chapter11/storing-images-on-dockerhub/micro/adderservice/.dockerignore
+++ /dev/null
@@ -1,4 +0,0 @@
-.git
-.gitignore
-node_modules
-npm-debug.log
diff --git a/Chapter11/storing-images-on-dockerhub/micro/adderservice/Dockerfile b/Chapter11/storing-images-on-dockerhub/micro/adderservice/Dockerfile
deleted file mode 100644
index 4d2e56b..0000000
--- a/Chapter11/storing-images-on-dockerhub/micro/adderservice/Dockerfile
+++ /dev/null
@@ -1,7 +0,0 @@
-FROM node:slim
-RUN mkdir -p /home/node/service
-WORKDIR /home/node/service
-COPY package.json /home/node/service
-RUN npm install
-COPY . /home/node/service
-CMD [ "node", "index.js" ]
diff --git a/Chapter11/storing-images-on-dockerhub/micro/adderservice/index.js b/Chapter11/storing-images-on-dockerhub/micro/adderservice/index.js
deleted file mode 100644
index 753a4ce..0000000
--- a/Chapter11/storing-images-on-dockerhub/micro/adderservice/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-'use strict'
-
-const wiring = require('./wiring')
-const service = require('./service')()
-
-wiring(service)
\ No newline at end of file
diff --git a/Chapter11/storing-images-on-dockerhub/micro/adderservice/package.json b/Chapter11/storing-images-on-dockerhub/micro/adderservice/package.json
deleted file mode 100644
index 595a5b0..0000000
--- a/Chapter11/storing-images-on-dockerhub/micro/adderservice/package.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "adder-service",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "Peter Elger ",
- "license": "ISC",
- "dependencies": {
- "restify": "^4.3.0"
- }
-}
diff --git a/Chapter11/storing-images-on-dockerhub/micro/adderservice/service.js b/Chapter11/storing-images-on-dockerhub/micro/adderservice/service.js
deleted file mode 100644
index af95084..0000000
--- a/Chapter11/storing-images-on-dockerhub/micro/adderservice/service.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict'
-
-module.exports = service
-
-function service () {
- function add (args, cb) {
- const {first, second} = args
- const result = (parseInt(first, 10) + parseInt(second, 10))
- cb(null, {result: result.toString()})
- }
-
- return { add }
-}
\ No newline at end of file
diff --git a/Chapter11/storing-images-on-dockerhub/micro/adderservice/wiring.js b/Chapter11/storing-images-on-dockerhub/micro/adderservice/wiring.js
deleted file mode 100644
index 0e81c6c..0000000
--- a/Chapter11/storing-images-on-dockerhub/micro/adderservice/wiring.js
+++ /dev/null
@@ -1,26 +0,0 @@
-'use strict'
-
-const restify = require('restify')
-const { ADDERSERVICE_SERVICE_PORT } = process.env
-
-module.exports = wiring
-
-function wiring (service) {
- const server = restify.createServer()
-
- server.get('/add/:first/:second', (req, res, next) => {
- service.add(req.params, (err, result) => {
- if (err) {
- res.send(err)
- next()
- return
- }
- res.send(200, result)
- next()
- })
- })
-
- server.listen(ADDERSERVICE_SERVICE_PORT, '0.0.0.0', () => {
- console.log('%s listening at %s', server.name, server.url)
- })
-}
\ No newline at end of file
diff --git a/Chapter11/storing-images-on-dockerhub/test.sh b/Chapter11/storing-images-on-dockerhub/test.sh
deleted file mode 100644
index 5086478..0000000
--- a/Chapter11/storing-images-on-dockerhub/test.sh
+++ /dev/null
@@ -1 +0,0 @@
-curl http://localhost:8080/add/2/3