JSXC broken in Freedombox 20.4?

Problem Description
JSXC allows to login in but I just receive a broken UI (Screenshot)
I guess that’s not what it should look like and actually the app is unusable.

Steps to Reproduce

  1. Install freedombox on armbian (debian buster) on odroidxu4
  2. Install ejabberd on fresh box.
  3. Open jsxc
  4. Login

Expected Results
I expected a working chat client in my browser window

Actual results
An incomplete and unusable interface

Screenshot
JSXC looks like this.

Information
Debian GNU/Linux 10 (buster) and FreedomBox Version 20.4

  • Hardware: odroid XU4
  • How did you install FreedomBox?: ‘apt install freedombox’
1 Like

I can reproduce this issue currently on Buster and on testing. For Buster, there are 2 resources that get 404: jsxc.css and dsa-webworker.js. For testing, it is just jsxc.css.

I found this issue a few times in the tracker:

Some more details are in this Debian bug report:

Perhaps we can work around this bug by symlinking the jsxc.css file into /usr/share/javascript/jsxc.

2 Likes

I don’t think symlinking will do the job.

 <link href="/javascript/bootstrap/css/bootstrap.min.css" media="all"
           rel="stylesheet" type="text/css" />
     <link href="/javascript/jquery-ui/themes/base/jquery-ui.min.css"
           media="all" rel="stylesheet" type="text/css" />
     <link href="/plinth/static/jsxc/libjs-jsxc/jsxc.css" media="all"
           rel="stylesheet" type="text/css" />
     <link href="/plinth/static/jsxc/jsxc-plinth.css" media="all"
           rel="stylesheet" type="text/css" />

The resources unter /usr/share/plinth/static/ lack totally the jsxc directory and while you could link jsxc.css I don’t know where to find jsxc-plinth.css. So that’s no easy job. I guess the package has to be repaired by someone with a deeper understanding of the where and whys of the dependencies.

1 Like

Please try running the following to fix the problem:

sudo su -
cd /usr/lib/python3/dist-packages/plinth/modules/jsxc/static/
ln -s /usr/share/libjs-jsxc/img/
mkdir libjs-jsxc
cd libjs-jsxc
ln -s /usr/share/libjs-jsxc/css/jsxc.css
ln -s /usr/share/javascript/jsxc/lib
ln -s /usr/share/libjs-jsxc/sound/

I will submit a pull request to fix this.

1 Like

There is special web server mapping that says static/<foo>/ will be mapped to plinth/modules/<foo>/static so you will find that file in /usr/lib/python3/plinth/modules/jsxc/static.

1 Like

It works like a charm!
Great! Thank you very much for your help and expertise :heart_eyes:

Maybe you can tell me also:
The jsxc version is a little behind - which is of course normal for a stable OS but …
It doesn’t support OMEMO yet while the current RC from https://github.com/jsxc/jsxc does. A great improvement if you ask me as most mobile clients do not support otr anymore.

I guess exchanging the installed jsxc with the 4.0.0rc isn’t trivial?

1 Like

Merge request is now available and the problem should get fixed automatically in the next release 20.5.1 or 20.6.

1 Like

Updating JSXC to a newer version (even 3.3.2) requires new dependencies to be packaged for Debian. See the “blocking bugs” on https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=812933.

1 Like

Thank you very much. I guess that will take some time until that, won’t it?

Maybe I should mention
Xep-363 and xep-359 support here as the problem is critical for jsxc to work. Even if it’s not a problem with jsxc code base … but with the bosh server of ejabberd.
Or is it …?

I can’t find any hint how to fix this BOSH problem.

Is here anyone who has mod_bosh in ejabberd on port 5443 and tls: true and jsxc still working?! Even if I put tls on false - then I lose http_upload.

https:<mydomain>:5443/bosh leads correctly to the test-page of mod_bosh, so the bosh server obviously works.

But if I start jsxc and type in the domain field the check outputs a failure

BOSH server NOT reachable or misconfigured.

502 Proxy Error

Any hint welcome!

1 Like

@perken
I have no idea why your non-JSXC clients can’t connect to your ejabberd, maybe check
https://wiki.debian.org/FreedomBox/Manual/ejabberd and look for logs.