#!/bin/sh
#
# Copyright (c) 2009 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# This script is part of the vivaldi package.
#
# It creates the repository configuration file for package updates, since
# we cannot do this during the vivaldi installation since the repository
# is locked.
#
# This functionality can be controlled by creating the $DEFAULTS_FILE and
# setting "repo_add_once" to "true" or "false" as desired. An empty
# $DEFAULTS_FILE is the same as setting the value to "false".

# System-wide package configuration.
DEFAULTS_FILE="/etc/default/vivaldi"

# sources.list setting for vivaldi updates.
REPOCONFIG="http://repo.vivaldi.com/archive/rpm"
REPOCONFIGREGEX=""

# Remove expired repository/package signing key (C3401E12), if present.
remove_old_rpm_key() {
  rpm -q gpg-pubkey-c3401e12 >/dev/null 2>&1
  if [ "$?" -eq "0" ]; then
    rpm -e gpg-pubkey-c3401e12 >/dev/null 2>&1
  fi
}

# Install the repository/package signing key (EFB20B23), if it isn't already.
install_rpm_key() {
  # Check to see if the key already exists.
  rpm -q gpg-pubkey-efb20b23 >/dev/null 2>&1
  if [ "$?" -eq "0" ]; then
    # Keys already exist
    return 0
  fi

  # RPM on Mandriva 2009 is dumb and does not understand "rpm --import -"
  TMPKEY=$(mktemp /tmp/vivaldi.sig.XXXXXX)
  if [ -n "$TMPKEY" ]; then
    cat > "$TMPKEY" <<KEYDATA
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1

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
=/TZJ
-----END PGP PUBLIC KEY BLOCK-----
KEYDATA
    rpm --import "$TMPKEY"
    rc=$?
    rm -f "$TMPKEY"
    if [ "$rc" -eq "0" ]; then
      return 0
    fi
  fi
  return 1
}

# Install another key (4A3AA3D6), if it isn't already, for future use.
install_future_rpm_key() {
  # Check to see if the key already exists.
  rpm -q gpg-pubkey-a43aa3d6 >/dev/null 2>&1
  if [ "$?" -eq "0" ]; then
    # Keys already exist
    return 0
  fi

  # RPM on Mandriva 2009 is dumb and does not understand "rpm --import -"
  TMPKEY=$(mktemp /tmp/vivaldi.sig.XXXXXX)
  if [ -n "$TMPKEY" ]; then
    cat > "$TMPKEY" <<KEYDATA
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1

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
=plXO
-----END PGP PUBLIC KEY BLOCK-----
KEYDATA
    rpm --import "$TMPKEY"
    rc=$?
    rm -f "$TMPKEY"
    if [ "$rc" -eq "0" ]; then
      return 0
    fi
  fi
  return 1
}

determine_rpm_package_manager() {
  local RELEASE
  LSB_RELEASE="$(which lsb_release 2> /dev/null)"
  if [ -x "$LSB_RELEASE" ]; then
    RELEASE=$(lsb_release -i 2> /dev/null | sed 's/:\t/:/' | cut -d ':' -f 2-)
    case $RELEASE in
    "Fedora"|"Amazon")
      PACKAGEMANAGERS=(yum)
      ;;
    "Mageia")
      PACKAGEMANAGERS=(urpmi)
      if [ "$(lsb_release -rs 2> /dev/null)" -ge "6" ]; then
        PACKAGEMANAGERS=(yum urpmi)
      fi
      ;;
    "MandrivaLinux")
      PACKAGEMANAGERS=(urpmi)
      ;;
    "SUSE LINUX"|"openSUSE")
      PACKAGEMANAGERS=(yast)
      ;;
    esac
  fi

  if [ "$PACKAGEMANAGERS" ]; then
    return
  fi

  # Fallback methods that are probably unnecessary on modern systems.
  if [ -f "/etc/lsb-release" ]; then
    # file missing on Fedora, does not contain DISTRIB_ID on OpenSUSE.
    eval $(sed -e '/DISTRIB_ID/!d' /etc/lsb-release)
    case $DISTRIB_ID in
    MandrivaLinux)
      PACKAGEMANAGERS=(urpmi)
      ;;
    esac
  fi

  if [ "$PACKAGEMANAGERS" ]; then
    return
  fi

  if [ -f "/etc/fedora-release" ] || [ -f "/etc/redhat-release" ]; then
    PACKAGEMANAGERS=(yum)
  elif [ -f "/etc/system-release" ] && grep -Fq "Amazon Linux" "/etc/system-release"; then
    PACKAGEMANAGERS=(yum)
  elif [ -f "/etc/SuSE-release" ]; then
    PACKAGEMANAGERS=(yast)
  elif [ -f "/etc/mandriva-release" ]; then
    PACKAGEMANAGERS=(urpmi)
  fi
}

DEFAULT_ARCH="x86_64"
YUM_REPO_FILE="/etc/yum.repos.d/vivaldi.repo"
ZYPPER_REPO_FILE="/etc/zypp/repos.d/vivaldi.repo"
URPMI_REPO_FILE="/etc/urpmi/urpmi.cfg"

install_yum() {
  install_rpm_key

  if [ ! "$REPOCONFIG" ]; then
    return 0
  fi

  if [ -d "/etc/yum.repos.d" ]; then
cat > "$YUM_REPO_FILE" << REPOCONTENT
[vivaldi]
name=vivaldi
baseurl=$REPOCONFIG/$DEFAULT_ARCH
enabled=1
gpgcheck=1
gpgkey=http://repo.vivaldi.com/archive/linux_signing_key.pub
REPOCONTENT
  fi
}

# This is called by the cron job, rather than in the RPM postinstall.
# We cannot do this during the install when urpmi is running due to
# database locking. We also need to enable the repository, and we can
# only do that while we are online.
# see: https://qa.mandriva.com/show_bug.cgi?id=31893
configure_urpmi() {
  if [ ! "$REPOCONFIG" ]; then
    return 0
  fi

  urpmq --list-media | grep -q -s "^vivaldi$"
  if [ "$?" -eq "0" ]; then
    # Repository already configured
    return 0
  fi
  urpmi.addmedia --update \
    "vivaldi" "$REPOCONFIG/$DEFAULT_ARCH"
}

install_urpmi() {
  # urpmi not smart enough to pull media_info/pubkey from the repository?
  install_rpm_key

  # Defer urpmi.addmedia to configure_urpmi() in the cron job.
  # See comment there.
  #
  # urpmi.addmedia --update \
  #   "vivaldi" "$REPOCONFIG/$DEFAULT_ARCH"
}

install_yast() {
  if [ ! "$REPOCONFIG" ]; then
    return 0
  fi

  # We defer adding the key to later. See comment in the cron job.

  # Ideally, we would run: zypper addrepo -t YUM -f \
  # "$REPOCONFIG/$DEFAULT_ARCH" "vivaldi"
  # but that does not work when zypper is running.
  if [ -d "/etc/zypp/repos.d" ]; then
cat > "$ZYPPER_REPO_FILE" << REPOCONTENT
[vivaldi]
name=vivaldi
enabled=1
autorefresh=1
baseurl=$REPOCONFIG/$DEFAULT_ARCH
type=rpm-md
keeppackages=0
REPOCONTENT
  fi
}

# Check if the automatic repository configuration is done, so we know when to
# stop trying.
verify_install() {
  # It's probably enough to see that the repo configs have been created. If they
  # aren't configured properly, update_bad_repo should catch that when it's run.
  case $1 in
  "yum")
    [ -f "$YUM_REPO_FILE" ]
    ;;
  "yast")
    [ -f "$ZYPPER_REPO_FILE" ]
    ;;
  "urpmi")
    urpmq --list-url | grep -q -s "\bvivaldi\b"
    ;;
  esac
}

# Update the Google repository if it's not set correctly.
update_bad_repo() {
  if [ ! "$REPOCONFIG" ]; then
    return 0
  fi

  determine_rpm_package_manager

  for PACKAGEMANAGER in ${PACKAGEMANAGERS[*]}
  do
    case $PACKAGEMANAGER in
    "yum")
      update_repo_file "$YUM_REPO_FILE"
      ;;
    "yast")
      update_repo_file "$ZYPPER_REPO_FILE"
      ;;
    "urpmi")
      update_urpmi_cfg
      ;;
    esac
  done
}

update_repo_file() {
  REPO_FILE="$1"

  # Don't do anything if the file isn't there, since that probably means the
  # user disabled it.
  if [ ! -r "$REPO_FILE" ]; then
    return 0
  fi

  # Check if the correct repository configuration is in there.
  REPOMATCH=$(grep "^baseurl=$REPOCONFIG/$DEFAULT_ARCH" "$REPO_FILE" \
    2>/dev/null)
  # If it's there, nothing to do
  if [ "$REPOMATCH" ]; then
    return 0
  fi

  # Check if it's there but disabled by commenting out (as opposed to using the
  # 'enabled' setting).
  MATCH_DISABLED=$(grep "^[[:space:]]*#.*baseurl=$REPOCONFIG/$DEFAULT_ARCH" \
    "$REPO_FILE" 2>/dev/null)
  if [ "$MATCH_DISABLED" ]; then
    # It's OK for it to be disabled, as long as nothing bogus is enabled in its
    # place.
    ACTIVECONFIGS=$(grep "^baseurl=.*" "$REPO_FILE" 2>/dev/null)
    if [ ! "$ACTIVECONFIGS" ]; then
      return 0
    fi
  fi

  # If we get here, the correct repository wasn't found, or something else is
  # active, so fix it. This assumes there is a 'baseurl' setting, but if not,
  # then that's just another way of disabling, so we won't try to add it.
  sed -i -e "s,^baseurl=.*,baseurl=$REPOCONFIG/$DEFAULT_ARCH," "$REPO_FILE"
}

update_urpmi_cfg() {
  REPOCFG=$(urpmq --list-url | grep "\bvivaldi\b")
  if [ ! "$REPOCFG" ]; then
    # Don't do anything if the repo isn't there, since that probably means the
    # user deleted it.
    return 0
  fi

  # See if it's the right repo URL
  REPOMATCH=$(echo "$REPOCFG" | grep "\b$REPOCONFIG/$DEFAULT_ARCH\b")
  # If so, nothing to do
  if [ "$REPOMATCH" ]; then
    return 0
  fi

  # Looks like it's the wrong URL, so recreate it.
  urpmi.removemedia "vivaldi" && \
    urpmi.addmedia --update "vivaldi" "$REPOCONFIG/$DEFAULT_ARCH"
}

# We only remove the repository configuration during a purge. Since RPM has
# no equivalent to dpkg --purge, the code below is actually never used. We
# keep it only for reference purposes, should we ever need it.
#
#remove_yum() {
#  rm -f "$YUM_REPO_FILE"
#}
#
#remove_urpmi() {
#  # Ideally, we would run: urpmi.removemedia "vivaldi"
#  # but that does not work when urpmi is running.
#  # Sentinel comment text does not work either because urpmi.update removes
#  # all comments. So we just delete the entry that matches what we originally
#  # inserted. If such an entry was added manually, that's tough luck.
#  if [ -f "$URPMI_REPO_FILE" ]; then
#    sed -i '\_^vivaldi $REPOCONFIG/$DEFAULT_ARCH {$_,/^}$/d' "$URPMI_REPO_FILE"
#  fi
#}
#
#remove_yast() {
#  # Ideally, we would run: zypper removerepo "vivaldi"
#  # but that does not work when zypper is running.
#  rm -f /etc/zypp/repos.d/vivaldi.repo
#}

DEFAULT_ARCH="x86_64"

get_lib_dir() {
  if [ "$DEFAULT_ARCH" = "i386" ]; then
    LIBDIR=lib
  elif [ "$DEFAULT_ARCH" = "x86_64" ]; then
    LIBDIR=lib64
  else
    echo Unknown CPU Architecture: "$DEFAULT_ARCH"
    exit 1
  fi
}

## MAIN ##
DEFAULTS_FILE="/etc/default/vivaldi"
if [ -r "$DEFAULTS_FILE" ]; then
  . "$DEFAULTS_FILE"
fi

remove_old_rpm_key
install_rpm_key
install_future_rpm_key

if [ "$repo_add_once" = "true" ]; then
  determine_rpm_package_manager

  # Let's run through this for each supported package manager as detected...
  for PACKAGEMANAGER in ${PACKAGEMANAGERS[*]}
  do
    # The initial install happens in the post-install scripts, but there have been
    # reports of configuration problems, so just verify that everything looks
    # good, and if not, try to install again.
    verify_install $PACKAGEMANAGER
    if [ $? -ne 0 ]; then
      install_${PACKAGEMANAGER}
    fi

    # Now do any extra configuration that couldn't be done by post-install.
    case $PACKAGEMANAGER in
    "urpmi")
      # We need to configure urpmi after the install has finished.
      # See configure_urpmi() for details.
      configure_urpmi
      ;;
    esac
  done

  if [ $? -eq 0 ]; then
    # Do this for each supported package manager...
    for PACKAGEMANAGER in ${PACKAGEMANAGERS[*]}
    do
      # Before we quit auto-configuration, check that everything looks sane, since
      # part of this happened during package install and we don't have the return
      # value of that process.
      verify_install $PACKAGEMANAGER
      if [ $? -eq 0 ]; then
        sed -i -e 's/[[:space:]]*repo_add_once=.*/repo_add_once="false"/' \
          "$DEFAULTS_FILE"
      fi
    done
  fi
else
  update_bad_repo
fi
