Compare commits

...

162 Commits

Author SHA1 Message Date
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
71ac8f3cfe Merge pull request 'Style Overhaul' (#2) from dev into main
Reviewed-on: #2
2025-01-29 13:28:32 -07:00
297e0c90a9 Remove attempts at having columns take up the full row height, was not working. Likely due to how HTML renders they did not know how large the elements after them would be. 2025-01-29 13:23:01 -07:00
76429b1ace Try ensuring columns tak up full row height a different way. 2025-01-29 13:18:36 -07:00
c000140040 Add fill class so that donation boxes take up all the available height. 2025-01-29 13:16:10 -07:00
a48c767ffb Fix tags being on wrong level / element. 2025-01-29 13:13:30 -07:00
5d6e33a72c Add new spacing class for subheaders on donation page. Also give the subsections borders. 2025-01-29 13:07:18 -07:00
5832e5d4ab Test a background on the preference headers. 2025-01-29 13:00:55 -07:00
28fa1cd359 Change wording of resume download header. 2025-01-29 12:58:10 -07:00
f8f74b3aac Ensure no one thinks I'm a time traveler, lol. 2025-01-29 12:51:50 -07:00
64defc9885 Move status back up. 2025-01-29 12:47:48 -07:00
6ee9530b21 Change location of status and give it a darker background. 2025-01-29 12:46:38 -07:00
42905688b3 More wordiness fixes. 2025-01-29 12:44:10 -07:00
92c2aa6a42 Add missing word engineer, fix some wordiness. 2025-01-29 12:42:58 -07:00
d316251af9 Center the upper header text areas like main pages, and also change status! 2025-01-29 12:41:29 -07:00
dc11ec7456 Center the upper header text areas. 2025-01-29 12:41:13 -07:00
ba667207db Change wordiness of text and add some excitement. 2025-01-29 12:38:18 -07:00
8465e7e362 Remove dark background test, add border. 2025-01-29 12:35:35 -07:00
c0425b6de6 Remove the old table border classes. Allow using the border and no-border classes for sections which need manual intervention. 2025-01-29 12:34:21 -07:00
129cd43e3e Remove test code, try different background on app sections. 2025-01-29 12:32:39 -07:00
465bf50e51 Disable advisory at a site-wide level. 2025-01-29 12:30:20 -07:00
e820196ba7 Remove typo character. 2025-01-29 12:27:52 -07:00
3fdb1339c6 Keep links as h6. 2025-01-29 12:26:19 -07:00
b1d652a3fd Test doing the final URLs as monoscript rather than small headers. 2025-01-29 12:24:58 -07:00
fc8c80b98a Change background color of "let me help you!" section. 2025-01-29 12:23:17 -07:00
66f9c0561e Add missing underline under h1 photo area. 2025-01-29 12:21:09 -07:00
78decea24e Use a fancy way of saying writings without re-using words already on the page. 2025-01-29 12:19:05 -07:00
641815e178 Use a better word than writings. 2025-01-29 12:15:11 -07:00
c74f48d19a Better define what the Media page is. 2025-01-29 12:13:31 -07:00
60a56115f3 Fix styling and consistency between sub headers. 2025-01-29 12:09:50 -07:00
7f9fc0321f Remove typo character. 2025-01-29 12:07:31 -07:00
f9f89c0f84 Remove gap between h1 and image. 2025-01-29 12:05:42 -07:00
a1623c6fb5 Fix comment. 2025-01-29 12:05:21 -07:00
bc2db0d631 Fix where the newline is for visibility. 2025-01-29 12:01:37 -07:00
e5b2bc0961 Redo the media page, was arranges strangely and also want books to be first. 2025-01-29 12:01:17 -07:00
d96c328fa3 Try changing menu name to something longer again. 2025-01-29 11:55:53 -07:00
925963f3fd Re-enable the advisory. 2025-01-29 11:54:50 -07:00
16dcfe5aec Test removing advisory. 2025-01-29 11:53:14 -07:00
7506101e62 Change wording for advisory. 2025-01-29 11:52:55 -07:00
6bee3f793c Shorten profession blurb. 2025-01-29 11:49:06 -07:00
150f8aebb5 Adjust style of apps. 2025-01-29 11:42:34 -07:00
ed18d210fd Make the subsection headers be consistent too. 2025-01-29 11:34:27 -07:00
d2b115ced3 Adjust formatting of link text. 2025-01-29 11:29:14 -07:00
2d24d0c971 Shorten text. 2025-01-29 11:26:25 -07:00
612bf7b3cb Make the Venmo section more consistent with Zelle. 2025-01-29 11:11:13 -07:00
020453e521 Use consistent link formatting as the app page. 2025-01-29 11:08:29 -07:00
d9e2dc6875 Looked good on sme things, but overall not a good idea, also made site feel slower. 2025-01-29 11:04:41 -07:00
ef96e715f6 test only giving borders to divs within rows. 2025-01-29 11:00:40 -07:00
e2c08b0326 Change where the background is applied. 2025-01-29 10:59:11 -07:00
cdb462f2ec Ensure the background of the sub section is solid. 2025-01-29 10:56:37 -07:00
0bda5d18a6 See how only having one row looks so that there is not a border through the middle. 2025-01-29 10:56:10 -07:00
2b6caa3f89 Fix rows. Make each app the same size. 2025-01-29 10:54:12 -07:00
ceb25e00f8 Fix image settings. 2025-01-29 10:50:52 -07:00
7ad4d29024 Correct the sizes of the apps. 2025-01-29 10:48:21 -07:00
113a208019 Shrink the android apps section down. 2025-01-29 10:47:06 -07:00
8cdefe48fa Also needs the break at the beginning of the sub block. 2025-01-29 10:43:48 -07:00
ee26ce1112 QR needs another line break. 2025-01-29 10:42:28 -07:00
1082496b3e Add newline between name and QR. 2025-01-29 10:40:48 -07:00
63459cc098 Add a QR code for Zelle. 2025-01-29 10:39:18 -07:00
8142057673 More preference 3 styling adjustments. 2025-01-29 10:24:17 -07:00
4a1e376bd5 Add background to 3rd section. Make it look more similar to other columns. 2025-01-29 10:21:05 -07:00
56a08aaaa2 Change the URL to be the username. 2025-01-29 10:17:18 -07:00
22289e1a64 Add URL to Venmo account. 2025-01-29 10:14:06 -07:00
7c8a59abc5 Change order of donation preferences, add USD section. 2025-01-29 10:03:08 -07:00
d962f1ac74 Change footer so that message is not broken up. 2025-01-29 05:34:02 -07:00
760b2f79bc Try borders on rows. 2025-01-29 05:33:43 -07:00
ab3265b095 Try borders on columns. 2025-01-29 05:28:13 -07:00
0bc2384cd2 Try borders on divs. 2025-01-29 05:25:00 -07:00
576b7a0adf Reduce menu item word length, return site padding to normal. 2025-01-29 05:21:58 -07:00
4e194e584b Continue testing menu padding. 2025-01-29 05:19:06 -07:00
589146343b Try to fix craziness happening with top menu but not bottom. Add padding to bottom. 2025-01-29 05:17:14 -07:00
1498aeefb9 Remove empty rulesets. 2025-01-29 05:13:45 -07:00
db83b2211d Try to vertically center the items. #2 2025-01-29 05:11:48 -07:00
35102cafca Meu item is still broken up? At least try to vertically center the items. 2025-01-29 05:09:18 -07:00
b75a47c847 Reduce padding back to 10, 12 still breaks menu item. 2025-01-29 05:07:00 -07:00
8218498bd0 nowrap didn't help, reduce padding. 2025-01-29 05:03:20 -07:00
3b37e251c1 Do not allow menu items to wrap. 2025-01-29 05:02:17 -07:00
cf57b5576b Try going back to a larger column padding now that menu items are explicitly 0. 2025-01-29 05:00:24 -07:00
a3f6f63be9 Try a few more menu style / padding changes. 2025-01-29 04:58:45 -07:00
c50f790827 Breaks did not work properly. Add new menu cass for outer padding, ul does not seem to hold it well. 2025-01-29 04:55:18 -07:00
9ff2b29b51 Remove padding CSS for menu and add breaks instead. 2025-01-29 04:52:21 -07:00
b8c0471589 Add more vertical padding to menu, again. 2025-01-29 04:49:32 -07:00
9ddf63fff0 Add more vertical padding to menu. 2025-01-29 04:46:41 -07:00
b41fc43e7d Add more vertical padding to menu boxes. 2025-01-29 04:29:26 -07:00
2bb66d4b47 Add padding between addresses again. 2025-01-29 04:25:38 -07:00
103b725ed5 Remove p to see if it fixes the spacing issue for XMR. 2025-01-29 04:24:10 -07:00
7a02f185e9 Try kbd on an address. 2025-01-29 04:21:05 -07:00
5d4c8cb54b Fix p tag. 2025-01-29 04:20:34 -07:00
20fba003a7 Move padding to outside of sub block. 2025-01-29 04:18:16 -07:00
2a1ebae2ce Remove excess padding. 2025-01-29 04:16:41 -07:00
c4daad5c3b Convert all addresses to code blocks. 2025-01-29 04:14:59 -07:00
34a6ff5f62 Remove excess center tag. 2025-01-29 04:13:06 -07:00
0ae0590c22 Add a bit more padding so scrollbar does not cover data. 2025-01-29 04:12:40 -07:00
73a8c820c3 Try centering code block a different way since class is not working. 2025-01-29 04:10:54 -07:00
bd4e7684c9 Scrolling is working! Start fine tuning the box. 2025-01-29 04:08:15 -07:00
3cb079d111 Try making the code area a div class. 2025-01-29 04:02:15 -07:00
6f979f00d9 Hard-set the width of a code block. 2025-01-29 03:59:12 -07:00
a1a76a1985 Continue trying tonadd scrollbar. 2025-01-29 03:57:57 -07:00
4ed4290f67 Try making code blocks scrollable. 2025-01-29 03:54:11 -07:00
1114b65e57 Add a newline between test addresses. 2025-01-29 03:50:58 -07:00
2ff05403b6 Test having an address in a pre+code block. 2025-01-29 03:49:51 -07:00
968d68312a Change wording. 2025-01-29 03:44:56 -07:00
4955b13905 Remove the div padding due to imbalanced borders and try a smaller column padding. 2025-01-29 03:40:59 -07:00
429f419220 Also center the 2nd sub block. 2025-01-29 03:39:21 -07:00
1104d28b28 Also center the text above sub blocks. 2025-01-29 03:37:54 -07:00
1728600f66 Reduce length of LBC description. 2025-01-29 03:36:59 -07:00
a22b875bd2 Remove test borders. 2025-01-29 03:35:16 -07:00
7ac2eaf745 Monero address is still pretty long. Try styling better to see if it can be acceptable. 2025-01-29 03:34:16 -07:00
b404e26530 Try not indenting the crypto addresses. 2025-01-29 03:32:04 -07:00
2fa6d7272c Add the spaces back to media link, the change to padding fixed the double line issue. 2025-01-29 03:29:45 -07:00
c0b043f515 Reduce characters in media link. 2025-01-29 03:27:49 -07:00
d2aef28044 Fix typo in comment. 2025-01-29 03:26:37 -07:00
276a4857ff Reduce column padding to account for new div padding. 2025-01-29 03:24:42 -07:00
1044b60d92 Add alias for the support page (/donate). 2025-01-29 03:21:47 -07:00
ee213ee9f7 See how adding padding to divs affects the website. Enable colored borders for analysis. 2025-01-29 03:14:42 -07:00
6adf13ef06 Text backgrouns is good, now working on getting header background for addresses to fit better. 2025-01-29 03:14:16 -07:00
6fd747aa1d Getting much closer! Now try to get the addresses and trocador to have their background end at the same spot. 2025-01-29 03:10:22 -07:00
6b07c420e5 Try fixing style of subsections. 2025-01-29 03:06:53 -07:00
1b414d4d72 Minify size of crypto donation sections. 2025-01-29 02:59:44 -07:00
022905ff71 Be more explicit with menu links. 2025-01-29 02:53:41 -07:00
32 changed files with 1026 additions and 426 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,14 +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>
<div class="row">
<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,21 +1,22 @@
#!/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>
<div class="row">
<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">
<div class="col-12 title"> <div class="col-12 title center">
<p> <p>
Timely responses are not guarenteed, as I spend a majority of Timely responses are not guarenteed, as I spend a majority of
my time offline and enjoy traveling in signal-free zones. my time offline and enjoy traveling in reception-free zones.
</p> </p>
</div> </div>
</div> </div>

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";
?>

10
pages/donate.php Executable file
View File

@ -0,0 +1,10 @@
#!/usr/bin/php
<!--
Alias for the support page with a more common name.
-->
<?php
if (!isset($GLOBALS["HEADER_TITLE"])) {
$GLOBALS["HEADER_TITLE"] = "Donate";
}
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 new 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

@ -8,6 +8,9 @@
<?php <?php
include "banner.php"; include "banner.php";
include "menu.php"; include "menu.php";
/* 2025-01-29 Disable advisory now that Books is explicitly a menu item. * /
if (!isset($GLOBALS["ADVISORY"]) || $GLOBALS["ADVISORY"] !== false) if (!isset($GLOBALS["ADVISORY"]) || $GLOBALS["ADVISORY"] !== false)
include "advisory.php"; include "advisory.php";
/* */
?> ?>

View File

@ -30,3 +30,7 @@
.text { .text {
background-color: #333333; background-color: #333333;
} }
.code {
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

@ -7,20 +7,20 @@
</div> </div>
<div class="row" id="footer"> <div class="row" id="footer">
<div class="col-12 text 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-3 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-3 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,7 +1,7 @@
/*** 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, maks the element think its entire size includes padding. */ /* Enable dynamic stuffs, makes the element think its entire size includes padding. */
* { * {
box-sizing: border-box; box-sizing: border-box;
} }
@ -24,7 +24,9 @@
[class*="col-"] { [class*="col-"] {
float: left; float: left;
padding: 15px; padding: 15px;
/*border: 1px solid green;*/ /* FORTESTING otherwise disable */
/* FORTESTING, otherwise disable */
/*border: 1px solid green;*/
} }
/* Ensure columns are respected as if they always exist. */ /* Ensure columns are respected as if they always exist. */
@ -34,7 +36,18 @@
display: table; display: table;
} }
.row {
border: 1px solid #131313;
border-radius: 4px;
}
/** Make the menu items centered and layout horizontal. **/ /** Make the menu items centered and layout horizontal. **/
/*
.menu {
padding-top: 10px;
padding-bottom: 10px;
}
*/
.menu-list { .menu-list {
text-align: center; text-align: center;
list-style-type: none; list-style-type: none;
@ -42,6 +55,8 @@
} }
.menu_item { .menu_item {
display: inline-block; display: inline-block;
padding: 0px;
white-space: nowrap;
} }
/** Be able to position anything easily. **/ /** Be able to position anything easily. **/
@ -60,14 +75,21 @@
list-style-type: none; list-style-type: none;
} }
/** Objects which need borders **/ /** Extra objects which need borders **/
.border { .border {
border: 1px solid #33CC33; border: 1px solid #131313;
border-radius: 4px;
} }
/* Also have this apply to a table's cells. */ /** Explicitly remove border from some objects. **/
.border * th,td { .no-border {
border: 1px solid #33CC33; border: 0px;
}
/** When a field needs more background color above and below. **/
.spacing {
padding-top: 5px;
padding-bottom: 5px;
} }
/** Format tables and allow contents to be broken up. **/ /** Format tables and allow contents to be broken up. **/
@ -88,9 +110,35 @@
max-height: 500px; max-height: 500px;
} }
/* FORTESTING, otherwise disable */
/*
div {
border: 1px solid red;
}
*/
.code {
max-width: 90%;
margin-left: 5%;
overflow: auto;
overflow-x: scroll;
overflow-y: hidden;
padding: 10px;
border: 2px solid #131313;
border-radius: 8px;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}
body { body {
max-width: 1300px; max-width: 1300px;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
padding: 5px; padding: 5px;
} }
.app-icon {
width: 25%;
height: 25%;
}

View File

@ -1,8 +1,8 @@
#!/usr/bin/php #!/usr/bin/php
<div class="row header"> <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/">Apps</a></li> <li class="col-2 menu-item"><a href="/apps/">Apps</a></li>
<li class="col-2 menu-item"><a href="/media/">Media</a></li> <li class="col-2 menu-item"><a href="/media/">Media</a></li>
<li class="col-2 menu-item"><a href="/about/">About</a></li> <li class="col-2 menu-item"><a href="/about/">About</a></li>
<li class="col-2 menu-item"><a href="/contact/">Contact</a></li> <li class="col-2 menu-item"><a href="/contact/">Contact</a></li>

View File

@ -3,15 +3,16 @@
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>
<div class="row">
<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">

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

@ -1,8 +1,11 @@
#!/usr/bin/php #!/usr/bin/php
<!-- <!--
Page to provide ways people can support me. 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,17 +3,45 @@
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">Videos</h1> <h1 class="col-12 title">Media</h1>
<div class="col-12 header center" >
<img src="/files/media/icons/videos.jpg" alt="">
</div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-12 header center" > <div class="col-12 text center">
<img src="/files/media/icons/videos.jpg"> <p>
My written works, social platforms, and photos can be found here.
</p>
</div> </div>
</div> </div>
<div class="row">
<h2 class="col-12 header">Books</h2>
</div>
<div class="row">
<div class="col-12 text">
<p>
I enjoy writing! Find my free eBooks below.
</p>
<ul class="indent"><li>
<a href="/health/">My Health Protocol</a>
</li></ul>
</div>
</div>
<div class="row" id="donate">
<h2 class="col-12 header">Videos</h2>
</div>
<div class="row"> <div class="row">
<div class="col-12 text"> <div class="col-12 text">
<p> <p>
@ -47,20 +75,6 @@
</div> </div>
</div> </div>
<div class="row">
<h1 class="col-12 title">Books</h1>
</div>
<div class="row">
<div class="col-12 text">
<p>
I enjoy writing! Find my free eBooks below.
</p>
<ul class="indent"><li>
<a href="/health/">My Health Protocol</a>
</li></ul>
</div>
</div>
<!-- WIP <!-- WIP
<div class="row"> <div class="row">
<h1 class="col-12 title">Art / Poetry</h1> <h1 class="col-12 title">Art / Poetry</h1>
@ -78,7 +92,7 @@
--> -->
<div class="row"> <div class="row">
<h1 class="col-12 title">Personal Media</h1> <h2 class="col-12 header">Photography</h2>
</div> </div>
<div class="row"> <div class="row">
<div class="col-12 text"> <div class="col-12 text">

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,8 +28,11 @@ if [[ -e $mainpage ]]; then
exit 0 exit 0
fi fi
## Start the main /photos/ page. ##
function start_main_page {
# Create the necessary HTML components for a web page. # Create the necessary HTML components for a web page.
$HELPER_DIR/body_open.php > $mainpage $HELPER_DIR/body_open.php > $mainpage
sed -i -e 's/Hyperling/Hyperling: Photos/' $mainpage
echo "" >> $mainpage echo "" >> $mainpage
# Give the page a description. # Give the page a description.
@ -46,10 +49,27 @@ echo -e "video name to pull up the full resolution for download.</p>" >> $mainpa
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
echo -e "\t\t<div class='row'>" >> $mainpage
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. # Display the album names descending.
ls $PHOTOS_DIR/ | sort -r | while read album; do 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
@ -120,8 +141,7 @@ ls $PHOTOS_DIR/ | sort -r | while read album; do
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 +151,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
@ -159,15 +179,122 @@ 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 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 ##
start_main_page
build_album_pages
build_all_page
end_main_page
cat $mainpage cat $mainpage
exit 0 exit 0

View File

@ -3,22 +3,23 @@
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>
<div class="row">
<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>
</div> </div>
<div class="row"> <div class="row">
<h2 class="col-12 header">Current Status : Full Time Contractor</h2> <div class="col-12 text center">
<div class="col-12 text">
<p> <p>
Interested in hiring me? Please find my resume below! Interested in hiring me? View my resume below!
</p> </p>
<ul class="indent"><li> <ul class="indent"><li>
<a href="https://hyperling.com/files/media/documents/Resume.pdf" <a href="https://hyperling.com/files/media/documents/Resume.pdf"

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

@ -5,16 +5,11 @@
<div class="row"> <div class="row">
<div class="col-12 text"> <div class="col-12 text">
<p> <p>
I'm a self-taught, college graduated, and professional software I'm a professional software engineer who's been playing with
developer with nearly a decade of experience in the corporate Linux system administration from a young age. Much of my career
world. I have been playing with Linux from a young age and have has focused on back-end / database systems and optimizing
always enjoyed doing system administration type activities. workflows. In my free time I enjoy learning new languages and
<p> writing apps for Android.
</p>
Much of my career has focused on back-end type systems such as
databases as well as optimizing workflows. I've learned many
languages over the years and hope to learn many more. In my free
time I have also enjoyed writing user-facing apps for Android.
</p> </p>
<!--<p><a href="/resume/">My resume can be found here</a>.</p>--> <!--<p><a href="/resume/">My resume can be found here</a>.</p>-->
</div> </div>
@ -26,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>
@ -34,15 +29,44 @@
<div class="row" id="android"> <div class="row" id="android">
<h3 class="col-12 header">Android Apps</h3> <h3 class="col-12 header">Android Apps</h3>
</div> </div>
<div class="row center">
<div class="col-12 text" id="tictactoe"> <div class="row center text">
<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 width="50%" height="50%" 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.
@ -55,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-6 text" 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 width="100%" height="100%" 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.
@ -86,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-6 text" 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="100%" height="100%" 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.
@ -117,21 +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>
<div class="row center"> <div class="col-12 text border" id="sleep">
<div class="col-6 text" 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="100%" height="100%" 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.
@ -149,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-6 text" 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="100%" height="100%" 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.
@ -178,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

@ -3,66 +3,71 @@
<div class="row" id="donate"> <div class="row" id="donate">
<h2 class="col-12 header">Donate</h2> <h2 class="col-12 header">Donate</h2>
</div> </div>
<div class="row">
<div class="col-12 text"> <div class="row text">
<p>
Donations can be provided directly to my crypto addresses. <div class="col-4 center border">
</p> <strong class="spacing">Preference 1 - Private Crypto</strong>
<!--<ul class="indent"><li> <p>Send any type of coin.</p>
<table class="border"> <div class="header">
<thead> <!-- https://trocador.app/en/anonpayurlgenerator -->
<tr> <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>
<th class="center"><strong>Description</strong></th> </div>
<th class="center"><strong>Ticker#</strong></th>
<th class="left"><strong>Address</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td class="center">Monero</td>
<td class="center">XMR</td>
<td class="left">4ATk6owoMki46CuVfyAHS57FB5deqVFudTsaifQC1cfmcaQemgPEftcjZcW9DmcyfrfdRjxHQ9m4JAVSorYTgm6h8JnT7ao</td>
</tr>
<tr>
<td class="center">LBRY/Odysee Credit</td>
<td class="center">LBC</td>
<td class="left">bDWP6qZajtm9Q9EkryKTorRwKFd5eDbPJj</td>
</tr>
</tbody>
</table>
</li></ul>-->
</div> </div>
<div class="col-12 header"> <div class="col-4 center border">
<p> <strong class="spacing">Preference 2 - Public Crypto</strong>
<p>Donate directly to an address.</p>
<div class="header">
<br>
<strong><code>XMR | Monero</code></strong> <strong><code>XMR | Monero</code></strong>
<ul class="indent"><li> <div class="code"><code>4ATk6owoMki46CuVfyAHS57FB5deqVFudTsaifQC1cfmcaQemgPEftcjZcW9DmcyfrfdRjxHQ9m4JAVSorYTgm6h8JnT7ao</code></div>
<kbd>4ATk6owoMki46CuVfyAHS57FB5deqVFudTsaifQC1cfmcaQemgPEftcjZcW9DmcyfrfdRjxHQ9m4JAVSorYTgm6h8JnT7ao</kbd> <br>
</li></ul>
<strong><code>BTC | Bitcoin</code></strong> <strong><code>BTC | Bitcoin</code></strong>
<ul class="indent"><li> <div class="code"><code>bc1qsfe8dkvry3d34kztz449gkq67wq8fu2nkgfkh0</code></div>
<kbd>bc1qsfe8dkvry3d34kztz449gkq67wq8fu2nkgfkh0</kbd> <br>
</li></ul>
<strong><code>LTC | Litecoin</code></strong> <strong><code>LTC | Litecoin</code></strong>
<ul class="indent"><li> <div class="code"><code>ltc1qavmpu5d6ljntxsd6jj548m4yys83zwscl0dzkx</code></div>
<kbd>ltc1qavmpu5d6ljntxsd6jj548m4yys83zwscl0dzkx</kbd> <br>
</li></ul>
<strong><code>LBC | LBRY/Odysee Credit</code></strong> <strong><code>LBC | Odysee's Coin</code></strong>
<ul class="indent"><li> <div class="code"><code>bDWP6qZajtm9Q9EkryKTorRwKFd5eDbPJj</code></div>
<kbd>bDWP6qZajtm9Q9EkryKTorRwKFd5eDbPJj</kbd> <br>
</li></ul> </div>
<p>
</div> </div>
<div class="col-12 text"> <div class="col-4 center border">
<p>Or use the widget below to send me any coin you'd like!</p> <strong class="spacing">Preference 3 - Public USD</strong>
<p>Send USD to a fiat-based account.</p>
<div class="header">
<br>
<strong><code>Zelle</code></strong>
<div class="code">
<code>me@hyperling.com</code>
<br>
<br>
<img src="/files/media/icons/zelle.png" alt="">
</div>
<br>
<strong><code>Venmo</code></strong>
<div class="code">
<code>
@HyperVegan
<br>
<br>
<code>[<a href="https://account.venmo.com/u/HyperVegan"
target="_blank" rel="noopener noreferrer"
>Account Page</a>]
</code>
</code>
</div>
<br>
</div>
</div> </div>
<div class="col-12 center header">
<!-- 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>
</div>
</div> </div>

View File

@ -3,20 +3,20 @@
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>
<div class="row">
<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"> <div class="col-12 text center">
<p> <p>
Your contributions are completely optional and very much Anything is very much appreciated!! Thank you for considering me!
appreciated. Thank you for considering me and my work!
</p> </p>
</div> </div>
</div> </div>

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";
?> ?>

52
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,40 @@ 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/"
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
log "Finished checking for /photos/."
} &
## 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