Changeset 1264


Ignore:
Timestamp:
12/22/06 11:17:58 (6 years ago)
Author:
mglb1
Message:

Check for policy server CFengine keys and create them if they do not exist
as the daemon is starting up.

Fixes #76

File:
1 edited

Legend:

Unmodified
Added
Removed
  • ccsd/trunk/crcnetd/_utils/ccsd_cfengine.py

    r1263 r1264  
    2828import os 
    2929import os.path 
     30import shutil 
    3031from stat import * 
    3132import svn.core as core 
     
    11621163                "".join(output)) 
    11631164     
     1165def checkCfengineKeys(): 
     1166    """Ensures that CFengine keys for the server exist""" 
     1167    session = getSessionE(ADMIN_SESSION_ID) 
     1168     
     1169    # Check for existing changeset 
     1170    commit = 0 
     1171    if session.changeset == 0: 
     1172        session.begin("Creating CFengine policy server keys") 
     1173        commit = 1 
     1174    
     1175    policy_ip = getIP(config_get_required("network", "server_name")) 
     1176 
     1177    try: 
     1178        # Determine directories to store things in 
     1179        workdir = session.revision.getWorkingDir() 
     1180        cfkeydir = "%s/ppkeys" % (workdir) 
     1181        ensureDirExists(cfkeydir) 
     1182         
     1183        # Check if the policy server keys exist 
     1184        key = "%s/root-%s" % (cfkeydir, policy_ip) 
     1185        if not os.path.exists("%s.pub" % key) or \ 
     1186                not os.path.exists("%s.priv" % key): 
     1187            # Generate the keys 
     1188            genCfKey(cfkeydir, policy_ip) 
     1189            log_info("Created CFengine keys for policy server (%s)" % \ 
     1190                    policy_ip) 
     1191 
     1192        # Check if the policy server keys are linked to localhost 
     1193        if not os.path.exists("%s/localhost.pub" % cfkeydir) or \ 
     1194                not os.path.exists("%s/localhost.priv" % cfkeydir): 
     1195            # Copy policy server keys to here, using shutil rather than  
     1196            # svn as the policy server keys may have been created above 
     1197            # and not checked in yet. 
     1198            shutil.copy("%s.pub" % key,  
     1199                    "%s/localhost.pub" % cfkeydir) 
     1200            shutil.copy("%s.priv" % key,  
     1201                    "%s/localhost.priv" % cfkeydir) 
     1202            log_info("Copied CFengine policy server keys for localhost") 
     1203 
     1204    except: 
     1205        log_error("Failed to setup CFengine keys for policy server",  
     1206                sys.exc_info()) 
     1207        # Rollback any changes 
     1208        if commit == 1: 
     1209            session.rollback() 
     1210        return False 
     1211 
     1212    # Commit changeset if necessary 
     1213    if commit==1: 
     1214        session.commit() 
     1215         
     1216    return True 
     1217 
    11641218def getActiveRevision(hostname=None): 
    11651219    """Returns the active revision for the cfengine input directory  
     
    26782732    initTemplates() 
    26792733     
     2734    # Ensure that CFengine keys exists for this server 
     2735    checkCfengineKeys() 
     2736 
    26802737    # Register Cfengine Resource Server 
    26812738    registerResource("cfengine", cfserver) 
Note: See TracChangeset for help on using the changeset viewer.