phone

    • chevron_right

      Movim 0.27 Lovas

      Timothée Jaussoin · pubsub.movim.eu / Movim · Thursday, 22 August - 20:03 edit · 3 minutes · 7 visibility

    What was planned to be a minor #release after last month one turned out to be a major release regarding the number of changes, new features and fixes that were made in the meantime. Let's have a look!

    Edit: a small fix was made just after the release, it is available in a v0.27.1 release.

    Important security fix: remote code execution through unsafe unserialize

    An important security issue was discovered just before this release, and it was decided to directly fix and release it. We are strongly encouraging you to upgrade your instance to this version.

    Context

    For more than ten years now Movim has saved its user configuration in a dedicated PubSub node on the user XMPP profile. This allows the user to keep its Movim instances synchronized and get their configuration back if they choose to migrate to a new instance.

    Back then, it was decided to simply save the PHP configuration as a serialized string in a PubSub node item.

    A malicious person could then inject in its own XMPP profile a malicious serialized string that Movim will try to parse when connecting making Movim vulnerable to a remote code execution attack. This related blog post explains it quite well.

    Security fix

    The serialize and unserialize related code has been completely replaced and rewritten. Movim is now publishing its configuration as a standard XEP-0004: Data Forms now which is also cleaner and easier to handle.

    What's new?

    First steps of the Movim Live video-conferencing project

    Last month we announced that NLNet was funding a large set of features around video-conferencing in Movim.

    The NLNet logo

    This release brings the first important changes live 🎉

    Moving the pop-up back to the main tab

    When video-conferencing was first added to Movim the platform was not yet a full Progressive Web App and the pages were reloading the Javascript environment completely each time the user clicked on a new link. The video-conferences were then moved to a dedicated pop-up to ensure that the connection was not accidentally reloaded during the call.

    A lot of work has been done over the past few releases to keep the Javascript session alive and load the content dynamically when navigating on the platform.

    This release not only brings back the video-conference window in the main tab but also integrates it dynamically into the discussions.

    Introducing the floating, chat-integrated, and full-screen modes

    When making a call you will now be able to switch dynamically between the different modes.

    The chat and floating mode

    When chatting with the person the video and audio call are integrated directly on top of the discussion. It automatically switches to floating mode on the other pages. Some more work regarding those modes and their integrations will be planned in the future.

    It is also possible to quickly switch to full-screen mode anytime if you want to really focus on the call with your friend.

    Current call status

    With the reintegration of the popup a lot of work was also done in the backend to keep track of all the events of the call. A specific CurrentCall object was created allowing the interface to be aware in real time of the call status.

    The call status

    The chats list and header now display a blinking "In call" status.

    Modernization of the XMPP Jingle stack

    The related pull request also brings a huge refactoring of the video-conferencing Javascript code and a modernization of the Jingle stack, fixing a few bugs along the way.

    This is just the beginning

    Those are just the first few steps. In the upcoming months we are planning to integrate multi-participant calls as well as server-side handled video-calls. Stay tuned, the Movim Live project will really bring a lots of awesome surprises!

    Database refactorings, cleanups and UI fixes

    Movim was storing a few pieces of data as serialized objects in the Cache table, including the status of incoming invitations and notifications, open chats and the last article read. The related caches table was completely removed and the related data is now stored properly in dedicated tables.

    Along the way, some broken migrations were also fixed and the related database libraries were updated.

    A lot of small UI bugs were also fixed in this version.

    What's next?

    The Movim Live project will be the main priority in the upcoming months.

    We are expecting some surprises and difficulties along the way, so no promise can be made regarding the deadlines and the features to come in the upcoming release.

    Don't forget to share this release around and support us if you like what we're doing 😊

    That's all folks!

    #nlnet #security #videoconference #database