#!/bin/bash

#############################################################################
# globals section
#############################################################################
K3_FULLPATH=`realpath $0`
K3WRK_DIR=`dirname ${K3_FULLPATH}`
echo "Working directory = ${K3WRK_DIR}"

ARCH="x86_64"
EDITION="astra-mobile"
CODENAME="1.7_x86-64"
TYPE=""
MACHINE_TYPE=""

if [ -e /etc/astra/machine_type ]; then
    MACHINE_TYPE=`cat /etc/astra/machine_type | head -1 | tr -s ' '`
    echo "astra-mobile: detected machine type $MACHINE_TYPE"
fi

set -u

#############################################################################
# apt & version section
#############################################################################
ENV_NONINTERACTIVE="DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true"
APT_OPTIONS="-o Acquire::Check-Valid-Until=false -o Acquire::Check-Date=false -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold"

echo "evbug" | sudo tee -a /etc/modules-load.d/blacklist.conf >/dev/null
echo "blacklist evbug" | sudo tee -a /etc/modprobe.d/blacklist.conf >/dev/null

env $ENV_NONINTERACTIVE apt-get -y purge cups-browsed
env $ENV_NONINTERACTIVE apt -y purge fly-videocamera guvcview pavucontrol
env $ENV_NONINTERACTIVE apt-get $APT_OPTIONS -y purge dbus-user-session
env $ENV_NONINTERACTIVE apt-get $APT_OPTIONS -y purge k3b k3b-i18n kde-spectacle
env $ENV_NONINTERACTIVE apt-get $APT_OPTIONS -y purge thunderbird-locale-ru
env $ENV_NONINTERACTIVE apt-get $APT_OPTIONS -y purge thunderbird
env $ENV_NONINTERACTIVE apt-get $APT_OPTIONS -y purge synaptic 
env $ENV_NONINTERACTIVE apt-get $APT_OPTIONS -y purge kmix
env $ENV_NONINTERACTIVE apt-get $APT_OPTIONS -y purge ntp
env $ENV_NONINTERACTIVE apt-get $APT_OPTIONS -y purge fly-run
env $ENV_NONINTERACTIVE apt-get $APT_OPTIONS -y purge fly-admin-driver fly-admin-marker kinfocenter gparted
env $ENV_NONINTERACTIVE apt-get $APT_OPTIONS -y purge fly-print-station fly-admin-kiosk fly-admin-network fly-admin-usbip fly-admin-usbip-helper

#############################################################################
# fly-dm section
#############################################################################
# BT-16021
[[ -f /etc/X11/fly-dm/fly-dmrc ]] && sed '/^#ServerTimeout=/aServerTimeout=300' -i /etc/X11/fly-dm/fly-dmrc

#Настройка таймаута suspend на экране логина
if grep -q "SuspendTimeout" /etc/X11/fly-dm/fly-dmrc; then
    sed -i 's/.*SuspendTimeout.*/SuspendTimeout=10/' /etc/X11/fly-dm/fly-dmrc
else
    echo "SuspendTimeout=10" >> /etc/X11/fly-dm/fly-dmrc
fi

#del x11 sessions
rm -f /usr/share/xsessions/fly.desktop
rm -f /usr/share/xsessions/plasma.desktop
rm -f /usr/share/xsessions/fly-tablet.desktop

#del failsafe session
rm -f /usr/share/fly-dm/sessions/failsafe.desktop

#del wayland kde session
rm -f /usr/share/wayland-sessions/plasmawayland.desktop
rm -f /usr/share/wayland-sessions/weston.desktop

#set default session
[[ -f /etc/X11/fly-dm/fly-dmrc ]] && sed -i 's/^#RandomDevice=.*/DefaultSession=plasma-mobile/' /etc/X11/fly-dm/fly-dmrc
[[ -f /etc/X11/fly-dm/fly-dmrc ]] && sed -i 's/DefaultSession=fly//' /etc/X11/fly-dm/fly-dmrc

#disable auto show fly-vkbd in fly-dm
[[ -f /etc/X11/fly-dm/fly-dmrc ]] && sed -i 's/^ShowVkbd=.*/ShowVkbd=false/' /etc/X11/fly-dm/fly-dmrc

#xdmcp off
[[ -f /etc/X11/fly-dm/fly-dmrc ]] && sed -i 's/^Enable=true/Enable=false/' /etc/X11/fly-dm/fly-dmrc

#remove dpi
rm -f /etc/X11/fly-dm/dpi

#suspend in fly-dm
#sed -i "s|SuspendTimeout=0|SuspendTimeout=10|" /etc/X11/fly-dm/fly-dmrc

# disable fly-dm for improve OEM mode perfomance (BT-37694):
if [ -e /var/cache/astra-mobile/start_setup_wizard ]; then
    /sbin/astra-mobile-oem-enable-getty-mode
fi

if ! egrep -q "=[14]\.8_" /etc/os-release ; then
    # fix problem with kscreend backend launching (BT-43565, BT-43147):
    sed -i "/Name=kscreend/a After=kscreen_backend" /usr/share/fly-dm/autostart/greeter/kscreend_autostart.desktop
fi

deb_target_arch=""
dpkg_arch=`dpkg --print-architecture`
if [[ "$dpkg_arch" == *"arm64"* ]]; then
    deb_target_arch="aarch64-linux-gnu"
elif [[ "$dpkg_arch" == *"amd64"* ]]; then
    deb_target_arch="x86_64-linux-gnu"
fi

cat > /usr/share/fly-dm/autostart/greeter/kscreen_backend.desktop << EOF
[Desktop Entry]
Name=kscreen_backend
Exec=/usr/lib/${deb_target_arch}/libexec/kf5/kscreen_backend_launcher
EOF

#############################################################################
# systemd section
#############################################################################
#Установка suspend на кнопку включения на экране логина
if grep -q "HandlePowerKey" /etc/systemd/logind.conf; then
    sed -i 's/.*HandlePowerKey.*/HandlePowerKey=suspend/' /etc/systemd/logind.conf
else
    echo "HandlePowerKey=suspend" >> /etc/systemd/logind.conf
fi

#Отключение hybrid-sleep.
if [ -e /etc/systemd/system/suspend-to-hibernate.service ]; then
    rm -f /etc/systemd/system/suspend-to-hibernate.service
fi

#############################################################################
# sound (pulseaudio/alssa) section
#############################################################################
#Переключение звука на внешнее звуковое устойство
if ! grep -q "module-switch-on-connect" /etc/pulse/default.pa; then
    echo -e "\n# automatically switch to newly-connected devices\nload-module module-switch-on-connect" >> /etc/pulse/default.pa
fi

# disable starting pulseaudio by fly-dm
setfacl -m u:fly-dm:r /usr/bin/pulseaudio

# fix pipewire (BT-35585)
rm -rf /etc/systemd/user/pipewire*
rm -rf /etc/systemd/user/*/pipewire*

# disable module needed only in fly desktop
sed -i "s/load-module module-mute-on-lock-screen//" /etc/pulse/default.pa

#############################################################################
# bluetooth section
#############################################################################
#bt reload on session start(reboot bt lock) (desktop & reload-bluetooth moved to package installing dir)
sed -i "/astra-admin/a ALL ALL=NOPASSWD: /usr/bin/reload-bluetooth" /etc/sudoers

if [[ -f /usr/share/dbus-1/services/org.bluez.obex.service ]] ; then
    sed -i 's|\@libexecdir\@|/usr/libexec/bluetooth|g' /usr/share/dbus-1/services/org.bluez.obex.service
fi

#############################################################################
# /opt/astra-mobile/menu & desktop files section
#############################################################################
#TODOREMOVE
rm -f /usr/share/applications/debian-xterm.desktop
rm -f /usr/share/applications/debian-uxterm.desktop
rm -f /usr/share/applications/org.kde.plasma.emojier.desktop
rm -f /usr/share/applications/vim.desktop
rm -f /usr/share/applications/libreoffice-draw.desktop
rm -f /usr/share/applications/libreoffice-math.desktop
rm -f /usr/share/applications/libreoffice-startcenter.desktop
rm -f /usr/share/applications/afick.desktop
rm -f /usr/share/applications/org.kde.mobile.qmlkonsole.desktop

sed -i "s/Icon=fly-admin-autostart/Icon=preferences-other/" /usr/share/applications/fly-admin-autostart.desktop

sed -i "s/\/usr\/bin\\/vlc -f/\/usr\/bin\/vlc/" /usr/share/applications/vlc.desktop
sed -i "s/\/usr\/bin\\/vlc/\/usr\/bin\/vlc -f/" /usr/share/applications/vlc.desktop
sed -i "s/TryExec=\/usr\/bin\\/vlc -f/TryExec=\/usr\/bin\/vlc/" /usr/share/applications/vlc.desktop

#############################################################################
# qml section
#############################################################################
#no osd for new monitors
if [[ -f /usr/bin/start-plasmashell ]] ; then
    sed -i "/QCoreApplication.quit/i qdbus org.kde.kscreen.osdService /org/kde/kscreen/osdService org.kde.kscreen.osdService.hideOsd" /usr/bin/start-plasmashell
fi

#sudis screenlock
if [[ -f /usr/share/plasma/look-and-feel/org.kde.plasma.phone/contents/lockscreen/LockScreenUi.qml ]] ; then
    sed -i "s/authenticator.respond(password)/authenticator.respond(passwd)/" /usr/share/plasma/look-and-feel/org.kde.plasma.phone/contents/lockscreen/LockScreenUi.qml
fi

#############################################################################
# misc section
#############################################################################
#console add terminus-fonts
if ! egrep -q "=[14]\.8_" /etc/os-release ; then
echo "setupcon" >> /lib/console-setup/console-setup.sh
systemctl enable console-setup.service
fi
#echo 'FRAMEBUFFER=Y' >> /etc/initramfs-tools/initramfs.conf

# BT-15290
     sed -e '/^#EXTRA_GROUPS=/s/#//' \
	 -e '/^#ADD_EXTRA_GROUPS=1/s/#//' \
	 -i /etc/adduser.conf

#polkit to disable root pass question
cat > /etc/polkit-1/localauthority.conf.d/99-astra-admin.conf << EOF
[Configuration]
AdminIdentities=unix-group:astra-admin
EOF

#soft disable parsec module(plasma-mobile)
if ! egrep -q "=[14]\.8_" /etc/os-release && [[ -f /sbin/pdp-init-fs ]] ; then
    sed -i 's/.*dev.*input.*//' /sbin/pdp-init-fs
    sed -i 's/.*dev.*sd.*//' /sbin/pdp-init-fs
    sed -i 's/.*dev.*hd.*//' /sbin/pdp-init-fs
    sed -i 's/.*dev.*vd.*//' /sbin/pdp-init-fs
    sed -i 's/.*dev.*mmc.*//' /sbin/pdp-init-fs
    sed -i 's/.*dev.*nvme.*//' /sbin/pdp-init-fs
    sed -i 's/.*dev.*mapper.*//' /sbin/pdp-init-fs
    sed -i 's/.*dev.*dm.*//' /sbin/pdp-init-fs
fi

rm -f /usr/lib/udev/rules.d/99-astra-input-labeling.rules

echo "alias fs-cifs cifs" > /etc/modprobe.d/parsec-cifs.conf

#office for fingers
[[ -f /usr/bin/soffice ]] && sed -i "s|SAL_USE_VCLPLUGIN=kf5|SAL_USE_VCLPLUGIN=gtk3|" /usr/bin/soffice
[[ -f /usr/lib/libreoffice/program/libvclplug_kf5lo.so ]] && rm -f /usr/lib/libreoffice/program/libvclplug_kf5lo.so

#index icon
ln -sf /usr/share/icons/breeze/places/16/folder-picture.svg /usr/share/icons/breeze/places/symbolic/folder-photo.svg

#disable grub splash and boot msgs
rm -rf /usr/share/images/desktop-base
sed -i '/Loading Linux/d' /etc/grub.d/10_linux
sed -i '/Loading initial ramdisk/d' /etc/grub.d/10_linux

#default groups
sed -i 's/EXTRA_GROUPS.*/EXTRA_GROUPS=\"plugdev netdev lpadmin scanner fuse weston-launch dialout cdrom floppy audio video render plugdev users kvm libvirt libvirt-qemu vboxusers\"/' /etc/adduser.conf

#fix notifications showing (BT-35276)
[ -e /usr/bin/qtnotifydaemon ] && mv -f /usr/bin/qtnotifydaemon /usr/bin/qtnotifydaemon_

#temporary fix for afick (BT-42351)
sed -i "s/\/etc\/fstab/#\/etc\/fstab/" /etc/afick.conf
if grep -q "/boot GOST" /etc/afick.conf; then
    sed -i "s/\/boot GOST/\/boot p+d+n+u+g+s+b+gost+m+e+t\n\/boot\/grub\/grubenv p+d+n+u+g+s+b+gost+e+t/" /etc/afick.conf
else
    if ! grep -q "/boot/grub/grubenv p+d+n+u+g+s+b+gost+e+t" /etc/afick.conf; then
        sed -i "s/\/boot p+d+n+u+g+s+b+gost+m+e+t/\/boot p+d+n+u+g+s+b+gost+m+e+t\n\/boot\/grub\/grubenv p+d+n+u+g+s+b+gost+e+t/" /etc/afick.conf
    fi
fi

#fix for setting the mobile operating mode of chromium
rm -f /etc/chromium/master_preferences
ln -s /etc/chromium/master_preferences_mobile /etc/chromium/master_preferences
[ -e /usr/share/applications/chromium.desktop_mobile ] && cp -f /usr/share/applications/chromium.desktop_mobile /usr/share/applications/chromium.desktop
[ -e /usr/share/applications/chromium-gost.desktop_mobile ] && cp -f /usr/share/applications/chromium-gost.desktop_mobile /usr/share/applications/chromium-gost.desktop

mkdir -p /opt/astra-mobile/menu
cp -f /usr/share/applications/chromium.desktop /opt/astra-mobile/menu/

chromium_gost="/usr/share/applications/chromium-gost.desktop"
[ -e $chromium_gost ] && cp -f $chromium_gost /opt/astra-mobile/menu/

# remove systemsettings desktop file
rm -f /usr/share/applications/systemsettings.desktop

# remove default toolbox from desktop shell
sed -i "s/ToolBox=.*/ToolBox=null/i" /usr/share/plasma/shells/org.kde.plasma.desktop/contents/defaults

# disable cpupower-gui service
systemctl disable cpupower-gui.service
