Changeset 1157 for TI05-delivery


Ignore:
Timestamp:
12/06/06 17:03:47 (13 years ago)
Author:
spascoe
Message:

Client-side python embedding is being implemented but doesn't pass the
test cases yet.

I've uncovered a bug (see #343) which needs fixing before the embedded client
can be fully debugged.

Location:
TI05-delivery/trunk
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • TI05-delivery/trunk/setup.py

    r1133 r1157  
    55 
    66bbftpd_home = './src/bbftp-server-3.2.0' 
     7bbftpc_home = './src/bbftp-client-3.2.0' 
    78# Get the version from ./VERSION 
    89version = open('./VERSION').read() 
     
    4142    ] 
    4243 
    43 sources = ['%s/bbftpd/%s' % (bbftpd_home, x) for x in bbftpd_src] + ['./src/python_ext/bbftpd.c'] 
     44server_sources = ['%s/bbftpd/%s' % (bbftpd_home, x) for x in bbftpd_src] + ['./src/python_ext/bbftpd.c'] 
     45 
     46bbftpc_src = [  'bbftp.c', 
     47                'bbftp_cd.c', 
     48                'bbftp_get.c', 
     49                'bbftp_lcd.c', 
     50                'bbftp_list.c', 
     51                'bbftp_mget.c', 
     52                'bbftp_mkdir.c', 
     53                'bbftp_mput.c', 
     54                'bbftp_put.c', 
     55                'bbftp_rm.c', 
     56                'bbftp_stat.c', 
     57                'bbftp_statfs.c', 
     58                'bbftp_dir.c', 
     59                'bbftp_retr.c', 
     60                'bbftp_setremotecos.c', 
     61                'bbftp_setremoteumask.c', 
     62                'bbftp_store.c', 
     63                'bbftp_socket.c', 
     64                'bbftp_utils.c', 
     65                'connecttoserver.c', 
     66                'getdatasock.c', 
     67                'readmessage.c', 
     68                'sendproto.c', 
     69                'treatcommand.c', 
     70                'bbftp_turl.c', 
     71                'writemessage.c', 
     72                'setsignals.c', 
     73                'bbftp_private.c', 
     74                'bbftp_private_user.c' 
     75                ] 
     76 
     77client_sources = ['%s/bbftpc/%s' % (bbftpc_home, x) for x in bbftpc_src] + ['./src/python_ext/bbftpc.c'] 
    4478 
    4579bbftpd = Extension('delivery.bbftpd', 
     
    5084                   include_dirs = [bbftpd_home+'/includes', bbftpd_home+'/bbftpd'], 
    5185                   libraries = ['crypt', 'crypto'], 
    52                    sources = sources) 
     86                   sources = server_sources) 
     87 
     88bbftpc = Extension('delivery.bbftpc', 
     89                   define_macros = [('NDG_AUTH', 1), ('LOCAL_SYSLOG_FACILITY', 1), 
     90                                    ('_LARGEFILE64_SOURCE', 1), 
     91                                    ('NDG_PYTHON_EMBED', 1), 
     92                                    ('NDG_DELIVERY_VERSION', '"%s"' % version)], 
     93                   include_dirs = [bbftpc_home+'/includes', bbftpc_home+'/bbftpc'], 
     94                   libraries = ['crypt', 'crypto'], 
     95                   sources = client_sources) 
    5396 
    5497setup(name = 'bbftp-python', 
     
    59102      package_dir = {'': 'lib/python'}, 
    60103      packages = ['delivery'], 
    61       ext_modules = [bbftpd]) 
     104      ext_modules = [ 
     105                     bbftpd, 
     106                     bbftpc]) 
    62107       
  • TI05-delivery/trunk/src/bbftp-client-3.2.0/bbftpc/bbftp.c

    r773 r1157  
    368368} 
    369369 
     370 
     371#ifdef NDG_PYTHON_EMBED 
     372bbftpc_main(int argc, char **argv, char **envp) { 
     373#else 
    370374main(argc, argv, envp) 
    371375    int argc; 
     
    373377    char **envp; 
    374378{ 
     379#endif 
    375380    extern char *optarg; 
    376381    extern int optind, opterr, optopt; 
     
    485490# endif 
    486491#endif 
     492#ifdef NDG_PYTHON_EMBED 
     493                printmessage(stdout,CASE_NORMAL,0,timestamp,"                   Embedded in Python interpreter\n") ; 
     494#endif // NDG_PYTHON_EMBED 
     495 
    487496                printmessage(stdout,CASE_NORMAL,0,timestamp,"                   default number of tries = %d  \n",NBTRYMAX) ; 
    488497                printmessage(stdout,CASE_NORMAL,0,timestamp,"                   default sendwinsize = %d Kbytes\n",sendwinsize) ; 
     
    494503    } 
    495504 
     505#ifndef NDG_PYTHON_EMBED 
    496506/* 
    497507** Check for stderr replacement 
     
    551561*/ 
    552562    blockallsignals() ; 
     563 
     564#endif // NDG_PYTHON_EMBED 
    553565 
    554566/* 
     
    787799        } 
    788800    } 
     801 
     802#ifndef NDG_PYTHON_EMBED 
    789803/* 
    790804** Check for the local user in order to find the .bbftprc file 
     
    10311045        } 
    10321046    } 
     1047#endif // NDG_PYTHON_EMBED 
     1048 
    10331049/* 
    10341050** Check for input file or command line 
     
    14201436    sleep(1) ; 
    14211437    bbftp_close_control() ; 
     1438#ifndef NDG_PYTHON_EMBED 
    14221439    exit(myexitcode) ; 
     1440#endif 
    14231441} 
  • TI05-delivery/trunk/src/python_ext/bbftpd.c

    r1144 r1157  
    314314  for (i=0; i<argc; i++) { 
    315315    if ((item = PySequence_GetItem(daemon_args, i)) == NULL) { 
     316      free(argv); 
    316317      Py_DECREF(authHandler); 
    317318      Py_DECREF(daemon_args); 
  • TI05-delivery/trunk/test/test_embedded.py

    r1144 r1157  
    1010import sys, os, signal, time, syslog, stat 
    1111from glob import glob 
    12 import re, tempfile 
     12import re, tempfile, getopt 
    1313 
    1414HOME = os.path.abspath(os.getenv('NDG_DELIVERY_HOME', os.curdir)) 
     
    215215        output = fh.read() 
    216216 
     217        print output 
     218 
    217219        self.assertLines(['Received Auth handshake: NDG-Delivery-server %s' % VERSION], output) 
    218220 
     
    329331 
    330332 
    331 if __name__ == '__main__': 
    332     unittest.main() 
     333 
     334import delivery.bbftpc 
     335 
     336class PythonClientAuthOK(AuthOK): 
     337    """Repeat AuthOK tests with a python-embedded client. 
     338    """ 
     339 
     340    def _runClient(self, cmd, debug=False, user="testcase", privatestr=None): 
     341        """Run the client. 
     342        """ 
     343 
     344        if debug: 
     345            f = "-d" 
     346        else: 
     347            f = "-m" 
     348 
     349        # Tell bbftp to dump output to a file which is then opened for reading. 
     350        tmp = tempfile.mktemp('test_bbftpd') 
     351        args = ['-e', cmd, f, '-u', user, '-o', tmp, '-f', tmp, '-r', '1'] 
     352 
     353        if privatestr != None: 
     354            args += ['-P', privatestr] 
     355 
     356        delivery.bbftpc.run(args + ['localhost']) 
     357 
     358        fh.open(tmp) 
     359        os.remove(tmp) 
     360 
     361        return fh 
     362 
     363#if __name__ == '__main__': 
     364#    unittest.main() 
Note: See TracChangeset for help on using the changeset viewer.