Changeset 1539
- Timestamp:
- 28/09/06 15:08:01 (14 years ago)
- Location:
- TI05-delivery/trunk
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
TI05-delivery/trunk/lib/python/ndg/delivery/auth.py
r1538 r1539 12 12 @author Stephen Pascoe 13 13 """ 14 15 class AuthenticationFailure(Exception): 16 """Signals authentication failed. 17 """ 18 pass 19 20 class AuthorisationFailure(Exception): 21 """Signals authorisation failed. 22 """ 23 pass 14 24 15 25 -
TI05-delivery/trunk/lib/python/ndg/delivery/auth_plugin.py
r1538 r1539 14 14 15 15 16 NDG_HANDSHAKE = 'NDG-Delivery -clientdemo'16 NDG_HANDSHAKE = 'NDG-Delivery demo' 17 17 logger = logging.getLogger('ndg.delivery.server') 18 18 … … 58 58 if path[-2:] == '/*': 59 59 path = path[:-2] 60 mode = stat.S_IMODE(os.stat(path)[stat.ST_MODE]) 61 if (mode & 0004): 60 if os.access(path, os.R_OK): 62 61 logger.debug('AuthzHandler OK') 63 62 return True -
TI05-delivery/trunk/lib/python/ndg/delivery/server/pybbftp.py
r1538 r1539 82 82 83 83 84 class AuthenticationFailure(Exception):85 """Signals authentication failed.86 """87 pass88 89 class AuthorisationFailure(Exception):90 """Signals authorisation failed.91 """92 pass93 84 94 85 class ServerConnector(object): -
TI05-delivery/trunk/src/bbftp-client-3.2.0/includes/bbftp_private_user.h
r1077 r1539 44 44 45 45 // Define this in the makefile 46 // #define NDG_DELIVERY_VERSION "v0.0.1" 47 #define NDG_STR(s) #s 48 #define NDG_XSTR(s) NDG_STR(s) 49 #define NDG_HANDSHAKE ("NDG-Delivery-client " NDG_XSTR(NDG_DELIVERY_VERSION)) 46 #define NDG_HANDSHAKE "NDG-Delivery demo" 50 47 51 48 #define NDG_MESSAGE_LEN 256 -
TI05-delivery/trunk/src/bbftp-server-3.2.0/includes/ndg.h
r1448 r1539 20 20 #define NDG_MESSAGE_LEN 256 21 21 22 #define NDG_STR(s) #s 23 #define NDG_XSTR(s) NDG_STR(s) 24 #define NDG_HANDSHAKE ("NDG-Delivery-server " NDG_XSTR(NDG_DELIVERY_VERSION)) 22 #define NDG_HANDSHAKE "NDG-Delivery demo" 25 23 26 24 -
TI05-delivery/trunk/test/runclient.py
r1441 r1539 9 9 from glob import glob 10 10 11 #HOME = os.path.abspath(os.getenv('NDG_DELIVERY_HOME', os.curdir))12 HOME = os.path.abspath(os.path.dirname(__file__)+'/..')13 VERSION = open('%s/VERSION' % HOME).read()14 NDG_MESSAGE_LEN = 25615 11 16 NDG_HANDSHAKE = "NDG-Delivery-client %s" % VERSION 17 18 19 12 from ndg.delivery.auth_plugin import AuthClientHandler 20 13 import ndg.delivery.client.pybbftp as DC 21 22 class AuthClientHandler(DC.AuthClientHandler):23 def __init__(self, privatestr="none"):24 self.privatestr = privatestr25 26 def authenticate(self):27 self.send(NDG_HANDSHAKE)28 resp = self.recv()29 30 print "Received Auth handshake: %s" % resp31 32 self.send(self.privatestr)33 34 return True35 14 36 15 … … 57 36 args = args[:i] + args[i+2:] 58 37 59 ach = AuthClientHandler( privatestr)38 ach = AuthClientHandler(DC.ClientConnector(), privatestr) 60 39 61 40 print "** runclient.py: connecting with args %s" % args -
TI05-delivery/trunk/test/test_embedded.py
r1453 r1539 11 11 from glob import glob 12 12 import re, tempfile, getopt, logging 13 import traceback 13 14 14 15 HOME = os.path.abspath(os.getenv('NDG_DELIVERY_HOME', os.curdir)) 15 16 BBFTP = glob('%s/src/bbftp-client*/bbftpc/bbftp' % HOME)[0] 16 17 DATADIR = '%s/test/data' % HOME 17 VERSION = open('%s/VERSION' % HOME).read() 18 NDG_MESSAGE_LEN = 256 19 20 NDG_HANDSHAKE = "NDG-Delivery-server %s" % VERSION 21 22 23 import ndg.delivery.server.pybbftp as server 24 import traceback 18 19 20 import ndg.delivery.server.pybbftp as DS 21 from ndg.delivery.auth_plugin import AuthHandler, AuthzHandler 22 import ndg.delivery.auth as auth 25 23 26 24 def flushLogging(): … … 31 29 32 30 resetLogging() 33 server.bbftpd.after_fork_hook = resetLogging 34 server.bbftpd.before_fork_hook = flushLogging 35 36 37 38 class TestAuthHandler(server.AuthHandler): 39 31 DS.bbftpd.after_fork_hook = resetLogging 32 DS.bbftpd.before_fork_hook = flushLogging 33 34 TestAuthHandler = AuthHandler 35 36 class TestFailAuthHandler(AuthHandler): 40 37 def authenticate(self): 41 42 msg = self.recv() 43 self.log(server.LOG_DEBUG, 'AuthContext received Auth message: %s' % msg) 44 45 self.send(NDG_HANDSHAKE) 46 47 privatestr = self.recv() 48 self.log(server.LOG_DEBUG, "AuthContext received privatestr: %s" % privatestr) 49 50 return self.makeAuthzHandler(msg, "TestCaseUser") 51 38 raise auth.AuthenticationFailure, "TestFailAuthHandler" 39 40 41 class TestPermAuthHandler(AuthHandler): 52 42 def makeAuthzHandler(self, msg, user): 53 return TestAuthzHandler(msg, "TestCaseUser") 54 55 56 class TestAuthzHandler(server.LiberalAuthzHandler): 57 def __init__(self, version, username): 58 super(TestAuthzHandler, self).__init__(username) 59 self.version = version 60 61 62 63 64 class TestFailAuthHandler(server.AuthHandler): 65 def authorise(self): 66 raise server.AuthenticationFailure, "TestFailAuthHandler" 67 68 69 class TestPermAuthHandler(TestAuthHandler): 70 def makeAuthzHandler(self, msg, user): 71 return TestPermAuthzHandler(msg, "TestCaseUser") 72 73 class TestPermAuthzHandler(TestAuthzHandler): 43 return TestPermAuthzHandler(self.server, msg, "TestCaseUser") 44 45 class TestPermAuthzHandler(AuthzHandler): 74 46 """Check's the path's other read permission and authorises accordingly. 75 47 """ 76 48 77 49 def authzControl(self, msgcode, transferopt, path): 78 self. log(server.LOG_DEBUG, 'TestPermAuthzHandler.authzControl: msgcode = %s' % hex(msgcode))50 self.server.log(DS.LOG_DEBUG, 'TestPermAuthzHandler.authzControl: msgcode = %s' % hex(msgcode)) 79 51 return self.authzPath(path) 80 52 … … 88 60 mode = stat.S_IMODE(os.stat(path)[stat.ST_MODE]) 89 61 if (mode & 0004): 90 self. log(server.LOG_DEBUG, 'TestPermAuthzHandler OK')62 self.server.log(DS.LOG_DEBUG, 'TestPermAuthzHandler OK') 91 63 return True 92 64 else: 93 self. log(server.LOG_DEBUG, 'TestPermAuthzHandler FAIL')94 raise server.AuthorisationFailure, "TestPermAuthzHandler: no read perms"65 self.server.log(DS.LOG_DEBUG, 'TestPermAuthzHandler FAIL') 66 raise auth.AuthorisationFailure, "TestPermAuthzHandler: no read perms" 95 67 96 68 97 69 class BaseFixture(unittest.TestCase): 98 70 99 authContext = TestAuthHandler( )71 authContext = TestAuthHandler(DS.ServerConnector()) 100 72 101 73 def setUp(self): … … 111 83 def _startServer(self): 112 84 # Start the server and store it's PID 113 self.pid = server.start(self.authContext, ['-l', 'DEBUG'])85 self.pid = DS.start(self.authContext, ['-l', 'DEBUG']) 114 86 115 87 def _stopServer(self): … … 205 177 print >>open('./bbftpc.log', 'w'), output 206 178 207 self.assertLines(['Received Auth handshake: NDG-Delivery -server %s' % VERSION], output)208 209 lines = self._readLog() 210 211 self.assertLines(['.* AuthContext received Auth message: NDG-Delivery-client %s' % VERSION], lines)179 self.assertLines(['Received Auth handshake: NDG-Delivery demo'], output) 180 181 lines = self._readLog() 182 183 self.assertLines(['.*received Auth message: NDG-Delivery demo'], lines) 212 184 213 185 def testPrivateStr(self): … … 263 235 264 236 class AuthFail(BaseFixture): 265 authContext = TestFailAuthHandler( )237 authContext = TestFailAuthHandler(DS.ServerConnector()) 266 238 267 239 def test(self): … … 278 250 279 251 class Authz(BaseFixture): 280 authContext = TestPermAuthHandler( )252 authContext = TestPermAuthHandler(DS.ServerConnector()) 281 253 282 254 def setUp(self): … … 298 270 self.assertLines(['Connection and authentication correct', 'stat /.*/foo OK'], output) 299 271 self.assertLines(['.*Authz: MSG_STAT .*/foo', '.*TestPermAuthzHandler OK', 300 '.*TestPermAuthzHandler.*msgcode = %s.*' % hex( server.MSG.STAT)], lines)272 '.*TestPermAuthzHandler.*msgcode = %s.*' % hex(DS.MSG.STAT)], lines) 301 273 302 274 def testFail(self):
Note: See TracChangeset
for help on using the changeset viewer.