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.
192 lines (145 loc) • 13.4 kB
HTML
<html>
<head>
<title>https-basicTemplate</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":"../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":".."},"state":{"opened":true}},{"id":"./example/readme.md","text":"readme.md","icon":"jstree-file","parent":"./example","a_attr":{"href":"../readme.md.html"},"state":{"selected":false}},{"id":"./example/advanced","text":"advanced","icon":"jstree-folder","parent":"./example","a_attr":{"href":"."},"state":{"opened":true}},{"id":"./example/advanced/basicTemplate.js","text":"basicTemplate.js","icon":"jstree-file","parent":"./example/advanced","a_attr":{"href":"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":"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":"https-basicTemplate.js.html"},"state":{"selected":true}},{"id":"./example/advanced/https-randomCSS.js","text":"https-randomCSS.js","icon":"jstree-file","parent":"./example/advanced","a_attr":{"href":"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":"https-requestBenchmark.js.html"},"state":{"selected":false}},{"id":"./example/advanced/randomCSS.js","text":"randomCSS.js","icon":"jstree-file","parent":"./example/advanced","a_attr":{"href":"randomCSS.js.html"},"state":{"selected":false}},{"id":"./example/advanced/requestBenchmark.js","text":"requestBenchmark.js","icon":"jstree-file","parent":"./example/advanced","a_attr":{"href":"requestBenchmark.js.html"},"state":{"selected":false}},{"id":"./example/basic","text":"basic","icon":"jstree-folder","parent":"./example","a_attr":{"href":"../basic"},"state":{"opened":false}},{"id":"./example/basic/advancedApp.js","text":"advancedApp.js","icon":"jstree-file","parent":"./example/basic","a_attr":{"href":"../basic/advancedApp.js.html"},"state":{"selected":false}},{"id":"./example/basic/basicApp.js","text":"basicApp.js","icon":"jstree-file","parent":"./example/basic","a_attr":{"href":"../basic/basicApp.js.html"},"state":{"selected":false}},{"id":"./example/basic/basicLogging.js","text":"basicLogging.js","icon":"jstree-file","parent":"./example/basic","a_attr":{"href":"../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":"../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":"../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":"../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":"../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":"../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":"../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":"../basic/multipleDomains.js.html"},"state":{"selected":false}},{"id":"./example/basic/verboseApp.js","text":"verboseApp.js","icon":"jstree-file","parent":"./example/basic","a_attr":{"href":"../basic/verboseApp.js.html"},"state":{"selected":false}},{"id":"./example/proxy","text":"proxy","icon":"jstree-folder","parent":"./example","a_attr":{"href":"../proxy"},"state":{"opened":false}},{"id":"./example/proxy/basic.js","text":"basic.js","icon":"jstree-file","parent":"./example/proxy","a_attr":{"href":"../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":"../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":"../proxy/https-and-http-google-proxy.js.html"},"state":{"selected":false}},{"id":"./server","text":"server","icon":"jstree-folder","parent":".","a_attr":{"href":"../../server"},"state":{"opened":false}},{"id":"./server/Config.js","text":"Config.js","icon":"jstree-file","parent":"./server","a_attr":{"href":"../../server/Config.js.html"},"state":{"selected":false}},{"id":"./server/Server.js","text":"Server.js","icon":"jstree-file","parent":"./server","a_attr":{"href":"../../server/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>
https-basicTemplate
</h1>
<div class="subHeading">
./example/advanced/https-basicTemplate.js
</div>
<button type="button" class="navigatorToggle">☰ 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-keyword">const</span> os = <span class="hljs-built_in">require</span>( <span class="hljs-string">'os'</span> );</pre></div>
</div>
</li>
<li id="section-2">
<div class="annotation">
<p>import the <code>node-http-server</code> module
<code>const server=require(‘node-http-server’);</code></p>
</div><div class="content">
<div class="highlight"><pre><span class="hljs-keyword">const</span> server=<span class="hljs-built_in">require</span>(<span class="hljs-string">'../../server/Server.js'</span>);
<span class="hljs-keyword">const</span> config=<span class="hljs-keyword">new</span> server.Config;</pre></div>
</div>
</li>
<li id="section-3">
<div class="annotation">
<p>setup basic server configs and allow http serving with https serving</p>
</div><div class="content">
<div class="highlight"><pre>config.verbose=<span class="hljs-literal">true</span>;
config.port=<span class="hljs-number">8000</span>;
config.root=__dirname+<span class="hljs-string">'/appRoot/'</span>;</pre></div>
</div>
</li>
<li id="section-4">
<div class="annotation">
<p>add ssl certs and set ssl port</p>
</div><div class="content">
<div class="highlight"><pre>config.https.privateKey = <span class="hljs-string">`<span class="hljs-subst">${__dirname}</span>/../../local-certs/private/server.key`</span>;
config.https.certificate= <span class="hljs-string">`<span class="hljs-subst">${__dirname}</span>/../../local-certs/server.pub`</span>;
config.https.port = <span class="hljs-number">4433</span>;</pre></div>
</div>
</li>
<li id="section-5">
<div class="annotation">
<p>set listener to process body template</p>
</div><div class="content">
<div class="highlight"><pre>server.beforeServe=beforeServe;</pre></div>
</div>
</li>
<li id="section-6">
<div class="annotation">
<p>just before serving process the template</p>
</div><div class="content">
<div class="highlight"><pre><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">beforeServe</span>(<span class="hljs-params">request,response,body,encoding</span>)</span>{</pre></div>
</div>
</li>
<li id="section-7">
<div class="annotation">
<p>only parse the /index.html request for this example</p>
</div><div class="content">
<div class="highlight"><pre> <span class="hljs-keyword">if</span>(request.url!=<span class="hljs-string">'/index.html'</span>){
<span class="hljs-keyword">return</span>;
}</pre></div>
</div>
</li>
<li id="section-8">
<div class="annotation">
<p>dynamically detect available interfaces
and build content list</p>
</div><div class="content">
<div class="highlight"><pre> <span class="hljs-keyword">var</span> networkInterfaces = os.networkInterfaces();
<span class="hljs-keyword">var</span> serverIPs=<span class="hljs-string">''</span>;
<span class="hljs-keyword">var</span> interfaceKeys=<span class="hljs-built_in">Object</span>.keys(networkInterfaces);
<span class="hljs-keyword">for</span>(<span class="hljs-keyword">var</span> i <span class="hljs-keyword">in</span> interfaceKeys){
serverIPs+=<span class="hljs-string">'<li><strong>'</span>+interfaceKeys[i]+<span class="hljs-string">' : </strong><br>'</span>;
<span class="hljs-keyword">var</span> interface=networkInterfaces[
interfaceKeys[i]
];
<span class="hljs-keyword">for</span>(<span class="hljs-keyword">var</span> j <span class="hljs-keyword">in</span> interface){
<span class="hljs-keyword">var</span> fam=interface[j].family;
<span class="hljs-keyword">var</span> address=interface[j].address;
serverIPs+=fam+<span class="hljs-string">' -> '</span>+address+<span class="hljs-string">'<br>'</span>;
}
serverIPs+=<span class="hljs-string">'</li>'</span>;
}</pre></div>
</div>
</li>
<li id="section-9">
<div class="annotation">
<p>replace {{some-content}} variable with the generated content list</p>
</div><div class="content">
<div class="highlight"><pre> body.value=body.value.replace(<span class="hljs-string">'{{some-content}}'</span>,serverIPs);
}
server.deploy(config);</pre></div>
</div>
</li>
</ul>
</section>
</body>
</html>