├── .gitignore ├── README.md ├── iisnode.yml ├── package.json ├── server.js └── web.config /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules/ 2 | npm-debug.log 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | node-echo 2 | ========= 3 | 4 | node.js echo server, returns request data to response 5 | -------------------------------------------------------------------------------- /iisnode.yml: -------------------------------------------------------------------------------- 1 | # For documentation see https://github.com/tjanczuk/iisnode/blob/master/src/samples/configuration/iisnode.yml 2 | 3 | # loggingEnabled: false 4 | # debuggingEnabled: false 5 | # devErrorsEnabled: false 6 | node_env: production 7 | # nodeProcessCountPerApplication: 1 8 | # maxConcurrentRequestsPerProcess: 1024 9 | # maxNamedPipeConnectionRetry: 24 10 | # namedPipeConnectionRetryDelay: 250 11 | # maxNamedPipeConnectionPoolSize: 512 12 | # maxNamedPipePooledConnectionAge: 30000 13 | # asyncCompletionThreadCount: 0 14 | # initialRequestBufferSize: 4096 15 | # maxRequestBufferSize: 65536 16 | watchedFiles: iisnode.yml;node_modules\*;*.js 17 | # uncFileChangesPollingInterval: 5000 18 | # gracefulShutdownTimeout: 60000 19 | # logDirectoryNameSuffix: logs 20 | # debuggerPortRange: 5058-6058 21 | # debuggerPathSegment: debug 22 | # maxLogFileSizeInKB: 128 23 | # appendToExistingLog: false 24 | # logFileFlushInterval: 5000 25 | # flushResponse: false 26 | # enableXFF: false 27 | # promoteServerVars: -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "node-echo", 3 | "version": "0.0.1", 4 | "description": "node-echo", 5 | "main": "server.js", 6 | "dependencies": { 7 | }, 8 | "devDependencies": { 9 | "nodemon": "*" 10 | }, 11 | "engine": { 12 | "node": "*", 13 | "npm": "*" 14 | }, 15 | "scripts": { 16 | "dev": "nodemon --ignore node_modules/ server.js", 17 | "start": "node server.js" 18 | }, 19 | "repository": { 20 | "type": "git", 21 | "url": "http://github.com/bettiolo/node-echo.git" 22 | }, 23 | "keywords": [ 24 | "Echo" 25 | ], 26 | "author": "Marco Bettiolo ", 27 | "license": "", 28 | "bugs": { 29 | "url": "http://github.com/bettiolo/node-echo/issues" 30 | }, 31 | "homepage": "http://apilb.com" 32 | } 33 | -------------------------------------------------------------------------------- /server.js: -------------------------------------------------------------------------------- 1 | var util = require('util'); 2 | var http = require('http'); 3 | var url = require('url'); 4 | var qs = require('querystring'); 5 | var os = require('os') 6 | var port = process.env.PORT || process.env.port || process.env.OPENSHIFT_NODEJS_PORT || 3000; 7 | var ip = process.env.OPENSHIFT_NODEJS_IP || '0.0.0.0'; 8 | var nodeEnv = process.env.NODE_ENV || 'unknown'; 9 | var version = require('./package.json').version || 'unknown'; 10 | var startedByNpm = !!process.env.npm_package_version; 11 | 12 | var server = http.createServer(function (req, res) { 13 | var url_parts = url.parse(req.url, true); 14 | 15 | var body = ''; 16 | req.on('data', function (data) { 17 | body += data; 18 | }); 19 | req.on('end', function () { 20 | var formattedBody = qs.parse(body); 21 | 22 | res.writeHead(200, {'Content-Type': 'text/plain'}); 23 | 24 | res.write('This is a node.js echo service v' + version + '\n'); 25 | res.write('Host: ' + req.headers.host + '\n'); 26 | res.write('\n'); 27 | res.write('node.js Production Mode: ' + (nodeEnv == 'production' ? 'yes' : 'no') + '\n'); 28 | res.write('node.js ' + process.version + '\n'); 29 | res.write('Executed by npm: ' + (startedByNpm ? 'yes' : 'no') + '\n'); 30 | res.write('\n'); 31 | res.write('HTTP/' + req.httpVersion +'\n'); 32 | res.write('Request headers:\n'); 33 | res.write(util.inspect(req.headers, null) + '\n'); 34 | res.write('Request query:\n'); 35 | res.write(util.inspect(url_parts.query, null) + '\n'); 36 | res.write('Request body:\n'); 37 | res.write(util.inspect(formattedBody, null) + '\n'); 38 | res.write('\n'); 39 | res.write('Host: ' + os.hostname() + '\n'); 40 | res.write('OS Type: ' + os.type() + '\n'); 41 | res.write('OS Platform: ' + os.platform() + '\n'); 42 | res.write('OS Arch: ' + os.arch() + '\n'); 43 | res.write('OS Release: ' + os.release() + '\n'); 44 | res.write('OS Uptime: ' + os.uptime() + '\n'); 45 | res.write('OS Free memory: ' + os.freemem() / 1024 / 1024 + 'mb\n'); 46 | res.write('OS Total memory: ' + os.totalmem() / 1024 / 1024 + 'mb\n'); 47 | res.write('OS CPU count: ' + os.cpus().length + '\n'); 48 | res.write('OS CPU model: ' + os.cpus()[0].model + '\n'); 49 | res.write('OS CPU speed: ' + os.cpus()[0].speed + 'mhz\n'); 50 | res.end('\n'); 51 | 52 | }); 53 | }); 54 | console.log('Initializing Server on ' + ip + ':' + port); 55 | server.listen(port,ip, function(){ 56 | var address = server.address(); 57 | console.log('Server running on ' + address.address + ':' + address.port); 58 | }); 59 | -------------------------------------------------------------------------------- /web.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | --------------------------------------------------------------------------------