github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/acceptancetests/repository/charms/mediawiki/hooks/config-changed (about)

     1  #!/bin/sh
     2  set -eux
     3  
     4  status-set maintenance "Configuring Mediawiki"
     5  
     6  wikiname=`config-get name`
     7  skin=`config-get skin`
     8  logo=`config-get logo`
     9  admins=`config-get admins`
    10  server_address=`config-get server_address`
    11  
    12  if [ "`config-get --format json use_suffix`" = "true" ] ; then
    13      # Change root from /usr/share/mediawiki /to var/www
    14      imagepath="/var/www/images"
    15      scriptpath="/mediawiki"
    16  else
    17      # Change root from /var/www to /usr/share/mediawiki
    18      imagepath="/usr/share/mediawiki/images"
    19      scriptpath=""
    20  fi
    21  
    22  if [ -n "$logo" ] ; then
    23      wgLogo=$(
    24      dldir=`mktemp -d logodir.XXXXXXXX`
    25      cd $dldir
    26      if wget $logo ; then
    27          file=`ls`
    28          mkdir -p $imagepath
    29          mv $file $imagepath
    30          chmod a+rx $imagepath
    31          chgrp www-data $imagepath/$file
    32          chmod g+r $imagepath/$file
    33  
    34          echo "/images/$file"
    35      fi
    36      cd /
    37      rm -rf $dldir
    38      )
    39  fi
    40  
    41  new_file=`mktemp /etc/mediawiki/config-settings.XXXXXXXXX.php`
    42  
    43  if [ -n "$logo" ] ; then
    44      wgLogo="'$wgLogo'"
    45  else
    46      wgLogo="null"
    47  fi
    48  
    49  cat > $new_file <<EOF
    50  <?php
    51  \$wgSitename="${wikiname}";
    52  \$wgDefaultSkin="${skin}";
    53  \$wgScriptPath="${scriptpath}";
    54  \$wgLogo=$wgLogo;
    55  EOF
    56  
    57  if [ -n "$server_address" ] ; then
    58      echo "\$wgServer=\"${server_address}\";" >> $new_file
    59  fi
    60  
    61  if [ "`config-get --format json debug`" = "true" ] ; then
    62      cat >> $new_file <<EOF
    63  \$wgDebugLogFile = "$CHARM_DIR/debug.log";
    64  \$wgDebugComments = true;
    65  \$wgShowExceptionDetails = true;
    66  \$wgShowSQLErrors = true;
    67  \$wgDebugDumpSql = true;
    68  \$wgShowDBErrorBacktrace = true;
    69  EOF
    70  fi
    71  
    72  chmod 0640 $new_file
    73  chgrp www-data $new_file
    74  
    75  cfile=/etc/mediawiki/config-settings.php
    76  [ ! -f $cfile ] || mv -f $cfile $cfile.old
    77  mv $new_file $cfile
    78  [ ! -f $cfile.old ] || rm $cfile.old
    79  
    80  cd /usr/share/mediawiki/maintenance
    81  
    82  #added to prevent failure when no db relationship exists
    83  if [ -f /etc/mediawiki/LocalSettings.php ]; then
    84      for admin in $admins ; do
    85          user=`echo $admin | cut -d: -f1`
    86          pass=`echo $admin | cut -d: -f2`
    87          # createAndPromote.php will exit non-zero if the user already exists.
    88          # Since this hook is set -e, it would exit immediately unless we used
    89          # ' || true' at the end. This lets us properly inform the user of the
    90          # error, versus having a failed config-changed hook with no message.
    91          user_count=`php createAndPromote.php --conf /etc/mediawiki/LocalSettings.php $user $pass 2>&1 | grep -c "account exists" || true`
    92          if [ $user_count -gt 0 ] ; then
    93              echo "ERROR: $user account already exists"
    94              exit 1
    95          fi
    96      done
    97  fi
    98  
    99  # Make sure any use_suffix changes are applied
   100  service apache2 reload
   101  
   102  application-version-set $(dpkg -s mediawiki | grep '^Version:' | awk -F':' '{print $3}' | cut -d+ -f1)
   103  
   104  if [ -f "${CHARM_DIR}/db-connected" ]; then
   105      status-set active "Ready"
   106  else
   107      status-set blocked "Database required"
   108  fi
   109  
   110  $CHARM_DIR/hooks/start