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:
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"
},