problem: don't want to run my server as root to bind to privileged ports (e.g. 80, 443).

solution: support privilege drop after socket bind via new --user <username> parameter.
This commit is contained in:
Niall O'Higgins 2012-02-27 14:34:34 -08:00 committed by indexzero
parent 89d43c20dd
commit 2c3650746c

View File

@ -17,6 +17,7 @@ var help = [
" --target HOST:PORT Location of the server the proxy will target", " --target HOST:PORT Location of the server the proxy will target",
" --config OUTFILE Location of the configuration file for the proxy server", " --config OUTFILE Location of the configuration file for the proxy server",
" --silent Silence the log output from the proxy server", " --silent Silence the log output from the proxy server",
" --user USER User to drop privileges to once server socket is bound",
" -h, --help You're staring at it" " -h, --help You're staring at it"
].join('\n'); ].join('\n');
@ -28,6 +29,7 @@ var location, config = {},
port = argv.port || 80, port = argv.port || 80,
host = argv.host || undefined, host = argv.host || undefined,
target = argv.target; target = argv.target;
user = argv.user;
// //
// If we were passed a config, parse it // If we were passed a config, parse it
@ -85,6 +87,14 @@ if (host) {
server.listen(port); server.listen(port);
} }
//
// Drop privileges if requested
//
if (typeof user === 'string') {
process.setuid(user);
}
// //
// Notify that the server is started // Notify that the server is started
// //