Parcourir la source

HPCC-16098 Cmake configure target now sets up ssh keys if not present

Signed-off-by: Michael Gardner <michael.gardner@lexisnexis.com>
Michael Gardner il y a 8 ans
Parent
commit
765cf50fb7

+ 5 - 1
cmake_modules/optionDefaults.cmake

@@ -61,7 +61,11 @@ if ( NOT RUNTIME_DIR )
 endif()
 
 if ( NOT HOME_DIR )
-    set( HOME_DIR "/home" )
+    if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+        set( HOME_DIR "/Users" )
+    else()
+        set( HOME_DIR "/home" )
+    endif()
 endif()
 
 if ( NOT LOCK_DIR )

+ 11 - 1
initfiles/etc/DIR_NAME/CMakeLists.txt

@@ -33,9 +33,19 @@ ADD_SUBDIRECTORY(configmgr)
 
 if(NOT "${DESTDIR}" STREQUAL "")
     message(STATUS "DESTDIR is set to ${DESTDIR}. Enabling configure target.")
+    add_custom_command(OUTPUT 
+        ${HOME_DIR}/${RUNTIME_USER}/.ssh/authorized_keys
+        ${HOME_DIR}/${RUNTIME_USER}/.ssh/id_rsa.pub
+        ${HOME_DIR}/${RUNTIME_USER}/.ssh/id_rsa
+        COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/configure_keys.sh
+        COMMENT "Attempting to generate ssh keys if not present"
+        WORKING_DIRECTORY ${HOME_DIR}/${RUNTIME_USER}/.ssh VERBATIM)
     add_custom_target(configure
         COMMAND ${CMAKE_COMMAND} -E make_directory ${CONFIG_DIR}
         COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/${ENV_XML_FILE} ${CONFIG_DIR}
         COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/${ENV_CONF_FILE} ${CONFIG_DIR}
-        COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/genenvrules.conf ${CONFIG_DIR})
+        COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/genenvrules.conf ${CONFIG_DIR}
+        DEPENDS ${HOME_DIR}/${RUNTIME_USER}/.ssh/authorized_keys
+        ${HOME_DIR}/${RUNTIME_USER}/.ssh/id_rsa.pub
+        ${HOME_DIR}/${RUNTIME_USER}/.ssh/id_rsa)
 endif()

+ 9 - 0
initfiles/etc/DIR_NAME/configure_keys.sh

@@ -0,0 +1,9 @@
+#!/bin/bash
+[[ ! -e id_rsa ]] && ssh-keygen -q -f id_rsa -t rsa -N ''
+[[ ! -e id_rsa.pub ]] && ssh-keygen -y -f id_rsa > id_rsa.pub && chmod 0644 id_rsa.pub
+t_pubkey=$(cat id_rsa.pub)
+grep ^${t_pubkey}$ authorized_keys >/dev/null 2>&1
+if [[ $? -ne 0 ]]; then
+    cat id_rsa.pub >> authorized_keys
+    chmod 0600 authorized_keys
+fi