Posts

Showing posts with the label GUPnP

Secure UPnP not a dream anymore

On last friday evening, while thinking about security and UPnP, I realized adding security might not be as hard as one might think. If HTTPS is used instead of HTTP together with authentication, Your neighbor should no longer be able to play his p0rn on your Media Renderer once he/she breaks into your wireless network. Giving it more thought, I then realized it might not be so hard to add this support into GUPnP and I was correct. After a few hours of reading libsoup docs and hacking around this weekend, I managed to add support for HTTPS in GUPnP. Adding authorization doesn't need any changes in GUPnP since we expose both SoupSession and SoupServer so applications can very easily add that there. Also no changes were required in GUPnP for the control points to be able to deal with devices/services using HTTPS instead of HTTP, thanks to libsoup. Here is a bug that you can follow if you are interested in this topic. WARNING : Use of HTTPS and/or authentication is not described in an

Rygel the GNOME UPnP Media Server

I am pleased to announce that gupnp-media-server project has been moved to GNOME SVN under the new name, Rygel . Currently it's a basic implementation on top of GUPnP and Tracker but I'll be putting a lot of time and love staring from next week to turn it into a very great project. Special emphases will be put into making it fit the UPnP needs of GNOME. This would be a very good time to convince me to implement all the features you would want to see in a UPnP Media Server so I can add them to my TODO file. :) UPDATE : While updating the jhbuild moduleset, I found out that rygel isn't buildable with latest vala/bindings. I'll try to correct the issue(s) tommorrow so don't panic if it doesn't build for you. It's just the demo effect. :)

GUPnP: achievements and way forward

As most of you probably know already, GUPnP is now officially part of Maemo and therefore future internet tablets. This is a major milestone and gives a big boost to my motivation to continue my UPnP adventure. Although I try to put as much of the bits and peaces of spare time i get from my job into UPnP work and I am pretty sure the Intel (former OH ) will continue their work as well, we could certainly use more hands to accelerate the development. If you want to help, here is a short list of TODOs that you might want to have a look at and decide if you could help on any of these: Bindings : Although the more bindings we have the more worlds we can conquer but what we definitely need is bindings for most popular languages in GNOME/Maemo world, namely C#/mono, Java and Python. If you are interested in helping with this, I strongly suggest you take the g-i-r route . Also if you are only interested in C# bindings, I suggest you talk to Jerome Halton who already have a half-baked solu

More Network Light fun

Image
When I wrote GUPnP Network Light, I thought of it as just a simple example application that demonstrates how easy it is to implement UPnP devices and services using GUPnP. However there is one man, Mr. Hugo Baldasano Calleja who being an electrical engineer is very much interested in light bulbs and has recently been writing control point for Network Light. While discussing about his code with him on IRC , I started to wonder how would a simple control point GUI for Network Light look like. I realized that it would look exactly the same as the Network Light itself. Since Hugo had already made it possible for multiple instances of Network Light to co-exist happily on the same network/machine, I decided to turn Network Light GUI to be a Control Point that controls all the Lights on the network, not just itself. The change is already in the trunk and will be released soon. Here is a screenshot:

GSSDP 0.6.2 and GUPnP 0.12.2 released

Jorn made minor releases of GSSDP and GUPnP today. The main purpose of which is to fix the build on Rawhide. Here is the release announcement: GSSDP 0.6.2 =========== - Reannounce resources after max_age / 2 - 1 instead of after max_age. [Peter Christensen, Jorn Baayen] - Remove unnecessary call to g_thread_init(). [Zeeshan Ali] GUPnP 0.12.2 ============ - Support returning actions outside of the 'action-invoked' signal handler in service implementations. [Zeeshan Ali, Jorn Baayen] - Add explicit dependency on gthread. [Zeeshan Ali, Jorn Baayen]

GUPnP soon in Fedora

Peter Robinson had made RPMS for GUPnP package for a while now but it was until recently that someone got a chance to review them. The first (and IIRC the only) issue that came out was that the build was breaking for all our apps. Here is what was happening: We call g_thread_init() in each of the application because libsoup requires us to do that. If I understand correctly, libsoup needs the threading system to be initialized for locking stuff that is actually a part of glib. While we don't mind putting this call in each of our app, we assumed that libsoup requiring us to make this call will itself link to libgthread-2.0. That assumption is true about libsoup-2.4 built/installed from vanilla release tarballs, subversion repo and debian/ubuntu packages but on Rawhide, it turned out to be false. I (and a bunch of other developer hanging out on #gnome-hackers) had a chat with Dan Winship about this and in the end he agreed to put gthread-2.0 in libsoup-2.4 pkg-config. He said that it

The Istanbul story

Time flies and it's already been a few days that I am back from Istanbul. It was a lot of fun. Great presentations, discussions and hacks in the mornings and Shisha and beer in the evenings. Had lots of discussion with a lot of people about GUPnP, how it can be used for UPnP integration in GNOME and what features they would like to see in gupnp-media-server. My talk went pretty well and this time the demo really did work on the wireless network available at that time. :) The only issue was that it was scheduled at the same time as the Lightning talks and because of that only a few (~10) people could attend. Talking of talks, my favorite was Michael's talk about Moonlight. There were many other nice talks as well like Quim's BoF , where he nicely explained Nokia's relationship with Open Source world in general and GNOME in specific, and OH people 's talk on Clutter and the cool new features in Clutter 0.8. There was a big debate going around on git vs bazaar. Alth

GUPnP MediaServer 0.1 released

GUPnP is an object-oriented open source framework for creating UPnP devices and control points, written in C using GObject and libsoup. The GUPnP API is intended to be easy to use, efficient and flexible. GUPnP MediaServer is an implementation of the UPnP MediaServer V 2.0 specification based on GUPnP and tracker . It is written (mostly) in Vala language. Download at http://gupnp.org/sources/gupnp-media-server/

GUPnP Media Renderer 0.1 released

- Initial release. This is a reference implementation of the UPnP MediaRenderer version 1 device type, written in Vala. For rendering it uses the video widget from libowl-av . GUPnP Media Renderer can be downloaded here

GUPnP Network Camera

This is the announcement of the GUPnP Network Camera project, an implementation of the UPnP Digital Security Camera specification , based on GUPnP. The GUPnP Network Camera package contains applications that enables V4L cameras to be shared on the network as UPnP devices, and control point software for controlling and viewing images from such cameras. The software can be downloaded at: http://www.kristell.se/network-camera/

gupnp-vala 0.1 released

Initial release of gupnp-vala. Includes Vala bindings for the whole gupnp stack: * gssdp-1.0 0.6.1 * gupnp-1.0 0.12 * gupnp-ui-1.0 0.1 * gupnp-av-1.0 0.2.1 - Requires Vala 0.3.3 - custom GUPnP types (like GUPnPURI) are not supported yet, use plain strings instead. Custom type support will return shortly in svn version.

tracker dep will soon be dropped

This is just to inform everyone that I do realize that a hard dependency on tracker is not the way to go and this is just a temporary measure. I am writing a gstreamer/gio based metadata extractor as we speak. Although I'll try my best to get this done before GUADEC at least, it might take longer since I do this on my spare-time (something I don't have in abundance). Disclaimer: I am not against tracker and I *will* keep the current tracker-based media source (as a plugin), though i might need to drop that as a temporary measure for while until i get the plugin system implemented.

GUPnP developer tools 0.6 released

network-light: - Remove the unneeded periodic notification to susbscribers. [Zeeshan Ali Khattak] - Create a new UUID for each instance of network-light. [Hugo Calleja, Zeeshan Ali Khattak] - Use the new gupnp_root_device_new() API. [Jorn Baayen] universal-cp: - Display the device presentation URL [Ross Burton] general: - Fix `make distcheck`. [Zeeshan Ali Khattak]

GUPnP-AV 0.2.1 released

- Correct function prototype. Fixes #940. [Jorn Baayen] - Include the glib header to satisfy vala-gen-introspect. [Zeeshan Ali Khattak]

GUPnP 0.12 released

- Add tool for generating convenience C wrappers for GUPnP service definitions. [Ross Burton] - Remove xmlDoc argument from gupnp_root_device_new() for simplicity. (xmlDocs can still be passed to gupnp_root_device_new_full()) [Jorn Baayen] - Better documentation, new tutorials and sample code. [Ross Burton] - Improved support for Accept-Language header. [Jorn Baayen] - Various internal improvements. [Zeeshan Ali, Jorn Baayen]

gupnp-media-server now written in Vala

I finally managed to port all the existing C code to Vala. What did i achieve from this exercise? For one thing, the code got much simpler, with LOCs being reduced from 2101 to 1117 (46.8 %). Also this proves that (at least the server-side) GUPnP's Vala bindings are already in a stable/usable state. Special thanks to Jürg Billeter , Ali Sabil and Jussi Kukkonen for their continuous support during this exercise and for quickly fixing bugs that I reported.

My new personal hero

Meet my new personal hero, Jussi Kukkonen . The only o-hand employee in Finland who almost single-handedly created the Vala bindings of the whole GUPnP stack and ported all our test apps to Vala in a very short amount of time despite the fact that he was completely unfamiliar to Vala and GUPnP (and UPnP itself) when he started working on this task and the fact that the Vala documentation is hardly any complete (especially binding-generation).

GUPnP developer tools 0.4 released

- Use libsoup 2.4. [Jorn Baayen, Zeeshan Ali Khattak] - Incremental browsing of containers. [Zeeshan Ali Khattak]

GUPnP-AV 0.2 released

- Use libsoup 2.4. [Jorn Baayen] - Add DLNA support to DIDL writer. [Jorn Baayen] - Some small fixes. [Jorn Baayen]

Vala is great!

Ever since Jorn and Matthew mentioned the idea of Vala bindings for GUPnP, I have been eager to learn Vala and so this weekend I finally got around to introduce myself to it. It's really cool. To express my admiration, I have already created a "Vala programming language fan club" group on facebook. :) A few minutes after I mentioned to Emmanuele on IRC about my intention of binding GUPnP for Vala, Ali Sabil had already done the basic work and we already have bindings that work for such basic example application at least: using GLib; using GUPnP; public class Browser: ControlPoint { public MainLoop main_loop { get; private set; } private void on_device_proxy_available(ControlPoint cp, DeviceProxy proxy) { stdout.printf("device %s found\n", proxy.get_friendly_name()); } private bool on_timeout () { this.main_loop.quit(); return false; } public Browser() {