I’m excited to announce a beta release towards the next major version of GenieACS that is v1.2. This release is a massive upgrade over v1.1 and it brings with it a number of new features, polish, and substantial performance optimizations. For a full list of changes see the changelog file or the release page on Github. Read on for the highlights.

The most notable feature in this release is the brand new user interface that I covered in my previous post. If you’re currently using genieacs-gui it should continue to work against v1.2, but certain features introduced in this release will not be accessible from the old genieacs-gui (e.g. setting config options). Going forward, genieacs-gui will not be receiving updates beyond bug and security fixes so it’s advised to make the jump to the new UI sooner rather than later.

Another big addition in this release is the introduction of a new SQL-like query language. It is intended to eventually replace MongoDB’s query language. Not only will this open the possibility to support other database engines in the future, but it also serves as general purpose expression language that proved to be a great fit for configuring many aspects of the UI.

Last but not least, we finally have built-in support for CPE authenticaiton. CPE authentication has long been a difficult problem to tackle primarily due to the fact that a device can be factory-reset at any time. And any secure credentials that we may have pushed to the device will not persist after the device has been reset. We therefore need to accept the default factory credentials on bootstrap events, and that opens the door wide open to spoofing attacks rendering our whole authentication moot. This can possibly be mitigated with some form of two-factor authentication. With that said, the CPE authentication feature is designed with flexibility in mind to allow the user to implement their own authentication scheme (e.g. two-factor authentication) to protect against various attack vectors such as the aforementioned bootstrap spoofing attack.

Apart from new features, there has been a massive amount of work under the hood to bring about more stability and polish. For one, we migrated the entire codebase from CoffeeScript to TypeScript and reaped the benefits of TypeScript’s optional static typing. In the process we caught and fixed a few bugs that have gone unnoticed for a long time. We also added code linting as well as unit tests. All in all this has resulted in much more pleasant development experience especially when working on the more critical parts of the software where a small bug can potentially have dire consequences on the entire network.

As GenieACS matures and becomes more widely used, it’s becoming increasingly more important to maintain complete and up-to-date official documentation. The wiki on Github has served us well so far, but at the end of the day wikis don’t lend themselves well for official documentation. So starting from v1.2, we’re hosting the official documentation at docs.genieacs.com. It is still a work in progress so please consult the forum if you don’t find what you’re looking for.