I use Pidgin for everything related to online communication. The beauty is how it supports so many protocols in a single client, and allows for expansion and addition of new protocols quite easily. My most recent (and insane) idea is to get a CyanChat protocol plugin working for Pidgin.
Now ideally, if I run into trouble and get stuck, I can ask at the Pidgin forums… but Pidgin doesn’t have any support forums, so I’m apparently going to have to rely on existing plugins and hope that some devs find this blog post via a Google search.
To start with, I’m taking the existing IRC plugin and using it as a base. IRC is overall the most similar to CC out of all of the protocol plugins. The main catch is that CC has no concept of buddies, and no way to register nicknames. Without some form of nickname registration, you can’t be sure that the buddy that you’ve added is actually the right person.
My goal was to have a protocol where you could create an account in Pidgin, give it a username, a server, and a port; and it would place a “chat” icon in the Pidgin buddy list with the server name and the port. Apparently Pidgin has some other ideas…
CC is also different from IRC in that you can’t join multiple channels. Once you’re in, you’re in. Requiring the user to “Add a Chat” to connect to CC is stupid, because there is only one chat available. It seems that Pidgin has never encountered a protocol with this sort of insanity and restriction before, and doesn’t provide any visibly easy way to deal with it.
Now, I’m not really writing this as an intended way of accessing CyanChat. I’m writing it mainly to get a basic understanding of how Pidgin handles protocols and accounts and to brush up on my knowledge of C++. I could in theory, write my own CC-based server with nickname registration and a few other things, but that would require a new server to be written (and not based from my C# server, because it doesn’t work in Mono on Ubuntu).
Right now my main question is: Can I create a plugin that will automatically connect to a server and add a chat to the buddy list?