diff options
author | Kirill Volinsky <mataes2007@gmail.com> | 2012-07-23 13:52:57 +0000 |
---|---|---|
committer | Kirill Volinsky <mataes2007@gmail.com> | 2012-07-23 13:52:57 +0000 |
commit | 89c5b2369413025e1fe7dfe5c5d0bf3bedd8558d (patch) | |
tree | 18f09394ce3b811e3df7d15de747e842000bd4ad /!NotAdopted/IMO2sProxy/README.txt | |
parent | a9580df150d799246eaecbf3c1fb5cecf9f8ab49 (diff) |
git-svn-id: http://svn.miranda-ng.org/main/trunk@1123 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to '!NotAdopted/IMO2sProxy/README.txt')
-rw-r--r-- | !NotAdopted/IMO2sProxy/README.txt | 240 |
1 files changed, 240 insertions, 0 deletions
diff --git a/!NotAdopted/IMO2sProxy/README.txt b/!NotAdopted/IMO2sProxy/README.txt new file mode 100644 index 0000000000..0bd77dc7c2 --- /dev/null +++ b/!NotAdopted/IMO2sProxy/README.txt @@ -0,0 +1,240 @@ +What is the SkypeProxy for imo.im +---------------------------------- +Back in 2005 when I developed the Skype plugin for Miranda IM, I also developed +a very simple protocol to tunnel the Skype API protocol via a socket. +The reason was, that some users wanted the possibility to run Skype on a +machine different to the machine they are using Miranda IM on. +So to tunnel the Skype API remotely over the network SkypeProxy was built and +was shipped with every Skype plugin build. + +The Skype API plugin for Miranda got more and more functions as the API evolved +and finally as I didn't have enough time to continue development, I handed over +development to user "tweety" who did the later versions. +The SkypeProxy-feature is still present in the current versions, as it is very +simple. It just wraps the communiction layer with the Skype API, therefore +this concept can also be adopted by other Skype-Plugins of other IMs. + +Ever since the first version of Skype plugin, people complained that they had to +install the Skype client on their machine in order to get it to work. +The Skype client was always bloated but it got even worse throughout the years. +I abandoned Skype some time ago, as this application is just consuming far too +many system ressources. However, there are some people that are only using Skype +and I need a way to communicate with them. I'm just interested in the chat +feature, so I only need to send and receive messages from other chat users. +So what can we do about it? + +There were some attempts to reverse-engineer the Skype protocol, but nobody +succeeded so far as the protocol relies heavily on cryptography, is proprietary +closed source and the Skype client itself is heaviely protected agains all +kinds of reverse-engineering (decrypts code on the fly, uses anti-debugging +tricks, etc.). + +However some users recently discovered, that there is a new Web 2.0 service that +makes it possible to do Instant messaging via the web browser using the Ajax +framework. The name of the service is imo.im +imo.im managed to provide basic connectivity to the Skype network via SkypeKit +and the nice thing about their service is, that you don't need to register, you +can just use it out of the box. +However most people are not so excited about IM in a web interface, there are +many features that an IM application provides and that are not so convenient in +a webinterface. But as their service is a webservice using jSON calls, +it is relatively easy to talk to their application server and so users of +Instant messengers that provide Skype protocol support can take advantage of +this for providing basic connectivity to the Skype network for instant messaging +without having to install the bloated Skype client application. +Only instant messaging is possible. In fact there is also alpha-Support for +Voicechat via the imo.im flash application, but this currently doesn't work +reliable due to some Macromedia Flash sandboxing issues. +But I think for most users like me that just want to stay in contact with +other Skype users via chat these functions will be enough. + +So as mentioned above the most generic approach to link imo.im services with an +Instant messanger would be to implement this as a wrapper between imo.im and +the Skype API. This way, we don't need to implement an extra plugin and it is +easily adaptable to Skype plugins of IMs, as you only need to use the +application in Skype API emulator mode. The Skype Plugin of the IM would need to do +proper error handling, but if the plugin is coded well (must be compatible with +Skype Protocol V3), this may even work out of the box. +The plugins mustn't assume that an API call always returns something useful on +every call. +The Skype API Emulation currently only works on Windows, other clients would +need to implement the very simple socket protocol for message exchange. +This application was originally developed to work with Miranda IM, so this IM +is officially supported. + +The application runs on Win32 as well as on Unix, so it's a cross-platform layer +that you can also install on your personal Server. By design, it would be even +able to manage multiple users at once, however this feature is currently not +implemented in the SkypeProxy protocol. Depeding on the user's needs, this +can be implemented, most of the code for this is already there. + +For usage with Miranda IM, a special plugin version was written, which +implementes the layer as a plugin so that it can be loaded into Miranda +and the user doesn't have to run the proxy application seperately. +The plugin version also has the advantage that it is able to communicate +with the Skype plugin directly. + +How does it work +---------------- + +Is described in the preamble, this is just a drop-in replacement for the +communication end point of the Skype API. +The classical communication model for Skype API is: + +[ Skype servers ] <--> [ Skype App ] <--> [ Plugin ] + +The SkypeProxy communication model is: + +[ Skype servers ] <--> [ Skype App ] <--> [ SkypeProxy ] <--> [ Plugin ] + +Now with this Drop-in replacement the communication model is: + +[ Skype servers ] <--> [ imo.im ] <--> [ SkypeProxy ] <--> [ Plugin ] + +The application communicates via a socket connection on Port 1402, like +SkypeProxy does. It uses the imo.im services to connect to the Skype network. + +You also have the possibility to emulate the Skype WIN32-API so that +any plugin can communicate with this application instead of Skype. + +As said, there are 3 connection points to communicate with the plugin: + - WIN32 Skype API via Windowmessages, emulates the real Skype API for + compatibility with any Skype plugin. (Windows) + - Socket communication layer via TCP/IP. (Windows/Unix) + - Internal plugin communcation layer used by the Miranda IM plugin to + communicate with Skype plugin versions starting with 0.0.0.46 + (Windows, Miranda IM plugin only) + +How to compile +-------------- +On Unix type systems, just extract this package and type "make". +After compiling, you will find imo2sproxy in the bin/ directory + +On Windows systems, you will find Visual C 6 project files in the +msvc/ subdirectory. +You have Makefiles available for the appropriate modules: +imoskype.mak - Compiles the imo2sproxy standalone executable +imoproxy.mak - Compiles the Miranda IM Plugin + +There are 4 available Targets: +Win32 Release - 32bit Windows Release version +Win64 Release - 64bit Windows Release version +Win32 Debug - 32bit Windows Debug version +Win64 Debug - 64bit Windows Debug version + +i.e.: +nmake -f imoskype.mak CFG="Win32 Release" + +Requirements +------------ +On Linux, libcurl Libraries and the pthread library for threading +are needed in order to get this to work. +You can download CURL on http://curl.haxx.se/download.html +To install, just use libtool as usual. + +On Windows, WININET is required which should be shipped with +Internet Explorer. So on an average Windows System, you shouldn't +need to install any additional libraries. +Please note, that libcurl IS NO LONGER NEEDED on Windows. + +How to use the commandline version +---------------------------------- +Find the precompiled binaries in the bin/ subdirectory. + +imo2sproxy [-d] [-v [-l <Logfile>]] [-t] [-i] + [-m<s|a>] [-h <Bind to IP>] [-p <Port>] <Username> <Password> + +-v - Verbose mode, log commands to console +-l - Set logfile to redirect verbose log to. +-d - Daemonize (detach from console) +-i - Use interactive mode (starts imo.im flash app upon call) +-t - Ignore server timestamp and use current time for messages +-h - Bind to a specific IP, not to all interfaces (default) +-p - Bind to another port (default: 1401) +-m - Specify connection mode to use: + s Socket mode (SkypeProxy protocol) [default] + a Skype API Emulation via Window messages (real Skype API) + +-ma is only available on Windows systems. + +As there is currently only a single-user implementation of this application, you + need to start imo2sproxy with your Skype username and password as parameters. + +Example for using the socket protocol: +imo2sproxy -d -h 127.0.0.1 myuser mypass + +As soon as the imo2sproxy is running, setup your Skype Plugin to use the +SkypeProxy at the machine you are running imo2sproxy on. +If you are running imo2sproxy locally, enter 127.0.0.1 as IP address. +After setting the SkypeProxy, you have to restart Miranda IM. + +If all works well, you should now be able to use Skype via imo.im. +If it doesn't work, you can use the -v parameter to see what's going on and +if the connection works. + +If it all works well, you can also install imo2sproxy on your machine +as a service using srvany. + +Example for using the Skype API Emulation (win32 only): +imo2sproxy.exe -d -ma myuser mypass + +As soon as the imo2sproxy is running, just try to use your Skype plugin and +see if it connects to the imo2sproxy locally. +Of course, if you have the Skype application installed, you mustn't run +it concurrently with the plugin with this configuration. + +How to use the Miranda plugin +----------------------------- +Copy the imoproxy.dll file to your Miranda Plugins-directory. +As the name starts with i and the the Skype plugin name starts with s, +the imoproxy.dll module is loaded prior to the Skype-Plugin DLL which +is important to work properly if you are using the socket method. + +For older versions of the Skype plugin (prior to 0.0.0.46, which is +currently still beta), you should use the socket communication method: +Configure the plugin DLL in the Options dialog Network/Skype Imoproxy. +Bind to address 127.0.0.1, Port 1401 +Make sure that the Skype Proxy settings in your Skype plugin are the +same. The Skypeproxy-Plugin tries to take care of that. +Enter your Username and Password, set the appropriate options and press +OK. The Skypeproxy-plugin restarts itself. Try to reconnect Skype plugin +and see if it works. +The plugin is still experimental and may contain some bugs or stability +problems, so use with care. It may be harder to hunt down bugs with this +Plugin as its running as Miranda plugin and the only logging facility is +a logfile. So if you want to hunt down bugs, you may be better off with +using the standalone version, however the plugin is a start to make the +use of imo2sproxy easier. Feel free to improve the plugin. + +For Skype plugin versions starting with 0.0.0.46, there is an internal +plugin link facility which makes it easier for the user to setup. +Bascially this should work out of the box, just enter your username and +password in the options dialog and ensute that the internal plugin +link service is active. +It will then automatically register to the Skype plugin. + +Module structure +---------------- + +For the structure of the code-modules, please refer to the +structure.txt document. + +SkypeProxy protocol +------------------- + +Plase download the sourcecode of skypeproxy.c of Miranda IM Skype plugin, it's +all well documented in the .c file. Basically the protocol just consists of: + +[UCHAR: number of bytes to send/receive][<char> Data] + +for every line sent or received. + +Contact +------- +Feel free to contact me regarding this project or if you wish to implement +SkypeProxy protocol in your own Skype-plugin implementation. + +leecher@dose.0wnz.at + + +Vienna, 10/07/2009 |