#!/bin/bash

reset

echo "Copyright (c) 2019-2022 The Spark Project"

if [ -x "/usr/bin/deepin-deb-installer" ] ; then 
	echo "深度软件包安装器已安装，开始检测证书"
else
	echo "未安装深度软件包安装器，拒绝执行"
	echo "UOS需要深度软件包安装器来认证签名"
	echo "如果你用的是UOS，你能卸载这玩意说明你已经开了开发者模式......悄悄告诉你，放屁是不用脱裤子的！"
	echo "如果你用的不是统信系发行版......所以你为什么要打开这个脚本？"
	exit 1
fi

if [ -f "/usr/share/ca-certificates/deepin/private/priv.crt" ] ; then 
	echo "检测到已经生成过证书，直接跳过询问"
else
	until [ -f "/usr/bin/cert-tool" ] ; do
	#强制未安装证书工具的不通过
		echo "该工具可以帮助你签名未经签名无法安装的deb安装包"
		echo "原理是使用UOS官方的签名工具生成自己的可信证书，自己给自己签名，官方文档如下"
		echo "https://doc.chinauos.com/content/LrnDinQB_uwzIp6HxF7k"
		echo "您可直接将需要签名的deb文件拖放至图标上，程序可以自动处理"
		echo "生成证书需要您的UOS ID账号和密码，请在使用工具前确保在应用商店中已安装过“证书工具”这个应用"
		echo "如果没有安装，则无法使用。“证书工具”可以在官方的应用商店app安装。请确认安装后再进行下一步操作"
		echo "注：账号和密码不会以任何形式被发送。本脚本完全开源，若不放心可以自己检查代码"
		sleep 3
		echo ""
		echo "如果你确认已经安装了该应用，请按回车"
		read renyijian

		#检测是否在说谎签名文件
		if [ -f "/usr/bin/cert-tool" ] ; then
			echo "成功检测到cert-tool存在，开始检测证书\n"
		else
			echo "没有检测到该应用，请您再次确认“证书工具”已经安装！"
			sleep 3
			clear
		fi
	done

	until [ -f "/usr/share/ca-certificates/deepin/private/priv.crt" ] ; do 
		echo "没有检测到证书，准备调用证书工具生成证书，请输入您的UOS账号/密码。本脚本不会上传任何信息"
		echo "请在此行输入您的UOS账号用户名/电话号/邮箱"
		read account
		echo "请在此行输入您的UOS账号密码"
		read passwd
		echo "即将安装证书，请在弹出的窗口安装"
		cert-tool -username="$account" -password="$passwd"
	done
	echo "检测到已经生成过证书，准备签名"
fi
#这个if是判断是否已经有证书

unset account
unset passwd
unset renyijian

debpath=""
cd /tmp

until [ -f "$debpath" ] ; do
	if [ ! $1 ] ; then 
		echo "没有检测到参数，以交互式安装运行"
			echo "您是否需要刷新证书？"
			echo "在某些情况下，证书会失效（比如更新系统后），这时候便需要重新生成"
			echo "如果是，请输入1"
			echo "否则，请按回车"
			read ifregen
			if [ "$ifregen" = "1" ]
			then
			/opt/apps/store.spark-app.deepin-elf-sign-helper-uos/files/regencert.sh
			exit 0
			fi
		unset ifregen

			echo "您是否需要卸载应用？"
			echo "如果签名后安装的软件包没有desktop文件，你无法在不打开开发者模式的情况下卸载"
			echo "此时可以利用ussremove工具进行卸载"
			echo "您只需要知道需要卸载的软件包的包名即可"
			echo "进入ussremove工具，请输入1"
			echo "否则，请按回车"
			read ifremove
			if [ "$ifremove" = "1" ]
			then
			/opt/apps/store.spark-app.deepin-elf-sign-helper-uos/files/ussremove
			exit 0
			fi
		unset ifregen
		echo "请输入deb文件的绝对路径或直接拖入deb文件(仅限支持的文件管理器，比如深度文管），结束后回车"
		echo "生成的签名过的deb将保存在/tmp/signed_deb"
		read debpath
	else
		echo "参数存在，直接开始签名\n生成的签名过的deb保存在/tmp/signed_deb"
		debpath="$1"
		echo "读取到的deb路径为：$debpath"
	fi
	debpath=`echo "$debpath" | sed $'s/\'//g'`
	echo "去除可能的单引号后得到：$debpath"

	if [ -f $debpath ] ; then
		echo "文件有效，开始签名"
		echo "------------以下为签名工具输出------------"
		deepin-elf-sign-deb "$debpath"
		echo "------------签名工具输出已结束------------"
		echo "签名结束，会打开已签名包保存路径"
		echo "安装后可以删除已签名包"
	else
		echo "路径出错,请确认你输入了正确的路径！"
		sleep 3
		clear
	fi
done


xdg-open "/tmp/signed_deb/"
echo "按回车退出程序"
read nouse
exit 0