jails.py
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 __author__ = "Cyril Jaquier"
00022 __version__ = "$Revision: 504 $"
00023 __date__ = "$Date: 2006-12-23 17:37:17 +0100 (Sat, 23 Dec 2006) $"
00024 __copyright__ = "Copyright (c) 2004 Cyril Jaquier"
00025 __license__ = "GPL"
00026
00027
00028 from jail import Jail
00029 from threading import Lock
00030
00031
00032
00033
00034
00035
00036
00037
00038 class Jails:
00039
00040
00041
00042
00043 def __init__(self):
00044 self.__lock = Lock()
00045 self.__jails = dict()
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055 def add(self, name, backend):
00056 try:
00057 self.__lock.acquire()
00058 if self.__jails.has_key(name):
00059 raise DuplicateJailException(name)
00060 else:
00061 self.__jails[name] = Jail(name, backend)
00062 finally:
00063 self.__lock.release()
00064
00065
00066
00067
00068
00069
00070
00071
00072 def remove(self, name):
00073 try:
00074 self.__lock.acquire()
00075 if self.__jails.has_key(name):
00076 del self.__jails[name]
00077 else:
00078 raise UnknownJailException(name)
00079 finally:
00080 self.__lock.release()
00081
00082
00083
00084
00085
00086
00087
00088
00089 def get(self, name):
00090 try:
00091 self.__lock.acquire()
00092 if self.__jails.has_key(name):
00093 jail = self.__jails[name]
00094 return jail
00095 else:
00096 raise UnknownJailException(name)
00097 finally:
00098 self.__lock.release()
00099
00100
00101
00102
00103
00104
00105
00106
00107 def getAction(self, name):
00108 try:
00109 self.__lock.acquire()
00110 if self.__jails.has_key(name):
00111 action = self.__jails[name].getAction()
00112 return action
00113 else:
00114 raise UnknownJailException(name)
00115 finally:
00116 self.__lock.release()
00117
00118
00119
00120
00121
00122
00123
00124
00125 def getFilter(self, name):
00126 try:
00127 self.__lock.acquire()
00128 if self.__jails.has_key(name):
00129 action = self.__jails[name].getFilter()
00130 return action
00131 else:
00132 raise UnknownJailException(name)
00133 finally:
00134 self.__lock.release()
00135
00136
00137
00138
00139
00140
00141 def getAll(self):
00142 try:
00143 self.__lock.acquire()
00144 return self.__jails.copy()
00145 finally:
00146 self.__lock.release()
00147
00148
00149
00150
00151
00152
00153 def size(self):
00154 try:
00155 self.__lock.acquire()
00156 return len(self.__jails)
00157 finally:
00158 self.__lock.release()
00159
00160
00161 class DuplicateJailException(Exception):
00162 pass
00163
00164 class UnknownJailException(Exception):
00165 pass