So for the past few years, I’ve worked for an internet company (1&1 Internet), and one of the most used Server Management GUIs that customers used was Plesk (it was free on Dedicated Servers, and cPanel was only offered later to CloudServers). So one could say that I had a pretty intimate knowledge of the inner workings of Plesk as I had to support it day in and day out. However, one thing that I found that was lacking was 3rd Parties utilizing the API available. This largely can be blamed on the fact that Plesk has always used XML (eww) and only started rolling out JSON for their Restful actions, but that’s still lacking. The API Documentation also leaves alot to be desired (largely due to the XML format). To try to jumpstart myself back into programming as I’ve grown rust over the ages and only programmed in NodeJS and PHP for a few clients I had on the sides, I decided I wanted to start taking a stab at Plesk’s API and create some use-case applications. Xojo feels like the perfect place for an SDK to be created, as if I code it correctly, then we’ll not only be able to tackle macOS/Linux/Windows/rPi but also tackle iOS and Web all in one shot (though iOS not supporting XML really sucks! Time to get dirty with plain text).
The problem to solve:
So a colleague of mine introduced me to an email management philosophy of his to reduce spam. For every website that he’d sign up for, he’d create a separate email address for it and then forward the emails to his main email. So imagine [email protected] if I was signing up for netflix. This has the benefit that if say Netflix sold my information and that information was then used for a spamming campaign, I’d instantly know it was Netflix and I can take action. Actions can be anything from shutting down the email to maybe setting up rules after I identify legitimate Netflix email accounts ([email protected]) for instance. If I shut down the email address all together, then I can later recreate it when needed (say 1-2 years later when I forget my password). So I need to solve the problem of being able to quickly and easily create a new email address for a domain of my choosing.
Plesk is great because I can host as many domains and email addresses as I need to, and I can do it cheaply (1&1 offer(ed/s) Plesk for Free on Dedis, Free for old CloudServer customers like me, and 5$/month for new customers) compared to cPanel. However, I hate that I have to login to Plesk’s GUI, navigate to the domain, then navigate to emails, and then create everything while filling in everything (forwarding is on a separate tab, need to check a box, etc).
Vision for the solution:
So my vision is an application that can run on as many OSes as possible, remember my credentials in a safe format, allow me to set defaults, and allow me to easily flow through the creation process. Flow should be something along the lines of “Select Domain from list” => “Click ‘Create New Email'” => “Type email address” => “Select Auto-Fill for defaults” => “Click Save” => Profit….simple and to the point.
Steps to achieve solution:
1st: Create a SDK to do the “GET”s:
We’ll need to get the domains on the server, then get any emails attached to that domain so we don’t try creating duplicates (verification check)
2nd: Create proof-of-concept for gets to make sure that works
Use listboxes to list the domains, then click on the domain and see a list of emails…
3rd: Expand SDK for the “POST”s to create a new email
We need to be sure that it goes out, creates, and then parse for any errors based on the XML format.
4th: Clean up the Application flow so it’s as fluid as goal:
I personally like macOS’s File Select dialog, you click on a folder listbox-node, and then another listbox populates with the child nodes (files/folders) of that parent folder, and the window keeps scrolling as you move along.
What we have so far:
#1 and #2 are mostly complete and here are photos from macOS and Windows
Let me know if there’s anything else you want to see tackled with this project. The end goal is to get an SDK readily available in Xojo for anyone to create their own creations with!