Compare commits

...

2 commits

Author SHA1 Message Date
faed02e0c8
rosco :3 2024-12-07 01:11:00 +00:00
3ee7cc2448
Nuke unused pages 2024-12-07 01:10:40 +00:00
15 changed files with 261 additions and 312 deletions

View file

@ -0,0 +1,48 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\File;
use Illuminate\View\View;
class RoscoController extends Controller {
public function getImages(): array {
$images = [];
foreach (File::glob(public_path('images/rosco').'/*') as $path) {
$image_data = [];
try {
$exif = exif_read_data($path);
} catch (Exception $ex) {
}
$image_data["path"] = str_replace(public_path(), '', $path);
if (isset($exif)) {
if (isset($exif["ImageDescription"])) {
$image_data["description"] = $exif["ImageDescription"];
}
if (isset($exif["DateTime"])) {
$image_data["date"] = strtotime($exif["DateTime"]);
}
}
array_push($images, $image_data);
}
usort($images, function ($a, $b) {
$dateA = $a['date'] ?? PHP_INT_MIN;
$dateB = $b['date'] ?? PHP_INT_MIN;
return $dateB <=> $dateA;
});
return $images;
}
/**
* Shows the page
* @return View
*/
public function show(): View {
return view('rosco', [
'images' => $this->getImages(),
]);
}
}

View file

@ -8,13 +8,15 @@
"php": "^8.1", "php": "^8.1",
"gecche/laravel-multidomain": "^10.2", "gecche/laravel-multidomain": "^10.2",
"guzzlehttp/guzzle": "^7.2", "guzzlehttp/guzzle": "^7.2",
"intervention/image": "^3.9",
"laravel/framework": "^10.10", "laravel/framework": "^10.10",
"laravel/tinker": "^2.8", "laravel/tinker": "^2.8",
"scrivo/highlight.php": "v9.18.1.10", "scrivo/highlight.php": "v9.18.1.10",
"sentry/sentry-laravel": "^4.1", "sentry/sentry-laravel": "^4.1",
"spatie/laravel-honeypot": "^4.3", "spatie/laravel-honeypot": "^4.3",
"spatie/laravel-html": "^3.4", "spatie/laravel-html": "^3.4",
"ua-parser/uap-php": "^3.9.14" "ua-parser/uap-php": "^3.9.14",
"ext-exif": "*"
}, },
"require-dev": { "require-dev": {
"fakerphp/faker": "^1.9.1", "fakerphp/faker": "^1.9.1",

150
composer.lock generated
View file

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "9ebfe85d188a66c9ab775b795cc6c06c", "content-hash": "9bdf6eb9bee36a39d65606daa89e30ee",
"packages": [ "packages": [
{ {
"name": "brick/math", "name": "brick/math",
@ -1191,6 +1191,150 @@
], ],
"time": "2023-12-03T19:50:20+00:00" "time": "2023-12-03T19:50:20+00:00"
}, },
{
"name": "intervention/gif",
"version": "4.2.0",
"source": {
"type": "git",
"url": "https://github.com/Intervention/gif.git",
"reference": "42c131a31b93c440ad49061b599fa218f06f93be"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Intervention/gif/zipball/42c131a31b93c440ad49061b599fa218f06f93be",
"reference": "42c131a31b93c440ad49061b599fa218f06f93be",
"shasum": ""
},
"require": {
"php": "^8.1"
},
"require-dev": {
"phpstan/phpstan": "^1",
"phpunit/phpunit": "^10.0",
"slevomat/coding-standard": "~8.0",
"squizlabs/php_codesniffer": "^3.8"
},
"type": "library",
"autoload": {
"psr-4": {
"Intervention\\Gif\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Oliver Vogel",
"email": "oliver@intervention.io",
"homepage": "https://intervention.io/"
}
],
"description": "Native PHP GIF Encoder/Decoder",
"homepage": "https://github.com/intervention/gif",
"keywords": [
"animation",
"gd",
"gif",
"image"
],
"support": {
"issues": "https://github.com/Intervention/gif/issues",
"source": "https://github.com/Intervention/gif/tree/4.2.0"
},
"funding": [
{
"url": "https://paypal.me/interventionio",
"type": "custom"
},
{
"url": "https://github.com/Intervention",
"type": "github"
},
{
"url": "https://ko-fi.com/interventionphp",
"type": "ko_fi"
}
],
"time": "2024-09-20T13:35:02+00:00"
},
{
"name": "intervention/image",
"version": "3.9.1",
"source": {
"type": "git",
"url": "https://github.com/Intervention/image.git",
"reference": "b496d1f6b9f812f96166623358dfcafb8c3b1683"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Intervention/image/zipball/b496d1f6b9f812f96166623358dfcafb8c3b1683",
"reference": "b496d1f6b9f812f96166623358dfcafb8c3b1683",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
"intervention/gif": "^4.2",
"php": "^8.1"
},
"require-dev": {
"mockery/mockery": "^1.6",
"phpstan/phpstan": "^1",
"phpunit/phpunit": "^10.0",
"slevomat/coding-standard": "~8.0",
"squizlabs/php_codesniffer": "^3.8"
},
"suggest": {
"ext-exif": "Recommended to be able to read EXIF data properly."
},
"type": "library",
"autoload": {
"psr-4": {
"Intervention\\Image\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Oliver Vogel",
"email": "oliver@intervention.io",
"homepage": "https://intervention.io/"
}
],
"description": "PHP image manipulation",
"homepage": "https://image.intervention.io/",
"keywords": [
"gd",
"image",
"imagick",
"resize",
"thumbnail",
"watermark"
],
"support": {
"issues": "https://github.com/Intervention/image/issues",
"source": "https://github.com/Intervention/image/tree/3.9.1"
},
"funding": [
{
"url": "https://paypal.me/interventionio",
"type": "custom"
},
{
"url": "https://github.com/Intervention",
"type": "github"
},
{
"url": "https://ko-fi.com/interventionphp",
"type": "ko_fi"
}
],
"time": "2024-10-27T10:15:54+00:00"
},
{ {
"name": "jean85/pretty-package-versions", "name": "jean85/pretty-package-versions",
"version": "2.0.6", "version": "2.0.6",
@ -9087,12 +9231,12 @@
], ],
"aliases": [], "aliases": [],
"minimum-stability": "stable", "minimum-stability": "stable",
"stability-flags": [], "stability-flags": {},
"prefer-stable": true, "prefer-stable": true,
"prefer-lowest": false, "prefer-lowest": false,
"platform": { "platform": {
"php": "^8.1" "php": "^8.1"
}, },
"platform-dev": [], "platform-dev": {},
"plugin-api-version": "2.6.0" "plugin-api-version": "2.6.0"
} }

View file

@ -5,7 +5,7 @@
return [ return [
'name' => env('APP_NAME', 'diskfloppy.me'), 'name' => env('APP_NAME', 'diskfloppy.me'),
'version' => '2024.08.30', 'version' => '2024.12.07',
'env' => env('APP_ENV', 'production'), 'env' => env('APP_ENV', 'production'),
'debug' => (bool) env('APP_DEBUG', false), 'debug' => (bool) env('APP_DEBUG', false),
'url' => env('APP_URL', 'http://localhost'), 'url' => env('APP_URL', 'http://localhost'),

View file

@ -21,6 +21,7 @@ body {
min-height: 100%; min-height: 100%;
background-color: hsla(0, 0%, 0%, 0); background-color: hsla(0, 0%, 0%, 0);
padding: 10px; padding: 10px;
font-family: serif;
} }
/*noinspection CssUnknownTarget*/ /*noinspection CssUnknownTarget*/
@ -111,6 +112,28 @@ div#content::after {
clear: both; clear: both;
} }
div#footer {
display: grid;
grid-template-columns: auto 1fr;
grid-template-rows: 1fr;
grid-column-gap: 0px;
grid-row-gap: 0px;
align-items: center;
}
div#footer div:last-child {
text-align: right;
}
div#footer div:last-child img {
image-rendering: pixelated;
margin: 0;
padding: 0;
width: 88px;
height: 31px;
}
/** Wah! **/
div.wah { div.wah {
float: right; float: right;
border: var(--border); border: var(--border);
@ -138,27 +161,6 @@ div.wah img {
width: 250px; width: 250px;
} }
div#footer {
display: grid;
grid-template-columns: auto 1fr;
grid-template-rows: 1fr;
grid-column-gap: 0px;
grid-row-gap: 0px;
align-items: center;
}
div#footer div:last-child {
text-align: right;
}
div#footer div:last-child img {
image-rendering: pixelated;
margin: 0;
padding: 0;
width: 88px;
height: 31px;
}
/** Guestbook **/ /** Guestbook **/
table.form input, table.form input,
table.form textarea, table.form textarea,
@ -235,3 +237,25 @@ table.music-top10 tr td:first-child {
div.bookmark-category:first-child h2 { div.bookmark-category:first-child h2 {
margin: 0; margin: 0;
} }
/** Rosco **/
div.rosco-gallery {
display: flex;
flex-wrap: wrap;
align-items: flex-start;
}
div.rosco {
border: var(--border);
padding: 5px;
filter: var(--shadow-small);
background-color: var(--background);
margin: 10px;
height: auto;
}
div.rosco,
div.rosco img {
max-width: 220px;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 538 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 587 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 422 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 MiB

View file

@ -5,5 +5,6 @@
<a href="/pub">files</a> | <a href="/pub">files</a> |
<a href="/bookmarks">bookmarks</a> | <a href="/bookmarks">bookmarks</a> |
<a href="/guestbook">guestbook</a> | <a href="/guestbook">guestbook</a> |
<a href="/music">music</a> <a href="/music">music</a> |
<a href="/rosco">rosco</a>
</nav> </nav>

View file

@ -1,253 +0,0 @@
<x-layout>
<x-slot:title>Computers</x-slot:title>
<p>TBD</p>
{{-- <table class="computers">--}}
{{-- <tr>--}}
{{-- <th>MODEL</th>--}}
{{-- <th>CPU</th>--}}
{{-- <th>GPU</th>--}}
{{-- <th>STORAGE</th>--}}
{{-- <th>RAM</th>--}}
{{-- <th>OS</th>--}}
{{-- </tr>--}}
{{-- <tr>--}}
{{-- <td>Random Whitebox<br>(???)</td>--}}
{{-- <td>486DX2</td>--}}
{{-- <td></td>--}}
{{-- <td>280MB HDD</td>--}}
{{-- <td>16MB</td>--}}
{{-- <td>MS-DOS 6.22 &amp; Windows for Workgroups 3.11</td>--}}
{{-- </tr>--}}
{{-- <tr>--}}
{{-- <td>MacBook Pro 14"<br>(2023)</td>--}}
{{-- <td colspan="2">M3 Pro</td>--}}
{{-- <td>500GB SSD</td>--}}
{{-- <td>18GB</td>--}}
{{-- <td>macOS Sonoma</td>--}}
{{-- </tr>--}}
{{-- <tr>--}}
{{-- <td>MacBook Pro 13"<br>(2018)</td>--}}
{{-- <td>Intel i5-8592U (2.3GHz)</td>--}}
{{-- <td>Intel Iris Plus 655</td>--}}
{{-- <td>250GB SSD</td>--}}
{{-- <td>8GB</td>--}}
{{-- <td>macOS Mojave</td>--}}
{{-- </tr>--}}
{{-- <tr>--}}
{{-- <td>Lenovo ThinkPad T430<br>(2012)</td>--}}
{{-- <td>Intel Core i7 (idk what it is)</td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td>16GB</td>--}}
{{-- <td>Windows 7 Pro / NixOS</td>--}}
{{-- </tr>--}}
{{-- <tr>--}}
{{-- <td>IBM ThinkPad X41T<br>(2005)</td>--}}
{{-- <td>Intel Pentium M (1.6GHz)</td>--}}
{{-- <td>Mobile Intel Express Chipset (128MB)</td>--}}
{{-- <td>40GB HDD</td>--}}
{{-- <td>1.5GB</td>--}}
{{-- <td>Windows XP Tablet PC Edition</td>--}}
{{-- </tr>--}}
{{-- <tr>--}}
{{-- <td>Dell OptiPlex GX1<br>(1999)</td>--}}
{{-- <td>Intel Pentium II (Deschutes, 400MHz)</td>--}}
{{-- <td>ATI 3D Rage Pro (4MB)</td>--}}
{{-- <td>40GB HDD</td>--}}
{{-- <td>639MB</td>--}}
{{-- <td>Windows 2000</td>--}}
{{-- </tr>--}}
{{-- <tr>--}}
{{-- <td>IBM ThinkPad T40<br>(2003)</td>--}}
{{-- <td>Intel Pentium M (1.3GHz)</td>--}}
{{-- <td>ATI Mobility Radeon 7500 (32MB)</td>--}}
{{-- <td>N/A</td>--}}
{{-- <td>N/A</td>--}}
{{-- <td>N/A</td>--}}
{{-- </tr>--}}
{{-- <tr>--}}
{{-- <td>HP Compaq Elite 8100<br>(2010)</td>--}}
{{-- <td>Intel Core i7 (something or other)</td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td>16GB</td>--}}
{{-- <td>Windows Vista Ultimate (64-bit)</td>--}}
{{-- </tr>--}}
{{-- <tr>--}}
{{-- <td>Mac mini<br>(2014)</td>--}}
{{-- <td>Intel Core i5-4278U (2.6GHz)</td>--}}
{{-- <td>Intel Iris Graphics</td>--}}
{{-- <td>1TB HDD</td>--}}
{{-- <td>8GB</td>--}}
{{-- <td>Proxmox VE 8.2</td>--}}
{{-- </tr>--}}
{{-- <tr>--}}
{{-- <td>Fujitsu Milan<br>(1996)</td>--}}
{{-- <td>Intel Pentium</td>--}}
{{-- <td></td>--}}
{{-- <td>1215MB HDD</td>--}}
{{-- <td>32MB</td>--}}
{{-- <td>Windows 98 SE</td>--}}
{{-- </tr>--}}
{{-- <tr>--}}
{{-- <td>Compaq Armada M300<br>(1999)</td>--}}
{{-- <td>Intel Pentium III</td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- </tr>--}}
{{-- <tr>--}}
{{-- <td>SuperMicro X9SCM</td>--}}
{{-- <td>Intel Pentium G850 (2.9GHz)</td>--}}
{{-- <td>Matrox MGA G6200eW</td>--}}
{{-- <td>2TB HDD / 80GB HDD</td>--}}
{{-- <td>16GB</td>--}}
{{-- <td>Proxmox VE 8.2</td>--}}
{{-- </tr>--}}
{{-- <tr>--}}
{{-- <td>Main PC</td>--}}
{{-- <td>Intel Core i7-6700K (4GHz)</td>--}}
{{-- <td>NVidia GTX 1060 (3GB)</td>--}}
{{-- <td>(multiple)</td>--}}
{{-- <td>64GB</td>--}}
{{-- <td>Windows 10 Pro / NixOS</td>--}}
{{-- </tr>--}}
{{-- <tr>--}}
{{-- <td>Toshiba Qosmio F20<br>(2005)</td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td>N/A</td>--}}
{{-- <td>N/A</td>--}}
{{-- </tr>--}}
{{-- <tr>--}}
{{-- <td>MacBook Pro 13"<br>(2009)</td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td>N/A</td>--}}
{{-- <td>N/A</td>--}}
{{-- </tr>--}}
{{-- <tr>--}}
{{-- <td>Packard-Bell EasyNote MIT-LYN01<br>(???)</td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td>Windows XP Home</td>--}}
{{-- </tr>--}}
{{-- <tr>--}}
{{-- <td>Sony VAIO PCG-3B1M<br>(???)</td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td>Windows Vista</td>--}}
{{-- </tr>--}}
{{-- <tr>--}}
{{-- <td>Dell OptiPlex 745 USFF<br>(2006)</td>--}}
{{-- <td>Intel Pentium Dual Core</td>--}}
{{-- <td>Intel Integrated</td>--}}
{{-- <td>(multiple)</td>--}}
{{-- <td>4GB</td>--}}
{{-- <td>(multiple)</td>--}}
{{-- </tr>--}}
{{-- <tr>--}}
{{-- <td>Dell Inspiron 1525<br>(2008)</td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td>N/A</td>--}}
{{-- <td>N/A</td>--}}
{{-- </tr>--}}
{{-- <tr>--}}
{{-- <td>Random Whitebox 2</td>--}}
{{-- <td>AMD Phenom II X6-1055T</td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td>8GB</td>--}}
{{-- <td>N/A</td>--}}
{{-- </tr>--}}
{{-- <tr>--}}
{{-- <td>Dell Latitude D531<br>(2007)</td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td>Windows XP Professional</td>--}}
{{-- </tr>--}}
{{-- <tr>--}}
{{-- <td>IBM ThinkPad R40<br>(2003)</td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td>Windows 2000</td>--}}
{{-- </tr>--}}
{{-- <tr>--}}
{{-- <td>Dell Latitude CPi<br>(2001)</td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td>Windows 2000</td>--}}
{{-- </tr>--}}
{{-- <tr>--}}
{{-- <td>Dell Latitude CPx<br>(1999)</td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td>Windows 98 SE</td>--}}
{{-- </tr>--}}
{{-- <tr>--}}
{{-- <td>Dell Latitude 4898T<br>(???)</td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td>N/A</td>--}}
{{-- <td>N/A</td>--}}
{{-- </tr>--}}
{{-- <tr>--}}
{{-- <td>Time 8375<br>(???)</td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td>N/A</td>--}}
{{-- <td>N/A</td>--}}
{{-- </tr>--}}
{{-- <tr>--}}
{{-- <td>Toshiba Satellite 200CDS<br>(1996)</td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- </tr>--}}
{{-- <tr>--}}
{{-- <td>HP Compaq NC6000<br>(2004)</td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td>N/A</td>--}}
{{-- <td>N/A</td>--}}
{{-- </tr>--}}
{{-- <tr>--}}
{{-- <td>IBM Personal Computer 330<br>(1997)</td>--}}
{{-- <td>Intel Pentium</td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td>N/A</td>--}}
{{-- <td>N/A</td>--}}
{{-- </tr>--}}
{{-- <tr>--}}
{{-- <td>Shuttle XPC SN21G5<br>(2006)</td>--}}
{{-- <td>AMD Athlon 64 X2</td>--}}
{{-- <td></td>--}}
{{-- <td></td>--}}
{{-- <td>N/A</td>--}}
{{-- <td>N/A</td>--}}
{{-- </tr>--}}
{{-- </table>--}}
</x-layout>

View file

@ -1,26 +0,0 @@
<x-layout>
<x-slot:title>Privacy</x-slot:title>
<div class="section">
<h2>What am I doing with your data?</h2>
<hr>
<h3>1. What's collected?</h3>
<p>This site uses the Apache2 webserver and thus, for every request received, the following is logged:</p>
<ul>
<li>IP address</li>
<li>Request time</li>
<li>Request type</li>
<li>Location of requested resource</li>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer">Referrer</a> (what website linked you to this one)</li>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent">User Agent</a> (Type and version of your web browser, often also operating system and version)</li>
</ul>
<p>My website doesn't collect any more than stated above (except MediaWiki maybe)</p><br>
<h3>2. Why are logs kept?</h3>
<p>So I can examine and prevent attacks such as spam or DDoS-ing attempts</p><br>
<h3>3. When are the logs analyzed?</h3>
<p>Usually, unless I suspect an attack of some kind, I won't actively spend hours perusing the logs.</p><br>
<h3>4. Can I opt-out?</h3>
<p>Maybe? If you want to, you can email <a href="mailto:wehmaster@weh.moe">wehmaster@weh.moe</a> and I'll try and sort it out as fast as possible (assuming I can figure out how)</p><br>
<address>Any outlinks and hotlinked/embedded resources are subject to their own privacy policies and have nothing to do with me.</address>
<address>Last updated: September 9th, 2024</address>
</div>
</x-layout>

View file

@ -0,0 +1,13 @@
<x-layout>
<x-slot:title>Rosco</x-slot:title>
<div class="rosco-gallery">
@foreach($images as $image)
<div class="rosco">
<img src="{{ $image["path"] }}" @if(isset($image["description"])) alt="{{ $image["description"] }}" @endif>
@if(isset($image["description"]))
<p>{{$image["description"]}}</p>
@endif
</div>
@endforeach
</div>
</x-layout>

View file

@ -1,12 +1,11 @@
<?php <?php
use App\Http\Controllers\BookmarksController; use App\Http\Controllers\BookmarksController;
use App\Http\Controllers\CalculatorsController;
use App\Http\Controllers\ComputersController;
use App\Http\Controllers\GuestbookController; use App\Http\Controllers\GuestbookController;
use App\Http\Controllers\HomeController; use App\Http\Controllers\HomeController;
use App\Http\Controllers\MusicController; use App\Http\Controllers\MusicController;
use App\Http\Controllers\PrivacyController; use App\Http\Controllers\PrivacyController;
use App\Http\Controllers\RoscoController;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
/* /*
@ -20,13 +19,10 @@
| |
*/ */
// Run the PageView middleware for *all* public GET routes
Route::get('/', [HomeController::class, 'show']); Route::get('/', [HomeController::class, 'show']);
Route::get('/bookmarks', [BookmarksController::class, 'show']); Route::get('/bookmarks', [BookmarksController::class, 'show']);
Route::get('/guestbook', [GuestbookController::class, 'show']); Route::get('/guestbook', [GuestbookController::class, 'show']);
Route::get('/calculators', [CalculatorsController::class, 'show']);
Route::get('/computers', [ComputersController::class, 'show']);
Route::get('/music', [MusicController::class, 'show']); Route::get('/music', [MusicController::class, 'show']);
Route::get('/privacy', [PrivacyController::class, 'show']); Route::get('/rosco', [RoscoController::class, 'show']);
Route::post('/guestbook', [GuestbookController::class, 'addEntry']) Route::post('/guestbook', [GuestbookController::class, 'addEntry'])
->middleware('rate_limit'); ->middleware('rate_limit');