[Twisted-Python] Seeking OSS 'point to point' data transfer solution

Nicolas Toper ntoper at gmail.com
Sun Jan 25 08:54:15 MST 2009


Hi,

SCP? FTP?

My company will be releasing soon in OSS an application built on top of
Twisted that in other things perform this

Nicolas

On Tue, Jan 20, 2009 at 9:57 PM, Worsham, Michael <
michael.worsham at morris.com> wrote:

>  I was recommended to look at the Twisted application framework for
> replacing a legacy application that relies on RPC portmapper, so here's my
> issue and question…
>
>
>
> Currently, we use an in-house designed application called 'Fileman', which
> acts as a combined bi-directional shared library (client) and server system
> to transfer data files between other 'Fileman' server points. The problem is
> that the Fileman application requires portmapper under Linux which exposes
> all TCP ports (i.e. a network security nightmare). Fileman also has the
> ability to send data in either ASCII or binary format and at receiver end --
> change directories, modify user id (uid) and group id (gid) of file once
> data is received.
>
> ---
>
> Here is what Fileman can perform via following functions from client side
> code:
>
> struct StatResult   *pFileMan_FileStat(char *host, char *file, int userid,
> int groupid);
> struct StatResult   *pFileMan_GetDirectoryListing(char *host, char *dir,
> int userid, int groupid, int *entries);
> int                 iFileMan_PutAsciiFile(char *host, char *file, char
> *cpBuf, int bMakeDir, int userid, int groupid);
> char                *cpFileMan_GetAsciiFile(char *host, char *file, int
> userid, int groupid, int *result);
> int                 iFileMan_PutBinaryFile(char *host, char *file, char
> *cpBuf, int bMakeDir, int userid, int groupid, int length);
> char                *cpFileMan_GetBinaryFile(char *host, char *file, int
> userid, int groupid, int *result, int *length);
> int                 iFileMan_DeleteFile(char *host, char *file, int userid,
> int groupid);
> int                 bFileMan_Ping(char *cpHost);
> void                vFileMan_ResetStats(void);
> int                 iFileMan_GetNumOps();
> double              dFileMan_GetSecsSpent();
> void                vFileMan_SetTimeout(int iSecs);
>
> Above functions translates to 'over the wire' execution of:
> stat
> opendir, readdir
> fopen, fwrite with any necessary mkdir, chown/chgrp to given group
> fopen, read, subject to uid/gid restrictions
> fopen, fwrite with any necessary mkdir, chown/chgrp to given group
> fopen, read, subject to uid/gid restrictions
> unlink subject to uid/gid restrictions
> noop response from server
> Internal stat change
> Internal stat info
> Internal stat info
> Set network timeout parameters for operation
>
>
>
> Usage/Syntax from 'Fileman' client:
>
>
>
> void printUsage()
>
> {
>
>     printf("Usage: \n");
>
>     printf("  \n");
>
>     printf(" fileman Get [remote_host] [remote_file] [remote_uid]
> [remote_gid] [local_file] \n");
>
>     printf(" fileman GetAscii [remote_host] [remote_file] [remote_uid]
> [remote_gid] [local_file] \n");
>
>     printf(" fileman GetBinary [remote_host] [remote_file] [remote_uid]
> [remote_gid] [local_file] \n");
>
>     printf(" fileman Put [remote_host] [remote_file] [remote_uid]
> [remote_gid] [local_file] \n");
>
>     printf(" fileman PutAscii [remote_host] [remote_file] [remote_uid]
> [remote_gid] [local_file] \n");
>
>     printf(" fileman PutBinary [remote_host] [remote_file] [remote_uid]
> [remote_gid] [local_file] \n");
>
>     printf(" fileman Stat [remote_host] [remote_file] [remote_uid]
> [remote_gid] \n");
>
>     printf(" fileman Ping [remote_host] \n");
>
>     printf("  \n");
>
> }
>
>
> ---
>
> My question is can the Twisted framework be utilized in a way that can do
> actions of sending and receiving data in either ASCII or binary format,
> change uid or gid permissions of files once delivered, run as a
> client/server client & listener and utilize one (or two) TCP ports for both
> sending and listening upon?
>
> Known application replacement requirements:
> 1) Application must be able to run upon RHEL/CentOS 5.x Linux platform.
> 2) Application must be able to be locked down to one or two TCP ports for
> listening and sending data upon.
> 3) Application must be able to take command line (CLI) instructions
> 4) Application must be able to transfer data in ASCII or binary format
> (i.e. graphic images)
> 5) Application must be able to [at receiver end]: change directories,
> modify user id (uid) and group id (gid) of file once data is received.
>
> Current solutions we are actively looking at now:
>  -- Apache's WebDAV: Uses port 80; Needs apache instance on each server;
> cannot change uid or gid permissions of files
>  -- Apache's ActiveMQ: Uses channel/queue/broker system; requires trigger
> queue and external program for dumping queue data; Needs Java platform
>  -- JBoss Messaging: Suffers same issues as Apache's ActiveMQ; Requires
> costly licensing
>  -- IBM Websphere MQ: Suffers same issues as Apache's ActiveMQ; Requires
> costly licensing
>
>  -- XML-RPC Library for C & C++ -- http://xmlrpc-c.sourceforge.net/
>
>
> Anyone have any ideas or other plausible solutions for solving this
> problem?
>
>
>
> -- Michael
>
>
>
> ---
> Michael Worsham
> Sr. System Engineer, IT Architect
> Morris Technology Services, IHS Division
>
>
>
> _______________________________________________
> Twisted-Python mailing list
> Twisted-Python at twistedmatrix.com
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
>
>


-- 
A+
Nico
http://www.deviant-abstraction.net
-------------- next part --------------
An HTML attachment was scrubbed...
URL: </pipermail/twisted-python/attachments/20090125/432fede7/attachment.html>


More information about the Twisted-Python mailing list