Repository navigation
Releases: polterguy/magic
Release list
Dashboard support for sending socket messages to specific clients
This release allows you to send a message over an existing socket connection to a named client/connection from the Magic dashboard using the "Diagnostics" menu item.
Invocations of socket endpoints from endpoints menu
This release allows you to invoke SignalR socket "endpoints" (files) from the "Endpoints" menu item in the dashboard. Notice, it doesn't keep the connection open, but at least allows you to invoke socket "endpoints", transparently, as if they were just another HTTP verb type of endpoint.
Better socket META information retrieval
Better socket meta information retrieval, allowing for paging and filtering from the "Diagnostics" menu item. Since there typically in a large scale app might be tens of thousands of simultaneously connected sockets, having the ability to page and filter on the server side is kind of crucial. This release implements that, allowing you to filter and page from the diagnostics frontend dashboard menu item.
Better Web Sockets and SignalR support
In this release I have stabilised the SignalR plugins, in addition to expanded upon these, adding among other things support for adding users to groups, and publish messages to groups. In addition, there is now a component in the Magic Dashboard allowing you to inspect current connections, which users are connected, etc. See the "Diagnostics/Sockets" menu item for details.
There is still some work left to be done in these regards, such as for instance adding paging and (real) filtering, since now it will retrieve all connections, which is obviously not good if you have tens of thousands of simultaneously connected users - But this release is a major step forward in regards to adding more and better SignalR and web sockets support to Magic.
Terminal integration and sockets/SignalR
This release features two brand new features, both of which arguably are a bit experimental in nature, and they are as follows.
- Terminal component, allowing you to use a web terminal integrated to your backend, to do things such as basic git operations, etc
- SignalR and web sockets support
Both of these features are slightly experimental in nature, and if you use any of these features, you might have to prepare yourself for breaking changed in the future. In addition, SignalR must be explicitly turner on through your "appsettings.json" file by adding something such as the following to your file within the "magic" section.
"sockets": {
"url": "/sockets"
}If you remove the above configuration segment, no SignalR endpoints will be configured, and the terminal plugin will not work, since it relies upon sockets to communicate STD OUT and STD ERROR information back to the client.
However, web sockets and SignalR is a standalone component, also for use in your own apps if you wish.
Brand new Web IDE
This release features a brand new Web IDE (Integrated Development Environment). It's super down scaled, and obviously doesn't have everything you'd expect from an IDE (yet!), and it's a bit "rough on the edges" still - But it definitely makes my life much simpler. Hopefully yours too.
Also, another bug was fixed thanks to Liran, which is that with SQL Server sometimes you want to use a username that doesn't have access to all databases in the server, at which point it would fail, and not allow you to move forwards with the "Generator" to crudify your tables. However, by making sure we only retrieve databases the current user actually has access to now, this is fixed. This thing should make the life of those using Magic with SQL Server and "restricted users" significantly easier.
In addition to this some other minor bugs have been fixed.
In the future I intend to support terminal connections with the IDE, integrating Git support, and compilation processes - But for now at least it allows you to save files on your server, which might not be much for some, but at least it's a start. I also intend to support more languages. For now the IDE supports the following extensions.
- sql
- md, txt, log, key - All resolved as Markdown/text editor
- yml, yaml
- xml, html, htm - Resolved using XML editor
- css
- scss
- less
- sass
- js
- json
- sh (bash, command line files)
- hl (Hyperlambda files)
I intend to support more languages in the future, such as Python, Ruby, etc - But at least it's a taste of what's to come ...
Ensuring more semantically correct HTTP status codes are returned from CRUDified endpoints
This release cleans up the usage of status codes returned from crudified endpoints, using more semantically correct status codes. In addition, it also provide some minor (important) features, such as the ability to retrieve and query the request scheme and hostname from Hyperlambda, etc. Also, assumptions now takes advantaged from this, implying assumptions will no longer fail, regardless of your backend's API URL.
Database migration script bug fix
The previous release would unfortunately not work if you already had a database, but not an "appsettings.json" file configured correctly. This release fixes that, in addition to several additional bug fixes, particularly related to SQL server database migrations, and also logging in exception handlers for cryptographic invocations.
Sorry about that, but this one is more thoroughly tested, and should do the trick.
Docker images have been updated and pushed, so if you're using Magic through its docker images, you can simply do
docker pull servergardens/magic-backend:latest
No changes in the frontend have been applied since version 9.1.7
Asymmetric authentication - ZERO password authentication
This release features asymmetric ZERO password authentication, by exploiting the asymmetric parts of public key cryptography, and creating cryptography challenges, allowing the client to request a challenge, sign it with his private key, submit the cryptographically signed content to the server, for then to have a JWT token returned back becoming his authentication and authorisation token for future requests.
The really interesting part of this little crypt trick, is that it allows you to implement zero username/password authentication schemes, where no clients needs to even supply usernames or passwords to your server to securely authenticate themselves for future requests.
Notice - This feature is a bit experimental in nature, and I don't recommend you using it for production scenarios (yet!), but I will expand upon it, and bugfix, to further stabilise it, since this is a "priority area" for Magic.
Import of public keys
This release gives a UI frontend for other 3rd parties to import their own public keys into your server. The key will not be enabled, but once enabled, can be used for cryptographically signed HTTP lambda invocations.