In order to be consistent with terminology used in debian-policy, we've always tried to use the same names for the same things. The repository option is one of the last things that were too late in squeeze release cycle to be renamed in time.
227 lines
10 KiB
Bash
Executable File
227 lines
10 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
## live-build(7) - System Build Scripts
|
|
## Copyright (C) 2006-2011 Daniel Baumann <daniel@debian.org>
|
|
##
|
|
## live-build comes with ABSOLUTELY NO WARRANTY; for details see COPYING.
|
|
## This is free software, and you are welcome to redistribute it
|
|
## under certain conditions; see COPYING for details.
|
|
|
|
|
|
# Including common functions
|
|
. "${LB_BASE:-/usr/share/live/build}"/scripts/build.sh
|
|
|
|
# Reading defaults
|
|
if [ -r /etc/default/live-build.cgi ]
|
|
then
|
|
. /etc/default/live-build.cgi
|
|
else
|
|
echo "E: /etc/default/live-build.cgi missing"
|
|
exit 1
|
|
fi
|
|
|
|
# Turn on debug if enabled
|
|
if [ "${_DEBUG}" = "enabled" ]
|
|
then
|
|
set -x
|
|
fi
|
|
|
|
# Sending http header
|
|
echo "Content-type: text/html"
|
|
echo
|
|
|
|
# Sending html header
|
|
cat "${_TEMPLATES}"/header.html
|
|
|
|
# CGI
|
|
if [ -z "${QUERY_STRING}" ]
|
|
then
|
|
# Sending html form
|
|
sed -e "s#LB_MIRROR_BOOTSTRAP#${LB_MIRROR_BOOTSTRAP}#" \
|
|
-e "s#LB_MIRROR_BINARY_SECURITY#${LB_MIRROR_BINARY_SECURITY}#" \
|
|
-e "s#LB_MIRROR_BINARY#${LB_MIRROR_BINARY}#" \
|
|
-e "s/VERSION/${VERSION}/" \
|
|
-e "s/DATE/`date +%Y%m%d-%H:%M`/" \
|
|
"${_TEMPLATES}"/form.html
|
|
else
|
|
# Converting spaces: sed 's/+/ /g'
|
|
# Converting '@': sed 's/%40/@/g'
|
|
# Converting ':': sed 's/%3A/:/g'
|
|
# Converting ';': sed 's/%3B/\;/g'
|
|
# Converting '/': sed 's/%2F/\//g'
|
|
# Converting '~': sed 's/%7E/\~/g'
|
|
# Converting '=': sed 's/%3D/=/g'
|
|
# Converting '+': sed 's/%2B/+/g'
|
|
|
|
# Translate parameters
|
|
QUERY_STRING=$(echo "${QUERY_STRING}" | sed -e 's/%2F/\//g' -e 's/+/ /g' -e 's/%3B/;/g' -e 's/%7E/~/g' -e 's/%3A/:/g' -e 's/%40/@/g' -e 's/%3D/=/g' -e 's/%2B/+/g')
|
|
# Debug the filtering string
|
|
# echo ${QUERY_STRING}
|
|
|
|
# Email
|
|
_EMAIL=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])email=[-0-9a-zA-Z._@]+' | cut -f 2 -d '=' | head -n1)
|
|
|
|
# Standard options
|
|
LB_BINARY_IMAGES=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])binary_images=[-a-z]+' | cut -f 2 -d '=' | head -n1)
|
|
LB_DISTRIBUTION=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])distribution=[a-z]+' | cut -f 2 -d '=' | head -n1)
|
|
LB_PACKAGE_LISTS=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])package_lists=[-0-9a-z]+' | cut -f 2 -d '=' | head -n1)
|
|
LB_TASKS=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])tasks=[-0-9a-zA-Z. _]+' | cut -f 2 -d '=' | head -n1)
|
|
LB_PACKAGES=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])packages=[-0-9a-zA-Z. _+]+' | cut -f 2 -d '=' | head -n1)
|
|
|
|
# Advanced bootstrap options
|
|
LB_ARCHITECTURES=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])architectures=[0-9a-z]+' | cut -f 2 -d '=' | head -n1)
|
|
LB_BOOTSTRAP_FLAVOUR=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])bootstrap_flavour=[a-z]+' | cut -f 2 -d '=' | head -n1)
|
|
LB_MIRROR_BOOTSTRAP=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])mirror_bootstrap=[-0-9a-zA-Z.~:/_]+' | cut -f 2 -d '=' | head -n1)
|
|
LB_MIRROR_BINARY=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])mirror_binary=[-0-9a-zA-Z.~:/_]+' | cut -f 2 -d '=' | head -n1)
|
|
LB_MIRROR_BINARY_SECURITY=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])mirror_binary_security=[-0-9a-zA-Z.~:/_]+' | cut -f 2 -d '=' | head -n1)
|
|
LB_ARCHIVE_AREAS=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])archive_areas=[a-z]+' | cut -f 2 -d '=' | head -n1)
|
|
|
|
# Advanced chroot options
|
|
LB_CHROOT_FILESYSTEM=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])chroot_filesystem=[0-9a-z]+' | cut -f 2 -d '=' | head -n1)
|
|
LB_LINUX_FLAVOURS=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])linux_flavours=[-0-9a-z]+' | cut -f 2 -d '=' | head -n1)
|
|
LB_SECURITY=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])security=[a-z]+' | cut -f 2 -d '=' | head -n1)
|
|
|
|
# Advanced binary options
|
|
LB_BINARY_INDICES=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])binary_indices=[a-z]+' | cut -f 2 -d '=' | head -n1)
|
|
LB_BOOTAPPEND_INSTALL=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])bootappend_install=[-0-9a-zA-Z. _+=:/]+' | cut -f2- -d '=' | head -n1)
|
|
LB_BOOTAPPEND_LIVE=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])bootappend_live=[-0-9a-zA-Z. _+=:/]+' | cut -f2- -d '=' | head -n1)
|
|
LB_BOOTLOADER=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])bootloader=[a-z]+' | cut -f 2 -d '=' | head -n1)
|
|
LB_DEBIAN_INSTALLER=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])debian_installer=[a-z]+' | cut -f 2 -d '=' | head -n1)
|
|
LB_ISO_APPLICATION=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])iso_application=[-0-9a-zA-Z. ~;:/_]+' | cut -f 2 -d '=' | head -n1)
|
|
LB_ISO_PREPARER=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])iso_preparer=[-0-9a-zA-Z. ~;:/_]+' | cut -f 2 -d '=' | head -n1)
|
|
LB_ISO_PUBLISHER=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])iso_publisher=[-0-9a-zA-Z. ~;:/_@]+' | cut -f 2 -d '=' | head -n1)
|
|
LB_ISO_VOLUME=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])iso_volume=[-0-9a-zA-Z. ~;:/_]+' | cut -f 2 -d '=' | head -n1)
|
|
LB_MEMTEST=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])memtest=[0-9a-z+]+' | cut -f 2 -d '=' | head -n1)
|
|
LB_NET_ROOT_PATH=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])net_path=[-0-9a-zA-Z._/]+' | cut -f 2 -d '=' | head -n1)
|
|
LB_NET_ROOT_SERVER=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])net_server=[0-9.]+' | cut -f 2 -d '=' | head -n1)
|
|
|
|
# Advanced source options
|
|
LB_SOURCE=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])source=[a-z]+' | cut -f 2 -d '=' | head -n1)
|
|
LB_SOURCE_IMAGES=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])source_images=[a-z]+' | cut -f 2 -d '=' | head -n1)
|
|
|
|
# Unofficial options
|
|
_CUSTOM_BOOTSTRAP=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])custom_bootstrap=[-0-9a-zA-Z.~:/_]+' | cut -f 2 -d '=' | head -n1)
|
|
_CUSTOM_BINARY=$(echo "${QUERY_STRING}" | grep -oE '(^|[?&])custom_binary=[-0-9a-zA-Z.~:/_]+' | cut -f 2 -d '=' | head -n1)
|
|
|
|
# FIXME: filter invalid options
|
|
unset QUERY_STRING
|
|
|
|
if [ -z "${_EMAIL}" ]
|
|
then
|
|
echo "<h2><div style='color: red;'>Error: No email address specified.</div></h2>"
|
|
|
|
sed -e "s#LB_MIRROR_BOOTSTRAP#${LB_MIRROR_BOOTSTRAP}#" \
|
|
-e "s#LB_MIRROR_BINARY_SECURITY#${LB_MIRROR_BINARY_SECURITY}#" \
|
|
-e "s#LB_MIRROR_BINARY#${LB_MIRROR_BINARY}#" \
|
|
-e "s/VERSION/${VERSION}/" \
|
|
-e "s/DATE/`date +%Y%m%d-%H:%M`/" \
|
|
"${_TEMPLATES}"/form.html
|
|
|
|
exit
|
|
fi
|
|
|
|
# Getting build identifier
|
|
_BUILD=$(date +%Y%m%d.%H%M%S.%N)
|
|
|
|
#echo "${QUERY_STRING}"
|
|
# Sending html confirmation
|
|
# Note: On each string remember to use a delimeter that is not in the string.
|
|
sed -e "s/BUILD/${_BUILD}/g" \
|
|
-e "s/EMAIL/${_EMAIL}/" \
|
|
-e "s/LB_BINARY_IMAGES/${LB_BINARY_IMAGES}/" \
|
|
-e "s/LB_DISTRIBUTION/${LB_DISTRIBUTION}/" \
|
|
-e "s/LB_PACKAGE_LISTS/${LB_PACKAGE_LISTS}/" \
|
|
-e "s/LB_TASKS/${LB_TASKS}/" \
|
|
-e "s/LB_PACKAGES/${LB_PACKAGES}/" \
|
|
-e "s/LB_ARCHITECTURES/${LB_ARCHITECTURES}/" \
|
|
-e "s/LB_BOOTSTRAP_FLAVOUR/${LB_BOOTSTRAP_FLAVOUR}/" \
|
|
-e "s#LB_MIRROR_BOOTSTRAP#${LB_MIRROR_BOOTSTRAP}#" \
|
|
-e "s#LB_MIRROR_BINARY_SECURITY#${LB_MIRROR_BINARY_SECURITY}#" \
|
|
-e "s#LB_MIRROR_BINARY#${LB_MIRROR_BINARY}#" \
|
|
-e "s/LB_ARCHIVE_AREAS/${LB_ARCHIVE_AREAS}/" \
|
|
-e "s/LB_CHROOT_FILESYSTEM/${LB_CHROOT_FILESYSTEM}/" \
|
|
-e "s/LB_LINUX_FLAVOURS/${LB_LINUX_FLAVOURS}/" \
|
|
-e "s/LB_SECURITY/${LB_SECURITY}/" \
|
|
-e "s/LB_BINARY_INDICES/${LB_BINARY_INDICES}/" \
|
|
-e "s#LB_BOOTAPPEND_INSTALL#${LB_BOOTAPPEND_INSTALL}#" \
|
|
-e "s#LB_BOOTAPPEND_LIVE#${LB_BOOTAPPEND_LIVE}#" \
|
|
-e "s/LB_BOOTLOADER/${LB_BOOTLOADER}/" \
|
|
-e "s/LB_DEBIAN_INSTALLER/${LB_DEBIAN_INSTALLER}/" \
|
|
-e "s#LB_ISO_APPLICATION#${LB_ISO_APPLICATION}#" \
|
|
-e "s#LB_ISO_PREPARER#${LB_ISO_PREPARER}#" \
|
|
-e "s#LB_ISO_PUBLISHER#${LB_ISO_PUBLISHER}#" \
|
|
-e "s#LB_ISO_VOLUME#${LB_ISO_VOLUME}#" \
|
|
-e "s/LB_MEMTEST/${LB_MEMTEST}/" \
|
|
-e "s#LB_NET_ROOT_PATH#${LB_NET_ROOT_PATH}#" \
|
|
-e "s/LB_NET_ROOT_SERVER/${LB_NET_ROOT_SERVER}/" \
|
|
-e "s#SERVER#${_SERVER}#g" \
|
|
-e "s/LB_SOURCE_IMAGES/${LB_SOURCE_IMAGES}/" \
|
|
-e "s/LB_SOURCE/${LB_SOURCE}/" \
|
|
-e "s#CUSTOM_BOOTSTRAP#${_CUSTOM_BOOTSTRAP}#" \
|
|
-e "s#CUSTOM_BINARY#${_CUSTOM_BINARY}#" \
|
|
"${_TEMPLATES}"/build.html
|
|
|
|
# Creating temporary directory
|
|
mkdir -p "${_TEMPDIR}"
|
|
|
|
# Writing build file
|
|
cat > "${_TEMPDIR}"/"${_BUILD}".build << EOF
|
|
# live-build.cgi "${VERSION}" build file
|
|
# `date -R`
|
|
|
|
_BUILD="${_BUILD}"
|
|
_EMAIL="${_EMAIL}"
|
|
|
|
REMOTE_ADDR="${REMOTE_ADDR}"
|
|
|
|
# Standard options
|
|
LB_BINARY_IMAGES="${LB_BINARY_IMAGES}"
|
|
LB_DISTRIBUTION="${LB_DISTRIBUTION}"
|
|
LB_PACKAGE_LISTS="${LB_PACKAGE_LISTS}"
|
|
LB_TASKS="${LB_TASKS}"
|
|
LB_PACKAGES="${LB_PACKAGES}"
|
|
|
|
# Advanced bootstrap options
|
|
LB_ARCHITECTURES="${LB_ARCHITECTURES}"
|
|
LB_MIRROR_BOOTSTRAP="${LB_MIRROR_BOOTSTRAP}"
|
|
LB_MIRROR_BINARY_SECURITY="${LB_MIRROR_BINARY_SECURITY}"
|
|
LB_MIRROR_BINARY="${LB_MIRROR_BINARY}"
|
|
LB_ARCHIVE_AREAS="${LB_ARCHIVE_AREAS}"
|
|
|
|
# Advanced chroot options
|
|
LB_CHROOT_FILESYSTEM="${LB_CHROOT_FILESYSTEM}"
|
|
LB_LINUX_FLAVOURS="${LB_LINUX_FLAVOURS}"
|
|
LB_SECURITY="${LB_SECURITY}"
|
|
|
|
# Advanced binary options
|
|
LB_BINARY_INDICES="${LB_BINARY_INDICES}"
|
|
LB_BOOTAPPEND_INSTALL="${LB_BOOTAPPEND_INSTALL}"
|
|
LB_BOOTAPPEND_LIVE="${LB_BOOTAPPEND_LIVE}"
|
|
LB_BOOTLOADER="${LB_BOOTLOADER}"
|
|
LB_DEBIAN_INSTALLER="${LB_DEBIAN_INSTALLER}"
|
|
LB_ISO_APPLICATION="${LB_ISO_APPLICATION}"
|
|
LB_ISO_PREPARER="${LB_ISO_PREPARER}"
|
|
LB_ISO_PUBLISHER="${LB_ISO_PUBLISHER}"
|
|
LB_ISO_VOLUME="${LB_ISO_VOLUME}"
|
|
LB_MEMTEST="${LB_MEMTEST}"
|
|
LB_NET_ROOT_PATH="${LB_NET_ROOT_PATH}"
|
|
LB_NET_ROOT_SERVER="${LB_NET_ROOT_SERVER}"
|
|
|
|
# Advanced source options
|
|
LB_SOURCE_IMAGES="${LB_SOURCE_IMAGES}"
|
|
LB_SOURCE="${LB_SOURCE}"
|
|
|
|
# Unofficial options
|
|
_CUSTOM_BOOTSTRAP="${_CUSTOM_BOOTSTRAP}"
|
|
_CUSTOM_BINARY="${_CUSTOM_BINARY}"
|
|
|
|
# Other
|
|
LB_ARCHIVES="${LB_ARCHIVES}"
|
|
EOF
|
|
|
|
echo "$(date +%b\ %d\ %H:%M:%S) ${HOSTNAME} live-build.cgi: add web build (${_BUILD}) from ${REMOTE_ADDR}." >> /var/log/live
|
|
echo "$(date +%b\ %d\ %H:%M:%S) ${HOSTNAME} live-build.cgi: options ${_BUILD} |email ${_EMAIL}|binary_images ${LB_BINARY_IMAGES}|distribution ${LB_DISTRIBUTION}|package_lists ${LB_PACKAGE_LISTS}|tasks ${LB_TASKS}|packages ${LB_PACKAGES}|architectures ${LB_ARCHITECTURES}|mirror_bootstrap_security ${LB_MIRROR_BOOTSTRAP}|mirror_bootstrap ${LB_MIRROR_BOOTSTRAP}|mirror_binary_security ${LB_MIRROR_BINARY_SECURITY}|mirror_binary ${LB_MIRROR_BINARY}|archive_areas ${LB_ARCHIVE_AREAS}|chroot_filesystem ${LB_CHROOT_FILESYSTEM}|linux_flavours ${LB_LINUX_FLAVOURS}|security ${LB_SECURITY}|binary_indices ${LB_BINARY_INDICES}|bootappend_install ${LB_BOOTAPPEND_INSTALL}|bootappend_live ${LB_BOOTAPPEND_LIVE}|bootloader ${LB_BOOTLOADER}|debian_installer ${LB_DEBIAN_INSTALLER}|iso_application ${LB_ISO_APPLICATION}|iso_preparer ${LB_ISO_PREPARER}|iso_publisher ${LB_ISO_PUBLISHER}|iso_volume ${LB_ISO_VOLUME}|memtest ${LB_MEMTEST}|net_path ${LB_NET_ROOT_PATH}|net_server ${LB_NET_ROOT_SERVER}|source_images ${LB_SOURCE_IMAGES}|source ${LB_SOURCE}|custom_bootstrap ${_CUSTOM_BOOTSTRAP}|custom_binary ${_CUSTOM_BINARY}\n" >> /var/log/live
|
|
fi
|
|
|
|
sed -e "s/VERSION/${VERSION}/" "${_TEMPLATES}"/footer.html
|