Plugin: Web Interface for headless UMS
Forum rules
Please make sure you follow the Problem Reporting Guidelines before posting if you want a reply
Please make sure you follow the Problem Reporting Guidelines before posting if you want a reply
Plugin: Web Interface for headless UMS
Hi everyone,
this is a plugin I have created and it is based on jQuery (client) + JETTY Embedded (server). It enables control of UniversalMediaServer and/or Ps3MediaServer from a web browser and includes a wide set of features (the server listens on port 8083, can be configured in UMS.conf, parameter name "webinterface.port"):
- Web Feed setting
- Proxy setting, saving and activation
- PMS settings (render settings still missing)
- Realtime Server log tail (1 sec polling)
The project is still in "super beta" so don't expect miracles but it works well for me. You can find the project page at https://bitbucket.org/ntrp/ums-web-interface, please provide feedback so I can keep upgrading functionalities and fix eventual bugs. I don't know how much time I will have but I will give my best.
A Prebuilt Jar is available in the downloads section, soon I will create a wiki explaining the functionalities and how to configure them.
EDIT: the plugin has been completely rewritten using Socket.io and AngularJS on the frontend and Netty-Socket.io on the backend. It has been tested with UMS 4.3.1 and ti works but it is still experimental, you can find more info on the already provided website https://bitbucket.org/ntrp/ums-web-interface. There is a downloadable jar compiled in java 1.6 for compatibility and on the wiki page you can find instructions to compile it yourself. As before I don't have much time to update it and I will work on it when I can so don't expect too much
.
this is a plugin I have created and it is based on jQuery (client) + JETTY Embedded (server). It enables control of UniversalMediaServer and/or Ps3MediaServer from a web browser and includes a wide set of features (the server listens on port 8083, can be configured in UMS.conf, parameter name "webinterface.port"):
- Web Feed setting
- Proxy setting, saving and activation
- PMS settings (render settings still missing)
- Realtime Server log tail (1 sec polling)
The project is still in "super beta" so don't expect miracles but it works well for me. You can find the project page at https://bitbucket.org/ntrp/ums-web-interface, please provide feedback so I can keep upgrading functionalities and fix eventual bugs. I don't know how much time I will have but I will give my best.
A Prebuilt Jar is available in the downloads section, soon I will create a wiki explaining the functionalities and how to configure them.
EDIT: the plugin has been completely rewritten using Socket.io and AngularJS on the frontend and Netty-Socket.io on the backend. It has been tested with UMS 4.3.1 and ti works but it is still experimental, you can find more info on the already provided website https://bitbucket.org/ntrp/ums-web-interface. There is a downloadable jar compiled in java 1.6 for compatibility and on the wiki page you can find instructions to compile it yourself. As before I don't have much time to update it and I will work on it when I can so don't expect too much

Last edited by ntrp on Thu Dec 18, 2014 8:29 am, edited 3 times in total.
- Optimus_prime
- Posts: 678
- Joined: Fri Jun 01, 2012 6:39 pm
- Location: Sydney, Australia
Re: Plugin: Web Interface for headless UMS
Wow ntrp, that works great. I'll keep testing it and let you know of any problems. In you notes you may want to mention the fact users need to launch a web browser an type UMS's ipaddress with port, for example 192.168.0.2:8083 to get it to work, i know it's simple for most people but some might not know.
How Ask For Support
Remember, Debug Log's Can/Will Help and Explain your issues, we're not mind reader's but here to help
OS's I Use And Can Assist With: Windows 7/8, Mac OS-X 10.8 & 10.9
Mac OS-X Java 7 Builds Mac OS-X Java 7 Forum
Remember, Debug Log's Can/Will Help and Explain your issues, we're not mind reader's but here to help
OS's I Use And Can Assist With: Windows 7/8, Mac OS-X 10.8 & 10.9
Mac OS-X Java 7 Builds Mac OS-X Java 7 Forum
Re: Plugin: Web Interface for headless UMS
Thanks for the feedback, I added a usage note in the installation section of the wiki.
Re: Plugin: Web Interface for headless UMS
if you ISP allows for it...
Port fwd 80 (external) to 8083 (internal) port to on your router. (but i used 8080 instead)
Next, go get your self a Dyndns Pro account...
My website link now shows this feature!
http://deflanko.dyndns.tv:8080
Port fwd 80 (external) to 8083 (internal) port to on your router. (but i used 8080 instead)
Next, go get your self a Dyndns Pro account...
My website link now shows this feature!
http://deflanko.dyndns.tv:8080
Last edited by DeFlanko on Sat Jul 20, 2013 12:17 pm, edited 1 time in total.



Please remember to Upload your debug logs!
Universal Media Server Wiki!
"...functionality before beautification..."
Re: Plugin: Web Interface for headless UMS
a new tab after shares called "Media List"
and have it use HTML5 features to stream the videos would be epic.
i feel this its a prime candidate!
and have it use HTML5 features to stream the videos would be epic.
i feel this its a prime candidate!



Please remember to Upload your debug logs!
Universal Media Server Wiki!
"...functionality before beautification..."
Re: Plugin: Web Interface for headless UMS
Amazing job ntrp. Thx for sharing it!
-- UMS serving PS3, WDTV, Samsung H6400 + J5500 and Kalemsoft renderers! (no video transcoding but remuxing accepted
)

Re: Plugin: Web Interface for headless UMS
NTRP,
I think there is a java error while running UMS as a service and while running it normally at the same time with the Web Interface plugin.
I think there is a java error while running UMS as a service and while running it normally at the same time with the Web Interface plugin.
Code: Select all
08-14 17:06:48 FAILED ServerConnector@145d8e{HTTP/1.1}{0.0.0.0:8083}: java.net.BindException: Address already in use: bind
java.net.BindException: Address already in use: bind
at sun.nio.ch.Net.bind0(Native Method) ~[na:1.7.0_25]
at sun.nio.ch.Net.bind(Unknown Source) ~[na:1.7.0_25]
at sun.nio.ch.Net.bind(Unknown Source) ~[na:1.7.0_25]
at sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source) ~[na:1.7.0_25]
at sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source) ~[na:1.7.0_25]
at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:227) ~[ums-webinterface-1.0.0-a1.jar:na]
at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80) ~[ums-webinterface-1.0.0-a1.jar:na]
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69) [ums-webinterface-1.0.0-a1.jar:na]
at org.eclipse.jetty.server.Server.doStart(Server.java:303) ~[na:na]
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69) [ums-webinterface-1.0.0-a1.jar:na]
at org.qantic.umsplugin.WebInterface.<init>(WebInterface.java:67) ~[ums-webinterface-1.0.0-a1.jar:na]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.7.0_25]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.7.0_25]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.7.0_25]
at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[na:1.7.0_25]
at java.lang.Class.newInstance(Unknown Source) ~[na:1.7.0_25]
at net.pms.external.ExternalFactory.instantiateEarlyListeners(ExternalFactory.java:419) ~[ums.jar:2.6.5]
at net.pms.external.ExternalFactory.lookup(ExternalFactory.java:399) ~[ums.jar:2.6.5]
at net.pms.PMS.init(PMS.java:474) ~[ums.jar:2.6.5]
at net.pms.PMS.createInstance(PMS.java:853) ~[ums.jar:2.6.5]
at net.pms.PMS.main(PMS.java:940) ~[ums.jar:2.6.5]
08-14 17:06:48 FAILED org.eclipse.jetty.server.Server@1ba8c36: java.net.BindException: Address already in use: bind
java.net.BindException: Address already in use: bind
at sun.nio.ch.Net.bind0(Native Method) ~[na:1.7.0_25]
at sun.nio.ch.Net.bind(Unknown Source) ~[na:1.7.0_25]
at sun.nio.ch.Net.bind(Unknown Source) ~[na:1.7.0_25]
at sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source) ~[na:1.7.0_25]
at sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source) ~[na:1.7.0_25]
at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:227) ~[na:na]
at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80) ~[na:na]
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69) ~[na:na]
at org.eclipse.jetty.server.Server.doStart(Server.java:303) ~[na:na]
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69) ~[na:na]
at org.qantic.umsplugin.WebInterface.<init>(WebInterface.java:67) ~[na:na]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.7.0_25]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.7.0_25]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.7.0_25]
at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[na:1.7.0_25]
at java.lang.Class.newInstance(Unknown Source) ~[na:1.7.0_25]
at net.pms.external.ExternalFactory.instantiateEarlyListeners(ExternalFactory.java:419) ~[ums.jar:2.6.5]
at net.pms.external.ExternalFactory.lookup(ExternalFactory.java:399) ~[ums.jar:2.6.5]
at net.pms.PMS.init(PMS.java:474) ~[ums.jar:2.6.5]
at net.pms.PMS.createInstance(PMS.java:853) ~[ums.jar:2.6.5]
at net.pms.PMS.main(PMS.java:940) ~[ums.jar:2.6.5]
08-14 17:06:48 java.net.BindException: Address already in use: bind
08-14 17:06:48 at sun.nio.ch.Net.bind0(Native Method)
08-14 17:06:48 at sun.nio.ch.Net.bind(Unknown Source)
08-14 17:06:48 at sun.nio.ch.Net.bind(Unknown Source)
08-14 17:06:48 at sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source)
08-14 17:06:48 at sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source)
08-14 17:06:48 at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:227)
08-14 17:06:48 at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80)
08-14 17:06:48 at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
08-14 17:06:48 at org.eclipse.jetty.server.Server.doStart(Server.java:303)
08-14 17:06:48 at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
08-14 17:06:48 at org.qantic.umsplugin.WebInterface.<init>(WebInterface.java:67)
08-14 17:06:48 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
08-14 17:06:48 at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
08-14 17:06:48 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
08-14 17:06:48 at java.lang.reflect.Constructor.newInstance(Unknown Source)
08-14 17:06:48 at java.lang.Class.newInstance(Unknown Source)
08-14 17:06:48 at net.pms.external.ExternalFactory.instantiateEarlyListeners(ExternalFactory.java:419)
08-14 17:06:48 at net.pms.external.ExternalFactory.lookup(ExternalFactory.java:399)
08-14 17:06:48 at net.pms.PMS.init(PMS.java:474)
08-14 17:06:48 at net.pms.PMS.createInstance(PMS.java:853)
08-14 17:06:48 at net.pms.PMS.main(PMS.java:940)



Please remember to Upload your debug logs!
Universal Media Server Wiki!
"...functionality before beautification..."
Re: Plugin: Web Interface for headless UMS
The error appears because the plugin uses port 8083 to serve the view, if you start UMS twice it will try to run the same plugin thus the use of the same port. Is it necessary to have two instances at the same time? If the is a reason I can look into an implementation allowing it.DeFlanko wrote:NTRP,
I think there is a java error while running UMS as a service and while running it normally at the same time with the Web Interface plugin.
Code: Select all
08-14 17:06:48 FAILED ServerConnector@145d8e{HTTP/1.1}{0.0.0.0:8083}: java.net.BindException: Address already in use: bind java.net.BindException: Address already in use: bind at sun.nio.ch.Net.bind0(Native Method) ~[na:1.7.0_25] at sun.nio.ch.Net.bind(Unknown Source) ~[na:1.7.0_25] at sun.nio.ch.Net.bind(Unknown Source) ~[na:1.7.0_25] at sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source) ~[na:1.7.0_25] at sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source) ~[na:1.7.0_25] at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:227) ~[ums-webinterface-1.0.0-a1.jar:na] at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80) ~[ums-webinterface-1.0.0-a1.jar:na] at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69) [ums-webinterface-1.0.0-a1.jar:na] at org.eclipse.jetty.server.Server.doStart(Server.java:303) ~[na:na] at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69) [ums-webinterface-1.0.0-a1.jar:na] at org.qantic.umsplugin.WebInterface.<init>(WebInterface.java:67) ~[ums-webinterface-1.0.0-a1.jar:na] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.7.0_25] at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.7.0_25] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.7.0_25] at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[na:1.7.0_25] at java.lang.Class.newInstance(Unknown Source) ~[na:1.7.0_25] at net.pms.external.ExternalFactory.instantiateEarlyListeners(ExternalFactory.java:419) ~[ums.jar:2.6.5] at net.pms.external.ExternalFactory.lookup(ExternalFactory.java:399) ~[ums.jar:2.6.5] at net.pms.PMS.init(PMS.java:474) ~[ums.jar:2.6.5] at net.pms.PMS.createInstance(PMS.java:853) ~[ums.jar:2.6.5] at net.pms.PMS.main(PMS.java:940) ~[ums.jar:2.6.5] 08-14 17:06:48 FAILED org.eclipse.jetty.server.Server@1ba8c36: java.net.BindException: Address already in use: bind java.net.BindException: Address already in use: bind at sun.nio.ch.Net.bind0(Native Method) ~[na:1.7.0_25] at sun.nio.ch.Net.bind(Unknown Source) ~[na:1.7.0_25] at sun.nio.ch.Net.bind(Unknown Source) ~[na:1.7.0_25] at sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source) ~[na:1.7.0_25] at sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source) ~[na:1.7.0_25] at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:227) ~[na:na] at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80) ~[na:na] at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69) ~[na:na] at org.eclipse.jetty.server.Server.doStart(Server.java:303) ~[na:na] at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69) ~[na:na] at org.qantic.umsplugin.WebInterface.<init>(WebInterface.java:67) ~[na:na] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.7.0_25] at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.7.0_25] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.7.0_25] at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[na:1.7.0_25] at java.lang.Class.newInstance(Unknown Source) ~[na:1.7.0_25] at net.pms.external.ExternalFactory.instantiateEarlyListeners(ExternalFactory.java:419) ~[ums.jar:2.6.5] at net.pms.external.ExternalFactory.lookup(ExternalFactory.java:399) ~[ums.jar:2.6.5] at net.pms.PMS.init(PMS.java:474) ~[ums.jar:2.6.5] at net.pms.PMS.createInstance(PMS.java:853) ~[ums.jar:2.6.5] at net.pms.PMS.main(PMS.java:940) ~[ums.jar:2.6.5] 08-14 17:06:48 java.net.BindException: Address already in use: bind 08-14 17:06:48 at sun.nio.ch.Net.bind0(Native Method) 08-14 17:06:48 at sun.nio.ch.Net.bind(Unknown Source) 08-14 17:06:48 at sun.nio.ch.Net.bind(Unknown Source) 08-14 17:06:48 at sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source) 08-14 17:06:48 at sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source) 08-14 17:06:48 at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:227) 08-14 17:06:48 at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80) 08-14 17:06:48 at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69) 08-14 17:06:48 at org.eclipse.jetty.server.Server.doStart(Server.java:303) 08-14 17:06:48 at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69) 08-14 17:06:48 at org.qantic.umsplugin.WebInterface.<init>(WebInterface.java:67) 08-14 17:06:48 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 08-14 17:06:48 at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 08-14 17:06:48 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 08-14 17:06:48 at java.lang.reflect.Constructor.newInstance(Unknown Source) 08-14 17:06:48 at java.lang.Class.newInstance(Unknown Source) 08-14 17:06:48 at net.pms.external.ExternalFactory.instantiateEarlyListeners(ExternalFactory.java:419) 08-14 17:06:48 at net.pms.external.ExternalFactory.lookup(ExternalFactory.java:399) 08-14 17:06:48 at net.pms.PMS.init(PMS.java:474) 08-14 17:06:48 at net.pms.PMS.createInstance(PMS.java:853) 08-14 17:06:48 at net.pms.PMS.main(PMS.java:940)
Anyway sorry for the delay, I am very busy right now but I hope I can continue with my work on the interface soon.
Re: Plugin: Web Interface for headless UMS
Seems an interesting idea, I will look into it when i get a chance to work on the project againDeFlanko wrote:a new tab after shares called "Media List"
and have it use HTML5 features to stream the videos would be epic.
i feel this its a prime candidate!

Re: Plugin: Web Interface for headless UMS
Greetings,
I need some help getting this installed and working for my UMS 3.3.0
If someone could lend a hand I would be much appreciated.
FYI I am running the Windows version on a Windows Server 2008 R2
Thanks!!
I need some help getting this installed and working for my UMS 3.3.0
If someone could lend a hand I would be much appreciated.
FYI I am running the Windows version on a Windows Server 2008 R2
Thanks!!