I have an existing chat server written in C. Users on the chat network maintain unique TCP connections and all coordination is handled by a main server.
The capability already exists for users to also log on and communicate with the AIM network, utilizing a custom C library.
The main server connects with what I call the 'EXT' server (for external network server) through a single TCP connection. This EXT server receives requests from the main server and then sends the (login) request on to be handled by my AIM library (which will spawn a thread to handle the connection and that thread will connect directly to EXT so further communications will go directly to the AIM thread).
Clients <-> Main Server <-> EXT Server <-> My AIM Server
Then, EXT <-> AIM Threads
Details of the packets exchanged and general API will be given on acceptance of a bid. Please feel free to ask any questions and I will do my best to provide details you'd like before bidding.
What I need:
A Pidgin (what used to be GAIM) Interface that will communicate with the EXT server and launch Pidgin threads to handle connections with all the networks supported by Pidgin. These Pidgin threads must connect back up to the EXT Server, or can connect through the Pidgin Server, depending on how you go about implementing this.
Currently a client sends the request: log me in to an external network, the aim network, this is my username and password. I'd like to be able to do the same thing but utilize other networks (including AIM functionality along with Yahoo, Gtalk, MSN, etc).
The minimal types of requests are:
- Login, Logout
- Set away message, set back
- Get buddy list and online/offline/away/idle for buddies
- Send and receive instant messages
Optional:
- Add/Edit/Remove buddy list entries
- See the hierarchy (folder) organization of my buddy list
- Set profile
Also, some level of error handling which tells the EXT server if the user had a bad password, etc
## Deliverables
1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.
2) Deliverables must be in ready-to-run condition, as follows (depending on the nature of the deliverables):
A software installation package that will install the software in ready-to-run condition on the platform(s) specified in this bid request.
3) All deliverables will be considered "work made for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased. (No GPL, GNU, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the coder's Seller Legal Agreement).
The basic API is
## Platform
Linux, C
I will provide a full API to you describing how to communicate with EXT.
However, if you do not want to be bothered with communicating with my existing chat server, then you can bid on creating a Pidgin interface for me. Basically, this would be a single process that could receive requests of any nature (even stdin, preferably tcp socket) and spawn threads to handle the connections to the external network.