From 10fed3a3a87d18294c92d999e83cd7d8e3c7fc90 Mon Sep 17 00:00:00 2001 From: Vikas Patel Date: Sun, 31 May 2026 12:56:37 +0530 Subject: [PATCH 1/4] Readme.md --- README.MD | 1 + 1 file changed, 1 insertion(+) create mode 100644 README.MD diff --git a/README.MD b/README.MD new file mode 100644 index 0000000..557c3fa --- /dev/null +++ b/README.MD @@ -0,0 +1 @@ + \ No newline at end of file From 7b65f531a0768a59c2113029bae1f09dc09e0451 Mon Sep 17 00:00:00 2001 From: Vikas Patel Date: Sun, 31 May 2026 12:58:39 +0530 Subject: [PATCH 2/4] readme --- README.MD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.MD b/README.MD index 557c3fa..9292268 100644 --- a/README.MD +++ b/README.MD @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file From c3f7e2aa3c20445244198c18ce508be603deab05 Mon Sep 17 00:00:00 2001 From: Vikas Patel Date: Sun, 31 May 2026 13:00:20 +0530 Subject: [PATCH 3/4] readme --- README.MD | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.MD b/README.MD index 9292268..b783e7c 100644 --- a/README.MD +++ b/README.MD @@ -1 +1,2 @@ - \ No newline at end of file + +this is a project From bca29176d869a026ff2624b8302859c088ef45c5 Mon Sep 17 00:00:00 2001 From: Vikas Patel Date: Sun, 31 May 2026 13:13:31 +0530 Subject: [PATCH 4/4] added readme --- .github/FUNDING.yml | 12 -- .idea/misc.xml | 6 - .idea/modules.xml | 8 - .idea/vcs.xml | 6 - README.MD | 2 - index.html | 162 --------------- index.js | 55 ----- module/api/api.js | 414 -------------------------------------- module/md5/md5.js | 19 -- node | 1 + node.iml | 11 - package-lock.json | 111 ---------- postfix/main.cf | 69 ------- postfix/master.cf | 130 ------------ ssl/example.cert.pem | 31 --- ssl/example.fullchain.pem | 58 ------ ssl/example.privkey.pem | 28 --- 17 files changed, 1 insertion(+), 1122 deletions(-) delete mode 100644 .github/FUNDING.yml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/vcs.xml delete mode 100644 README.MD delete mode 100644 index.html delete mode 100644 index.js delete mode 100644 module/api/api.js delete mode 100644 module/md5/md5.js create mode 160000 node delete mode 100644 node.iml delete mode 100644 package-lock.json delete mode 100644 postfix/main.cf delete mode 100644 postfix/master.cf delete mode 100644 ssl/example.cert.pem delete mode 100644 ssl/example.fullchain.pem delete mode 100644 ssl/example.privkey.pem diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index 37570fb..0000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1,12 +0,0 @@ -# These are supported funding model platforms - -github: javascriptteacher # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] -patreon: js_tut -open_collective: # Replace with a single Open Collective username -ko_fi: # Replace with a single Ko-fi username -tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel -community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry -liberapay: # Replace with a single Liberapay username -issuehunt: # Replace with a single IssueHunt username -otechie: # Replace with a single Otechie username -custom: https://www.paypal.me/learningcurve1 diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 639900d..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 935c7b9..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/README.MD b/README.MD deleted file mode 100644 index b783e7c..0000000 --- a/README.MD +++ /dev/null @@ -1,2 +0,0 @@ - -this is a project diff --git a/index.html b/index.html deleted file mode 100644 index 95ae79b..0000000 --- a/index.html +++ /dev/null @@ -1,162 +0,0 @@ - - - Node API Endpoint Server - - - - - - -
-
- API Tests
- - -
-
-
-
-
-
-
-
-
-
-
- - - diff --git a/index.js b/index.js deleted file mode 100644 index a5d6e81..0000000 --- a/index.js +++ /dev/null @@ -1,55 +0,0 @@ -let http = require('http'); -let fs = require('fs'); -let path = require('path'); - -/* note, mysql must be installed (npm install mysql) and mysql server running on localhost or elsewhere*/ -let { API, database } = require('./module/api/api.js'); - -database.create(); - -process.env.node_env = "localhost"; - -// replace xx.xx.xx.xxx with your own remote IP address or localhost (127.0.0.1) -const ip = '23.239.21.207'; -const port = process.env.node_env === 'production' ? 80 : 3000; - -http.createServer(function(request, response) { - - console.log('request ', request.url); - - let filename = '.' + request.url; - if (filename == './') - filename = './index.html'; - - let extension = String(path.extname(filename)).toLowerCase(); - let mime = { '.html': 'text/html', '.js': 'text/javascript', '.css': 'text/css', '.json': 'application/json', '.png': 'image/png', '.jpg': 'image/jpg', '.gif': 'image/gif', } - let contentType = mime[extension] || 'application/octet-stream'; - - fs.readFile(filename, function (error, content) { - if (error) { - if (error.code == 'ENOENT') { - if (API.catchAPIrequest( request.url )) - API.exec(request, response); - else - fs.readFile('./404.html', function (error, content) { - response.writeHead(200, { 'Content-Type': contentType }); - response.end(content, 'utf-8'); - }); - } else { - response.writeHead(500) - response.end('Server error: ' + error.code + ' ..\n'); - response.end(); - } - } else { - console.log("API request detecting..."); - response.writeHead(200, { 'Content-Type': contentType }); - response.end(content, 'utf-8'); - } - }); -}).listen(port, ip); - -process.on('exit', function () { database.connection.end(); console.log('process.exit'); }); -process.on('SIGINT', function () { console.log('Ctrl-C...'); database.connection.end(); process.exit(2) }); -process.on('uncaughtException', function(e) { console.log(e.stack); database.connection.end(); process.exit(99); }); - -console.log('Server running at http://' + ip + ':' + port + '/'); \ No newline at end of file diff --git a/module/api/api.js b/module/api/api.js deleted file mode 100644 index f76a376..0000000 --- a/module/api/api.js +++ /dev/null @@ -1,414 +0,0 @@ -const ip = require('ip'); -const mysql = require('mysql'); -// Standard MD5 hashing algorithm -const md5 = require('./../md5/md5.js'); -// Standard FIPS 202 SHA-3 implementation -const { SHA3 } = require('sha3'); -// The Keccak hash function is also available -const { Keccak } = require('sha3'); - -// Generate timestamp: if full argument is false/undefined, -// timestamp is divided by 1000 to generate linux-length timestamp -function timestamp(full) { - let date = new Date(); - let timestamp = date.getTime(); - return full ? Math.floor(timestamp) : Math.floor(timestamp / 1000); -} - -// Generate string "1s", "2h", etc between now and "time" argument -function elapsed( time ) { - const $SECONDS = Math.abs(timestamp() - time); - const $iv_table = ["s","min","h","d","mo","y","s","min","h","d","mo","y"]; - const $iv = [$SECONDS, - ($SECONDS-($SECONDS%60))/60, - ($SECONDS-($SECONDS%3600))/3600, - ($SECONDS-($SECONDS%(3600*24)))/(3600*24), - ($SECONDS-($SECONDS%(3600*24*30)))/(3600*24*30), - ($SECONDS-($SECONDS%(3600*24*30*12)))/(3600*24*30*12)]; - for (let $i = 5; $i >= 0; $i--) { - $r = $iv[$i]; - if ($r > 0) { - if (($r > 1 || $r == 0)) - $i += 6; - return $r + "" + $iv_table[$i]; - } - } -} - -// Check if property with value exists on an object -Object.prototype.exists = function(property_name, value) { - for (let i = 0; i < this.length; i++) { - let o = this[i]; - if (o[property_name] != undefined) - if (o[property_name] == value) - return true; - } - return false; -} - -// Check if value exists in array -Array.prototype.exists = function(value) { - for (let i = 0; i < this.length; i++) - if (this[i] == value) - return true; - return false; -} - -class database { - constructor() { } - static create() { - let message = "Creating MySQL connection..."; - this.connection = mysql.createConnection({ - host : 'XX.XX.XX.XXX', // or localhost - user : 'root', - password : 'PassWord123!', - database : 'databasename' - }); - this.connection.connect(); - console.log(message + "Ok."); - } -} - -// Requires payload.email_address = -function action_register_user ( request, payload ) { - return new Promise((resolve, reject) => { - if (!request || !request.headers || !payload) - reject("Error: Wrong request, missing request headers, or missing payload"); - let q = `SELECT email_address FROM user WHERE email_address = '${payload.email_address}' LIMIT 1`; - database.connection.query(q, - (error, results) => { // Check if user already exists in database - if (error) - throw(error); - let result = results[0]; - if (results && results.length != 0 && result.email_address == payload.email_address) - resolve(`{"success": false, "message": "user already exists"}`); - else { - let avatar = JSON.stringify({"head": 1, "eyes": 1}); - // Encrypt payload.password with md5 algorithm - let password_md5 = md5(payload.password); - let fields = "( `username`, `email_address`, `password_md5`, `first_name`, `last_name`, `avatar` )"; - let values = `VALUES( '${payload.username}', '${payload.email_address}', '${password_md5}', 'first', 'last', '${avatar}')`; - database.connection.query("INSERT INTO user " + fields + " " + values, - (error, results) => { // Create new user in database - if (error) - throw(error); - resolve(`{"success": true, "message": "user registered"}`); - }); - } - }); - }).catch((error) => { console.log(error) }); -} - -// Requires payload.id = -function action_get_user ( request, payload ) { - return new Promise((resolve, reject) => { - if (!request || !request.headers || !payload) - reject("Error: Wrong request, missing request headers, or missing payload"); - database.connection.query("SELECT * FROM user WHERE id = '" + payload.id + "' LIMIT 1", - (error, results) => { // Check if user already exists in database - if (error) throw(error); - let result = results[0]; - if (results && results.length != 0 && result.id == payload.id) { - result.found = true; - resolve(`{"found": true, "user": ${JSON.stringify(result)}, "message": "user found"}`); - } else - resolve(`{"found": false, "user": null, "message": "user with this id doesn't exist"}`); - }); - }).catch(error => console.log(error)); -} - -function action_get_user_promiseless ( request, payload ) { - return new Promise((resolve, reject) => { - if (!request || !request.headers || !payload) - reject("Error: Wrong request, missing request headers, or missing payload"); - database.connection.query("SELECT * FROM user WHERE id = '" + payload.id + "' LIMIT 1", - (error, results) => { // Check if user already exists in database - if (error) throw(error); - let result = results[0]; - if (results && results.length != 0 && result.id == payload.id) { - resolve(`{"found": true, "user": ${JSON.stringify(result)}, "message": "user found"}`); - } else - resolve(`{"found": false, "user": null, "message": "user with this id doesn't exist"}`); - }); - }).catch(error => console.log(error)); -} - -function action_delete_user ( request, payload ) { - return new Promise((resolve, reject) => { - // Header or payload are missing - if (!request || !request.headers || !payload) - reject("Error: Wrong request, missing request headers, or missing payload"); - // Payload must specify user id - if (!payload.id) - reject("User id not specified!"); - let query = "DELETE from `user` WHERE `id` = " + payload.id; - database.connection.query(query, (error, results) => { - if (error) - throw(error); - let result = results[0]; - console.log("results[0] = ", results[0]); - console.log("result = ", result); - resolve(`{"success": true, "message": "user updated!"}`); - }); - }).catch(error => console.log(error)); -} - -function action_update_user ( request, payload ) { - return new Promise((resolve, reject) => { - // Header or payload are missing - if (!request || !request.headers || !payload) - reject("Error: Wrong request, missing request headers, or missing payload"); - // Payload must specify user id - if (!payload.id) - reject("User id not specified!"); - // Columns allowed to be changed: - let allowed = ["id", "email_address", "password_md5"]; - // Exclude not-allowed fields from payload - Object.entries(payload).map((value, index, obj) => { - let name = value[0]; - if (!allowed.exists(name)) delete payload[name]; - }); - // Start MySQL query - let query = "UPDATE user SET "; - // Build the rest of MySQL query from payload - Object.entries(payload).map((item, index, object) => { - let name = item[0]; - let value = payload[name]; - index != 0 ? query += ", " : null; - query += "`" + name + "` = '" + value + "'"; - }); - // End query - query += " WHERE `id` = '" + payload.id + "'"; - // Execute MySQL query we just created - database.connection.query(query, (error, results) => { - if (error) - throw(error); - let result = results[0]; - console.log("results[0] = ", results[0]); - console.log("result = ", result); - resolve(`{"success": true, "message": "user updated!"}`); - }); - - }).catch(error => null ); -} - -function action_login ( request, payload ) { - return new Promise((resolve, reject) => { - // First, get the user from database by payload.id - let query = `SELECT * FROM \`user\` WHERE \`username\` = '${payload.username}'`; - console.log(query); - database.connection.query(query, - (error, results) => { // Check if user already exists in database - if (error) - throw(error); - let result = results[0]; - /* console.log("result = ", result); - console.log("payload.username = ", payload.username); - console.log("payload.password = ", payload.password); - console.log("password 1 = ", md5(payload.password)); - console.log("password 2 = ", result.password_md5); */ - if (results && results.length != 0 && result.username == payload.username) { - // result.found = true; - // Check if submitted password is correct - if (md5(payload.password) == result.password_md5) { - delete result.email_address; // don't send email to front-end - delete result.password_md5; // don't send md5 password to front-end - resolve(`{"success": true, "user": ${JSON.stringify(result)}, "message": "user successfully logged in!"}`); - } else - resolve(`{"success": false, "user": null, "message": "incorrect username or password"}`); - } - // User not found - resolve(`{"success": false, "user": null, "message": "user with this username(${payload.username}) doesn't exist"}`); - }); - }).catch(error => console.log(error)); -} - -function action_logout ( request, payload ) { - return new Promise((resolve, reject) => { - /* implement */ - }).catch(error => console.log(error));; -} - -function action_create_session( request, payload ) { - // Create unique authentication token - function create_auth_token() { - let token = md5( timestamp( true ) + ""); - return token; - } - return new Promise((resolve, reject) => { - if (!request || !request.headers || !payload) - reject("Error: Wrong request, missing request headers, or missing payload"); - database.connection.query("SELECT * FROM session WHERE user_id = '" + payload.id + "' LIMIT 1", - (error, results) => { // Check if session already exists - if (error) throw(error); - let result = results[0]; - if (results && results.length != 0 && result.user_id == payload.id) { - result.found = true; - resolve(`{"found": true, - "token": token, - "session": ${JSON.stringify(result)}, - "message": "session already exists"}`); - } else { // This session doesn't exist, create it - // Create auth token - let token = create_auth_token(); - database.connection.query("INSERT INTO session ( `user_id`, `timestamp`, `token`) VALUES( '" + payload.id + "', '" + timestamp() + "', '" + token + "')", - (error, results) => { - if (error) throw(error); - resolve(`{"found" : false, - "token" : token, - "user_id": ${payload.user_id}, - "message": "session was created"}`); - }); - } - }); - }).catch(error => { console.log(error) }); -} - -function action_get_session( request, payload ) { - return new Promise((resolve, reject) => { - if (!request || !request.headers || !payload) - reject("Error: Wrong request, missing request headers, or missing payload"); - database.connection.query("SELECT * FROM session WHERE user_id = '" + payload.id + "' LIMIT 1", - (error, results) => { // Return session - if (error) - throw(error); - let result = results[0]; - if (results && results.length != 0 && result.user_id == payload.id) { - result.found = true; - resolve(`{"found": true, - "session": ${JSON.stringify(result)}, - "message": "session found"}`); - } else - resolve(`{"found": false, "session": null, "message": "session found"}`); - }); - }).catch((error) => { console.log(error) }); -} - -function action_authenticate_user( request, payload ) { - return new Promise((resolve, reject) => { - if (!request || !request.headers || !payload) - reject("Error: Wrong request, missing request headers, or missing payload"); - database.connection.query("SELECT * FROM session WHERE token = '" + payload.token + "' LIMIT 1", - (error, results) => { // Return session - if (error) - throw(error); - if (results.length == 0) { - console.log("API.authenticate, results.length == 0 (session with token not found)"); - reject(`{"success": false, "message": "token not found in session"}`); - } else { - //console.log( results ); - //console.log( results[0] ); - let token = JSON.stringify({ token: results[0].token, type: "admin" }); - resolve(`{"success": true, "message": "user (id=${results[0].user_id}) was successfully authenticated", "token" : ${token}}`); - } - }); - }).catch((error) => { console.log(error) }); -} - -// Check if API.parts match a URL pattern, example: "api/user/get" -function identify(a, b) { - return API.parts[0] == "api" && API.parts[1] == a && API.parts[2] == b; -} - -// General use respond function -- send json object back to the browser in response to a request -function respond( response, content ) { - console.log("responding = ", [ content ]); - const jsontype = "{ 'Content-Type': 'application/json' }"; - response.writeHead(200, jsontype); - response.end(content, 'utf-8'); -} - -// Convert buffer to JSON object -function json( chunks ) { - return JSON.parse( Buffer.concat( chunks ).toString() ); -} - -class Action { } - -Action.register_user = action_register_user; -Action.login = action_login; -Action.logout = action_logout; -Action.get_user = action_get_user; -Action.delete_user = action_delete_user; -Action.update_user = action_update_user; -Action.authenticate_user = action_authenticate_user; -Action.create_session = action_create_session; -Action.get_session = action_get_session; - -const resp = response => content => respond(response, content); - -class API { - - constructor() { } - - static exec( request, response ) { - - console.log("API.exec(), parts = ", API.parts); - - if (request.method == 'POST') { - - request.url[0] == "/" ? request.url = request.url.substring(1, request.url.length) : null; - request.parts = request.url.split("/"); - request.chunks = []; - - // Start reading POST data chunks - request.on('data', segment => { - if (segment.length > 1e6) // 413 = "Request Entity Too Large" - response.writeHead(413, {'Content-Type': 'text/plain'}).end(); - else - request.chunks.push(segment); - }); - - // Finish reading POST data chunks - request.on('end', () => { // POST data fully received - - API.parts = request.parts; - - if (identify("user", "register")) // Register (create) user - Action.register_user( request, json( request.chunks ) ) - .then( content => respond(response, content) ); - - if (identify("user", "login")) // Log in - Action.login( request, json( request.chunks ) ) - .then( content => respond(response, content) ); - - if (identify("user", "logout")) // Log out - Action.logout( request, json( request.chunks ) ) - .then( content => respond(response, content) ); - - if (identify("user", "delete")) // Delete user - Action.delete_user( request, json( request.chunks ) ) - .then( content => respond(response, content) ); - - if (identify("user", "get")) // Get user data - Action.get_user( request, json( request.chunks ) ) - .then( content => respond(response, content) ); - - if (identify("user", "update")) // Update user - Action.update_user( request, json( request.chunks ) ) - .then( content => respond(response, content) ); - - if (identify("session", "create")) // Create session - Action.create_session( request, json( request.chunks ) ) - .then( content => respond(response, content) ); - - if (identify("user", "authenticate")) // Authenticate user - Action.authenticate_user( request, json( request.chunks ) ) - .then( content => respond(response, content) ); - }); - } - } - static catchAPIrequest(request) { - request[0] == "/" ? request = request.substring(1, request.length) : null; - if (request.constructor === String) - if (request.split("/")[0] == "api") { - API.parts = request.split("/"); - return true; - } - return false; - } -} - -API.parts = null; - -module.exports = { API, database }; \ No newline at end of file diff --git a/module/md5/md5.js b/module/md5/md5.js deleted file mode 100644 index 950d98e..0000000 --- a/module/md5/md5.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message - * Digest Algorithm, as defined in RFC 1321. - * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * Distributed under the BSD License - * See http://pajhome.org.uk/crypt/md5 for more info. - */ -var hexcase=0;function md5(a){return rstr2hex(rstr_md5(str2rstr_utf8(a)))}function hex_hmac_md5(a,b){return rstr2hex(rstr_hmac_md5(str2rstr_utf8(a),str2rstr_utf8(b)))}function md5_vm_test(){return hex_md5("abc").toLowerCase()=="900150983cd24fb0d6963f7d28e17f72"}function rstr_md5(a){return binl2rstr(binl_md5(rstr2binl(a),a.length*8))}function rstr_hmac_md5(c,f){var e=rstr2binl(c);if(e.length>16){e=binl_md5(e,c.length*8)}var a=Array(16),d=Array(16);for(var b=0;b<16;b++){a[b]=e[b]^909522486;d[b]=e[b]^1549556828}var g=binl_md5(a.concat(rstr2binl(f)),512+f.length*8);return binl2rstr(binl_md5(d.concat(g),512+128))}function rstr2hex(c){try{hexcase}catch(g){hexcase=0}var f=hexcase?"0123456789ABCDEF":"0123456789abcdef";var b="";var a;for(var d=0;d>>4)&15)+f.charAt(a&15)}return b}function str2rstr_utf8(c){var b="";var d=-1;var a,e;while(++d>>6)&31),128|(a&63))}else{if(a<=65535){b+=String.fromCharCode(224|((a>>>12)&15),128|((a>>>6)&63),128|(a&63))}else{if(a<=2097151){b+=String.fromCharCode(240|((a>>>18)&7),128|((a>>>12)&63),128|((a>>>6)&63),128|(a&63))}}}}}return b}function rstr2binl(b){var a=Array(b.length>>2);for(var c=0;c>5]|=(b.charCodeAt(c/8)&255)<<(c%32)}return a}function binl2rstr(b){var a="";for(var c=0;c>5]>>>(c%32))&255)}return a}function binl_md5(p,k){p[k>>5]|=128<<((k)%32);p[(((k+64)>>>9)<<4)+14]=k;var o=1732584193;var n=-271733879;var m=-1732584194;var l=271733878;for(var g=0;g>16)+(d>>16)+(c>>16);return(b<<16)|(c&65535)}function bit_rol(a,b){return(a<>>(32-b))}; -/* - * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message - * Digest Algorithm, as defined in RFC 1321. - * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * Distributed under the BSD License - * See http://pajhome.org.uk/crypt/md5 for more info. - */ - - module.exports = md5; \ No newline at end of file diff --git a/node b/node new file mode 160000 index 0000000..c4c74f7 --- /dev/null +++ b/node @@ -0,0 +1 @@ +Subproject commit c4c74f79aa18feb80f1eb909758d2bc136710b60 diff --git a/node.iml b/node.iml deleted file mode 100644 index c90834f..0000000 --- a/node.iml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 906c800..0000000 --- a/package-lock.json +++ /dev/null @@ -1,111 +0,0 @@ -{ - "requires": true, - "lockfileVersion": 1, - "dependencies": { - "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" - }, - "bignumber.js": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-7.2.1.tgz", - "integrity": "sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ==" - }, - "buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" - } - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "mysql": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.17.1.tgz", - "integrity": "sha512-7vMqHQ673SAk5C8fOzTG2LpPcf3bNt0oL3sFpxPEEFp1mdlDcrLK0On7z8ZYKaaHrHwNcQ/MTUz7/oobZ2OyyA==", - "requires": { - "bignumber.js": "7.2.1", - "readable-stream": "2.3.6", - "safe-buffer": "5.1.2", - "sqlstring": "2.3.1" - } - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "sha3": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/sha3/-/sha3-2.0.4.tgz", - "integrity": "sha512-9+yqTeawC1QyTf/qCg1BiLjsB29ox4BwE8sGVF3iHc0Bz985nVhT9xfwl9BKn9pIE1hfJvF35nPsaq+IByuP5w==", - "requires": { - "buffer": "5.2.1" - } - }, - "sqlstring": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz", - "integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A=" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - } - } -} diff --git a/postfix/main.cf b/postfix/main.cf deleted file mode 100644 index 52ffb83..0000000 --- a/postfix/main.cf +++ /dev/null @@ -1,69 +0,0 @@ -# Replace everywhere it says example.com -# with your own domain name (without www) - -# See /usr/share/postfix/main.cf.dist for a commented, more complete version - -# Debian specific: Specifying a file name will cause the first -# line of that file to be used as the name. The Debian default -# is /etc/mailname. -#myorigin = /etc/mailname - -smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) -biff = no - -# appending .domain is the MUA's job. -append_dot_mydomain = no - -# Uncomment the next line to generate "delayed mail" warnings -#delay_warning_time = 4h - -readme_directory = no - -# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on -# fresh installs. -compatibility_level = 2 - -tls_random_source = dev:/dev/urandom - -smtp_tls_security_level = may -smtp_tls_note_starttls_offer = yes -smtp_tls_mandatory_protocols=!SSLv2,!SSLv3 -smtp_tls_protocols=!SSLv2,!SSLv3 -smtp_tls_loglevel = 1 -smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache -smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache - -# Enable TLS -#smtpd_tls_security_level = may -smtpd_tls_ask_ccert = yes -#smtpd_tls_session_cache_timeout = 3600s - -# TLS parameters -#smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem -#smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key -smtpd_use_tls=yes -smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache -smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache - -# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for -# information on enabling SSL in the smtp client. - -smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination -myhostname = example.com -alias_maps = hash:/etc/aliases -alias_database = hash:/etc/aliases -myorigin = /etc/mailname -mydestination = $myhostname, example.com, localhost, localhost.localdomain, localhost -relayhost = -mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 -mailbox_size_limit = 0 -recipient_delimiter = + -inet_interfaces = all -inet_protocols = all - -virtual_alias_domains = example.com - -milter_protocol = 2 -milter_default_action = accept -smtpd_milters = inet:localhost:8891 -non_smtpd_milters = inet:localhost:8891 diff --git a/postfix/master.cf b/postfix/master.cf deleted file mode 100644 index 0b823ff..0000000 --- a/postfix/master.cf +++ /dev/null @@ -1,130 +0,0 @@ -# -# Postfix master process configuration file. For details on the format -# of the file, see the master(5) manual page (command: "man 5 master" or -# on-line: http://www.postfix.org/master.5.html). -# -# Do not forget to execute "postfix reload" after editing this file. -# -# ========================================================================== -# service type private unpriv chroot wakeup maxproc command + args -# (yes) (yes) (no) (never) (100) -# ========================================================================== -smtp inet n - y - - smtpd -#smtp inet n - y - 1 postscreen -#smtpd pass - - y - - smtpd -#dnsblog unix - - y - 0 dnsblog -#tlsproxy unix - - y - 0 tlsproxy -submission inet n - n - - smtpd -# -o syslog_name=postfix/submission -# -o smtpd_tls_security_level=encrypt - -o smtpd_sasl_auth_enable=yes -# -o smtpd_tls_auth_only=yes -# -o smtpd_reject_unlisted_recipient=no -# -o smtpd_client_restrictions=$mua_client_restrictions - -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject - -o smtpd_client_restrictions=permit_mynetworks,permit_sasl_authenticated,reject - -o smtpd_helo_restrictions=permit_mynetworks,permit - -o smtpd_tls_security_level=encrypt -# -o smtpd_helo_restrictions=$mua_helo_restrictions -# -o smtpd_sender_restrictions=$mua_sender_restrictions -# -o smtpd_recipient_restrictions= -# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -# -o milter_macro_daemon_name=ORIGINATING -#smtps inet n - y - - smtpd -# -o syslog_name=postfix/smtps -# -o smtpd_tls_wrappermode=yes -# -o smtpd_sasl_auth_enable=yes -# -o smtpd_reject_unlisted_recipient=no -# -o smtpd_client_restrictions=$mua_client_restrictions -# -o smtpd_helo_restrictions=$mua_helo_restrictions -# -o smtpd_sender_restrictions=$mua_sender_restrictions -# -o smtpd_recipient_restrictions= -# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -# -o milter_macro_daemon_name=ORIGINATING -#628 inet n - y - - qmqpd -pickup unix n - y 60 1 pickup -cleanup unix n - y - 0 cleanup -qmgr unix n - n 300 1 qmgr -#qmgr unix n - n 300 1 oqmgr -tlsmgr unix - - y 1000? 1 tlsmgr -rewrite unix - - y - - trivial-rewrite -bounce unix - - y - 0 bounce -defer unix - - y - 0 bounce -trace unix - - y - 0 bounce -verify unix - - y - 1 verify -flush unix n - y 1000? 0 flush -proxymap unix - - n - - proxymap -proxywrite unix - - n - 1 proxymap -smtp unix - - y - - smtp -relay unix - - y - - smtp - -o syslog_name=postfix/$service_name -# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5 -showq unix n - y - - showq -error unix - - y - - error -retry unix - - y - - error -discard unix - - y - - discard -local unix - n n - - local -virtual unix - n n - - virtual -lmtp unix - - y - - lmtp -anvil unix - - y - 1 anvil -scache unix - - y - 1 scache -# -# ==================================================================== -# Interfaces to non-Postfix software. Be sure to examine the manual -# pages of the non-Postfix software to find out what options it wants. -# -# Many of the following services use the Postfix pipe(8) delivery -# agent. See the pipe(8) man page for information about ${recipient} -# and other message envelope options. -# ==================================================================== -# -# maildrop. See the Postfix MAILDROP_README file for details. -# Also specify in main.cf: maildrop_destination_recipient_limit=1 -# -maildrop unix - n n - - pipe - flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient} -# -# ==================================================================== -# -# Recent Cyrus versions can use the existing "lmtp" master.cf entry. -# -# Specify in cyrus.conf: -# lmtp cmd="lmtpd -a" listen="localhost:lmtp" proto=tcp4 -# -# Specify in main.cf one or more of the following: -# mailbox_transport = lmtp:inet:localhost -# virtual_transport = lmtp:inet:localhost -# -# ==================================================================== -# -# Cyrus 2.1.5 (Amos Gouaux) -# Also specify in main.cf: cyrus_destination_recipient_limit=1 -# -#cyrus unix - n n - - pipe -# user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user} -# -# ==================================================================== -# Old example of delivery via Cyrus. -# -#old-cyrus unix - n n - - pipe -# flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user} -# -# ==================================================================== -# -# See the Postfix UUCP_README file for configuration details. -# -uucp unix - n n - - pipe - flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient) -# -# Other external delivery methods. -# -ifmail unix - n n - - pipe - flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient) -bsmtp unix - n n - - pipe - flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient -scalemail-backend unix - n n - 2 pipe - flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension} -mailman unix - n n - - pipe - flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py - ${nexthop} ${user} - diff --git a/ssl/example.cert.pem b/ssl/example.cert.pem deleted file mode 100644 index a2441f8..0000000 --- a/ssl/example.cert.pem +++ /dev/null @@ -1,31 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFYTCCBEmgAwIBAgISAz1WISCxrzfW/0bLHPlCYOMaMA0GCSqGSIb3DQEBCwUA -MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD -ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0yMDA0MjUwMTU0MDZaFw0y -MDA3MjQwMTU0MDZaMBcxFTATBgNVBAMTDG5leHRsaXN0Lm9yZzCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAL6WCGl+Yz2iW0oFb9jckU/0XBChAmek9oQT -RZixLGAlln6y7e6AxkfdrRbXFHAw5j/1O3CBcApJz7jtYmN0i8eBtJq9THmGhgE8 -xPW6qDq8EyLqhPyf8RS+W+hhRS1Vs09X5lCA1DUjPs3okxhiHZu8m7vs+xkGErPc -FMSBUGGATqlSqGOFJqivNed2LZuj9wTta+qcAQqezpeWAzXcEtRfm9Tn9lBMntxq -/ZvDxeEIoOxgyjCK1zqGUjXMsRwfpdPLMrE+71x+qBdMNls8uBH4b747w/t4yCEk -3CqaBfrNIlUWUfQ4XGIfccFaak069Ar62E+SXgsfq3bmWaR4gf8CAwEAAaOCAnIw -ggJuMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUH -AwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUmO/G33QgxU7wuMBuKc8OoZLEt0kw -HwYDVR0jBBgwFoAUqEpqYwR93brm0Tm3pkVl7/Oo7KEwbwYIKwYBBQUHAQEEYzBh -MC4GCCsGAQUFBzABhiJodHRwOi8vb2NzcC5pbnQteDMubGV0c2VuY3J5cHQub3Jn -MC8GCCsGAQUFBzAChiNodHRwOi8vY2VydC5pbnQteDMubGV0c2VuY3J5cHQub3Jn -LzApBgNVHREEIjAgggxuZXh0bGlzdC5vcmeCEHd3dy5uZXh0bGlzdC5vcmcwTAYD -VR0gBEUwQzAIBgZngQwBAgEwNwYLKwYBBAGC3xMBAQEwKDAmBggrBgEFBQcCARYa -aHR0cDovL2Nwcy5sZXRzZW5jcnlwdC5vcmcwggEDBgorBgEEAdZ5AgQCBIH0BIHx -AO8AdgDnEvKwN34aYvuOyQxhhPHqezfLVh0RJlvz4PNL8kFUbgAAAXGvQaI0AAAE -AwBHMEUCIGswaG+fYc+U8UZ9dNQrHpQw2xTvDJKpLc1ey0MqFgQ/AiEAmsosaGsl -sLyw8zGuqffAOCc2rC6Idi/2HUkkPDpCPQIAdQAHt1wb5X1o//Gwxh0jFce65ld8 -V5S3au68YToaadOiHAAAAXGvQaJCAAAEAwBGMEQCICQbultYCCEA3UzMTlY25llW -fnqDHSleKFStf7Cpgy/4AiAg9B27a9n06covmr4fLeU81PhOFnvGxy7zYPOckV94 -sTANBgkqhkiG9w0BAQsFAAOCAQEAVD6gn+1IR0sqYNrn2QPHp9DU9F5J853GfQKl -Ya+TQCk9cX04rcRSfA+diVk1+7spnjmIg3Pph2r5LXyNynJvSvUYYryQjfi7MU3u -klFhequKPqssAZqZttPpfcsRiNf9wQSMDYkP2tAFNHDfiAGWfQcmTWmHNwKzkysW -TD5oG03znnErtSDO8aCnc2JHaxVCzlq25rw44FbMsPl0VJDNoYsgorkJ0BxcfgN2 -NS2ZODCkYb5hA9aDq6gw1/f9XZu59Sx4+kLrahv7la9SZR1CzvNJW3zaUNKjkxb8 -voMwT2dw7FFIAmYUwr/toqcdp4cCQ6i1bTLw17P2WCvY8oJhPw== ------END CERTIFICATE----- diff --git a/ssl/example.fullchain.pem b/ssl/example.fullchain.pem deleted file mode 100644 index 271c288..0000000 --- a/ssl/example.fullchain.pem +++ /dev/null @@ -1,58 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFYTCCBEmgAwIBAgISAz1WISCxrzfW/0bLHPlCYOMaMA0GCSqGSIb3DQEBCwUA -MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD -ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0yMDA0MjUwMTU0MDZaFw0y -MDA3MjQwMTU0MDZaMBcxFTATBgNVBAMTDG5leHRsaXN0Lm9yZzCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAL6WCGl+Yz2iW0oFb9jckU/0XBChAmek9oQT -RZixLGAlln6y7e6AxkfdrRbXFHAw5j/1O3CBcApJz7jtYmN0i8eBtJq9THmGhgE8 -xPW6qDq8EyLqhPyf8RS+W+hhRS1Vs09X5lCA1DUjPs3okxhiHZu8m7vs+xkGErPc -FMSBUGGATqlSqGOFJqivNed2LZuj9wTta+qcAQqezpeWAzXcEtRfm9Tn9lBMntxq -/ZvDxeEIoOxgyjCK1zqGUjXMsRwfpdPLMrE+71x+qBdMNls8uBH4b747w/t4yCEk -3CqaBfrNIlUWUfQ4XGIfccFaak069Ar62E+SXgsfq3bmWaR4gf8CAwEAAaOCAnIw -ggJuMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUH -AwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUmO/G33QgxU7wuMBuKc8OoZLEt0kw -HwYDVR0jBBgwFoAUqEpqYwR93brm0Tm3pkVl7/Oo7KEwbwYIKwYBBQUHAQEEYzBh -MC4GCCsGAQUFBzABhiJodHRwOi8vb2NzcC5pbnQteDMubGV0c2VuY3J5cHQub3Jn -MC8GCCsGAQUFBzAChiNodHRwOi8vY2VydC5pbnQteDMubGV0c2VuY3J5cHQub3Jn -LzApBgNVHREEIjAgggxuZXh0bGlzdC5vcmeCEHd3dy5uZXh0bGlzdC5vcmcwTAYD -VR0gBEUwQzAIBgZngQwBAgEwNwYLKwYBBAGC3xMBAQEwKDAmBggrBgEFBQcCARYa -aHR0cDovL2Nwcy5sZXRzZW5jcnlwdC5vcmcwggEDBgorBgEEAdZ5AgQCBIH0BIHx -AO8AdgDnEvKwN34aYvuOyQxhhPHqezfLVh0RJlvz4PNL8kFUbgAAAXGvQaI0AAAE -AwBHMEUCIGswaG+fYc+U8UZ9dNQrHpQw2xTvDJKpLc1ey0MqFgQ/AiEAmsosaGsl -sLyw8zGuqffAOCc2rC6Idi/2HUkkPDpCPQIAdQAHt1wb5X1o//Gwxh0jFce65ld8 -V5S3au68YToaadOiHAAAAXGvQaJCAAAEAwBGMEQCICQbultYCCEA3UzMTlY25llW -fnqDHSleKFStf7Cpgy/4AiAg9B27a9n06covmr4fLeU81PhOFnvGxy7zYPOckV94 -sTANBgkqhkiG9w0BAQsFAAOCAQEAVD6gn+1IR0sqYNrn2QPHp9DU9F5J853GfQKl -Ya+TQCk9cX04rcRSfA+diVk1+7spnjmIg3Pph2r5LXyNynJvSvUYYryQjfi7MU3u -klFhequKPqssAZqZttPpfcsRiNf9wQSMDYkP2tAFNHDfiAGWfQcmTWmHNwKzkysW -TD5oG03znnErtSDO8aCnc2JHaxVCzlq25rw44FbMsPl0VJDNoYsgorkJ0BxcfgN2 -NS2ZODCkYb5hA9aDq6gw1/f9XZu59Sx4+kLrahv7la9SZR1CzvNJW3zaUNKjkxb8 -voMwT2dw7FFIAmYUwr/toqcdp4cCQ6i1bTLw17P2WCvY8oJhPw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/ -MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT -DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow -SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT -GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC -AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF -q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8 -SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0 -Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA -a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj -/PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T -AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG -CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv -bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k -c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw -VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC -ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz -MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu -Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF -AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo -uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/ -wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu -X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG -PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6 -KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg== ------END CERTIFICATE----- diff --git a/ssl/example.privkey.pem b/ssl/example.privkey.pem deleted file mode 100644 index 5a878ef..0000000 --- a/ssl/example.privkey.pem +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC+lghpfmM9oltK -BW/Y3JFP9FwQoQJnpPaEE0WYsSxgJZZ+su3ugMZH3a0W1xRwMOY/9TtwgXAKSc+4 -7WJjdIvHgbSavUx5hoYBPMT1uqg6vBMi6oT8n/EUvlvoYUUtVbNPV+ZQgNQ1Iz7N -6JMYYh2bvJu77PsZBhKz3BTEgVBhgE6pUqhjhSaorzXndi2bo/cE7WvqnAEKns6X -lgM13BLUX5vU5/ZQTJ7cav2bw8XhCKDsYMowitc6hlI1zLEcH6XTyzKxPu9cfqgX -TDZbPLgR+G++O8P7eMghJNwqmgX6zSJVFlH0OFxiH3HBWmpNOvQK+thPkl4LH6t2 -5lmkeIH/AgMBAAECggEBAJepXNhWMzMA2BR3byHro9c0ZW72Mau4olNH4sI3e1Cn -mLMKQDzjTOYziWH7ldARmaibxckpt7b4Ncy7Wug5/mGs3cOlkA3E9y5U5YeGGglj -UPcgGOPPg1E2inzJqvsAj8g78pNtcXE3suq4gRWOPnGIDYXmd4raQlfOcthM72Im -EB7O6UZhriYqIshbi53qRQlMSfcIcJjonmIH48QgrWU1PWpX/ggILYX3PErmAIop -rhPPd7oiTuOgDJZ3mZhSTmm5CaFw8OQ8NRtveqCVzMA9SJGYAMeUzL2acSYY1l70 -wdT+Jv1PhTRxO9M782jWJvK9AIVYjYFDKRh8Y1w7bAECgYEA7BRqJTTsUJ9Gl/sI -qmaJN/gDuEoXNqOD79MVVV/4IAqQ+5prnIlO6eMCYkwxvAHKM4uGAs9ijHRhw+F8 -wuGKpMWtNQNJfEg+ObVTqauqCtaPqFpoCTnVQ9riWDZQnAcyQEogw4jq95KtNcDp -Gm7KufaZULX2eGEaYLQu5qwI6MECgYEAzqrnc6T7JT6oOrc5sjTM+kB3uYBOPyU0 -R/9qdpAqJ8YQRayd2JRXfWCWG/zRUxwFzIqcSH2oRHYx1ABVMUNH4mensZoJTwEG -EdNSBAbKBVz5mh4KshRucSNkaVOfyRp3fzs4zlVbmNzYS5vzxeP3v4Oc7c7QdyZi -i9oiPoC/Wr8CgYEA66lxUBTldZGZeatJOjjC75Dvva6QP6W41dWDrUbwvKNvmQnM -NGXI1acbwR5IY2HyA8RakUGOIaEn2s6jqTJWISeHQK04VQ0UuKyuiGfphYoru6YL -xnHp1yOP4PjPPQHeAtk8nZR24Y6Uw10AFLfWPQ7SewQ5tm9QUopray7+ccECgYEA -s5RX5+oc/QEUB2k87jfpQS8RmZP+6em3IzSy2vFsYAFAFHro8c/8sgpihVFKxs/b -zh9Hq8nclBisNY5QeK0A4p+1XKL/obG/B3A7nRoVI1Hl5eBi5NjSGudpEgjDGGky -GtFoDAqpvAtyu0h5K6Rqm/SOQSnrhQ1KpkFWbj9Lh1sCgYAZHSi9u+GzdMF9/FJU -3ZUk/lOGGE0+NI86/Ezfs167d4HHHQiftGqYbuc4SwycBphyZUlWa1IHxGNhPdVP -mW+YsFbpVQSJlVXx7ENMAVuZiDIR4F252q1i1fMNwDsmQRCN/GE979I2ZzCAYann -mkaIVon4F8pH8iQAp35ByCbDBA== ------END PRIVATE KEY-----