From 83f577250deb40576ca6a1aa2866dd230d826776 Mon Sep 17 00:00:00 2001 From: iodomi Date: Sat, 20 Jun 2026 23:21:19 +0200 Subject: [PATCH 1/8] chore: add more funny slogans --- slogans.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/slogans.txt b/slogans.txt index e1f404f..f9d4001 100644 --- a/slogans.txt +++ b/slogans.txt @@ -11,3 +11,9 @@ bo prawdziwi ludzie używają `vi`. retro jest teraz. jesteśmy tu dla `echo "hello world"`. dzwoń do nas przez `write`. +bez slopu! +mniej to więcej. +o jeden ssh z dala. +tak, lubimy terminale. +`ed` jest standardowym edytorem tekstu. +wszystko albo /dev/null. From 24682c9947e9c0303c84c1a2a7decc9937c54a7d Mon Sep 17 00:00:00 2001 From: iodomi Date: Mon, 22 Jun 2026 02:45:32 +0200 Subject: [PATCH 2/8] feat(deps): add parsedown and parsedown-extra as submodules --- .gitmodules | 6 ++++++ parsedown | 1 + parsedown-extra | 1 + 3 files changed, 8 insertions(+) create mode 100644 .gitmodules create mode 160000 parsedown create mode 160000 parsedown-extra diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..6704f18 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "parsedown"] + path = parsedown + url = https://github.com/erusev/parsedown.git +[submodule "parsedown-extra"] + path = parsedown-extra + url = https://github.com/erusev/parsedown-extra.git diff --git a/parsedown b/parsedown new file mode 160000 index 0000000..4e433a8 --- /dev/null +++ b/parsedown @@ -0,0 +1 @@ +Subproject commit 4e433a8d57078645b55d21fd12c887d3ba6ca01e diff --git a/parsedown-extra b/parsedown-extra new file mode 160000 index 0000000..cf4dc29 --- /dev/null +++ b/parsedown-extra @@ -0,0 +1 @@ +Subproject commit cf4dc29794d22ab441fddd2b336b5c54f7ae2e2f From 168974e6ce4d63618c5efb1c9028a4683a4b1cb5 Mon Sep 17 00:00:00 2001 From: iodomi Date: Mon, 22 Jun 2026 12:08:55 +0200 Subject: [PATCH 3/8] fix: inconsistent href colors --- static/css/main.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/static/css/main.css b/static/css/main.css index 2e39fdb..22096b6 100644 --- a/static/css/main.css +++ b/static/css/main.css @@ -86,12 +86,12 @@ footer#footer { justify-content: center; } -.link { +a[href] { color: var(--link); text-decoration: none; } -.link:hover { +a[href]:hover { color: var(--link-hover); } From 49beaa601af26f9a192c225cf263524d5a112ec5 Mon Sep 17 00:00:00 2001 From: iodomi Date: Mon, 22 Jun 2026 14:58:00 +0200 Subject: [PATCH 4/8] feat: add ssh fingerprints --- fingerprint.php | 16 ++++++++++++++++ footer.php | 1 + 2 files changed, 17 insertions(+) create mode 100644 fingerprint.php diff --git a/fingerprint.php b/fingerprint.php new file mode 100644 index 0000000..ade2847 --- /dev/null +++ b/fingerprint.php @@ -0,0 +1,16 @@ + + + +
+

> SSH Fingerprint

+
+ +
+ +

SHA256:MPApCxVOpQc/9rXExcYC2bDwM9SzSwRx2RSaEhGoGEw (RSA)

+

SHA256:Jeciv5YkUraww9aAxtz/nzsWywKx649dqUuMjDAzER0 (ED25519)

+

SHA256:65R9vGOH/3c/E5upbYB2yhK83fO0cts9c6hShg/ylio (ECDSA)

+ +
+ + diff --git a/footer.php b/footer.php index 67ff4ef..cd9d716 100644 --- a/footer.php +++ b/footer.php @@ -1,6 +1,7 @@ From a9dd0ab799a12e63c5240a4e112b655d7d6a93d2 Mon Sep 17 00:00:00 2001 From: iodomi Date: Mon, 22 Jun 2026 16:01:47 +0200 Subject: [PATCH 5/8] feat: add active users and update user list style --- index.php | 18 ++++++++++++++++++ static/css/main.css | 43 +++++++++++++++++++++++++++++++++++++++++++ users.php | 45 +++++++++++++++++++++++++++++++++++---------- 3 files changed, 96 insertions(+), 10 deletions(-) diff --git a/index.php b/index.php index d8adb6f..47a5c1d 100644 --- a/index.php +++ b/index.php @@ -20,8 +20,26 @@ include 'header.php'; $slogans = file("slogans.txt"); $slogan = $slogans[rand(0, count($slogans) - 1)]; +$activeUsers = json_decode(file_get_contents('/opt/html/online.json'), true); ?> +
+

Użytkownicy online: '; + foreach ($activeUsers as $user) { + $username = htmlspecialchars($user); + echo "$username  "; + } + echo ''; +} else { + echo "/dev/null"; +} + +?>

+ +
+
    /$$               /$$       /$$
   | $$              | $$      | $$
diff --git a/static/css/main.css b/static/css/main.css
index 22096b6..d8932c1 100644
--- a/static/css/main.css
+++ b/static/css/main.css
@@ -103,11 +103,54 @@ footer#footer > *:not(:last-child)::after {
 }
 
 pre.ascii {
+    margin-top: 2rem;
     margin-bottom: 2rem;
     font-size: 1rem;
     overflow: auto;
 }
 
+.scroll {
+    display: flex;
+    overflow: hidden;
+    white-space: pre;
+    align-items: center;
+}
+
+.scroll h3 {
+    flex-shrink:0;
+}
+
+.scroll a:before {
+    content:"~";
+}
+
+.scroll marquee {
+    margin-bottom: -.3rem;
+    width: 60%;
+}
+
+.scroll a {
+    padding: .3rem
+}
+
+.user-list {
+    display: grid;
+    grid-template-columns: repeat(auto-fill, minmax(195px, 1fr));
+}
+
+.user-list a {
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    flex: 10em;
+    padding-bottom: .3rem;
+    padding-top: .3rem;
+}
+
+.user-list a:before {
+    content:"~";
+}
+
 .user_home {
   display: grid;
   grid-template-columns: 100px 30px 100px 100px 40px 120px 15px;
diff --git a/users.php b/users.php
index a01e73d..62208ae 100644
--- a/users.php
+++ b/users.php
@@ -1,20 +1,45 @@
-
 

> Users

-Lista użytkowników i linki do ich blogów +Lista użytkowników obecnie aktywnych: + +
+ $username"; + } + } else { + echo "..."; + } + + ?> +
+ +
+ +Lista użytkowników i linki do ich blogów:
    -~$file"; -} -?> +
    + $file"; + } + ?> +
From fe38b3db2dd0525575f99786df1d7066a9eed1d8 Mon Sep 17 00:00:00 2001 From: iodomi Date: Mon, 22 Jun 2026 16:02:50 +0200 Subject: [PATCH 6/8] feat: add wiki --- wiki/COPYRIGHT.md | 438 +++++++++++++++++++++++++++++++++ wiki/README.md | 10 + wiki/index.php | 95 +++---- wiki/page.php | 42 ++++ wiki/source/cloud.md | 5 + wiki/source/gitea.md | 5 + wiki/source/moving.md | 17 ++ wiki/source/public_services.md | 7 + wiki/source/vim.md | 12 + wiki/source/webring.md | 14 ++ 10 files changed, 601 insertions(+), 44 deletions(-) create mode 100644 wiki/COPYRIGHT.md create mode 100644 wiki/README.md create mode 100644 wiki/page.php create mode 100644 wiki/source/cloud.md create mode 100644 wiki/source/gitea.md create mode 100644 wiki/source/moving.md create mode 100644 wiki/source/public_services.md create mode 100644 wiki/source/vim.md create mode 100644 wiki/source/webring.md diff --git a/wiki/COPYRIGHT.md b/wiki/COPYRIGHT.md new file mode 100644 index 0000000..7cdbe0b --- /dev/null +++ b/wiki/COPYRIGHT.md @@ -0,0 +1,438 @@ +Attribution-NonCommercial-ShareAlike 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International +Public License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution-NonCommercial-ShareAlike 4.0 International Public License +("Public License"). To the extent this Public License may be +interpreted as a contract, You are granted the Licensed Rights in +consideration of Your acceptance of these terms and conditions, and the +Licensor grants You such rights in consideration of benefits the +Licensor receives from making the Licensed Material available under +these terms and conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. BY-NC-SA Compatible License means a license listed at + creativecommons.org/compatiblelicenses, approved by Creative + Commons as essentially the equivalent of this Public License. + + d. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + e. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + f. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + g. License Elements means the license attributes listed in the name + of a Creative Commons Public License. The License Elements of this + Public License are Attribution, NonCommercial, and ShareAlike. + + h. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + i. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + j. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + k. NonCommercial means not primarily intended for or directed towards + commercial advantage or monetary compensation. For purposes of + this Public License, the exchange of the Licensed Material for + other material subject to Copyright and Similar Rights by digital + file-sharing or similar means is NonCommercial provided there is + no payment of monetary compensation in connection with the + exchange. + + l. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + m. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + n. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part, for NonCommercial purposes only; and + + b. produce, reproduce, and Share Adapted Material for + NonCommercial purposes only. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. Additional offer from the Licensor -- Adapted Material. + Every recipient of Adapted Material from You + automatically receives an offer from the Licensor to + exercise the Licensed Rights in the Adapted Material + under the conditions of the Adapter's License You apply. + + c. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties, including when + the Licensed Material is used other than for NonCommercial + purposes. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + b. ShareAlike. + + In addition to the conditions in Section 3(a), if You Share + Adapted Material You produce, the following conditions also apply. + + 1. The Adapter's License You apply must be a Creative Commons + license with the same License Elements, this version or + later, or a BY-NC-SA Compatible License. + + 2. You must include the text of, or the URI or hyperlink to, the + Adapter's License You apply. You may satisfy this condition + in any reasonable manner based on the medium, means, and + context in which You Share Adapted Material. + + 3. You may not offer or impose any additional or different terms + or conditions on, or apply any Effective Technological + Measures to, Adapted Material that restrict exercise of the + rights granted under the Adapter's License You apply. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database for NonCommercial purposes + only; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material, + including for purposes of Section 3(b); and + + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + +======================================================================= + +Creative Commons is not a party to its public +licenses. Notwithstanding, Creative Commons may elect to apply one of +its public licenses to material it publishes and in those instances +will be considered the “Licensor.” The text of the Creative Commons +public licenses is dedicated to the public domain under the CC0 Public +Domain Dedication. Except for the limited purpose of indicating that +material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the +public licenses. + +Creative Commons may be contacted at creativecommons.org. + diff --git a/wiki/README.md b/wiki/README.md new file mode 100644 index 0000000..c8c5612 --- /dev/null +++ b/wiki/README.md @@ -0,0 +1,10 @@ +# wiki tylda.org +każdy artykuł posiada na początku wartości: + +title [nazwa twojego artykułu] + +authors: [twoja nazwa na tyldzie] + +category: [tylda, poradniki, technologia, linki] + +po utworzeniu nowego artykułu utwórz PR'a lub wyślij patcha mailem. diff --git a/wiki/index.php b/wiki/index.php index 12e5bff..218cd03 100644 --- a/wiki/index.php +++ b/wiki/index.php @@ -1,60 +1,67 @@ setMarkupEscaped(true); +$Extra = new ParsedownExtra(); ?> -
- /$$$$$$$$        /$$       /$$                 /$$      /$$ /$$ /$$       /$$
-|__  $$__/       | $$      | $$                | $$  /$ | $$|__/| $$      |__/
-   | $$ /$$   /$$| $$  /$$$$$$$  /$$$$$$       | $$ /$$$| $$ /$$| $$   /$$ /$$
-   | $$| $$  | $$| $$ /$$__  $$ |____  $$      | $$/$$ $$ $$| $$| $$  /$$/| $$
-   | $$| $$  | $$| $$| $$  | $$  /$$$$$$$      | $$$$_  $$$$| $$| $$$$$$/ | $$
-   | $$| $$  | $$| $$| $$  | $$ /$$__  $$      | $$$/ \  $$$| $$| $$_  $$ | $$
-   | $$|  $$$$$$$| $$|  $$$$$$$|  $$$$$$$      | $$/   \  $$| $$| $$ \  $$| $$
-   |__/ \____  $$|__/ \_______/ \_______/      |__/     \__/|__/|__/  \__/|__/
-        /$$  | $$
-       |  $$$$$$/
-        \______/
-
- +

> Wiki

-Wiki jest aktualnie w trakcie tworzenia, poniżej znajdziesz najważniejsze informacje, które przydadzą Ci się na starcie ;)
-

Poruszanie się po systemie

-

Po zalogowaniu domyślnie będziesz mieć otwartą sesję TMUX z trzema zakładkami: Mail (neomutt), IRC (weechat) oraz shell i kilkoma keybindami.

-

Keybindy, które mogą Ci się tu przydać to:

-
    -
  • F1 - przejście do karty pierwszej (mail)
  • -
  • F2 - przejście do karty drugiej (IRC)
  • -
  • F3 - przejście do karty trzeciej (shell)
  • -
  • F12 - zamknięcie sesji TMUX i wylogowanie (domyślnie)
  • -
-

Możesz oczywiście dostosować całość do siebie, konfiguracja keybinów jest dostępna w twoim katalogu domowym w pliku .tmux.conf

-

Jeśli chodzi o Weechat (IRC), najważniejsze, co musisz znać to Alt + 1-9, żeby poruszać się po kanałach :)



-

Usługi publiczne

-

Domyślnie dla twojego konta uruchomiona jest strona internetowa na protokole HTTPS pod linkiem: tylda.org/~username. Pliki tejże strony możesz śmiało edytować, usuwać i robić z nimi co chcesz. Strona jest w twoim katalogu domowym pod public_html.

-

Dodatkowo dla każdego jest również uruchomiona kapsuła gemini dostępna pod linkiem: gemini://tylda.org/~username. Pliki kapsuły są dla ciebie dostępne w katalogu domowym pod public_gemini.



-

Git

-

Na ten moment publiczna rejestracja na gitea jest wyłączona, boty się rejestrowały. Natomiast każdemu, kto chce założyć swoje repo lub wspomóc nas przy tworzeniu projektu zachęcam do kontaktu na mail/IRC z v0id1st lub smoorg, założymy bez problemu.

+

Artykuły na naszej wiki:

-

Webring

-

Webring jest prostym mechanizmem "skakania" po stronach użytkowników tylda.org. Każde konto jest domyślnie dodane do webringa, jeśli chcesz usunąć swoje to skaskuj plik .webring w swoim katalogu public_html.

-

Żeby dodać nawigację webring na swoją stronę, można przykładowo dorzucić taki HTML:

-
 
-      ← poprzedni
-      losowy
-      następny →
-    
-  ');
+
+$categories = ['tylda', 'poradniki', 'technologia', 'linki'];
+$category_to_articles = [];
+
+foreach (glob("source/*.md") as $file)
+{
+  $article = basename($file, ".md");
+  $title = preg_match("/title: (.*)/i", file_get_contents($file), $matches) ? $matches[1] : $article;
+  $title = ucfirst($title);
+  $category = preg_match("/category: (.*)/i", file_get_contents($file), $matches) ? $matches[1] : 'default';
+
+  if (array_key_exists($category, $category_to_articles))
+    array_push($category_to_articles[$category], [$article, $title]);
+  else
+	$category_to_articles[$category] = [[$article, $title]];
+  
+  ksort($category_to_articles);
+}
+
+foreach ($categories as $category) 
+{
+  echo ' > '.ucwords($category).'';
+  echo '
    '; + + $article_titles = []; + $article_names = []; + + foreach ($category_to_articles[$category] as $article) + { + array_push($article_names, $article[0]); + array_push($article_titles, $article[1]); + } + + $name_to_title = array_combine($article_names, $article_titles); + asort($name_to_title); + + foreach ($name_to_title as $name => $title) + echo '
  • '.$title.'
  • '; + echo '

'; +} + ?> -
-

Linki będą działały automatycznie.

+ +

Artykuły są publiczne pod licencją CC BY-NC-SA 4.0.

setMarkupEscaped(true); +$Extra = new ParsedownExtra(); + +$article = $_GET['article'] ?? ''; +$article = basename($article); + +$path = __DIR__ . "/source/{$article}.md"; +if (!is_file($path)) { + http_response_code(404); + exit; +} + +$raw = file_get_contents($path); + +$title = preg_match("/^title:\s*(.*)$/mi", $raw, $m) ? trim($m[1]) : ucfirst($article); +$authors = preg_match("/^authors:\s*(.*)$/mi", $raw, $m) ? trim($m[1]) : ucfirst($article); + +$body = preg_replace("/^(title|category|authors):[^\r\n]*\r?\n/m", "", $raw); + +$html = $Extra->text($body); +?> + +
+

>

+

osoby autorskie: >~

+
+ +
+ +
+ + diff --git a/wiki/source/cloud.md b/wiki/source/cloud.md new file mode 100644 index 0000000..9d4fb40 --- /dev/null +++ b/wiki/source/cloud.md @@ -0,0 +1,5 @@ +title: Cloud +authors: v0id1st +category: linki + +Posiadamy własną instancję Nextcloud znajduje się pod adresem: [https://cloud.tylda.org/](https://cloud.tylda.org) diff --git a/wiki/source/gitea.md b/wiki/source/gitea.md new file mode 100644 index 0000000..9bca8ff --- /dev/null +++ b/wiki/source/gitea.md @@ -0,0 +1,5 @@ +title: Gitea +authors: v0id1st +category: tylda + +Na ten moment publiczna rejestracja na gitea jest wyłączona, boty się rejestrowały. Natomiast każdemu, kto chce założyć swoje repo lub wspomóc nas przy tworzeniu projektu zachęcam do kontaktu na mail/IRC z v0id1st lub smoorg, założymy bez problemu. diff --git a/wiki/source/moving.md b/wiki/source/moving.md new file mode 100644 index 0000000..c82c582 --- /dev/null +++ b/wiki/source/moving.md @@ -0,0 +1,17 @@ +title: Poruszanie się po systemie +authors: v0id1st +category: tylda + +Po zalogowaniu domyślnie będziesz mieć otwartą sesję TMUX z trzema zakładkami: Mail (neomutt), IRC (weechat) oraz shell i kilkoma keybindami. + +Keybindy, które mogą Ci się tu przydać to: + +F1 - przejście do karty pierwszej (mail) +F2 - przejście do karty drugiej (IRC) +F3 - przejście do karty trzeciej (shell) +F12 - zamknięcie sesji TMUX i wylogowanie (domyślnie) +Możesz oczywiście dostosować całość do siebie, konfiguracja keybinów jest dostępna w twoim katalogu domowym w pliku .tmux.conf + +Jeśli chodzi o Weechat (IRC), najważniejsze, co musisz znać to Alt + 1-9, żeby poruszać się po kanałach :) + + diff --git a/wiki/source/public_services.md b/wiki/source/public_services.md new file mode 100644 index 0000000..9120475 --- /dev/null +++ b/wiki/source/public_services.md @@ -0,0 +1,7 @@ +title: Usługi publiczne +authors: v0id1st +category: tylda + +Domyślnie dla twojego konta uruchomiona jest strona internetowa na protokole HTTPS pod linkiem: tylda.org/~username. Pliki tejże strony możesz śmiało edytować, usuwać i robić z nimi co chcesz. Strona jest w twoim katalogu domowym pod public_html. + +Dodatkowo dla każdego jest również uruchomiona kapsuła gemini dostępna pod linkiem: gemini://tylda.org/~username. Pliki kapsuły są dla ciebie dostępne w katalogu domowym pod public_gemini. diff --git a/wiki/source/vim.md b/wiki/source/vim.md new file mode 100644 index 0000000..6a7754d --- /dev/null +++ b/wiki/source/vim.md @@ -0,0 +1,12 @@ +title: Wprowadzenie do edytora Vim +authors: io +category: poradniki + +`vim` to jest edytor tekstu, a w sumie klon edytora `vi`. `vim` posiada własną licencję tzw. Vim License, jest to licensja Charityware kompatybilna z GPL. +Dodam, że to bardzo powszechny program w tych kręgach :) + +### Tryby Pracy +`vim` jako edytor modalny używa trybów pracy. Takich trybów jest wiele ale z praktycznych powodów omawiam parę z nich. +Po uruchomieniu edytora poprzez komendę `vim` wrzuca nas w domyślny - NORMAL. Aby wprowadzić tekst można wcisnąć klawisz `Insert` lub małą literę `i`. Edytor wskaże, że obecny tryb jako INSERT tym samym jesteśmy w stanie wprowadzać tekst. Aby opuścić tryb INSERT należy wsciśnać `Esc`, lub też `C-c` albo `C-[`, zakładając że nam się śpieszy. +Inny tryb VISUAL to tryb w którym możemy zaznaczyć pole tekstu i ewentualnie potem nim manipulować. W tryb można wejść poprzez wciśnięcie małej litery `v`. +Jest też tryb REPLACE diff --git a/wiki/source/webring.md b/wiki/source/webring.md new file mode 100644 index 0000000..df45b68 --- /dev/null +++ b/wiki/source/webring.md @@ -0,0 +1,14 @@ +title: webring +authors: v0id1st +category: technologia + +Webring jest prostym mechanizmem "skakania" po stronach użytkowników tylda.org. Każde konto jest domyślnie dodane do webringa, jeśli chcesz usunąć swoje to skaskuj plik **.webring** w swoim katalogu **public_html**. +Żeby dodać nawigację webring na swoją stronę, można przykładowo dorzucić taki HTML: +```php + +``` +Linki będą działały automatycznie. From d2783fc22f20d3ca40693c0ccac2255e4ad8343b Mon Sep 17 00:00:00 2001 From: iodomi Date: Mon, 22 Jun 2026 16:12:13 +0200 Subject: [PATCH 7/8] feat: add 404 page --- .htaccess | 2 ++ 404.php | 16 ++++++++++++++++ static/img/reaction.png | Bin 0 -> 32253 bytes stats.png => static/img/stats.png | Bin stats.php | 2 +- 5 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 .htaccess create mode 100644 404.php create mode 100644 static/img/reaction.png rename stats.png => static/img/stats.png (100%) diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..3428078 --- /dev/null +++ b/.htaccess @@ -0,0 +1,2 @@ +RewriteEngine On +ErrorDocument 404 http://tylda.org/404/ diff --git a/404.php b/404.php new file mode 100644 index 0000000..0a15667 --- /dev/null +++ b/404.php @@ -0,0 +1,16 @@ + + + +
+

> BŁĄD 404

+ nieznaleziono +
+ +
+ +

Halo, co to za strona? Ona istnieje? Nie znaleźliśmy jej, co mam ci powiedzieć...

+Tak się teraz mogą czuć czytelnicy + +
+ + diff --git a/static/img/reaction.png b/static/img/reaction.png new file mode 100644 index 0000000000000000000000000000000000000000..e2cff63771bc85b76736e8c17bd0c251218790bc GIT binary patch literal 32253 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 server load:
  • Wolny RAM: - + Date: Mon, 22 Jun 2026 16:35:04 +0200 Subject: [PATCH 8/8] chore: small wiki visual changes --- wiki/index.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/wiki/index.php b/wiki/index.php index 218cd03..43c487e 100644 --- a/wiki/index.php +++ b/wiki/index.php @@ -15,7 +15,6 @@ $Extra = new ParsedownExtra();
    -

    Artykuły na naszej wiki:

    > '.ucwords($category).''; + echo '

    > '.ucwords($category).'

    '; echo '
      '; $article_titles = [];