#!/bin/bash
#---------------------------------------------------------------#
# Polkit Creator creates a pkexec polkit file                   #
#---------------------------------------------------------------#
# This program is free software: you can redistribute           #
# it and/or modify it under the terms of the GNU General        #
# Public License as published by the Free Software Foundation,  #
# either version 3 of the License, or (at your option) any      #
# later version.                                                #
#---------------------------------------------------------------#

ICON="/usr/share/polkit-creator/icons/polkit-creator.png"
EICON='/usr/share/polkit-creator/icons/error.svg'
CONF="/tmp/polkit-creator"

if ! test -d $CONF ; then
mkdir -p $CONF
fi
# Default file is created on the user's desktop
DESKTOP=`echo $HOME/Desktop`
USERS=`grep $USER /etc/passwd | sed 's/:.*//'`
APP_ENTER=$(yad --title="Polkit Creator" \
--window-icon=$ICON --width=325 \
--center --image=$ICON \
--form "" --field="$A1" \
--button="About!/usr/share/polkit-creator/icons/about.svg:5" \
--button="Cancel!/usr/share/polkit-creator/icons/cancel.svg:1" \
--button="Save!/usr/share/polkit-creator/icons/save.svg:0" \
--text="Add the name of the application")
if [ $? = 1 ]; then
rm -rf /tmp/polkit-creator > /dev/null 2>&1
exit 0
else
`echo "$APP_ENTER" | sed 's|[|,]||g' > $CONF/.tmp1`
mv $CONF/.tmp1 $CONF/app
fi |
if [ "$?" = "5" ]; then
`yad --info \
--title="Polkit Creator" \
--window-icon="$ICON" \
--center \
--image="/usr/share/polkit-creator/icons/about.png" \
--width=300 \
--button="Cancel!/usr/share/polkit-creator/icons/cancel.svg:3"`
exec "/usr/bin/polkit-creator"
fi
# Adds the program name here
APP_NAME=`cat $CONF/app 2>/dev/null | awk 'NR==1{print $0}'`
progAdd="$APP_NAME"

if [ "$progAdd" == "" ];
then
   exit 0
 fi
if ! test -f $DESKTOP/org.pclinuxos."$progAdd".policy ; then
echo \
"<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE policyconfig PUBLIC
 '-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN'
 'http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd'>
<policyconfig>
  <vendor>"$progAdd"</vendor>
  <vendor_url>"$progAdd"</vendor_url>
  <icon_name>"$progAdd"</icon_name>
  <action id='org.pclinuxos."$progAdd".pkexec.run'>
   <description>Run "$progAdd"</description>
   <message>Authentication is required to run "$progAdd"</message>
   <defaults>
     <allow_any>auth_admin</allow_any>
     <allow_inactive>auth_admin</allow_inactive>
     <allow_active>auth_admin</allow_active>
   </defaults>
   <annotate key='org.freedesktop.policykit.exec.path'>"/usr/bin/$progAdd"</annotate>
   <annotate key='org.freedesktop.policykit.exec.allow_gui'>true</annotate>
   </action>
</policyconfig>" | tee -a $DESKTOP/org.pclinuxos."$progAdd".policy > /dev/null 2>&1
sleep 1
`yad --title="Polkit Creator" \
--window-icon=$ICON --image=$ICON --height=100 --width=450 \
--center --text="\nPolicyKit <b>"$progAdd"</b> has been created on $USERS's desktop!" \
--button="Delete!/usr/share/polkit-creator/icons/cancel.svg:0" \
--button="Ok!/usr/share/polkit-creator/icons/save.svg:1"`
if [ $? = 1 ]; then
rm -rf /tmp/polkit-creator > /dev/null 2>&1
exit 0
else
rm -f $DESKTOP/org.pclinuxos."$progAdd".policy > /dev/null 2>&1
sleep 1
`yad --title="Polkit Creator" \
--window-icon=$ICON --image=$ICON --height=100 --width=450 \
--center --text="\nPolicyKit <b>"$progAdd"</b> has been deleted from $USERS's desktop!" \
--button="OK!/usr/share/polkit-creator/icons/ok.svg:1"`
fi
 fi
if ! test -f $DESKTOP/org.pclinuxos."$progAdd".policy ; then
exit 0
else
`yad --title="Polkit Creator" \
--window-icon=$ICON --image=$ICON --height=100 --width=450 \
--center --text="\nPolicyKit <b>"$progAdd"</b> already exists on $USERS's desktop!" \
--button="Delete!/usr/share/polkit-creator/icons/cancel.svg:1" \
--button="OK!/usr/share/polkit-creator/icons/save.svg:0"`
if [ $? = 1 ]; then
DESKTOP=`echo $HOME/Desktop`
rm -f $DESKTOP/org.pclinuxos."$progAdd".policy > /dev/null 2>&1
 fi
  fi
exit 0
rm -rf /tmp/polkit-creator > /dev/null 2>&1

