Videos :: All Posts :: RSS :: IMG :: THE.ARMADA  

Something I think XMPP could benefit from

July 13, 2023 — t̷h̷e̷8̷w̷o̷o̷d̷c̷u̷t̷t̷e̷r̷


I think XMPP could benefit from more web based stuff. Like, as far as I know there is Conversejs which runs over BOSH or Websockets, and is basically entirely a javascript (ewww) application. It's prettty nice I am using it on TooFast.vip right now and in an iframe on The8Woodcutter.sh.

There is also a much nicer web client (full) called movim and it has an AGPL+ licence (i think) and you can iterate either of both of these types of web clients on your own server for your users and federate also, so that any user can use it, in Jabber Land.

There's another one too xmpp-web or something? Here on Github (official???) and I have yet to try this one, in fact why don't I try it tonight? I'm not entirely sure I'm up for the challenge though :/

ANYWAYS so what I think is good for XMPP is if there were more utilities for accessing XMPP network. Such as a service discovery tool, standalone not in any already pre-existing full web client, and a standalone pubsub explorer would be effen mystical to have. Just as standalone mini-apps. So like let's think, perhaps the pubsub viewer just requires websockets connection and access to websockets API for an XMPP server. One could make a custom/community lua script for prosody as a module for a (example:) mod_web_pubsub_viewer and upload it to prosody's open community plugins. For ejabberd compliance, I'm scared of thinking of even writing a module for ejabberd, erlang is scary, but, perhaps just add it as simple as possible as a websockets extension if websockets is a listener value in ejabberd config like for instance :5443/ws might be all you need. Then what the actual module is mostly made up of is the viewer content in html/php/python/whatever (and please GOD don't use some obtuse not meant for web language I nor most major web developers are going to use like Rust or C++ or Kotlin or Golang or some dumb shit just use PHP for us normal people). So it's two parts: can it read and authenticate websockets data on xmpp, and is it nice looking web widget PHP/HTML/CSS plus..

I actually, for once, since most of any time I share my ideas, as I do have GREAT ideas OFTEN and they get poached and done way ahead of my ability timewise, for once, I doubt anybody is going to do this so I'm going to put it on my list of stuff to build. That way, if for any reason you want to just [Login] box then [Search Hostname] then a tree view of any applicable pubsub material (preferably public stuff, fully federated) and a [Sub] or [UnSub] and/or as time goes by more options thta pertain to subscribing to pubsub items. I still have no idea how they're pushed to subscribers. I can only recall seeing it once before, and once another time I did a thing (can't recall) where it posted payload data too (more than just a dumb ping with one word irrelevant of anything saying what it is or where it came from). So this is a lot of discovery and code and XMPP stanzas to file through.

I'm still waiting on a stable place to live so I can accelerate really good into this stuff as it stresses me out and is a disability, I suppose, to not be sitting on a couch I know I can get really involved in something that will take months. In regards to having found a home, I've just moved to a smaller place in my province and it's been cool so far, I hope I can find a way to stay long time.

"Skill is only developed by hours and hours and hours of beatin on your craft" - What I just heard in my headphones in a hardcore mixset 💣

Tags: chunk, xmpp, jabber, pubsub, webclients, webdevelopment, ideas

Trials with ejabberd XMPP server

June 01, 2023 — t̷h̷e̷8̷w̷o̷o̷d̷c̷u̷t̷t̷e̷r̷

Since the last post on this site (apoligies, it was a while ago) I was using prosody software for my xmpp server that I host. Over the last winter I managed to get a Movim instance running on my old server instance. Movim is a cool little XMPP based social media platform that was originally just a websockets based XMPP web client but has additional RSS like functions too. It was a real pleasure to host once I had finally gotten it to work. I discovered that Movim was better suited on an ejabberd server over a prosody server and because I couldn't actually engage with a community and all the community posts would only be commentable by the post author (myself or a contributor) I ended up learning how to run an ejabberd server. There's still stuff I have to learn like the erlang shell on a running instance and how to convert the limited mnesia database to MySQL but movim had quite a lot of particular wants from the XMPP server side.

What I found about ejabberd was that it sure is overly complicated. One of the first things I realized is that if I restart the ejabberd systemd service then everyone gets booted out of the MUC chats and has to have their clients reinitiate a connection to come back. This was a bit bothersome but there's a command `ejabberdctl reload_config` that can load *most* things but not all things in place on a running service. Ejabberd also spawns a whole schematic of erlang based stuff. I've never used any erlang stuff before then but it spawns a couple of listeners so if you don't have a firewall their ports are default open and respond to God knows what.. Telnet or Netcat would touch those sockets... Would epmd consent? Yes if no firewall.

Another thing about ejabberd is that yes it is in fact really low on resource usage and the configuration abilities are, despite myself finding great anger, lol, in trying to get it to work for stuff that is way much simpler to do in prosody configs, ejabberd config abilities are vast. Very vast and the documentation is actually really decent. Really really appreciate the level of documentation for ejabberd online. However there is barely any communicable support to be found except perhaps in the ejabberd xmpp chat.

I eventually, and this is the point of this post really, found out how to actually configure vhosts so that custom domains work. Ejabberd has some defaults for things like muc subdomain, pubsub and upload subdomains. It simply will want to default to pubsub.domain.vip, upload.domain.vip, conference.domain.vip, which for me is an asbolute no. I love my domains, and I've struggled immensely since operating ejabbed about almost 6 months now. It turns out that you have to create a whole subsection for the vhosts and that only piece of infortmation I actually found in the ejabberd man page. Of all places. The ejabberdctl, or ejabberd.yml, or one of those man pages explains a LOT. I found that ironic since their online documentation explains a lot too.

Hers's a couple pics of the radical domain schemes I am using:

ejabberd vhosts

Most of these are unused to be honest. I challenged myself to do two things: solve my OCD with packets.cc using pubsub.packets.cc (which does not follow my naming scheme), to use custom names for each service for each vhost, use 3 vhosts (which are main domains not subs) and to make it bloody work. I am very pleased with my work after it did take me about 10 hours and I had in that time made a few big mistakes and hurled myself over two very problematic errors. Namely that on ubuntu ejabberd did not even work, at all, even with a basic config. That was a serious piss off because I had dusted my previous host partly out of anger and partly by accident to use another distro hoping to get past the original ABSOLUTE WTF-ING WTF.COM error I was having on an OpenSUSE host. These both mind boggling errors, and admittedly not aided in any way by the way overcomplicated nature of ejabberd's log output and structure, caused me to destroy one operational and one more distro server host and start again. Now I also have a habit of just hitting the fuckit button and starting over as it does not leave a lingering feeling of old configs to mash up new work. I settled on trusty old debian and she runs happy now.

It might seem that most if not all of what I've done is complain about ejabberd but I honestly actually like it. I also really like the massive configuration abilities and the seperated sections for configuration (now that I've discovered more about that). I am pretty sure, for compliance of as much future tinkering as I might do, I will remain on ejabberd because it has it all and more. Notably the API where it offers basically all of the same options as ejabberdctl command on shell interpreter. I want to use slixmpp and see if it will interface with a XEP plugin or something with ejabberd API (which runs on http host of ejabberd) so I can do some funky bot stuff.

My score for this software at time of posting is ✪✪✪✪✪✪✫✫✫✫ [6/10]

Tags: xmpp, ejabberd, sysops, hosting, toofast.vip, jabber, chats