19 changed files with 375 additions and 409 deletions
			
			
		| @ -1,5 +1,5 @@ | |||
| { | |||
| 	"editor.insertSpaces": false, | |||
| 	"editor.tabSize": 4, | |||
| 	"files.eol": "\n" | |||
| { | |||
| 	"editor.insertSpaces": false, | |||
| 	"editor.tabSize": 4, | |||
| 	"files.eol": "\n" | |||
| } | |||
| @ -0,0 +1,129 @@ | |||
| #!/usr/bin/env node
 | |||
| 
 | |||
| 'use strict'; | |||
| 
 | |||
| const { EOL } = require('os'); | |||
| const path = require('path'); | |||
| 
 | |||
| // Requiring npm modules
 | |||
| const program = require('commander'); | |||
| const chalk = require('chalk'); | |||
| 
 | |||
| // Require API
 | |||
| const up = require('./lib'); | |||
| const killAllConfirm = require('./actions/killAllConfirm'); | |||
| 
 | |||
| // Requiring utils
 | |||
| const requirements = require('./utils/requirements'); | |||
| 
 | |||
| const currentPath = path.normalize(process.cwd()); | |||
| let cmdValue = ''; | |||
| 
 | |||
| // Check for requirements such as OS version and nginx install.
 | |||
| // #Roadmap: Add ability to satisfy any possible requirements.
 | |||
| 
 | |||
| requirements(); | |||
| // Comment in development and uncomment this line in production.
 | |||
| 
 | |||
| program | |||
| 	.version(up.version()) | |||
| 	.arguments('<cmd>') | |||
| 	.action((cmd) => cmdValue = cmd); | |||
| 
 | |||
| const tryCatch = ((test, name) => { | |||
| 	try { | |||
| 		const msg = test(); | |||
| 		if(msg) console.log(msg); | |||
| 	} catch (err) { | |||
| 		err.message = EOL + `[${name}]: ` + err.message; | |||
| 		console.log (err.message); | |||
| 		process.exit(1); | |||
| 	} | |||
| }); | |||
| 
 | |||
| program | |||
| 	.command('serve <domain> [outPort]') | |||
| 	.description('Create a server at this folder.') | |||
| 	.action((domain, outPort) => | |||
| 		tryCatch( | |||
| 			() => up.server(domain, currentPath, outPort), | |||
| 			'new-server' | |||
| 		)); | |||
| 		 | |||
| program | |||
| 	.command('static <domain> [outPort]') | |||
| 	.description('DEPRECATED! Create a static server at this folder.') | |||
| 	.action((domain, outPort) => | |||
| 		tryCatch( | |||
| 			() => up.server(domain, currentPath, outPort), | |||
| 			'new-server' | |||
| 		)); | |||
| 
 | |||
| program | |||
| 	.command('proxy <domain> <inPort> [outPort]') | |||
| 	.description('Create a proxy server, listening at port number.') | |||
| 	.action((domain, inPort, outPort) => | |||
| 		tryCatch( | |||
| 			() => up.proxy(domain, inPort, outPort), | |||
| 			'new-proxy' | |||
| 		)); | |||
| 
 | |||
| program | |||
| 	.command('list') | |||
| 	.description('List all available servers.') | |||
| 	.action(() => | |||
| 		tryCatch( | |||
| 			() => up.list(), | |||
| 			'list' | |||
| 		)); | |||
| 
 | |||
| program | |||
| 	.command('kill <domain> [ourPort]') | |||
| 	.description('Kill a server.') | |||
| 	.action((domain, outPort) => | |||
| 		tryCatch ( | |||
| 			() => up.kill(domain, outPort), | |||
| 			'kill-server' | |||
| 		)); | |||
| 
 | |||
| program | |||
| 	.command('kill-all') | |||
| 	.description('Warning! Will completely kill all servers and reset nginx') | |||
| 	.action(() => killAllConfirm()); | |||
| 
 | |||
| 
 | |||
| program | |||
| 	.command('*') // This should pick invalid commands, but it doesn't, yet.
 | |||
| 	.action(() => { | |||
| 		console.log(EOL + "Invalid command. Type " + | |||
| 			chalk.cyan('up --help') + " for help." + EOL); | |||
| 	}); | |||
| 
 | |||
| // Adds custom help text to the automatically generated help.
 | |||
| program.on('--help', () => { | |||
| 	console.log(EOL | |||
| 			+ '  Usage:' | |||
| 			+ EOL | |||
| 			+ EOL | |||
| 			+ '   ' + chalk.yellow('$ up ') | |||
| 			+ chalk.cyan('static') | |||
| 			+ chalk.blue('[domain-name]') | |||
| 			+ EOL | |||
| 			+ '      Set up a static server at domain-name' | |||
| 			+ EOL | |||
| 			+ EOL | |||
| 			+ '   ' + chalk.yellow('$ up ') | |||
| 			+ chalk.cyan('proxy') | |||
| 			+ chalk.blue('[domain-name] <port-number>') | |||
| 			+ EOL | |||
| 			+ '      Set up a proxy server listening at port-number' | |||
| 			+ EOL); | |||
| }); | |||
| 
 | |||
| // Parses commands passed to `up` and chooses one of the above commands.
 | |||
| program.parse(process.argv); | |||
| 
 | |||
| if (typeof cmdValue === 'undefined') { | |||
| 	console.log(EOL + "No command was given. `up --help` for help info."); | |||
| 	process.exit(1); | |||
| } | |||
| @ -1,15 +1,22 @@ | |||
| # Changelog / Version history | |||
| 
 | |||
| ## `up` v. 0.2.1 | |||
| 
 | |||
| - Bug fix and patch for `up kill-all` breaking unexpectedly due to undefined default config file. | |||
| 
 | |||
| ## `up` v. 0.2.0 | |||
| 
 | |||
| - Under the hood BREAKING changes. Working directories change. | |||
|    - `/var/www/` to `/etc/up-serve/static/` | |||
|    - `/etc/nginx/sites-available/` to `/etc/nginx/conf.d` | |||
| - `up static|proxy <domain>` adds the server to `/etc/up-serve/servers.up` list. | |||
| - `up kill <domain>` removes server from `servers.up` list. | |||
| - `up list` lists available servers from /etc/up-serve/servers.up! | |||
| - `up kill-all` destroys all servers and places a `default.conf` in `/etc/nginx/sites-enabled`. | |||
| # Changelog / Version history | |||
| 
 | |||
| ## `up` v. 0.2.5 | |||
| 
 | |||
| - `up static` is DEPRECATED. Use `up serve` instead. | |||
| - Major refactor of code, and splitting of `index.js` to `lib.js` and `cli.js`. | |||
| - Basic API now available. | |||
| - Usage of `conf.d` is DEPRECATED. `up-serve` now only uses `sites-enabled`. Since everything is abstracted at a higher level, the need for maintaining two directories (Read sites-available here) is non-existent. | |||
| 
 | |||
| ## `up` v. 0.2.1 | |||
| 
 | |||
| - Bug fix and patch for `up kill-all` breaking unexpectedly due to undefined default config file. | |||
| 
 | |||
| ## `up` v. 0.2.0 | |||
| 
 | |||
| - Under the hood BREAKING changes. Working directories change. | |||
|    - `/var/www/` to `/etc/up-serve/static/` | |||
|    - `/etc/nginx/sites-available/` to `/etc/nginx/conf.d` | |||
| - `up static|proxy <domain>` adds the server to `/etc/up-serve/servers.up` list. | |||
| - `up kill <domain>` removes server from `servers.up` list. | |||
| - `up list` lists available servers from /etc/up-serve/servers.up! | |||
| - `up kill-all` destroys all servers and places a `default.conf` in `/etc/nginx/sites-enabled`. | |||
|  | |||
| @ -1,136 +0,0 @@ | |||
| #!/usr/bin/env node
 | |||
| 
 | |||
| 'use strict'; | |||
| 
 | |||
| const { EOL } = require('os'); | |||
| 
 | |||
| // Requiring npm modules
 | |||
| const program = require('commander'); | |||
| const chalk = require('chalk'); | |||
| 
 | |||
| // Requiring Actions
 | |||
| const createProxyServer = require('./actions/createProxyServer'); | |||
| const createStaticServer = require('./actions/createStaticServer'); | |||
| const killServer = require('./actions/killServer'); | |||
| const listServers = require('./actions/listServers'); | |||
| const killAllConfirm = require('./actions/killAllConfirm'); | |||
| 
 | |||
| // Requiring utils
 | |||
| const validate = require('./utils/validate'); | |||
| const requirements = require('./utils/requirements'); | |||
| 
 | |||
| // Check for requirements such as OS version and nginx install.
 | |||
| // Throw and exit if requirements not found.
 | |||
| // #Roadmap: Add ability to satisfy any possible requirements.
 | |||
| 
 | |||
| requirements(); // Comment in development and uncomment this line in production.
 | |||
| // This should check whether the OS is compatible with this version of `up`
 | |||
| 
 | |||
| program | |||
| 	.version('0.2.1'); | |||
| 	 | |||
| let cmdValue; | |||
| 
 | |||
| program | |||
| 	.version('0.1.0') | |||
| 	.arguments('<cmd>') | |||
| 	.action(function (cmd) { | |||
| 		cmdValue = cmd; | |||
| 	}); | |||
| 
 | |||
| program | |||
| 	.command('static <domain> [outPort]') | |||
| 	.description('Create a static server at this folder.') | |||
| 	.action(function (domain, outPort) { | |||
| 		// If outport is not given, 80 is set as default.
 | |||
| 		// Later, change this default to reflect nginx's settings.
 | |||
| 		outPort = outPort || "80"; | |||
| 		// This is a string because regex needs to validate it.
 | |||
| 		if (!validate(domain, outPort)) return; | |||
| 		// Validates domain and outport, and if invalid, throws and returns.
 | |||
| 		createStaticServer(domain, outPort); | |||
| 		if (outPort != "80" || "443") domain = domain + ":" + outPort; | |||
| 		console.log(EOL + [ | |||
| 			"Done! Your static server has been set up!", | |||
| 			"Point your domain to this server and check " + | |||
| 				chalk.cyan(domain) + | |||
| 				" to verify!" | |||
| 		].join(EOL)); | |||
| 	}); | |||
| 
 | |||
| program | |||
| 	.command('proxy <domain> <inPort> [outPort]') | |||
| 	.description('Create a proxy server, listening at port number.') | |||
| 	.action(function (domain, inPort, outPort) { | |||
| 		// Inbound port is necessary, but outbound is set to 80 by default.
 | |||
| 		// Again, will change this to reflect nginx's settings.
 | |||
| 		outPort = outPort || "80"; | |||
| 		// This is a string because regex needs to validate it.
 | |||
| 		if (!validate(domain, inPort, outPort)) return; | |||
| 		createProxyServer(domain, inPort, outPort); | |||
| 		if (outPort != "80" || "443") domain = domain + ":" + outPort; | |||
| 		console.log(EOL + [ | |||
| 			"Done! Your reverse proxy server has been set up!", | |||
| 			"Point your domain to this server and check " + | |||
| 				chalk.cyan(domain) + | |||
| 				" to verify!"].join(EOL)); | |||
| 	}); | |||
| 
 | |||
| program | |||
| 	.command('list') | |||
| 	.description('List all available servers.') | |||
| 	.action(function () { | |||
| 		listServers(); | |||
| 	}); | |||
| 
 | |||
| program | |||
| 	.command('kill <domain> [ourPort]') | |||
| 	.description('Kill a server.') | |||
| 	.action(function (domain, outPort) { | |||
| 		outPort = outPort || "80"; | |||
| 		// This is a string because regex needs to validate it.
 | |||
| 		killServer(domain, outPort); | |||
| 		console.log(EOL + "Done! Your server has been killed!"+ EOL); | |||
| 	}); | |||
| 
 | |||
| program | |||
| 	.command('kill-all') | |||
| 	.description('Warning! Will completely kill all servers and reset nginx') | |||
| 	.action(function() { | |||
| 		killAllConfirm(); | |||
| 	}); | |||
| 
 | |||
| 
 | |||
| program | |||
| 	.command('*') // This should pick invalid commands, but it doesn't, yet.
 | |||
| 	.action(function () { | |||
| 		console.log(EOL + "Invalid command. Type " + | |||
| 			chalk.cyan('up --help') + " for help." + EOL); | |||
| 	}); | |||
| 
 | |||
| // Adds custom help text to the automatically generated help.
 | |||
| program.on('--help', function () { | |||
| 	console.log(''); | |||
| 	console.log('  Usage:'); | |||
| 	console.log(''); | |||
| 	console.log('   ', | |||
| 		chalk.yellow('$ up'), | |||
| 		chalk.cyan('static'), | |||
| 		chalk.blue('domain-name')); | |||
| 	console.log('      Set up a static server at domain-name'); | |||
| 	console.log(''); | |||
| 	console.log('   ', | |||
| 		chalk.yellow('$ up'), | |||
| 		chalk.cyan('proxy'), | |||
| 		chalk.blue('domain-name port-number')); | |||
| 	console.log('      Set up a proxy server listening at port-number'); | |||
| 	console.log(''); | |||
| }); | |||
| 
 | |||
| // Parses commands passed to `up` and chooses one of the above commands.
 | |||
| program.parse(process.argv); | |||
| 
 | |||
| if (typeof cmdValue === 'undefined') { | |||
| 	console.log(EOL + "No command was given. `up --help` for help info."); | |||
| 	process.exit(1); | |||
| } | |||
| @ -0,0 +1,70 @@ | |||
| 'use strict'; | |||
| 
 | |||
| const { EOL } = require('os'); | |||
| 
 | |||
| // Requiring npm modules
 | |||
| const chalk = require('chalk'); | |||
| 
 | |||
| // Requiring Actions
 | |||
| const createNewServer = require('./actions/createNewServer'); | |||
| const createProxyServer = require('./actions/createProxyServer'); | |||
| const killServer = require('./actions/killServer'); | |||
| const listServers = require('./actions/listServers'); | |||
| 
 | |||
| // Requiring utils
 | |||
| const validate = require('./utils/validate'); | |||
| 
 | |||
| const pacversion = 'up-serve v. ' + require('./package.json').version; | |||
| 
 | |||
| function version () { | |||
| 	return pacversion; | |||
| } | |||
| 
 | |||
| function server (domain, path, outPort = "80") { | |||
| 	// If outport is not given, 80 is set as default.
 | |||
| 	outPort = String(outPort); | |||
| 	validate(domain, outPort); | |||
| 	// Validates domain and outport, and if invalid, throws and returns.
 | |||
| 	createNewServer(domain, path, outPort); | |||
| 	if (outPort != "80" || "443") domain = domain + ":" + outPort; | |||
| 	return (EOL + [ | |||
| 		"Done! Your static server has been set up!", | |||
| 		"Point your domain to this server and check " + | |||
| 			chalk.cyan(domain) + | |||
| 			" to verify!" | |||
| 	].join(EOL)); | |||
| } | |||
| 
 | |||
| function proxy (domain, inPort, outPort = "80") { | |||
| 	// Inbound port is necessary, but outbound is set to 80 by default.
 | |||
| 	outPort = String(outPort); | |||
| 	inPort = String(inPort); | |||
| 	// This is a string because regex needs to validate it.
 | |||
| 	validate(domain, inPort, outPort); | |||
| 	createProxyServer(domain, inPort, outPort); | |||
| 	if (outPort != "80" || "443") domain = domain + ":" + outPort; | |||
| 	return (EOL + [ | |||
| 		"Done! Your reverse proxy server has been set up!", | |||
| 		"Point your domain to this server and check " + | |||
| 			chalk.cyan(domain) + | |||
| 			" to verify!"].join(EOL)); | |||
| } | |||
| 
 | |||
| function list () { | |||
| 	return listServers(); | |||
| } | |||
| 
 | |||
| function kill (domain, outPort = "80") { | |||
| 	outPort = String(outPort); | |||
| 	// This is a string because regex needs to validate it.
 | |||
| 	killServer(domain, outPort); | |||
| 	return (EOL + "Done! Your server has been killed!"); | |||
| } | |||
| 
 | |||
| module.exports = { | |||
| 	version, | |||
| 	server, | |||
| 	proxy, | |||
| 	list, | |||
| 	kill | |||
| }; | |||
					Loading…
					
					
				
		Reference in new issue