GSFDM Browser Plugin.







What it's :
GBP ( Gsfdm Browser Plugin ) is a plugin for internet browser - netscape, mozilla - that intercept url of mime type it's configured for, and send these urls to the external downloader GSFDM throw CORBA bus. It's aim first  to 'pirate' url from embled / streamed form. When running it ( must, other case it seg fault... ) do all the job, from requesting configuration, getting / starting Corba name server to starting also gsfdm by itself. Read further for plain informations.


Build / Install :
The soft use autoconf. You must be use to this. In other case :
    in top source directory, type "./configure ". This will check you system and automatically configure it.
    type " make " : This will build of files
    type " make install " : Install automatically. Read further before doing it.

There currently 3 options for configure :
    --enable-debug : Dump on /dev/console some messages about what the GBP is doing. ( default OFF ).
    --disable-imlib : Tell GBP NOT to use imlib2 for displaying a logo in place of embled window. In othetr case, print a simple message. ( default OFF, Auto probe ).
    --use-mozilla : By default, will check for both netscape and mozilla, installing in each directory. Tell autoconf not to include netscape support ( default OFF )

There 2 parts for the soft :
    gsfdm_browser_plug.so : the plugin. Must by in a "plugins" directory ( ~/.netscape/plugins, /usr/lib/mozilla/plugins ... )
    gsfdm_browser_plug_conf : a simple gtk interface for easily configure the soft ( see configuring ). Must be somewhere in your PATH ( /usr/bin, /usr/local/bin ... ).

Default places :
    - exe go in /usr/local/bin.
    - lib in /usr/local/lib/<netscape / mozilla>/plugins. Currently the conf is unable to automatically install for both netscape and mozilla if there not in the some root ( for ex : /usr/bin and /usr/local/bin ). The conf neither check for browsers places. If there in /usr, you have to override it in configure ( --prefix=<your root place> ).
    - doc and logo in /usr/local/doc/gsfdm_browser_plug. Nota : GBP will look for logo in place it what build to.


Require :
    Orbit >= 0.5.3
    Glib >= 1.2.6 ( dependencies from orbit )
    Optional : Imlib2 >= 1.0.5 ( rendering of logo )
    Optional : Gnome-core ( Displaying messages to user throw gnome_dialog tool )


Configuring :
-The best way is to use the soft I provide. It create the configuration file for you, and fill it with default handled mime the first time it is runned. If you not hurry, you can also let the plugin call the configuration tool for you, what it bound to do if it can't found the configuration file.

-If this doesn't fit to you, here the place and form for configuration :
    - place : ~/gsfdm_browser_plug.cfg
    - format : one rule per line. NO space between token and value, case SENSITIVE.
 

Token
Description, Informations
Exemple
MIME= new mime, fully formated <mime>:<exe>:<description> MIME=video/x-ms-asf:asf,asx,*:Media Files
DLG= use gnome dialog(1) or status bar (0) DLG=0

-If a token match nothing, simple dismiss. NO check in mitmatch in data

- the default conf :
MIME=video/x-ms-asf-plugin:*:Media Files
MIME=video/x-ms-asf:asf,asx,*:Media Files
MIME=application/asx:*:Media Files
MIME=video/x-ms-wvx:*:Media Files
MIME=video/x-ms-wmv:*:Media Files
MIME=video/x-ms-wax:*:Media Files
MIME=video/x-ms-wma:*:Media Files
MIME=video/x-ms-wm:*:Media Files
DLG=0


Using the GUI :
-You should be looking at something like that :

-Nota : The fist time the gui is launched, fields are fileld with default mime.
-Nothing special, click on buttons (...). The soft will warm you for duplicated mime in THIS database ( I meen mime handled by plugin ). It can't inform you for a mime defined in netscape preferences.
For full desciption on a mime, click "Edit" button, this show the dlg below ( Also with "Add" button ).






- Edit fields you want. The "Mime" field is read/write only the fist time, when clicked "Add' button.
- If duplicated mime, you will be warned.

- Mime : mime key
- Suffixes : list of suffixes, comma separed, no dot
- Description : whatever you want

- "Use Gnome Dialog ... " : display messages using gnome_dialog, an external soft ( from gnome-core pack ) instead of using the browser status bar. Nota : many times, the status bar is unavailable. GBP will ( try ) use dialog.

- "Submit" update conf on disk, every NEW instance of plugin, e.i. html page that use it, will use the new configuration.


How the plug work :
-At every new instance from browser, the plug load its configuration, dynamically provide infomations like mime handled to browser. That meen new instance of plug will directly use changes you may have done on configuration but that also meen you May have sometime to reload the page you looking at, the instance of plug for this page still beeing on old conf.
The plug use plain CORBA for communication with downloader. You don't have to take care of starting something. When requested for new instance, it check for Corba name server. If it can't found it, Start it. Warm in case of error. It also connect to a running gsfdm servant. Start it in case and send url.



Exceptions / Errors Message :
- There are messages ( throw gnome_dialog or status bar ) for any errors. Where you could be lost it's with corba exception. For exemple, if you got :

Don't warry. This meen there were an user exception, send by servant, in responces of bad url, bad protocol, deny an url ( already in list ), an user cancel...
Here, this url is already in list, Gsfdm deny it without prompting, GBP inform for exception.


Know Bugs :
-Sometime, Corba name servant doesn't see a running Gsfdm servant, allowing start of a new one.  It's a corba bug.
-Netscape doesn't register the mime :  "video/x-ms-asf-plugin". Mozilla doen't care, so if you want to get files of this types ( in fact all embled to asf/asx in internet..), you have to use mozilla instead.
-Sometime plug's window doesn't refresh its state. Not important.
- Crash when loading a page : Could happen if no corba name server are running, there is still a property defined, without valid target ( for exemple after a crash of gnome-name-server ).  Try starting gnome-name-server ( or any other orbit / corba soft : gsfdm ) by yourself.


Contact :
Concept and code :  j.a.l@free.fr