New features

  • Added Role-Based Access Control (RBAC) support to the ZendHQ daemon and PHP extension

Implemented the local RBAC. Local RBAC uses the user.db database to store usernames, password hashes, groups (roles) and permissions.

A default user admin and default group admin are automatically created with full permissions to access all the services. The zendhqctl command-line tool can be used to manage the ZendHQ local RBAC database. The tool allows adding, removing and querying users, groups, services and permissions.

The Z-Ray activation token is now checked on the ZendHQ PHP extension for appropriate permissions before activating Z-Ray requests.

  • The ZendHQ daemon application can now be started with the --init_only|-I command-line argument. The application will initialize itself and then quit immediately. This command-line argument is useful when there is a need to create or upgrade ZendHQ databases without running the daemon.

  • Added Z-Ray SQL queries support for the PHP sqlsrv and oci8 modules.

  • Job Queue functionality in the ZendHQ PHP extension is now enabled also in the PHP CLI mode.

Internal changes

  • Implemented the IUserManager interface

The IUserManager interface is used to authenticate users and authorize their access to ZendHQ. All the ZendHQ JSON-RPC handlers now use the IUserManager interface to check that the user is authorized to use these services.

  • Updated the JSON-RPC session namespace handler

The JSON-RPC session namespace handler now accepts an username when creating or restoring the session. The username field can be left empty and defaults to admin.

The JSON-RPC session.namespaces method now returns permissions for the currently logged in user to use available JSON-RPC namespaces.

The session ID value now embeds Z-Ray access information and only users with appropriate permissions receive session ID values that can be used to activate Z-Ray requests.

JSON-RPC session namespace API version is now 1.5. ZendHQ daemon extension interface API version is now 20231205.

Bug fixes

  • Fixed a bug where the ZendHQ PHP extension would consume 100% of CPU

This bug happened when ZendHQ daemon and PHP extension versions did not match and daemon refused to talk to the extension or daemon was not running at all.