Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Meiga Guadec 2009 English

646 views

Published on

Meiga shares selected local directories via web and also as an RSS feed. It can reconfigure your LAN router using UPnP to make the share accessible from the Internet.

More information in http://meiga.igalia.com

These slides were prepared for the Gran Canaria Desktop Summit 2009 (Thu Jul 9 2009).

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Meiga Guadec 2009 English

  1. 1. static void _f_do_barnacle_install_properties(GObjectClass *gobject_class) { Meiga GParamSpec *pspec; /* Party code attribute */ pspec = g_param_spec_uint64 (F_DO_BARNACLE_CODE, Light content sharing from the "Barnacle code.", "Barnacle code", 0, G_MAXUINT64, desktop G_MAXUINT64 /* default value */, G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_PRIVATE); g_object_class_install_property (gobject_class, F_DO_BARNACLE_PROP_CODE, Enrique Ocaña González eocanha@igalia.com
  2. 2. Index ● A need: content sharing ● Development process ● The result ● How it works ● Ideas for the future ● References
  3. 3. A need: content sharing
  4. 4. Motivation Many desktop applications use web services and online contents Few offer contents to other applications (P2P, servers) Use cases: ● Share files or pictures in an convenient way ● Be an agent that generates XML or RSS contents which can be consumed by an external aggregation service (planet, Yahoo pipes, etc.) ● Remotely command applications
  5. 5. Alternatives Dedicated server technologies: Apache+PHP, Java/Tomcat, Mono/ASP... Desktop utilities: Gnome-user-share KDE File server Opera Unite
  6. 6. Disadvantages Dedicated server technologies: Heavy, complex to set up Not integrated with Gnome mainloop Desktop utilities: Gnome-user-share: depends on Apache (heavy) KDE File server: Kicker applet Opera Unite: not free software
  7. 7. Solution Lightweight GPL application using technologies friendly with Gnome desktop: Based on GObject Easy integration with main loop Possibility of DBUS services to third parties Simplified network configuration Existent libraries: libsoup libgupnp
  8. 8. Libsoup 2.4 Libgupnp 0.6 Asynchronous, uses Glib Asynchronous, uses Glib main loop main loop SSL support using GNU UPnP allows to configure TLS port dedirection if Server basic and digest supported by the authentication support router SOAP and XML-RPC basic client support
  9. 9. Initial evolution plan Stage 1 Stage 2 Stage 3 ● Evaluate libraries ● Generate RSS ● Extend some existing Gnome feeds applications to implement ● Implement a little file functionalities such as: server similar to ● Register more KDE Public complex things: ● “Offer all your pictures as Fileserver remote calls to RSS” functions, etc. ● Code a DBUS ● “Offer the playlist of service to allow songs you've listened other programs to today to as RSS” register/unregister files for sharing Meiga está ahora aproximadamente aquí
  10. 10. Development process
  11. 11. Programming language Vala was the chosen language Advantages: Easy to use → Less development time Execution speed Previous experience Disadvantages: Evolving syntax There's no binding for all the libraries → Pure C More complex autotools integration
  12. 12. Real project evolution Release 0.1.0 Release 0.2.0 File server module
  13. 13. Real project evolution Release 0.1.0 Release 0.2.0 File server module DBUS interface for external applications
  14. 14. Real project evolution Release 0.1.0 Release 0.2.0 File server module DBUS interface for external applications RSS server module
  15. 15. Real project evolution Release 0.1.0 Release 0.2.0 File server module DBUS interface for external applications RSS server module Graphic interface
  16. 16. Real project evolution Release 0.1.0 Release 0.2.0 File server module DBUS interface for external applications RSS server module Graphic interface Autotools integration
  17. 17. Real project evolution Release 0.1.0 Release 0.2.0 File server module DBUS interface for external applications RSS server module Graphic interface Autotools integration UpnP redirection utility Release 0.1.0
  18. 18. Real project evolution Release 0.1.0 Release 0.2.0 File server module DBUS interface for external applications RSS server module Graphic interface Autotools integration UpnP redirection utility Release 0.1.0
  19. 19. Real project evolution Release 0.1.0 Release 0.2.0 Port from Glade to GtkBuilder
  20. 20. Real project evolution Release 0.1.0 Release 0.2.0 Port from Glade to GtkBuilder Log exposing to the graphic interface
  21. 21. Real project evolution Release 0.1.0 Release 0.2.0 Port from Glade to GtkBuilder Log exposing to the graphic interface Spanish and Galician internationalization
  22. 22. Real project evolution Release 0.1.0 Release 0.2.0 Port from Glade to GtkBuilder Log exposing to the graphic interface Spanish and Galician internationalization Bug correction
  23. 23. Real project evolution Release 0.1.0 Release 0.2.0 Port from Glade to GtkBuilder Log exposing to the graphic interface Spanish and Galician internationalization Bug correction Release 0.2.0
  24. 24. The result
  25. 25. Home network Router UpnP IP: 1.2.3.4 Meiga IP: 192.168.1.10 Internet Contents Remote user
  26. 26. Main window and system tray
  27. 27. Log and port redirection
  28. 28. Sharing a folder
  29. 29. Sharing a folder
  30. 30. Remote access
  31. 31. Remote access
  32. 32. Contents as RSS
  33. 33. Log
  34. 34. How it works
  35. 35. SERVER libsoup DBUS HTTP MeigaServer Meiga gui.glade Log GUI Net RssFeed RssNode Gui gui.ui NET fwlocalip fwupnp Test sh C UPnP libgupnp upnp Router C
  36. 36. Programmable serial asynch events management Composite action “redirect port” Some states are Connect Redirect Return reused for other composite actions Program State interpreter Action for state 1 E1 Action for state 2 E2 EN Action for state N Data Callback for state 1 Parameters Timeout control Callback for state 2 Response Callback for state N Intermediate data Sequence control
  37. 37. Ideas for the future
  38. 38. More redirection modules Redirection by SSH SERVER SSH server HTTP Net Auxiliar client NET Remote browser fwlocalip fwssh sh
  39. 39. Integration with other desktop applications Nautilus menu: “Share on Meiga” SERVER DBUS MeigaServer Meiga Third party utility
  40. 40. More server modules Function calls URL SERVER DBUS Rythmbox Playlist module MeigaServer /playlist/... Evolution /addressbook/... Contacts module
  41. 41. Security Password access Cyphering Restriction by IP etc.
  42. 42. Situations to avoid Meiga shouldn't become a comprehensive interface for DBUS through HTTP (“serve everything”) ● Security holes ● There are currently more advanced utilities for network object sharing. Eg: CORBA
  43. 43. References
  44. 44. References ● http://meiga.igalia.com ● http://live.gnome.org/Vala ● http://library.gnome.org/devel/libsoup/stable/libsoup-server- howto.html ● http://dbus.freedesktop.org/doc/api/html/group__DBusBus.html ● http://raphael.slinckx.net/blog/documents/dbus-tutorial ● http://www.gupnp.org/docs/gupnp/client-tutorial.html ● http://www.upnp.org/standardizeddcps/igd.asp99 ● http://www.lrde.epita.fr/~adl/autotools.html ● http://live.gnome.org/Vala/GameDevelopmentSeries/Setup
  45. 45. http://meiga.igalia.com Thank you very much Questions, comments, suggestions?

×