Skip to content

Instantly share code, notes, and snippets.

@MarkTiedemann
Last active September 6, 2021 16:42
Show Gist options
  • Select an option

  • Save MarkTiedemann/479dac38178769155d04059c0f1bdc09 to your computer and use it in GitHub Desktop.

Select an option

Save MarkTiedemann/479dac38178769155d04059c0f1bdc09 to your computer and use it in GitHub Desktop.
add-type -an system.web;
$root = "C:\web";
$port = "8000";
$server = [net.httpListener]::new();
$server.prefixes.add("http://localhost:$port/");
$server.start();
while ($server.isListening) {
$ctx = $server.getContext();
$req = $ctx.request;
$res = $ctx.response;
$method = $req.httpMethod;
$pathname = $req.url.localPath;
if ($method -ne "GET") {
$res.statusCode = 405;
$res.close();
continue;
}
if ($pathname -eq "/stop") {
$res.close();
$server.abort();
break;
}
try {
$file = [io.file]::openRead($root + $($pathname -replace "/", "\"));
$res.contentType = [web.mimeMapping]::getMimeMapping($pathname);
$file.copyTo($res.outputStream);
$res.close();
$file.close();
} catch {
$res.statusCode = 404;
$res.close();
}
}
powershell -C "add-type -an system.web; $root = 'C:\web'; $port = '8000'; $server = [net.httpListener]::new(); $server.prefixes.add('http://localhost:' + $port + '/'); $server.start(); while ($server.isListening) { $ctx = $server.getContext(); $req = $ctx.request; $res = $ctx.response; $method = $req.httpMethod; $pathname = $req.url.localPath; if ($method -ne 'GET') { $res.statusCode = 405; $res.close(); continue; } if ($pathname -eq '/stop') { $res.close(); $server.abort(); break; } try { $file = [io.file]::openRead($root + $($pathname -replace '/', '\')); $res.contentType = [web.mimeMapping]::getMimeMapping($pathname); $file.copyTo($res.outputStream); $res.close(); $file.close(); } catch { $res.statusCode = 404; $res.close(); } }"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment