solve conflicts
authorThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Thu, 27 Oct 2011 20:16:07 +0000 (22:16 +0200)
committerThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Thu, 27 Oct 2011 20:16:07 +0000 (22:16 +0200)
1  2 
sfa/server/sfaapi.py
sfa/server/threadedserver.py

diff --combined sfa/server/sfaapi.py
@@@ -1,18 -1,14 +1,18 @@@
 +import os.path
 +import datetime
 +
  from sfa.util.faults import SfaAPIError
  from sfa.util.config import Config
  from sfa.util.cache import Cache
  from sfa.trust.auth import Auth
  from sfa.trust.certificate import Keypair, Certificate
  from sfa.trust.credential import Credential
 -# this is wrong all right, but temporary 
 +
- # this is wrong all right, but temporary 
++# this is wrong all right, but temporary, will use generic
  from sfa.managers.managerwrapper import ManagerWrapper, import_manager
  from sfa.server.xmlrpcapi import XmlrpcApi
+ import os
+ import datetime
  
  ####################
  class SfaApi (XmlrpcApi): 
@@@ -22,7 -18,6 +22,7 @@@
      augmented with the local cryptographic material and hrn
      It also has the notion of neighbour sfa services 
      as defined in /etc/sfa/{aggregates,registries}.xml
 +    Finally it contains a cache instance
      It has no a priori knowledge of the underlying testbed
      """
  
@@@ -38,7 -33,6 +38,7 @@@
              return
          # Load configuration
          self.config = Config(config)
 +        self.credential = None
          self.auth = Auth(peer_cert)
          self.interface = interface
          self.hrn = self.config.SFA_INTERFACE_HRN
@@@ -49,6 -43,7 +49,6 @@@
          self.cache = cache
          if self.cache is None:
              self.cache = Cache()
 -        self.credential = None
  
          # load registries
          from sfa.server.registry import Registries
          type = 'authority'
          path = self.config.SFA_DATA_DIR
          filename = ".".join([self.interface, self.hrn, type, "cred"])
 -        cred_filename = path + os.sep + filename
 +        cred_filename = os.path.join(path,filename)
          cred = None
          if os.path.isfile(cred_filename):
              cred = Credential(filename = cred_filename)
  
          # see if this file exists
          # XX This is really the aggregate's credential. Using this is easier than getting
 -        # the registry's credential from iteslf (ssl errors).   
 -        ma_cred_filename = self.config.SFA_DATA_DIR + os.sep + self.interface + self.hrn + ".ma.cred"
 +        # the registry's credential from iteslf (ssl errors).
 +        filename = self.interface + self.hrn + ".ma.cred"
 +        ma_cred_path = os.path.join(self.config.SFA_DATA_DIR,filename)
          try:
 -            self.credential = Credential(filename = ma_cred_filename)
 +            self.credential = Credential(filename = ma_cred_path)
          except IOError:
              self.credential = self.getCredentialFromRegistry()
  
@@@ -21,8 -21,8 +21,9 @@@ from sfa.util.config import Confi
  from sfa.util.cache import Cache 
  from sfa.trust.certificate import Certificate
  from sfa.trust.trustedroots import TrustedRoots
 -#can we get rid of that ?
 -from sfa.plc.plcsfaapi import PlcSfaApi
++
 +# don't hard code an api class anymore here
 +from sfa.generic import Generic
  
  ##
  # Verification callback for pyOpenSSL. We do our own checking of keys because
@@@ -95,18 -95,11 +96,18 @@@ class SecureXMLRpcRequestHandler(Simple
          try:
              peer_cert = Certificate()
              peer_cert.load_from_pyopenssl_x509(self.connection.get_peer_certificate())
 -            self.api = PlcSfaApi(peer_cert = peer_cert, 
 -                              interface = self.server.interface, 
 -                              key_file = self.server.key_file, 
 -                              cert_file = self.server.cert_file,
 -                              cache = self.cache)
 +            generic=Generic.the_flavour()
 +            self.api = generic.make_api (peer_cert = peer_cert, 
 +                                         interface = self.server.interface, 
 +                                         key_file = self.server.key_file, 
 +                                         cert_file = self.server.cert_file,
 +                                         cache = self.cache)
 +            #logger.info("SecureXMLRpcRequestHandler.do_POST:")
 +            #logger.info("interface=%s"%self.server.interface)
 +            #logger.info("key_file=%s"%self.server.key_file)
 +            #logger.info("api=%s"%self.api)
 +            #logger.info("server=%s"%self.server)
 +            #logger.info("handler=%s"%self)
              # get arguments
              request = self.rfile.read(int(self.headers["content-length"]))
              remote_addr = (remote_ip, remote_port) = self.connection.getpeername()
  ##
  # Taken from the web (XXX find reference). Implements an HTTPS xmlrpc server
  class SecureXMLRPCServer(BaseHTTPServer.HTTPServer,SimpleXMLRPCServer.SimpleXMLRPCDispatcher):
 +
      def __init__(self, server_address, HandlerClass, key_file, cert_file, logRequests=True):
          """Secure XML-RPC server.