Linux - ServerThis forum is for the discussion of Linux Software used in a server related context.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Distribution: Debian, Red Hat/Fedora, Solaris, DD-WRT, NetBSD, Mac OS8/9, Mac OSX, UMP/OS, ESX
Posts: 42
Rep:
Authentication Error Openfire/JWChat HTTP-binding
Hello all,
I hope that I am not overlooking something too simple here, but after about one week of tapping the wall with my forehead, I decided that I need help (in one way or another).
I have an Openfire Server (3.4.2) set up on a Debian server, and that is working fine, meaning that I can log in with Jabber clients, and the logs are 'clean', i.e. no spectacular errors about missing files, etc...
I also have Apache 2.2 set up with PHP5, Perl and all the usual. I can verify that all of this is working fine, too. After a little testing of Openfire (great work, I must say) I decided that the finishing touch would be a web UI, or rather a jabber web client. The only decent one I have been able to find was JWChat (please point out a better one, if you have more of a clue than me!). I have set up the entire JWChat system in the way described in the README, meaning that mod_rewrite and so on are compiled into apache, and loaded. I can verify that this is working fine, too. I have enabled HTTP-binding in Openfire, and can also check that this is 'online' by visiting the respective URL's with a browser, and receiving the 'right errors'. I have edited the backend config in JWChat to suite my needs, and have even added the two values, required for using JWChat with Openfire to the Openfire server:
I have also tried swapping these values around, changing them up and down, removing them, etc, etc...
Now to the actual problem at hand: When I try to log in via JWchat, I will always receive an 'Authorization Failed' javascript messagebox, when JWChat launches the 'contact list' window. This is the server log from Openfire (debug):
2008.01.11 11:51:11 JettyLog: continuation {}
2008.01.11 11:51:11 JettyLog: resume continuation {}
2008.01.11 11:51:11 JettyLog: continuation still pending {}
2008.01.11 11:51:11 JettyLog: continuation {}
2008.01.11 11:51:11 JettyLog: EOF
2008.01.11 11:51:11 JettyLog: continuation {}
2008.01.11 11:51:11 SASLAuthentication: SaslException
javax.security.sasl.SaslException: DIGEST-MD5: digest response format violation. Incompatible charset value: utf-8�
at com.sun.security.sasl.digest.DigestMD5Server.validateClientResponse(DigestMD5Server.java:378)
at com.sun.security.sasl.digest.DigestMD5Server.evaluateResponse(DigestMD5Server.java:226)
at org.jivesoftware.openfire.net.SASLAuthentication.handle(SASLAuthentication.java:280)
at org.jivesoftware.openfire.SessionPacketRouter.route(SessionPacketRouter.java:57)
at org.jivesoftware.openfire.http.HttpSession.sendPendingPackets(HttpSession.java:430)
at org.jivesoftware.openfire.http.HttpSessionManager$HttpPacketSender.run(HttpSessionManager.java:311)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:595)
2008.01.11 11:51:11 JettyLog: resume continuation {}
2008.01.11 11:51:11 JettyLog: continuation still pending {}
2008.01.11 11:51:11 JettyLog: continuation {}
2008.01.11 11:51:13 JettyLog: EOF
2008.01.11 11:51:13 JettyLog: continuation {}
Now, I have tried this is Firefox 2.0.0.x, Opera (latest, 9 I believe?), Internet Explorer 6 and even Netscape (latest). The error remains the same. Usually I would post some of my configs, but in this case, there are no 'user friendly' settings to define the charset used for this. The jsjac.js library (provided by JWChat) is where it is defined, and is not meant to be edited. Being an annoyed admin, of course I have tried changing the charset to ISO-8859-1, UTF-8 (with CAPS, even though this should not be required according to RFC2222(SASL) and RFC2831), ISO-8859, Unicode, US-ASCII, etc. I understand that this seems ridiculous, but I was wondering whether it might throw me a different error. In a way it does, in another way it doesn't:
Incompatible charset value: utf-8� // is the error I get when using the 'default' UTF-8.
Incompatible charset value: ISO-8859-1?� // is the error with the 8859 encoding. Note the 2 question marks behind it. It would appear that there are trailing characters sneaking in to the info parsed from the UI to the HTTP-binding backend. I must honestly admit, that I have no idea how to fix this, and I'm more or less running out of ideas and hair to pull out. The following text is a cut-out of the jsjac.js libbrary provided with JWChat:
I am not a javascript expert by any standard, but 'it looks fine to me(tm)'.
Any pointers, suggestions, ideas, or recommendations for another frontend are more than welcome! If anybody wants more logs, dumps or configs, just let me know!
kind regards
PelliX
Linux Kernel: 2.4.27-2-386
Openfire: 3.4.2
Apache: 2.2
JWChat: 1.0beta3 (yes, I know it's a beta, but it works for other people)
JDK: 1.5.0_13
Last edited by PelliX; 01-11-2008 at 05:11 AM.
Reason: typo :P
Distribution: Debian, Red Hat/Fedora, Solaris, DD-WRT, NetBSD, Mac OS8/9, Mac OSX, UMP/OS, ESX
Posts: 42
Original Poster
Rep:
Well, I got 'down and dirty' and removed the SASL Layer from the setup by bastardising the jsjac.js library. After removing the the 'charset=...' directive from the connect string, I get a little further (I think):
This is the current debug log, and I keep getting some warn logs, too:
The test user is called 'test' with a password 'test' to keep things easy ... :P
2008.01.11 19:07:20 Error parsing user request. [127.0.0.1]
2008.01.11 19:07:20 Error parsing user request. [127.0.0.1]
2008.01.11 19:07:20 Error parsing user request. [127.0.0.1]
2008.01.11 19:07:20 Error parsing user request. [127.0.0.1]
2008.01.11 19:07:20 Error parsing user request. [127.0.0.1]
2008.01.11 19:07:20 Error parsing user request. [127.0.0.1]
2008.01.11 19:07:21 Error parsing user request. [127.0.0.1]
2008.01.11 19:07:21 Error parsing user request. [127.0.0.1]
2008.01.11 19:07:21 Error parsing user request. [127.0.0.1]
2008.01.11 19:08:04 Error parsing user request. [127.0.0.1]
What happens now, is that I get an 'Internal Server Error. Disconnected. Reconnect?' javascript messagebox. At least this one gives me options, hehe. I have this feeling I'm close, but no cigar...
Distribution: Debian, Red Hat/Fedora, Solaris, DD-WRT, NetBSD, Mac OS8/9, Mac OSX, UMP/OS, ESX
Posts: 42
Original Poster
Rep:
...and another issue bites the dust of the 'solved' stack on my (virtual) desk!
I got the thing running, and as usual feel compelled to explain how I did it, to save the hair on the heads of our future sys admins...
In this case I will list the points one has to cover in order to achieve the working Openfire 3.4.2 running with JWChat 1.0beta3 setup.
Get Openfire up and running, meaning that there are accounts for clients, you can log in with standalone clients, etc.
Extract the JWChat zip/tar.gz to a directory in your webroot (usually /var/www/).
Enable HTTP-binding, and the BOSH 1.6 support in the UI of Openfire.
Make sure that you can access the JWChat folder via a regular URL to your webserver.
Configure your httpd.conf (or */sites-enabled/000-default) to proxy '/http-bind/' to 'http://127.0.0.1:8080/http-bind/' (this is or course the default port for unsecure HTTP-binding. I advise setting up secure access later, when this is working)
Now, check that this proxy re-direct is working (proxy module will need to be loaded, and if you use apache2.x you may wanna check the readme's on http://www.igniterealtime.org/community/) by visiting 'http://myweb.server/http-bind/'. You should be redirected to 'http://127.0.0.1:8080/http-bind', meaning your browser will be sent to 'http://myweb.server:8080/http-bind/' and you should receive an error from Jetty.
When this is working, and you are an English speaking person (I ain't tested no other languages yet, and browser charsets could well play a role here) delete all the 'funky language files' from the jwchat dir in your webroot, so that only .html.html files and the .js scripts remain. (Yes, leave the images alone, as well.)
to your Openfire config, and you should be almost set to go.
In my case I had to edit the jsjac.js library to get the thing working, due to a bug/limitation. If you have a newer release I recommend you try your setup out, without executing the next step:
Edit jsjac.js and replace the instances of --> ",charset=utf-8' <-- with --> ",' <--. Just to explain that in a clearer way, delete the text charset=utf-8.
OK, Mr Chatmaster, you should have a working install now. Don't forget to restart apache, and maybe openfire to be on the safe side, flush the cache of your browser, and you're good to go.
regards
PelliX
PS: there is a typo that reads "instrunctions" instead of "instructions" when you perform a search in 'Open Chatrooms'.
Distribution: Debian, Red Hat/Fedora, Solaris, DD-WRT, NetBSD, Mac OS8/9, Mac OSX, UMP/OS, ESX
Posts: 42
Original Poster
Rep:
Hello Poil,
I was looking into your issue, and there are a couple of little pointers I can give you, but it would be nice if you could maybe post the (relevant) logs from your Openfire server. Anyhow, you may wanna add an extra line to your 'httpd.conf' or '~/site-enabled/000-default' or what you are currently using for the apache config:
When looking at this, I am a little puzzled that the directory is ~/jwchat/www/ and not /www(/html)/jwchat or similiar, but OK, I guess you have that pointing to the right spot.
just to be on the safe side, and I also checked my config, and appear to have an 'AllowOverride All' directive in that section. You might wanna try this, too. You would appear to be using Apache2x, which requires the mod_proxy module (and I think mod_proxy_http) to be active in your apache config, I don't want to nag, but are you sure that the proxy redirect is working? I.e. when you visit http://your.server.i.p/http-bind/" you should be redirected to http://your.server.i.p:8080/http-bind and you should receive an error from the Jetty service (I think a good old '404', but I'm not quite sure on that one anymore).
As for replacing the charset value in the jsjac library, it's a dirty hack, but it should work, IF you are using the exact same version. Now as I remember there are two references to utf-8 in the library, and I am more than willing to send you a copy of mine via email if you like. Also, you have the MultiViews directive configured, which the INSTALL does tell you to do. I also have this configured, but as you may have read in my previous posts, I deleted all non-US international files, and that worked for me. There have been some speculations that it could even be the encoding or language setting of the browser causing the failure in some cases. I used firefox 2 and IE6 to test all this, and never noticed any difference, even when changing the encoding settings in the browser. Could you maybe post those logs should all the above info not help?
I find your tuto on the web and I think it's the best clear I found. But I'don't understand all (especialy your paragraphe on the proxy) and I don't success to make jwchat work with openfire...
Can you post your httpd.conf complte file please ? In my research I found everything and it's opposite. For example, is the directory block in the virtualhost block or not ??
I have a probleme with the html too : the button "login" is disabled in the src file. I correct it but it's do nothing when I click on...
In the other tuto, people tell to change some values in the conf.js and you don't... Is it normal ?
Thank you for your help and sorry for my bad english, I'm french
Bye
william
Distribution: Debian, Red Hat/Fedora, Solaris, DD-WRT, NetBSD, Mac OS8/9, Mac OSX, UMP/OS, ESX
Posts: 42
Original Poster
Rep:
Hi wilouze,
I'll handle your English fine, considering that 'mon francais est tres penible; je suis anglais...'. I can understand that you are having some issues with the proxying of URL's, it's not the easiest of things to get done, when you're new to the apache config. Basically, to explain why this is required, this is the idea: You are running apache(2) (it seems like apache1, considering that you are using 'httpd.conf' and apache2 uses '$apachedir/sites-enabled/000-default') on port 80. Openfire requires a server capable of rendering JSP pages, such as Jetty (default) or Tomcat (my favorite, but I've never actually set up Openfire on it), which use a different port, so as not to conflict with apache.
Now, apache will 'serve' the user with the JWChat GUI, icons, html, etc etc, but the actual 'login' data itself, for the presence status and events needs to be sent to Jetty, NOT apache. Hence, we want apache to understand (and redirect) traffic going to http://your.server.i.p/http-bind/ to ACTUALLY go to http://your.server.i.p:8080/http-bind/, so that Jetty 'catches' and handles this data, even though the user only knows about port 80 (default, apache). So, you can use the term 'redirect' instead of proxy for ease here. Please note, that you will need to load the right modules for this to work. In apache2 you need mod_proxy and mod_proxy_http, in apache1 I'm not sure, and I cannot guarantee that it will even work (you may wanna check this in the apache documentation, so `man 8 apache(2)`). As for the config, I am running apache2 for this setup, so my httpd.conf is empty, but this is the section in my /sites-enabled/jwchat file:
Quote:
## JWChat Config ##
<Directory /var/www/html/jwchat>
Options +Multiviews
AllowOverride All
</Directory>
You can add this to the '000-default' or 'httpd.conf' file to make things easier to manage, and I would recommend specifying a special log for this page later, but that's not important right now. EVERY <Directory> statement MUST be in a Virtual Host section. You should already have a VirtualHost section by default.
As for the 'login' button being disabled in the HTML, I find that rather strange... It could be a new build though, ours is running great, and I haven't really thought about updating it. I can send you a copy of ours via email, if you want.
However, the fact that it was 'disabled' and still doesn't work, might point to a javascript issue in your browser. Note that IE7 and 8 have not been tested with this as far as I know, and I can verify that Mozilla Firefox 2, Netscape, Opera, Konqueror and IE6 (with NO security settings) work fine in our setup. I would personally recommend Firefox for testing this, as IE always has had quirks here and there, and Firefox will allow you troubleshoot more effectively and without constantly having to close the browser, delete temp files, and try again. Try the 'Webdeveloper Toolbar' for Firefox from www.chrispederick.com, it's a lifesaver!
You also mentioned editing the conf.js file. I did edit the confIG.js file, and I assume that is what you mean, or they have renamed the file in the new build. The only thing I changed, was to disable (uncomment) all backends, except the one that I needed, and this is my backend config:
I also set the debug_JID for troubleshooting purposes, but that is not strictly required for the app to run/connect.
Again, if you need some of the files, I'd gladly send you them! However, if you want to troubleshoot this more on the forum, I would advise you to
A) post what OS/Kernel/architecture your are using.
B) the exact versions of the apps involved.
C) anthing special about your setup
D) what you have done to test whether it works, and how
Yes you have right, I should start by presenting my configuration.
My server is based on the kernel 2.6.23.16 but I'm not sure about the distribution (it could be a slakware). I have installed the Openfire 3.5 server and I try to connect the Jwchat 1.beta3 client to it.
All my client are on separate machines (windows only at the moment) and my server has no graphical layer.
For the login button it's ok now. It was probably because the file index.html was not correctly raccorded to others.
I guess my main issues come from the redirecting proxy. I can open the index page of jwchat but when I'm logg on I have a message "service unavailable".
In your apache config file, how do you introduce your virtualhost block ? Is it like this : <VirtualHost *> ?
In my case, the RewriteRule should not be with my server address instead of localhost ? (my clients are not on the server)
In your config.js what do you put for "var SITENAME" ? localhost ? Is that ok for me too or I put my server address ?
A last question when you kick http://localhost:8080/ (192.168.0.254:8080 for me), what do you open ? For me it's the apache/tomcat administration page. And when you have the redirect rules installed, what do you have ?
When I kick http://192.168.0.254:8080/http-bind/ in my web browser, I have an error 404 from Apache/Tomcat. Else if I don't precise the port number (:8080) in the address, I have nothing...
For the log files, I don't learn to use them (it's my first job and I never had to use logs at school...) so can you tell me what log do you want to see ? I guessed that it would be in the jwchat log but I don't have logs for jwchat !
Since now I test all serious tuto I founded on the web but it doesn't work yet and it's make me crasy !
I tried my luck on your forum, because I found your explications clear (but it's not enough for me finaly )
Thank you for your help, I'm tourning in circle :|
Bye
william
Distribution: Debian, Red Hat/Fedora, Solaris, DD-WRT, NetBSD, Mac OS8/9, Mac OSX, UMP/OS, ESX
Posts: 42
Original Poster
Rep:
Hi there William,
'Service Unavailable' would mean that there is indeed no communication or only one-way communication between the frontend and the backend. I'm guessing that it is the proxy redirect that is at fault, too. As for your VirtualHost settings, yes '<VirtualHost *>' is the default one, meaning it will listen on 'all'. In your post, your inquired about using the localhost or the server address. It is imperative that is set to the localhost, because that is where the 'connection' need to take place, and if I were for instance to go to http://my.jabber.server.address/http-bind/ it redirects me to http://my.jabber.server.address:8080/http-bind/, NOT http://localhost:8080/http-bind (which would of course not work, for obvious reasons, as you have pointed out).
The 'var SITENAME' must be set to the name that you gave the jabber server (I think by default it uses the hostname). Mine here at home is called 'redhat' after the OS, that it was initially running on. So the JID's xxxx@redhat, and my config has the line
Quote:
var SITENAME = "redhat";
and underneath of course the backend (see above posting). The one at my work actually uses the machines hostname. Now, you asked about logs. JWChat itself doesn't have logs of it's own, but apache does. Unfortunately you have not mentioned what version of apache you are using, but generally the logs are in /var/log/(apache or httpd)/error.log and access.log.
If using a console try `cat /var/log/error.log | tail -10` which will give you the last ten lines of the errorlog.
In this case I would also recommend that you double check that the correct modules are loaded, and that the redirect is at least redirecting your browser. To test the proxy redirect, just add a directive such as 'RewriteRule /mickey/ http://localhost/donald/ [P]', so that when you go to http://thatserver/mickey you should be 'bounced' to /donald/ instead. (Excuse the Disney tainted examples... /foo/ and /bar/ should work, too ). Don't forget to restart apache of course, and please check what version it is, as all these settings are version dependent, and some modules are simply not available in all versions. As for your OS version try `uname -a` which should tell you exactly what you are running.
Check what port Openfire is serving it's WebUI on, and access it. You haven't mentioned whether you have actually performed the steps in UI that are required for this to work, i.e. add
to the server config. In the same web UI, there should also be a debug and a warn log (see examples from my previous posts). I understand that Java related logs are not 'user friendly' at the best of times unless you have some deeper knowledge (not claiming that I do...), but if you can post them, I'm sure I'll be able to at least give you some pointers.
By the way, you seem to be using Tomcat, I'm assuming 5.5.23 or 6. Could you verify the version, and also check what Java you have installed (`java --v` or `java --version`)? Like I said before, I never did this with Tomcat, but the apache, JWChat and Openfire setup shouldn't be any different, really.
If you want, you can give me your email address, and we can handle this via IM(MSN) or email.
regards
PelliX
PS: I decided to update my server here at home, from Openfire 3.4.2 to 3.5.1 and JWChat still works great. Logical, but one worry less
# java -version
java version "1.5.0_03"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_03-b07)
Java HotSpot(TM) Client VM (build 1.5.0_03-b07, mixed mode)
------------------------------------------
Openfire warning :
Quote:
2008.04.23 14:01:57 Admin console: Using RSA certificates but they are not valid for the hosted domain
2008.04.23 14:02:01 HTTP binding: Using RSA certificates but they are not valid for the hosted domain
2008.04.23 14:02:27 Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
2008.04.23 14:02:28 Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
2008.04.23 14:18:47 Autocreating jiveID row for type '25'
2008.04.24 08:56:57 Admin console: Using RSA certificates but they are not valid for the hosted domain
2008.04.24 08:57:02 HTTP binding: Using RSA certificates but they are not valid for the hosted domain
2008.04.24 10:30:43 Admin console: Using RSA certificates but they are not valid for the hosted domain
2008.04.24 10:30:48 HTTP binding: Using RSA certificates but they are not valid for the hosted domain
2008.04.24 15:19:16 Admin console: Using RSA certificates but they are not valid for the hosted domain
2008.04.24 15:19:21 HTTP binding: Using RSA certificates but they are not valid for the hosted domain
2008.04.24 16:11:58 Admin console: Using RSA certificates but they are not valid for the hosted domain
2008.04.24 16:12:01 HTTP binding: Using RSA certificates but they are not valid for the hosted domain
2008.04.24 17:09:56 HTTP binding: Using RSA certificates but they are not valid for the hosted domain
2008.04.25 08:59:08 Admin console: Using RSA certificates but they are not valid for the hosted domain
2008.04.25 08:59:14 HTTP binding: Using RSA certificates but they are not valid for the hosted domain
2008.04.25 14:02:28 Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
2008.04.25 14:02:29 Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
Openfire error :
the last error was the april 23th so I don't copy the logs (there are only java error into)
Yes ! guess what I discover in read the error log file ?
I have a mistake in the rewrite rule : the browser was searching the directory index.html/ and necessarily it can't find it !
I forget to give you my email... Can you send me a message on forum@mailbidon.com (it works ) ? My email address contains my personnal name and surname and I don't want to expose it on a forum.
I will answer you on my true address in the night
I will search again a little but my day of work is finish soon and I could not access to the server until monday but we can chat in the week end, I will be happy to speak with you
Bye bye and thank you very much for your help
william
Distribution: Debian, Red Hat/Fedora, Solaris, DD-WRT, NetBSD, Mac OS8/9, Mac OSX, UMP/OS, ESX
Posts: 42
Original Poster
Rep:
Hi,
Thanks for the compliment on the rapidity; but then again, before I became an admin professionally, I did customer support for some years, so I guess it's a habit that stuck!
Good job on the redirect, this means that the modules are loaded and working. Your apache version (2.2.8) is well up to date to support this. As for Tomcat, I'm not quite sure, but I'm assuming it should be OK, even though it is no longer considered a 'production version', and the 'officially employed' versions are 5.5.23 and 6.0. You appear to have two Java versions installed, I guess that Openfire knows where to find the standard one, but it might be worth checking which version is preferred by your OS (Debian uses `update-alternatives`, I don't know what you have to use).
Note the subtle difference. 400 is simply THE error code that means 'bad_request' in the HTTP protocol. If Apache/Tomcat has the same issue, it should produce the same error, just as it does with the 404. I'll drop you an email this evening.
I have been trying to get same jwchat openfire integration working for quite sometime. I was following your post and had similar set of issues as mentioned above.
Distribution: Debian, Red Hat/Fedora, Solaris, DD-WRT, NetBSD, Mac OS8/9, Mac OSX, UMP/OS, ESX
Posts: 42
Original Poster
Rep:
Hi sachinsinghal01,
First of all, I would like to confirm whether you are using JWChat with Openfire? Assuming yes, and you're trying to implement the HTTP-binding, then it would appear that you are either opening the 'wrong URL' i.e. the HTTP-bind port, or your Apache server is incorrectly proxying/redirecting.
The 400 BAD REQUEST error in itself does not point to a server failure, but merely to the fact that your browser did not supply a "WELL SHAPED REQUEST". The HTTP-bind port waits for a client to start communicating with it over HTTP, it is not serving (much) static content.
Could you maybe post your Apache config** for the JWChat application and also, if you happen to have seperate logging enabled for the JWChat section (as described above somewhere) then post these logs aswell. What happens when you try to log into JWChat?
One a last note: I recently helped a friend of mine perform a clean install of the latest Openfire build 3.5.1, and I noticed that quite some options were disabled by default that were fully active in previous versions, so it may be worthwhile to run through the config (WebUI, Server -> System Properties and Server -> Server Settings).
kind regards
PelliX
**note: I'm assuming that you are using Apache2 as the regular webserver for JWChat. If you're using something else (including Apache1.x) please mention exactly what version and platform you're running as you'll need proxying, something that not all webservers handle equally well.
Last edited by PelliX; 08-20-2008 at 01:02 AM.
Reason: note add
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.