
IRCD_UNAME="elemental-ircd"
IRCD_UID="315"
IRCD_GID="315"

config() {
  NEW="$1"
  OLD="$(dirname $NEW)/$(basename $NEW .new)"
  # If there's no config file by that name, mv it over:
  if [ ! -r $OLD ]; then
    mv $NEW $OLD
  elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then # toss the redundant copy
    rm $NEW
  fi
  # Otherwise, we leave the .new copy for the admin to consider...
}

preserve_perms() {
  NEW="$1"
  OLD="$(dirname $NEW)/$(basename $NEW .new)"
  if [ -e $OLD ]; then
    cp -a $OLD ${NEW}.incoming
    cat $NEW > ${NEW}.incoming
    mv ${NEW}.incoming $NEW
  fi
  config $NEW
}

preserve_perms etc/rc.d/rc.elemental-ircd.new
config etc/logrotate.d/elemental-ircd.new
config etc/elemental-ircd/ircd.motd.new

# Set up user/group permissions
groupadd -g $IRCD_GID $IRCD_UNAME 2>/dev/null
useradd -u $IRCD_UID -g $IRCD_GID -d var/lib/elemental-ircd $IRCD_UNAME 2>/dev/null
chown $IRCD_UID:$IRCD_GID var/run/elemental-ircd
chown $IRCD_UID:$IRCD_GID var/log/elemental-ircd
chown $IRCD_UID:$IRCD_GID var/lib/elemental-ircd
chown $IRCD_UID:$IRCD_GID var/state/elemental-ircd
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf trace )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/trace trace )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf quit )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/quit quit )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf map )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/map map )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf away )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/away away )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf whowas )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/whowas whowas )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf user )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/user user )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf credits )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/credits credits )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf whois )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/whois whois )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf error )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/error error )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf time )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/time time )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf names )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/names names )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf list )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/list list )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf cprivmsg )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/cprivmsg cprivmsg )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf users )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/users users )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf admin )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/admin admin )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf join )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/join join )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf knock )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/knock knock )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf nick )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/nick nick )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf part )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/part part )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf userhost )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/userhost userhost )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf oper )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/oper oper )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf who )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/who who )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf version )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/version version )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf ison )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/ison ison )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf extban )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/extban extban )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf lusers )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/lusers lusers )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf pass )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/pass pass )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf pong )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/pong pong )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf links )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/links links )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf ping )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/ping ping )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf cnotice )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/cnotice cnotice )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf accept )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/accept accept )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf chantrace )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/chantrace chantrace )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf findforwards )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/findforwards findforwards )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf challenge )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/challenge challenge )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf identify )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/identify identify )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf kick )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/kick kick )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf mkpasswd )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/mkpasswd mkpasswd )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf invite )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/invite invite )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf help )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/help help )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf topic )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/topic topic )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf cycle )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/cycle cycle )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; rm -rf motd )
( cd usr/doc/elemental-ircd-6.6.3/help/users ; ln -sf /usr/doc/elemental-ircd-6.6.3/help/opers/motd motd )
