gluon-remote-node

Node Version of gluon remote
git clone git://archive.git.mtrnord.blog/MTRNord/gluon-remote-node.git
Log | Files | Refs | README | LICENSE

commit 034ee027b3e5b3f3f3df7623b890fed241121698
parent 28bd52bfaefe6065b85d7b5f9b22d8590a3e7da0
Author: MTRNord <mtrnord1@gmail.com>
Date:   Sat, 18 Jun 2016 10:50:28 +0200

Add regex string Validation on args

Diffstat:
Mgluon_web_remote-MOL.js | 32++++++++++++++++++++++++++++----
Mgluon_web_remote-MOW.js | 28++++++++++++++++++++++++----
Mgluon_web_remote-changeContact.js | 43+++++++++++++++++++++++++++++++++++++++----
Mgluon_web_remote-changeGeo.js | 54++++++++++++++++++++++++++++++++++++++++++++++++++----
Mgluon_web_remote-changeName.js | 32++++++++++++++++++++++++++++----
Mpackage.json | 1+
6 files changed, 170 insertions(+), 20 deletions(-)

diff --git a/gluon_web_remote-MOL.js b/gluon_web_remote-MOL.js @@ -2,6 +2,10 @@ var program = require('commander'); var backend = require("./backend/commands.js"); var chalk_lib = require('chalk'); var chalk = new chalk_lib.constructor({enabled: true}); +var hostname_val = new Regex(/^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$/); +var ipv6_val = new Regex(/(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))/); +var key_val = new Regex(/^(ssh-[a-z]{3}) ([0-9]{3,4}) ([0-9a-f]{2}:){15}[0-9a-f]{2}$/); + program .parse(process.argv); @@ -19,11 +23,31 @@ if (args.length === 3) { var key = args[2] var switchPosition = args[3] if (switchPosition === "on") { - backend.activateMOL(ip, key) - console.log(chalk.green("Mesh on Lan activated successfully!")); + if (ipv6_val.test(ip) || hostname_val.test(ip)) { + if (key_val.test(key)) { + backend.activateMOL(ip, key) + console.log(chalk.green("Mesh on Lan activated successfully!")); + }else { + console.error(chalk.bold.red('Please set correct SSH Key')); + process.exit(1); + } + }else { + console.error(chalk.bold.red('Please set correct IPv6 or Hostname')); + process.exit(1); + } }else if (switchPosition === "off") { - backend.deactivateMOL(ip, key) - console.log(chalk.green("Mesh on Lan deactivated successfully!")); + if (ipv6_val.test(ip) || hostname_val.test(ip)) { + if (key_val.test(key)) { + backend.deactivateMOL(ip, key) + console.log(chalk.green("Mesh on Lan deactivated successfully!")); + }else { + console.error(chalk.bold.red('Please set correct SSH Key')); + process.exit(1); + } + }else { + console.error(chalk.bold.red('Please set correct IPv6 or Hostname')); + process.exit(1); + } } } diff --git a/gluon_web_remote-MOW.js b/gluon_web_remote-MOW.js @@ -19,11 +19,31 @@ if (args.length === 3) { var key = args[2] var switchPosition = args[3] if (switchPosition === "on") { - backend.activateMOW(ip, key) - console.log(chalk.green("Mesh on Wan activated successfully!")); + if (ipv6_val.test(ip) || hostname_val.test(ip)) { + if (key_val.test(key)) { + backend.activateMOW(ip, key) + console.log(chalk.green("Mesh on Wan activated successfully!")); + }else { + console.error(chalk.bold.red('Please set correct SSH Key')); + process.exit(1); + } + }else { + console.error(chalk.bold.red('Please set correct IPv6 or Hostname')); + process.exit(1); + } }else if (switchPosition === "off") { - backend.deactivateMOW(ip, key) - console.log(chalk.green("Mesh on Wan deactivated successfully!")); + if (ipv6_val.test(ip) || hostname_val.test(ip)) { + if (key_val.test(key)) { + backend.deactivateMOW(ip, key) + console.log(chalk.green("Mesh on Wan deactivated successfully!")); + }else { + console.error(chalk.bold.red('Please set correct SSH Key')); + process.exit(1); + } + }else { + console.error(chalk.bold.red('Please set correct IPv6 or Hostname')); + process.exit(1); + } } } diff --git a/gluon_web_remote-changeContact.js b/gluon_web_remote-changeContact.js @@ -2,6 +2,11 @@ var program = require('commander'); var backend = require("./backend/commands.js"); var chalk_lib = require('chalk'); var chalk = new chalk_lib.constructor({enabled: true}); +var Regex = require("regex"); +var hostname_val = new Regex(/^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$/); +var ipv6_val = new Regex(/(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))/); +var key_val = new Regex(/^(ssh-[a-z]{3}) ([0-9]{3,4}) ([0-9a-f]{2}:){15}[0-9a-f]{2}$/); +var email_val = new Regex(/^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i); program .parse(process.argv); @@ -19,8 +24,23 @@ if (args.length === 4) { var key = args[2] var name = args[3] var email = args[4] - backend.changeContact(ip, key, name, email, "") - console.log(chalk.green("Contact changed successfully!")); + if (ipv6_val.test(ip) || hostname_val.test(ip)) { + if (key_val.test(key)) { + if (email_val.test(email)) { + backend.changeContact(ip, key, name, email, "") + console.log(chalk.green("Contact changed successfully!")); + }else { + console.error(chalk.bold.red('Please set correct Email')); + process.exit(1); + } + }else { + console.error(chalk.bold.red('Please set correct SSH Key')); + process.exit(1); + } + }else { + console.error(chalk.bold.red('Please set correct IPv6 or Hostname')); + process.exit(1); + } } if (args.length === 5) { var ip = args[1] @@ -28,7 +48,22 @@ if (args.length === 5) { var token = args[3] var name = args[4] var email = args[5] - backend.changeContact(ip, key, name, email, token) - console.log(chalk.green("Contact changed successfully!")); + if (ipv6_val.test(ip) || hostname_val.test(ip)) { + if (key_val.test(key)) { + if (email_val.test(email)) { + backend.changeContact(ip, key, name, email, token) + console.log(chalk.green("Contact changed successfully!")); + }else { + console.error(chalk.bold.red('Please set correct Email')); + process.exit(1); + } + }else { + console.error(chalk.bold.red('Please set correct SSH Key')); + process.exit(1); + } + }else { + console.error(chalk.bold.red('Please set correct IPv6 or Hostname')); + process.exit(1); + } } console.log(); diff --git a/gluon_web_remote-changeGeo.js b/gluon_web_remote-changeGeo.js @@ -2,6 +2,12 @@ var program = require('commander'); var backend = require("./backend/commands.js"); var chalk_lib = require('chalk'); var chalk = new chalk_lib.constructor({enabled: true}); +var Regex = require("regex"); +var hostname_val = new Regex(/^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$/); +var ipv6_val = new Regex(/(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))/); +var key_val = new Regex(/^(ssh-[a-z]{3}) ([0-9]{3,4}) ([0-9a-f]{2}:){15}[0-9a-f]{2}$/); +var lat_long_val = new Regex(/^[-+]?([1-8]?\d(\.\d+)?|90(\.0+)?),\s*[-+]?(180(\.0+)?|((1[0-7]\d)|([1-9]?\d))(\.\d+)?)$/); + program .parse(process.argv); @@ -20,8 +26,28 @@ if (args.length === 5) { var lat = args[3] var long = args[4] var alt = args[5] - backend.changeGeo(ip, key, lat, long, alt, "") - console.log(chalk.green("Geolocation changed successfully!")); + if (ipv6_val.test(ip) || hostname_val.test(ip)) { + if (key_val.test(key)) { + if (lat_long_val.test(lat)) { + if (lat_long_val.test(long)) { + backend.changeGeo(ip, key, lat, long, alt, "") + console.log(chalk.green("Geolocation changed successfully!")); + }else { + console.error(chalk.bold.red('Please set correct Latitude (See http://stackoverflow.com/a/18690202/4929236)')); + process.exit(1); + } + }else { + console.error(chalk.bold.red('Please set correct Email')); + process.exit(1); + } + }else { + console.error(chalk.bold.red('Please set correct SSH Key')); + process.exit(1); + } + }else { + console.error(chalk.bold.red('Please set correct IPv6 or Hostname')); + process.exit(1); + } } if (args.length === 6) { var ip = args[1] @@ -30,8 +56,28 @@ if (args.length === 6) { var lat = args[4] var long = args[5] var alt = args[6] - backend.changeGeo(ip, key, lat, long, alt, token) - console.log(chalk.green("Geolocation changed successfully!")); + if (ipv6_val.test(ip) || hostname_val.test(ip)) { + if (key_val.test(key)) { + if (lat_long_val.test(lat)) { + if (lat_long_val.test(long)) { + backend.changeGeo(ip, key, lat, long, alt, token) + console.log(chalk.green("Geolocation changed successfully!")); + }else { + console.error(chalk.bold.red('Please set correct Latitude (See http://stackoverflow.com/a/18690202/4929236)')); + process.exit(1); + } + }else { + console.error(chalk.bold.red('Please set correct Email')); + process.exit(1); + } + }else { + console.error(chalk.bold.red('Please set correct SSH Key')); + process.exit(1); + } + }else { + console.error(chalk.bold.red('Please set correct IPv6 or Hostname')); + process.exit(1); + } } console.log(); diff --git a/gluon_web_remote-changeName.js b/gluon_web_remote-changeName.js @@ -2,6 +2,10 @@ var program = require('commander'); var backend = require("./backend/commands.js"); var chalk_lib = require('chalk'); var chalk = new chalk_lib.constructor({enabled: true}); +var hostname_val = new Regex(/^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$/); +var ipv6_val = new Regex(/(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))/); +var key_val = new Regex(/^(ssh-[a-z]{3}) ([0-9]{3,4}) ([0-9a-f]{2}:){15}[0-9a-f]{2}$/); + program .parse(process.argv); @@ -18,16 +22,36 @@ if (args.length === 3) { var ip = args[1] var key = args[2] var newname = args[3] - backend.changeName(ip, key, newname, "") - console.log(chalk.green("Hostname changed successfully!")); + if (ipv6_val.test(ip) || hostname_val.test(ip)) { + if (key_val.test(key)) { + backend.changeName(ip, key, newname, "") + console.log(chalk.green("Hostname changed successfully!")); + }else { + console.error(chalk.bold.red('Please set correct SSH Key')); + process.exit(1); + } + }else { + console.error(chalk.bold.red('Please set correct IPv6 or Hostname')); + process.exit(1); + } } if (args.length === 4) { var ip = args[1] var key = args[2] var token = args[3] var newname = args[4] - backend.changeName(ip, key, newname, token) - console.log(chalk.green("Hostname changed successfully!")); + if (ipv6_val.test(ip) || hostname_val.test(ip)) { + if (key_val.test(key)) { + backend.changeName(ip, key, newname, token) + console.log(chalk.green("Hostname changed successfully!")); + }else { + console.error(chalk.bold.red('Please set correct SSH Key')); + process.exit(1); + } + }else { + console.error(chalk.bold.red('Please set correct IPv6 or Hostname')); + process.exit(1); + } } console.log(); diff --git a/package.json b/package.json @@ -33,6 +33,7 @@ "express": "^4.13.4", "helmet": "^2.1.1", "laeh2": "^0.3.3", + "regex": "^0.1.1", "ssh-keygen": "^0.2.1", "sshclient": "0.0.4" },