Skip to content

Commit

Permalink
feat(web): 🔥 新增 web 界面可显示和删除已安装的证书...
Browse files Browse the repository at this point in the history
  • Loading branch information
ys1231 committed Oct 19, 2024
1 parent 65b86d5 commit c19b593
Show file tree
Hide file tree
Showing 8 changed files with 36 additions and 26 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
*.zip
.DS_Store
.DS_Store
webdev
7 changes: 6 additions & 1 deletion changelog.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
- fix(update): :fire: 修复更新链接
- feat(web): :fire: 新增 web 界面可显示和删除已安装的证书...
- feat(web): :fire: New web interface to display and delete installed certificates.
- chore(log): :loud_sound: 日志优化.
- chore(log): :loud_sound: Log optimization.
---
- fix(update): :fire: 修复更新链接.
---
- fix(sh): :bug: #21 修复用户证书目录可能不存在导致模块无效.
- fix(sh): :bug: #21 Fix user certificate directory may not exist resulting in invalid module.
Expand Down
6 changes: 3 additions & 3 deletions module.prop
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
id=MoveCertificate
name=MoveCertificate
version=v1.4.11
versionCode=15
version=v1.5
versionCode=16
author=iyue
description=Supports magiskv20.4+/kernelsu/APatch Android 7-14 move certificates
updateJson=https://ys1231.cn:82/modules/MoveCertificate/update.json
updateJson=https://pfile.ys1231.cn:/modules/MoveCertificate/update.json
32 changes: 14 additions & 18 deletions post-fs-data.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ sdk_version_number=$(expr "$sdk_version" + 0)

# add logcat
LOG_PATH="$MODDIR/install.log"
LOG_TAG="iyue_MoveCertificate"
LOG_TAG="iyue"

# Keep only one up-to-date log
echo "[$LOG_TAG] Keep only one up-to-date log" >$LOG_PATH
Expand All @@ -25,40 +25,34 @@ print_log() {
}

move_custom_cert() {
print_log "Backup user custom certificates"
if [ "$(ls -A /data/local/tmp/cert)" ]; then
cp -f /data/local/tmp/cert/* $MODDIR/certificates
cp -f /data/local/tmp/cert/* /data/misc/user/0/cacerts-added/
else
print_log "The directory '/data/local/tmp/cert' is empty."
fi
print_log "Backup user custom certificates status:$?"
print_log "Install /data/local/tmp/cert status:$?"
}

fix_user_permissions() {
# "Fix permissions of the system certificate directory"
print_log "fix user permissions: /data/misc/user/0/cacerts-added/"
chown -R root:root /data/misc/user/0/cacerts-added/
chmod -R 666 /data/misc/user/0/cacerts-added/
chown system:system /data/misc/user/0/cacerts-added
chmod 755 /data/misc/user/0/cacerts-added
print_log "fix user permissions status:$?"
print_log "fix user certificate permissions status:$?"
}

fix_system_permissions() {
# diff
print_log "fix permissions /system/etc/security/cacerts"
chown root:root /system/etc/security/cacerts
chown -R root:root /system/etc/security/cacerts/
chmod -R 644 /system/etc/security/cacerts/
chmod 755 /system/etc/security/cacerts
chcon u:object_r:system_file:s0 /system/etc/security/cacerts/*
print_log "move cert status:$?"
print_log "fix permissions /system/etc/security/cacerts status:$?"
}

fix_system_permissions14() {
# diff
print_log "fix permissions: $1"
chown -R system:system "$1"
chown root:shell "$1"
chmod -R 644 "$1"
Expand All @@ -82,22 +76,20 @@ set_selinux_context(){
if [ "$sdk_version_number" -le 33 ]; then
print_log "start move cert !"
print_log "current sdk version is $sdk_version_number"
print_log "Backup system certificates"
print_log "Backup /system/etc/security/cacerts"
cp -u /system/etc/security/cacerts/* $MODDIR/certificates
print_log "Backup /data/misc/user/0/cacerts-added"
cp -u /data/misc/user/0/cacerts-added/* $MODDIR/certificates/
# Android 13 or lower versions perform
print_log "Backup user custom certificates"
move_custom_cert
fix_user_permissions

print_log "mount: /system/etc/security/cacerts"
selinux_context=$(ls -Zd /system/etc/security/cacerts | awk '{print $1}')
mount -t tmpfs tmpfs /system/etc/security/cacerts
print_log "mount status:$?"
print_log "mount /system/etc/security/cacerts status:$?"

print_log "move cert: /system/etc/security/cacerts"
cp -f $MODDIR/certificates/* /system/etc/security/cacerts
print_log "move cert status:$?"
print_log "Install /system/etc/security/cacerts status:$?"
fix_system_permissions
print_log "certificates installed"
[ "$(getenforce)" = "Enforcing" ] || return 0
Expand All @@ -111,11 +103,13 @@ else

print_log "start move cert !"
print_log "current sdk version is $sdk_version_number"
print_log "Backup system certificates"

mount -t tmpfs tmpfs $MODDIR/certificates
print_log "mount $MODDIR/certificates status:$?"
print_log "Backup /apex/com.android.conscrypt/cacerts"
cp -u /apex/com.android.conscrypt/cacerts/* $MODDIR/certificates
print_log "Backup /data/misc/user/0/cacerts-added"
cp -u /data/misc/user/0/cacerts-added/* $MODDIR/certificates
print_log "Backup user custom certificates"
move_custom_cert
fix_user_permissions
fix_system_permissions14 $MODDIR/certificates
Expand All @@ -127,6 +121,8 @@ else
set_selinux_context /apex/com.android.conscrypt/cacerts $MODDIR/certificates
# These two directories are mapped to the same block
mount -o bind $MODDIR/certificates /apex/com.android.conscrypt/cacerts
print_log "mount bind $MODDIR/certificates /apex/com.android.conscrypt/cacerts status:$?"
mount -o bind $MODDIR/certificates $apex_dir/cacerts
print_log "mount bind $MODDIR/certificates $apex_dir/cacerts status:$?"
print_log "certificates installed"
fi
6 changes: 3 additions & 3 deletions update.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"versionCode": 15,
"version": "v1.4.11",
"zipUrl": "https://pfile.ys1231.cn/modules/MoveCertificate/MoveCertificate-v1.4.11.zip",
"versionCode": 16,
"version": "v1.5",
"zipUrl": "https://pfile.ys1231.cn/modules/MoveCertificate/MoveCertificate-v1.5.zip",
"changelog": "https://pfile.ys1231.cn/modules/MoveCertificate/changelog.md"
}
1 change: 1 addition & 0 deletions webroot/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"><title>MoveCertificate</title><style>body,html{height:100%;margin:0;padding:0;font-family:Arial,sans-serif;line-height:1.6;background-color:#f0f0f0}.container{display:flex;flex-direction:column;min-height:100vh;box-sizing:border-box}.content{flex:1;background-color:#fff;padding:20px;border-radius:5px;box-shadow:0 0 10px rgba(0,0,0,.1);overflow-y:auto}h1{text-align:left;color:#333;margin-bottom:20px}.groupbox{border:1px solid #ccc;border-radius:5px;padding:15px;margin-top:20px;position:relative}.groupbox-title{position:absolute;top:-10px;left:10px;background-color:#fff;padding:0 5px;font-weight:700;color:#333}ul{list-style-type:none;padding:0;margin:10px 0 0}li{display:flex;align-items:center;background-color:#f9f9f9;margin-bottom:5px;padding:10px;border-radius:3px;position:relative}li:last-child{margin-bottom:0}.status-dot{width:15px;height:15px;border-radius:50%;margin-right:10px}.status-dot.green{background-color:green}.status-dot.gray{background-color:grey}.delete-button{position:absolute;right:10px;top:50%;transform:translateY(-50%);display:none;background-color:red;color:#fff;border:none;border-radius:5px;padding:5px}#logger,#versionInfo{margin:0;font-size:14px;word-wrap:break-word;word-break:break-all;white-space:pre-wrap}.modal{display:none;position:fixed;z-index:1;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:#000;background-color:rgba(0,0,0,.4);padding-top:60px}.modal-content{background-color:#fefefe;margin:5% auto;padding:20px;border:1px solid #888;width:80%;max-width:300px;border-radius:10px}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.modal-header h2{margin:0}.modal-footer{display:flex;justify-content:flex-end;gap:10px}.modal-footer button{padding:10px 20px;border:none;border-radius:5px;cursor:pointer}.modal-footer .cancel-btn{background-color:#ccc;color:#333}.modal-footer .confirm-btn{background-color:red;color:#fff}</style></head><body> <div class="container"> <div class="content"> <h1>MoveCertificate</h1> <div class="groupbox"> <span class="groupbox-title">模块信息</span> <p id="versionInfo">正在加载版本信息...</p> </div> <div class="groupbox"> <span class="groupbox-title">证书列表</span> <ul id="certificateList"></ul> </div> <div class="groupbox"> <span class="groupbox-title">安装日志</span> <p id="logger">正在加载版本信息...</p> </div> </div> </div> <div id="deleteModal" class="modal"> <div class="modal-content"> <div class="modal-header"> <h2>此操作不可逆</h2> </div> <p>确认要删除这个证书吗?</p> <div class="modal-footer"> <button class="cancel-btn" id="cancelDelete">取消</button> <button class="confirm-btn" id="confirmDelete">确认</button> </div> </div> </div> <script src="/script.d4ffbe2e.js"></script> </body></html>
6 changes: 6 additions & 0 deletions webroot/script.d4ffbe2e.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions webroot/script.d4ffbe2e.js.map

Large diffs are not rendered by default.

0 comments on commit c19b593

Please sign in to comment.