cloudflare
tcp/443 tcp/80 tcp/8443
Open service 104.21.22.208:443 · draker.no
2026-01-25 20:16
HTTP/1.1 200 OK
Date: Sun, 25 Jan 2026 20:16:17 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=9,cfOrigin;dur=40
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=7jkYj9o29CZJpshK9JgH%2F%2FlPjMOlMQ8XxnUjQY5dMTg63rjXJPSjV8LLNekzzX5Cpx%2FpzVY37gPc6wU8CTwi5IR2bCvI30P6%2FA%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Strict-Transport-Security: max-age=15552000; preload
cf-cache-status: DYNAMIC
CF-RAY: 9c3a728a7e22d123-EWR
alt-svc: h3=":443"; ma=86400
Page title: Draker.no
<!DOCTYPE html>
<html>
<head>
<title>Draker.no</title>
<style>
body {
background-color: black;
color: white;
font-family: monospace;
margin: 0;
padding: 0;
}
#terminal {
width: 100%;
height: 90vh;
padding: 10px;
box-sizing: border-box;
font-size: 16px;
background-color: black;
color: white;
overflow-y: auto;
display: flex;
flex-direction: column;
}
#inputArea {
display: flex;
align-items: center;
flex-shrink: 0;
}
#prompt {
color: lightgreen;
margin-right: 5px;
white-space: pre;
}
#inputLine {
flex-grow: 1;
background-color: black;
color: white;
border: none;
outline: none;
font-family: monospace;
font-size: 16px;
}
</style>
</head>
<body>
<div id="terminal">
<div id="inputArea">
<span id="prompt">root@draker:~$</span>
<input type="text" id="inputLine" />
</div>
</div>
<script>
function isMobileDevice() {
const userAgent = navigator.userAgent || navigator.vendor || window.opera;
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent);
}
const terminal = document.getElementById('terminal');
const inputArea = document.getElementById('inputArea');
const inputLine = document.getElementById('inputLine');
let files = {
"welcome.txt": "Hello there",
};
let commandHistory = [];
let historyIndex = 0;
function appendToTerminal(text) {
const content = document.createElement('div');
content.innerHTML = text;
terminal.insertBefore(content, inputArea);
terminal.scrollTop = terminal.scrollHeight;
}
function clearTerminal() {
while (terminal.firstChild !== inputArea) {
terminal.removeChild(terminal.firstChild);
}
}
function processCommand(input) {
appendToTerminal(`<span style="color: lightgreen;">root@draker:~$</span> ${input}`);
if (input) {
const args = input.split(' ');
const command = args[0];
switch (command) {
case 'ls':
appendToTerminal(Object.keys(files).join(' '));
break;
case 'cat':
if (args.length < 2) {
appendToTerminal('Usage: cat <filename>');
} else {
const fileName = args[1];
if (files[fileName]) {
appendToTerminal(files[fileName]);
} else {
appendToTerminal(`cat: ${fileName}: No such file or directory`);
}
}
break;
case 'help':
appendToTerminal('Commands: ls, cat, help, clear');
break;
case 'clear':
clearTerminal();
break;
default:
appendToTerminal(`${command}: command not found`);
break;
}
commandHistory.push(input);
historyIndex = commandHistory.length;
}
appendToTerminal(''); // Ensure a new line is added for empty input
}
function autocompleteInput() {
const currentInput = inputLine.value;
const args = currentInput.split(' ');
const partialInput = args[args.length - 1];
const matchi
Open service 2606:4700:3037::ac43:cf17:443 · draker.no
2026-01-25 20:16
HTTP/1.1 200 OK
Date: Sun, 25 Jan 2026 20:16:17 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=11,cfOrigin;dur=48
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=vssoXQAfY%2FJ0MC4m%2ByAX5GSy0jiu1oNggdtZ0HVSEDKtIKGCLde2aKuqpQMoPrRcrY%2Bm1F9Zp00S1tJvmLGfPTM2fh5EEEeC2epSXYC7ELN%2B9lRElA%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Strict-Transport-Security: max-age=15552000; preload
cf-cache-status: DYNAMIC
CF-RAY: 9c3a728a7e685541-EWR
alt-svc: h3=":443"; ma=86400
Page title: Draker.no
<!DOCTYPE html>
<html>
<head>
<title>Draker.no</title>
<style>
body {
background-color: black;
color: white;
font-family: monospace;
margin: 0;
padding: 0;
}
#terminal {
width: 100%;
height: 90vh;
padding: 10px;
box-sizing: border-box;
font-size: 16px;
background-color: black;
color: white;
overflow-y: auto;
display: flex;
flex-direction: column;
}
#inputArea {
display: flex;
align-items: center;
flex-shrink: 0;
}
#prompt {
color: lightgreen;
margin-right: 5px;
white-space: pre;
}
#inputLine {
flex-grow: 1;
background-color: black;
color: white;
border: none;
outline: none;
font-family: monospace;
font-size: 16px;
}
</style>
</head>
<body>
<div id="terminal">
<div id="inputArea">
<span id="prompt">root@draker:~$</span>
<input type="text" id="inputLine" />
</div>
</div>
<script>
function isMobileDevice() {
const userAgent = navigator.userAgent || navigator.vendor || window.opera;
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent);
}
const terminal = document.getElementById('terminal');
const inputArea = document.getElementById('inputArea');
const inputLine = document.getElementById('inputLine');
let files = {
"welcome.txt": "Hello there",
};
let commandHistory = [];
let historyIndex = 0;
function appendToTerminal(text) {
const content = document.createElement('div');
content.innerHTML = text;
terminal.insertBefore(content, inputArea);
terminal.scrollTop = terminal.scrollHeight;
}
function clearTerminal() {
while (terminal.firstChild !== inputArea) {
terminal.removeChild(terminal.firstChild);
}
}
function processCommand(input) {
appendToTerminal(`<span style="color: lightgreen;">root@draker:~$</span> ${input}`);
if (input) {
const args = input.split(' ');
const command = args[0];
switch (command) {
case 'ls':
appendToTerminal(Object.keys(files).join(' '));
break;
case 'cat':
if (args.length < 2) {
appendToTerminal('Usage: cat <filename>');
} else {
const fileName = args[1];
if (files[fileName]) {
appendToTerminal(files[fileName]);
} else {
appendToTerminal(`cat: ${fileName}: No such file or directory`);
}
}
break;
case 'help':
appendToTerminal('Commands: ls, cat, help, clear');
break;
case 'clear':
clearTerminal();
break;
default:
appendToTerminal(`${command}: command not found`);
break;
}
commandHistory.push(input);
historyIndex = commandHistory.length;
}
appendToTerminal(''); // Ensure a new line is added for empty input
}
function autocompleteInput() {
const currentInput = inputLine.value;
const args = currentInput.split(' ');
const partialInput = args[args.length - 1];
const matchi
Open service 2606:4700:3037::ac43:cf17:80 · draker.no
2026-01-25 20:16
HTTP/1.1 301 Moved Permanently
Date: Sun, 25 Jan 2026 20:16:16 GMT
Content-Length: 0
Connection: close
Location: https://draker.no/
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=TM4KuRSFgcJJ%2BkVhTc8y0Lk9chF%2Fu6J9JO3dvfoalF8BjasaEDThZJAVvvXZP%2FoYlaPSfYzfIN9z7H8wHyUZryYB2LMYnkA%2FxbJ68c8MXuaVyFW0pA%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
X-Content-Type-Options: nosniff
cf-cache-status: DYNAMIC
CF-RAY: 9c3a7289f839131e-AMS
alt-svc: h3=":443"; ma=86400
Open service 172.67.207.23:8443 · draker.no
2026-01-25 20:16
HTTP/1.1 200 OK
Date: Sun, 25 Jan 2026 20:16:17 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
cf-cache-status: DYNAMIC
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=4QGvHtxa%2FJ9SW%2Fkmp1YyUGxJI%2BdZ23aRk5fdbFZgAKxU%2BGKzVtbKtZcm%2FiLskCicWJXAXKW7FxCWQQTa5krymKoW1OEtkWPQYg%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Strict-Transport-Security: max-age=15552000; preload
CF-RAY: 9c3a728a1d88b35c-AMS
alt-svc: h3=":8443"; ma=86400
Page title: Draker.no
<!DOCTYPE html>
<html>
<head>
<title>Draker.no</title>
<style>
body {
background-color: black;
color: white;
font-family: monospace;
margin: 0;
padding: 0;
}
#terminal {
width: 100%;
height: 90vh;
padding: 10px;
box-sizing: border-box;
font-size: 16px;
background-color: black;
color: white;
overflow-y: auto;
display: flex;
flex-direction: column;
}
#inputArea {
display: flex;
align-items: center;
flex-shrink: 0;
}
#prompt {
color: lightgreen;
margin-right: 5px;
white-space: pre;
}
#inputLine {
flex-grow: 1;
background-color: black;
color: white;
border: none;
outline: none;
font-family: monospace;
font-size: 16px;
}
</style>
</head>
<body>
<div id="terminal">
<div id="inputArea">
<span id="prompt">root@draker:~$</span>
<input type="text" id="inputLine" />
</div>
</div>
<script>
function isMobileDevice() {
const userAgent = navigator.userAgent || navigator.vendor || window.opera;
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent);
}
const terminal = document.getElementById('terminal');
const inputArea = document.getElementById('inputArea');
const inputLine = document.getElementById('inputLine');
let files = {
"welcome.txt": "Hello there",
};
let commandHistory = [];
let historyIndex = 0;
function appendToTerminal(text) {
const content = document.createElement('div');
content.innerHTML = text;
terminal.insertBefore(content, inputArea);
terminal.scrollTop = terminal.scrollHeight;
}
function clearTerminal() {
while (terminal.firstChild !== inputArea) {
terminal.removeChild(terminal.firstChild);
}
}
function processCommand(input) {
appendToTerminal(`<span style="color: lightgreen;">root@draker:~$</span> ${input}`);
if (input) {
const args = input.split(' ');
const command = args[0];
switch (command) {
case 'ls':
appendToTerminal(Object.keys(files).join(' '));
break;
case 'cat':
if (args.length < 2) {
appendToTerminal('Usage: cat <filename>');
} else {
const fileName = args[1];
if (files[fileName]) {
appendToTerminal(files[fileName]);
} else {
appendToTerminal(`cat: ${fileName}: No such file or directory`);
}
}
break;
case 'help':
appendToTerminal('Commands: ls, cat, help, clear');
break;
case 'clear':
clearTerminal();
break;
default:
appendToTerminal(`${command}: command not found`);
break;
}
commandHistory.push(input);
historyIndex = commandHistory.length;
}
appendToTerminal(''); // Ensure a new line is added for empty input
}
function autocompleteInput() {
const currentInput = inputLine.value;
const args = currentInput.split(' ');
const partialInput = args[args.length - 1];
const matchi
Open service 104.21.22.208:8443 · draker.no
2026-01-25 20:16
HTTP/1.1 200 OK
Date: Sun, 25 Jan 2026 20:16:17 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
cf-cache-status: DYNAMIC
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=uPJW2cidyW3%2Bskb1rE%2FfrIqL1Cxql4sRPbPubseOsFuGB9u6vbJ76iD4LHDC5XvS8gmnKgTbZNwKajKOiAcmGfTSKfxZ7Xqgjw%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Strict-Transport-Security: max-age=15552000; preload
CF-RAY: 9c3a728a1d8e199c-AMS
alt-svc: h3=":8443"; ma=86400
Page title: Draker.no
<!DOCTYPE html>
<html>
<head>
<title>Draker.no</title>
<style>
body {
background-color: black;
color: white;
font-family: monospace;
margin: 0;
padding: 0;
}
#terminal {
width: 100%;
height: 90vh;
padding: 10px;
box-sizing: border-box;
font-size: 16px;
background-color: black;
color: white;
overflow-y: auto;
display: flex;
flex-direction: column;
}
#inputArea {
display: flex;
align-items: center;
flex-shrink: 0;
}
#prompt {
color: lightgreen;
margin-right: 5px;
white-space: pre;
}
#inputLine {
flex-grow: 1;
background-color: black;
color: white;
border: none;
outline: none;
font-family: monospace;
font-size: 16px;
}
</style>
</head>
<body>
<div id="terminal">
<div id="inputArea">
<span id="prompt">root@draker:~$</span>
<input type="text" id="inputLine" />
</div>
</div>
<script>
function isMobileDevice() {
const userAgent = navigator.userAgent || navigator.vendor || window.opera;
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent);
}
const terminal = document.getElementById('terminal');
const inputArea = document.getElementById('inputArea');
const inputLine = document.getElementById('inputLine');
let files = {
"welcome.txt": "Hello there",
};
let commandHistory = [];
let historyIndex = 0;
function appendToTerminal(text) {
const content = document.createElement('div');
content.innerHTML = text;
terminal.insertBefore(content, inputArea);
terminal.scrollTop = terminal.scrollHeight;
}
function clearTerminal() {
while (terminal.firstChild !== inputArea) {
terminal.removeChild(terminal.firstChild);
}
}
function processCommand(input) {
appendToTerminal(`<span style="color: lightgreen;">root@draker:~$</span> ${input}`);
if (input) {
const args = input.split(' ');
const command = args[0];
switch (command) {
case 'ls':
appendToTerminal(Object.keys(files).join(' '));
break;
case 'cat':
if (args.length < 2) {
appendToTerminal('Usage: cat <filename>');
} else {
const fileName = args[1];
if (files[fileName]) {
appendToTerminal(files[fileName]);
} else {
appendToTerminal(`cat: ${fileName}: No such file or directory`);
}
}
break;
case 'help':
appendToTerminal('Commands: ls, cat, help, clear');
break;
case 'clear':
clearTerminal();
break;
default:
appendToTerminal(`${command}: command not found`);
break;
}
commandHistory.push(input);
historyIndex = commandHistory.length;
}
appendToTerminal(''); // Ensure a new line is added for empty input
}
function autocompleteInput() {
const currentInput = inputLine.value;
const args = currentInput.split(' ');
const partialInput = args[args.length - 1];
const matchi
Open service 172.67.207.23:80 · draker.no
2026-01-25 20:16
HTTP/1.1 301 Moved Permanently
Date: Sun, 25 Jan 2026 20:16:16 GMT
Content-Length: 0
Connection: close
Location: https://draker.no/
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=SWnJHrsLzERrKMzwWAY4ZSp%2F164Nu6cZtIrWdaY%2FGYZtompdfgxdN4wsUcjoZSj%2BEDy9pNlcetQWUN91RGnhfVikOigPDeTMlw%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
X-Content-Type-Options: nosniff
cf-cache-status: DYNAMIC
CF-RAY: 9c3a7289fc5abd24-FRA
alt-svc: h3=":443"; ma=86400
Open service 2606:4700:3032::6815:16d0:443 · draker.no
2026-01-25 20:16
HTTP/1.1 200 OK
Date: Sun, 25 Jan 2026 20:16:17 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
cf-cache-status: DYNAMIC
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=CA84ZcWxyuEYSTXUkgpAGAMZBrOnToamyv%2BAmyFm0kWY33I0Hw2JFEEzOMUP3rJHBT44lYPEKbqX2bkErnf%2FIPrtDEYHN8YNKv13UTGYEDPQkBE5og%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Strict-Transport-Security: max-age=15552000; preload
CF-RAY: 9c3a728a2b44583d-AMS
alt-svc: h3=":443"; ma=86400
Page title: Draker.no
<!DOCTYPE html>
<html>
<head>
<title>Draker.no</title>
<style>
body {
background-color: black;
color: white;
font-family: monospace;
margin: 0;
padding: 0;
}
#terminal {
width: 100%;
height: 90vh;
padding: 10px;
box-sizing: border-box;
font-size: 16px;
background-color: black;
color: white;
overflow-y: auto;
display: flex;
flex-direction: column;
}
#inputArea {
display: flex;
align-items: center;
flex-shrink: 0;
}
#prompt {
color: lightgreen;
margin-right: 5px;
white-space: pre;
}
#inputLine {
flex-grow: 1;
background-color: black;
color: white;
border: none;
outline: none;
font-family: monospace;
font-size: 16px;
}
</style>
</head>
<body>
<div id="terminal">
<div id="inputArea">
<span id="prompt">root@draker:~$</span>
<input type="text" id="inputLine" />
</div>
</div>
<script>
function isMobileDevice() {
const userAgent = navigator.userAgent || navigator.vendor || window.opera;
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent);
}
const terminal = document.getElementById('terminal');
const inputArea = document.getElementById('inputArea');
const inputLine = document.getElementById('inputLine');
let files = {
"welcome.txt": "Hello there",
};
let commandHistory = [];
let historyIndex = 0;
function appendToTerminal(text) {
const content = document.createElement('div');
content.innerHTML = text;
terminal.insertBefore(content, inputArea);
terminal.scrollTop = terminal.scrollHeight;
}
function clearTerminal() {
while (terminal.firstChild !== inputArea) {
terminal.removeChild(terminal.firstChild);
}
}
function processCommand(input) {
appendToTerminal(`<span style="color: lightgreen;">root@draker:~$</span> ${input}`);
if (input) {
const args = input.split(' ');
const command = args[0];
switch (command) {
case 'ls':
appendToTerminal(Object.keys(files).join(' '));
break;
case 'cat':
if (args.length < 2) {
appendToTerminal('Usage: cat <filename>');
} else {
const fileName = args[1];
if (files[fileName]) {
appendToTerminal(files[fileName]);
} else {
appendToTerminal(`cat: ${fileName}: No such file or directory`);
}
}
break;
case 'help':
appendToTerminal('Commands: ls, cat, help, clear');
break;
case 'clear':
clearTerminal();
break;
default:
appendToTerminal(`${command}: command not found`);
break;
}
commandHistory.push(input);
historyIndex = commandHistory.length;
}
appendToTerminal(''); // Ensure a new line is added for empty input
}
function autocompleteInput() {
const currentInput = inputLine.value;
const args = currentInput.split(' ');
const partialInput = args[args.length - 1];
const matchi
Open service 104.21.22.208:80 · draker.no
2026-01-25 20:16
HTTP/1.1 301 Moved Permanently
Date: Sun, 25 Jan 2026 20:16:16 GMT
Content-Length: 0
Connection: close
Location: https://draker.no/
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=Qpu7jAYGvfOR7wh5b9hdr6ZFJr7tzrwVz0QyT9evlSAMa6AuTjYR3AgVJK684GZSaxATgcz4bJ1bPWMJHgCzkDqWFpS7sGQ%2BjQ%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
X-Content-Type-Options: nosniff
cf-cache-status: DYNAMIC
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=15,cfOrigin;dur=7
CF-RAY: 9c3a72894898f46c-YYZ
alt-svc: h3=":443"; ma=86400
Open service 2606:4700:3037::ac43:cf17:8443 · draker.no
2026-01-25 20:16
HTTP/1.1 200 OK
Date: Sun, 25 Jan 2026 20:16:16 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=12,cfOrigin;dur=56
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=1PHJVdZQhMZccl7WJFjNp49j3G87LmkuXkYfA%2Fx8%2F062YR%2FkecHV%2BW8dwfA%2BH4JgGeFnM9SNNqeR1daucUyz7t%2FUX%2ButzPTRuehyvcIlSXzPtANkRA%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Strict-Transport-Security: max-age=15552000; preload
cf-cache-status: DYNAMIC
CF-RAY: 9c3a7289bffaac2e-YYZ
alt-svc: h3=":8443"; ma=86400
Page title: Draker.no
<!DOCTYPE html>
<html>
<head>
<title>Draker.no</title>
<style>
body {
background-color: black;
color: white;
font-family: monospace;
margin: 0;
padding: 0;
}
#terminal {
width: 100%;
height: 90vh;
padding: 10px;
box-sizing: border-box;
font-size: 16px;
background-color: black;
color: white;
overflow-y: auto;
display: flex;
flex-direction: column;
}
#inputArea {
display: flex;
align-items: center;
flex-shrink: 0;
}
#prompt {
color: lightgreen;
margin-right: 5px;
white-space: pre;
}
#inputLine {
flex-grow: 1;
background-color: black;
color: white;
border: none;
outline: none;
font-family: monospace;
font-size: 16px;
}
</style>
</head>
<body>
<div id="terminal">
<div id="inputArea">
<span id="prompt">root@draker:~$</span>
<input type="text" id="inputLine" />
</div>
</div>
<script>
function isMobileDevice() {
const userAgent = navigator.userAgent || navigator.vendor || window.opera;
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent);
}
const terminal = document.getElementById('terminal');
const inputArea = document.getElementById('inputArea');
const inputLine = document.getElementById('inputLine');
let files = {
"welcome.txt": "Hello there",
};
let commandHistory = [];
let historyIndex = 0;
function appendToTerminal(text) {
const content = document.createElement('div');
content.innerHTML = text;
terminal.insertBefore(content, inputArea);
terminal.scrollTop = terminal.scrollHeight;
}
function clearTerminal() {
while (terminal.firstChild !== inputArea) {
terminal.removeChild(terminal.firstChild);
}
}
function processCommand(input) {
appendToTerminal(`<span style="color: lightgreen;">root@draker:~$</span> ${input}`);
if (input) {
const args = input.split(' ');
const command = args[0];
switch (command) {
case 'ls':
appendToTerminal(Object.keys(files).join(' '));
break;
case 'cat':
if (args.length < 2) {
appendToTerminal('Usage: cat <filename>');
} else {
const fileName = args[1];
if (files[fileName]) {
appendToTerminal(files[fileName]);
} else {
appendToTerminal(`cat: ${fileName}: No such file or directory`);
}
}
break;
case 'help':
appendToTerminal('Commands: ls, cat, help, clear');
break;
case 'clear':
clearTerminal();
break;
default:
appendToTerminal(`${command}: command not found`);
break;
}
commandHistory.push(input);
historyIndex = commandHistory.length;
}
appendToTerminal(''); // Ensure a new line is added for empty input
}
function autocompleteInput() {
const currentInput = inputLine.value;
const args = currentInput.split(' ');
const partialInput = args[args.length - 1];
const matchi
Open service 2606:4700:3032::6815:16d0:80 · draker.no
2026-01-25 20:16
HTTP/1.1 301 Moved Permanently
Date: Sun, 25 Jan 2026 20:16:16 GMT
Content-Length: 0
Connection: close
Location: https://draker.no/
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=3OBI82wmcL3ayurcc5TgQeHB5EDWAqdCfZwgH3Ket8aPA%2F2BFa1Fdoyh4XZuaDWfm2lEOZHRM3zwZgw9BlyttUyI1S5%2BF4VizW%2BihgrFIgbR%2BvzlBA%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
X-Content-Type-Options: nosniff
cf-cache-status: DYNAMIC
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=16,cfOrigin;dur=6
CF-RAY: 9c3a72894e61ebb9-YYZ
alt-svc: h3=":443"; ma=86400
Open service 2606:4700:3032::6815:16d0:8443 · draker.no
2026-01-25 20:16
HTTP/1.1 200 OK
Date: Sun, 25 Jan 2026 20:16:16 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=10,cfOrigin;dur=40
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=Ob98K7L38FZS%2Bl1kcZbSy0MhPjVB%2BHe6VdjbAfb0D%2B9Rrl1eLt%2BjVe6t%2F3%2FPo5CZJCunsgry7KKG0g5HIwLcWc93Yg3aaG9rfb5dTpHy8bOOkJHHPA%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Strict-Transport-Security: max-age=15552000; preload
cf-cache-status: DYNAMIC
CF-RAY: 9c3a7289af64ade0-YYZ
alt-svc: h3=":8443"; ma=86400
Page title: Draker.no
<!DOCTYPE html>
<html>
<head>
<title>Draker.no</title>
<style>
body {
background-color: black;
color: white;
font-family: monospace;
margin: 0;
padding: 0;
}
#terminal {
width: 100%;
height: 90vh;
padding: 10px;
box-sizing: border-box;
font-size: 16px;
background-color: black;
color: white;
overflow-y: auto;
display: flex;
flex-direction: column;
}
#inputArea {
display: flex;
align-items: center;
flex-shrink: 0;
}
#prompt {
color: lightgreen;
margin-right: 5px;
white-space: pre;
}
#inputLine {
flex-grow: 1;
background-color: black;
color: white;
border: none;
outline: none;
font-family: monospace;
font-size: 16px;
}
</style>
</head>
<body>
<div id="terminal">
<div id="inputArea">
<span id="prompt">root@draker:~$</span>
<input type="text" id="inputLine" />
</div>
</div>
<script>
function isMobileDevice() {
const userAgent = navigator.userAgent || navigator.vendor || window.opera;
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent);
}
const terminal = document.getElementById('terminal');
const inputArea = document.getElementById('inputArea');
const inputLine = document.getElementById('inputLine');
let files = {
"welcome.txt": "Hello there",
};
let commandHistory = [];
let historyIndex = 0;
function appendToTerminal(text) {
const content = document.createElement('div');
content.innerHTML = text;
terminal.insertBefore(content, inputArea);
terminal.scrollTop = terminal.scrollHeight;
}
function clearTerminal() {
while (terminal.firstChild !== inputArea) {
terminal.removeChild(terminal.firstChild);
}
}
function processCommand(input) {
appendToTerminal(`<span style="color: lightgreen;">root@draker:~$</span> ${input}`);
if (input) {
const args = input.split(' ');
const command = args[0];
switch (command) {
case 'ls':
appendToTerminal(Object.keys(files).join(' '));
break;
case 'cat':
if (args.length < 2) {
appendToTerminal('Usage: cat <filename>');
} else {
const fileName = args[1];
if (files[fileName]) {
appendToTerminal(files[fileName]);
} else {
appendToTerminal(`cat: ${fileName}: No such file or directory`);
}
}
break;
case 'help':
appendToTerminal('Commands: ls, cat, help, clear');
break;
case 'clear':
clearTerminal();
break;
default:
appendToTerminal(`${command}: command not found`);
break;
}
commandHistory.push(input);
historyIndex = commandHistory.length;
}
appendToTerminal(''); // Ensure a new line is added for empty input
}
function autocompleteInput() {
const currentInput = inputLine.value;
const args = currentInput.split(' ');
const partialInput = args[args.length - 1];
const matchi
Open service 172.67.207.23:443 · draker.no
2026-01-25 20:16
HTTP/1.1 200 OK
Date: Sun, 25 Jan 2026 20:16:16 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
cf-cache-status: DYNAMIC
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=Cw31%2FeemjP4mzPr6e%2B3tZvPjNt6l5Tcuk%2B3fPGs8qWtm6G9vOqek%2BYUUzPI84hKxG1QTfDj%2BWBd0robg3D4Vw8NXfPrxdzxM5g%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Strict-Transport-Security: max-age=15552000; preload
CF-RAY: 9c3a72892b0f2151-AMS
alt-svc: h3=":443"; ma=86400
Page title: Draker.no
<!DOCTYPE html>
<html>
<head>
<title>Draker.no</title>
<style>
body {
background-color: black;
color: white;
font-family: monospace;
margin: 0;
padding: 0;
}
#terminal {
width: 100%;
height: 90vh;
padding: 10px;
box-sizing: border-box;
font-size: 16px;
background-color: black;
color: white;
overflow-y: auto;
display: flex;
flex-direction: column;
}
#inputArea {
display: flex;
align-items: center;
flex-shrink: 0;
}
#prompt {
color: lightgreen;
margin-right: 5px;
white-space: pre;
}
#inputLine {
flex-grow: 1;
background-color: black;
color: white;
border: none;
outline: none;
font-family: monospace;
font-size: 16px;
}
</style>
</head>
<body>
<div id="terminal">
<div id="inputArea">
<span id="prompt">root@draker:~$</span>
<input type="text" id="inputLine" />
</div>
</div>
<script>
function isMobileDevice() {
const userAgent = navigator.userAgent || navigator.vendor || window.opera;
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent);
}
const terminal = document.getElementById('terminal');
const inputArea = document.getElementById('inputArea');
const inputLine = document.getElementById('inputLine');
let files = {
"welcome.txt": "Hello there",
};
let commandHistory = [];
let historyIndex = 0;
function appendToTerminal(text) {
const content = document.createElement('div');
content.innerHTML = text;
terminal.insertBefore(content, inputArea);
terminal.scrollTop = terminal.scrollHeight;
}
function clearTerminal() {
while (terminal.firstChild !== inputArea) {
terminal.removeChild(terminal.firstChild);
}
}
function processCommand(input) {
appendToTerminal(`<span style="color: lightgreen;">root@draker:~$</span> ${input}`);
if (input) {
const args = input.split(' ');
const command = args[0];
switch (command) {
case 'ls':
appendToTerminal(Object.keys(files).join(' '));
break;
case 'cat':
if (args.length < 2) {
appendToTerminal('Usage: cat <filename>');
} else {
const fileName = args[1];
if (files[fileName]) {
appendToTerminal(files[fileName]);
} else {
appendToTerminal(`cat: ${fileName}: No such file or directory`);
}
}
break;
case 'help':
appendToTerminal('Commands: ls, cat, help, clear');
break;
case 'clear':
clearTerminal();
break;
default:
appendToTerminal(`${command}: command not found`);
break;
}
commandHistory.push(input);
historyIndex = commandHistory.length;
}
appendToTerminal(''); // Ensure a new line is added for empty input
}
function autocompleteInput() {
const currentInput = inputLine.value;
const args = currentInput.split(' ');
const partialInput = args[args.length - 1];
const matchi