+# update sarge urls in sources list
+fix_sarge_sources () {
+ local apt_sources='/etc/apt/sources.list'
+ local fixed_sources=$(mktemp /var/lib/carnet-upgrade/sources.list.XXXXXX)
+
+ # sarge (oldstable) was archived recently -> sources.list needs update
+ awk -v archive='http://archive.debian.org/debian' \
+ -v security='http://archive.debian.org/debian-security' \
+ '$3 == "sarge" && $2 ~ /[/]debian$/ { $2 = archive }
+ $3 == "sarge/updates" && $2 ~ /security\.debian\.org$/ { $2 = security }
+ { print }' $apt_sources > $fixed_sources
+
+ # did anything get updated
+ if ! cmp $apt_sources $fixed_sources >/dev/null; then
+ log "sources.list fixed to use archive.debian.org"
+
+ # backup current version
+ if [ ! -f "$apt_sources.$backup_ext.sarge" ]; then
+ cp -av $apt_sources "$apt_sources.$backup_ext.sarge"
+ fi
+
+ # install fixed version
+ cp -av $fixed_sources $apt_sources
+
+ # update the database
+ apt_update
+ fi
+
+ # delete temporary
+ rm -f $fixed_sources
+}
+
+# try to check if we are using the latest version of carnet-upgrade script
+check_my_version () {
+ local packages latest_version
+
+ packages=$(mktemp /var/lib/carnet-upgrade/Packages.XXXXXX)
+ if wget -q -O$packages $packages_uri; then
+ latest_version=$(sed -ne \
+ '/Package: carnet-upgrade/,/Description:/{ /Version: /s///p }' \
+ $packages)
+ rm -f $packages
+
+ if [ "$latest_version" ]; then
+ log "Running carnet-upgrade version is $version"
+ log "Latest carnet-upgrade version is $latest_version"
+ if dpkg --compare-versions "$version" lt "$latest_version"; then
+ check_upgrade " carnet-upgrade"
+ else log "Already using the latest carnet-upgrade version."; fi
+ else log "Failed to get latest version, skipping check."; fi
+ else log "Failed to download Packages file, skipping check."; fi
+
+ rm -f $packages
+}
+
+# if apache is installed make sure it's version 2
+check_apache_version () {
+
+ if pkg apache-cn && ! pkg apache2-cn; then
+ notice "
+Prije prelaska na Debian Lenny potrebno je napraviti nadogradnju sa Apache 1.3 na Apache 2.0.
+
+Pokrenite:
+ # apt-get update
+ # apt-get install apache2-cn
+
+Nakon toga ponovno pozovite ovu skriptu."
+ log "carnet-upgrade aborted, upgrade to apache2-cn needed."
+ exit 1
+ fi
+}
+
+# if grsec is installed make sure it is fresh
+check_grsec_kernel () {
+ local ver=`uname -r`
+
+ log "Kernel version: $ver"
+ if [ "$ver" = "${ver%-grsec}" ]; then
+ # not grsec variant
+ return 0
+ fi
+
+ if [ "$ver" = "${ver#2.6.2[4-9]}" ] || reboot_required; then
+ # kernel too old
+ notice "
+Prije prelaska na Debian Lenny potrebno je napraviti nadogradnju na najnoviji kernel.
+
+Pokrenite:
+ # apt-get update
+ # apt-get install kernel-2.6-cn
+ # reboot
+
+Nakon toga ponovno pozovite ovu skriptu."
+ log "carnet-upgrade aborted, kernel upgrade needed."
+ exit 1
+ fi
+}
+
+# check if the latest kernel is booted
+reboot_required () {
+ local default_kernel kernel_package running_release running_version
+
+ default_kernel=$( lilo -t -v 2>/dev/null \
+ | grep -B3 '[*]$' \
+ | sed -n -e '/^Boot image: / { s///p; q; }' )
+
+ if [ -z "$default_kernel" ]; then
+ log "Could not find default kernel"
+ return 1
+ fi
+
+ log "Default kernel image: $default_kernel"
+
+ if [ ! -e "$default_kernel" ]; then
+ log "Default kernel image doesn't exist!?"
+ return 1
+ fi
+
+ kernel_package=$( dpkg -S $default_kernel | cut -d: -f 1 )
+
+ if [ -z "$kernel_package" ]; then
+ log "Default kernel not installed from a package"
+ return 1
+ fi
+
+ log "Default kernel package: $kernel_package"
+
+ if [ "$kernel_package" != "kernel-2.6-cn" ]; then
+ log "Default kernel package is not kernel-2.6-cn"
+ return 1
+ fi
+
+ running_release=$( uname -r )
+ running_version=$( uname -v )
+ log "Running kernel: $running_release $running_version"
+
+ if grep -q "$running_release .* $running_version" $default_kernel; then
+ log "Latest kernel version is running."
+ return 1
+ else
+ log "Reboot to latest version required."
+ return 0
+ fi
+}
+