UNPKG

node-http-server

Version:

A very simple and fast http server for node, bash, and spawnable from C, Python etc. It is lightweight and great for embedded solutions as well as everyday development or public facing apps.

221 lines (183 loc) 16.9 kB
<!DOCTYPE html> <html> <head> <title>Config</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"> <link rel="stylesheet" media="all" href="../assets/file_1.css"/> <link rel="stylesheet" media="all" href="../assets/file_5.css"/> <link rel="stylesheet" media="all" href="../assets/32px.png"/> <link rel="stylesheet" media="all" href="../assets/40px.png"/> <link rel="stylesheet" media="all" href="../assets/throbber.gif"/> <link rel="stylesheet" media="all" href="../assets/file_7.css"/> <link rel="stylesheet" media="all" href="../assets/file_8.css"/> <script src="../assets/file_2.js" type="text/javascript"></script> <script src="../assets/file_3.js" type="text/javascript"></script> <script src="../assets/file_4.js" type="text/javascript"></script> <script src="../assets/file_6.js" type="text/javascript"></script> <script type="application/json" id="jsTreeJSON"> [{"id":"./example/basic/https-advancedApp.js","text":"https-advancedApp.js","icon":"jstree-file","parent":"./example/basic","a_attr":{"href":"../example/basic/https-advancedApp.js.html"},"state":{"selected":false}},{"id":".","text":".","icon":"jstree-folder","parent":"#","a_attr":{"href":".."},"state":{"opened":true}},{"id":"./example","text":"example","icon":"jstree-folder","parent":".","a_attr":{"href":"../example"},"state":{"opened":false}},{"id":"./example/readme.md","text":"readme.md","icon":"jstree-file","parent":"./example","a_attr":{"href":"../example/readme.md.html"},"state":{"selected":false}},{"id":"./example/advanced","text":"advanced","icon":"jstree-folder","parent":"./example","a_attr":{"href":"../example/advanced"},"state":{"opened":false}},{"id":"./example/advanced/basicTemplate.js","text":"basicTemplate.js","icon":"jstree-file","parent":"./example/advanced","a_attr":{"href":"../example/advanced/basicTemplate.js.html"},"state":{"selected":false}},{"id":"./example/advanced/https-ONLY-basicTemplate.js","text":"https-ONLY-basicTemplate.js","icon":"jstree-file","parent":"./example/advanced","a_attr":{"href":"../example/advanced/https-ONLY-basicTemplate.js.html"},"state":{"selected":false}},{"id":"./example/advanced/https-basicTemplate.js","text":"https-basicTemplate.js","icon":"jstree-file","parent":"./example/advanced","a_attr":{"href":"../example/advanced/https-basicTemplate.js.html"},"state":{"selected":false}},{"id":"./example/advanced/https-randomCSS.js","text":"https-randomCSS.js","icon":"jstree-file","parent":"./example/advanced","a_attr":{"href":"../example/advanced/https-randomCSS.js.html"},"state":{"selected":false}},{"id":"./example/advanced/https-requestBenchmark.js","text":"https-requestBenchmark.js","icon":"jstree-file","parent":"./example/advanced","a_attr":{"href":"../example/advanced/https-requestBenchmark.js.html"},"state":{"selected":false}},{"id":"./example/advanced/randomCSS.js","text":"randomCSS.js","icon":"jstree-file","parent":"./example/advanced","a_attr":{"href":"../example/advanced/randomCSS.js.html"},"state":{"selected":false}},{"id":"./example/advanced/requestBenchmark.js","text":"requestBenchmark.js","icon":"jstree-file","parent":"./example/advanced","a_attr":{"href":"../example/advanced/requestBenchmark.js.html"},"state":{"selected":false}},{"id":"./example/basic","text":"basic","icon":"jstree-folder","parent":"./example","a_attr":{"href":"../example/basic"},"state":{"opened":false}},{"id":"./example/basic/advancedApp.js","text":"advancedApp.js","icon":"jstree-file","parent":"./example/basic","a_attr":{"href":"../example/basic/advancedApp.js.html"},"state":{"selected":false}},{"id":"./example/basic/basicApp.js","text":"basicApp.js","icon":"jstree-file","parent":"./example/basic","a_attr":{"href":"../example/basic/basicApp.js.html"},"state":{"selected":false}},{"id":"./example/basic/basicLogging.js","text":"basicLogging.js","icon":"jstree-file","parent":"./example/basic","a_attr":{"href":"../example/basic/basicLogging.js.html"},"state":{"selected":false}},{"id":"./example/basic/cluster-basicApp.js","text":"cluster-basicApp.js","icon":"jstree-file","parent":"./example/basic","a_attr":{"href":"../example/basic/cluster-basicApp.js.html"},"state":{"selected":false}},{"id":"./example/basic/https-ONLY-basicApp.js","text":"https-ONLY-basicApp.js","icon":"jstree-file","parent":"./example/basic","a_attr":{"href":"../example/basic/https-ONLY-basicApp.js.html"},"state":{"selected":false}},{"id":"./README.md","text":"README.md","icon":"jstree-file","parent":".","a_attr":{"href":"../README.md.html"},"state":{"selected":false}},{"id":"./example/basic/https-basicApp.js","text":"https-basicApp.js","icon":"jstree-file","parent":"./example/basic","a_attr":{"href":"../example/basic/https-basicApp.js.html"},"state":{"selected":false}},{"id":"./example/basic/https-basicLogging.js","text":"https-basicLogging.js","icon":"jstree-file","parent":"./example/basic","a_attr":{"href":"../example/basic/https-basicLogging.js.html"},"state":{"selected":false}},{"id":"./example/basic/https-multipleDomains.js","text":"https-multipleDomains.js","icon":"jstree-file","parent":"./example/basic","a_attr":{"href":"../example/basic/https-multipleDomains.js.html"},"state":{"selected":false}},{"id":"./example/basic/https-verboseApp.js","text":"https-verboseApp.js","icon":"jstree-file","parent":"./example/basic","a_attr":{"href":"../example/basic/https-verboseApp.js.html"},"state":{"selected":false}},{"id":"./example/basic/multipleDomains.js","text":"multipleDomains.js","icon":"jstree-file","parent":"./example/basic","a_attr":{"href":"../example/basic/multipleDomains.js.html"},"state":{"selected":false}},{"id":"./example/basic/verboseApp.js","text":"verboseApp.js","icon":"jstree-file","parent":"./example/basic","a_attr":{"href":"../example/basic/verboseApp.js.html"},"state":{"selected":false}},{"id":"./example/proxy","text":"proxy","icon":"jstree-folder","parent":"./example","a_attr":{"href":"../example/proxy"},"state":{"opened":false}},{"id":"./example/proxy/basic.js","text":"basic.js","icon":"jstree-file","parent":"./example/proxy","a_attr":{"href":"../example/proxy/basic.js.html"},"state":{"selected":false}},{"id":"./example/proxy/https-and-http-basic.js","text":"https-and-http-basic.js","icon":"jstree-file","parent":"./example/proxy","a_attr":{"href":"../example/proxy/https-and-http-basic.js.html"},"state":{"selected":false}},{"id":"./example/proxy/https-and-http-google-proxy.js","text":"https-and-http-google-proxy.js","icon":"jstree-file","parent":"./example/proxy","a_attr":{"href":"../example/proxy/https-and-http-google-proxy.js.html"},"state":{"selected":false}},{"id":"./server","text":"server","icon":"jstree-folder","parent":".","a_attr":{"href":"."},"state":{"opened":true}},{"id":"./server/Config.js","text":"Config.js","icon":"jstree-file","parent":"./server","a_attr":{"href":"Config.js.html"},"state":{"selected":true}},{"id":"./server/Server.js","text":"Server.js","icon":"jstree-file","parent":"./server","a_attr":{"href":"Server.js.html"},"state":{"selected":false}},{"id":"./bin","text":"bin","icon":"jstree-folder","parent":".","a_attr":{"href":"../bin"},"state":{"opened":false}},{"id":"./bin/nhs.js","text":"nhs.js","icon":"jstree-file","parent":"./bin","a_attr":{"href":"../bin/nhs.js.html"},"state":{"selected":false}},{"id":"./local-certs","text":"local-certs","icon":"jstree-folder","parent":".","a_attr":{"href":"../local-certs"},"state":{"opened":false}},{"id":"./local-certs/readme.md","text":"readme.md","icon":"jstree-file","parent":"./local-certs","a_attr":{"href":"../local-certs/readme.md.html"},"state":{"selected":false}}] </script> </head> <body class="markdown-body"> <h1> Config </h1> <div class="subHeading"> ./server/Config.js </div> <button type="button" class="navigatorToggle">&#9776; files...</button> <nav class="navigationTree minimized"> <input type="text" id="jsTreeSearch" placeholder="search..."/> <div></div> </nav> <section> <ul class="sectionDetails "> <li id="section-1"> <div class="annotation"> </div><div class="content"> <div class="highlight"><pre><span class="hljs-meta">'use strict'</span>; <span class="hljs-keyword">const</span> fs=<span class="hljs-built_in">require</span>(<span class="hljs-string">'fs'</span>); <span class="hljs-keyword">const</span> passedArgs = process.argv.splice(<span class="hljs-number">2</span>), argCount = passedArgs.length, args = {}; <span class="hljs-keyword">const</span> defaults = { <span class="hljs-attr">port</span> : <span class="hljs-number">8080</span>, <span class="hljs-attr">root</span> : process.cwd(), <span class="hljs-attr">domain</span> : <span class="hljs-string">'0.0.0.0'</span>, <span class="hljs-attr">index</span> : <span class="hljs-string">'index.html'</span>, <span class="hljs-attr">log</span> : <span class="hljs-literal">false</span> }; <span class="hljs-keyword">for</span>(<span class="hljs-keyword">let</span> i=<span class="hljs-number">0</span>; i&lt;argCount; i++){ <span class="hljs-keyword">const</span> data=passedArgs[i].split(<span class="hljs-string">'='</span>); args[data[<span class="hljs-number">0</span>]]=data[<span class="hljs-number">1</span>]; }</pre></div> </div> </li> <li id="section-2"> <div class="annotation"> <h1 id="config-class">Config Class</h1> <p> <a href="https://github.com/RIAEvangelist/node-http-server/#config-class">Detailed default config docs and explination</a></p> </div><div class="content"> <div class="highlight"><pre><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Config</span></span>{ <span class="hljs-keyword">constructor</span>(userConfig){ <span class="hljs-built_in">Object</span>.assign(<span class="hljs-keyword">this</span>,defaultConfigs); <span class="hljs-keyword">if</span>(userConfig){ <span class="hljs-keyword">for</span>(<span class="hljs-keyword">const</span> k <span class="hljs-keyword">in</span> userConfig){ <span class="hljs-keyword">this</span>[k]=userConfig[k]; } } } }</pre></div> </div> </li> <li id="section-3"> <div class="annotation"> <h3 id="default-node-http-server-config-values">Default node HTTP server config values</h3> <p> All of these can be modified and passed into <code>new server.Server(myConfigs)</code> or <code>server.deploy(myConfigs)</code></p> <pre><code class="lang-javascript"> <span class="hljs-keyword">const</span> myConfig=<span class="hljs-keyword">new</span> server.Config; myConfig.verbose=<span class="hljs-literal">true</span>; myConfig.port=<span class="hljs-number">9922</span>; <span class="hljs-keyword">const</span> myServer=<span class="hljs-keyword">new</span> server.Server(config); myServer.deploy(); <span class="hljs-comment">//or more basically</span> server.deploy({<span class="hljs-attr">port</span>:<span class="hljs-number">9922</span>,<span class="hljs-attr">verbose</span>:<span class="hljs-literal">true</span>}); </code></pre> <p> <a href="https://github.com/RIAEvangelist/node-http-server/#default-node-http-server-configuration">Detailed default config docs and explination</a></p> </div><div class="content"> <div class="highlight"><pre><span class="hljs-keyword">const</span> defaultConfigs={ <span class="hljs-attr">verbose</span> : (args.verbose==<span class="hljs-string">'true'</span>)||<span class="hljs-literal">false</span>, <span class="hljs-attr">port</span> : args.port||defaults.port, <span class="hljs-attr">root</span> : args.root||defaults.root, <span class="hljs-attr">domain</span> : args.domain||defaults.domain, <span class="hljs-attr">log</span> : <span class="hljs-literal">false</span>, <span class="hljs-attr">logFunction</span> : serverLogging, <span class="hljs-attr">domains</span> : { }, <span class="hljs-attr">server</span> : { <span class="hljs-attr">index</span> : args.index||defaults.index, <span class="hljs-attr">noCache</span> : args.noCache==<span class="hljs-string">'false'</span> ? <span class="hljs-literal">false</span> : <span class="hljs-literal">true</span>, <span class="hljs-attr">timeout</span> : <span class="hljs-number">30000</span> }, <span class="hljs-attr">https</span>:{ <span class="hljs-attr">ca</span>:<span class="hljs-string">''</span>, <span class="hljs-attr">privateKey</span>:<span class="hljs-string">''</span>, <span class="hljs-attr">certificate</span>:<span class="hljs-string">''</span>, <span class="hljs-attr">passphrase</span>:<span class="hljs-literal">false</span>, <span class="hljs-attr">port</span>:<span class="hljs-number">443</span>, <span class="hljs-attr">only</span>:<span class="hljs-literal">false</span> }, <span class="hljs-attr">contentType</span> : { <span class="hljs-attr">html</span> : <span class="hljs-string">'text/html'</span>, <span class="hljs-attr">css</span> : <span class="hljs-string">'text/css'</span>, <span class="hljs-attr">js</span> : <span class="hljs-string">'text/javascript'</span>, <span class="hljs-attr">json</span> : <span class="hljs-string">'application/json'</span>, <span class="hljs-attr">txt</span> : <span class="hljs-string">'text/plain'</span>, <span class="hljs-attr">jpeg</span> : <span class="hljs-string">'image/jpeg'</span>, <span class="hljs-attr">jpg</span> : <span class="hljs-string">'image/jpeg'</span>, <span class="hljs-attr">png</span> : <span class="hljs-string">'image/png'</span>, <span class="hljs-attr">gif</span> : <span class="hljs-string">'image/gif'</span>, <span class="hljs-attr">ico</span> : <span class="hljs-string">'image/x-icon'</span>, <span class="hljs-attr">appcache</span>: <span class="hljs-string">'text/cache-manifest'</span> }, <span class="hljs-attr">restrictedType</span>: { }, <span class="hljs-attr">errors</span>:{ <span class="hljs-attr">headers</span> : { <span class="hljs-string">'Content-Type'</span> : <span class="hljs-string">'text/plain'</span> }, <span class="hljs-number">404</span>: <span class="hljs-string">'404 MIA'</span>, <span class="hljs-number">415</span>: <span class="hljs-string">'415 File type not supported'</span>, <span class="hljs-number">403</span>: <span class="hljs-string">'403 Access Denied'</span>, <span class="hljs-number">500</span>: <span class="hljs-string">'500 {{err}}'</span> } }; <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">serverLogging</span>(<span class="hljs-params">data</span>)</span>{ fs.exists( <span class="hljs-keyword">this</span>.log, <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">serverLogExsits</span>(<span class="hljs-params">exists</span>)</span>{ data.timestamp=<span class="hljs-keyword">new</span> <span class="hljs-built_in">Date</span>().getTime(); <span class="hljs-keyword">const</span> JSONData=<span class="hljs-built_in">JSON</span>.stringify(data); <span class="hljs-keyword">let</span> method=<span class="hljs-string">'appendFile'</span>; <span class="hljs-keyword">if</span>(!exists){ method=<span class="hljs-string">'writeFile'</span>; } fs[method]( <span class="hljs-keyword">this</span>.log, JSONData, <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">fsMethod</span>(<span class="hljs-params">err</span>) </span>{ <span class="hljs-keyword">if</span>(err){ <span class="hljs-built_in">console</span>.log(err); } } ); }.bind(<span class="hljs-keyword">this</span>) ); } <span class="hljs-built_in">module</span>.exports=Config;</pre></div> </div> </li> </ul> </section> </body> </html>