commit f126272d7504b1becc91f542bfeb715062400984 Author: godot Date: Wed Feb 21 11:11:28 2024 +0100 found it diff --git a/0life-web-main.zip b/0life-web-main.zip new file mode 100644 index 0000000..f696f40 Binary files /dev/null and b/0life-web-main.zip differ diff --git a/50x.html b/50x.html new file mode 100644 index 0000000..a57c2f9 --- /dev/null +++ b/50x.html @@ -0,0 +1,19 @@ + + + +Error + + + +

An error occurred.

+

Sorry, the page you are looking for is currently unavailable.
+Please try again later.

+

If you are the system administrator of this resource then you should check +the error log for details.

+

Faithfully yours, nginx.

+ + diff --git a/README.md b/README.md new file mode 100644 index 0000000..798212a --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# 0life-web \ No newline at end of file diff --git a/css/card.css b/css/card.css new file mode 100644 index 0000000..4cfc255 --- /dev/null +++ b/css/card.css @@ -0,0 +1,33 @@ +/* +.card { + width: 100%; + height: 100%; + display: flex; + overflow: hidden; + /* position: relative; *//* + z-index: 1; + background-image: url(../img/planeta.jpg); + left: 0px; + top: 0px; + background-size: 100%; + background-position: 0% 0%; + opacity: 0.6; + position: absolute; + /* animation: pan-image 15s linear infinite; *//* +} +*/ +/* +.card > .card-content { + display: flex; + flex-direction: column; + align-items: center; + justify-content: flex-end; + gap: 4rem; + position: relative; + z-index: 10; + margin: 0rem; + padding-bottom: 6rem; + border-radius: 0.6rem; + flex-grow: 1; +} + diff --git a/css/doc.css b/css/doc.css new file mode 100644 index 0000000..53d90bc --- /dev/null +++ b/css/doc.css @@ -0,0 +1,15 @@ +.nav > #doc { + background-color: rgb(var(--primary-rgb)); + border-color: rgb(var(--secondary-rgb)); + flex-grow: 4; + width: 90%; + border-right-width: 0px; + font-size: 140%; + } + + +.nav > #doc:hover { + flex-grow: 5; + width: 100%; + } + \ No newline at end of file diff --git a/css/interview.css b/css/interview.css new file mode 100644 index 0000000..8698bfc --- /dev/null +++ b/css/interview.css @@ -0,0 +1,14 @@ +.nav > #interview { + background-color: rgb(var(--primary-rgb)); + border-color: rgb(var(--secondary-rgb)); + flex-grow: 4; + width: 90%; + border-right-width: 0px; + font-size: 140%; +} + +.nav > #interview:hover { + flex-grow: 5; + width: 100%; + } + \ No newline at end of file diff --git a/css/life.css b/css/life.css new file mode 100644 index 0000000..e6f995c --- /dev/null +++ b/css/life.css @@ -0,0 +1,147 @@ +/* NAV */ + +.nav > #life { + background-color: rgb(var(--primary-rgb)); + border-color: rgb(var(--secondary-rgb)); + flex-grow: 4; + width: 90%; + border-right-width: 0px; + font-size: 140%; +} + +.nav > #life:hover { + flex-grow: 5; + width: 100%; +} + + +/* DOCS */ + +.content > #Doc{ + background-color: rgb(var(--background-rgb)); + background-image: url(../img/sky.jpeg); + background-size: cover; + height: 100vh; +} + +.content > #Doc > .fade { + background-image: radial-gradient(rgba(0,0,0,0) 50%, black); + height: 100%; + width: 100%; +} + +.content > #Doc > .fade > .star { + background-image: url(../img/star.png); + background-size: cover; + + width: 100px; /* potřeba udělat relativni vůči stránce */ + height: 100px; + position: absolute; +} + +#Doc > .fade > #phrack{ + margin-top: 10vh; + margin-left: 40vw; +} + +#Doc > .fade > #Secrets{ + margin-top: 30vh; + margin-left: 15vw; +} + +#Doc > .fade > #HTB{ + margin-top: 40vh; + margin-left: 65vw; + } + +#Doc > .fade > #bin{ + margin-top: 60vh; + margin-left: 20vw; +} + +#Doc > .fade > #archive{ + margin-top: 70vh; + margin-left: 25vw; +} + +#Doc > .fade > #fingerprint{ + margin-top: 80vh; + margin-left: 55vw; +} + + +/* TERMINAL */ + +.content > #terminal { + background-color: rgb(var(--background-rgb)); + display: flex; + justify-content: center; + justify-items: center; + flex-wrap: wrap; +} + +.content > #terminal > .block { + background-color: rgb(var(--secondary-background-rgb)); + margin: 20px; + overflow: auto; + height: 100vh; + + resize: both; + width: 100%; + overflow: auto; + + border-style: solid; + border-width: 15px; + border-color: rgb(var(--secondary-rgb)); + border-radius: 15px; + + text-align: left; + + justify-content: center; +} + +.content > #terminal > .block > p { + color: rgb(var(--detail-rgb)); + margin: 10px; + font-family: "Source Code Pro", monospace; +} + +.content > #terminal > .block > p > b{ + color: rgb(var(--primary-rgb)); + +} + +.content > #terminal > .block > .neofetch { + display: flex; + flex-wrap: wrap; +} + +.neofetch > .logo { + white-space: pre; + color: rgb(var(--primary-rgb)); + margin: 10px; + font-family: "Source Code Pro", monospace; + font-weight: bold; + width: auto; + height: auto; +} + +.neofetch > .text { + color: rgb(var(--detail-rgb)); + margin: 10px; + font-family: "Source Code Pro", monospace; + width: auto; + height: auto; +} + +.neofetch > .text > b { + color: rgb(var(--primary-rgb)); + font-family: "Source Code Pro", monospace; +} + +#terminal > .block > table { + color: rgb(var(--detail-rgb)); + margin: 10px; +} + + diff --git a/css/login.css b/css/login.css new file mode 100644 index 0000000..5c88c32 --- /dev/null +++ b/css/login.css @@ -0,0 +1,14 @@ +.nav > #login { + background-color: rgb(var(--primary-rgb)); + border-color: rgb(var(--secondary-rgb)); + flex-grow: 4; + width: 90%; + border-right-width: 0px; + font-size: 140%; +} + +.nav > #login:hover { + flex-grow: 5; + width: 100%; + } + \ No newline at end of file diff --git a/css/main.css b/css/main.css new file mode 100644 index 0000000..0f1fcb6 --- /dev/null +++ b/css/main.css @@ -0,0 +1,191 @@ +:root { + --background-rgb: 0 0 0; + --secondary-background-rgb: 60 60 60; + + + /*--primary-rgb: 0 158 0; /* green */ + --primary-rgb: 33 150 243; /* blue */ + + /*--secondary-rgb: 0 85 102; /* petroley-blue */ + /*--secondary-rgb: 59 83 102; /* dark-blue */ + --secondary-rgb: 22 50 102; /* darker-blue */ + + --detail-rgb: 255 255 255; /* white */ + +} + +body { + background-color: rgb(var(--background-rgb)); + margin: 0; +} + + +/* Navigation */ + +.nav { + position: fixed; + left: auto; + right: 0px; + height: 50%; + width: 10%; + z-index: 7; + display: flex; + flex-direction: column; + justify-content: space-evenly; + align-items: flex-end; +} + +.nav > .nav-gap { + flex-grow: 1; + background-color: none; +} + +.nav > .nav-flag { + background-color: rgb(var(--detail-rgb)); + border-color: rgb(var(--detail-rgb)); + border-top-left-radius: 15px; + border-bottom-left-radius: 15px; + border-width: 5px; + border-style:solid; + + flex-grow: 2; + display: flex; + justify-content: center; + align-items: center; + + color: black; + text-decoration: none; + width: 70%; + font-family: "Source Code Pro", monospace; + font-size: fill; + + transition: + border-color 0.3s, + border-width 0.3s, + border-right-width 0.3s, + flex-grow 0.3s, + font-size 0.3s, + width 0.3s; +} + +.nav > .nav-flag:hover { + border-color: rgb(var(--secondary-rgb)); + border-width: 10px; + border-right-width: 0px; + flex-grow: 5; + font-size: 140%; + width: 100%; +} + + + +/* Content */ + +.content { + z-index: 1; + overflow: auto; + position: relative; + display: flex; + flex-direction: column; + justify-content: flex-start; + scroll-snap-align: x mandatory; +} + +.content > .card { + display: flex; + position: relative; + flex-basis: 100vh; + scroll-snap-align: center; +} + +.content:after, +.content:before { + content: ""; + height: 5px; + position: absolute; + left: 50%; + translate: -50% 0%; + background-color: rgb(var(--primary-rgb)); + z-index: 5; +} + +.content::before { + width: 15%; + top: 0rem; + border-bottom-left-radius: 1rem; + border-bottom-right-radius: 1rem; +} + +.content:after { + width: 25%; + bottom: 0rem; + border-top-left-radius: 1rem; + border-top-right-radius: 1rem; +} + + +/* Life */ + +.content > #life { + top: 0px; + left: 0px; + flex-direction: column; + align-items: center; + justify-content: center; + flex-grow: 1; + padding: 1rem; + z-index: 2; + background: linear-gradient(rgba(255, 0, 0, 0)40%, rgb(var(--primary-rgb))); +} + +.content > #life > #planet { + position: absolute; + width: 100%; + height: 100%; + background-image: url(../img/planeta.png); + background-size: cover; + z-index: 1; +} + +#life > .magic, +#life > .link { + font-family: "Source Code Pro", monospace; + color: rgb(var(--detail-rgb)); + text-align: center; + text-transform: uppercase; + z-index: 7; +} + +#life > .magic { + position: relative; + font-size: 4.25rem; + font-weight: 400; +} + +#life > .magic:before, +#life > .magic:after { + content: ""; + height: 4px; + width: 4px; + position: absolute; + border: 2px solid rgb(var(--detail-rgb)); + border-radius: 2px; +} + +#life > .magic:before { + top: 45%; + right: -1.5rem; +} + +#life > .magic:after { + top: 45%; + left: -1.5rem; +} + +#life > .link { + font-size: 1.5rem; + text-shadow: 0px 0px 0.5rem rgb(var(--detail-rgb)); + font-weight: 400; + letter-spacing: 0.3rem; + text-decoration: none; +} diff --git a/css/reborn.css b/css/reborn.css new file mode 100644 index 0000000..8a073bd --- /dev/null +++ b/css/reborn.css @@ -0,0 +1,14 @@ +.nav > #reborn { + background-color: rgb(var(--primary-rgb)); + border-color: rgb(var(--secondary-rgb)); + flex-grow: 4; + width: 90%; + border-right-width: 0px; + font-size: 140%; +} + +.nav > #reborn:hover { + flex-grow: 5; + width: 100%; + } + \ No newline at end of file diff --git a/css/screen.css b/css/screen.css new file mode 100644 index 0000000..7062daf --- /dev/null +++ b/css/screen.css @@ -0,0 +1,310 @@ +/* +.screen { + width: 100vw; + height: 100vh; + display: flex; + border: 3px solid rgb(var(--primary-rgb) / 80%); + /*aspect-ratio: 10 / 16;*//* + border-radius: 1rem; + background-color: rgb(var(--primary-rgb) / 15%); + overflow: hidden; + position: relative; + z-index: 10; +} +*/9/* +.screen:after, +.screen:before { + content: ""; + height: 5px; + position: absolute; + z-index: 4; + left: 50%; + translate: -50% 0%; + background-color: white; +} + +.screen:before { + width: 15%; + top: 0rem; + border-bottom-left-radius: 1rem; + border-bottom-right-radius: 1rem; +} + +.screen:after { + width: 25%; + bottom: 0rem; + border-top-left-radius: 1rem; + border-top-right-radius: 1rem; +}*/ + +@keyframes pan-overlay { + from { + background-position: 0% 0%; + } + + to { + background-position: 0% -100%; + } +} +/* +.screen-overlay { + background: linear-gradient( + rgb(var(--primary-rgb) / 0.15), + rgb(var(--primary-rgb) / 0.15) 3px, + transparent 3px, + transparent 9px + ); + background-size: 100% 9px; + height: 100%; + width: 100%; + animation: pan-overlay 22s infinite linear; + position: absolute; + z-index: 2; + left: 0px; + top: 0px; +}*/ + +@keyframes pan-image { + 0% { + background-position: 36% 42%; + background-size: 200%; + } + + 20% { + background-position: 30% 35%; + background-size: 200%; + } + + 20.0001% { /* -- View 2 -- */ + background-position: 60% 85%; + background-size: 500%; + } + + 40% { + background-position: 49% 81%; + background-size: 500%; + } + + 40.0001% { /* -- View 3 -- */ + background-position: 80% 42%; + background-size: 300%; + } + + 60% { + background-position: 84% 33%; + background-size: 300%; + } + + 60.0001% { /* -- View 4 -- */ + background-position: 0% 0%; + background-size: 300%; + } + + 80% { + background-position: 15% 4%; + background-size: 300%; + } + + 80.0001% { /* -- View 5 -- */ + background-position: 80% 10%; + background-size: 300%; + } + + 100% { + background-position: 72% 14%; + background-size: 300%; + } +} +/* +.screen > .screen-image { + background-image: url("https://images.unsplash.com/photo-1515266591878-f93e32bc5937?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=2574&q=80"); + height: 100%; + width: 100%; + position: absolute; + z-index: 1; + left: 0px; + top: 0px; + background-size: 300%; + background-position: 0% 0%; + filter: sepia(100%) hue-rotate(160deg); + opacity: 0.6; + animation: pan-image 15s linear infinite; +} +*//* +.screen > .screen-content { + display: flex; + flex-direction: column; + align-items: center; + justify-content: flex-end; + flex-grow: 1; + gap: 4rem; + position: relative; + z-index: 3; + margin: 1rem; + padding-bottom: 6rem; + border: 1px solid rgb(var(--primary-rgb) / 50%); + border-radius: 0.6rem; +}*/ + +.screen > .screen-content > .screen-icon { + color: white; + font-size: 4rem; + text-shadow: 0px 0px 0.5rem white; +} + +.screen > .screen-content > .screen-user{ + display: flex; + flex-direction: column; + align-items: center; + gap: 1rem; + position: relative; +} + +.screen > .screen-content > .screen-user:before, +.screen > .screen-content > .screen-user:after { + content: ""; + position: absolute; + top: 0px; + background-color: rgb(var(--primary-rgb)); + border-radius: 1rem; + box-shadow: 0px 0px 8px 3px rgb(var(--primary-rgb) / 60%); +} + +.screen > .screen-content > .screen-user:before { + height: 2px; + width: 50px; + translate: -20px -1rem; + opacity: 0.75; +} + +.screen > .screen-content > .screen-user:after { + height: 3px; + width: 30px; + translate: 26px calc(-1rem - 0.5px); +} + +.screen > .screen-content > .screen-user > :is(.name, .link) { + font-family: "Source Code Pro", monospace; + color: white; + text-align: center; + text-transform: uppercase; +} + +.screen > .screen-content > .screen-user > .name { + position: relative; + font-size: 4.25rem; + font-weight: 400; +} + +.screen > .screen-content > .screen-user > .name:before, +.screen > .screen-content > .screen-user > .name:after { + content: ""; + height: 4px; + width: 4px; + position: absolute; + border: 2px solid white; + border-radius: 2px; +} + +.screen > .screen-content > .screen-user > .name:before { + top: 45%; + right: -1.5rem; +} + +.screen > .screen-content > .screen-user > .name:after { + top: 45%; + left: -1.5rem; +} + +.screen > .screen-content > .screen-user > .link { + opacity: 0.8; + font-size: 1.5rem; + text-shadow: 0px 0px 0.5rem white; + font-weight: 400; + letter-spacing: 0.3rem; + text-decoration: none; +} + +.screen > .screen-content > .screen-user > .link:is(:hover, :focus) { + text-decoration: underline; +} + +@media(max-width: 700px) { + .screen { + scale: 0.6; + margin-bottom: 0rem; + } +} + +/* -- Blob effect -- + +@keyframes rotate { + from { + rotate: 0deg; + } + + 50% { + scale: 1 1.5; + } + + to { + rotate: 360deg; + } +} + +*//* -- Links -- + +#links { + display: flex; + flex-direction: column; + gap: 0.5rem; + position: absolute; + top: 0px; + left: 0px; + z-index: 10; + padding: 1rem; +} + +.meta-link { + display: flex; + align-items: center; + gap: 0.5rem; +} + +.meta-link > :is(span, a) { + font-family: "Rubik", sans-serif; + font-size: 0.9rem; + color: white; +} + +.meta-link > .label { + width: 160px; + text-align: right; +} + +.meta-link > a { + text-decoration: none; + outline: none; +} + +.meta-link > a.source { + color: rgb(94, 106, 210); +} + +.meta-link > a:is(:hover, :focus) > i { + color: white; +} + +.meta-link > a.youtube { + color: rgb(239, 83, 80); +} + +.meta-link > a.youtube > i { + padding-top: 0.2rem; +} + +.meta-link > a > i { + height: 1rem; + line-height: 1rem; +} + diff --git a/css/style.css b/css/style.css new file mode 100644 index 0000000..78a5258 --- /dev/null +++ b/css/style.css @@ -0,0 +1,131 @@ +body { + margin: 0; + padding: 15px 20px; + min-height: 99%; + width: 100%; + min-width: 550px; + color: #519975; + background: #211D1B; + font-family: cursor, monospace; + overflow-x: hidden; + } + ::selection { + color: #211830; + background-color: #519975; + } + ::-moz-selection { + color: #211830; + background-color: #519975; + } + textarea { + left: -1000px; + position: absolute; + } + b { + font-weight: bold; + text-decoration: underline; + } + /* Cursor Start */ + .cursor { + font-size: 12px; + color: #73ABAD; + background-color: #73ABAD; + position: relative; + opacity: 1; + height: 1.5em; + width: 10px; + max-width: 10px; + transform: translateY(4px); + overflow: hidden; + text-indent: -5px; + display: inline-block; + text-decoration: blink; + animation: blinker 1s linear infinite; + } + @keyframes blinker { + 50% { + opacity: 0; + } + } + #command { + cursor: text; + height: 50px; + color: #73ABAD; + } + #liner { + line-height: 1.3em; + margin-top: -2px; + animation: show 0.5s ease forwards; + animation-delay: 1.2s; + opacity: 0; + } + #liner::before { + color: #519975; + content: "visitor@fkcodes.com:~$"; + } + #liner.password::before { + content: "Password:"; + } + @keyframes show { + from { + opacity: 0; + } + to { + opacity: 1; + } + } + /* Cursor End */ + p { + display: block; + line-height: 1.3em; + margin: 0; + overflow: hidden; + white-space: nowrap; + margin: 0; + letter-spacing: 0.05em; + animation: typing 0.5s steps(30, end); + } + .no-animation { + animation: typing 0 steps(30, end); + } + .margin { + margin-left: 20px; + } + @keyframes typing { + from { + width: 0; + } + to { + width: 100%; + } + } + .index { + color: #DCDCCC; + } + .color2 { + color: #B89076; + } + .command { + color: #73ABAD; + text-shadow: 0 0 5px #73ABAD; + } + .error { + color: #B89076; + } + .white { + color: #fff; + } + .inherit, + a { + color: #9C8394; + } + a { + text-decoration: inherit; + } + a:hover { + background: #73ABAD; + color: #211830; + } + a:focus { + outline: 0; + } \ No newline at end of file diff --git a/css/terminal.css b/css/terminal.css new file mode 100644 index 0000000..eb8755e --- /dev/null +++ b/css/terminal.css @@ -0,0 +1,14 @@ +.nav > #terminal { + background-color: rgb(var(--primary-rgb)); + border-color: rgb(var(--secondary-rgb)); + flex-grow: 4; + width: 90%; + border-right-width: 0px; + font-size: 140%; +} + +.nav > #terminal:hover { + flex-grow: 5; + width: 100%; + } + \ No newline at end of file diff --git a/doc.html b/doc.html new file mode 100644 index 0000000..6246b65 --- /dev/null +++ b/doc.html @@ -0,0 +1,64 @@ + + + + + + Life Reborn + + + + + + + + + + + + + + + + + + +
+
+
+
Documentation
+ REBORN +
+ +
Doc
+ +
WhoAmI
+ +
Interview
+ +
Login
+ +
+ + + + + + + + + + + diff --git a/img/fav.png b/img/fav.png new file mode 100644 index 0000000..7b63927 Binary files /dev/null and b/img/fav.png differ diff --git a/img/planeta.jpg b/img/planeta.jpg new file mode 100644 index 0000000..7922838 Binary files /dev/null and b/img/planeta.jpg differ diff --git a/img/planeta.png b/img/planeta.png new file mode 100644 index 0000000..e9213ff Binary files /dev/null and b/img/planeta.png differ diff --git a/img/sky.jpeg b/img/sky.jpeg new file mode 100644 index 0000000..bfc08a2 Binary files /dev/null and b/img/sky.jpeg differ diff --git a/img/star.jpeg b/img/star.jpeg new file mode 100644 index 0000000..ad41c19 Binary files /dev/null and b/img/star.jpeg differ diff --git a/img/star.png b/img/star.png new file mode 100644 index 0000000..be3126c Binary files /dev/null and b/img/star.png differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..ed35f24 --- /dev/null +++ b/index.html @@ -0,0 +1,150 @@ + + + + + + Life Reborn + + + + + + + + + + + + + + + + + + +
+
+
+
0-LIFE
+ REBORN +
+ + + +
+
+

gest@web ~$ whoami

+

R4ND0M

+

gest@web ~$ neofetch

+
+
+gest@web
+---------------
+OS: Arch Linux x86_64
+Host: HP Pav Gaming Laptop 16-a0900nc
+Kernel: 6.01.0-19-amd64
+Uptime: 37 mins
+Packages: 1932 (pacman), 45 (nix-default)
+Shell: bash 5.2.15
+Resolution: 1920x1080
+DE: Xfce 4.18
+WM: Xfwm4
+WM Theme: Default
+Theme: Peppermint-10-Red-Dark [GTK2/3]
+Icons: Pepirus [GTK2], Adwaita [GTK3]
+Terminal: xfce4-terminal
+Terminal Font: Source Code Pro 10
+CPU: Intel i5-10300H (8) @ 4.500GHz
+GPU: NVIDIA 01:00.0 NVIDIA Corporation TU117M
+GPU: Intel CometLake-H GT2 [UHD Graphics]
+Memory: 4677MiB / 15780MiB
+ +
+ +

gest@web ~$ cd Documents/

+

gest@web ~/Documents$ ls -la

+ + + + + + + + + + + + + +
total 16720
drwxr-xr-x12R4ND0MR4ND0M40967.kvě08.24.
drwxr-xr-x30R4ND0MR4ND0M409615.kvě19.31..
drwxrwxrwx8R4ND0MR4ND0M409615.kvě00.050life
-rwxrwxrwx1B1tR4ND0M1206710.led2022bye.md
-rwxrwxrwx1R4ND0MR4ND0M180906.kvě2021logs.xlsx
drwxr-xr-x2R4ND0MR4ND0M40967.bře15.46Conti-fuck
drwxrwxrwx3R4ND0MR4ND0M409626.úno13.03thx-bro
drwxr-xr-x2R4ND0MR4ND0M40965.bře10.22Nix
-rwxr--r--1R4ND0MR4ND0M158445447.kvě08.24nvim.appimage
-rwxrwxrwx1R4ND0MR4ND0M3423.pro21.00poznamky.txt.txt
-rwxrwxrwx1R4ND0MR4ND0M990015.lis22.24'WaterZebraBakery(20).txt'
+ +

gest@web ~/Documents$ cd 0life/

+

bash: cd: 0life. Permission denied. Type "help" for more information

+ +
+
+ + + +
+
+ + + + + + +
+
+ + + +
Interview
+ +
Login
+ +
+ + + + + + + + + + + diff --git a/interview.html b/interview.html new file mode 100644 index 0000000..915c269 --- /dev/null +++ b/interview.html @@ -0,0 +1,64 @@ + + + + + + Life Reborn + + + + + + + + + + + + + + + + + + +
+
+
+
Interview
+ REBORN +
+ +
Doc
+ +
WhoAmI
+ +
Interview
+ +
Login
+ +
+ + + + + + + + + + + diff --git a/js/caret.js b/js/caret.js new file mode 100644 index 0000000..c5112b2 --- /dev/null +++ b/js/caret.js @@ -0,0 +1,38 @@ +function $(elid) { + return document.getElementById(elid); + } + +var cursor; +window.onload = init; + +function init() { + cursor = $("cursor"); + cursor.style.left = "0px"; +} + +function nl2br(txt) { + return txt.replace(/\n/g, ''); +} + +function typeIt(from, e) { + e = e || window.event; + var w = $("typer"); + var tw = from.value; + if (!pw){ + w.innerHTML = nl2br(tw); + } +} + +function moveIt(count, e) { + e = e || window.event; + var keycode = e.keyCode || e.which; + if (keycode == 37 && parseInt(cursor.style.left) >= (0 - ((count - 1) * 10))) { + cursor.style.left = parseInt(cursor.style.left) - 10 + "px"; + } else if (keycode == 39 && (parseInt(cursor.style.left) + 10) <= 0) { + cursor.style.left = parseInt(cursor.style.left) + 10 + "px"; + } +} + +function alert(txt) { + console.log(txt); +} \ No newline at end of file diff --git a/js/commands.js b/js/commands.js new file mode 100644 index 0000000..d946436 --- /dev/null +++ b/js/commands.js @@ -0,0 +1,87 @@ +var youtube = "https://www.youtube.com/fknight/"; +var twitter = "https://www.twitter.com/forrestpknight/"; +var password = "fkcodes"; +var linkedin = "https://www.linkedin.com/in/forrestpknight/"; +var instagram = "https://www.instagram.com/forrestpknight/"; +var github = "https://github.com/forrestknight/"; +var email = 'mailto:forrest@fkcodes.com'; + +whois = [ + "
", + "Hey, I'm Forrest!👋", + "I'm a software developer and content creator, who builds engaging websites like this one", + "and makes YouTube videos about computer science & software engineering.", + "After graduating with a Bachelor's in Computer Science, I worked professionally", + "as a software engineer building enterprise web applications for Fortune 500 companies.", + "While doing all of that, I documentned my coding journey on YouTube - trying to enlighten", + "the next generation of developers and help them navigate the crazy world that is software", "development & computer science.", + "Before I knew it, that online presence took on a life of its own, to the point where I knew", + "I needed to make the jump from software engineering to full time content creator, and it's", + "the best decision I ever made.", + "Now, I make videos about creating cool shit like this terminal website, and hosting my", + "podcast 'Decoded w/ Forrest Knight.' What most people don't know, and will only know", + "because they're reading this right now, is that I also run a creative & media agency.", + "We partner with clients to drive their business outcomes using modern marketing strategies.", + "
" +]; + +whoami = [ + "
", + "The paradox of “Who am I?” is: we never know, but, we constantly find out.", + "
" +]; + +social = [ + "
", + 'youtube youtube/fknight' + "", + 'twitter twitter/forrestpknight' + '', + 'linkedin linkedin/forrestpknight' + "", + 'instagram instagram/forrestpknight' + '', + 'github github/forrestknight' + "", + "
" +]; + +secret = [ + "
", + 'sudo Only use if you\'re admin', + "
" +]; + +projects = [ + "
", + "Still curating... most projects are offline, on GitHub, or confidential.", + "
" +]; + +help = [ + "
", + 'whois Who is Forrest?', + 'whoami Who are you?', + 'video View YouTube videos', + 'social Display social networks', + 'secret Find the password', + 'projects View coding projects', + 'history View command history', + 'help You obviously already know what this does', + 'email Do not email me', + 'clear Clear terminal', + 'banner Display the header', + "
", +]; + +banner = [ + 'ForrestKnight (FK) Not A Corporation. All knights reserved.', + " ___ ____", + " /' --;^/ ,-_\\ \\ | / ", + " / / --o\\ o-\\ \\\\ --(_)-- ", + " /-/-/|o|-|\\-\\\\|\\\\ / | \\ ______ __ __ __ _ __ __ ", + " '` ` |-| `` ' / ____/___ _____________ _____/ /_ / //_/____ (_)___ _/ /_ / /_ ", + " |-| / /_ / __ \\/ ___/ ___/ _ \\/ ___/ __/ / ,< / __ \\/ / __ `/ __ \\/ __/ ", + " |-|O / __/ / /_/ / / / / / __(__ ) /_ / /| |/ / / / / /_/ / / / / /_ ", + " |-(\\,__ /_/ \\____/_/ /_/ \\___/____/\\__/ /_/ |_/_/ /_/_/\\__, /_/ /_/\\__/ ", + " ...|-|\\--,\\_.... /____/ © 2022", + " ,;;;;;;;;;;;;;;;;;;;;;;;;,. ", + "~~,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~", + 'Welcome to my interactive web terminal.', + "For a list of available commands, type 'help'.", +]; \ No newline at end of file diff --git a/js/magic.js b/js/magic.js new file mode 100644 index 0000000..d4933f8 --- /dev/null +++ b/js/magic.js @@ -0,0 +1,32 @@ + +const letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + +let interval = null; + +const screen = document.querySelector(".magic"), + name = document.querySelector(".magic"); + +screen.onmouseenter = event => { + let iteration = 0; + + clearInterval(interval); + + interval = setInterval(() => { + name.innerText = name.innerText + .split("") + .map((letter, index) => { + if(index < iteration) { + return name.dataset.value[index]; + } + + return letters[Math.floor(Math.random() * 26)] + }) + .join(""); + + if(iteration >= name.dataset.value.length){ + clearInterval(interval); + } + + iteration += 1 / 3; + }, 30); +} \ No newline at end of file diff --git a/js/main.js b/js/main.js new file mode 100644 index 0000000..55fa30b --- /dev/null +++ b/js/main.js @@ -0,0 +1,190 @@ +var before = document.getElementById("before"); +var liner = document.getElementById("liner"); +var command = document.getElementById("typer"); +var textarea = document.getElementById("texter"); +var terminal = document.getElementById("terminal"); + +var git = 0; +var pw = false; +let pwd = false; +var commands = []; + +setTimeout(function() { + loopLines(banner, "", 80); + textarea.focus(); +}, 100); + +window.addEventListener("keyup", enterKey); + +console.log( + "%cYou hacked my password!😠", + "color: #04ff00; font-weight: bold; font-size: 24px;" +); +console.log("%cPassword: '" + password + "' - I wonder what it does?🤔", "color: grey"); + +//init +textarea.value = ""; +command.innerHTML = textarea.value; + +function enterKey(e) { + if (e.keyCode == 181) { + document.location.reload(true); + } + if (pw) { + let et = "*"; + let w = textarea.value.length; + command.innerHTML = et.repeat(w); + if (textarea.value === password) { + pwd = true; + } + if (pwd && e.keyCode == 13) { + loopLines(secret, "color2 margin", 120); + command.innerHTML = ""; + textarea.value = ""; + pwd = false; + pw = false; + liner.classList.remove("password"); + } else if (e.keyCode == 13) { + addLine("Wrong password", "error", 0); + command.innerHTML = ""; + textarea.value = ""; + pw = false; + liner.classList.remove("password"); + } + } else { + if (e.keyCode == 13) { + commands.push(command.innerHTML); + git = commands.length; + addLine("visitor@fkcodes.com:~$ " + command.innerHTML, "no-animation", 0); + commander(command.innerHTML.toLowerCase()); + command.innerHTML = ""; + textarea.value = ""; + } + if (e.keyCode == 38 && git != 0) { + git -= 1; + textarea.value = commands[git]; + command.innerHTML = textarea.value; + } + if (e.keyCode == 40 && git != commands.length) { + git += 1; + if (commands[git] === undefined) { + textarea.value = ""; + } else { + textarea.value = commands[git]; + } + command.innerHTML = textarea.value; + } + } +} + +function commander(cmd) { + switch (cmd.toLowerCase()) { + case "help": + loopLines(help, "color2 margin", 80); + break; + case "whois": + loopLines(whois, "color2 margin", 80); + break; + case "whoami": + loopLines(whoami, "color2 margin", 80); + break; + case "video": + addLine("Opening YouTube...", "color2", 80); + newTab(youtube); + break; + case "sudo": + addLine("Oh no, you're not admin...", "color2", 80); + setTimeout(function() { + window.open('https://www.youtube.com/watch?v=dQw4w9WgXcQ'); + }, 1000); + break; + case "social": + loopLines(social, "color2 margin", 80); + break; + case "secret": + liner.classList.add("password"); + pw = true; + break; + case "projects": + loopLines(projects, "color2 margin", 80); + break; + case "password": + addLine(" Lol! You're joking, right? You\'re gonna have to try harder than that!😂", "error", 100); + break; + case "history": + addLine("
", "", 0); + loopLines(commands, "color2", 80); + addLine("
", "command", 80 * commands.length + 50); + break; + case "email": + addLine('Opening mailto:forrest@fkcodes.com...', "color2", 80); + newTab(email); + break; + case "clear": + setTimeout(function() { + terminal.innerHTML = ''; + before = document.getElementById("before"); + }, 1); + break; + case "banner": + loopLines(banner, "", 80); + break; + // socials + case "youtube": + addLine("Opening YouTube...", "color2", 80); + newTab(youtube); + break; + case "twitter": + addLine("Opening Twitter...", "color2", 0); + newTab(twitter); + break; + case "linkedin": + addLine("Opening LinkedIn...", "color2", 0); + newTab(linkedin); + break; + case "instagram": + addLine("Opening Instagram...", "color2", 0); + newTab(instagram); + break; + case "github": + addLine("Opening GitHub...", "color2", 0); + newTab(github); + break; + default: + addLine("Command not found. For a list of commands, type 'help'.", "error", 100); + break; + } +} + +function newTab(link) { + setTimeout(function() { + window.open(link, "_blank"); + }, 500); +} + +function addLine(text, style, time) { + var t = ""; + for (let i = 0; i < text.length; i++) { + if (text.charAt(i) == " " && text.charAt(i + 1) == " ") { + t += "  "; + i++; + } else { + t += text.charAt(i); + } + } + setTimeout(function() { + var next = document.createElement("p"); + next.innerHTML = t; + next.className = style; + + before.parentNode.insertBefore(next, before); + + window.scrollTo(0, document.body.offsetHeight); + }, time); +} + +function loopLines(name, style, time) { + name.forEach(function(item, index) { + addLine(item, style, index * time); + }); +} diff --git a/login.html b/login.html new file mode 100644 index 0000000..aa03524 --- /dev/null +++ b/login.html @@ -0,0 +1,64 @@ + + + + + + Life Reborn + + + + + + + + + + + + + + + + + + +
+
+
+
Login
+ REBORN +
+ +
Doc
+ +
WhoAmI
+ +
Interview
+ +
Login
+ +
+ + + + + + + + + + + diff --git a/reborn.html b/reborn.html new file mode 100644 index 0000000..b53ad3b --- /dev/null +++ b/reborn.html @@ -0,0 +1,64 @@ + + + + + + Life Reborn + + + + + + + + + + + + + + + + + + +
+
+
+
Reborn
+ REBORN +
+ +
Doc
+ +
WhoAmI
+ +
Interview
+ +
Login
+ +
+ + + + + + + + + + + diff --git a/terminal.html b/terminal.html new file mode 100644 index 0000000..840a33e --- /dev/null +++ b/terminal.html @@ -0,0 +1,64 @@ + + + + + + Life Reborn + + + + + + + + + + + + + + + + + + +
+
+
+
Terminal
+ REBORN +
+ +
Doc
+ +
WhoAmI
+ +
Interview
+ +
Login
+ +
+ + + + + + + + + + +