|
|
|
@@ -15,8 +15,8 @@ fi;
|
|
|
|
# abort on not set
|
|
|
|
# abort on not set
|
|
|
|
|
|
|
|
|
|
|
|
error=0;
|
|
|
|
error=0;
|
|
|
|
if [ -z "${GIT_REPOSITORY_FOLDER}" ]; then
|
|
|
|
if [ -z "${GIT_WEBHOOK_BASE_FOLDER}" ]; then
|
|
|
|
echo "Missing GIT_REPOSITORY_FOLDER entry";
|
|
|
|
echo "Missing GIT_WEBHOOK_BASE_FOLDER entry";
|
|
|
|
error=1;
|
|
|
|
error=1;
|
|
|
|
fi;
|
|
|
|
fi;
|
|
|
|
if [ -z "${WWW_GROUP}" ]; then
|
|
|
|
if [ -z "${WWW_GROUP}" ]; then
|
|
|
|
@@ -56,9 +56,9 @@ PEM_BASE="${BASE_FOLDER}../pem/";
|
|
|
|
JUMP_PEM_FILE="somen-jump.tequila.jp#scripts#webhook-git#ed25519.pem";
|
|
|
|
JUMP_PEM_FILE="somen-jump.tequila.jp#scripts#webhook-git#ed25519.pem";
|
|
|
|
|
|
|
|
|
|
|
|
# add trailing slash if missing
|
|
|
|
# add trailing slash if missing
|
|
|
|
GIT_REPOSITORY_FOLDER="${GIT_REPOSITORY_FOLDER%/}/"
|
|
|
|
GIT_WEBHOOK_BASE_FOLDER="${GIT_WEBHOOK_BASE_FOLDER%/}/"
|
|
|
|
|
|
|
|
|
|
|
|
if [ -d "${GIT_REPOSITORY_FOLDER}" ]; then
|
|
|
|
if [ -d "${GIT_WEBHOOK_BASE_FOLDER}" ]; then
|
|
|
|
echo "Base folder already exists, update check";
|
|
|
|
echo "Base folder already exists, update check";
|
|
|
|
echo "[TODO] -> Not implemented exit";
|
|
|
|
echo "[TODO] -> Not implemented exit";
|
|
|
|
# check folders
|
|
|
|
# check folders
|
|
|
|
@@ -71,27 +71,27 @@ else
|
|
|
|
echo "=> Create new folder structure";
|
|
|
|
echo "=> Create new folder structure";
|
|
|
|
# User for sudo, but only if SUDO is enabled
|
|
|
|
# User for sudo, but only if SUDO is enabled
|
|
|
|
if [ "${USE_SUDO}" != "0" ]; then
|
|
|
|
if [ "${USE_SUDO}" != "0" ]; then
|
|
|
|
echo "+ Add user ${WWW_GROUP}:${SUDO_USER} with base folder ${GIT_REPOSITORY_FOLDER}";
|
|
|
|
echo "+ Add user ${WWW_GROUP}:${SUDO_USER} with base folder ${GIT_WEBHOOK_BASE_FOLDER}";
|
|
|
|
useradd -d "${GIT_REPOSITORY_FOLDER}" -m -s /usr/sbin/nologin "${SUDO_USER}"
|
|
|
|
useradd -d "${GIT_WEBHOOK_BASE_FOLDER}" -m -s /usr/sbin/nologin "${SUDO_USER}"
|
|
|
|
fi;
|
|
|
|
fi;
|
|
|
|
if [ -d "${GIT_REPOSITORY_FOLDER}" ]; then
|
|
|
|
if [ -d "${GIT_WEBHOOK_BASE_FOLDER}" ]; then
|
|
|
|
echo "+ Create Folder: ${GIT_REPOSITORY_FOLDER}";
|
|
|
|
echo "+ Create Folder: ${GIT_WEBHOOK_BASE_FOLDER}";
|
|
|
|
mkdir "${GIT_REPOSITORY_FOLDER}";
|
|
|
|
mkdir "${GIT_WEBHOOK_BASE_FOLDER}";
|
|
|
|
fi;
|
|
|
|
fi;
|
|
|
|
echo "+ Set folder user/group";
|
|
|
|
echo "+ Set folder user/group";
|
|
|
|
# user is not mandatory, but we need to set the group
|
|
|
|
# user is not mandatory, but we need to set the group
|
|
|
|
setfacl -m u:"${SUDO_USER}":rwx -R "${GIT_REPOSITORY_FOLDER}"
|
|
|
|
setfacl -m u:"${SUDO_USER}":rwx -R "${GIT_WEBHOOK_BASE_FOLDER}"
|
|
|
|
setfacl -m -d u:"${SUDO_USER}":rwx -R "${GIT_REPOSITORY_FOLDER}"
|
|
|
|
setfacl -m -d u:"${SUDO_USER}":rwx -R "${GIT_WEBHOOK_BASE_FOLDER}"
|
|
|
|
setfacl -m g:"${WWW_GROUP}":rx -R "${GIT_REPOSITORY_FOLDER}"
|
|
|
|
setfacl -m g:"${WWW_GROUP}":rx -R "${GIT_WEBHOOK_BASE_FOLDER}"
|
|
|
|
# SSH
|
|
|
|
# SSH
|
|
|
|
if [ "${USE_SUDO}" != "0" ]; then
|
|
|
|
if [ "${USE_SUDO}" != "0" ]; then
|
|
|
|
echo "+ Add .ssh folder"
|
|
|
|
echo "+ Add .ssh folder"
|
|
|
|
sudo -u "${SUDO_USER}" mkdir "${GIT_REPOSITORY_FOLDER}"/.ssh/
|
|
|
|
sudo -u "${SUDO_USER}" mkdir "${GIT_WEBHOOK_BASE_FOLDER}"/.ssh/
|
|
|
|
sudo -u "${SUDO_USER}" touch "${GIT_REPOSITORY_FOLDER}"/.ssh/config
|
|
|
|
sudo -u "${SUDO_USER}" touch "${GIT_WEBHOOK_BASE_FOLDER}"/.ssh/config
|
|
|
|
sudo -u "${SUDO_USER}" chmod 700 "${GIT_REPOSITORY_FOLDER}"/.ssh/
|
|
|
|
sudo -u "${SUDO_USER}" chmod 700 "${GIT_WEBHOOK_BASE_FOLDER}"/.ssh/
|
|
|
|
sudo -u "${SUDO_USER}" chmod 600 "${GIT_REPOSITORY_FOLDER}"/.ssh/config
|
|
|
|
sudo -u "${SUDO_USER}" chmod 600 "${GIT_WEBHOOK_BASE_FOLDER}"/.ssh/config
|
|
|
|
# add master jump host
|
|
|
|
# add master jump host
|
|
|
|
cat >> "${GIT_REPOSITORY_FOLDER}"/.ssh/config << 'EOF'
|
|
|
|
cat >> "${GIT_WEBHOOK_BASE_FOLDER}"/.ssh/config << 'EOF'
|
|
|
|
Host UdonGitJump
|
|
|
|
Host UdonGitJump
|
|
|
|
Hostname somen-jump.tequila.jp
|
|
|
|
Hostname somen-jump.tequila.jp
|
|
|
|
User webhook-git
|
|
|
|
User webhook-git
|
|
|
|
@@ -99,9 +99,9 @@ Host UdonGitJump
|
|
|
|
Port 37337
|
|
|
|
Port 37337
|
|
|
|
EOF
|
|
|
|
EOF
|
|
|
|
if [ -f "${PEM_BASE}${JUMP_PEM_FILE}" ]; then
|
|
|
|
if [ -f "${PEM_BASE}${JUMP_PEM_FILE}" ]; then
|
|
|
|
sudo -u "${SUDO_USER}" cp "${PEM_BASE}${JUMP_PEM_FILE}" "${GIT_REPOSITORY_FOLDER}"/.ssh/;
|
|
|
|
sudo -u "${SUDO_USER}" cp "${PEM_BASE}${JUMP_PEM_FILE}" "${GIT_WEBHOOK_BASE_FOLDER}"/.ssh/;
|
|
|
|
chown "${SUDO_USER}:" "${GIT_REPOSITORY_FOLDER}/.ssh/${JUMP_PEM_FILE}"
|
|
|
|
chown "${SUDO_USER}:" "${GIT_WEBHOOK_BASE_FOLDER}/.ssh/${JUMP_PEM_FILE}"
|
|
|
|
sudo -u "${SUDO_USER}" chmod 600 "${GIT_REPOSITORY_FOLDER}/.ssh/${JUMP_PEM_FILE}"
|
|
|
|
sudo -u "${SUDO_USER}" chmod 600 "${GIT_WEBHOOK_BASE_FOLDER}/.ssh/${JUMP_PEM_FILE}"
|
|
|
|
else
|
|
|
|
else
|
|
|
|
echo "PEM FILE ${JUMP_PEM_FILE} must be added manually"
|
|
|
|
echo "PEM FILE ${JUMP_PEM_FILE} must be added manually"
|
|
|
|
fi;
|
|
|
|
fi;
|
|
|
|
@@ -110,29 +110,29 @@ EOF
|
|
|
|
echo "+ Other folders for clone base: ${CLONE_BASE}, logs, scripts, www/webhook-incoming"
|
|
|
|
echo "+ Other folders for clone base: ${CLONE_BASE}, logs, scripts, www/webhook-incoming"
|
|
|
|
sudo -u "${SUDO_USER}" \
|
|
|
|
sudo -u "${SUDO_USER}" \
|
|
|
|
mkdir -p \
|
|
|
|
mkdir -p \
|
|
|
|
"${GIT_REPOSITORY_FOLDER}${CLONE_BASE}" \
|
|
|
|
"${GIT_WEBHOOK_BASE_FOLDER}${CLONE_BASE}" \
|
|
|
|
"${GIT_REPOSITORY_FOLDER}${LOG_FOLDER}" \
|
|
|
|
"${GIT_WEBHOOK_BASE_FOLDER}${LOG_FOLDER}" \
|
|
|
|
"${GIT_REPOSITORY_FOLDER}${SCRIPT_FOLDER}" \
|
|
|
|
"${GIT_WEBHOOK_BASE_FOLDER}${SCRIPT_FOLDER}" \
|
|
|
|
"${GIT_REPOSITORY_FOLDER}${CONFIG_FOLDER}" \
|
|
|
|
"${GIT_WEBHOOK_BASE_FOLDER}${CONFIG_FOLDER}" \
|
|
|
|
"${GIT_REPOSITORY_FOLDER}${WWW_WEBHOOK_INCOMING}" \
|
|
|
|
"${GIT_WEBHOOK_BASE_FOLDER}${WWW_WEBHOOK_INCOMING}" \
|
|
|
|
"${GIT_REPOSITORY_FOLDER}${WWW_ADMIN}";
|
|
|
|
"${GIT_WEBHOOK_BASE_FOLDER}${WWW_ADMIN}";
|
|
|
|
# set basic folder rights, clone folder is excluded
|
|
|
|
# set basic folder rights, clone folder is excluded
|
|
|
|
sudo -u "${SUDO_USER}" chmod 700 \
|
|
|
|
sudo -u "${SUDO_USER}" chmod 700 \
|
|
|
|
"${GIT_REPOSITORY_FOLDER}${LOG_FOLDER}" \
|
|
|
|
"${GIT_WEBHOOK_BASE_FOLDER}${LOG_FOLDER}" \
|
|
|
|
"${GIT_REPOSITORY_FOLDER}${SCRIPT_FOLDER}" \
|
|
|
|
"${GIT_WEBHOOK_BASE_FOLDER}${SCRIPT_FOLDER}" \
|
|
|
|
"${GIT_REPOSITORY_FOLDER}${CONFIG_FOLDER}" \
|
|
|
|
"${GIT_WEBHOOK_BASE_FOLDER}${CONFIG_FOLDER}" \
|
|
|
|
"${GIT_REPOSITORY_FOLDER}${WWW_WEBHOOK_INCOMING}" \
|
|
|
|
"${GIT_WEBHOOK_BASE_FOLDER}${WWW_WEBHOOK_INCOMING}" \
|
|
|
|
"${GIT_REPOSITORY_FOLDER}${WWW_ADMIN}";
|
|
|
|
"${GIT_WEBHOOK_BASE_FOLDER}${WWW_ADMIN}";
|
|
|
|
# setfacl -m u:"${SUDO_USER}":rwx -R "${GIT_REPOSITORY_FOLDER}${CLONE_BASE}"
|
|
|
|
# setfacl -m u:"${SUDO_USER}":rwx -R "${GIT_WEBHOOK_BASE_FOLDER}${CLONE_BASE}"
|
|
|
|
# setfacl -d -m u:"${SUDO_USER}":rwx -R "${GIT_REPOSITORY_FOLDER}${CLONE_BASE}"
|
|
|
|
# setfacl -d -m u:"${SUDO_USER}":rwx -R "${GIT_WEBHOOK_BASE_FOLDER}${CLONE_BASE}"
|
|
|
|
# web user must have access to the clone folder, RWX
|
|
|
|
# web user must have access to the clone folder, RWX
|
|
|
|
setfacl -m g:"${WWW_GROUP}":rwx -R "${GIT_REPOSITORY_FOLDER}${CLONE_BASE}"
|
|
|
|
setfacl -m g:"${WWW_GROUP}":rwx -R "${GIT_WEBHOOK_BASE_FOLDER}${CLONE_BASE}"
|
|
|
|
setfacl -d -m g:"${WWW_GROUP}":rwx -R "${GIT_REPOSITORY_FOLDER}${CLONE_BASE}"
|
|
|
|
setfacl -d -m g:"${WWW_GROUP}":rwx -R "${GIT_WEBHOOK_BASE_FOLDER}${CLONE_BASE}"
|
|
|
|
# Copy files
|
|
|
|
# Copy files
|
|
|
|
echo "+ Copy basic script and config files";
|
|
|
|
echo "+ Copy basic script and config files";
|
|
|
|
# git_pull.sh, init.sh, new_clone.sh, webhook.default.cfg
|
|
|
|
# git_pull.sh, init.sh, new_clone.sh, webhook.default.cfg
|
|
|
|
sudo -u "${SUDO_USER}"cp "${BASE_FOLDER}new_clone.sh" "${BASE_FOLDER}init.sh" "${BASE_FOLDER}git_clone.sh" "${GIT_REPOSITORY_FOLDER}${SCRIPT_FOLDER}";
|
|
|
|
sudo -u "${SUDO_USER}"cp "${BASE_FOLDER}new_clone.sh" "${BASE_FOLDER}init.sh" "${BASE_FOLDER}git_clone.sh" "${GIT_WEBHOOK_BASE_FOLDER}${SCRIPT_FOLDER}";
|
|
|
|
sudo -u "${SUDO_USER}"cp "${CONFIG_BASE}/webhook.default.cfg" "${GIT_REPOSITORY_FOLDER}${CONFIG_FOLDER}";
|
|
|
|
sudo -u "${SUDO_USER}"cp "${CONFIG_BASE}/webhook.default.cfg" "${GIT_WEBHOOK_BASE_FOLDER}${CONFIG_FOLDER}";
|
|
|
|
fi;
|
|
|
|
fi;
|
|
|
|
|
|
|
|
|
|
|
|
# __END__
|
|
|
|
# __END__
|
|
|
|
|