UNPKG

nap-cli

Version:

a new package cli

70 lines (64 loc) 1.94 kB
var prompt = require('cli-prompt'); var request = require('request'); var clc = require('cli-color'); var fs = require('fs'); var path = require('path'); var pkg = require('../package.json'); var MAC = require('getmac'); var cmds = []; cmds.push({ label: clc.magenta('➜ Email'), key: 'email', validate: function (val) { if ( !/^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/.test(val) ) { throw new Error (clc.yellow('Invalid email')); } } }); cmds.push({ label: clc.green('➜ Password'), key: 'password', type: 'password', validate: function (val) { if (val.length < 6){ throw new Error(clc.yellow('password must be at least 6 characters long')); } } }); module.exports = function(){ prompt.multi(cmds, handle); }; function handle(options){ console.log(clc.magenta('~ Posting data to remote for logining ...')); MAC.getMac(function(err, macAddress){ if (err) throw err; post(macAddress, options); }); } function post(mac, options){ request.post({ url: pkg.remotehost + '/login', form: { username: options.email, password: options.password, mac: mac } }, function(err, httpResponse, body){ var data = JSON.parse(body); if ( data.success ){ var pather = 'c:\\nap'; if ( process.platform != 'win32' ){ pather = '/usr/local/nap'; } if ( !fs.existsSync(pather) ){ fs.mkdirSync(pather); } pather = path.resolve(pather, 'me.json'); fs.writeFileSync(pather, JSON.stringify({ guid: data.guid, token: data.token })); console.log(clc.yellow('➜ login success!')); }else{ console.log(clc.redBright('➜ ' + data.message)); } }); }