File add_settings_file_converter.patch of Package cobbler
diff --git a/config/cobbler/modules.conf b/config/cobbler/modules.conf
index d1e13c7ad..40ec0e238 100644
--- a/config/cobbler/modules.conf
+++ b/config/cobbler/modules.conf
@@ -30,7 +30,7 @@ module = authentication.configfile
# (user supplied) -- you may write your own module
# WARNING: this is a security setting, do not choose an option blindly.
# If you want to further restrict cobbler with ACLs for various groups,
-# pick authz_ownership. authz_allowall does not support ACLs. configfile
+# pick authorization.ownership. authorization.ownership does not support ACLs. configfile
# does but does not support object ownership which is useful as an additional
# layer of control.
diff --git a/scripts/settings-migration-v1-to-v2.sh b/scripts/settings-migration-v1-to-v2.sh
new file mode 100644
index 000000000..10ed58aa9
--- /dev/null
+++ b/scripts/settings-migration-v1-to-v2.sh
@@ -0,0 +1,216 @@
+#!/bin/bash
+
+#set -x
+path_modules_conf="/etc/cobbler/modules.conf"
+default_file=""
+flag_regex_conversion=false
+flag_static_conversion=false
+flag_replace_conversion=false
+
+read -r -d '' default_file <<EOM
+# cobbler module configuration file
+# =================================
+
+# authentication:
+# what users can log into the WebUI and Read-Write XMLRPC?
+# choices:
+# authentication.denyall -- no one (default)
+# authentication.configfile -- use /etc/cobbler/users.digest (for basic setups)
+# authentication.passthru -- ask Apache to handle it (used for kerberos)
+# authentication.ldap -- authenticate against LDAP
+# authentication.spacewalk -- ask Spacewalk/Satellite (experimental)
+# authentication.pam -- use PAM facilities
+# authentication.testing -- username/password is always testing/testing (debug)
+# (user supplied) -- you may write your own module
+# WARNING: this is a security setting, do not choose an option blindly.
+# for more information:
+# https://github.com/cobbler/cobbler/wiki/Cobbler-web-interface
+# https://github.com/cobbler/cobbler/wiki/Security-overview
+# https://github.com/cobbler/cobbler/wiki/Kerberos
+# https://github.com/cobbler/cobbler/wiki/Ldap
+
+[authentication]
+module = authentication.configfile
+
+# authorization:
+# once a user has been cleared by the WebUI/XMLRPC, what can they do?
+# choices:
+# authorization.allowall -- full access for all authneticated users (default)
+# authorization.ownership -- use users.conf, but add object ownership semantics
+# (user supplied) -- you may write your own module
+# WARNING: this is a security setting, do not choose an option blindly.
+# If you want to further restrict cobbler with ACLs for various groups,
+# pick authz_ownership. authz_allowall does not support ACLs. configfile
+# does but does not support object ownership which is useful as an additional
+# layer of control.
+
+# for more information:
+# https://github.com/cobbler/cobbler/wiki/Cobbler-web-interface
+# https://github.com/cobbler/cobbler/wiki/Security-overview
+# https://github.com/cobbler/cobbler/wiki/Web-authorization
+
+[authorization]
+module = authorization.allowall
+
+# dns:
+# chooses the DNS management engine if manage_dns is enabled
+# in /etc/cobbler/settings, which is off by default.
+# choices:
+# managers.bind -- default, uses BIND/named
+# managers.dnsmasq -- uses dnsmasq, also must select dnsmasq for dhcp below
+# managers.ndjbdns -- uses ndjbdns
+# NOTE: more configuration is still required in /etc/cobbler
+# for more information:
+# https://github.com/cobbler/cobbler/wiki/Dns-management
+
+[dns]
+module = managers.bind
+
+# dhcp:
+# chooses the DHCP management engine if manage_dhcp is enabled
+# in /etc/cobbler/settings, which is off by default.
+# choices:
+# managers.isc -- default, uses ISC dhcpd
+# managers.dnsmasq -- uses dnsmasq, also must select dnsmasq for dns above
+# NOTE: more configuration is still required in /etc/cobbler
+# for more information:
+# https://github.com/cobbler/cobbler/wiki/Dhcp-management
+
+[dhcp]
+module = managers.isc
+
+# tftpd:
+# chooses the TFTP management engine if manage_tftp is enabled
+# in /etc/cobbler/settings, which is ON by default.
+#
+# choices:
+# managers.in_tftpd -- default, uses the system's tftp server
+# managers.tftpd_py -- uses cobbler's tftp server
+#
+
+[tftpd]
+module = managers.in_tftpd
+
+#--------------------------------------------------
+EOM
+
+print_help() {
+ echo "$(basename "$0") [-h] [-r] [-s] [-n] [-f absolute_filepath]"
+ echo "Script to migrate a Cobbler 3.0.0 or prior \"modules.conf\" to a 3.0.1 \"modules.conf\""
+ echo ""
+ echo "Usage:"
+ echo " One of the following arguments must be choosen [rsn] additionally you must hand over the absolute path of"
+ echo " the \"modules.conf\""
+ echo ""
+ echo "Options:"
+ echo " -h show this help text"
+ echo " -r Use the regex replace. I recommend this if you have custom modules and also have rearranged them."
+ echo " WARNING: This also alters the documentation in the settings file which is wrong to the current point"
+ echo " in time."
+ echo " -s Use the static replace. I recomment this if you use the default modules."
+ echo " -n Make a new start with Cobbler and just replace the whole settings file."
+ echo " -f Path to the \"modules.conf\""
+}
+
+regex_conversion() {
+ sed -i -e 's/authn_/authentication\./g' $path_modules_conf
+ sed -i -e 's/authz_/authorization\./g' $path_modules_conf
+ sed -i -e 's/manage_/managers\./g' $path_modules_conf
+}
+
+static_conversion() {
+ sed -i -e 's/authn_denyall/authentication.denyall/g' $path_modules_conf
+ sed -i -e 's/authn_configfile/authentication.configfile/g' $path_modules_conf
+ sed -i -e 's/authn_passthru/authentication.passthru/g' $path_modules_conf
+ sed -i -e 's/authn_ldap/authentication.ldap/g' $path_modules_conf
+ sed -i -e 's/authn_spacewalk/authentication.spacewalk/g' $path_modules_conf
+ sed -i -e 's/authn_pam/authentication.pam/g' $path_modules_conf
+ sed -i -e 's/authn_testing/authentication.testing/g' $path_modules_conf
+ sed -i -e 's/authz_allowall/authorization.allowall/g' $path_modules_conf
+ sed -i -e 's/authz_ownership/authorization.ownership/g' $path_modules_conf
+ sed -i -e 's/manage_bind/managers.bind/g' $path_modules_conf
+ sed -i -e 's/manage_dnsmasq/managers.dnsmasq/g' $path_modules_conf
+ sed -i -e 's/manage_ndjbdns/managers.ndjbdns/g' $path_modules_conf
+ sed -i -e 's/manage_isc/managers.isc/g' $path_modules_conf
+ sed -i -e 's/manage_dnsmasq/managers.dnsmasq/g' $path_modules_conf
+ sed -i -e 's/manage_in_tftpd/managers.in_tftpd/g' $path_modules_conf
+ sed -i -e 's/manage_tftpd_py/managers.tftpd_py/g' $path_modules_conf
+}
+
+replace_modules_conf() {
+ rm $path_modules_conf
+ touch $path_modules_conf
+ echo "$default_file" >$path_modules_conf
+}
+
+run() {
+ if $flag_regex_conversion; then
+ regex_conversion
+ elif $flag_static_conversion; then
+ static_conversion
+ elif $flag_replace_conversion; then
+ replace_modules_conf
+ fi
+}
+
+wrong_options() {
+ echo "Error:"
+ echo "You selected the wrong number of flags. Please read the usage!"
+ echo ""
+ print_help
+}
+
+validate_options() {
+ if $flag_regex_conversion && $flag_static_conversion && $flag_replace_conversion; then
+ print_help
+ exit 1
+ elif $flag_regex_conversion && $flag_static_conversion; then
+ print_help
+ exit 1
+ elif $flag_regex_conversion && $flag_replace_conversion; then
+ print_help
+ exit 1
+ fi
+}
+
+parse_options() {
+ while getopts 'hrsnf:' option; do
+ case "$option" in
+ h)
+ print_help
+ exit
+ ;;
+ r)
+ flag_regex_conversion=true
+ ;;
+ s)
+ flag_static_conversion=true
+ ;;
+ n)
+ flag_replace_conversion=true
+ ;;
+ f)
+ path_modules_conf=$OPTARG
+ ;;
+ :)
+ printf "Error:"
+ printf "Missing argument for -%f\n" "$OPTARG" >&2
+ print_help
+ exit 1
+ ;;
+ \?)
+ printf "Error:"
+ printf "Illegal option: -%s\n" "$OPTARG" >&2
+ echo ""
+ print_help
+ exit 1
+ ;;
+ esac
+ done
+ shift $((OPTIND - 1))
+}
+
+# Main routine
+parse_options "$@"
+validate_options
+run