#!/sbin/sh
#by：Han | 情非得已c 


Clean() {
   rm -rf $MODPATH $TMPDIR
   mkdir -p $lu/bin $TMPDIR
}

ui_print() {
   if $BOOTMODE; then
      echo "$@"
   else
      ui_print "ui_print "$@"" > /proc/self/fd/$OUTFD
   fi
}

abort() {
   rm -rf $MODPATH
   ui_print "$@"
   sleep 3
   exit 1
}

set_perm() {
    chown $2:$3 $1 || return 1
    chmod $4 $1 || return 1
    CON=$5
    [ -z $CON ] && CON=u:object_r:system_file:s0
    chcon $CON $1 || return 1
}

set_perm_recursive() {
    find $1 -type d 2>/dev/null | while read dir; do
        set_perm $dir $2 $3 $4 $6
    done
        find $1 -type f -o -type l 2>/dev/null | while read file; do
            set_perm $file $2 $3 $5 $6
        done
}

Installing_curl() {
    mkdir -p $PREFIX/etc/tls/
    cp -rf $TMPDIR/curl/$Type/* $PREFIX
    cp -f $jian $PREFIX/etc/tls/cacert.pem
    [[ -f $PREFIX/lib/libssl.so ]] && cp -f $PREFIX/lib/libssl.so $PREFIX/lib/libssl.so.3 >/dev/null
    [[ -f $PREFIX/lib/libcrypto.so ]] && cp -f $PREFIX/lib/libcrypto.so $PREFIX/lib/libcrypto.so.3 >/dev/null
    find $PREFIX -exec chmod 700 {} \; -exec chown $APP_USER_ID:$APP_USER_ID {} \; >/dev/null
    $ELF1_Path/curl -V &>/dev/null || abort "！curl安装失败"
    echo "- 测试curl是否可用"
    echo
    $ELF1_Path/curl -sL https://www.baidu.com

}



umask 022
OUTFD=$2
ZIPFILE=$3
id=curl
name='curl for Android NDK'
version='v7.74.0'
versionCode=4
author='by：Han | 情非得已c & Github@Rui Ying'
description='使用Android NDK构建，适用于arm arm64 x86 x86_64架构的安卓手机，由于x86和x86_64编译上的错误不知道解决未能编译出curl，所以特此引用了Github@Rui Ying的二进制curl，https://github.com/robertying/openssl-curl-android，特别鸣谢Android NDK & libssh2 & nghttp2 & openssl & curl网站'
Modules_Dir=/data/adb/modules
MODPATH=$Modules_Dir/$id
MODPROP=$MODPATH/module.prop
ABI=`getprop ro.product.cpu.abi`
[[ -z "$ABI" ]] && ABI=`getprop ro.product.cpu.abi2`

    case "$ABI" in
        arm64*) Type=arm64-v8a;;
        armeabi*) Type=armeabi;;
        x86_64*) Type=x86_64;;
        x86*) Type=x86;;
        *) ui_print "！ 未知的架构 ${ABI}，目前不会交叉别的平台cur，如果你会编译可以教我一下造福大家"; exit 1;;
    esac


if [[ $1 = Han.GJZS ]]; then
    ui_print "- 开始修复运行环境"
    TMPDIR=$TMPDIR/tmp
    jian=$TMPDIR/curl/etc/tls/cacert.pem
    rm -rf $TMPDIR
    mkdir -p $TMPDIR
    ui_print "- 解压文件". 
    unzip -oq "$ZIPFILE" "curl/$Type/*" -x 'META-INF/*' -d "$TMPDIR"
    unzip -oq "$ZIPFILE" "curl/etc/tls/cacert.pem" -x 'META-INF/*' -d "$TMPDIR"
    Installing_curl
else
    [ -z $BOOTMODE ] && ps | grep zygote | grep -qv grep && BOOTMODE=true
    [ -z $BOOTMODE ] && ps -A 2>/dev/null | grep zygote | grep -qv grep && BOOTMODE=true
    [ -z $BOOTMODE ] && BOOTMODE=false
    ui_print "- 开始安装 $name-$version($versionCode)"
    ui_print "- 安装目录：$MODPATH"
    ui_print "- 模块作者：$author"
    ui_print "- Powered by Magisk & topjohnwu"
    TMPDIR=/dev/tmp
    lu=$MODPATH/system
    lu2=$lu/lib/curl
    jian=$TMPDIR/curl/etc/tls/cacert.pem
    ui_print "- 解压文件"
    Clean
        unzip -oq "$ZIPFILE" "curl/$Type/*" -x 'META-INF/*' -d "$TMPDIR"
        unzip -oq "$ZIPFILE" "curl/etc/tls/cacert.pem" -x 'META-INF/*' -d "$TMPDIR"
        mkdir -p $lu2
        cp -rf $TMPDIR/curl/$Type/lib/* $lu2 &>/dev/null
        cp -rf $TMPDIR/curl/$Type/ELF/curl $lu/bin/curl.elf &>/dev/null
        cp -rf $jian $lu2/libcacert.pem.so &>/dev/null
        cd $lu2
        [[ -f libssl.so ]] && cp -f ./libssl.so ./libssl.so.3 >/dev/null
        [[ -f libcrypto.so ]] && cp -f ./libcrypto.so ./libcrypto.so.3 >/dev/null
        

cat <<Han >$lu/bin/curl
#!/system/bin/sh

export LD_LIBRARY_PATH=/system/lib/curl
export CURL_CA_BUNDLE=/system/lib/curl/libcacert.pem.so
exec /system/bin/curl.elf "\$@"
Han

[[ ! -f $lu2/libcurl.so ]] && sed -i '3d' $lu/bin/curl
ui_print "- 正在打印模块信息……"
cat <<Han >$MODPROP
id=$id
name=$name
version=$version
versionCode=$versionCode
author=$author
description=$description
Han

ui_print "- 正在设置权限……"
set_perm_recursive "$lu/lib" 0 0 0755 0644
set_perm_recursive "$lu/bin" root shell 0755 0755


test -f $MODPROP && ui_print "- $name模块安装完成" || abort "！$name模块安装失败"

    (
    ui_print "- 查看curl版本"
    [[ -f $lu2/libcurl.so ]] && export LD_LIBRARY_PATH=$lu2
    export CURL_CA_BUNDLE=$lu2/libcacert.pem.so
    $lu/bin/curl.elf -V
    ui_print
    ui_print "- 打开百度"
    $lu/bin/curl.elf -sL https://www.baidu.com
    )
fi
    rm -rf $TMPDIR
    ui_print "- 完成"
    exit 0
