I thought it was about time to work on the website a little. I’ve added forums and whatnot. I also thought I should give a little update on the progress and state of Frontmin. It isn’t quite ready yet but it has come a long way. It has taken a long time to get this far but I only do it in my free time. I’ve spent a couple weeks straight working on it recently. I rewrote everything to use namespaces and reorganized everything, but there is still a lot more reorganizing code to the proper places. I suspect this will be an ongoing project as I continue developing the code. Hopefully all the rewriting of things is done for now and I can continue moving forward. Exciting!
It isn’t ready for testing yet but when it is I’ll post an alpha release to download on this site for anyone interested. I also will have source code published and people could even contribute via pull requests. Maybe I’ll use GitHub or Bitbucket for it, haven’t quite decided yet. Frontmin will be released under the MIT license so it should be compatible with most other licenses such as the GPL. It is a WordPress plugin.
Currently what I have is sort of an empty shell of an interface which I am now going to build on. The whole of Frontmin has actually been rewritten a few times already due to starting with no PHP framework, switching to Joomla, and now switching to WordPress where I believe it will stay.
There is an option to build the API which builds the PHP to Virtualmin API based on the list of Virtualmin commands provided by Virtualmin itself. There is another screen to run any Virtualmin command using this newly built API. The API will build against both Virtualmin GPL or Pro and therefore support whichever commands the version you have has. Eventually I will add support for Webmin and Cloudmin. Currently it only has Virtualmin though. I want to add support for multiple API versions as well as multiple servers before any release.
The commands can be run through either the Virtualmin remote API or through command line API. There is an auto suggest drop down as you start typing or you can just down arrow to see them all. I plan to use this automatically built PHP to Virtualmin API to talk to Virtualmin for the various other screens within Frontmin such as the listing of plans and domains and various other features. Eventually I think it might have an API which Virtualmin or other systems could use to talk back to Frontmin and they can share and sync information securely.
One of the issues was a secure library to use for connecting to and running commands on the server via SSH for the Virtualmin command line API. One library I found was called phpseclib and it seems to do the trick. It can login with either a username and password or using an SSH key to login (which also can have a password). However, currently it’s storing this sensitive information within the WordPress database in plain text which is obviously a really bad idea so before any sort of release I must find a way to store the root login info securely or not at all. The root account seems to be required to run some vital Virtualmin commands. This is one of the main reasons I have not released any code for it yet. Another being that I’ve pretty much constantly been rewriting it until today.
I also started using Composer for 3rd party libraries and plan to add Frontmin to the Composer repository on release. I use NetBeans as my primary IDE and have a project setup which automatically will download WordPress and any 3rd party libaries and then I can get proper code completion and docs from everything. Maybe I can somehow integrate Composer into some sort of Frontmin install script which can download all the 3rd party libraries and get things installed automatically within a Frontmin setup wizard.
Another library I have considered using is the Payum payment processing framework which supports a whole slew of payment gateways. I haven’t found anything better yet but if you know of one please let me know.
I will try to make an update more often and I believe things will move along a lot quicker now that all the initial work is finally done.
Ryan