#! /bin/sh

my_exit() {
	clear
	exit $1
}

add_log() {
	if [ -z "$1" ]; then
		return
	fi
	touch $LOG_PATH/$LOG_FILENAME
	echo "$1" >> $LOG_PATH/$LOG_FILENAME
	echo "Шаг $1 - выполнен" >> $LOGF
	echo "" >> $LOGF
}

my_msg() {
	$DIALOG --backtitle "$BTITLE" --title "$ITITLE" --msgbox "$1" 6 60
}

intrpt_setup() {
	my_msg "Установка прервана пользователем"
	clear
	exit 0
}

#copy 
# $1 имя оригинала. копируется в $LOG_PATH +$1+.old 
# $2 если есть - оригинал заменяется этим файлом 
copy_file() {
	dname=`dirname $LOG_PATH/$1`
	bname=`basename $1`

	path="";
	for pt in `echo $dname | awk '{cnt=split($0, tmp, "/");for (i=1;i<=cnt;i++) {print (tmp[i]);}}'`; do
		path="$path"/"$pt"
		if [ ! -d $path ]; then
			mkdir -v $path 2>/dev/null
		fi
	done

	if test -f $1 ; then
		cp -v $1 $path/$bname.old
	else 
		echo "-" > $path/$bname.del
	fi

	if test -e $2  ; then
		dname=`dirname $1`
		path="";
		for pt in `echo $dname | awk '{cnt=split($0, tmp, "/");for (i=1;i<=cnt;i++) {print (tmp[i]);}}'`; do
			path="$path"/"$pt"
			if [ ! -d $path ]; then
				mkdir $path 2>/dev/null
			fi
		done
		cp -fv $2 $1 2>/dev/null
	fi
}

exec_choice_tz(){
	rm -fv /etc/localtime
	ln -sv $path_tz$file_tz /etc/localtime
	echo $file_tz > /etc/timezone
}

do_choice_tz_ru(){
	TEXT="Временной сдвиг относительно Москвы:"
	$DIALOG  --backtitle "$BTITLE" --title "$ITITLE" --default-item "+0" --menu "$TEXT" 0 0 11 \
	-1 "Калининград" +0 "Москва" +1 "Самара" +2 "Екатеринбург" +3 "Омск" +4 "Красноярск" +5 "Иркутск"\
	+6 "Якутск" +7 "Владивосток" +8 "Магадан" GMT "Гринвич" 2> "$OUTPUT"
	if [ "$?" -ne "0" ] ; then
		intrpt_setup
	fi
	tz=`cat $OUTPUT`
	path_tz="/usr/share/zoneinfo/"
	case "$tz" in
	"-1")	file_tz="Europe/Kaliningrad";;
	"+0")	file_tz="Europe/Moscow";;
	"+1")	file_tz="Europe/Samara";;
	"+2")	file_tz="Asia/Yekaterinburg";;
	"+3")	file_tz="Asia/Omsk";;
	"+4")	file_tz="Asia/Krasnoyarsk";;
	"+5")	file_tz="Asia/Irkutsk";;
	"+6")	file_tz="Asia/Yakutsk";;
	"+7")	file_tz="Asia/Vladivostok";;
	"+8")	file_tz="Asia/Magadan";;
	"GMT")	file_tz="GMT";;
	esac
	echo $TEXT $tz >> $LOGF
	exec_choice_tz 2>&1 | tee -a $LOGF
}

do_choice_tz_kz(){
	TEXT="Временной сдвиг относительно UTC:"
	$DIALOG  --backtitle "$BTITLE" --title "$ITITLE" --default-item "+6" --menu "$TEXT" 0 0 11 \
	+5 "Актау" +6 "Алматы" 2> "$OUTPUT"
	if [ "$?" -ne "0" ] ; then
		intrpt_setup
	fi
	tz=`cat $OUTPUT`
	path_tz="/usr/share/zoneinfo/"
	case "$tz" in
	"+5")	file_tz="Asia/Aqtau";;
	"+6")	file_tz="Asia/Almaty";;
	esac
	echo $TEXT $tz >> $LOGF
	exec_choice_tz 2>&1 | tee -a $LOGF
}

do_choice_tz_tj(){
	path_tz="/usr/share/zoneinfo/"
	file_tz="Asia/Dushanbe"
	exec_choice_tz 2>&1 | tee -a $LOGF
}

set_date_time() {
	TEXT="Установите дату"
	$DIALOG --backtitle "$BTITLE" --title "$ITITLE" --calendar "$TEXT" 0 0 2> "$OUTPUT"
	if [ "$?" -ne "0" ]; then
		intrpt_setup;
	fi
	dt=`cat $OUTPUT`
	echo $TEXT $dt >> $LOGF
	dd=`echo $dt | cut -d"/" -f1`
	dm=`echo $dt | cut -d"/" -f2`
	dt=$dm$dd

	TEXT="Установите время"
	$DIALOG --backtitle "$BTITLE" --title "$ITITLE" --timebox "$TEXT" 0 0 2> "$OUTPUT"
	if [ "$?" -ne "0" ]; then
		intrpt_setup;
	fi
	tm=`cat $OUTPUT`
	echo $TEXT $tm >> $LOGF
	tH=`echo $tm | cut -d":" -f1`
	tM=`echo $tm | cut -d":" -f2`
	tm=$tH$tM
	dt=$dt$tm
	date $dt
	hwclock --systohc
}

exec_install() {
	echo ""
	echo "Выполняем установку"
	mkdir -pv $LOG_PATH
	copy_file /etc/cron.d/logcheck
	rm -fv /etc/cron.d/logcheck
	if [ $INSTALL_TYPE == "client" ]; then
		copy_file /etc/xdg/autostart/fly-admin-wicd.desktop
		rm -fv /etc/xdg/autostart/fly-admin-wicd.desktop
		copy_file /etc/xdg/autostart/fly-update-notifier.desktop
		rm -fv /etc/xdg/autostart/fly-update-notifier.desktop
		copy_file /etc/xdg/autostart/fly-vkbd.desktop
		rm -fv /etc/xdg/autostart/fly-vkbd.desktop
		copy_file /etc/X11/fly-dm/fly-dmrc $PF/etc/X11/fly-dm/fly-dmrc
	fi
	# Сеть
	copy_file /etc/hostname
	echo $host.$domain > /etc/hostname
	IFACE_CFG=/etc/network/interfaces
	copy_file $IFACE_CFG
	sed -i "/auto/ s/$/ $IFACE/" $IFACE_CFG
	echo "iface $IFACE inet static" >> $IFACE_CFG
	echo "address $IP_ADDR" >> $IFACE_CFG
	echo "network $PRE_GW".0 >> $IFACE_CFG
	echo "netmask 255.255.255.0" >> $IFACE_CFG
	if [ $GW ] && [ $GW != "нет" ]; then
		echo "gateway $GW" >> $IFACE_CFG
	fi
	add_log "1 Update network"

	# Настройка /etc/hosts
	HOSTS=/etc/hosts
	copy_file $HOSTS
	sed -i {/$host/d} $HOSTS
	echo "" >> $HOSTS
	echo "# For ADIS" >> $HOSTS
	echo $IP_ADDR $host.$domain $host >> $HOSTS
	if [ $INSTALL_TYPE != "server" ] ; then
		echo $SERV_ADDR adishost.$domain adishost >> $HOSTS
		echo $SERV_ADDR aptadishost >> $HOSTS
	elif [ $IP_ADDR_RGN ]; then
		echo $IP_ADDR_RGN rgnadishost >> $HOSTS
	fi
	add_log "2 Update hosts"

	# Настройка crontab
	CRONTAB=/etc/crontab
	copy_file $CRONTAB
	echo "1 1 * * * root rm -f /var/log/cups/*" >> $CRONTAB
	if [ $INSTALL_TYPE == "server" ] ; then
		if [ $REPLCTR = "Вкл." ]; then
			echo "29 * * * * root /usr/bin/rdate -s rgnadishost &> /dev/null" >> $CRONTAB
		else
			echo "#29 * * * * root /usr/bin/rdate -s rgnadishost &> /dev/null" >> $CRONTAB
		fi
		echo "#* * * * * adisadmin /server/bin/lnxserv_m_reset" >> $CRONTAB
	else
		echo "30 * * * * root /usr/bin/rdate -s adishost &> /dev/null" >> $CRONTAB
	fi
	add_log "3 Update crontab"

	# Копирование и настройка файлов АДИС
	shopt -s dotglob
	cp -Rpf $PF/home/* /home
	chmod -v 755 /home/server
	cp -Rpf $PF/cities/$CITY_TRANSLIT/* /server
	cp -Rpf /server/config/$cfg_dir/* /home/adis
	if [ $INSTALL_TYPE == "server" ] || [ $SRV_PS ] ; then
		ln -sv /server/doc /server/win
		ln -sv /server/config /server/win
		ln -sv /server/share /server/win
		ln -sv /server/zmisc /server/win
		ln -sv /server/stat_orig /server/win
	fi

	if [ $INSTALL_TYPE == "server" ] ; then
		# Конфигурация для Димы
		echo	"TIMEZONE=$file_tz" > /root/adis.info
		echo	"IPADDR=$IP_ADDR_WEB" >> /root/adis.info
		echo	"CITY_NAME=$CITY_NAME" >> /root/adis.info
		SSMP=`sed -n 2p $cfg_file | cut -d"/" -f2 | cut -d"," -f1`
		echo	"SSMP=$SSMP" >> /root/adis.info
		# Remove Desktop
		rm -rfv /home/adis/.config/autostart/ADIS.desktop
		rm -rfv /home/adis/Desktop/ADIS.desktop
	else
		# дублируем 201 на 300
		if [ $NEW_ARM -ge "301" ] && [ $NEW_ARM -le "350" ] ; then
			mkdir -v /home/adis/exe2
			chmod -v 0750 /home/adis/exe2
			chown -v adisadmin:adis /home/adis/exe2
			cp -Rpfv /server/config/201/exe/*.* /home/adis/exe2
		fi
		# Для архивных АРМ копируем статистику
		if [ -f /home/adis/exe/spraconf.ads ] ; then
			ls /home/adis/stat/* &> /dev/null
			if [ "$?" -ne "0" ] ; then
				cp -Rp /server/stat_orig/* /home/adis/stat
				cp -Rpf /server/stat/* /home/adis/stat &> /dev/null
			fi
		fi
		# настройка кофигуратора для работы с картой
		EXEDIR=/home/adis/exe
		MAPCFG=mapsconf.ads
		if [ -f $EXEDIR/$MAPCFG ]; then
			WD=`pwd`
			cd $EXEDIR
			/server/binutil/mapcfg.sh -f
			chown -v adisadmin:adis $MAPCFG
			chmod -v 640 $MAPCFG
			cd $WD
		fi
		# блокировка извещений
		copy_file /etc/xdg/autostart/fly-update-notifier.desktop
		rm -fv /etc/xdg/autostart/fly-update-notifier.desktop

		# настройка клавиатуры
		KEYRC=/usr/share/fly-wm/keyshortcutrc
		copy_file $KEYRC
		sed -i '/^Alt|F[0-9]/ s/Alt/;Alt/' $KEYRC &> /dev/null
		sed -i '/^Ctrl|F[0-9]/ s/Ctrl/;Ctrl/' $KEYRC &> /dev/null
		sed -i '/^None|Super_L/ s/None/;None/' $KEYRC &> /dev/null
		echo "Alt|Ctrl|BackSpace = FLYWM_EXIT" >> $KEYRC
		SYMBF=/usr/share/X11/xkb/symbols/ru
		copy_file $SYMBF
		sed -i '/kpdl(comma)/d' $SYMBF

		# для работы со звуком
		BASHRC=/home/adis/.bashrc
		copy_file $BASHRC
		echo "alias zautest='sudo -u adisadmin /server/binutil/zautest'" >> $BASHRC
		A1=`sed -n /alsactl/p /server/bin/win_adis`
		A2=`echo $A1 | sed s/restore/store/ | cut -d"&" -f1`
		echo "alias asave='$A2'" >> $BASHRC
	fi

	copy_file /home/adisadmin/.profile
	echo '/home/adis/colors.sh' >> /home/adisadmin/.profile

	mkdir -v /var/log/adis 2> /dev/null
	chmod -v 0700 /var/log/adis
	chown adisadmin:adis /var/log/adis
	ln -sv /var/log/adis /home/adis/exe/log
	ln -sv /var/log/adis /home/server/log
	add_log "4 Copy & setup ADIS files"

	if [ $REPLCTR = "Вкл." ]; then
		# устаналиваем флаг репликации для lnxserv, lnxserv_m, statusfl
		sed -i '1s/.*/3\/1/' /home/adis/exe/adisconf.ads
		sed -i '1s/.*/3\/1/' /home/adis/exemobile/adisconf.ads
		sed -i '1s/.*/3\/1/' /home/adis/exestatus/adisconf.ads
		systemctl enable replctr
		add_log "5 Enable replctr service"
	fi

	if [ $WEBIF = "Вкл." ]; then
		ufw allow http
		ufw allow https
		systemctl enable apache2
		systemctl start apache2
		add_log "6 Enable WEB services"
	fi

	if [ $SRV_PS ]; then
	# Настраиваем Samba на диспетчерском компьютере подстанции
		ufw allow samba
		# Add Samba users (passwd "1")
		echo -e "1\n1" | pdbedit -t -a adis
		echo -e "1\n1" | pdbedit -t -a adisadmin
		systemctl enable smbd nmbd
		add_log "7 Enable samba"
	fi

	# Настройка ssh
	SSHCFG=/etc/ssh/sshd_config
	copy_file $SSHCFG
	sed -i {/GSSAPIAuthentication/d} $SSHCFG
	echo "#Changes while ADIS installation" >> $SSHCFG
	echo "GSSAPIAuthentication no" >> $SSHCFG
	systemctl enable ssh
	add_log "8 Setup & enable ssh"

	if [ x$APTEKA = x1 ] && ( [ $INSTALL_TYPE = "server" ] || [ $SRV_PS ] ) ; then
	# настройка сервера для аптеки
		ufw allow nfs
		ufw allow portmapper
		systemctl enable nfs-server
		systemctl enable rpc-statd
		add_log "9 Setup nfs for Apteka"
	elif [ $NEW_ARM -ge "2000" ] && [ x$APTEKA = x1 ]; then
	# настройка АРМ аптеки
		mkdir -pv /mnt/server/aptdat
		let i=$NEW_ARM%100
		copy_file /etc/fstab
		if [ $i == 0 ] ; then
			SRV_APT=$SERV_ADDR
		else
			SRV_APT=$IP_PRE_ADDR.$i.1
		fi
		echo "$SRV_APT:/home/server/aptdat  /mnt/server/aptdat  nfs  noac  0 0" >> /etc/fstab
		add_log "9 Setup fstab for Apteka"
	fi

	RCL=/etc/rc.local
	copy_file $RCL
	echo "#! /bin/bash" > $RCL
	echo "" >> $RCL
	if [ $INSTALL_TYPE == "server" ] ; then
		echo "sudo -u adisadmin /server/bin/servboot /home/adis/exe" >> $RCL
	else
		echo "pam_tally --user=adis --reset" >> $RCL
	fi
	chmod -v 770 $RCL
	add_log "10 Setup /etc/rc.local"
	add_log "Finish install"
}

do_install() {

	while true; do
		TEXT="Укажите страну:"
#		$DIALOG  --backtitle "$BTITLE" --title "$ITITLE" --menu "$TEXT" 0 0 3  ru "Россия" kz "Казахстан" tj "Таджикистан" 2> "$OUTPUT"
		$DIALOG  --backtitle "$BTITLE" --title "$ITITLE" --menu "$TEXT" 0 0 3  ru "Россия" kz "Казахстан" 2> "$OUTPUT"
		case "$?" in
			1)   intrpt_setup;;
			255) continue
		esac
		COUNTRY=`cat $OUTPUT`
		echo $TEXT $COUNTRY >> $LOGF

		do_choice_tz_$COUNTRY
		set_date_time

		TEXT="Выберите город:"
		cities=
		CITY_NAME=
		cities=`cat $CITY_SPR|cut -d "|" -f 1-2 | sed 's/ /_/g'`
		cities=`echo $cities | sed 's/|/ /g'`
		$DIALOG  --backtitle "$BTITLE" --title "$ITITLE" --menu "$TEXT" 0 0 15 $cities 2> "$OUTPUT"
		case "$?" in
			1)   intrpt_setup;;
			255) continue
		esac
		CITY_ID=`cat $OUTPUT`
		CITY_NAME=`cat $CITY_SPR| grep "^$CITY_ID|" | cut -d "|" -f 2`
		echo $TEXT $CITY_ID $CITY_NAME >> $LOGF

		CITY_TRANSLIT=`cat $CITY_SPR| grep "^$CITY_ID|" | cut -d "|" -f 3`
		if [ "$?" -ne "0" ] ; then
			my_msg "Ошибка описания транслитерации названия города"
			my_exit 255
		fi
		DIR=./cities/$CITY_TRANSLIT/config
		if [ ! -d $DIR ] ; then
			my_msg "Ошибка конфигурации"
			my_exit 255
		fi
		s=
		for cfg_dir in `find $DIR -type d | cut -d"/" -f5|uniq|sort|sed '/^$/d'|sed '/^99$/d'` ; do
			# проверить на windows файлы
			ls $DIR/$cfg_dir/exe/*.bat &> /dev/null
			if [ "$?" -ne "0" ] ; then
			# это linux (в директории exe нет *.bat файлов)
				let i=$cfg_dir%100
				if [ $cfg_dir -ge "51" ] && [ $cfg_dir -le "53" ] ; then
					s=${s}" $cfg_dir АРМ_старшего_врача"
				elif [ $cfg_dir -ge "101" ] && [ $cfg_dir -le "150" ] ; then
					s=${s}" $cfg_dir АРМ_диспетчера_подстанции_$i"
				elif [ $cfg_dir -ge "201" ] && [ $cfg_dir -le "250" ] ; then
					s=${s}" $cfg_dir АРМ_диспетчера_направления"
				elif [ $cfg_dir -ge "301" ] && [ $cfg_dir -le "350" ] ; then
					s=${s}" $cfg_dir АРМ_диспетчера_приема_вызовов"
				elif [ $cfg_dir -ge "401" ] && [ $cfg_dir -le "450" ] ; then
					s=${s}" $cfg_dir АРМ_вспомогательных_функций"
				elif [ $cfg_dir -ge "801" ] && [ $cfg_dir -le "850" ] ; then
					s=${s}" $cfg_dir АРМ_помощника_диспетчера_п/c_$i"
				elif [ $cfg_dir -ge "901" ] && [ $cfg_dir -le "950" ] ; then
					s=${s}" $cfg_dir АРМ_диспетчера_подстанции_$i"
				elif [ $cfg_dir -ge "1001" ] && [ $cfg_dir -le "1050" ] ; then
					s=${s}" $cfg_dir Архивный_АРМ"
				elif [ $cfg_dir -ge "1101" ] && [ $cfg_dir -le "1950" ] ; then
					s=${s}" $cfg_dir Архивный_АРМ_подстанции_$i"
				elif [ $cfg_dir -eq "2000" ] || [ $cfg_dir -eq "2100" ] ; then
					s=${s}" $cfg_dir АРМ_аптеки_станции"
				elif [ $cfg_dir -ge "2101" ] && [ $cfg_dir -le "2150" ] ; then
					s=${s}" $cfg_dir АРМ_аптеки_подстанции_$i"
				elif [ $cfg_dir -eq "2200" ] ; then
					s=${s}" $cfg_dir АРМ_заправки_сумок"
				elif [ $cfg_dir -ge "2201" ] && [ $cfg_dir -le "2250" ] ; then
					s=${s}" $cfg_dir АРМ_заправки_сумок_п/с_$i"
				elif ( [ $cfg_dir -ge "2001" ] && [ $cfg_dir -le "2050" ] ) || [ $cfg_dir -eq "2300" ]; then
					s=${s}" $cfg_dir АРМ_контроля_аптеки_станции"
				elif [ $cfg_dir -ge "2301" ] && [ $cfg_dir -le "2350" ] ; then
					s=${s}" $cfg_dir АРМ_контроля_аптеки_п/с_$i"
				fi
				if [ $cfg_dir -ge "2000" ] ; then
				# есть аптека на Linux-компьютерах
					apt=`find $DIR/$cfg_dir -type f \( -name 1 -o -name 2 \) -exec grep -H apteka_p {} \; | wc -l`
					if [ $apt = 0 ]; then APTEKA=1; else APTEKA=2; fi
				else
					APTEKA=0
				fi
			fi
		done
		if [ -z "$s" ]; then
			my_msg "Ошибка конфигурации"
			my_exit 255
		fi
		if [ $INSTALL_TYPE = "server" ] ; then
			TEXT=Server
			NEW_ARM=99
			cfg_dir=$NEW_ARM
			host="adishost"
		else
			TEXT="Выберите номер АРМ"
			$DIALOG  --backtitle "$BTITLE" --title "$ITITLE" --menu "$TEXT" 0 0 15 $s 2> "$OUTPUT"
			case "$?" in
				1)   intrpt_setup;;
				255) continue
			esac
			cfg_dir=`cat $OUTPUT`
			NEW_ARM=`echo $cfg_dir|cut -b 1-4`
			host=adis$NEW_ARM
			adcfg_file=./cities/$CITY_TRANSLIT/config/$cfg_dir/exe/adisconf.ads
			spcfg_file=./cities/$CITY_TRANSLIT/config/$cfg_dir/exe/spraconf.ads
			apcfg_file=./cities/$CITY_TRANSLIT/config/$cfg_dir/exe/apteconf.ads
			if [ -f $apcfg_file ] ; then
				cfg_file=$apcfg_file
			elif [ -f $spcfg_file ] ; then
				cfg_file=$spcfg_file
			else
				cfg_file=$adcfg_file
			fi
			echo $TEXT $NEW_ARM >> $LOGF
		fi
		srvcfg_file=./cities/$CITY_TRANSLIT/config/99/exe/adisconf.ads
		SERV_ADDR=`sed -n 38p $srvcfg_file | cut -d/ -f1| cut -d: -f1`
		if [ $INSTALL_TYPE = "server" ] ; then
			IP_ADDR=$SERV_ADDR
			cfg_file=$srvcfg_file
		else
			TEXT="IP адрес сервера АДИС:"
			$DIALOG  --backtitle "$BTITLE" --title "$ITITLE" --inputbox "$TEXT" 0 0 $SERV_ADDR 2> "$OUTPUT"
			case "$?" in
				1)   intrpt_setup;;
				255) continue
			esac
			SERV_ADDR=`cat $OUTPUT`
			IP_PRE_ADDR=`echo $SERV_ADDR | cut -d. -f1`.`echo $SERV_ADDR | cut -d. -f2`
			MAIN_PS=`echo $SERV_ADDR | cut -d. -f3`
			SRV_PS=
			IP_ADDR=$IP_PRE_ADDR.$MAIN_PS.`echo $NEW_ARM | sed 's/0//'`
			let i=$NEW_ARM%100
			if [ $NEW_ARM -ge "101" ] && [ $NEW_ARM -le "150" ] ; then
				SRV_PS=$i
				IP_ADDR=$IP_PRE_ADDR.$i.1
			fi
			
			if [ $NEW_ARM -ge "901" ] && [ $NEW_ARM -le "950" ] ; then
				SRV_PS=$i
				if [ $i -ne $MAIN_PS ] ; then
					IP_ADDR=$IP_PRE_ADDR.$i.1
				fi
			fi
			if [ $NEW_ARM -ge "801" ] && [ $NEW_ARM -le "850" ] ; then
				if [ $i -ne $MAIN_PS ] ; then
					IP_ADDR=$IP_PRE_ADDR.$i.`echo $NEW_ARM | sed 's/0//'`
				fi
			fi
			if [ $NEW_ARM -ge "1101" ] && [ $NEW_ARM -le "1950" ] ; then
				if [ $i -ne $MAIN_PS ] ; then
					IP_ADDR=$IP_PRE_ADDR.$i.`echo $NEW_ARM | sed 's/0//'`
				fi
			fi
			if [ $NEW_ARM -ge "2101" ] && [ $NEW_ARM -le "2350" ] ; then
				if [ $i -ne $MAIN_PS ] ; then
					IP_ADDR=$IP_PRE_ADDR.$i.`echo $NEW_ARM | sed 's/0//'`
				fi
			fi
			echo $TEXT $SERV_ADDR >> $LOGF
		fi
		
		if (( $CITY_ID < 7000 )); then typ="smp"; else typ="nmp"; fi
		domain="$typ$CITY_TRANSLIT.$COUNTRY"

		TEXT="Собственный IP адрес:"
		$DIALOG  --backtitle "$BTITLE" --title "$ITITLE" --inputbox "$TEXT" 0 0 $IP_ADDR 2> "$OUTPUT"
		case "$?" in
			1)   intrpt_setup;;
			255) continue
		esac
		IP_ADDR=`cat $OUTPUT`
		echo $TEXT $IP_ADDR >> $LOGF

		PRE_GW=`echo $IP_ADDR | cut -d. -f1`.`echo $IP_ADDR | cut -d. -f2`.`echo $IP_ADDR | cut -d. -f3`;
		TEXT="Шлюз:"
		$DIALOG  --backtitle "$BTITLE" --title "$ITITLE" --menu "$TEXT"  0 0 4 1 "нет" 2 $PRE_GW.2 3 "другой" 2> "$OUTPUT"
		case "$?" in
			1)   intrpt_setup;;
			255) continue
		esac
		GW=`cat $OUTPUT`
		case $GW in
		"1" )	GW="нет";;
		"2" )	GW=$PRE_GW.2;;
		"3" )
			$DIALOG  --backtitle "$BTITLE" --title "$ITITLE" --inputbox "Шлюз:" 0 0 $PRE_GW. 2> "$OUTPUT"
			GW=`cat $OUTPUT`
			case "$?" in
				1)   intrpt_setup;;
				255) continue
			esac
			if test $GW = "" ; then
				GW="нет"
			fi
		esac
		echo $TEXT $GW >> $LOGF

		REPLCTR="Нет"
		rpcfg_file=./cities/$CITY_TRANSLIT/config/$cfg_dir/exerepl/adisconf.ads
		if [ $INSTALL_TYPE = "server" ] && [ -f $rpcfg_file ]; then
			TEXT="Включить репликацию данных?"
			$DIALOG --backtitle "$BTITLE" --title "$ITITLE" --yesno "\n$TEXT" 0 0
			case "$?" in
				0)   REPLCTR="Вкл.";;
				1)   REPLCTR="Выкл.";;
				255) continue
			esac
			echo $TEXT $REPLCTR >> $LOGF
		fi
		if [ $REPLCTR = "Вкл." ]; then
			TEXT="Установить IP адрес регионального сервера:"
			$DIALOG  --backtitle "$BTITLE" --title "$ITITLE" --inputbox "$TEXT" 0 0 "" 2> "$OUTPUT"
			case "$?" in
				1)   intrpt_setup;;
				255) continue
			esac
			IP_ADDR_RGN=`cat $OUTPUT`
			if [ -z $IP_ADDR_RGN ]; then
				REPLCTR="Выкл."
			fi
			echo $TEXT $REPLCTR $IP_ADDR_RGN >> $LOGF
		fi

		RR=
		if [ "$REPLCTR" != "Нет" ]; then
			RR="Репликатор:  $REPLCTR"
			if [ $REPLCTR = "Вкл." ]; then
				RR=$RR"\n""На IP адрес: $IP_ADDR_RGN"
			fi
		fi

		WEBIF="Нет"
		if [ $INSTALL_TYPE = "server" ]; then
			TEXT="Включить Web-интерфейс?"
			IP_ADDR_WEB=$IP_ADDR
			$DIALOG --backtitle "$BTITLE" --title "$ITITLE" --yesno "\n$TEXT" 0 0
			case "$?" in
				0)	WEBIF="Вкл.";;
				1)	WEBIF="Выкл.";;
				255) continue
			esac
			echo $TEXT $WEBIF >> $LOGF
		fi
		if [ $WEBIF = "Вкл." ]; then
			TEXT="Установить внешний IP адрес:"
			$DIALOG  --backtitle "$BTITLE" --title "$ITITLE" --inputbox "$TEXT" 0 0 $IP_ADDR_WEB 2> "$OUTPUT"
			case "$?" in
				1)   intrpt_setup;;
				255) continue
			esac
			IP_ADDR_WEB=`cat $OUTPUT`
			if [ -z $IP_ADDR_WEB ]; then
				WEBIF="Выкл."
				IP_ADDR_WEB=$IP_ADDR
			fi
			echo $TEXT $WEBIF $IP_ADDR_WEB >> $LOGF
		fi
		WI=
		if [ "$WEBIF" != "Нет" ]; then
			WI="Web:         $WEBIF"
			if [ $WEBIF = "Вкл." ]; then
				WI=$WI"\n""На IP адрес: $IP_ADDR_WEB"
			fi
		fi
		$DIALOG --backtitle "$BTITLE" --title "$ITITLE" --defaultno --yesno\
		"\nСтрана:      $COUNTRY\nГород:       $CITY_NAME\nНомер АРМ:   $NEW_ARM\nIP адрес:    $IP_ADDR\nШлюз:        $GW\n$RR\n$WI\n\nВсе верно?" 0 0
		if [ "$?" = "0" ]; then
			break
		fi
	done

	if [ $INSTALL_TYPE = "client" ] && [ -f install_tea ]; then
		$DIALOG --backtitle "$BTITLE" --title "$ITITLE" --yesno "\nУстановить обучающую программу?" 0 0
		if [ "$?" = "0" ]; then
			sh install_tea
		fi
	fi

	exec_install 2>&1 | tee -a $LOGF

	$DIALOG --backtitle "$BTITLE" --title "$ITITLE" --menu "Установка завершена. Компьютер:" 0 0 3 1 "Перезагрузить" 2 "Выключить"  2> "$OUTPUT"
	GW=`cat $OUTPUT`
	case $GW in
	"1" )	reboot;;
	"2" )	poweroff;;
	esac
}

do_uninstall() {

	adcfg_file=/home/adis/exe/adisconf.ads
	if [ -f $adcfg_file ]; then
		ARM_NO=`sed -n 3p $adcfg_file | cut -d"/" -f1`
		if [ $ARM_NO -ge "101" ] && [ $ARM_NO -le "150" ] ; then
			SRV_PS=1
		elif [ $ARM_NO -ge "901" ] && [ $ARM_NO -le "950" ] ; then
			SRV_PS=1
		fi
	fi
	if [ $INSTALL_TYPE = "server" ]; then
		ufw delete allow http
		ufw delete allow https
		systemctl disable apache2
		systemctl disable replctr
	elif [ $SRV_PS ]; then
		ufw delete allow samba
		systemctl disable smbd nmbd
	fi
	if [ $INSTALL_TYPE = "server" ] || [ $SRV_PS ]; then
		ufw delete allow nfs
		ufw delete allow portmapper
		systemctl disable nfs-server rpc-statd
	fi
	rm -rf /server/alsa      2> /dev/null
	rm -rf /server/doc       2> /dev/null
	rm -rf /server/share     2> /dev/null
	rm -rf /server/stat      2> /dev/null
	rm -rf /server/stat_orig 2> /dev/null
	rm -rf /server/win       2> /dev/null
	rm -rf /server/zmisc     2> /dev/null
	rm -rf /server/config    2> /dev/null
	rm -f /server/* 2> /dev/null

	len=`expr length "$LOG_PATH" + 1`
	for files in `find $LOG_PATH -type f`; do
		if [ $files = $LOG_PATH/$LOG_FILENAME ]; then
			continue
		fi
		slen=`expr length $files - $len - 3`
		fl=`expr substr "$files" $len $slen` 
		SPLIT=`basename $files |awk '{cnt=split($0, tmp, ".");for (i=1;i<=cnt;i++) {print (tmp[i]);}}'`
		F=`wc -w <<< $SPLIT`
		if  test $(basename $files | cut -d. -f$F) = "del"  ;then
			rm -f $fl
		else
			mv -f "$files" "$fl" 2>/dev/null
		fi
	done

	rm -rf /home/adis 2>/dev/null
	tar xvfz $LOG_PATH_SYS/homeadis.tar.gz -C /home
	rm -rf $LOG_PATH 2>/dev/null
	rm -rf /root/adis_usr 2>/dev/null

	$DIALOG --backtitle "$BTITLE" --menu "Удаление завершено. Компьютер:" 0 0 3 1 "Перезагрузить" 2 "Выключить"  2> "$OUTPUT"
	GW=`cat $OUTPUT`
	case $GW in
	"1" )	reboot;;
	"2" )	poweroff;;
	esac
}

set_variables() {
	DIALOG=dialog

	PF=`pwd`
	VERSION_ADIS="8.5"
	BTITLE="Программный комплекс АДИС. Версия $VERSION_ADIS"

	if test $(whoami) != "root" ; then
		my_msg "Для запуска нужны права root"
		my_exit 252
	fi
	# По наличию x11-common определяется тип установки АДИС
	# Если он есть, значит это клиент
	if [ -f /etc/init.d/x11-common ]; then
		INSTALL_TYPE="client"
		ITITLE="Установка клиента АДИС"
	else
		INSTALL_TYPE="server"
		ITITLE="Установка сервера АДИС"
	fi
	LOG_PATH_SYS="/var/log/adis_install_info"
	LOG_PATH="/var/log/adis_install_user"
	LOG_FILENAME="setup.log"
	CITY_SPR="./cities/cities.lst"
	iconv -f cp866 -t utf-8 ./cities/cities.spr > $CITY_SPR

	if test ! -e $LOG_PATH_SYS/$LOG_FILENAME ; then 
		my_msg "Не выполнены начальные настройки системы"
		my_exit 251
	fi
#	IFACE=`netstat -i | cut -d" " -f1 | egrep -v "^Kernel|Iface|lo" | head -n1`
	IFACE=`ip a | grep "2: " | cut -d: -f2`
	IFACE=`echo -n $IFACE`
	if [ -z $IFACE ]; then
		my_msg "Не распознана сетевая карта"
		my_exit 250
	fi
	LOGF=/root/usr.log
	rm -f $LOGF &> /dev/null
}

#################################################################
# Start setup utility
set_variables

OUTPUT=/tmp/output.temp
trap "rm -f $OUTPUT; exit" 0 1 2 5 15


$DIALOG --backtitle "$BTITLE" --yesno "Утилита установки/удаления АДИС\n\n\n$ITITLE. Продолжить?" 0 0
if [ "$?" != "0" ]; then
	my_exit 0;
fi

if test -e $LOG_PATH/$LOG_FILENAME ; then 
	$DIALOG --backtitle "$BTITLE" --title "$ITITLE" --defaultno --yesno "\nОткат установки. Вы уверены?" 0 0
	if [ "$?" = "0" ]; then
		do_uninstall
	fi
else
	do_install
fi
my_exit 0
