Videos :: All Posts :: RSS  

Happy updates to mrBot's doghouse!

August 18, 2023 — t̷h̷e̷8̷w̷o̷o̷d̷c̷u̷t̷t̷e̷r̷

Greetings internet! I thought I would explain about some of the updates I've done to my XMPP chat bot mrBot. It's funny, at one time mrBot was probably more famous than I am in XMPP world. In case you still don't know what XMPP is, that I continuously refer to, allow me to explain shortly:

XMPP (eXtensible messaging and presence protocol) is not a web program, persay, as the "web" runs primarily as websites using HTTP on ports 80,443 in the internet network among the world. So websites are the "web" and this is a chat protocol that is open source, fully open and standardized, and has matured over 22 years since the days of yahoo messenger, icq, aim, aol, etceter, those 90s chat programs you used to have to chat with people from around the world. Well, all of those are dead, except for XMPP and IRC, which in my humble opinion will never die. IRC (internet relay chat) has been around quite a lot longer than XMPP however THE CLOSEST thing to IRC that exists today is XMPP and XMPP is extensible beyond comprehension. It has what are called XEP sub protocols for features used within the XMPP master protocol and can do things that IRC typically can't or won't do, or not typically, like HTTP file uploads, publish subscribe (pubsub) services for infinite blogging, status, real time syndication type of stuff. If you've ever used Discord (gross) then you are aware that you can see your mates' status lines (under their name), whether they're online (green), away (orange), or invisible, etcetera, this is called "presence" and XMPP pioneered it FIRST.

One of the common things about open source stuff, especially as massive as XMPP as a protocol and a realm in which folks have build many many open source projects for use of it, is that rich fucks like Google and Facebook (yes, both have and did) have used the XMPP protocol for their google chat, facebook messenger, and once upon a time not too long ago you could actually connect to their networks using XMPP but not anymore! Embrace, extend, extinguish, was their intentions. Fail. The awesome thing I love about XMPP is that A: you can host your own instance, on your own domain, quite easily with a bit of linux skills, B: the entire scene is federated, just like email. You have what's called a JID (jabber ID, because XMPP was originally called Jabber) which is simply a username@domain and unlike IRC, and some other platforms, that are newer and far inferior, you can TOTALLY expect to get access to the entire federated public realm of chats. However there's a great many security features as well, and instance operators can choose to make their MUCs (multi user chats) private, moderated (require voice to chat), members only, and even enable E2EE (end to end encryption) in group chats. So it's pretty covert if you want it to considering putting your instance on the tor or the i2p network.

Yes XMPP is fully open and public and it's beyond comprehension how extensible it is, and if you get to know the folks on there you can get to know how to make the most of XMPP. A lot of folks become rather interested in computing, linux and self hosting services on linux servers. A perfect place for me.

So I've made a bot, I started building mrBot about 2 years ago with the ErrBot multi protocol chat bot framework but I was dissatisfied with the errors and the bugs. I eventually went with SliXMPP which is a mere library fully suited for XMPP bot building, among other amazing things. This has enabled me to grow my python skills a lot!

So what I am happy about today is that I have polished up some bugs with mrBot. Namely his awesomes function where he can accept a count, positive or negative, for any string almost. I also finished rebuilding some functions that I had him doing when I was using ErrBot like the rolling of dice. When you write "Roll 55" for example he'll output this:

⚂ ⚁ ⚄ ⚂ ⚄ ⚅ ⚁ ⚅ ⚄ ⚁ ⚁ ⚄ ⚁ ⚀ ⚀ ⚅ ⚃ ⚀ ⚀ ⚅ ⚄ ⚀ ⚄ ⚁ ⚃ ⚅ ⚄ ⚂ ⚀ ⚅ ⚄ ⚁ ⚅ ⚀ ⚂ ⚁ ⚂ ⚂ ⚅ ⚁ ⚁ ⚃ ⚅ ⚄ ⚁ ⚄ ⚅ ⚀ ⚄ ⚁ ⚀ ⚁ ⚄ ⚅ ⚃

A totally randomized dice for as many as you specify. I realize it's kinda dumb, but it's entertaining to me, and mrBot's entire purpose is to teach me Python language. Another thing I finished up was his "Food {food}" function where I've written pretty long lists for things you can "feed" mrBot and he'll have a cool answer to depending which category of lists you select what you guess for feeeding him. Yea mrBot is kinda like my pet, in fact he's "my dog" and I do get pissed off when people kick him from the chats LoL...

SO aside from these obviously fully useless non-utility bot functions, tht are merely entertaining at most, I have finally done something, and begun to build actually useful bot functions for mrBot. Namely network utilities. Once in a while, like today for example, we'd be in a chat talking about how another operator has got a configuration issue where his server cannot reach mine, for example. One of the common routines in this is some network command tools like ping, and some dns lookup tools, etc, that can help diagnose the network and come to a solution. Well it's sure handy, if you think about it, to be able to search DNS records, with record types, and also to be able to ping with ipv4 and ipv6 another host, via a bot in that very chat, it makes things transparent and easily accessable. So I've created today a host, a ping and a ping6 tools for mrBot. Tomorrow, if I'm feeling up to it I'd like to make the harder one which is the dig command so that that pretty much covers the basic most common tools for initial network probing.

I think, though honestly more like a really long time ago, this definitely permafries me as a NERD. Ahahaha, which is awesome, cuz I love to do this stuff and it's functional uses are fun for the future too. It's worth it to me to have spent numerous hours today to make this collection of bot upgrades, as I'm also expanding my python skills and learning new concepts and better use of the language and it's syntax ^^

A veteran web developer named Sam from Scotland, who somewhat mentored me a few years back over skype, taught me to have a practical use example for things you study if you're having a hard time understanding them. You honestly can't just brute force learn stuff without such strategies, I'm serious. You'll never get hands on experience. This is how I've enjoyed over past years creating stuff, and then going slightly really astray and building my own custom stuff that impresses, all from learning.

That's enough rambling. I had a certain long time friend in mind who I wanted to read my blog, I'm pretty sure he's not aware of it, he may not even be interested in it, but I had you in mind coatrack buddy for this cuz I think u'd be stoked. pEAcE !

Tags: chatbots, mrBot, bots, slixmpp, python, xmpp, nerd, computing, programming

SliXMPP Python Library and mrBot Missions

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

Greetings fellow netizons. It is I, the woodcutter a.k.a. chunk from xmpp/irc. I wanted to ramble a bit about what I've been working on with an awesome python library for making XMPP chat bots called SliXMPP. I have had for approximately two years now a bot of my own name mrBot and at one time he was more famous than I am in XMPP as everybody love him. mrBot was my original python project for learning while exercising python and it started with errbot the multiprotocol bot framework actually. It was a little bit too in depth and took me a long time to just get the configurations to work smoothly but then after not maintaining interest in it because of it's often bugs and inconsistencies I got slacking and bored of it. What made me switch from this errbot project was that I was using a docker container, and this errbot can load in a list of MUCs or IRC channels so one docker container is good. However that container was dated, as with most images on the docker hub, I eventually learned when in IRC a spammer had completely abused it inside out and the "ACL" or supposed access control list was null, it was configured and I swore it was fine, but worked not at all. That was crappy. So i ended up figuring out from a friend Shokara, who had the idea, was to use a biboumi transport, that can use IRC in XMPP client software, and so with XMPP ACL's working I could resume using mrBot in IRC but I lost a few benefits due to the nickname/JID translation. Finally I was working on a cool plugin I called err-megaphone lol that mrBot would take from an admin only an argument, which is a message, after a command then send that whole argument to all the chats he is currently in. So it could broadcast muc/channel wide whatever. I thought this could have so much been so much fun to make and it was absolutely meant for XMPP, as mrBot lives in XMPP world, but I kept getting some dumb async error, and worked like an idiot for waaay waaay too long and gave up because errbot, I dunno, I don't think it's maintained by more than maybe one guy, and not maintained well I think. It's however a multiprotocol bot program so it's huge. I gave up and after about 3-6 more months passed and I decided that a library isn't going to hide from me so hard and get lost in object oriented programmiing aspects, in classes and namespaces and aaaaaaaaaaaaaaa omg.

Holy moley was I correct. SliXMPP is really not hard, it is no harder than errbot, in fact probably a fair bit easier and sooooo much simpler. As well for learning Pythons, it's helped me boost my level in /usr/bin/python3.10 a LOT. However anytime you want to check out or use and modify the errbot plugins I made you're welcome to find them all on git.sr.ht/~cmdr_chunk. He had a food function, where chatters could feed him things, it had 4 lists of foods, for 4 response. What I think made mrBot so awesome is the response I made for him to act like a dog because his avatar in XMPP is indeed a cute pixelate dog. "My doggo" and when jan6 kicks him from #offtopic on ircnow I get on his case "you kicked my dogg, i keel you! i will jump this fence and keel you and your family!" lmfao if you get the reference.

So in SliXMPP I've recreated and basically perfected a particular function that another popular IRC bot program called bitbot does. I guess not so popular I cant find it's code on a web search, not the OFFICIAL code at least. It's originally called "Karma" where if you quote somebody with a ++ to say nice work, or what have you, and likewise -- in case they bad person or something. I remade this SOOOOO much better. I called it Awesomes. Because it's not a person based thing, you can ++/-- any string you want using certain regex parsed characters under I think it's 22 characters or so. As well not just at the beginning of the message on first character you start it, you can ++ a string like pythons++ right here <<< mid sentence and even pythons++++++ again and it will catch them and increment / decrement the string for a saved count. It uses shelve with python, it's new python3 shelve stuff that can REALLY easily save simple parameters to a database file and be modded and read again anytime later. Anyhow, the awesomes function of mrBot does sooo much things better than bitbot and it's practical use case is fun and makes sense. I've put a lot of work into it for my SliXMPP doghouse for mrBot and it's very well done. Also I didn't mention that to use spaces instead of simply words space delimited you'd use "word"-- and even "word%%!"+++++++++++++++++++++++ and it parses correctly. We've tested this function very much in IRC and good times ^^

I will tell of more mrBot tales another time folks, this has gotten long, come to XMPP or irc.ircnow.org and find me as chunk,b0t,cmdr_coconut or cmdr_melon on #offtopic, #armada, etcetera. Bon Voyage!!

Tags: slixmpp, xmpp, python, programming, bots, mrBot

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

Today's labor of love

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

So yesterday evening I was getting, once again, upset with my busted nvidia drivers and my libvirt not working. I needed the nvidia drivers because I wanted to test out if my Win11 disk (my slow SSD, bahaha) can run games if my entire one (1) screen is ran by nvidia. However I couldn't fix OpenSUSE-Prime (systemctl status prime-select) and it was dumping cores and stack traces and shiez. Then for no good reason virt-manager refused to load qemu/kvm:// and refused to connect. I like to speak a bunch like I know things, and when I do, I do know those things, but sometimes I can't be full of pride and think I'm very good if any good worth a shit at some stuff and I have / had no effen clue how to debug libvirt errors. Lest I even bothered, I had failed to work on nvidia prior to that.

As it may have been known, at least to some aliens, I have been running OpenSUSE (Open Source Community Based Enterprise Linux (RPM Type distribution of Linux)) and it's been a love hate relationship, mostly of love. I love SELinux and the fact that it's extra contexts sandbox core hardware, kernel and system level accesses and with OpenSUSE TUMBLEWEED (Not supported in Leap) SELinux enforcing targeted policy is an option in the installation. It can also (and I don't know how awesome or even a point this would be) apparmor at the same time. Being an enterprise linux it's got a lot of security, that's basically it. Centos 7 was my first enterprise linuxes and back when it actually came with compliance security schematics for like, government security and you could enable a security policy meant for a hospital or something... I imagine. OpenSUSE has taken me a while to get used to because of the linking of standard things like sudo cp /root/Xorg.conf.neww /etc/X11/xorg.conf or the grub-mkconfig -o /boot/grub/grub.cfg and typical MANUAL stuff that I'm used to with 📦ArchLinux📦 so it's pissed me off a few times, like when I had to discover that (and don't quote me on this, but it's how it appeared at the time) in order to change your desktop manager or your xsession (desktop environment) you needed to use a "helper" script lol helper, update-alternatives --config default.xsession and it brings up an interactive thing you can choose which DE/DM you want, if you have a few. However this, 'dynamic linking'? IS THIS WHAT THIS IS?!?!?! Is NO WHERE'S NEAR AS BAD AS ON Vultr.com or Ovh.com hosted host hosts. I've tried with all my might to overwrite and chattr +i /etc/resolv.conf yet that stupid cloud-init shit overwrites and links back and forth everything so bad it's maddening.

Suffice to say, I switched to Vultr.com for hosting for now. Not a big difference from linode. Considerably more expensive for less though and their cheapest "bare metal" server is 120USD / month (there was 2 available at the time). I got a $250 credit with vultr.com and I had fallen into some hardship IRL with money and a place to live and stuff costing me all my money, all. I couldn't afford liniode for the time being. Now however, I want to tell you that I am sad about this and I highly maximum rate Linode.com as I've been with them for I dunno how many years. ANYWAYS. SO I reinstalled my OpenSUSE over the night, took me a few hours to backup my shit, then I ended up wanting to try and install a bootloaderless (efi, secureboot, tpm) iteration on a bum partition, that failed, so I started again. THIS TIME, despite how much I HATE using anything other than NetworkManager I remembered to use Wicked network crap and have to relearn it. Suppose no big deal, as long as I don't come to a dead end for a week. The reason for that is because network bridge autoconfiguration for Xen hypervisor and Qemu hypervisor you need wicked or else you'd need to find a proper guide and follow it. Unless you're fkn leet and you run doez sockets anyhow.

I always use xfce4. If I use anything but xfce4 it's RARELY KDE/Plasma5 or it's usually i3wm. Sometimes I use lxqt (on archlinux) and already have i3wm install beforehand and it meshes better as the window manager for lxqt on 📦ArchLinux📦 than others I've tried, and got annoyed.
Lemme show you what I'm most happy with today, that I was spending my other half of my time doing:

So recently for something to do I made a weather.php script, a hitcounter.php script and I had another one I was going to do too, for The8Woodcutter.sh but I didn't like the color composition of the basically, erm, crap. Yea I had crap underneath the THE8WOODCUTTER banner and I ripped dat outta ther and were left with this space. I thought to myself two things: this is the way it was originally, big deal. As well, why not put a WIDGET or some WIDGETSsSSSs there? STUFF THAT I MADE MYSELF? STUFF THAT IS COMPLEX? I mean, no joke ass "plug it in" WP plugins that are a nightmare to tweak their obtuse OOP entangled shit so you get what you want but MAKE WHAT i WANT. I have a few ideas for portable widgets, that would be for #1: portable, #2: generally placeable on any webpage not running fucking erlang or some kookey shit like golang (sorry to those that really dig it) PHP or Python, like Flask, Django, Laravel, basic PHP, hell just an PHP enabled server that will simply just run php, but you gotta convert the files to, jokes, hopefully that doesn't ruin my post :| .... PHP FILES. NOT HARD NEWBS.


My score for this software at time of posting is ✪✪✪✪✪✪✪✪✪✫ [9.65/10]
(judged lesser because it has ONLY JUST BEGUN!)

Tags: conversejs, xmpp, the8woodcutter, blog, phpstuff, widgets, opensuse, enterprise-linux, linux, opensource

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

My friend has gotten a PinePhone!

September 26, 2022 — t̷h̷e̷8̷w̷o̷o̷d̷c̷u̷t̷t̷e̷r̷

My friend on XMPP chats, shokara, has gotten a PinePhone recently and I had one question in particular for him, knowing the PinePhone is a FOSS hardware and runs Linux, was if it can run Gajim. Gajim being my favorite desktop XMPP client :)

This is what he returned as an image and it's amazing! Because it literally is just like the desktop client! For sure PinePhone can run normal Linux software!

Gajim Pinephone

Tags: computing, linux, pinephone, xmpp