Matt, right now the API is embedded in the CNC, for each respective module... To be honest, there is no current API, just a series of subroutines that are much too intertwined into the flow of how the presentation layer is pushed out...
Work is already in progress on how to separate this out, and split everything up into multiple layers that will facilitate a new rewritten CNC, and for those that want API access that is language agnostic (well: perl, PHP, python, bash)... The new CNC is going to be a regular API user, in the same way a reseller might want to write their own interface... I have even pondered releasing the CNC frontend code base as Open Source...
Quote:
|
This is why I have requested a stripped down CNC
|
I have been at a crossroads with this for some time, as the new CNC won't be using much (if any) of the existing code base... I have toyed around with offering:
1) XML or JSON output (we are leaning towards JSON only)
2) RESTful command control (we are still debating and designing the structure)
My issue is if the existing CNC code base is going into the garbage can, then should we invest our limited manpower in the new code base, or spend countless hours retrofitting our existing code base... I have come to the disheartened conclusion that our current resources cannot do both, no matter how badly I'd like to have both... There are just not enough hours in the day to do both, while still handling the EMS tickets we get daily that lead to distraction...
New things are coming, and Genesis Class is leading the way, however what is being asked of us now easily takes many months of focused time, just to get the design right... Then you have implementation and testing stacked on top of that... Also, to note, that the web is going through another rapid evolution with frameworks and techniques that it is like trying to keep hold of a greased pig... Very frustrating to say the least...
In conclusion, we are in a very strong building phase again, unfortunately none of it is visible top side and there is no ETA at the moment... An example of this would be that I just finished a WebDAV project (Genesis Class only) for one of our MQS clients, and I'm trying to find a way to offer this on the Community Servers... A couple more projects was the HTTP ==> HTTPS custom redirection options, as well as a decoupling of the CNC logins from the primary shell login, and a brief mention of PHP + SQLite3 is in order too... A new CNC module (Apache IP block management) has been written, that still needs polishing, but is currently functional... Once I'm done retrofitting to Phoenix and Enigma class, it will be announced... All of this required custom Apache code development to pull off and has pulled me away from CNC development... It works for them with production status, now I just need to find a way to capitalize on all that work and bring it to all Genesis Class level clients...
The wheels are definitely turning, but we have been slammed with custom client requests (I won't name names, but you know who you are) that I saw benefit in potentially bringing to everyone - otherwise I would not have tackled the requests and invested the countless man hours in producing...