Compare commits

...

49 Commits

Author SHA1 Message Date
d809533280 Ensure row divs are not double-closed. 2025-06-16 16:36:20 -06:00
ee367f9b3f Close the previous row before creating a new one! :) 2025-06-16 16:03:01 -06:00
d673eb2f6a Fix unquoted values resulting in unclosed tag. 2025-06-16 16:00:46 -06:00
afac80d543 Add single quotes around variable output for consistency. 2025-06-16 15:57:34 -06:00
f090607f67 Add build time to end of the page comments. 2025-06-16 15:52:20 -06:00
1dccb10a45 Give a readout on how long the photos page took to get loaded. 2025-06-16 15:44:24 -06:00
6f7934f8ff Merge pull request 'Fix Curl Installation' (#7) from dev into main
Reviewed-on: #7
2025-06-16 13:32:22 -07:00
998f5ed338 Fix echo command. Handle LOGNAME being empty in situations like a Docker container. 2025-06-16 15:10:23 -06:00
71cdccbeae Merge pull request 'Diet Page & Curl Dependency' (#6) from dev into main
Reviewed-on: #6
2025-06-16 12:36:21 -07:00
2fb438b199 Add curl as a dependency. 2025-06-16 13:43:11 -06:00
7eda07995f Add a medium avoidance group and shift items which were debateable in the upper and lower groups. 2025-06-06 10:55:04 -07:00
e7c4296724 Add and populate a Diet page. 2025-06-06 10:49:57 -07:00
369d8a736e Merge pull request 'Page Titles & All Photos Page' (#5) from dev into main
Reviewed-on: #5
2025-06-06 08:02:50 -07:00
073377532e Add headers to all pages! Also update the look and feel of the test page. 2025-05-27 12:41:17 -07:00
18cd38b194 Add default port in this script. 2025-05-27 11:27:18 -07:00
aa20bd67ee Add TBD's of how to better output in the log. 2025-05-27 11:27:06 -07:00
b4d9bae246 Add log function to ensure consistent output. Enhance regeneration of photo index files. 2025-05-27 11:20:20 -07:00
fcb091a164 Change name of the page to Full Photo Feed from Full Image Feed. 2025-05-27 10:53:19 -07:00
55742e50db Remove the all folder in place of an all.html file. Create a main page which provides the output of it. 2025-05-27 10:51:41 -07:00
e13a1633dd Remove unused variables. 2025-05-27 10:40:39 -07:00
add3a2865c Automatically reload the /photos/ index files. 2025-05-26 18:53:19 -07:00
6fd8525dad Properly handle jpeg and md files. 2025-05-26 16:39:15 -07:00
c7f4613d22 Delete the index files on each restart. 2025-05-26 16:38:54 -07:00
c6fd3f4786 Finish the all page! Even easier than expected and works GREAT! 2025-05-26 16:38:34 -07:00
474c258a83 Fix syntax error preventing page from running. 2025-05-26 15:24:40 -07:00
b35856fa88 Add the folder for all images. 2025-05-26 15:20:14 -07:00
290f1524a2 Refactor the photos page code and begin adding a feed page named all. 2025-05-26 13:54:46 -07:00
fb0ff39013 Merge pull request 'Major Fix, Minor Fixes, and Style / Tag Refactoring' (#4) from dev into main
Reviewed-on: #4
2025-05-19 10:08:04 -07:00
79c6a34e38 Remove call to neofetch. Does not appear to be giving away info from Docker, but juuust in case! 2025-05-19 09:57:13 -07:00
a26081d13f Fix HTML in sitemap. Add DOCTYPE, language, and a title. 2025-05-19 09:54:04 -07:00
7ccb7e2ac7 Alter the CSS for Trocador's widget based on W3 validator. Recommends using overflow CSS attribute rather than unsupported scrolling HTML attribute. 2025-05-19 09:45:13 -07:00
dc7fd3f834 Remove trailing slashes from line breaks, not needed in HTML. 2025-05-19 09:41:15 -07:00
a3b8025876 Fix comment to properly encapsulate p element. 2025-05-19 09:38:23 -07:00
6876cd34b7 Remove trailing slashes, not needed in HTML. 2025-05-19 09:37:36 -07:00
60f9241fbd Add alt tag to images. 2025-05-19 09:33:12 -07:00
698e2aa680 Remove redundant alt text, captions already have a description. 2025-05-19 09:31:31 -07:00
ff10025e05 Declare the language of the website. 2025-05-19 09:23:10 -07:00
72b1afdedd Create a CSS class for the size of app images, rather than giving the img attributes a percentage. Move the figures to be completely inside the anchors. 2025-05-19 09:09:53 -07:00
00660cef98 Add an apps alias for the homepage. 2025-05-17 10:57:07 -07:00
fc129124b8 Add explicit font sizes and boldness. 2025-05-17 10:39:31 -07:00
805b4ef8e0 Update elements and classes for better consistency in preparation for font size change. 2025-05-17 10:37:15 -07:00
f7b60e0944 Fix initial comment spacing. 2025-05-17 09:47:43 -07:00
f598d8f401 Express v5.0.0+ breaks the program, keep using 4 for now. 2025-05-17 09:42:16 -07:00
78ab7735d7 Simplify menu again for basic mobile web browsers (like Android's stock/default, not mobile Firefox). 2025-05-17 09:11:06 -07:00
e141347222 Merge pull request 'Release Expense Tracker App' (#3) from dev into main
Reviewed-on: #3
2025-03-26 13:24:22 -07:00
94246ddaeb Reword app description. 2025-03-25 08:43:13 -07:00
652bc8d35d Remove extra "free". 2025-03-25 08:40:59 -07:00
5c515f0d1d Add new Expense Tracker app. 2025-03-25 08:38:54 -07:00
c73ec1fb4e Remove extra row. 2025-03-25 08:33:57 -07:00
31 changed files with 897 additions and 344 deletions

View File

@ -1,3 +1,9 @@
# Hyperling.com - files/photos/ # Hyperling.com - files/photos/
Used by `http://localhost:8080/photos` to build albums for sharing. ## index.html
Used by `http://localhost:8080/photos` to build and show list of albums.
## all.html
Used by `http://localhost:8080/photos-all` to show all albums at once.

20
main.js
View File

@ -104,7 +104,14 @@ async function main() {
</url> </url>
`; `;
let sitemap_html = ` let sitemap_html = `
<html><body> <!DOCTYPE html>
<html lang="en">
<head>
<title>
Sitemap for Hyperling
</title>
</head>
<body>
<strong>Special Pages</strong> <strong>Special Pages</strong>
<ul> <ul>
<li> <li>
@ -134,6 +141,7 @@ async function main() {
/* AUTOMATIC METHOD BASED ON OBJECT/ARRAY OF WEB SCRIPTS /* AUTOMATIC METHOD BASED ON OBJECT/ARRAY OF WEB SCRIPTS
// Creates routes with the URL of the key and location of the value. // Creates routes with the URL of the key and location of the value.
*/ */
// TBD/TODO would be great to log this as "DATE: ADDRESS hit ROUTER requesting RESOURCE"
for (let key in pages) { for (let key in pages) {
console.log(" * Creating router for", key); console.log(" * Creating router for", key);
router.get("/" + key, function (req,res) { router.get("/" + key, function (req,res) {
@ -175,6 +183,7 @@ async function main() {
`; `;
// Provide sitemap.xml file for "SEO". // Provide sitemap.xml file for "SEO".
// TBD/TODO would be great to log this as "DATE: ADDRESS hit ROUTER requesting RESOURCE"
console.log(" * Creating router for sitemap.xml"); console.log(" * Creating router for sitemap.xml");
router.get('/sitemap.xml', function (req, res) { router.get('/sitemap.xml', function (req, res) {
console.log("sitemap.xml being provided to", req.socket.remoteAddress) console.log("sitemap.xml being provided to", req.socket.remoteAddress)
@ -183,6 +192,7 @@ async function main() {
}); });
// Provide human-usable sitemap links. // Provide human-usable sitemap links.
// TBD/TODO would be great to log this as "DATE: ADDRESS hit ROUTER requesting RESOURCE"
console.log(" * Creating router for sitemap*"); console.log(" * Creating router for sitemap*");
router.get('/sitemap*', function (req, res) { router.get('/sitemap*', function (req, res) {
console.log("sitemap.html being provided to", req.socket.remoteAddress) console.log("sitemap.html being provided to", req.socket.remoteAddress)
@ -190,6 +200,7 @@ async function main() {
}); });
// Return a resource from the files folder. // Return a resource from the files folder.
// TBD/TODO would be great to log this as "DATE: ADDRESS hit ROUTER requesting RESOURCE"
console.log(" * Creating router for files"); console.log(" * Creating router for files");
router.get('/files*', function (req, res) { router.get('/files*', function (req, res) {
console.log("file response to", req.socket.remoteAddress, "asking for", req.url) console.log("file response to", req.socket.remoteAddress, "asking for", req.url)
@ -205,7 +216,8 @@ async function main() {
case "apk": case "apk":
mime = "application/vnd.android.package-archive"; mime = "application/vnd.android.package-archive";
break; break;
case "jpg" || "jpeg": case "jpg":
case "jpeg":
mime = "image/jpeg"; mime = "image/jpeg";
break; break;
case "png": case "png":
@ -217,7 +229,9 @@ async function main() {
case "zip": case "zip":
mime = "application/zip"; mime = "application/zip";
break; break;
case "txt" || "csv" || "md": case "md":
case "txt":
case "csv":
mime = "text/*"; mime = "text/*";
break; break;
default: default:

View File

@ -1,6 +1,6 @@
{ {
"dependencies": { "dependencies": {
"express": ">=4.18.1" "express": ">=4.18.1 < 5.0.0"
}, },
"scripts": { "scripts": {
"start": "./run.sh" "start": "./run.sh"

View File

@ -1,12 +1,15 @@
#!/usr/bin/php #!/usr/bin/php
<?php <?php
if (!isset($GLOBALS["HEADER_TITLE"])) {
$GLOBALS["HEADER_TITLE"] = "About";
}
include "helpers/body_open.php"; include "helpers/body_open.php";
?> ?>
<div class="row"> <div class="row">
<h1 class="col-12 title">Who Am I?</h1> <h1 class="col-12 title">Who Am I?</h1>
<div class="col-12 header center" > <div class="col-12 header center" >
<img src="/files/media/icons/about.jpg"> <img src="/files/media/icons/about.jpg" alt="">
</div> </div>
</div> </div>
<div class="row"> <div class="row">

10
pages/apps.php Executable file
View File

@ -0,0 +1,10 @@
#!/usr/bin/php
<!--
Synonym for home page.
-->
<?php
if (!isset($GLOBALS["HEADER_TITLE"])) {
$GLOBALS["HEADER_TITLE"] = "Apps";
}
include "home.php";
?>

View File

@ -1,12 +1,15 @@
#!/usr/bin/php #!/usr/bin/php
<?php <?php
if (!isset($GLOBALS["HEADER_TITLE"])) {
$GLOBALS["HEADER_TITLE"] = "Contact";
}
include "helpers/body_open.php"; include "helpers/body_open.php";
?> ?>
<div class="row"> <div class="row">
<h1 class="col-12 title">Contact</h1> <h1 class="col-12 title">Contact</h1>
<div class="col-12 header center" > <div class="col-12 header center" >
<img src="/files/media/icons/contact.jpg"> <img src="/files/media/icons/contact.jpg" alt="">
</div> </div>
</div> </div>
<div class="row"> <div class="row">

214
pages/diet.php Executable file
View File

@ -0,0 +1,214 @@
#!/usr/bin/php
<?php
if (!isset($GLOBALS["HEADER_TITLE"])) {
$GLOBALS["HEADER_TITLE"] = "Diet";
}
include "helpers/body_open.php";
?>
<div class="row">
<h1 class="col-12 title">Current Diet</h1>
<div class="col-12 header center" >
<img src="/files/media/icons/tbd.jpg" alt="Image TBD">
</div>
</div>
<div class="row">
<div class="col-12 text">
<p>
My diet is 100% vegan and focuses on a high carb low fat
macronutrient ratio from whole foods. I consume as many raw meals
as possible and prefer to cook for myself.
<!--Purchase priorities are 1) Non-GMO, 2) Local, 3) Organic.-->
</p>
<!-- -- >
<p>
I generally water fast until the sensation of an empty stomach
actually turns to hunger, then eat a raw fruit meal. If it's date
season or other high calorie fruit is readily available, the
whole day may be fruit, otherwise I make 1 large cooked meal such
as rice with veggies to cover the rest of the day's needs.
</p>
<!-- -->
</div>
</div>
<div class="row">
<h2 class="col-12 header" id="faves">Favorites</h2>
</div>
<div class="row">
<div class="col-12 text">
<strong>Fruit</strong>
<ol>
<li>Soursop</li>
<li>Durian</li>
<li>Pawpaw</li>
<li>Mamey Sapote</li>
</ol>
<p>Notable Mentions</p>
<ul>
<li>Dates</li>
<li>Longans</li>
<li>Cherimoya</li>
<li>Persimmons</li>
<li>Peaches & Nectarines</li>
<li>Fresh Coconut</li>
<li>Mango</li>
</ul>
<!-- -- >
<strong>Cooked</strong>
<ol>
<li></li>
<li></li>
<li></li>
</ol>
<!-- -->
</div>
</div>
<div class="row">
<h2 class="col-12 header" id="staples">Staples</h2>
</div>
<div class="row">
<div class="col-12 text">
<strong>Raw</strong>
<ul>
<li>Dates (Khadrawi, Barhi, Medjool)</li>
<li>Bananas</li>
<li>Apples (Autumn Crisp, Cosmic Crisp, Pink Lady, Granny Smith, Gala, Fuji)</li>
<li>Dried Mango (Natural Grocer's brand)
<ul><li>
This is best consumed rehydrated. The nectar is amazing!!
</li></ul>
</li>
</ul>
<strong>Cooked</strong>
<ul>
<li>Rice</li>
<li>Sweet Potato</li>
<li>Zucchini & Yellow Squash</li>
</ul>
</div>
</div>
<div class="row">
<h2 class="col-12 header" id="avoid">Allergies / Aversions</h2>
</div>
<div class="row">
<div class="col-12 text">
<p>
I've found that my body doesn't tolerate many foods found in modern diets.
</p>
<p>
Basically, if you wouldn't feed it to a dog or rabbit, I probably avoid it too.
</p>
<strong>High Reactivity</strong>
<p>
These are a quick "no". I'll smell the dish, but not eat!
</p>
<ul>
<li>Alliums (garlic, onions)
<!-- -- >
<ul><li>
Headaches, migraines, nightmares, night terrors, poor digestion.
</li></ul>
<!-- -->
</li>
<li>Caffeine (coffee, chocolate, cacao, cocoa)
<!-- -- >
<ul><li>
Headaches, intense sweating, jitters, anxiety, awful digestion.
</li></ul>
<!-- -->
</li>
<li>Grapes
<!-- -- >
<ul><li>Terrible digestion.</li></ul>
<!-- -->
</li>
<li>Tropical Nuts (peanuts, cashews, brazil nuts, etc)
<!-- -- >
<ul>
<li>Terrible digestion, lethargy, headaches.</li>
</ul>
<!-- -->
</li>
<li>Drugs & Alcohol
<!-- -- >
<ul><li>
People know me as the sober kid. I used cannabis on and off
until 2024 but was over recreational drugs by 2012. Now
that I'm happy I no longer need an escape. :)
</li></ul>
<!-- -->
</li>
</ul>
<strong>Medium Reactivity</strong>
<p>
I normally avoid these and only have them as rare exceptions.
</p>
<ul>
<li>Nightshades (tomato, peppers, potato, eggplant, tobacco, datura)
<!-- -- >
<ul>
<li>Mucous and lymph for days, poor digestion.</li>
<li>If cooked at a high enough temperature, like fries,
they become tolerable as long as theyre not overly oily.
</li>
</ul>
<!-- -->
</li>
<li>Cinnamon
<!-- -- >
<ul><li>Intense sweating, overheating.</li></ul>
<!-- -->
</li>
</ul>
<strong>Lower Reactivity</strong>
<p>
I may have these from time to time, but in very small amounts.
</p>
<ul>
<li>Fatty Nuts & Seeds (almonds, walnuts, pecans, sunflower seeds, etc)
<!-- -- >
<ul><li>Poor digestion, lethargy, </li></ul>
<!-- -->
</li>
<!-- -- >
<li>Quinoa
<!-- -- >
<ul><li>I want to love it, it just doesn't do anything!</li></ul>
-- >
</li>
<!-- -->
<li>Storebought/Pasteurized Juices
<!-- -- >
<ul><li>.</li></ul>
<!-- -->
</li>
<li>Tea (including herbal)
<!-- -- >
<ul><li>Needs to be comsumed with a meal, otherwise body may try to process it as one and leads to horrible digestion.</li></ul>
<!-- -->
</li>
<li>Legumes (beans, peas)
<!-- -- >
<ul><li>If not properly stored and cooked they cause me havoc.</li></ul>
<!-- -->
</li>
<li>Oily Meals
<!-- -- >
<ul><li></li></ul>
<!-- -->
</li>
<li>Empty Calories (donuts, cake, corn/potato chips, etc)
<!-- -- >
<ul><li>I want to love it, it just doesn't do anything!</li></ul>
<!-- -->
</li>
</ul>
</div>
</div>
<?php
include "helpers/body_close.php";
?>

View File

@ -3,5 +3,8 @@
Alias for the support page with a more common name. Alias for the support page with a more common name.
--> -->
<?php <?php
if (!isset($GLOBALS["HEADER_TITLE"])) {
$GLOBALS["HEADER_TITLE"] = "Donate";
}
include "support.php"; include "support.php";
?> ?>

View File

@ -4,6 +4,9 @@
--> -->
<?php <?php
$GLOBALS["ADVISORY"] = false; $GLOBALS["ADVISORY"] = false;
if (!isset($GLOBALS["HEADER_TITLE"])) {
$GLOBALS["HEADER_TITLE"] = "Health";
}
include "helpers/body_open.php"; include "helpers/body_open.php";
?> ?>

View File

@ -10,14 +10,14 @@
<a href="/health/"> <a href="/health/">
<div class="col-12 text"> <div class="col-12 text">
<u class="orange">2024-03-07</u> <u class="orange">2024-03-07</u>
<br/> <br>
Find my free eBook, "Hyperling's Health Protocol", Find my free eBook, "Hyperling's Health Protocol",
<u class="orange">here</u>! <u class="orange">here</u>!
</div> </div>
</a> </a>
<!--<div class="col-12 text"> <!--<div class="col-12 text">
<u>2024-03-31</u> <u>2024-03-31</u>
<br/> <br>
There's a There's a
<a href="/home/#tictactoe">new app</a> <a href="/home/#tictactoe">new app</a>
in town, in town,

View File

@ -1,4 +1,4 @@
/*** Logo In Header ***/ /*** Logo In Header ***/
/* Shared Attributes */ /* Shared Attributes */
.banner-top, .banner-middle, .banner-bottom { .banner-top, .banner-middle, .banner-bottom {

View File

@ -1,4 +1,4 @@
/*** Dark Theme ***/ /*** Dark Theme ***/
body { body {
background-color: #444444; background-color: #444444;
} }

34
pages/helpers/font.css Normal file
View File

@ -0,0 +1,34 @@
/*** Fonts and text sizes. ***/
/* For debugging anything which does not have a font size yet. * /
* {
color: cyan;
font-size: xx-large;
}
/* */
p,li,code,a,pre {
font-size: medium;
}
b,figcaption {
font-size: large;
font-weight: bold;
}
strong,img {
font-size: larger;
font-weight: bolder;
}
h6,h5 {
font-size: larger;
}
h4,h3 {
font-size: x-large;
}
h2,h1 {
font-size: xx-large;
}

View File

@ -8,19 +8,19 @@
<div class="row" id="footer"> <div class="row" id="footer">
<div class="col-12 title center"> <div class="col-12 title center">
<p>
Have a Health or Freedom related project which could use my help? Have a Health or Freedom related project which could use my help?
<a href="mailto:me@hyperling.com">Please let me know</a>! <a href="mailto:me@hyperling.com">Please let me know</a>!
</p>
</div> </div>
</div> </div>
<div class="row"> <div class="row center">
<!--<div class="col-3"></div>--> <div class="col-6">
<h6 class="col-6 center">
<a href="https://git.hyperling.com/me/nodejs-website/src/branch/main/LICENSE" <a href="https://git.hyperling.com/me/nodejs-website/src/branch/main/LICENSE"
target="_blank" rel="noopener noreferrer" target="_blank" rel="noopener noreferrer"
>This website is free software! Click here to learn more.</a> >This website is free software! Click here to learn more.</a>
</h6> </div>
<h6 class="col-6 center"> <div class="col-6">
<a href="/sitemap/">Full Site Map</a> <a href="/sitemap/">Full Site Map</a>
</h6> </div>
<!--<div class="col-3"></div>-->
</div> </div>

View File

@ -1,18 +1,28 @@
#!/usr/bin/php #!/usr/bin/php
<?php
if (!isset($GLOBALS["HEADER_TITLE"])) {
$GLOBALS["HEADER_TITLE"] = "";
} else {
$GLOBALS["HEADER_TITLE"] = ": " . $GLOBALS["HEADER_TITLE"];
}
?>
<!DOCTYPE html> <!DOCTYPE html>
<html> <html lang="en">
<head> <head>
<title>Hyperling</title> <title>Hyperling<?php echo($GLOBALS["HEADER_TITLE"]); ?></title>
<link rel="icon" sizes="32x32" <link rel="icon" sizes="32x32"
href="/files/media/icons/favicon.ico" href="/files/media/icons/favicon.ico"
/> >
<link rel="icon" sizes="192x192" <link rel="icon" sizes="192x192"
href="/files/media/icons/favicon.ico" href="/files/media/icons/favicon.ico"
/> >
<!-- CSS --> <!-- CSS -->
<style> <style>
<?php include "main.css"; ?> <?php include "main.css"; ?>
</style> </style>
<style>
<?php include "font.css"; ?>
</style>
<style> <style>
<?php include "dark.css"; ?> <?php include "dark.css"; ?>
</style> </style>

View File

@ -1,4 +1,4 @@
/*** 2022-09-14 CSS for the website. ***/ /*** 2022-09-14 CSS for the website. ***/
/* https://www.w3schools.com/Css/css_rwd_grid.asp */ /* https://www.w3schools.com/Css/css_rwd_grid.asp */
/* Enable dynamic stuffs, makes the element think its entire size includes padding. */ /* Enable dynamic stuffs, makes the element think its entire size includes padding. */
@ -137,3 +137,8 @@
margin-right: auto; margin-right: auto;
padding: 5px; padding: 5px;
} }
.app-icon {
width: 25%;
height: 25%;
}

View File

@ -2,11 +2,11 @@
<div class="row header menu"> <div class="row header menu">
<ul class="menu-list"> <ul class="menu-list">
<li class="col-1"></li> <li class="col-1"></li>
<li class="col-2 menu-item"><a href="/home/">Android Apps</a></li> <li class="col-2 menu-item"><a href="/apps/">Apps</a></li>
<li class="col-2 menu-item"><a href="/media/">Books / Socials</a></li> <li class="col-2 menu-item"><a href="/media/">Media</a></li>
<li class="col-2 menu-item"><a href="/about/">About Me</a></li> <li class="col-2 menu-item"><a href="/about/">About</a></li>
<li class="col-2 menu-item"><a href="/contact/">Contact Details</a></li> <li class="col-2 menu-item"><a href="/contact/">Contact</a></li>
<li class="col-2 menu-item"><a href="/support/">Support / Donate</a></li> <li class="col-2 menu-item"><a href="/support/">Support</a></li>
<li class="col-1"></li> <li class="col-1"></li>
</ul> </ul>
</div> </div>

View File

@ -3,17 +3,20 @@
Landing page, keeping it apps and development projects like old WordPress site. Landing page, keeping it apps and development projects like old WordPress site.
--> -->
<?php <?php
if (!isset($GLOBALS["HEADER_TITLE"])) {
$GLOBALS["HEADER_TITLE"] = "Home";
}
include "helpers/body_open.php"; include "helpers/body_open.php";
?> ?>
<div class="row"> <div class="row">
<h1 class="col-12 title">Welcome!</h1> <h1 class="col-12 title">Welcome!</h1>
<div class="col-12 header center" > <div class="col-12 header center" >
<img src="/files/media/icons/home.jpg"> <img src="/files/media/icons/home.jpg" alt="">
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-12 text center"> <div class="col-12 text">
<p> <p>
Thank you for visiting my site! My goal is to make the world a Thank you for visiting my site! My goal is to make the world a
better place. Hopefully you find content here which helps empower better place. Hopefully you find content here which helps empower

View File

@ -4,7 +4,7 @@
cd `dirname $0` cd `dirname $0`
# Create the necessary HTML components for a web page. # Create the necessary HTML components for a web page.
./helpers/body_open.php ./helpers/body_open.php | sed -e 's/Hyperling/Hyperling: Journey/'
#Content for this page #Content for this page
cat << EOF cat << EOF

View File

@ -3,6 +3,9 @@
Lists of items which I'd like to share such as gear and frequently used apps. Lists of items which I'd like to share such as gear and frequently used apps.
--> -->
<?php <?php
if (!isset($GLOBALS["HEADER_TITLE"])) {
$GLOBALS["HEADER_TITLE"] = "Lists";
}
include "helpers/body_open.php"; include "helpers/body_open.php";
?> ?>

View File

@ -3,13 +3,16 @@
Page for my video links. Page for my video links.
--> -->
<?php <?php
if (!isset($GLOBALS["HEADER_TITLE"])) {
$GLOBALS["HEADER_TITLE"] = "Media";
}
include "helpers/body_open.php"; include "helpers/body_open.php";
?> ?>
<div class="row"> <div class="row">
<h1 class="col-12 title">Media</h1> <h1 class="col-12 title">Media</h1>
<div class="col-12 header center" > <div class="col-12 header center" >
<img src="/files/media/icons/videos.jpg"> <img src="/files/media/icons/videos.jpg" alt="">
</div> </div>
</div> </div>
<div class="row"> <div class="row">

20
pages/photos-all.sh Executable file
View File

@ -0,0 +1,20 @@
#!/bin/bash
# Alias for new All Photos feed.
# Move to main directory.
DIR=`dirname $0`
cd $DIR/..
# Locations of photo scripts.
photos_all=./files/photos/all.html
photos=./pages/photos.sh
# If the all script does not exist,call the generator and ignore its output.
if [[ ! -e $photos_all ]]; then
$photos > /dev/null
fi
## Main ##
cat $photos_all
exit 0

View File

@ -2,12 +2,11 @@
# 2024-01-21 Hyperling # 2024-01-21 Hyperling
# Transition away from PhotoPrism. Helps to save system resources and downsize. # Transition away from PhotoPrism. Helps to save system resources and downsize.
# Static Variables ## Static Variables ##
DIR=`dirname $0` DIR=`dirname $0`
header="<html>\n\t<header>\n\t\t<title>ALBUM</title>\n\t</header>\n\t<body>" a="a target='_blank' rel='noopener noreferrer'"
footer="\n\t</body>\n</html>"
# Functions ## Functions ##
function remove_problem_strings { function remove_problem_strings {
file="$1" file="$1"
sed -i -e 's/#!\/usr\/bin\/php//g' $file sed -i -e 's/#!\/usr\/bin\/php//g' $file
@ -20,6 +19,7 @@ cd $DIR/..
HELPER_DIR=./pages/helpers HELPER_DIR=./pages/helpers
PHOTOS_DIR=./files/photos PHOTOS_DIR=./files/photos
mainpage=$PHOTOS_DIR/index.html mainpage=$PHOTOS_DIR/index.html
allpage=$PHOTOS_DIR/all.html
# Use the cached version if available. # Use the cached version if available.
if [[ -e $mainpage ]]; then if [[ -e $mainpage ]]; then
@ -28,28 +28,48 @@ if [[ -e $mainpage ]]; then
exit 0 exit 0
fi fi
# Create the necessary HTML components for a web page. ## Start the main /photos/ page. ##
$HELPER_DIR/body_open.php > $mainpage function start_main_page {
echo "" >> $mainpage # Create the necessary HTML components for a web page.
$HELPER_DIR/body_open.php > $mainpage
sed -i -e 's/Hyperling/Hyperling: Photos/' $mainpage
echo "" >> $mainpage
# Give the page a description. # Give the page a description.
echo -e "\t\t<div class='row'>" >> $mainpage echo -e "\t\t<div class='row'>" >> $mainpage
echo -e "\t\t\t<h1 class='col-12 title'>Albums</h1>" >> $mainpage echo -e "\t\t\t<h1 class='col-12 title'>Albums</h1>" >> $mainpage
echo -e "\t\t</div>" >> $mainpage echo -e "\t\t</div>" >> $mainpage
echo -e "\t\t<div class='row'>" >> $mainpage echo -e "\t\t<div class='row'>" >> $mainpage
echo -e "\t\t\t<div class='col-12 text'>" >> $mainpage echo -e "\t\t\t<div class='col-12 text'>" >> $mainpage
echo -en "\t\t\t\t<p>You may click on an album name to " >> $mainpage echo -en "\t\t\t\t<p>You may click on an album name to " >> $mainpage
echo -en "view all of its files, or click on a specific image to bring up the " >> $mainpage echo -en "view all of its files, or click on a specific image to bring up the " >> $mainpage
echo -en "full resolution. On the album pages you may also click an image or " >> $mainpage echo -en "full resolution. On the album pages you may also click an image or " >> $mainpage
echo -e "video name to pull up the full resolution for download.</p>" >> $mainpage echo -e "video name to pull up the full resolution for download.</p>" >> $mainpage
echo -e "\t\t\t</div>" >> $mainpage echo -e "\t\t\t</div>" >> $mainpage
echo -e "\t\t</div>" >> $mainpage echo -e "\t\t</div>" >> $mainpage
# Display the album names descending. echo -e "\t\t<div class='row'>" >> $mainpage
ls $PHOTOS_DIR/ | sort -r | while read album; do echo -e "\t\t\t<$a href='/photos-all'" >> $mainpage
echo -e "\t\t\t\tclass='col-12 header'>Click Here for the Full Photo Feed" >> $mainpage
echo -e "\t\t\t</a>" >> $mainpage
echo -e "\t\t</div>" >> $mainpage
}
## Close out the main page after the sub pages are done being added. ##
function end_main_page {
# Finish the main /photos/ page.
$HELPER_DIR/body_close.php >> $mainpage
echo "<!-- Built on `date`. -->" >> $mainpage
remove_problem_strings $mainpage
}
## Create the album pages. ##
function build_album_pages {
# Display the album names descending.
ls $PHOTOS_DIR/ | sort -r | while read album; do
# Skip files, only read directories. # Skip files, only read directories.
if [[ ! -d $PHOTOS_DIR/$album ]]; then if [[ ! -d "$PHOTOS_DIR/$album" || "$album" == "all" ]]; then
continue continue
fi fi
@ -59,8 +79,8 @@ ls $PHOTOS_DIR/ | sort -r | while read album; do
album_name=${album_name//-/ } album_name=${album_name//-/ }
echo -e "\t\t<div class='row'>" >> $mainpage echo -e "\t\t<div class='row'>" >> $mainpage
echo -en "\t\t\t<h2 class='col-12 title'>" >> $mainpage echo -en "\t\t\t<h2 class='col-12 title'>" >> $mainpage
echo -en "<a href='/files/photos/$album/index.html' " >> $mainpage echo -en "<$a href='/files/photos/$album/index.html'>" >> $mainpage
echo -e "target='_blank' rel='noopener noreferrer'>$album_name</a></h2>" >> $mainpage echo -e "$album_name</a></h2>" >> $mainpage
echo -e "\t\t</div>" >> $mainpage echo -e "\t\t</div>" >> $mainpage
# Catch all the upcoming photo records. # Catch all the upcoming photo records.
@ -70,6 +90,8 @@ ls $PHOTOS_DIR/ | sort -r | while read album; do
page="" page=""
subpage="$PHOTOS_DIR/$album/index.html" subpage="$PHOTOS_DIR/$album/index.html"
$HELPER_DIR/body_open.php > $subpage $HELPER_DIR/body_open.php > $subpage
sed -i -e "s/Hyperling/Hyperling: $album_name/" $subpage
echo "" >> $subpage
# Add a back button # Add a back button
echo -en "\n\t\t<div class='row'>\n\t\t\t<a href='/photos'>" >> $subpage echo -en "\n\t\t<div class='row'>\n\t\t\t<a href='/photos'>" >> $subpage
@ -101,8 +123,7 @@ ls $PHOTOS_DIR/ | sort -r | while read album; do
echo -e "\t\t\t\t<p>`cat $photo`</p>" >> $mainpage echo -e "\t\t\t\t<p>`cat $photo`</p>" >> $mainpage
else else
# Otherwise put in the PHOTOS page list. # Otherwise put in the PHOTOS page list.
echo -en "\t\t\t\t<li class='indent'><a href=/$photo target='_blank' " >> $mainpage echo -en "\t\t\t\t<li class='indent'><$a href='/$photo'>$filename" >> $mainpage
echo -en "rel='noopener noreferrer'>$filename" >> $mainpage
if [[ $photo == *".mp4" ]]; then if [[ $photo == *".mp4" ]]; then
echo -en " [VIDEO]" >> $mainpage echo -en " [VIDEO]" >> $mainpage
fi fi
@ -110,18 +131,19 @@ ls $PHOTOS_DIR/ | sort -r | while read album; do
fi fi
## Put in the subpage HTML ## ## Put in the subpage HTML ##
# Set the count if this is the first loop. new_row="\t\t<div class='row text'>"
# Set the count and start a row if this is the first loop.
if [[ -z $count ]]; then if [[ -z $count ]]; then
count=0 count=0
fi echo -e "$newrow" >> $subpage
# Add a row for the next 2 images. # Else check if we need to start a new one for the next 2 images.
if (( $count % 2 == 0 )); then elif (( $count % 2 == 0 )); then
echo -e "\t\t<div class='row text'>" >> $subpage echo -e "\t\t</div>" >> $subpage
echo -e "$newrow" >> $subpage
fi fi
# Add the container for the image and its text. # Add the container for the image and its text.
echo -e "\t\t\t<div class='col-6 center'>" >> $subpage echo -e "\t\t\t<div class='col-6 center'>" >> $subpage
echo -en "\t\t\t\t<a href=/$photo target='_blank' " >> $subpage echo -en "\t\t\t\t<$a href='/$photo'>" >> $subpage
echo -e "rel='noopener noreferrer'>" >> $subpage
# Determine what type of media it is, and how to display it. # Determine what type of media it is, and how to display it.
if [[ $photo == *".mp4" ]]; then if [[ $photo == *".mp4" ]]; then
echo -e "\t\t\t\t\t<video width='320px' controls>" >> $subpage echo -e "\t\t\t\t\t<video width='320px' controls>" >> $subpage
@ -131,7 +153,7 @@ ls $PHOTOS_DIR/ | sort -r | while read album; do
elif [[ $photo == *".md" || $photo == *".txt" ]]; then elif [[ $photo == *".md" || $photo == *".txt" ]]; then
echo -e "\t\t\t\t\t<p>`cat $photo`</p>" >> $subpage echo -e "\t\t\t\t\t<p>`cat $photo`</p>" >> $subpage
else else
echo -e "\t\t\t\t\t<img src='/$photo'/>" >> $subpage echo -e "\t\t\t\t\t<img src='/$photo' alt=''>" >> $subpage
fi fi
# Check if it needs an extra descriptive detail. # Check if it needs an extra descriptive detail.
echo -en "\t\t\t\t\t<p>$filename" >> $subpage echo -en "\t\t\t\t\t<p>$filename" >> $subpage
@ -140,10 +162,6 @@ ls $PHOTOS_DIR/ | sort -r | while read album; do
fi fi
# Close the image description and its link. # Close the image description and its link.
echo -e "</p>\n\t\t\t\t</a>\n\t\t\t</div>" >> $subpage echo -e "</p>\n\t\t\t\t</a>\n\t\t\t</div>" >> $subpage
# Close the row after an odd count.
if (( $count % 2 == 1 )); then
echo -e "\t\t</div>" >> $subpage
fi
count=$(( count + 1 )) count=$(( count + 1 ))
done done
echo -e "\t\t</div>" >> $subpage echo -e "\t\t</div>" >> $subpage
@ -159,15 +177,129 @@ ls $PHOTOS_DIR/ | sort -r | while read album; do
# Close out the ALBUM's page. # Close out the ALBUM's page.
$HELPER_DIR/body_close.php >> $subpage $HELPER_DIR/body_close.php >> $subpage
echo "<!-- Built on `date`. -->" >> $subpage echo "<!-- Built on `date`. -->" >> $subpage
remove_problem_strings $subpage remove_problem_strings $subpage
done done
}
# Finish the web page. ## Create an ALL page. ##
$HELPER_DIR/body_close.php >> $mainpage function build_all_page {
echo "<!-- Built on `date`. -->" >> $mainpage # - Shows all photos in descending order, as an overall feed.
# - Four images wide.
# - Has 2 URLs below the image. One to the album, and one to the image.
# - Image is a URL to itself as with other pages.
# - Images are shown at maximum 500px or so vertical for quick scrolling.
remove_problem_strings $mainpage # Create/overwrite file.
$HELPER_DIR/body_open.php > $allpage
sed -i -e 's/Hyperling/Hyperling: All Photos/' $allpage
echo "" >> $allpage
# Add header.
echo -e "\t\t<div class='row'>" >> $allpage
echo -e "\t\t\t<h1 class='col-12 title'>All Photo Feed</h1>" >> $allpage
echo -e "\t\t</div>" >> $allpage
# Add images to the page
find $PHOTOS_DIR/ ! -name "*".html | sort -r | while read media_file; do
if [[ -d $media_file
|| "$media_file" == *"/photos/README.md"
]]; then
continue
fi
# Remove the initial '.' from the URI.
media_uri="${media_file//\.\//\/}"
# Path to the image home.
dir_uri="`dirname $media_uri`"
# Prepare variables which will be used throughout the loop.
media_name="`basename $media_uri`"
dir_name="`basename $dir_uri`"
# This must be after the dir_name has been pulled.
dir_uri="$dir_uri/index.html"
# Do not show the file extension for the filename.
media_name="${media_name%%.*}"
# Change underscores and dashes to be spaces for better overflow.
media_name="${media_name//_/ }"
media_name="${media_name//-/ }"
dir_name="${dir_name//_/ }"
dir_name="${dir_name//-/ }"
media="<img src='$media_uri' alt='' style='width:100%'>"
# Determine how to show the file.
if [[ $media_uri == *".mp4" ]]; then
media="<video controls style='width:100%'>"
media="${media}<source src='$media_uri' type=video/mp4>"
media="${media}Your browser does not support videos."
media="${media}</video>"
media_name="$media_name [VIDEO]"
elif [[ $media_uri == *".md" || $media_uri == *".txt" ]]; then
media="<p>`cat $media_file`</p>"
fi
# Add a row if count has reset.
if [[ -z $count ]]; then
count=0
fi
if [[ $count == 0 ]]; then
echo -e "\t\t</div>" >> $allpage
echo -e "\t\t<div class='row text'>" >> $allpage
fi
# Add a column.
echo -e "\t\t\t<div class=col-3>" >> $allpage
# Add the image.
echo -e "\t\t\t\t<div class=center>" >> $allpage
echo -e "\t\t\t\t\t<$a href='$media_uri'>$media</a>" >> $allpage
echo -e "\t\t\t\t</div>" >> $allpage
# Add the URLs.
echo -e "\t\t\t\t<div class=center>" >> $allpage
echo -e "\t\t\t\t\t<p><$a href='$dir_uri'>$dir_name</a></p>" >> $allpage
echo -e "\t\t\t\t</div>" >> $allpage
echo -e "\t\t\t\t<div class=center>" >> $allpage
echo -e "\t\t\t\t\t<p><$a href='$media_uri'>$media_name</a></p>" >> $allpage
echo -e "\t\t\t\t</div>" >> $allpage
# Close the column.
echo -e "\t\t\t</div>" >> $allpage
# Close the row and reset the the count if full.
if [[ $count == 3 ]]; then
echo -e "\t\t</div>" >> $allpage
count=0
else
count=$(( count + 1 ))
fi
done
# Add a final back button.
echo -en "\n\t\t<div class='row'>\n\t\t\t<a href='/photos'>" >> $allpage
echo -e "<h3 class='col-12 title'>Back</h3></a>\n\t\t</div>" >> $allpage
# Finish the ALL page.
$HELPER_DIR/body_close.php >> $allpage
echo "<!-- Built on `date`. -->" >> $allpage
remove_problem_strings $allpage
}
## Main ##
beg_time="$SECONDS"
start_main_page
build_album_pages
build_all_page
end_main_page
end_time="$SECONDS"
time="$(( $end_time - $beg_time ))"
echo "<!-- Script took '$time' seconds to process. -->" >> $mainpage
cat $mainpage cat $mainpage
exit 0 exit 0

View File

@ -3,13 +3,16 @@
Page for my resume and work skill links. Page for my resume and work skill links.
--> -->
<?php <?php
if (!isset($GLOBALS["HEADER_TITLE"])) {
$GLOBALS["HEADER_TITLE"] = "Resume";
}
include "helpers/body_open.php"; include "helpers/body_open.php";
?> ?>
<div class="row"> <div class="row">
<h1 class="col-12 title">Resume</h1> <h1 class="col-12 title">Resume</h1>
<div class="col-12 header center" > <div class="col-12 header center" >
<img src="/files/media/icons/home.jpg"> <!-- TBD use a new photo --> <img src="/files/media/icons/home.jpg" alt=""> <!-- TBD use a new photo -->
</div> </div>
<h2 class="col-12 title center">Current Status : Traveling Full Time</h2> <h2 class="col-12 title center">Current Status : Traveling Full Time</h2>
</div> </div>

View File

@ -12,12 +12,14 @@
I have not been sick since I cleaned up my lifestyle in 2014. No I have not been sick since I cleaned up my lifestyle in 2014. No
colds, flus, fevers, etc. My suggestions for accomplishing this colds, flus, fevers, etc. My suggestions for accomplishing this
are simple. Consistently: are simple. Consistently:
</p>
<ul class="indent"> <ul class="indent">
<li>eat enough clean food,</li> <li>eat enough clean food,</li>
<li>drink enough clean water,</li> <li>drink enough clean water,</li>
<li>get enough good sleep, and</li> <li>get enough good sleep, and</li>
<li>enjoy a low-stress life.</li> <li>enjoy a low-stress life.</li>
</ul> </ul>
<p>
Unfortunately our society today has many different views on how Unfortunately our society today has many different views on how
to do these things, most of which I would say do not work. A to do these things, most of which I would say do not work. A
quick list of my protocol without getting too into the weeds can quick list of my protocol without getting too into the weeds can

View File

@ -21,7 +21,7 @@
<div class="row"> <div class="row">
<div class="col-12 text"> <div class="col-12 text">
<p> <p>
Please feel free to use any of my free software below. Please feel welcome to use any of my free software below.
</p> </p>
</div> </div>
</div> </div>
@ -31,14 +31,42 @@
</div> </div>
<div class="row center text"> <div class="row center text">
<div class="col-12 text border" id="tictactoe">
<div class="col-12 text border" id="expense">
<a href="https://git.hyperling.com/me/flutter-expense-tracker/releases">
<figure> <figure>
<a href="https://git.hyperling.com/me/android-tictactoe/releases"> <img class="app-icon" loading="lazy" alt=""
<img loading="lazy" width="25%" height="25%" alt="tictactoe_image" src="/files/media/icons/expense.png"
src="/files/media/icons/tictactoe.png" >
/>
<figcaption> <figcaption>
<p>Tic-Tac-Toe</p> Recurring Expense Tracker
</figcaption>
</figure>
</a>
<p>
Keep track of repeating expenses and
view projections of their effect on your finances.
First app written with Flutter.
</p>
<p>
<!--[<s><a>F-Droid</a></s>]-->
[<a href="https://git.hyperling.com/me/flutter-expense-tracker/"
target="_blank" rel="noopener noreferrer">Source Code</a>]
[<a href="https://git.hyperling.com/me/flutter-expense-tracker/releases"
target="_blank" rel="noopener noreferrer">APKs / Obtainium URL</a>]
</p>
</div>
<div class="col-12 text border" id="tictactoe">
<a href="https://git.hyperling.com/me/android-tictactoe/releases">
<figure>
<img class="app-icon" loading="lazy" alt=""
src="/files/media/icons/tictactoe.png"
>
<figcaption>
Tic-Tac-Toe
</figcaption>
</figure>
</a> </a>
<p> <p>
Play against a friend or a range of AIs. Play against a friend or a range of AIs.
@ -51,20 +79,19 @@
[<a href="https://git.hyperling.com/me/android-tictactoe/releases" [<a href="https://git.hyperling.com/me/android-tictactoe/releases"
target="_blank" rel="noopener noreferrer">APKs / Obtainium URL</a>] target="_blank" rel="noopener noreferrer">APKs / Obtainium URL</a>]
</p> </p>
</figcaption>
</figure>
</div> </div>
<div class="row center">
<div class="col-12 text border" id="ctfu"> <div class="col-12 text border" id="ctfu">
<figure>
<a href="https://git.hyperling.com/me/android-carb-up/releases" <a href="https://git.hyperling.com/me/android-carb-up/releases"
target="_blank" rel="noopener noreferrer"> target="_blank" rel="noopener noreferrer">
<img loading="lazy" width="25%" height="25%" alt="ctfu_image" <figure>
<img class="app-icon" loading="lazy" alt=""
src="/files/media/icons/ctfu.png" src="/files/media/icons/ctfu.png"
/> >
<figcaption> <figcaption>
<p>Carb Up! BETA</p> Carb Up! BETA
</figcaption>
</figure>
</a> </a>
<p> <p>
Calculate cost-effective foods on a High Carb Low Fat lifestyle. Calculate cost-effective foods on a High Carb Low Fat lifestyle.
@ -82,20 +109,20 @@
[<a target="_blank" rel="noopener noreferrer">F-Droid</a>] [<a target="_blank" rel="noopener noreferrer">F-Droid</a>]
</s> </s>
</p>--> </p>-->
</figcaption>
</figure>
</div> </div>
<div class="col-12 text border" id="timer"> <div class="col-12 text border" id="timer">
<figure>
<a href="https://git.hyperling.com/me/android-infinite-timer/releases" <a href="https://git.hyperling.com/me/android-infinite-timer/releases"
target="_blank" rel="noopener noreferrer" target="_blank" rel="noopener noreferrer"
> >
<img loading="lazy" width="25%" height="25%" alt="infinitetimer_image" <figure>
<img class="app-icon" loading="lazy" alt=""
src="/files/media/icons/infinitetimer.png" src="/files/media/icons/infinitetimer.png"
/> >
<figcaption> <figcaption>
<p>Infinite Timer</p> Infinite Timer
</figcaption>
</figure>
</a> </a>
<p> <p>
Play a notification at your chosen interval. Play a notification at your chosen interval.
@ -113,19 +140,19 @@
[<a target="_blank" rel="noopener noreferrer">F-Droid</a>] [<a target="_blank" rel="noopener noreferrer">F-Droid</a>]
</s> </s>
</p>--> </p>-->
</figcaption>
</figure>
</div> </div>
<div class="col-12 text border" id="sleep"> <div class="col-12 text border" id="sleep">
<figure>
<a href="https://git.hyperling.com/me/android-45-minute-rule/releases" <a href="https://git.hyperling.com/me/android-45-minute-rule/releases"
target="_blank" rel="noopener noreferrer"> target="_blank" rel="noopener noreferrer">
<img loading="lazy" width="25%" height="25%" alt="45minuterule" <figure>
<img class="app-icon" loading="lazy" alt=""
src="/files/media/icons/t45mr.png" src="/files/media/icons/t45mr.png"
/> >
<figcaption> <figcaption>
<p>45 Minute Rule</p> 45 Minute Rule
</figcaption>
</figure>
</a> </a>
<p> <p>
Determine a good bedtime for waking during light sleep. Determine a good bedtime for waking during light sleep.
@ -143,22 +170,20 @@
[<a target="_blank" rel="noopener noreferrer">F-Droid</a>] [<a target="_blank" rel="noopener noreferrer">F-Droid</a>]
</s> </s>
</p>--> </p>-->
</figcaption>
</figure>
</div> </div>
<div class="col-12 text border" id="games"> <div class="col-12 text border" id="games">
<figure>
<a href="https://git.hyperling.com/me/android-hypergames/releases" <a href="https://git.hyperling.com/me/android-hypergames/releases"
target="_blank" rel="noopener noreferrer" target="_blank" rel="noopener noreferrer"
> >
<img loading="lazy" width="25%" height="25%" alt="hypergames_image" <figure>
<img class="app-icon" loading="lazy" alt=""
src="/files/media/icons/hypergames.png" src="/files/media/icons/hypergames.png"
/> >
<figcaption> <figcaption>
<p>
HyperGames HyperGames
</p> </figcaption>
</figure>
</a> </a>
<p> <p>
Started as a fun project for learning. Started as a fun project for learning.
@ -172,13 +197,13 @@
[<a href="https://git.hyperling.com/me/android-hypergames/releases" [<a href="https://git.hyperling.com/me/android-hypergames/releases"
target="_blank" rel="noopener noreferrer">APKs / Obtainium URL</a>] target="_blank" rel="noopener noreferrer">APKs / Obtainium URL</a>]
</p> </p>
<!--<p> <!--
<p>
<s> <s>
[<a target="_blank" rel="noopener noreferrer">F-Droid</a>] [<a target="_blank" rel="noopener noreferrer">F-Droid</a>]
</s>--> </s>
</p> </p>
</figcaption> -->
</figure>
</div> </div>
</div> </div>

View File

@ -7,65 +7,66 @@
<div class="row text"> <div class="row text">
<div class="col-4 center border"> <div class="col-4 center border">
<h3 class="title spacing">Preference 1 - Private Crypto</h3> <strong class="spacing">Preference 1 - Private Crypto</strong>
<p>Send me any type of coin.</p> <p>Send any type of coin.</p>
<div class="header"> <div class="header">
<!-- https://trocador.app/en/anonpayurlgenerator --> <!-- https://trocador.app/en/anonpayurlgenerator -->
<iframe src="https://trocador.app/anonpay/?ticker_to=xmr&network_to=Mainnet&address=4ATk6owoMki46CuVfyAHS57FB5deqVFudTsaifQC1cfmcaQemgPEftcjZcW9DmcyfrfdRjxHQ9m4JAVSorYTgm6h8JnT7ao&donation=True&amount=1337.0&name=Chad&description=Support+Chad+%40+Hyperling&email=me@hyperling,com&ticker_from=doge&network_from=Mainnet&buttonbgcolor=663399&textcolor=cccccc&bgcolor=" width="310" height="350" style="border:0" scrolling="no"></iframe> <iframe src="https://trocador.app/anonpay/?ticker_to=xmr&network_to=Mainnet&address=4ATk6owoMki46CuVfyAHS57FB5deqVFudTsaifQC1cfmcaQemgPEftcjZcW9DmcyfrfdRjxHQ9m4JAVSorYTgm6h8JnT7ao&donation=True&amount=1337.0&name=Chad&description=Support+Chad+%40+Hyperling&email=me@hyperling,com&ticker_from=doge&network_from=Mainnet&buttonbgcolor=663399&textcolor=cccccc&bgcolor=" width="310" height="350" style="border:0; overflow:hidden;"></iframe>
</div> </div>
</div> </div>
<div class="col-4 center border"> <div class="col-4 center border">
<h3 class="title spacing">Preference 2 - Public Crypto</h3> <strong class="spacing">Preference 2 - Public Crypto</strong>
<p>Donate directly to my addresses.</p> <p>Donate directly to an address.</p>
<div class="header"> <div class="header">
<br/> <br>
<strong><code>XMR | Monero</code></strong> <strong><code>XMR | Monero</code></strong>
<div class="code"><code>4ATk6owoMki46CuVfyAHS57FB5deqVFudTsaifQC1cfmcaQemgPEftcjZcW9DmcyfrfdRjxHQ9m4JAVSorYTgm6h8JnT7ao</code></div> <div class="code"><code>4ATk6owoMki46CuVfyAHS57FB5deqVFudTsaifQC1cfmcaQemgPEftcjZcW9DmcyfrfdRjxHQ9m4JAVSorYTgm6h8JnT7ao</code></div>
<br/> <br>
<strong><code>BTC | Bitcoin</code></strong> <strong><code>BTC | Bitcoin</code></strong>
<div class="code"><kbd>bc1qsfe8dkvry3d34kztz449gkq67wq8fu2nkgfkh0</kbd></div> <div class="code"><code>bc1qsfe8dkvry3d34kztz449gkq67wq8fu2nkgfkh0</code></div>
<br/> <br>
<strong><code>LTC | Litecoin</code></strong> <strong><code>LTC | Litecoin</code></strong>
<div class="code"><code>ltc1qavmpu5d6ljntxsd6jj548m4yys83zwscl0dzkx</code></div> <div class="code"><code>ltc1qavmpu5d6ljntxsd6jj548m4yys83zwscl0dzkx</code></div>
<br/> <br>
<strong><code>LBC | Odysee's Coin</code></strong> <strong><code>LBC | Odysee's Coin</code></strong>
<div class="code"><code>bDWP6qZajtm9Q9EkryKTorRwKFd5eDbPJj</code></div> <div class="code"><code>bDWP6qZajtm9Q9EkryKTorRwKFd5eDbPJj</code></div>
<br/> <br>
</div> </div>
</div> </div>
<div class="col-4 center border"> <div class="col-4 center border">
<h3 class="title spacing">Preference 3 - Public USD</h3> <strong class="spacing">Preference 3 - Public USD</strong>
<p>Send USD to a fiat-based account.</p> <p>Send USD to a fiat-based account.</p>
<div class="header"> <div class="header">
<br/> <br>
<strong><code>Zelle</code></strong> <strong><code>Zelle</code></strong>
<div class="code"> <div class="code">
<kbd>me@hyperling.com</kbd> <code>me@hyperling.com</code>
<br/> <br>
<br/> <br>
<img src="/files/media/icons/zelle.png"> <img src="/files/media/icons/zelle.png" alt="">
</div> </div>
<br/> <br>
<strong><code>Venmo</code></strong> <strong><code>Venmo</code></strong>
<div class="code"> <div class="code">
<kbd> <code>
@HyperVegan @HyperVegan
<br/> <br>
<br/> <br>
<kbd>[<a href="https://account.venmo.com/u/HyperVegan" <code>[<a href="https://account.venmo.com/u/HyperVegan"
target="_blank" rel="noopener noreferrer" target="_blank" rel="noopener noreferrer"
>Account Page</a>] >Account Page</a>]
</kbd> </code>
</code>
</div> </div>
<br/> <br>
</div> </div>
</div> </div>

View File

@ -3,13 +3,16 @@
Page to provide ways people can support me. Page to provide ways people can support me.
--> -->
<?php <?php
if (!isset($GLOBALS["HEADER_TITLE"])) {
$GLOBALS["HEADER_TITLE"] = "Support";
}
include "helpers/body_open.php"; include "helpers/body_open.php";
?> ?>
<div class="row"> <div class="row">
<h1 class="col-12 title">Support</h1> <h1 class="col-12 title">Support</h1>
<div class="col-12 header center" > <div class="col-12 header center" >
<img src="/files/media/icons/support.jpg"> <img src="/files/media/icons/support.jpg" alt="">
</div> </div>
<div class="col-12 text center"> <div class="col-12 text center">
<p> <p>

View File

@ -4,26 +4,33 @@
cd `dirname $0` cd `dirname $0`
# Create the necessary HTML components for a web page. # Create the necessary HTML components for a web page.
./helpers/body_open.php ./helpers/body_open.php | sed -e 's/Hyperling/Hyperling: Test Page!/'
echo -e "\t\t<h1>This is a web page written in BASH!!!</h1>" echo -e "\t\t<div class='row'>"
echo -e "\t\t\t<h1 class='col-12 title'>This is a web page written in BASH!!!</h1>"
cat << EOF cat << EOF
<p> <p class="col-12 text">
Look at all the fancy things we can do! Look at all the fancy things we can do!
</p> </p>
<h2>Current Time</h2>
<h2 class="col-12 header">Current Time</h2>
<div class="col-12 text">
<p> <p>
We can use the date command to spit out the time! We can use the date command to spit out the time!
</p> </p>
<p> <p>
`date` `date`
</p> </p>
</div>
EOF EOF
# Create a subsection # Create a subsection
echo -e "\t\t<h2>Server Neofetch</h2>" echo -e "\t\t\t<h2 class='col-12 header'>Server Neofetch</h2>"
echo -e "\t\t<p>" echo -en "\t\t\t<p class='col-12 text'>"
neofetch --stdout #neofetch --stdout | sed -e 's/\n/<br>/g'
echo -e "\t\t</p>" echo -n "jk lol"
echo -e "</p>"
echo -e "\t\t</div>"
# Finish the web page # Finish the web page
./helpers/body_close.php ./helpers/body_close.php

View File

@ -4,5 +4,8 @@
Deprecated 2024-03-06 for /media. Deprecated 2024-03-06 for /media.
--> -->
<?php <?php
if (!isset($GLOBALS["HEADER_TITLE"])) {
$GLOBALS["HEADER_TITLE"] = "Videos";
}
include "media.php"; include "media.php";
?> ?>

55
run.sh
View File

@ -21,6 +21,11 @@ function usage {
exit $1 exit $1
} }
function log {
message="$1"
echo -e "`date` - $message"
}
## Parameters ## ## Parameters ##
while getopts ':p:h' opt; do while getopts ':p:h' opt; do
@ -36,18 +41,25 @@ while getopts ':p:h' opt; do
esac esac
done done
if [[ -z $ports ]]; then
ports=8080
fi
## Build Environment ## ## Build Environment ##
# Ensure we are executing from this file's directory. # Ensure we are executing from this file's directory.
cd $DIR cd $DIR
sudo="" sudo=""
if [[ -z $LOGNAME ]]; then
LOGNAME="`whoami`"
fi
if [[ $LOGNAME != "root" ]]; then if [[ $LOGNAME != "root" ]]; then
echo "`date` - Using sudo since user is '$LOGNAME'." log "Using sudo since user is '$LOGNAME'."
sudo="sudo" sudo="sudo"
fi fi
echo "`date` - Check if any system dependencies need installed." log "Check if any system dependencies need installed."
if [[ ! `which php` ]]; then if [[ ! `which php` ]]; then
echo "- Installing PHP" echo "- Installing PHP"
$sudo apt-get install -y php-cli $sudo apt-get install -y php-cli
@ -60,9 +72,13 @@ if [[ ! `which npm` ]]; then
echo "- Installing NPM" echo "- Installing NPM"
$sudo apt-get install -y npm $sudo apt-get install -y npm
fi fi
if [[ ! `which curl` ]]; then
echo "- Installing Curl"
$sudo apt-get install -y curl
fi
# Directories and allowed page types are executable, others are not. # Directories and allowed page types are executable, others are not.
echo "`date` - Fix any strange file permissions." log "Fix any strange file permissions."
find ./pages/ | while read file; do find ./pages/ | while read file; do
if [[ $file == *".php" || $file == *".sh" || -d $file ]]; then if [[ $file == *".php" || $file == *".sh" || -d $file ]]; then
mode=755 mode=755
@ -72,16 +88,43 @@ find ./pages/ | while read file; do
chmod -c $mode $file chmod -c $mode $file
done done
echo "`date` - Check if any node modules need updated/installed." log "Check if any node modules need updated/installed."
npm install npm install
# Reset generated index files.
log "Removing old index files."
find files/photos/ -name "*".html -print -delete
{
count=1
http_code=0
port="${ports%% *}"
photos_uri=":$port/photos/"
beg_time="$SECONDS"
while [[ $http_code != "200" ]]; do
log "Sleeping for '$count' while waiting for $photos_uri to come up."
sleep $count
log "Checking if $photos_uri is available."
http_code="`curl --silent --fail --w '\n%{http_code}' localhost$photos_uri | tail -n 1`"
log "Check for $photos_uri responded with '$http_code'."
if (( $count >= 10 )); then
log "Giving up on loading $photos_uri after '$count' attempts."
break
else
count=$(( count + 1 ))
fi
done
end_time="$SECONDS"
time="$(( $end_time - $beg_time ))"
log "Finished checking for /photos/ after '$time' seconds."
} &
## Main ## ## Main ##
echo "`date` - Start website API." log "Start website API."
node ./main.js $ports node ./main.js $ports
status=$? status=$?
## Finish ## ## Finish ##
echo "`date` - Exiting with status '$status'." log "Exiting with status '$status'."
exit $status exit $status