Compare commits

...

152 Commits

Author SHA1 Message Date
el 03eb930abe Mention transmuteall for us lazies
continuous-integration/drone/push Build is passing Details
2024-04-09 23:19:49 +00:00
el aa89d565bd this is what happens when you test without prettyurls
continuous-integration/drone/pr Build encountered an error Details
continuous-integration/drone/push Build is passing Details
2024-03-13 15:00:18 -07:00
el 362f2b6e1f fix link and wording re: chan directory
continuous-integration/drone/pr Build encountered an error Details
continuous-integration/drone/push Build is passing Details
2024-03-13 14:40:35 -07:00
amr d01a8613ca Update wiki/pages/hamradio.md
continuous-integration/drone/push Build is passing Details
Added myself to the list of radio operators :)
2024-03-13 16:16:45 +00:00
Ben Harris e64de99fe2 composer update
continuous-integration/drone/push Build is passing Details
2024-03-13 12:12:26 -04:00
el 49b3423796 reorganize & expand index page
continuous-integration/drone Build is failing Details
2024-03-13 08:45:16 -07:00
el 1500110b6d add irc intro wiki page 2024-03-13 08:44:22 -07:00
Alexander 34c101db24 change to -tls option for weechat 4.x
continuous-integration/drone/push Build is failing Details
2023-09-04 19:19:53 +00:00
Alexander c98e305ba1 small fixes
continuous-integration/drone/pr Build encountered an error Details
continuous-integration/drone/push Build is passing Details
2023-05-24 20:37:59 +00:00
Alexander 305d90bccf add hostserv page (#64)
continuous-integration/drone/push Build is passing Details
add hostserv page
fix small format error with channel names in title (since # is a comment char for the yaml section)

Reviewed-on: tildeverse/tilde.chat#64
Co-authored-by: Alexander <alexlehm@cosmic.voyage>
Co-committed-by: Alexander <alexlehm@cosmic.voyage>
2023-05-23 21:18:27 +00:00
Alexander 420fd558c6 fix XSS in webchatlink variable (#63)
continuous-integration/drone/push Build is passing Details
webchatlink variable comes from the json file and was echoed unencoded

Reviewed-on: tildeverse/tilde.chat#63
Co-authored-by: Alexander <alexlehm@cosmic.voyage>
Co-committed-by: Alexander <alexlehm@cosmic.voyage>
2023-05-16 18:03:45 +00:00
el a6d3705f42 fix the bit where i missed half the thing
continuous-integration/drone/pr Build encountered an error Details
continuous-integration/drone/push Build is passing Details
2023-05-14 19:25:18 +00:00
el c5ded22ffc sanitize outputs
continuous-integration/drone/pr Build encountered an error Details
continuous-integration/drone/push Build is passing Details
2023-05-14 04:43:10 +00:00
demure bb9376f1f9 added missing new line
continuous-integration/drone/pr Build encountered an error Details
continuous-integration/drone/push Build is passing Details
2023-04-22 09:56:45 -04:00
demure 49a0b02e85 Added to shared strike policy 2023-04-22 09:51:41 -04:00
el 44b2200981 Remove servers no longer in /map
continuous-integration/drone/pr Build encountered an error Details
continuous-integration/drone/push Build is passing Details
2023-04-18 05:30:33 +00:00
Alexander 6e481daf06 minor text corrections based on my previous contribution (#57)
continuous-integration/drone/push Build is passing Details
there was 1 link wrong (nicks), a few typos and I made some text clearer I hope

also I added a note how to preview from a tilde server when running locally

Reviewed-on: tildeverse/tilde.chat#57
Co-authored-by: Alexander <alexlehm@cosmic.voyage>
Co-committed-by: Alexander <alexlehm@cosmic.voyage>
2023-02-11 15:34:38 +00:00
Robert Miles bbfaf5b97a Merge pull request 'validate page parameter to be a local filename' (#58) from alexlehm/tilde.chat:validate-page-param into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: tildeverse/tilde.chat#58
2023-01-27 05:13:19 +00:00
Alexander c2ec0439df validate page parameter to be a local filename
continuous-integration/drone/pr Build encountered an error Details
2023-01-26 18:39:24 +00:00
Alexander e5eb43ecc6 quickstart guide for weechat (#56)
continuous-integration/drone/push Build is passing Details
A quick start guide to use weechat

Since I never had used weechat before, I got kind of stuck on the server connect, so I decided to write a guide

Reviewed-on: tildeverse/tilde.chat#56
Co-authored-by: Alexander <alexlehm@cosmic.voyage>
Co-committed-by: Alexander <alexlehm@cosmic.voyage>
2023-01-25 23:09:11 +00:00
Ben Harris 073b3e74ad fix indentation in wiki/index.php
continuous-integration/drone/push Build is passing Details
2022-07-12 12:47:00 -04:00
Ben Harris 4d4d893417 fix link path
continuous-integration/drone/push Build is passing Details
2022-07-12 12:41:34 -04:00
Ben Harris 6b71569369 oops wrong variable
continuous-integration/drone/push Build is passing Details
2022-07-12 12:40:41 -04:00
Ben Harris 6bda5a078f sort wikipages by title and display as a table
continuous-integration/drone/push Build is passing Details
2022-07-12 12:39:36 -04:00
Ben Harris ee1886e6b8 s/hub/newhub/
continuous-integration/drone/push Build is passing Details
2022-07-11 22:16:45 -04:00
Ben Harris 8f08f62ab5 remove link to mumble webclient
continuous-integration/drone/push Build is passing Details
2022-07-11 13:06:28 -04:00
Ben Harris 8b5f6b1956 Merge pull request 'Add link to gamja in body text' (#54) from sebboh/tilde.chat:sebboh-patch-1 into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: tildeverse/tilde.chat#54
2022-07-08 16:29:07 +00:00
sebboh f8eebcabd7 Add link to gamja in body text
continuous-integration/drone/pr Build encountered an error Details
2022-07-08 15:07:12 +00:00
Ben Harris a59e22e8ed Merge pull request 'addendum to obnoxious behaviour; don't share it' (#53) from meldra/tilde.chat:master into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: tildeverse/tilde.chat#53
2022-07-06 18:40:18 +00:00
meldra 5ef8f03c0f addendum to obnoxious behaviour; don't share it
continuous-integration/drone/pr Build encountered an error Details
2022-07-06 18:36:43 +00:00
www-data 311f6a902e catch utf8 error
continuous-integration/drone/push Build is passing Details
2022-06-12 20:04:37 -04:00
Ben Harris 24284be199 bump tildeteam/wiki
continuous-integration/drone/push Build is passing Details
2022-02-16 13:43:45 -05:00
Ben Harris 104de86f2c print title outside of the markdown
continuous-integration/drone/push Build is passing Details
2022-02-16 12:57:58 -05:00
Ben Harris 971ad500f4 update tildeteam/wiki to 2.0
continuous-integration/drone/push Build is passing Details
2022-02-14 22:08:03 -05:00
Ben Harris d28b51fa6a
fix some typos and warnings
continuous-integration/drone/push Build is passing Details
2022-01-16 15:11:20 -05:00
Ben Harris 9afc78c636 Merge pull request 'added #covid19 to etiquette SSP section' (#52) from moppers/tilde.chat:master into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: tildeverse/tilde.chat#52
2022-01-04 22:45:20 +00:00
anelki 7322fb9077 added #covid19 to etiquette SSP section
continuous-integration/drone/pr Build encountered an error Details
2022-01-04 17:29:41 -05:00
Ben Harris db48958686 Merge pull request 'typo in preface of self-accountability page' (#51) from anelki/tilde.chat:master into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: tildeverse/tilde.chat#51
2021-11-28 15:50:55 +00:00
anelki 2bc011cb05 typo in preface
continuous-integration/drone/pr Build encountered an error Details
2021-11-27 04:42:39 +00:00
Ben Harris 256b6b06fc Merge pull request 'Add #aussie to shared strike policy' (#50) from fosslinux/tilde.chat:ssp into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: tildeverse/tilde.chat#50
2021-10-15 18:19:42 +00:00
fosslinux cce845046a Add #aussie to shared strike policy
continuous-integration/drone/pr Build encountered an error Details
2021-10-15 15:00:28 +11:00
Ben Harris 8cc1fab857 Merge pull request 'quotation mark nitpicking' (#49) from anelki/tilde.chat:pronouns-helpdesk into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: tildeverse/tilde.chat#49
2021-10-07 16:08:50 +00:00
anelki 3a44125e6f Merge branch 'master' into pronouns-helpdesk
continuous-integration/drone/pr Build encountered an error Details
2021-10-07 15:53:24 +00:00
anelki 9288a381a5 oh for the love of christ nitpicking (quotation marks)
continuous-integration/drone/pr Build encountered an error Details
2021-10-07 11:51:57 -04:00
Ben Harris 892590d926 Merge pull request 'added `/whois` to pronoun section, #helpdesk to list of shared strike channels, and alphabetized shared strike channel order' (#48) from anelki/tilde.chat:pronouns-helpdesk into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: tildeverse/tilde.chat#48
2021-10-07 15:48:17 +00:00
anelki 7792c0de27 added `/whois` to pronoun section, #helpdesk to list of shared strike channels, and alphabetized shared strike channel order
continuous-integration/drone/pr Build encountered an error Details
2021-10-07 11:42:46 -04:00
Benjamin Morrison af8f5c94d8 add #institute to ssp participating channels list
continuous-integration/drone/push Build is passing Details
2021-10-07 10:43:10 -04:00
Ben Harris 207896a090 Merge pull request 'added #club and #tilderadio to SSP' (#46) from deepend-patch-1 into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: tildeverse/tilde.chat#46
2021-10-07 04:05:56 +00:00
deepend 93c0fdb79b added #club and #tilderadio to SSP
continuous-integration/drone/pr Build encountered an error Details
2021-10-07 03:50:53 +00:00
Ben Harris 2fe8c5879c Merge pull request 'Added Shared Strike Policy' (#45) from demure/tilde.chat:master into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: tildeverse/tilde.chat#45
2021-10-07 02:55:59 +00:00
demure 5813133b87 Added Shared Strike Policy
continuous-integration/drone/pr Build encountered an error Details
2021-10-07 02:52:55 +00:00
Robert Miles d0f9c197e3 Remove page about #sevens
continuous-integration/drone/push Build is passing Details
I never got around to doing anything with it, and I have too many channels open as is.
2021-10-06 18:38:37 +00:00
Ben Harris 157404fb0c normalize webchat links
continuous-integration/drone/push Build is passing Details
2021-09-17 14:07:44 -04:00
Ben Harris 316fa0c321 update description for inst
continuous-integration/drone/push Build is passing Details
2021-07-14 13:37:40 -04:00
Ben Harris a9791566b3 add texto-plano
continuous-integration/drone/push Build is passing Details
2021-06-08 12:22:45 -04:00
Ben Harris af5dd1587e update webirc links and add mumble
continuous-integration/drone/push Build is passing Details
2021-05-27 15:34:30 -04:00
Robert Miles 8236ba311c Update 'wiki/pages/botamusique.md'
continuous-integration/drone/push Build is passing Details
2021-05-21 04:08:56 +00:00
Robert Miles ddb208a126 Update 'wiki/pages/botamusique.md'
continuous-integration/drone/push Build is passing Details
2021-05-21 03:39:05 +00:00
Ben Harris 49fd5f8d37 change freenode to libera
continuous-integration/drone/push Build is passing Details
2021-05-19 15:47:08 -04:00
Ben Harris ca6c53f6e6
re-add bsd.tilde.chat
continuous-integration/drone/push Build is passing Details
2021-04-08 21:26:13 -04:00
Ben Harris fc0fd3f92a add accountability link
continuous-integration/drone/push Build is passing Details
2021-04-08 12:06:16 -04:00
Ben Harris b4987a0216 use -C instead of cd
continuous-integration/drone/push Build is passing Details
2021-04-02 11:16:03 -04:00
Ben Harris 2164ad8c1f add user_accountability.md
continuous-integration/drone/push Build is passing Details
committing on behalf of: @demure
2021-03-30 17:27:07 -04:00
Ben Harris 0cf52cf4b0 update tildeteam/wiki to 1.0
continuous-integration/drone/push Build is passing Details
2021-03-20 13:14:16 -04:00
Ben Harris 33c32438cb
update tildewiki
continuous-integration/drone/push Build is passing Details
2021-03-17 00:38:09 -04:00
Ben Harris 8aa77b08fa fix geo-list sorting
continuous-integration/drone/push Build is passing Details
2021-03-05 13:43:34 -05:00
Ben Harris dfd88b63e6 clean up servers.md wiki page
continuous-integration/drone/push Build is passing Details
2021-03-05 13:41:09 -05:00
Ben Harris 3df99f5d1b tidy up connection info
continuous-integration/drone/push Build is passing Details
2021-03-05 13:30:21 -05:00
Ben Harris e4c3e8c0dd add biboumi connection info
continuous-integration/drone/push Build is passing Details
2021-03-05 13:23:32 -05:00
Ben Harris 8c790ac4d2 offset #fragment urls
continuous-integration/drone/push Build is passing Details
2021-03-05 11:39:59 -05:00
Ben Harris faad0241b8 tidy up grammar on etiquette.md
continuous-integration/drone/push Build is passing Details
2021-03-01 15:10:17 -05:00
Ben Harris b0fc57e667 Merge pull request 'address pronouns!' (#43) from BrendanTCC/tilde.chat:master into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: tildeverse/tilde.chat#43
2021-03-01 20:06:45 +00:00
Brendan Webb 6e36ea292e Update 'wiki/pages/etiquette.md'
continuous-integration/drone/pr Build encountered an error Details
2021-03-01 03:45:34 +00:00
Ben Harris d2fad4c537 Merge pull request 'added nv0n' (#41) from jjs/tilde.chat:nv0n into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: tildeverse/tilde.chat#41
2021-02-28 18:03:47 +00:00
Joey STANFORD 34b2481f00 added nv0n
continuous-integration/drone/pr Build encountered an error Details
2021-02-26 17:19:27 -07:00
Ben Harris 0993be564e add wiki link
continuous-integration/drone/push Build is passing Details
2020-11-18 10:49:11 -05:00
Ben Harris 53a8600718 add note about registering in #meta
continuous-integration/drone/push Build is passing Details
2020-11-18 10:48:04 -05:00
Ben Harris 435cf05a90 print channel name unquoted
continuous-integration/drone/push Build is passing Details
2020-11-17 19:58:11 -05:00
Ben Harris 9a09ce25fd update webchat links
continuous-integration/drone/push Build is passing Details
2020-11-17 19:55:55 -05:00
Ben Harris e7614ec23c fix title for bungame.md
continuous-integration/drone/push Build is passing Details
2020-11-16 18:17:52 -05:00
Ben Harris d278528ca4 Merge pull request 'Add bungame page' (#39) from bungame-doc into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: tildeverse/tilde.chat#39
2020-11-16 23:12:42 +00:00
Robert Miles 37fcfff61d Add bungame page
continuous-integration/drone/pr Build encountered an error Details
2020-11-16 22:15:57 +00:00
Ben Harris 09394d5ed0 update servers wikipage
continuous-integration/drone/push Build is passing Details
2020-11-16 12:44:37 -05:00
Ben Harris 6786dcf281 update composer deps
continuous-integration/drone/push Build is passing Details
2020-10-27 14:48:56 -04:00
Ben Harris 700a5955e7 fix null modes error
continuous-integration/drone/push Build is passing Details
2020-10-23 17:38:27 -04:00
Ben Harris 5ca47ce551 fix typo 2020-10-20 09:54:02 -04:00
Ben Harris 2830cd000d tidy up script
continuous-integration/drone/push Build is passing Details
2020-09-22 14:01:58 -04:00
Ben Harris 034e963ade re-add default text for missing topic
continuous-integration/drone/push Build is passing Details
2020-09-22 13:37:20 -04:00
Ben Harris 93ac6340de switch to lxml in order to detect CDATA tags
continuous-integration/drone/push Build is passing Details
2020-09-22 13:20:58 -04:00
www-data 9a25baf3b3 fix width of figlet
continuous-integration/drone/push Build is passing Details
2020-09-09 12:36:34 -04:00
www-data a0192f87b5 add motd generator
continuous-integration/drone/push Build is failing Details
2020-09-09 12:34:25 -04:00
Ben Harris 1dbab9f04b Merge pull request 'wiki/pages/bots.md: merge radiobot entry into tildebot entry' (#38) from kiedtl/tilde.chat:radiobot-rm into master
continuous-integration/drone/push Build is failing Details
Reviewed-on: tildeverse/tilde.chat#38
2020-07-20 13:33:09 -04:00
Hello, World! f5db459aae bots.md: merge radiobot entry into tildebot entry
continuous-integration/drone/pr Build encountered an error Details
2020-07-20 13:30:06 -04:00
Ben Harris 48abab494d Merge pull request 'Change BitBot entry to mention tildebot' (#37) from kiedtl/tilde.chat:bitbot-tildebot into master
continuous-integration/drone/push Build is failing Details
Reviewed-on: tildeverse/tilde.chat#37
2020-07-19 18:55:07 -04:00
Hello, World! c09bb8c2f9 bots.md: fix conflicts
continuous-integration/drone/pr Build encountered an error Details
2020-07-19 17:18:01 -04:00
Hello, World! 1d52a2bb95 Change BitBot entry to mention tildebot 2020-07-19 17:16:53 -04:00
Hello, World! fcb2a5c39c Change BitBot entry to mention tildebot
continuous-integration/drone/pr Build encountered an error Details
2020-07-18 13:02:43 -04:00
Ben Harris 43e82d8627 Merge pull request 'Mention the ,duckstats BitBot command in BitBot's wiki entry' (#36) from kiedtl/tilde.chat:bitbot-duccstats-mention into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: tildeverse/tilde.chat#36
2020-06-23 20:52:21 -04:00
Ben Harris 045ff2965d Merge branch 'master' into bitbot-duccstats-mention
continuous-integration/drone/pr Build encountered an error Details
2020-06-23 20:52:16 -04:00
Hello, World! 1e2f0f03d6 Mention the ,duckstats BitBot command in BitBot's wiki entry
continuous-integration/drone/pr Build encountered an error Details
2020-06-23 20:45:17 -04:00
Robert Miles 405a8005e0 Instead of doing fancy lstrip or brutalist slicing, just urlencode the entire channel name
continuous-integration/drone/push Build is passing Details
2020-06-23 15:28:00 -04:00
Robert Miles 4874785b6e We shouldn't remove more than one # at the start of a message
continuous-integration/drone/push Build is passing Details
2020-06-23 15:21:37 -04:00
Ben Harris 38d9604251 Merge pull request 'Add kiedtl's k bot to the list of bots' (#35) from kiedtl/tilde.chat:master into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: tildeverse/tilde.chat#35
2020-06-22 20:34:10 -04:00
Hello, World! 2f34b4507e Merge branch 'master' into master
continuous-integration/drone/pr Build encountered an error Details
2020-06-22 17:14:38 -04:00
Hello, World! 6c84002d88 Update 'wiki/pages/bots.md'
continuous-integration/drone/pr Build encountered an error Details
2020-06-22 17:13:52 -04:00
Robert Miles fa574a06b7 Add page on botamusique
continuous-integration/drone/push Build is passing Details
2020-06-20 21:17:20 -04:00
Hello, World! 61c0123257 Add k bot to the list of bots
continuous-integration/drone/pr Build encountered an error Details
2020-06-09 18:50:19 -04:00
Ben Harris 419be764ef add link to mumble webclient
continuous-integration/drone/push Build is passing Details
2020-06-04 01:03:08 -04:00
Ben Harris b74b0889fd sasl info moved to nicks page
continuous-integration/drone/push Build is passing Details
2020-06-03 01:31:08 -04:00
Ben Harris 7a9d7cdb71 add docs on channel management. closes #23
continuous-integration/drone/push Build is passing Details
2020-06-03 01:27:48 -04:00
Ben Harris 1bc24fb21d mention webchat clients in connection info
continuous-integration/drone/push Build is passing Details
2020-05-22 12:12:39 -04:00
Ben Harris 695eac07f3 update webchat links
continuous-integration/drone/push Build is passing Details
2020-05-22 12:09:46 -04:00
Ben Harris f004fa9a06 update mumble hostname
continuous-integration/drone/push Build is passing Details
there's now a SRV record so now we don't need the subdomain
2020-05-21 00:17:35 -04:00
Ben Harris c0baea921c Merge pull request 'Add badger commands to its wiki page' (#33) from update-badger-page into master
continuous-integration/drone/push Build is passing Details
2020-05-20 16:02:07 -04:00
Robert Miles 8396dd7c95 Add badger commands to its wiki page
continuous-integration/drone/pr Build encountered an error Details
2020-05-20 13:42:28 -04:00
Ben Harris fccc6e3487 add note about +B
continuous-integration/drone/push Build is passing Details
2020-05-15 16:30:52 -04:00
Ben Harris 20713a8f4e Merge pull request 'Change "channel" to "behavior" in irc wiki' (#32) from muggahtee/tilde.chat:master into master
continuous-integration/drone/push Build is passing Details
2020-05-14 10:30:02 -04:00
muggahtee 47c8d8ed80 Change "channel" to "behavior" in irc wiki
continuous-integration/drone/pr Build encountered an error Details
2020-05-14 04:14:15 -04:00
Ben Harris c22b4340b4 update ssh clone url
continuous-integration/drone/push Build is passing Details
2020-05-09 17:00:14 -04:00
Ben Harris 06cba59c9a move members to channel stats page
continuous-integration/drone/push Build is passing Details
2020-05-07 21:03:01 -04:00
www-data 07c5a44543 fix link on rules.txt
continuous-integration/drone/push Build is passing Details
2020-04-30 15:01:35 -04:00
Ben Harris 52e2f6c293 add link to anope wiki
continuous-integration/drone/push Build is passing Details
2020-04-28 21:23:08 -04:00
Ben Harris 4a990a3c2b fix codeblock formatting
continuous-integration/drone/push Build is passing Details
2020-04-28 21:21:07 -04:00
Ben Harris 02428ba5fd Merge pull request 'Adding page about nick reg' (#30) from ubergeek/tilde.chat:master into master
continuous-integration/drone/push Build is passing Details
2020-04-28 21:17:52 -04:00
Ubergeek d33abde339 Adding section about nickerv help
continuous-integration/drone/pr Build encountered an error Details
2020-04-28 09:43:30 -04:00
Ubergeek 943910690b Dang it, forgot to add
continuous-integration/drone/pr Build encountered an error Details
2020-04-28 09:31:48 -04:00
Ubergeek 1b1f8b666c fixed formatting and name and such
continuous-integration/drone/pr Build encountered an error Details
2020-04-28 09:18:03 -04:00
ubergeek 43b5217294 added new wiki page about registering nicks 2020-04-28 09:14:52 -04:00
Ben Harris f29b6e4710 Merge pull request 'Added the pink_dragon bot running on #legend' (#28) from baruchel/tilde.chat:mybot into master
continuous-integration/drone/push Build is passing Details
2020-04-27 13:25:03 -04:00
Thomas Baruchel f9ed8f12b4 Added Pink Dragon
continuous-integration/drone/pr Build encountered an error Details
2020-04-27 10:42:36 -04:00
Thomas Baruchel c6d860a839 Added Pink Dragon 2020-04-27 10:40:24 -04:00
Ben Harris adec9d32b8 add cosmic
continuous-integration/drone/push Build is failing Details
2020-04-26 15:11:58 -04:00
Robert Miles 4af4c8af40 Fix code of conduct link so it actually goes to the code of conduct and doesn't freak out
continuous-integration/drone/push Build is failing Details
2020-04-07 22:13:25 -04:00
Ben Harris 3b2a29e3c2 Merge pull request 'Document the badger bot' (#27) from badger-doc into master
continuous-integration/drone/push Build is passing Details
2020-03-17 12:29:27 -04:00
Robert Miles 7e019a0c49 Add badger to bot list
continuous-integration/drone/pr Build encountered an error Details
2020-03-14 18:59:07 -04:00
Robert Miles 9a9740d731 Add category
continuous-integration/drone/pr Build encountered an error Details
2020-02-23 11:43:26 -05:00
Robert Miles 502e6f2efe Add badger docs 2020-02-23 11:42:34 -05:00
Ben Harris eaad9cb573 Merge branch 'master' of LickTheCheese/tilde.chat into master
continuous-integration/drone/push Build is passing Details
2020-02-04 09:26:54 -05:00
LickTheCheese ab86b9ddf8 add my bot to list 2020-02-03 13:37:26 -05:00
Ben Harris d8fc2e27de Merge branch 'master' of creme/tilde.chat into master 2020-01-15 09:37:24 -05:00
creme fff73de689 Update 'wiki/pages/etiquette.md'
small curl cmd fix.
2020-01-14 14:43:44 -05:00
Ben Harris 0398524b9b remove gingko
continuous-integration/drone/push Build is passing Details
2020-01-06 14:43:27 -05:00
ubergeek 78f7cf635f Merge branch 'nora/hamradio-noracodes' of noracodes/tilde.chat into master
continuous-integration/drone/push Build is passing Details
2020-01-02 19:39:57 -05:00
Leonora Tindall 702bce0a1d Add myself to the list of radio amateurs
continuous-integration/drone/pr Build encountered an error Details
2020-01-02 19:18:15 -05:00
ubergeek f85c465573 Merge branch 'master' of fosslinux/tildechat-site into master
continuous-integration/drone/push Build is passing Details
Feel free to revert, if people feel this breaks UI or UX too much.  I know it can be painful in a terminal environment.
2019-12-06 23:11:52 -05:00
Ben Harris 84358efae2 add drone badge to README.md
continuous-integration/drone/push Build is passing Details
2019-12-06 10:59:59 -05:00
Ben Harris a47c9867c9 disable clone and only run on master
continuous-integration/drone/push Build encountered an error Details
2019-12-06 10:45:57 -05:00
Ben Harris 9da2062f39 test deploy
continuous-integration/drone/push Build encountered an error Details
2019-12-06 10:40:55 -05:00
Ben Harris cc8821132f Merge branch 'master' of LickTheCheese/tilde.chat into master 2019-12-04 22:11:46 -05:00
LickTheCheese dcd4e8b101 added my callsign to the wiki 2019-12-04 21:44:27 -05:00
Ben Harris 8a3aeb6c39 Merge branch 'master' of aewens/tilde.chat into master 2019-12-01 20:51:25 -05:00
fosslinux 451b851515 opers@tilde.chat -> opers at tilde dot chat to avoid spam 2019-05-18 07:39:44 +10:00
31 changed files with 1715 additions and 353 deletions

28
.drone.yml Normal file
View File

@ -0,0 +1,28 @@
---
kind: pipeline
type: ssh
name: deploy
server:
host:
from_secret: host
user:
from_secret: username
ssh_key:
from_secret: ssh_key
clone:
disable: true
trigger:
branch:
- master
steps:
- name: deploy
commands:
- cd /var/www/tilde.chat
- sudo -Hu www-data git fetch
- sudo -Hu www-data git reset --hard origin/master
- sudo -Hu www-data composer install

View File

@ -1,5 +1,7 @@
# [tilde.chat](https://tilde.chat)
[![Build Status](https://drone.tildegit.org/api/badges/tildeverse/tilde.chat/status.svg)](https://drone.tildegit.org/tildeverse/tilde.chat)
this is the source for [tilde.chat](https://tilde.chat).
if you have any fixes/updates that you need to make, feel free to open a PR.

View File

@ -1,11 +1,10 @@
<?php
include 'shieldsio.php';
if (!isset($_GET["channel"])) {
$badge = get_badge();
header("Location: {$badge}");
} else {
$badge = get_badge($_GET["channel"]);
header("Location: {$badge}");
}
die();
?>
include 'shieldsio.php';
if (!isset($_GET["channel"])) {
$badge = get_badge();
} else {
$badge = get_badge($_GET["channel"]);
}
header("Location: $badge");
die();

View File

@ -12,13 +12,13 @@
</tr>
</thead>
<tr>
<td>Network user count</td><td>https://tilde.chat/badges/badge.php</td><td><img src="badge.php"></td>
<td>Network user count</td><td>https://tilde.chat/badges/badge.php</td><td><img src="badge.php" alt="user count badge"></td>
</tr>
<tr>
<td>User count for #meta</td><td>https://tilde.chat/badges/badge.php?channel=%23meta</td><td><img src="badge.php?channel=%23meta"></td>
<td>User count for #meta</td><td>https://tilde.chat/badges/badge.php?channel=%23meta</td><td><img src="badge.php?channel=%23meta" alt="#meta badge"></td>
</tr>
<tr>
<td>Invalid channel name (error handling)</td><td>https://tilde.chat/badges/badge.php?channel=invalid</td><td><img src="badge.php?channel=invalid"></td>
<td>Invalid channel name (error handling)</td><td>https://tilde.chat/badges/badge.php?channel=invalid</td><td><img src="badge.php?channel=invalid" alt="invalid badge"></td>
</tr>
</table>
<?php include '../footer.php'; ?>

View File

@ -1,16 +1,17 @@
<?php
function get_badge($channel_name=FALSE) {
function get_badge($channel_name=FALSE): string
{
if ($channel_name==FALSE) {
return "https://img.shields.io/badge/dynamic/json.svg?url=https://tilde.chat/stats.json&label=~chat&query=$.usercount&suffix=%20online&link=https:%2F%2Ftilde.chat&link=https:%2F%2Fweb.tilde.chat&colorB=%2300cc00";
return "https://img.shields.io/badge/dynamic/json.svg?url=https://tilde.chat/stats.json&label=~chat&query=$.usercount&suffix=%20online&link=https:%2F%2Ftilde.chat&link=https:%2F%2Ftilde.chat%2Fkiwi%2F&colorB=%2300cc00";
}
$name_url = urlencode($channel_name);
$name_link = urlencode(substr($channel_name,1));
$stats = json_decode(file_get_contents("https://tilde.chat/stats.json")) ?? array("channels"=>[]);
foreach ($stats->channels as $key=>$channel) {
if ($channel->name==$channel_name) {
return "https://img.shields.io/badge/dynamic/json.svg?url=https://tilde.chat/stats.json&label=~chat&query=$.channels[$key].usercount&suffix=%20online%20on%20{$name_url}&link=https:%2F%2Ftilde.chat&link=https:%2F%2Fweb.tilde.chat%2F%3Fjoin%3D{$name_link}&colorB=%2300cc00";
return "https://img.shields.io/badge/dynamic/json.svg?url=https://tilde.chat/stats.json&label=~chat&query=$.channels[$key].usercount&suffix=%20online%20on%20$name_url&link=https:%2F%2Ftilde.chat&link=https:%2F%2Ftilde.chat%2Fkiwi%2F$name_link&colorB=%2300cc00";
}
}
return "https://img.shields.io/badge/~chat-invalid%20channel-red.svg";
}
?>

View File

@ -1,11 +1,6 @@
{
"require": {
"tildeverse/wiki": "dev-master"
},
"repositories": [
{
"type": "vcs",
"url": "https://tildegit.org/ben/tildewiki"
}
]
"require": {
"tildeteam/wiki": "^2.0",
"ext-json": "*"
}
}

761
composer.lock generated
View File

@ -4,120 +4,292 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "3ab3df15c4e40417f427b37691e83088",
"content-hash": "cbfe4e230864ce455fb4e62a47e4a7fc",
"packages": [
{
"name": "erusev/parsedown",
"version": "1.7.3",
"name": "dflydev/dot-access-data",
"version": "v3.0.2",
"source": {
"type": "git",
"url": "https://github.com/erusev/parsedown.git",
"reference": "6d893938171a817f4e9bc9e86f2da1e370b7bcd7"
"url": "https://github.com/dflydev/dflydev-dot-access-data.git",
"reference": "f41715465d65213d644d3141a6a93081be5d3549"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/erusev/parsedown/zipball/6d893938171a817f4e9bc9e86f2da1e370b7bcd7",
"reference": "6d893938171a817f4e9bc9e86f2da1e370b7bcd7",
"url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/f41715465d65213d644d3141a6a93081be5d3549",
"reference": "f41715465d65213d644d3141a6a93081be5d3549",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
"require-dev": {
"phpstan/phpstan": "^0.12.42",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.3",
"scrutinizer/ocular": "1.6.0",
"squizlabs/php_codesniffer": "^3.5",
"vimeo/psalm": "^4.0.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "3.x-dev"
}
},
"autoload": {
"psr-4": {
"Dflydev\\DotAccessData\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Dragonfly Development Inc.",
"email": "info@dflydev.com",
"homepage": "http://dflydev.com"
},
{
"name": "Beau Simensen",
"email": "beau@dflydev.com",
"homepage": "http://beausimensen.com"
},
{
"name": "Carlos Frutos",
"email": "carlos@kiwing.it",
"homepage": "https://github.com/cfrutos"
},
{
"name": "Colin O'Dell",
"email": "colinodell@gmail.com",
"homepage": "https://www.colinodell.com"
}
],
"description": "Given a deep data structure, access data by dot notation.",
"homepage": "https://github.com/dflydev/dflydev-dot-access-data",
"keywords": [
"access",
"data",
"dot",
"notation"
],
"support": {
"issues": "https://github.com/dflydev/dflydev-dot-access-data/issues",
"source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.2"
},
"time": "2022-10-27T11:44:00+00:00"
},
{
"name": "league/commonmark",
"version": "2.4.2",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/commonmark.git",
"reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/commonmark/zipball/91c24291965bd6d7c46c46a12ba7492f83b1cadf",
"reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
"php": ">=5.3.0"
"league/config": "^1.1.1",
"php": "^7.4 || ^8.0",
"psr/event-dispatcher": "^1.0",
"symfony/deprecation-contracts": "^2.1 || ^3.0",
"symfony/polyfill-php80": "^1.16"
},
"require-dev": {
"phpunit/phpunit": "^4.8.35"
"cebe/markdown": "^1.0",
"commonmark/cmark": "0.30.3",
"commonmark/commonmark.js": "0.30.0",
"composer/package-versions-deprecated": "^1.8",
"embed/embed": "^4.4",
"erusev/parsedown": "^1.0",
"ext-json": "*",
"github/gfm": "0.29.0",
"michelf/php-markdown": "^1.4 || ^2.0",
"nyholm/psr7": "^1.5",
"phpstan/phpstan": "^1.8.2",
"phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0",
"scrutinizer/ocular": "^1.8.1",
"symfony/finder": "^5.3 | ^6.0 || ^7.0",
"symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 || ^7.0",
"unleashedtech/php-coding-standard": "^3.1.1",
"vimeo/psalm": "^4.24.0 || ^5.0.0"
},
"suggest": {
"symfony/yaml": "v2.3+ required if using the Front Matter extension"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "2.5-dev"
}
},
"autoload": {
"psr-0": {
"Parsedown": ""
"psr-4": {
"League\\CommonMark\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
"BSD-3-Clause"
],
"authors": [
{
"name": "Emanuil Rusev",
"email": "hello@erusev.com",
"homepage": "http://erusev.com"
"name": "Colin O'Dell",
"email": "colinodell@gmail.com",
"homepage": "https://www.colinodell.com",
"role": "Lead Developer"
}
],
"description": "Parser for Markdown.",
"homepage": "http://parsedown.org",
"description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)",
"homepage": "https://commonmark.thephpleague.com",
"keywords": [
"commonmark",
"flavored",
"gfm",
"github",
"github-flavored",
"markdown",
"md",
"parser"
],
"time": "2019-03-17T18:48:37+00:00"
"support": {
"docs": "https://commonmark.thephpleague.com/",
"forum": "https://github.com/thephpleague/commonmark/discussions",
"issues": "https://github.com/thephpleague/commonmark/issues",
"rss": "https://github.com/thephpleague/commonmark/releases.atom",
"source": "https://github.com/thephpleague/commonmark"
},
"funding": [
{
"url": "https://www.colinodell.com/sponsor",
"type": "custom"
},
{
"url": "https://www.paypal.me/colinpodell/10.00",
"type": "custom"
},
{
"url": "https://github.com/colinodell",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/league/commonmark",
"type": "tidelift"
}
],
"time": "2024-02-02T11:59:32+00:00"
},
{
"name": "erusev/parsedown-extra",
"version": "0.7.1",
"name": "league/config",
"version": "v1.2.0",
"source": {
"type": "git",
"url": "https://github.com/erusev/parsedown-extra.git",
"reference": "0db5cce7354e4b76f155d092ab5eb3981c21258c"
"url": "https://github.com/thephpleague/config.git",
"reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/erusev/parsedown-extra/zipball/0db5cce7354e4b76f155d092ab5eb3981c21258c",
"reference": "0db5cce7354e4b76f155d092ab5eb3981c21258c",
"url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3",
"reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3",
"shasum": ""
},
"require": {
"erusev/parsedown": "~1.4"
"dflydev/dot-access-data": "^3.0.1",
"nette/schema": "^1.2",
"php": "^7.4 || ^8.0"
},
"require-dev": {
"phpstan/phpstan": "^1.8.2",
"phpunit/phpunit": "^9.5.5",
"scrutinizer/ocular": "^1.8.1",
"unleashedtech/php-coding-standard": "^3.1",
"vimeo/psalm": "^4.7.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.2-dev"
}
},
"autoload": {
"psr-0": {
"ParsedownExtra": ""
"psr-4": {
"League\\Config\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
"BSD-3-Clause"
],
"authors": [
{
"name": "Emanuil Rusev",
"email": "hello@erusev.com",
"homepage": "http://erusev.com"
"name": "Colin O'Dell",
"email": "colinodell@gmail.com",
"homepage": "https://www.colinodell.com",
"role": "Lead Developer"
}
],
"description": "An extension of Parsedown that adds support for Markdown Extra.",
"homepage": "https://github.com/erusev/parsedown-extra",
"description": "Define configuration arrays with strict schemas and access values with dot notation",
"homepage": "https://config.thephpleague.com",
"keywords": [
"markdown",
"markdown extra",
"parsedown",
"parser"
"array",
"config",
"configuration",
"dot",
"dot-access",
"nested",
"schema"
],
"time": "2015-11-01T10:19:22+00:00"
"support": {
"docs": "https://config.thephpleague.com/",
"issues": "https://github.com/thephpleague/config/issues",
"rss": "https://github.com/thephpleague/config/releases.atom",
"source": "https://github.com/thephpleague/config"
},
"funding": [
{
"url": "https://www.colinodell.com/sponsor",
"type": "custom"
},
{
"url": "https://www.paypal.me/colinpodell/10.00",
"type": "custom"
},
{
"url": "https://github.com/colinodell",
"type": "github"
}
],
"time": "2022-12-11T20:36:23+00:00"
},
{
"name": "mnapoli/front-yaml",
"version": "1.6.0",
"version": "2.0.3",
"source": {
"type": "git",
"url": "https://github.com/mnapoli/FrontYAML.git",
"reference": "24070ace8b741247bb3161cbb38ecc541268b296"
"reference": "d42d84159f3725d50f7bda953ed90185b3c41cc4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mnapoli/FrontYAML/zipball/24070ace8b741247bb3161cbb38ecc541268b296",
"reference": "24070ace8b741247bb3161cbb38ecc541268b296",
"url": "https://api.github.com/repos/mnapoli/FrontYAML/zipball/d42d84159f3725d50f7bda953ed90185b3c41cc4",
"reference": "d42d84159f3725d50f7bda953ed90185b3c41cc4",
"shasum": ""
},
"require": {
"erusev/parsedown": "~1.0",
"php": ">=5.4.0",
"symfony/yaml": "~2.1|^3.0|^4.0"
"league/commonmark": "^2.0",
"php": "^7.4|^8.0",
"symfony/yaml": "^4.0|^5.0|^6.0|^7.0"
},
"require-dev": {
"league/commonmark": "~0.7",
"phpunit/phpunit": "~4.5"
"phpunit/phpunit": "^9.0"
},
"type": "library",
"autoload": {
@ -129,40 +301,239 @@
"license": [
"MIT"
],
"time": "2017-10-29T19:29:55+00:00"
"support": {
"source": "https://github.com/mnapoli/FrontYAML/tree/2.0.3"
},
"time": "2024-02-07T14:42:22+00:00"
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.11.0",
"name": "nette/schema",
"version": "v1.3.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "82ebae02209c21113908c229e9883c419720738a"
"url": "https://github.com/nette/schema.git",
"reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a",
"reference": "82ebae02209c21113908c229e9883c419720738a",
"url": "https://api.github.com/repos/nette/schema/zipball/a6d3a6d1f545f01ef38e60f375d1cf1f4de98188",
"reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
"nette/utils": "^4.0",
"php": "8.1 - 8.3"
},
"suggest": {
"ext-ctype": "For best performance"
"require-dev": {
"nette/tester": "^2.4",
"phpstan/phpstan-nette": "^1.0",
"tracy/tracy": "^2.8"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.11-dev"
"dev-master": "1.3-dev"
}
},
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause",
"GPL-2.0-only",
"GPL-3.0-only"
],
"authors": [
{
"name": "David Grudl",
"homepage": "https://davidgrudl.com"
},
{
"name": "Nette Community",
"homepage": "https://nette.org/contributors"
}
],
"description": "📐 Nette Schema: validating data structures against a given Schema.",
"homepage": "https://nette.org",
"keywords": [
"config",
"nette"
],
"support": {
"issues": "https://github.com/nette/schema/issues",
"source": "https://github.com/nette/schema/tree/v1.3.0"
},
"time": "2023-12-11T11:54:22+00:00"
},
{
"name": "nette/utils",
"version": "v4.0.4",
"source": {
"type": "git",
"url": "https://github.com/nette/utils.git",
"reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nette/utils/zipball/d3ad0aa3b9f934602cb3e3902ebccf10be34d218",
"reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218",
"shasum": ""
},
"require": {
"php": ">=8.0 <8.4"
},
"conflict": {
"nette/finder": "<3",
"nette/schema": "<1.2.2"
},
"require-dev": {
"jetbrains/phpstorm-attributes": "dev-master",
"nette/tester": "^2.5",
"phpstan/phpstan": "^1.0",
"tracy/tracy": "^2.9"
},
"suggest": {
"ext-gd": "to use Image",
"ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()",
"ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()",
"ext-json": "to use Nette\\Utils\\Json",
"ext-mbstring": "to use Strings::lower() etc...",
"ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.0-dev"
}
},
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause",
"GPL-2.0-only",
"GPL-3.0-only"
],
"authors": [
{
"name": "David Grudl",
"homepage": "https://davidgrudl.com"
},
{
"name": "Nette Community",
"homepage": "https://nette.org/contributors"
}
],
"description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.",
"homepage": "https://nette.org",
"keywords": [
"array",
"core",
"datetime",
"images",
"json",
"nette",
"paginator",
"password",
"slugify",
"string",
"unicode",
"utf-8",
"utility",
"validation"
],
"support": {
"issues": "https://github.com/nette/utils/issues",
"source": "https://github.com/nette/utils/tree/v4.0.4"
},
"time": "2024-01-17T16:50:36+00:00"
},
{
"name": "psr/event-dispatcher",
"version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/event-dispatcher.git",
"reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
"reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
"shasum": ""
},
"require": {
"php": ">=7.2.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Ctype\\": ""
"Psr\\EventDispatcher\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Standard interfaces for event handling.",
"keywords": [
"events",
"psr",
"psr-14"
],
"support": {
"issues": "https://github.com/php-fig/event-dispatcher/issues",
"source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0"
},
"time": "2019-01-08T18:20:26+00:00"
},
{
"name": "symfony/deprecation-contracts",
"version": "v3.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
"reference": "7c3aff79d10325257a001fcf92d991f24fc967cf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf",
"reference": "7c3aff79d10325257a001fcf92d991f24fc967cf",
"shasum": ""
},
"require": {
"php": ">=8.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "3.4-dev"
},
"thanks": {
"name": "symfony/contracts",
"url": "https://github.com/symfony/contracts"
}
},
"autoload": {
"files": [
"bootstrap.php"
"function.php"
]
},
"notification-url": "https://packagist.org/downloads/",
@ -170,13 +541,86 @@
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2023-05-23T14:45:45+00:00"
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.29.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4",
"reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"provide": {
"ext-ctype": "*"
},
"suggest": {
"ext-ctype": "For best performance"
},
"type": "library",
"extra": {
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Ctype\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Gert de Pagter",
"email": "BackEndTea@gmail.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for ctype functions",
@ -187,41 +631,133 @@
"polyfill",
"portable"
],
"time": "2019-02-06T07:57:58+00:00"
"support": {
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2024-01-29T20:11:03+00:00"
},
{
"name": "symfony/yaml",
"version": "v4.3.2",
"name": "symfony/polyfill-php80",
"version": "v1.29.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
"reference": "c60ecf5ba842324433b46f58dc7afc4487dbab99"
"url": "https://github.com/symfony/polyfill-php80.git",
"reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/yaml/zipball/c60ecf5ba842324433b46f58dc7afc4487dbab99",
"reference": "c60ecf5ba842324433b46f58dc7afc4487dbab99",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
"reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
"shasum": ""
},
"require": {
"php": "^7.1.3",
"symfony/polyfill-ctype": "~1.8"
},
"conflict": {
"symfony/console": "<3.4"
},
"require-dev": {
"symfony/console": "~3.4|~4.0"
},
"suggest": {
"symfony/console": "For validating YAML files using the lint command"
"php": ">=7.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.3-dev"
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Php80\\": ""
},
"classmap": [
"Resources/stubs"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ion Bazan",
"email": "ion.bazan@gmail.com"
},
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2024-01-29T20:11:03+00:00"
},
{
"name": "symfony/yaml",
"version": "v7.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
"reference": "2d4fca631c00700597e9442a0b2451ce234513d3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/yaml/zipball/2d4fca631c00700597e9442a0b2451ce234513d3",
"reference": "2d4fca631c00700597e9442a0b2451ce234513d3",
"shasum": ""
},
"require": {
"php": ">=8.2",
"symfony/polyfill-ctype": "^1.8"
},
"conflict": {
"symfony/console": "<6.4"
},
"require-dev": {
"symfony/console": "^6.4|^7.0"
},
"bin": [
"Resources/bin/yaml-lint"
],
"type": "library",
"autoload": {
"psr-4": {
"Symfony\\Component\\Yaml\\": ""
@ -244,49 +780,78 @@
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony Yaml Component",
"description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
"time": "2019-04-06T14:04:46+00:00"
"support": {
"source": "https://github.com/symfony/yaml/tree/v7.0.3"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2024-01-23T15:02:46+00:00"
},
{
"name": "tildeverse/wiki",
"version": "dev-master",
"name": "tildeteam/wiki",
"version": "2.0.8",
"source": {
"type": "git",
"url": "https://tildegit.org/ben/tildewiki",
"reference": "751eb64c383cb7c6ec643eaf683b88aa1de351ea"
"url": "https://tildegit.org/team/tildewiki",
"reference": "dcbb9740225768c74cfd0002a150549cd6df4bc4"
},
"require": {
"erusev/parsedown-extra": "^0.7.1",
"mnapoli/front-yaml": "^1.6"
"mnapoli/front-yaml": "^2.0.0",
"php": "^7.4|^8.0"
},
"require-dev": {
"phpunit/phpunit": "^9.5"
},
"type": "library",
"autoload": {
"psr-4": {
"Tildeverse\\Wiki\\": "src/"
"tildeteam\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPLv3"
"GPL-3.0-or-later"
],
"authors": [
{
"name": "Ben Harris",
"email": "ben@tilde.team"
"email": "ben@tilde.team",
"homepage": "https://tilde.team/~ben/",
"role": "Developer"
}
],
"description": "parsedown extensions for tilde wikis",
"time": "2019-07-03T05:06:34+00:00"
"description": "unified extensions for tilde wikis",
"homepage": "https://tildegit.org/team/tildewiki",
"keywords": [
"markdown",
"wiki"
],
"time": "2022-02-16T18:31:48+00:00"
}
],
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": {
"tildeverse/wiki": 20
},
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": [],
"platform-dev": []
"platform": {
"ext-json": "*"
},
"platform-dev": [],
"plugin-api-version": "2.3.0"
}

View File

@ -1,54 +1,65 @@
#!/usr/bin/env python3
import requests, json
import xml.etree.ElementTree as xml
import base64
import json
from lxml import etree
WORK_DIR = "/var/www/tilde.chat"
r = requests.get("http://localhost:8081/stats")
r.raise_for_status()
out = {}
d = xml.fromstring(r.text)
assert d.tag == "inspircdstats"
parser = etree.XMLParser(strip_cdata=False)
root = etree.parse("http://localhost:8081/stats", parser)
assert root.getroot().tag == "inspircdstats"
with open(f"{WORK_DIR}/blacklist", "r") as f:
BLACKLIST = f.read().splitlines()
def define(name, xps, vfilter=lambda x: x):
global out
out[name] = vfilter(d.findall(xps)[0].text)
def unsanitize(node, default=""):
# workaround for weird behavior in insp's xml output
# https://github.com/inspircd/inspircd/blob/v3.7.0/src/modules/m_httpd_stats.cpp#L55
if node.text is None or node.text == "":
return default
elif str(etree.tostring(node)).startswith(f"b'<{node.tag}><![CDATA["):
missing_padding = len(node.text) % 4
if missing_padding:
v = node.text + "=" * (4 - missing_padding)
else:
v = node.text
try:
return base64.b64decode(v).decode("utf-8")
except:
return "failed to read topic as utf-8"
return node.text
define("usercount", "./general/usercount", int)
define("channelcount", "./general/channelcount", int)
schannels = d.findall("./channellist/channel")
out["usercount"] = int(root.find("./general/usercount").text)
out["channelcount"] = int(root.find("./general/channelcount").text)
channels = []
for schannel in schannels:
channel = dict(
name=schannel.findall("channelname")[0].text,
usercount=int(schannel.findall("usercount")[0].text),
)
channel["topic"] = (
schannel.findall("./channeltopic/topictext")[0].text
if schannel.findall("./channeltopic/topictext")[0].text is not None
else "No topic set"
)
out["channels"] = []
for c in root.findall("./channellist/channel"):
name = unsanitize(c.find("channelname"))
modes = c.find("./channelmodes").text
if (
# skip channels in the blacklist or with mode +s
"s" in schannel.findall("./channelmodes")[0].text.split()[0]
or channel["name"] in BLACKLIST
name in BLACKLIST
or modes is None
or "s" in modes.split()[0]
):
continue
channel["webchatlink"] = "https://web.tilde.chat/?join=" + channel["name"].lstrip(
"#"
out["channels"].append(
dict(
name=name,
topic=unsanitize(c.find("./channeltopic/topictext"), "no topic set"),
usercount=int(c.find("usercount").text),
webchatlink="https://tilde.chat/kiwi/" + name,
)
)
channels.append(channel)
channels.sort(key=lambda x: x["name"].lower())
out["channels"] = channels
out["channels"].sort(key=lambda x: x["name"].lower())
# print([x.text for x in d.findall("./channellist/channel/channeltopic/topictext")])
with open(f"{WORK_DIR}/stats.json", "w") as f:
json.dump(out, f)

View File

@ -14,7 +14,15 @@
<meta property="og:image" content="https://tilde.chat/apple-icon.png">
<meta property="og:site_name" content="tilde.chat">
<meta property="og:type" content="website">
<style>
/* offset #fragments */
:target:before {
content: "";
display: block;
height: 70px;
margin: -70px 0 0;
}
</style>
</head>
<body style="padding-top: 70px;">
<div class="container">

107
index.php
View File

@ -1,80 +1,51 @@
<?php include 'header.php'; ?>
<h1>tilde.chat <img src="/badges/badge.php"></h1>
<hr>
<h1>tilde.chat <img src="/badges/badge.php" alt="tilde user badge"></h1>
<hr>
<p>hey hi</p>
<p>tilde.chat is the irc network of the <a href="https://tildeverse.org">tildeverse</a>, an association of social unix servers built as an intentional community for teaching, learning, and sharing.</p>
<p>tilde.chat is meant to be a space for all tilde members to hang out, share, teach, and learn.</p>
<p><a rel="me" href="https://tilde.zone/@tildeverse">!toot goes here: mastodon</a></p>
<p>hey hi</p>
<p>tilde.chat is the irc network of the <a href="https://tildeverse.org">tildeverse</a>, an association of social unix servers built as an intentional community for teaching, learning, and sharing.</p>
<p>tilde.chat is a place for tilde-folk and friends to gather and communicate.</p>
<!--
<p>feel free to contact a tilde.team admin (<?php
$members = json_decode(file_get_contents("https://tildeverse.org/members.json"))->members;
foreach ($members as $member)
if ($member->name == "tilde.team")
$team = $member;
$count = count($team->sysadmins);
foreach($team->sysadmins as $sysadmin) {
echo "<a href='{$sysadmin[1]}'>{$sysadmin[0]}</a>";
if ($count>1) {
echo ", ";
$count--;
}
}?>) for more info as we flesh out this site</p>
-->
<h3>connection info</h3>
<p>you can connect to <em>irc.</em>tilde.chat on port 6697 with ssl</p>
<p>irc.tilde.chat is a round-robin host that will return any of the <a href="wiki/?page=servers">available servers</a></p>
<h3>connection info</h3>
<p>point your client to <a href="ircs://irc.tilde.chat:6697"><em>irc.</em>tilde.chat</a> on port 6697 with ssl/tls</p>
<p>
if you're getting a higher ping than you'd like, try one of the geo-round-robins:
<em>na</em>.tilde.chat, <em>eu</em>.tilde.chat, and <em>au</em>.tilde.chat on port 6697 with ssl.
<em>na</em>.tilde.chat, <em>eu</em>.tilde.chat, and <em>au</em>.tilde.chat on port 6697 with ssl/tls.
</p>
<p>plaintext <a href="irc://localhost:6667">on localhost port 6667</a> is available at a shell on <a href="wiki/servers">tildes that run chat nodes</a> (port 7766 on ~town)</p>
<p>if you don't have a client ready to go, try using our <a href="https://tilde.chat/kiwi/">kiwiirc webchat</a> or our <a href="https://tilde.chat/gamja/">gamja webchat</a>.</p>
<p>
you can also connect from any xmpp client with our <a href="https://biboumi.louiz.org">biboumi gateway</a>.
it runs on <a href="https://tilde.team/wiki/xmpp#biboumi">tilde.team</a>'s xmpp server.
channels can be joined with this room-format: <a href="xmpp:#helpdesk@biboumi.tilde.team?join">#helpdesk@biboumi.tilde.team</a>
</p>
<p>or localhost 6667 from a shell on any of the member tildes :) (port 7766 on ~town)</p>
<h3>mumble server</h3>
<p>connect to mumble.tilde.chat on the default port using "tilde.chat" as the password and talk!</p>
<p>might not be anyone there. shout about it on irc first!</p>
<h3>how to irc?</h3>
<p>if you have never used irc before, you might find <a href="wiki/intro">our intro to irc guide</a> useful.
<h3>member tildes</h3>
<ul>
<h3>channel novelties</h3>
<p>there are some fun things on tilde.chat run by <a href="wiki/bots">robots</a>, such as:<p>
<ul>
<li><p>in channels with <em>tooter</em> in them, <a rel="me" href="https://tilde.zone/@tildeverse">!toot goes here: mastodon</a></p></li>
<li><p><em>badger</em> is a bot that gives you badges for participating in channels it is in</p></li>
</ul>
<?php
foreach($members as $member) {
echo "\t\t<li><a href='{$member->link}'>{$member->name}</a> (sysadmin";
if (count($member->sysadmins) != 1) {
echo "s"; // plural
}
echo ": ";
$count = count($member->sysadmins);
foreach ($member->sysadmins as $sysadmin) {
echo "<a href='{$sysadmin[1]}'>{$sysadmin[0]}</a>";
if ($count > 1) {
echo ", ";
$count--;
}
}
echo ", channel: {$member->channel})</li>&nbsp;&nbsp;{$member->description}<br><br>\n";
}
?>
<h3>mumble server</h3>
<p>we also have non-irc voice chat!</p>
<p>use a <a href="https://mumble.info">mumble client</a> to connect to tilde.chat on the default port using "tilde.chat" as the password and talk!</p>
<p>might not be anyone there. shout about it on irc first!</p>
</ul>
<hr>
<!-- misc channel info -->
<h3><a href="/stats/">channel info and stats</a></h3>
<!-- closed. see: https://tilde.chat/discord/
<p>* = bridged to discord: tilde.chat private discord invites for tilde members <a href="/discord">here</a>. join and confirm that you're a tilde member to get access to the channels (including a private Discord channel for your tilde). bridging configuration can be adjusted per request.</p>
-->
<hr>
<h3>rules/guidelines</h3>
<p>please see the <a href="wiki/?page=etiquette">etiquette guide</a></p>
<p>chatting/using tilde.chat irc servers implies agreement with the <a href="https://tilde.wiki/?page=code-of-conduct">code of conduct</a>. the <a href="https://tilde.town/wiki/conduct.html">tilde.town code of conduct</a> applies as well.</p>
<p>if you have anything that needs oper attention, please send a mail to <a href="mailto:opers@tilde.chat">opers@tilde.chat</a>.</p>
<p>incidents will be handled according to the CoC as well as by admins of your home tilde</p>
<hr>
<h3>rules/guidelines</h3>
<p>please see the <a href="wiki/etiquette">etiquette guide</a></p>
<p>chatting/using tilde.chat irc servers implies agreement with the <a href="https://tilde.wiki/code-of-conduct">code of conduct</a>. the <a href="https://tilde.town/wiki/conduct.html">tilde.town code of conduct</a> applies as well.</p>
<p>it is recommended that you read the guide and codes of conduct, and try to abide by them even if you disagree</p>
<ul>
<li><p>failing to do so may result in your removal from individual channels, or the whole tilde.chat network.</p></li>
<li><p>bad behaviour may, on rare occasions, also result in tilde admins reconsidering your membership.</p></li>
<li><p>warnings before removal are usually given but are not guaranteed.</p></li>
</ul>
<p>if you have anything that needs oper attention, please send a mail to opers at tilde dot chat, or ask in #helpdesk</p>
<p>incidents will be handled according to the CoC as well as by admins of your home tilde</p>
<?php include 'footer.php'; ?>

33
motd/index.php Normal file
View File

@ -0,0 +1,33 @@
<?php
header("Content-Type: text/plain");
$node = $_GET["node"] ?? "hub";
echo shell_exec("figlet -w120 -f slant -- " . escapeshellarg($node) . ".tilde.chat");
echo "welcome to tilde.chat\n";
echo "this is the irc network for the tildeverse (https://tildeverse.org)\n";
echo "\n";
echo "check out the appropriate channel for your tilde:\n";
echo "\n";
$members = json_decode(file_get_contents("https://tildeverse.org/members.json", false, stream_context_create(['socket' => ['bindto' => '0:0']])))->members;
foreach ($members as $member) {
echo " - " . str_pad($member->name, 17) . "~> " . $member->channel . "\n";
}
echo "\n";
echo "the main lobby channel is #meta. you must log in with nickserv to speak there.\n";
echo "to get registered, run /quote ns help register or read our wiki: https://tilde.chat/wiki/nicks\n";
echo "check out https://tilde.chat/stats/ or run /list to find other channels\n";
echo "/join #helpdesk if you need assistance\n";
echo "\n";
echo "check out #tilderadio for our internet radio station!\n";
echo "\n";
echo "please see our etiquette guidelines: https://tilde.chat/wiki/etiquette\n";
echo "\n";
echo " ~~ be excellent to each other ~~";

View File

@ -1,22 +1,30 @@
<nav class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/">~chat</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
<li><a href="/wiki/"><i class="fa fa-edit"></i> wiki</a></li>
<li><a href="https://quotes.tilde.chat/"><i class="fa fa-comment"></i> qdb</a></li>
<li><a href="https://web.tilde.chat/"><i class="fa fa-comments-o"></i> webchat</a></li>
<li><a href="/stats/"><i class="fa fa-bar-chart"></i> stats</a></li>
<li><a href="/badges/"><i class="fa fa-shield"></i> badges</a></li>
</ul>
</div>
</div>
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/">~chat</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
<li><a href="/wiki/"><i class="fa fa-edit"></i> wiki</a></li>
<li><a href="https://quotes.tilde.chat/"><i class="fa fa-comment"></i> qdb</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
<i class="fa fa-comments-o"></i> webchat <span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li><a href="/kiwi/">kiwiirc</a></li>
<li><a href="/gamja/">gamja</a></li>
</ul>
</li>
<li><a href="/stats/"><i class="fa fa-bar-chart"></i> channels</a></li>
<li><a href="/badges/"><i class="fa fa-shield"></i> badges</a></li>
</ul>
</div>
</div>
</nav>

View File

@ -1,7 +1,8 @@
hey hi
welcome!
please see
https://tilde.chat/wiki/?page=etiquette
https://tilde.chat/wiki/etiquette
for more information on the rules for tilde.chat

View File

@ -2,13 +2,28 @@
$title="stats page";
$desc="stats about tilde.chat and its channels";
$stats = json_decode(file_get_contents("../stats.json"));
$members = json_decode(file_get_contents("https://tildeverse.org/members.json", false, stream_context_create(['socket' => ['bindto' => '0:0']])))->members;
include __DIR__."/../header.php";
?>
<h1>channels</h1>
<h3><a href="https://tildeverse.org/members/">member tildes</a></h3>
<?php foreach($members as $member) {
$chans = explode(", ", $member->channel); ?>
<div class="btn-group">
<a class="btn btn-default" href="<?=htmlspecialchars($member->link)?>"><?=htmlspecialchars($member->name)?></a>
<?php foreach ($chans as $chan) { ?>
<a class="btn btn-primary" href="https://tilde.chat/kiwi/<?=htmlspecialchars($chan)?>"><?=htmlspecialchars($chan)?></a>
<?php } ?>
</div>
<?php } ?>
<h1>stats</h1>
<hr>
<p>there are <?=$stats->usercount?> users across <?=$stats->channelcount?> channels.</p>
<p>if the channel is set with <a href="https://wiki.inspircd.org/Channel_Modes">chanmode +s</a> it will be omitted from this list.</p>
<h3>full channel stats</h3>
<p>there are <?=htmlspecialchars($stats->usercount)?> users across <?=htmlspecialchars($stats->channelcount)?> channels.</p>
<p>if the channel is set with <a href="https://docs.inspircd.org/3/modes/#channel-modes">chanmode +s</a> it will be omitted from this list.</p>
<p>the table is sortable by clicking on the column headers</p>
<div class="table-responsive">
<table class="table table-striped table-bordered table-hover">
<thead>
@ -22,9 +37,9 @@ include __DIR__."/../header.php";
<tbody data-link="row" class="rowlink">
<?php foreach($stats->channels as $channel): ?>
<tr>
<td><a href="<?=$channel->webchatlink?>"><?=$channel->name?></a></td>
<td><?=$channel->usercount?></td>
<td style="word-wrap: break-word; white-space: pre-wrap; max-width:700px"><?=$channel->topic?></td>
<td><a href="<?=htmlspecialchars($channel->webchatlink)?>"><?=htmlspecialchars($channel->name)?></a></td>
<td><?=htmlspecialchars($channel->usercount)?></td>
<td style="word-wrap: break-word; white-space: pre-wrap; max-width:700px"><?=htmlspecialchars($channel->topic)?></td>
</tr>
<?php endforeach; ?>
</tbody>

View File

@ -8,7 +8,8 @@ to contribute to the wiki:
* clone the repo to your local machine (or your public_html folder on the tilde.team box for live testing)
```sh
git clone git@tilde.chat:tildeverse/tilde.chat
git clone git@tildegit.org:tildeverse/tilde.chat
cd tilde.chat
```
* create a new branch for your page
@ -18,9 +19,23 @@ git checkout -b my-new-page
* if you want to add a new page, copy `template.md` into your new page!
```sh
cp template.md my-new-page.md
cp wiki/template.md wiki/my-new-page.md
```
* test your changes locally
```sh
composer install
php -S localhost:9000
```
this will run your site at http://localhost:9000/
if you are running the development server on your tilde account, you
will not be able to access it on (hostname):9000 because it only runs
on localhost, but you can create a tunnel with
ssh -L 9000:localhost:9000
to access from your localhost:9000 address
* edit as needed!
* commit your changes and [create a pull request](https://tildegit.org/tildeverse/tilde.chat/pulls) :)
@ -34,4 +49,4 @@ git push origin my-new-page # this should match the branch name you created earl
thanks!~
ps. if you have any questions, ask on irc! (preferably in #meta)
ps. if you have any questions, ask on irc! (try #helpdesk or #meta)

View File

@ -1,7 +1,6 @@
<?php
require __DIR__.'/../vendor/autoload.php';
use Tildeverse\Wiki\Parser;
use tildeteam\wiki;
$additional_head = "
<style>
@ -16,9 +15,19 @@ $additional_head = "
<meta property='og:site_name' content='tilde.chat wiki'>
";
$parser = Parser::factory();
$parser = wiki::factory(true);
if (!isset($_GET["page"]) || !file_exists("pages/{$_GET['page']}.md")) {
if(isset($_GET["page"])) {
$page=$_GET["page"];
} else {
$page="";
}
if(preg_match("/[^a-z0-9_-]/", $page)) {
$page="";
}
if ($page=="" || !file_exists("pages/$page.md")) {
$title = "tilde.chat~wiki";
$additional_head .= "
@ -27,6 +36,20 @@ if (!isset($_GET["page"]) || !file_exists("pages/{$_GET['page']}.md")) {
<meta property='og:description' content='tilde.chat wiki'>
";
include __DIR__.'/../header.php';
$pages = [];
foreach (glob("pages/*.md") as $page) {
$yaml = $parser->parse(file_get_contents($page))->getYAML();
if (!$yaml["published"]) continue;
$pages[] = [
"title" => $yaml["title"],
"description" => $yaml["description"],
"name" => basename($page, ".md"),
];
}
usort($pages, function($a, $b) { return $a["title"] <=> $b["title"]; });
// render wiki index ?>
<h1>tilde.chat wiki</h1>
@ -36,20 +59,31 @@ if (!isset($_GET["page"]) || !file_exists("pages/{$_GET['page']}.md")) {
<p>if you want to contribute, check out the
<a href="https://tildegit.org/tildeverse/tilde.chat/src/branch/master/wiki">source</a> and open a PR!
</p>
<p>commits to master will be automatically deployed</p>
<hr>
<h3>pages:</h3>
<?php
foreach (glob("pages/*.md") as $page) {
$yaml = $parser->parse(file_get_contents($page))->getYAML();
if (!$yaml["published"]) continue; ?>
<a href="<?=basename($page, ".md")?>"><?=$yaml["title"]?></a><br>
<?php }
<h2>pages:</h2>
<table class="table table-responsive table-hover table-striped">
<thead>
<tr>
<th>title</th>
<th>description</th>
</tr>
</thead>
<tbody>
<?php foreach ($pages as $page) { ?>
<tr>
<td><a href="<?=$page["name"]?>"><?=$page["title"]?></a></td>
<td><?=$page["description"] ?? ""?></td>
</tr>
<?php } ?>
</tbody>
</table>
<?php
} else {
$pg = $parser->parse(file_get_contents("pages/{$_GET["page"]}.md"));
$pg = $parser->parse(file_get_contents("pages/$page.md"));
$yml = $pg->getYAML();
$title = $yml['title'] . " | tilde.chat~wiki";
$description = $yml['description'] ?? "tilde.chat wiki article {$yml['title']}";
@ -62,11 +96,12 @@ if (!isset($_GET["page"]) || !file_exists("pages/{$_GET['page']}.md")) {
// show a single page ?>
<a href=".">&lt; ~wiki</a>
<h1><?=$yml['title']?></h1>
<hr>
<?=$pg->getContent()?>
<hr>
<a href="https://tildegit.org/tildeverse/tilde.chat/src/branch/master/wiki/pages/<?=$_GET["page"]?>.md">
<a href="https://tildegit.org/tildeverse/tilde.chat/src/branch/master/wiki/pages/<?=$page?>.md">
<i class="fa fa-edit"></i> source
</a>

55
wiki/pages/badger.md Normal file
View File

@ -0,0 +1,55 @@
---
author: ~khuxkm
published: true
title: "badger bot"
description: Twitch Plays Pokémon badge system
category:
- main
---
The Twitch Plays Pokémon badge system, ported to tildeverse IRC!
## How it works
Every 20 to 50 messages in #meta, the person talking will receive a random badge. These badges have a distribution like so:
| Badge Name | Chance of pull |
|-------------|----------------|
| Berrybadge | 65.00% |
| Firebadge | 15.00% |
| Rockbadge | 10.00% |
| Waterbadge | 5.00% |
| Shadybadge | 2.00% |
| Musicbadge | 1.90% |
| Sportsbadge | 1.00% |
| Tildebadge | 0.10% |
You can transmute 3 or more badges. When you do this, it will create one, hopefully rarer badge and take the badges you put in away.
For technical documentation on how transmutation works, refer to TPP docs [here](https://twitchplayspokemon.tv/transmutation_calculations).
## Commands
### `+listbadges`
Lists the badges you have. Takes no arguments.
### `+transmute <badge one> <badge 2> <badge 3> [<badge 4>...]`
Transmutes 3 or more badges into one, hopefully rarer badge. Badge names are case-insensitive.
### `+transmuteall`
Make the bot do all the hard work of transmuting. Takes no arguments. If you don't like the result at least you can say it's not your fault.
### `+badgeinfo <badge> [<badge>...]`
Gets info on the number of badges of a given type that exist. To get all badges, supply "all" as the badge name.
### `+optout`
Opts you out of the badge game entirely. You will not be able to participate again until you opt back in.
### `+optin`
Opts you back into the game, allowing you to participate again.

20
wiki/pages/botamusique.md Normal file
View File

@ -0,0 +1,20 @@
---
author: ~khuxkm
published: true
title: botamusique - Mumble bot
description: A bot to play music in Mumble.
category:
- main
---
***NOTE***: botamusique is back in business! after the files for it mysteriously disappeared, I reinstalled everything, and it should be back in working condition!
botamusique is our new mumble bot. (RIP MumbleDJ 2018-2020, you will be missed.) Here are some commands you can use:
- `!add {url}` - Just like MumbleDJ, you can !add a YouTube or Soundcloud URL. Technically, you can !add any URL youtube-dl can support, but they apparently don't all work with botamusique.
- `!ysearch {query}` - Search YouTube for a song to use.
- `!volume {volume}` - Set volume (out of 100).
- `!q` or `!queue` - See the songs in the queue.
- `!pause` - Pause the music.
- `!play` or `!p` - Play (resume after pause).
- `!rm {num}` - Remove the {num}-th song from the playlist.

View File

@ -1,20 +1,21 @@
---
author: ~cmccabe
published: true
title: cool irc bots
title: irc bots on tilde.chat
description: information about irc bots on tilde.chat
category:
- main
---
# tilde.chat irc bots
you might have seen some bots lurking about in chat. this page is intended to be a common place for documentation.
bots should be well behaved and efficient with system resources. if you see a bot that is not, please remind the botmaster about this and/or notify an admin. naughty bots can make the system less enjoyable for everyone, and we all have to work together to police them.
bots should be well-behaved and efficient with system resources. if you see a bot that is not, please remind the botmaster about this and/or notify an admin. naughty bots can make the system less enjoyable for everyone, and we all have to work together to police them.
## rules and etiquette for tilde.chat irc bots
please set usermode +B on your bot on connect to identify it as a bot.
this is also documented in [rfc-2](https://rfc.tildeverse.org/rfcs/2#usermode--b).
your bot must respond to !botlist with the following information:
- your system username (as creator/botmaster) - so we can contact you if the bot misbehaves
- one line description of the bot's functionality
@ -26,7 +27,7 @@ if your bot's code is not yet stable, keep it in the #bots channel and do testin
don't join #chaos or unless you want your bot to be spammed to hell and back.
all of the bots should also adhere to the following RFC specification: [RFC 2: Standardising IRC Bot Behavior](https://rfc.tildeverse.org/rfcs/2).
all bots should also adhere to the following RFC specification: [RFC 2: Standardising IRC Bot Behavior](https://rfc.tildeverse.org/rfcs/2).
## tilde.team bot starter kit
@ -44,9 +45,9 @@ follow the example of sedbot when you add your bot in a PR to the wiki
+ most regex character classes match here
+ flags include `g` and `i`
- [source](https://tildegit.org/ben/sedbot)
* bitbot
- botmaster: [~jesopo](https://lolnerd.net)
- short description: hand-crafted, artisanal `IRCv3` bot. slowly taking over `tilde.chat`. we bow before bitbot.
* tildebot
- botmaster: [~ben](https://ben.tilde.team)
- short description: an instance of BitBot for the tildeverse.
- list of functions:
+ `sed`-like corrections like `sedbot`
+ weather/time per user (`,weather`/`,w`/`,time`)
@ -56,8 +57,9 @@ follow the example of sedbot when you add your bot in a PR to the wiki
+ some per-user configuration available via `,config`
+ git hooks (including gitea) - notifications on push/etc
+ write your own functionality with a plugin!
+ ducc frens (when a duck appears: `,bef`/`,trap`, see stats with `,friends`/`,enemies`)
- [source](https://github.com/jesopo/bitbot)
+ tilderadio notifications and other tilderadio functionality
+ ducc frens (when a duck appears: `,bef`/`,trap`, see stats with `,friends`/`,enemies`/`,duckstats`)
- [BitBot source](https://github.com/jesopo/bitbot), [tildebot-specific modules repo](https://tildegit.org/ben/bitbot-modules)
* tracer
- botmaster: [~ben](https://ben.tilde.team)
- short description: generate tracery output from grammars in you ~/.tracery (on ~team) -
@ -75,20 +77,39 @@ follow the example of sedbot when you add your bot in a PR to the wiki
- list of functions:
+ !toot <message>
- [source](https://tildegit.org/ben/tooter)
* radiobot
- botmaster: [~ben](https://ben.tilde.team)
- short description: a janky bot in bash to post tilderadio updates - also toots from @tilderadio@tilde.zone
- list of functions:
+ radiobot: subscribe (or unsubscribe) - send a query when a dj goes online
+ radiobot: np - show what's currently playing on tilderadio
+ radiobot: dj - show who's currently broadcasting
+ radiobot: link - show a link to the tilderadio stream
+ radiobot: source - show a link to the sourcecode
+ radiobot: slogan - grab a random tilderadio slogan
- [source](https://tildegit.org/ben/radiobot)
* Babili
- botmaster: [~aewens](https://aewens.tilde.team)
- short description: A data aggregating bot for the IRC server, can as an API for other bots for handling historical data from the network
- list of functions:
+ View aggregated data at https://babili.xyz
- [source](https://tildegit.org/babili)
* circles
- botmaster: [~lickthecheese](https://lickthecheese.fuckup.club)
- short description: a nice bot to solve geometry problems
- list of functions:
+ do ?help to list commands
- [source](https://tildegit.org/lickthecheese/circles)
* [badger](./badger)
- botmaster: [~khuxkm](https://khuxkm.tilde.team)
- short description: the Twitch Plays Pokémon badge system, ported to tildeverse IRC?
- list of functions:
- `+listbadges` - List the badges in your possession.
- `+transmute <badge> <badge> <badge> [badge...]` - Transmute 3 or more badges into one, hopefully rarer badge.
- just be active in #meta and you should get badges. you'll get a message when you get your first!
- [source](https://tildegit.org/khuxkm/badger)
* pink_dragon
- botmaster: [~absalom](https://tildegit.org/baruchel)
- short description: idle hack'n slash game on the `#legend` channel
- list of functions: see the rules at [Legend of the Pink Dragon](https://pink-dragon.surge.sh)
- [source](https://gitlab.com/baruchel/pink-dragon)
* k
- botmaster: [~kiedtl](https://kiedtl.tilde.team)
- short description: a small bot with a bunch of miscellaneous functions
- list of functions:
+ `:dc`: `/bin/dc` expression evaluator.
+ `:fortune`: print a random fortune.
+ `:usrstats`: print statistics about users.
+ `:chanstats`: print statistics about channels.
+ `:owo`, `:pig`, `:rot13`, `:rev13`: random text manipulation functions.
+ and many more in the making!
- [source](https://github.com/kiedtl/ircbot)

53
wiki/pages/bungame.md Normal file
View File

@ -0,0 +1,53 @@
---
title: "#bungame"
author: ~khuxkm
description: "the bun game in the #bungame channel"
published: true
category:
- main
---
The bun game is pretty simple. In contrast to the duck game, in which the goal is to just be the first to befriend/trap the duck, in the bun game, you want to still be the one to befriend the bun, but you want to wait. The longer you wait to befriend the bun, the more points you earn.
## How to Play
When you join #bungame, there might already be a bun around. Use the `-peek` command to see if there's one around:
```
17:03 <~khuxkm> -peek
17:03 < bunbot> khuxkm: If you were to befriend the bun right now, it would have waited 616.22 second(s), and would therefore be worth 3.26 point(s).
```
The goal is to wait as long as possible while still befriending the bun. The amount of points you earn increases exponentially, starting at 1 point for an immediate befriend and increasing to 1000 points at one hour. When you've decided to befriend the bun, use either `-befriend`, `-bef`, or `-hug`.
```
17:06 <~khuxkm> -bef
17:06 < bunbot> khuxkm: This bun has waited 815.32 second(s), and is therefore worth 4.78 point(s)!
```
You can check your stats with the `-stats` command.
```
17:09 <~khuxkm> -stats
17:09 < bunbot> khuxkm: You have befriended 9 buns. Your average befriend time is 153.06, and your current score is 14.20.
```
You can check your place on the top 10 leaderboards with the `-top10` command.
```
17:10 <~khuxkm> -top10
17:10 < bunbot> khuxkm: Top 10 in score: khuxkm|lounge (14.20), acdw (8.65), brendanjw (6.35)
17:10 <~khuxkm> -top10 count
17:10 < bunbot> khuxkm: Top 10 in count: khuxkm|lounge (9), acdw (5), brendanjw (1)
17:10 <~khuxkm> -top10 time
17:10 < bunbot> khuxkm: Top 10 in time: brendanjw (963.06), acdw (227.49), khuxkm|lounge (153.06)
```
Buns have a 1/4 chance to spawn on any message sent when there isn't an active bun.
## Command Reference
- `-befriend`, `-bef`, `-hug` - befriend the current bun.
- `-stats` - get your stats (score, count, and time)
- `-top10 [<score/count/time>]` - shows the top 10 in any of the stats (defaults to score)
- `-peek` - see how long the current bun has been waiting (if there is one)

62
wiki/pages/channels.md Normal file
View File

@ -0,0 +1,62 @@
---
author: ~ben
published: true
title: channel modes
description: channel management
category:
- main
---
tilde.chat uses [anope](http://anope.org) irc services to provide accounts
and channel management features.
anope provides the following pseudo-users to manage the network:
- NickServ
- ChanServ
- BotServ
- HostServ
- MemoServ
- OperServ
you can likely guess what each one does by the name.
for more info about each part of services, you can ask it for help with the following
commands:
/msg nickserv help
pass the name of the subcommand after `help` for further information.
## registering channels
you can register a channel with ChanServ:
/msg chanserv register #mychannel
you can only register if you already have +o (chanops). this is automatically
granted when you are the first person to join a channel.
note that you need to be identified to NickServ for this to work. the channel
will be registered to your account, and you will automatically be granted +q and +o.
## setting persistent modes in your own channels with chanserv
now that you've registered your channel, you can set up access for people as
you see fit.
the easiest way to manage access lists is with the following commands:
/msg chanserv aop #mychannel add <someone>
/msg chanserv hop #mychannel add <someone>
/msg chanserv vop #mychannel add <someone>
/msg chanserv qop #mychannel add <someone>
these are used to configure a list of modes that will be set and maintained
automatically by ChanServ.
in this case, `aop` stands for automatic op and corresponds to +o for that user
in your channel. `hop` corresponds to +h, `vop` to +v, `qop` to +q.
you can also `del`, `list`, or `clear` your modelists. see the help for more info:
`/msg chanserv help aop`

View File

@ -2,25 +2,23 @@
author: ~aewens
published: true
title: "A brief history of #chaos"
description: The background and lore behind the #chaos channel
description: "The background and lore behind the #chaos channel"
category:
- main
---
# A Brief History of the Kingdom of #chaos
Our journey begins a few short days after aewens entered the IRC realm of ~team. There was simply far too much order to this growing community and something had to be done about this. It was then that aewens wrought #chaos upon the world.
As with all worlds, it became with only it's sole inhabitor and very little chaos can be done with only an individual. To rectify this, the gates to the kingdom of #chaos were opened forth to the world (or at the very least, the forum of #meta) and from which two new entities joined the kingom, ben and jan6. As being a new denizen to the IRC realms, aewens began with a slow start laying down the ground works for the kingdom as he figured out the nuances of how this world worked. It was suggested by ben to grant all users with the ability to harness the same power as the king of the kingdom to allow for the maximum amount of chaos to perpetuate throughout the kingdom, and so it was established. However, construction came to an abrupt halt when jan6 took the opportunity to usurp the kingdom as their own to become the new vengeful dictator.
Distraught to see his kingdom so quickly lost, aewens set out to reclaim his crown. It began with diplomatic negotiations, but jan6 would not relinquish the kingdom back to it's rightful heir. And so without any peaceful means to obtain what was rightfully his, aewens began to plot how retake the throne. The beginnings of the plan was simple, pleading through propoganda to the deities of the realm and creating something valuable enough to warrant a trade for the crown. Without anything of value to exchange for the crown initially, aewens began working on what would be an instrumental piece to this story: the bot of Babili.
Distraught to see his kingdom so quickly lost, aewens set out to reclaim his crown. It began with diplomatic negotiations, but jan6 would not relinquish the kingdom back to its rightful heir. And so without any peaceful means to obtain what was rightfully his, aewens began to plot how retake the throne. The beginnings of the plan was simple, pleading through propoganda to the deities of the realm and creating something valuable enough to warrant a trade for the crown. Without anything of value to exchange for the crown initially, aewens began working on what would be an instrumental piece to this story: the bot of Babili.
The concept of using the bot was to provide value to the community, but to banish jan6 from utilizing its resources until the kingdom is returned back to its rightful heir to the throne. During this time, jan6 transitioned from being a vengeful dictator to a false prophet of chaos by attempting to instill rules and order upon the kingdom of chaos. Horrified to see what has become of the once pure chaos of his creation, aewens continued to plead to the deities to hear his prayers and right the wrongs being made. And so the IRC deity, khuxkm, entered the realm to see what was running amok only to continually be cast out by the false prophet. While awaiting for the deities to lay down judgement, aewens was hard at work to provide more functionality and uses to the bot to both appease the deities and to apply further restrictions to jan6.
The concept of using the bot was to provide value to the community, but to banish jan6 from utilizing its resources until the kingdom is returned to its rightful heir to the throne. During this time, jan6 transitioned from being a vengeful dictator to a false prophet of chaos by attempting to instill rules and order upon the kingdom of chaos. Horrified to see what has become of the once pure chaos of his creation, aewens continued to plead to the deities to hear his prayers and right the wrongs being made. And so the IRC deity, khuxkm, entered the realm to see what was running amok only to continually be cast out by the false prophet. While awaiting the deities to lay down judgement, aewens was hard at work to provide more functionality and uses to the bot to both appease the deities and to apply further restrictions to jan6.
However, aewens did not need to wait for jan6's resolve to break to return as the king of #chaos. A fortnight had passed since the initial betrayal and his prayers were heard, khuxkm both enraged by being cast out of the kingdom and from the sin of bringing order into the realm of chaos he dethroned the false prophet, jan6, and set aewens back upon the throne. Outraged by the meddling of the gods in the affairs of mere mortals, jan6 cursed the deities for their acts of foul play but heard nothing but the chortles of joy as the kingdom's one and true heir had returned. It was a time for celebration as chaos was restored and there was a brief period of what passes for peace throughout the realm.
While peace was returned to the kingdom of #chaos, it was not to stay. As the days went by, jan6 continued to curse the deities and demand for the actions to be undone. While his demands fell upon deaf ears as he lost favor from the deities, aewens listened with consideration and was struck with inspiration. While once his enemy, aewens was willing to set aside his rivalry in the name of chaos, and so he brought forth a proposal to the deities. To adhere to the maximum amount of chaos in the kingdom of #chaos, there would be a random event where the crown becomes a free-for-all to whoever could retrieve it first. The deities enjoyed this proposal and so it became law that at the whim of the deities they can initiate the race for the crown.
Once this law came to pass, the crown passed hands back and forth between jan6 and aewens for control over #chaos. But much like many wars, one side will change the game by introducing a new element that shifts the balance of the scales. The shift in power being when aewens trained the bot of Babili to wait until it hears the declaration that the race for the crown has begun and to snatch up the crown to bestow to it's maker. However, much like when aewens was previously crowned by another, jan6 cried out in frustration to this and declared it must be the workings of the deities rather than to accept the bot as the source of crown's bestowal. While funny at first, aewens took pride in his creation and set forth to make the workings of the bot made public for all to see, so that when the next race to the crown begins, jan6 and all else who wishes to take the crown from it's rightful heir will know exactly who they are messing with.
Once this law came to pass, the crown passed hands back and forth between jan6 and aewens for control over #chaos. But much like many wars, one side will change the game by introducing a new element that shifts the balance of the scales. The shift in power being when aewens trained the bot of Babili to wait until it hears the declaration that the race for the crown has begun and to snatch up the crown to bestow to its maker. However, much like when aewens was previously crowned by another, jan6 cried out in frustration to this and declared it must be the workings of the deities rather than to accept the bot as the source of crown's bestowal. While funny at first, aewens took pride in his creation and set forth to make the workings of the bot made public for all to see, so that when the next race to the crown begins, jan6 and all else who wishes to take the crown from its rightful heir will know exactly who they are messing with.
Long live the king!
Long live the king!

View File

@ -1,18 +1,16 @@
---
author: ~ben
published: true
title: irc etiquette
title: irc etiquette guidelines
description: some guidelines for chatiquette
category:
- main
---
# guidelines
some rules adapted from: [fizerkhan/irc-etiquette](https://github.com/fizerkhan/irc-etiquette)
## no flooding/spamming/trolling in main channels
multiline messages belong in a pastebin. feel free to use https://ttm.sh (`echo text here | curl -F'file=@-;filename=stdin.txt'`) or https://paste.tildeverse.org for a graphical pastebin.
multiline messages belong in a pastebin. feel free to use https://ttm.sh (`echo "text here" | curl -F'file=@-;' https://ttm.sh`) or https://paste.tildeverse.org for a graphical pastebin.
if you have a need to spam many lines or abuse the figlet feature of tildebot, please do so in the appropriate channel (#chaos or #shitposting).
this includes ascii art and/or figlet output. please be considerate.
@ -20,29 +18,60 @@ this includes ascii art and/or figlet output. please be considerate.
bot commands belong in #bots. please limit yourself to 2 or 3 commands at a time. spamming commands is unacceptable and subject to the consequences below.
## don't be lazy - read the documentation
if people tell you to read the documentation then you should do so. never say: "i'm too lazy. come on. you all know what i need to do. just tell me what i need to do." this will get you ignored for all eternity. however you can expect to be told where to find the documentation. but if you get an url then get it and read it. if the documentation is too technical or you don't understand certain sections then say: "i have now read chapter 3.1 of the url you gave me and i understand how virtual domains work in general. but how would i use both virtual and non-virtual domains together?"
if people tell you to read the documentation then you should do so. never say: "i'm too lazy. come on. you all know what i need to do. just tell me what i need to do." this will get you ignored for all eternity. however, you can expect to be told where to find the documentation. but if you get an url then get it and read it. if the documentation is too technical, or you don't understand certain sections then say: "i have now read chapter 3.1 of the url you gave me and i understand how virtual domains work in general. but how would i use both virtual and non-virtual domains together?"
## unintended rudeness
sometimes you may feel that others are rude. you may get a response like "reinstall the package. restart the service. read the /usr/share/doc/mysoftware/readme." although this is a very brief reply it is likely not meant to be rude. irc is often like human interaction without all the friendly bits. other people have probably answered your question a dozen of times today and they just want to help you solve the problem - not become close friends with you. don't be offended by it. the people don't mean it.
sometimes you may feel that others are rude. you may get a response like "reinstall the package. restart the service. read the /usr/share/doc/mysoftware/readme." although this is a very brief reply it is likely not meant to be rude. irc is often like human interaction without all the friendly bits. other people have probably answered your question a dozen of times today, and they just want to help you solve the problem - not become close friends with you. don't be offended by it. the people don't mean it.
## try to not repeat yourself
asking the same question every minute is annoying. if anyone in the channel isn't paying attention then they will neither read you the second and third time. and those who came back from lunch or sleep will likely see in their "lastlog" what has happened lately. this is too demanding.
## avoid obnoxious behavior
the tildeverse is a purpose-driven community, intended to provide an environment where people can feel comfortable and supported in learning, practicing, or teaching about technology. while this purpose permits for a wide variety of activities on tildverse IRC channels, obnoxious or intentionally annoying behavior is not allowed. be considerate of the others on the IRC board; think
the tildeverse is a purpose-driven community, intended to provide an environment where people can feel comfortable and supported in learning, practicing, or teaching about technology. while this purpose permits for a wide variety of activities on tildeverse IRC channels, obnoxious or intentionally annoying behavior is not allowed. be considerate of the others on the IRC board; think
about how they will perceive your chat messages. if people ask you to stop something, it's probably because you're being obnoxious, and you should cut it out. examples of obnoxious behavior include posting your stream of consciousness ideas when you are not actually interacting with others, repeating variations of phrases over and over, intentional join/part spam, or
interacting with bots to the point of crowding out interactions from others.
please be considerate of other channels when trying to stop someone engaging in obnoxious behavior. if that behavior involves personal attacks, threats, bigotry, etc or other things that would plausibly result in them being g-lined from the network, do not send them to other channels as this will just result in more people being affected by it. not all wealth should be shared.
## don't assume pronouns
if you know someone's pronouns, use them. try to default to they/them if you don't know.
- check with tildebot to see if the person in question has set pronouns: `/query tildebot pronouns <nick>`
- check with `/whois` to see if a user has included them in the realname field: `/whois <nick>`
- ask them!
## last but not least
be considerate to your fellow tildizens and don't forget to have fun!
be considerate to your fellow tildizens, take [accountability](user_accountability) for your actions, and don't forget to have fun!
# consequences
* first offenses will be handled with a kick from the channel with an explanation of the undesirable channel. at this point, it's acceptable to rejoin.
* first offenses will be handled with a kick from the channel with an explanation of the undesirable behavior. at this point, it's acceptable to rejoin.
* second offenses will be handled with a 1 hour tempban. following the tempban, an irc/chan op will check in and let you know what kinds of behaviors to avoid.
* third offenses will be the same as second, but with a 24 hour tempban period.
* third offenses will be the same as second, but with a 24-hour tempban period.
if the undesirable behavior continues, further methods (up to and including a permanent ban) will be discussed among the oper team.
if you have something that requires oper attention, please send an email to [opers@tilde.chat](mailto:opers@tilde.chat).
if you have something that requires oper attention, please email opers at tilde dot chat.
# Shared Strike Policy
Channels participating will share moderation records of warnings/kicks/bans.
Users' continuing problematic behavior that has been previously addressed will share their Strikes between channels.
Users that earn multiple channel permabans may earn a network wide ban.
This means that:
* User warned about bad behavior in one chan
* User can be kicked in chan two when continuing behavior there
* User received a 1-hour ban in one chan
* User can earn an increased ban (say 2hr) in chan two when repeating said behavior there
* A user is permabanned (ex. harassment, continual arguing, persistent trolling, etc.)
* When continuing behavior in a second chan, they can be permabanned there also
## Enforcement
The Moderators of participating channels (see list below) will have the discretion to utilize this Shared Strike Policy.
The intent of this policy is to ease the burden moderating known bad-actors/trolls/toxic users, as well as to simplify holding such individuals [accountable](user_accountability) for their behavior.
Share Strike Participating Channels include: #aussie, #club, #covid19, #helpdesk, #institute, #meta, #politics, #team, and #tilderadio.

View File

@ -15,5 +15,9 @@ This is a list of callsigns of tildeverse members.
- [Z35TUN = tunas](//tilde.town/~tunas/)
- [KC8BRO = StarGazer](//stargazer.radiofreqs.space)
- [KC3LYZ = robertr](//robertr.radiofreqs.space)
- [N3FOS = LickTheCheese](//lickthecheese.fuckup.club)
- [KK6GET = NoraCodes](//tilde.town/~noracodes)
- [NV0N = jjs](//jjs.tilde.team)
- [VA3XMR = amr](//tilde.club/~amr)
A ham radio operator channel is available: [#hamradio](https://web.tilde.chat/?join=hamradio).
A ham radio operator channel is available: [#hamradio](https://tilde.chat/kiwi/#hamradio).

44
wiki/pages/hostserv.md Normal file
View File

@ -0,0 +1,44 @@
---
author: ~alexlehm
published: true
title: HostServ
description: intro to vHosts
category:
- main
---
tilde.chat supports a HostServ service which allows choosing a hostname to display with your IRC user instead of the actual hostname or IP address from which you are connecting.
This may be used to improve privacy or may provide a nice name or a "team" identifier if multiple users use the same vHost.
A hostname is formatted similar to a FQDN, however there are some limitations and actual FQDNs are usually not used.
A hostname should not be an existing domain/hostname or use an existing TLD, also it should not match any of the Tilde domains.
When you actually own a domain you can use it as hostname.
To request a hostname, send a message to the user HostServ with the command
/msg hostserv request the.hostname.you.want
To get a list of all possible commands you send
/msg hostserv help
A request for a hostname is sent to an actual human moderator so that it will take some time to be checked and you will receive feedback when the hostname is approved but not when it is rejected.
When the hostname is approved it will be activated and you can turn it on and off with
/msg hostserv on
/msg hostserv off
To check if your hostname is working, you can query your own user with
/whois username
or
/msg nickserv info username
If you want your tilde name as hostname, HostServ should not be used, instead you can run weechat on the machine and connect to localhost or use a bouncer if your Tilde provides one.

174
wiki/pages/intro.md Normal file
View File

@ -0,0 +1,174 @@
---
author: ~el
published: true
title: intro to irc
description: ok so now what do you do?
category:
- main
---
while this will _not_ be a comprehensive guide on all the software available,
it will hopefully point you in the right direction. it is adapted from the one
on the [libera.chat website](https://libera.chat)
## connecting for the first time
to use irc, first you need to choose a client application. they vary a lot, but
most will have the same basic features and do _not_ cost money, so don't worry
about picking the wrong one.
you can always use our webchats to avoid installing anything yet:
[our kiwiirc](https://tilde.chat/kiwi/) or [our gamja](https://tilde.chat/gamja/)
browser clients will automatically connect you to `#helpdesk`.
if you're running a client on a tilde, your client might have been automatically
configured for you when your account was made. most tildes have command line
clients like [weechat](https://weechat.org) or [irssi](https://irssi.org) already
installed so you can try them out and decide which one you prefer. try running
`weechat` or `irssi` to connect to `tilde.chat`.
if you're running a client you installed yourself on your own phone or computer,
most will have some kind of intro or wizard to get you going. look for a network
called `tilde` or `tilde.chat` if there is a network directory, or set the
network address to `irc.tilde.chat` with port `6697`.
if there is no wizard, or the process is confusing, you can try to check out the
client's website for some documentation about how to set it up. you can also just
connect through the kiwiirc or gamja webchats mentioned above and find someone to
help. the webchats will connect you to `#helpdesk`, and someone there can point
you in the right direction if you explain what client you are trying to use.
## talking
just like in instant messengers, there will be a field in the app where you
will be able to type things. this is where you chat.
this chat field is also where you can do commands to the server or the client.
commands start with a `/`.
## conversation windows
conversations windows are also known as tabs or buffers. they behave similar
to how you might expect from other chat apps.
in most desktop clients, a list of conversations will be down the left-hand
side in a column. in phone apps, there might be a drawer widget you need to
pull out.
selecting different items in this list will change what is shown in the main
section of the client, above the field you type chat and commands into.
the top one is probably the name of the network. when you are doing commands
you don't want others to see, such as [registering](nicks) an account,
this is a safe place to type them.
tabs starting with `#` are group chats, which are called `channels`. On
desktop clients, a user membership list will probably show down the right-hand
side of the screen when you have these conversations selected. on phones the
membership list might be in another drawer widget.
tabs underneath the channels are private conversations you have with people,
or bots, on the network. these are often referred to as a "pm" (private
message) or "queries".
## private conversations
you can often start private conversations with someone by double-clicking on
their name, also called a nickname or nick, in the membership list. if that
doesn't work you can achieve the same thing using the `/query` command. For
example, if you wanted to say "hi!" to the person with the nickname "john" you
would do:
```
/query john hi!
```
some people don't like unsolicited private conversations, so only do this with
people you know from talking in channels after asking their permission.
## services
services are specialized bots that help the network run smoothly. they manage
users and channels, among other things.
using services is how you [register a nickname](nicks), and identify (log in)
when you return for another irc session in the future.
they're also how you [register channels](channels) if you ever need to do that.
## topics
in most irc clients, a channel's topic description can be found at the top of
the screen. if you can't see all of it, you can have it displayed to you using
the `/topic` command.
you can find new channels on our [channels page](https://tilde.chat/stats) and sort
by channel name or by topic description. some clients like kiwiirc and hexchat
have built in channel list search wizards. in command line clients, look for
search instructions with `/help list`
## channel roles
when you're in channels, you might notice that some people in the membership
list have symbols next to their nicknames. most people will not have a role in
the channels.
on tilde.chat, the people with symbols have either the "admin", "operator",
'half-operator', or "voiced" modes.
admins own the channels. operators and half-ops (which have a subset of
operator commands) are the people that run that help run specific channel and
are responsible for moderating the chat, so sometimes they might remove or silence
people individually or set the channel to moderated mode.
when the channel is in moderated mode, comments from voiced users can still be
seen. often channels will give voice or one of the operator modes to their helper
bots.
## commands cheat sheet
this is a very small sample of commands that you may find useful as you get
started learning irc. in many clients, there might be buttons for these.
command parts shown in `[]` are optional.
- `/join #helpdesk`
- enter the channel `#helpdesk`.
- `/part [#helpdesk] [message]`
- exit the channel `#helpdesk`.
- if no channel is given, you will part the channel you type this into.
- the optional message will be shown to only this channel on your departure.
- `/nick nickname`
- changes your nickname to the one you specify.
- `/msg nickname message`
- sends a private message to user "nickname" _without_ opening a new
conversation window.
- `/query nickname [message]`
- open a conversation window with user "nickname", and optionally include a
message.
- the other user will _not_ know you did this until you send messages.
- this is useful for ensuring your conversation goes to the correct place,
such as when you're [registering](nicks) with `nickserv`.
- `/me action`
- use this for emotes. it will appear something like `* nickname action`.
- `/quit [message]`
- disconnects you from the network.
- the optional message will be shown to every channel you are in.
some commands will differ in implementation depending on your client. if the
following do not work as expected, see your client's website for documentation
or ask in their irc channel, which will be listed on their website.
- `/ignore nickname`
- may stop you seeing the user talk. useful if they are being a pest.
- `/unignore nickname`
- may allow you to see the user again if you change your mind.
- `/ignores`
- may list the current ignores you have set.
## i need more help!
if you get lost, you can always join `#helpdesk`.
for a chat directly in your browser [click here](https://tilde.chat/kiwi/), click
the `start` button, and ask questions.

63
wiki/pages/nicks.md Normal file
View File

@ -0,0 +1,63 @@
---
author: ~ubergeek
published: true
title: nicks and accounts
description: intro to nicks
category:
- main
---
Your *nick* in IRC is the name you go by, and how people get to know you, and how you get to know others. You can set it to most anything you like, with some exceptions for which characters to use.
## Registration
Some channels require you to have a registered nick. This means that nick has been reserved for you, and you alone. One of these channels is #meta, which is where a lot of people meet and chat.
To register your nick (Once you've picked one), you can do the following:
/msg nickserv register MySuperAwesomePassword me@example.com
Change 'MySuperAwesomePassword' and 'me@example.com' to fit you (ie, a good password, and your email address).
You will get sent a confirmation email, which will have a code in it. You must then message nickserv with this code, to confirm your account.
## Logging in
Once connected to IRC, you can then log in using the following:
/msg nickserv identify MySuperAwesomePassword
## automatic signin with sasl and certfp
we support authenticating via sasl and certfp:
see the libera.chat [guide](https://libera.chat/guides/sasl) for your
specific client. the basic idea is that you will want to set your sasl username
to your account name, and fill in your password as needed.
if you have a tls client cert, you can also use that to authenticate yourself.
once you are connected with tls (aka ssl) and logged in to services, you can
add your current cert with `/msg nickserv cert add`.
have a look at [weechat docs](
https://weechat.org/files/doc/stable/weechat_user.en.html#irc_connect_oftc_with_certfp)
for more information about using certfp.
## Resetting your password
If you've forgotten your password, you can use the RESETPASS command to send yourself an email with a recovery code.
/msg nickserv help resetpass
If you still know your password and just want to change it, you can use the SET command:
/msg nickserv help set password
## More Help
Nickserv itself is self-documenting, which means you can interact with it, to get more help.
/msg nickserv HELP
We use [anope](https://anope.org) services on tilde.chat. See the [anope wiki](https://wiki.anope.org/index.php/NickServ#NickServ_Commands) for even more info.

View File

@ -1,37 +1,37 @@
---
author: ~ben
published: true
title: tilde.chat servers
title: tilde.chat server list
description: list of servers in the network
category:
- main
---
# server list
you can use irc.tilde.chat to get a random server.
you can use irc.tilde.chat as a dns round robin between available servers. otherwise, feel free to connect directly to any of the nodes.
there are also three geo-round-robins available:
- na.tilde.chat
- eu.tilde.chat
there are also four geo-round-robins available:
- au.tilde.chat
- eu.tilde.chat
- na.tilde.chat
- sa.tilde.chat
try those for a more local connection. use port 6697 with ssl.
otherwise, feel free to connect directly to any of the nodes for a more local connection.
all external connections are on port 6697 with ssl/tls.
if you have an account on any of the shells, you can connect to localhost 6667 from there.
external connections use 6697 with ssl.
if you have an account on any of the tildes listed here, you can connect with
plaintext to localhost port 6667 from there.
once you're connected, try `/map` to see the servers listed fully.
| server | location | hoster | notes |
|---|---|---|---|
| aussie.tilde.chat | australia | [aussies.space](https://aussies.space/) | |
| club.tilde.chat | canada | [tilde.club](https://tilde.club/) | |
| ctrl-c.tilde.chat | new york | [ctrl-c.club](http://ctrl-c.club) | |
| gingko.tilde.chat | texas | [bhh.sh](https://bhh.sh/) | |
| hub.tilde.chat | canada | [ben](https://ben.ttm.sh) | services, [webchat](https://web.tilde.chat), and [website](https://tilde.chat) live here |
| institute.tilde.chat | germany | [tilde.institute](https://tilde.institute/) | |
| team.tilde.chat | canada | [tilde.team](https://tilde.team/) | |
| thunix.tilde.chat | germany | [thunix](https://thunix.net) | |
| town.tilde.chat | toronto | [tilde.town](https://tilde.town/) | only accessible from localhost on port 7766; no external connections |
| server | location | hoster | notes |
|------------------------|-----------|---------------------------------------------|--------------------------------------------------------------------------------------|
| aussie.tilde.chat | australia | [aussies.space](https://aussies.space/) | |
| bsd.tilde.chat | germany | [bsd.tilde.team](https://bsd.tilde.team/) | |
| cosmic.tilde.chat | london | [cosmic.voyage](https://cosmic.voyage/) | |
| ctrl-c.tilde.chat | new york | [ctrl-c.club](http://ctrl-c.club) | |
| institute.tilde.chat | germany | [tilde.institute](https://tilde.institute/) | not available on localhost currently |
| newhub.tilde.chat | virginia | [ben](https://tilde.team/~ben/) | services, [website](https://tilde.chat), and [mumble](mumble://tilde.chat) live here |
| team.tilde.chat | quebec | [tilde.team](https://tilde.team/) | |
| texto-plano.tilde.chat | chile | [texto-plano.xyz](https://texto-plano.xyz/) | |
| town.tilde.chat | toronto | [tilde.town](https://tilde.town/) | only accessible from localhost on port 7766; no external connections |

View File

@ -1,23 +0,0 @@
---
author: ~khuxkm
published: true
title: "#sevens"
description: Beware of those who speak in sevens, as you cannot know the fortitude of their souls. - A fun game khuxkm came up with.
category:
- main
---
# The game of #sevens
*Beware of those who speak in sevens, as you cannot know the fortitude of their souls.*
The game of #sevens is easy to pick up, and easy to understand, for anyone new. All messages must meet even one criterion:
- The amount of words used is 7.
- The amount of letters used is 7.
I understand this may be hard to do. For this, I provide you with help. If the amount of words or letters has 7 as its digital sum, the message passes.
If you fail, you get kicked out. Eventually, you'll be temporarily muted, but I'm tired.
This article was written to these specifications. It can't be that hard, can it?

View File

@ -0,0 +1,92 @@
---
author: ~demure
published: true
title: A User Guide to Self Accountability
description: A User Guide to help with Self Accountability
category:
- main
---
## Preface
> Everybody makes mistakes.
> Everybody has bad days.
> Everybody can grow.
Stuff happens -- we all know this.
As part of a community it is key that we identify our mistakes and strive to not repeat them.
Yes, this takes time, effort, and courage to:
* identify issues
* figure out changes
* implement changes
* take accountability
We all know that no one is perfect, and that self growth will take time; what is important is that *everyone* strives to better themselves.
## Identifying Issues
### Self Identifying
Occasionally we are able to notice how a thing we have said or done is uncomfortable/insensitive in hindsight, or how it might have easily been taken in a way other than we meant it to be.
If we notice in real time, we should give a correction and handle any [Small Stuff](#small-stuff), or escalate to more a more [comprehensive response](#outline).
### External Identification
It can be difficult to self-evaluate, but in order for each of us to become better people, we have to remain self-critical in order to improve.
How can we do that?
1. When someone in our community brings up discomfort or labels something that has been said as problematic, take a step back.
2. Do not take the community pointing out an issue as an attack. Instead, try to see it as a way to potentially improve.
3. Where does said discomfort come from? Is it from a place that we may not have sufficient knowledge?
4. Is this the first time this issue has come up? If not:
* Have there been different contexts?
* Why has this issue come up before?
* What's the root cause of this repeated discomfort?
In general, if a handful of people take issue with our actions, this should be taken as a call to review what happened.
If other members of the community seem to consistently remark upon a specific action or behavior, we should reevaluate it.
## Outline
There are a few key points related to Self Accountability. While cases will vary, these five things are crucial to **Owning** our Issues:
1. Acknowledge what happened
2. Acknowledge our involvement
3. Acknowledge why the issue was an issue
4. Acknowledge that we will work on changing
5. Apologize for the issue
When we take Ownership of an issue by stating the above points, they don't necessarily need to be individual sentences.
ie: it's fairly simple to acknowledge our involvement while identify what happened.
## Accepting Responsibility
Once we have taken time to reflect on what has happened, we need to tell our fellow community members.
Using the above [outline](#outline), make a statement and take Ownership of the issue.
If this issue is somewhat personal, it is quite appropriate to have one-on-one discussion(s) with those impacted.
If the issue was public, do try to make a short statement publicly anyway, so that others are aware that the issue is being worked on.
### Small Stuff
Sometimes we can do Small Stuff. It's pretty quick and painless to say:
"Oops, I'm sorry."
Just be careful not to write everything off as small stuff.
A good rule of thumb is that if someone else has raised our actions as being an Issue, or if its become a Pattern of Behavior, don't treat it as Small Stuff.
## Impact
### Why does all this matter?
We are all part of the community.
By Owning issues we are showing our fellow community members that we are aware of the issue, that we know a change is needed, and that we will work towards this change.
### Goodwill
Change will take time.
By Owning an issue we will build Goodwill with our community, and they will be more willing to work with us as we work towards change.
### Pattern of Behavior
Patterns of Behavior will impact how others chose to interact with us.
Consistent repeats of the same issues will drain [Goodwill](#goodwill), and will result in a lack of leeway.
Building up Goodwill gives us more leeway and understanding for occasional blunders.
## Closing
Change is hard -- but we must try.

83
wiki/pages/weechat.md Normal file
View File

@ -0,0 +1,83 @@
---
author: ~alexlehm
published: true
title: getting started with weechat on a tilde machine
description: run weechat as a local irc client
category:
- main
---
If you want to run irc on your tilde account, you can use weechat
which is installed and requires minimal configuration.
## First connection
Start weechat on your linux shell and type the following commands:
/server add tilde irc.tilde.chat/6697 -tls
/connect tilde
If you are using weechat 3.x, the command uses **-ssl** instead of
**-tls**.
This will connect you to the irc network via a secure connection. The
username used is your linux account, this has to be unique, if someone
else registered your name already and is online you will be called
**username1** or similar, then you should choose another nickname. You
do that with
/nick newusername
(If you didn't choose a username that is unique in the tilde network,
you had kind of bad luck.)
## Register
You now can register your username using your tilde email address as
described here: [intro to nicks](nicks)
## Setting login credentials
After you have done that, you can set the username and password in the
weechat settings to automatically log in and authenticate
/set irc.server.tilde.sasl_username <username>
/set irc.server.tilde.sasl_password <password>
Or to store the password securely (which is preferred), you can use
secure settings like this
/secure passphrase <passphrase>
/secure set tilde_password <password>
/set irc.server.tilde.sasl_password "${sec.data.tilde_password}"
Then the client will ask you for the passphrase when starting.
Now disconnect and connect again to get your registered nickname
/quit
run **weechat** again and then connect with
/connect tilde
## What now
Now you can join any channel, e.g. **#helpdesk**
You can set various parameters, e.g. to set your real name displayed
in /whois you can use
/set irc.server.tilde.realname "My real name"
You can join multiple channels with /j #channel or start private
conversations with /msg nickname and navigate between the different
windows with Control-n and Control-p
To automatically connect to the tilde server on startup use
/set irc.server.tilde.autoconnect on
For more information about weechat, see the
[manual](https://weechat.org/files/doc/stable/weechat_user.en.html)