xibosignage / xibo-linux

Xibo for Linux - Digital Signage Player
https://xibo.org.uk/xibo-for-linux
GNU Affero General Public License v3.0
76 stars 54 forks source link

Cannot connect to a v3 CMS #243

Closed dasgarner closed 2 years ago

dasgarner commented 3 years ago

It is not possible to connect to a v3 CMS instance. The options screen doesn't show any error/message when clicking on "Save". And if you start the Player it shows an error line from SOAP, but no message. The last accessed date doesn't update in the CMS.

Expected Behaviour: The Player should connect and play what it can (the XLF schema is the same).

dasgarner commented 3 years ago

After some investigation I think this might be related to headers. If you look at the headers a Linux Player sends with each XMDS request, you will note that some key headers are missing. This is an example request:

{"Host":"localhost:80","Content-Length":"1069"}

This is a similar request from postman:

{
  "Content-Type":"text\/xml",
  "User-Agent":"PostmanRuntime\/7.26.8",
  "Accept":"*\/*",
  "Host":"localhost",
  "Accept-Encoding":"gzip, deflate, br",
  "Connection":"keep-alive",
  "Content-Length":"893"
}

Specifically the Content-Type header is missing, but it would be very much desirable to have a User-Agent too for logging purposes.

dasgarner commented 3 years ago

There seems to be a further problem here, this time with AppImage.

I've got a snap install and an AppImage install on the same PC, both configured to the same CMS with the same displayId/hardware key.

In options, if I save in the snap it works. If I save in the appimage it says "500 Internal Server Error".

This is because the clientCode field must be an integer and AppImage provides a string.

Tony-Jab commented 2 years ago

Hi, I have the same issue after i upgrade my cms to V3. I have build my own snap (because i don't want automatic update snap) and i get 500 internal error. With AppImage i have the same issue. But If i install by snap repository, i didn't get the error. There is not the last update for the linux-player on git? Thanks

dasgarner commented 2 years ago

Have you tried installing via the edge channel in snap? There are certainly things in edge which are not yet promoted to stable channel.

Pietzu commented 2 years ago

I have the same problem with CMS V3.

I have tried to build a client by myself from this repository. I'm also getting "500 internal server error". I tried to build this repository last commit and releases: "edge-00125e7", "edge-0af4e78", "edge-1f0e919", "edge-a7d744f" and "1.8 R6".

I tested the installation from snap edge channel. It works.

Tony-Jab commented 2 years ago

Hi, sry for my delay. Like @Pietzu i have build client by myself and i have error 500 or another error. With snap edge channel it works but i can't use it in production. (because snap are updated automatically and i don't want that)

Pietzu commented 2 years ago

Is there any update for this?

dasgarner commented 2 years ago

Sorry I do not have an update for you - our lead developer has moved on to other projects and we're not having any luck finding another to continue working on this code base.

If the version in Snap edge channel works, then the best I can offer until we find someone to maintain the project, is to push that up to the beta channel, which I have done now.

dasgarner commented 2 years ago

We have a strategy for solving this problem:

Snap

The problem was solved in the CMS by reading php://input instead of using the http post body data. This would fix for all snap builds, including stable.

Nevertheless we will make a modification to include the missing headers for better compatibility.

AppImage

The root cause is using the short commit sha from git as the client version number - which is sometimes a number, but mostly contains characters aswell. CMS v3 is much stricter with its type sanitation and therefore does not allow this.

We will change the AppImage build process so that we take a count of pre-releases from the github API, plus 1 and use that as our version number. This should give us an incrementing integer which goes up by one each time we push to master (which itself generates an edge build in both snap and an appimage).

Pietzu commented 2 years ago

Thanks for the update.

This issue also explains why the self-built snap does not work. By default, the self-built snap gets revision number "x1".

For testing, I changed line 36 of the AppConfig.cpp file: return getenv("SNAP_REVISION"); -> return "1";

The client with this change connects to CMS v3 without any problem.