• File: index.php
  • Full Path: /home/daemondevin/public_html/portableapps/data/portableapps/data/portableapps/data/portableapps/content/index.php
  • Date Modified: 11/23/2023 1:18 PM
  • File size: 7.49 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?php $user = posix_getpwuid(fileowner(__FILE__))["name"]; ?>
<!-- HTML HEADER -->
<!DOCTYPE html>
<html lang="en">
	<head>
		<title>~<?=$user?> on envs.net</title>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<meta name="author" content="<?=$user?>">
		<meta name="robots" content="noindex,nofollow">
		<meta name="description" content="~<?=$user?> on envs.net" />
		<meta name="keywords" content="<?=$user?>" />
		<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/scsaver@latest/src/scsaver.css" />
		<link rel="stylesheet" href="files/css/style.css" />
	</head>
	<!-- dark/light-mode -->
	<body id="body" class="dark-mode">
        <terminal id="termeditor" class="onedark"></terminal>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
        <script src="https://cdn.jsdelivr.net/npm/scsaver@latest/dist/scsaver.js"></script>
        <script>
            function getRandomInteger(min, max) {
            return Math.floor(Math.random() * (max - min + 1) + min);
            }

            function pickRandomItem() {
            return arguments[getRandomInteger(0, arguments.length - 1)];
            }

            function getRandomCharacter() {
            const characterSet =
                '<>=123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$#@!&+%ゔゖユぅたガなろィづガヘ⁞びフゾッヤヲォえ”‱‰゛‽ぎだゥねたぱトハヲ‵’テるユタぱのどニペケ‥ゃ⁌どへバ※0⁁ネホゅら‖';
            const randomIndex = getRandomInteger(0, characterSet.length - 1);
            return characterSet[randomIndex];
            }

            function animateLoop(callback, delay) {
            let lastTimestamp = Date.now();
            function loop() {
                if (Date.now() - lastTimestamp >= delay) {
                callback();
                lastTimestamp = Date.now();
                }
                requestAnimationFrame(loop);
            }
            requestAnimationFrame(loop);
            }

            class Character {
            constructor() {
                this.element = document.createElement('span');
                this.update();
            }
            update() {
                this.element.textContent = getRandomCharacter();
            }
            }

            class CharacterTrail {
            constructor(charactersList = [], options) {
                this.charactersList = charactersList;
                this.options = Object.assign(
                { size: 10, offset: 0 }, options
                );
                this.trail = [];
                this.move();
            }
            iterate(callback) {
                this.trail.forEach((character, index) => {
                let isLast = (index === this.trail.length - 1);
                if (character) callback(character, index, isLast);
                });
            }
            move() {
                this.trail = [];
                let { offset, size } = this.options;
                for (let i = 0; i < size; ++i) {
                let character = this.charactersList[offset + i - size + 1];
                this.trail.push(character);
                }
                this.options.offset = 
                (offset + 1) % (this.charactersList.length + size - 1);
            }
            }

            class Raindrop {
            constructor({ container, row }) {
                this.element = document.createElement('p');
                this.create(row);
                if (container) {
                container.appendChild(this.element);
                }
                this.fall();
            }
            create(row = 20) {
                let fragment = document.createDocumentFragment();
                let characters = [];
                for (let i = 0; i < row; ++i) {
                let char = new Character();
                fragment.appendChild(char.element);
                characters.push(char);
                if (Math.random() < 0.5) {
                    animateLoop(() => char.update(), getRandomInteger(1000, 5000));
                }
                }
                this.trail = new CharacterTrail(characters, { 
                size: getRandomInteger(10, 30), offset: getRandomInteger(0, 100) 
                });
                this.element.appendChild(fragment); 
            }
            fall() {
                let trail = this.trail;
                let length = trail.trail.length;
                let delay = getRandomInteger(10, 100);
                animateLoop(() => {
                trail.move();
                trail.iterate((char, index, isLast) => {
                    char.element.style = `
                    color: hsl(136, 100%, ${85 / length * (index + 1)}%)
                    `;
                    if (isLast) {
                    char.update();
                    char.element.style = `
                        color: hsl(136, 100%, 85%);
                        text-shadow:
                        0 0 .5em #fff,
                        0 0 .5em currentColor;
                    `;
                    }
                });
                }, delay);
            }
            }
        </script>
        <script>
            class TextScramble {
            constructor(el) {
                this.el = el;
                this.chars = '!<>-_\\/[]{}—=+*^?#________';
                this.update = this.update.bind(this);
            }
            setText(newText) {
                const oldText = this.el.innerText;
                const length = Math.max(oldText.length, newText.length);
                const promise = new Promise(resolve => this.resolve = resolve);
                this.queue = [];
                for (let i = 0; i < length; i++) {
                const from = oldText[i] || '';
                const to = newText[i] || '';
                const start = Math.floor(Math.random() * 40);
                const end = start + Math.floor(Math.random() * 40);
                this.queue.push({ from, to, start, end });
                }
                cancelAnimationFrame(this.frameRequest);
                this.frame = 0;
                this.update();
                return promise;
            }
            update() {
                let output = '';
                let complete = 0;
                for (let i = 0, n = this.queue.length; i < n; i++) {
                let { from, to, start, end, char } = this.queue[i];
                if (this.frame >= end) {
                    complete++;
                    output += to;
                } else if (this.frame >= start) {
                    if (!char || Math.random() < 0.28) {
                    char = this.randomChar();
                    this.queue[i].char = char;
                    }
                    output += `<span class="dud">${char}</span>`;
                } else {
                    output += from;
                }
                }
                this.el.innerHTML = output;
                if (complete === this.queue.length) {
                this.resolve();
                } else {
                this.frameRequest = requestAnimationFrame(this.update);
                this.frame++;
                }
            }
            randomChar() {
                return this.chars[Math.floor(Math.random() * this.chars.length)];
            }}
        </script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/typed.js/2.0.8/typed.min.js"></script>
        <script src="files/js/script.js"></script>
	</body>
</html>