5.1 开发编译集成方式

5.1.1 开发环境准备

软件名称 版本要求
g++/gcc 7.3.0
libstdc++6 >= 8.3.0

信创CSSDK提供了静态库以及动态库以及node插件。

.
├── shared
│   |── libaTrustSDK.so     # 动态库
    └── atrust.node         # node插件
└── static
    ├── libaTrustSDK.a        # 静态库

shared为动态库目录,static为静态库目录。请根据你的项目需求,选择一种集成方式。

5.1.2 集成aTrust客户端安装包

静默安装aTrust客户端

aTrust客户端集成:可将aTrust客户端安装包打包到第三方应用程序安装包中一起安装,aTrust客户端提供静默安装 方式,静默安装方法可以通过dpkg安装

deb包在安装的时候会有四个钩子脚本,可以将aTrust安装包放到第三方应用程序安装包的某个位置,然后在postinst内执行安装 但是由于dpkg进程在运行的时候会上锁,保证同时只能有一个dpkg进程运行安装,所以需要在postinst内执行一个脚本 ,脚本内一直检测当前安装第三方应用程序的dpkg进程是否结束,结束之后可以执行安装aTrust安装包。

下面是一个简易的postinst的示例,需要在脚本内执行install_atrust.sh这个后台脚本 ,在执行的时候一定要加上&,这样才是异步,否则会导致aTrust安装失败

#!/bin/bash

function main() {
   /xxx/xxx/install_atrust.sh 1>/dev/null 2>&1 &
}

main $@

下面是install_atrust.sh的一个示例

 #!/bin/bash

function check_dpkg_running()
{
    local dpkg_status
    local wait_times
    wait_times=0
    dpkg_status=$( pgrep -c dpkg)
    while [ "$dpkg_status" -ne 0 ]
    do
        wait_times=$((wait_times+1))
        sleep 1
        dpkg_status=$( pgrep -c dpkg)
        #避免dpkg出现问题,脚本长时间阻塞。
        if [ "${wait_times}" -gt 80 ]
        then
            log "Error" "wait dpkg runnig too long,please check the dpkg status and reinstall"
            exit 1
        fi
    done
}


function handle_atrust()
{
    #检查是否有dpkg程序正在安装。如果没有运行了,该func会返回,此时处理atrust安装包
    check_dpkg_running

    echo "begin handle atrust opr:$1"
    if [ "$1" == "install" ]; then
        # 执行安装
        if ! dpkg -i ${SHELL_PATH}/vdi-linux-client-*.deb;then
            log "Error" "install vdi deb file failed,check the instll file"
            exit 1
        fi
    else #purge
        # 执行卸载
        dpkg -P cn.com.sangfor.atrust
    fi    
    echo "end handle atrust opr:$1"
}

静默卸载aTurst客户端

静默卸载aTrust客户端方式:

sudo dpkg -P cn.com.sangfor.atrust
深信服科技 all right reserved,powered by Gitbook本文档更新于: 2024-07-25 14:08

results matching ""

    No results matching ""