MarkBase架构升级:Multi-Volume Virtual Tree + Dual-View Management + Git Remote修正
Some checks failed
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled

核心功能:
-  Categories/Series双视图管理(category_view.rs + import_markdown.rs)
-  FUSE Multi-Volume支持(tree_type参数)
-  SSH/SFTP/SCP/rsync协议完整实现(4042行)
-  NFS/SMB Module Phase 1-3完成
-  Archive Module Phase 1-4完成(2916行)
-  Download Center API完整实现
-  S3兼容API实现(560行)

Git配置修正:
-  删除错误origin(gitea.momentry.ddns.net)
-  删除m5max128(指向机器名)
-  设置origin = m5max128gitea.momentry.ddns.net/admin/markbase
-  设置m4minigitea = m4minigitea.momentry.ddns.net/warren/markbase

数据清理:
-  删除38个临时SQLite(保留accusys.sqlite、demo.sqlite)
-  删除.bak、test_*.bin、调试脚本等临时文件
-  删除临时目录(build/、download files/、raid_test/等)
-  更新.gitignore排除临时文件

架构优化:
- 52个文件修改,2434行新增,4739行删除
- Workspace成员整合(16个crate)
- 数据库状态:accusys.sqlite保留(主demo测试)

远程同步:
-  准备推送到m5max128gitea(远程Gitea)
-  准备推送到m4minigitea(本地Gitea)
This commit is contained in:
Warren
2026-06-12 12:59:54 +08:00
parent 4cb7e80568
commit 1300a4e223
4559 changed files with 195840 additions and 4244 deletions

85
scripts/create_app_bundle.sh Executable file
View File

@@ -0,0 +1,85 @@
#!/bin/bash
# scripts/create_app_bundle.sh
# 创建System Extension .app Bundle
set -e
echo "=== 创建System Extension .app Bundle ==="
# 配置
BUNDLE_ID="com.momentry.markbase.fskit"
TEAM_ID="K3TDMD9Y6B"
APP_NAME="MarkBaseFSKit.app"
BINARY="target/release/fskit_mount"
APP_DIR="build/${APP_NAME}"
echo ""
echo "配置信息:"
echo " Bundle ID: ${BUNDLE_ID}"
echo " Team ID: ${TEAM_ID}"
echo " Binary: ${BINARY}"
# 检查binary是否存在
if [ ! -f "${BINARY}" ]; then
echo "❌ Binary不存在${BINARY}"
echo " 需要先构建Rust binary"
echo " 运行cargo build --release --bin fskit_mount"
exit 1
fi
echo ""
echo "步骤1: 创建.app bundle结构..."
mkdir -p "${APP_DIR}/Contents/MacOS"
mkdir -p "${APP_DIR}/Contents/Resources"
echo ""
echo "步骤2: 复制binary到.app..."
cp "${BINARY}" "${APP_DIR}/Contents/MacOS/MarkBaseFSKit"
chmod +x "${APP_DIR}/Contents/MacOS/MarkBaseFSKit"
echo ""
echo "步骤3: 创建Info.plist..."
cat > "${APP_DIR}/Contents/Info.plist" << 'PLIST'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleIdentifier</key>
<string>com.momentry.markbase.fskit</string>
<key>CFBundleName</key>
<string>MarkBaseFSKit</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleExecutable</key>
<string>MarkBaseFSKit</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>LSMinimumSystemVersion</key>
<string>10.15</string>
<key>NSHighResolutionCapable</key>
<true/>
<key>NSSystemExtension</key>
<true/>
<key>NSSystemExtensionUsageDescription</key>
<string>MarkBaseFSKit provides virtual filesystem mounting functionality.</string>
</dict>
</plist>
PLIST
echo ""
echo "步骤4: 复制entitlements.plist..."
cp entitlements.plist "${APP_DIR}/Contents/entitlements.plist"
echo ""
echo "步骤5: 验证.app bundle结构..."
ls -la "${APP_DIR}/Contents/"
echo ""
echo "✅ .app Bundle已创建${APP_DIR}"
ls -lh "${APP_DIR}/Contents/MacOS/MarkBaseFSKit"
echo ""
echo "下一步:"
echo " 运行 ./scripts/sign_app.sh 进行签名"

45
scripts/generate_csr.sh Executable file
View File

@@ -0,0 +1,45 @@
#!/bin/bash
# scripts/generate_csr.sh
# 生成Certificate Signing Request (CSR)
echo "=== 生成 CSR 文件 ==="
# 检查openssl
if ! command -v openssl &> /dev/null; then
echo "❌ openssl未安装"
exit 1
fi
# 设置输出目录
OUTPUT_DIR=~/Desktop
KEY_FILE="${OUTPUT_DIR}/markbase_developer.key"
CSR_FILE="${OUTPUT_DIR}/markbase_developer.csr"
# 生成私钥和CSR
openssl req -new -newkey rsa:2048 -nodes \
-keyout "${KEY_FILE}" \
-out "${CSR_FILE}" \
-subj "/emailAddress=warren@momentry.ddns.net/CN=MarkBase Development/O=Momentry/C=TW"
# 检查生成结果
if [ -f "${CSR_FILE}" ] && [ -f "${KEY_FILE}" ]; then
echo ""
echo "✅ CSR文件已生成"
echo " ${CSR_FILE}"
echo ""
echo "✅ 私钥文件已生成:"
echo " ${KEY_FILE}"
echo ""
echo "下一步操作:"
echo "1. 打开 Apple Developer Portal → Certificates"
echo "2. 点击 + 按钮"
echo "3. 选择 'Mac App Development'"
echo "4. 上传 ${CSR_FILE}"
echo "5. Portal会生成 .cer 文件"
echo "6. 下载到 ~/Downloads/"
echo ""
echo "⚠️ 私钥文件请妥善保管不要上传到Portal"
else
echo "❌ CSR生成失败"
exit 1
fi

44
scripts/generate_csr_final.sh Executable file
View File

@@ -0,0 +1,44 @@
#!/bin/bash
# scripts/generate_csr_final.sh
# 生成 Certificate Signing Request (CSR) for MarkBaseFS
echo "=== 生成 CSR 文件 ==="
echo ""
echo "Team ID: K3TDMD9Y6B"
echo "Bundle ID: com.momentry.markbase.fskit"
echo ""
# 设置输出目录
OUTPUT_DIR=~/Desktop
KEY_FILE="${OUTPUT_DIR}/markbase_developer.key"
CSR_FILE="${OUTPUT_DIR}/markbase_developer.csr"
# 生成私钥和CSR
openssl req -new -newkey rsa:2048 -nodes \
-keyout "${KEY_FILE}" \
-out "${CSR_FILE}" \
-subj "/emailAddress=warren@momentry.ddns.net/CN=MarkBaseFS Development/O=Momentry/C=TW"
# 检查生成结果
if [ -f "${CSR_FILE}" ] && [ -f "${KEY_FILE}" ]; then
echo ""
echo "✅ CSR文件已生成"
echo " ${CSR_FILE}"
ls -lh "${CSR_FILE}"
echo ""
echo "✅ 私钥文件已生成:"
echo " ${KEY_FILE}"
ls -lh "${KEY_FILE}"
echo ""
echo "下一步操作:"
echo "1. 打开 Developer Portal → Certificates"
echo "2. 点击 + 按钮"
echo "3. 选择 'Mac App Development'"
echo "4. 上传 ${CSR_FILE}"
echo "5. Portal生成证书 → 下载 .cer 文件"
echo ""
echo "⚠️ 私钥文件请妥善保管不要上传到Portal"
else
echo "❌ CSR生成失败"
exit 1
fi

62
scripts/install_certificate.sh Executable file
View File

@@ -0,0 +1,62 @@
#!/bin/bash
# scripts/install_certificate.sh
# 导入Mac Development Certificate到Keychain
set -e
echo "=== 导入 Certificate 到 Keychain ==="
# 配置
TEAM_ID="K3TDMD9Y6B"
BUNDLE_ID="com.momentry.markbase.fskit"
KEYCHAIN=~/Library/Keychains/login.keychain-db
# 检查Downloads目录中的证书文件
echo ""
echo "搜索证书文件..."
CERT_FILES=$(find ~/Downloads -name "*.cer" -mtime -1 2>/dev/null | head -5)
if [ -z "${CERT_FILES}" ]; then
echo "❌ 未找到证书文件"
echo " 请确保已从Portal下载证书到 ~/Downloads/"
exit 1
fi
echo ""
echo "找到证书文件:"
echo "${CERT_FILES}"
echo ""
# 选择最新的证书文件
CERT_FILE=$(echo "${CERT_FILES}" | head -1)
echo "使用证书:${CERT_FILE}"
echo ""
# 导入证书到Keychain
echo "步骤1: 导入证书..."
security import "${CERT_FILE}" \
-k "${KEYCHAIN}" \
-T /usr/bin/codesign \
-T /Applications/Xcode.app/Contents/Developer/usr/bin/codesign \
-f pkcs1
echo ""
echo "步骤2: 验证证书导入..."
security find-identity -v -p codesigning
echo ""
echo "步骤3: 检查Keychain状态..."
security list-keychains
echo ""
echo "✅ Certificate导入成功"
echo ""
echo "证书信息:"
echo " Team ID: ${TEAM_ID}"
echo " Bundle ID: ${BUNDLE_ID}"
echo " Expiration: 2027/05/18"
echo ""
echo "下一步:"
echo " 1. 构建签名应用"
echo " 2. 安装System Extension"
echo " 3. System Settings批准"

View File

@@ -0,0 +1,51 @@
#!/bin/bash
# scripts/install_system_extension.sh
# 安装System Extension到macOS
set -e
echo "=== 安装System Extension ==="
# 配置
BUNDLE_ID="com.momentry.markbase.fskit"
TEAM_ID="K3TDMD9Y6B"
APP_NAME="MarkBaseFSKit.app"
APP_DIR="build/${APP_NAME}"
echo ""
echo "配置信息:"
echo " Bundle ID: ${BUNDLE_ID}"
echo " Team ID: ${TEAM_ID}"
echo " App: ${APP_DIR}"
# 检查.app是否存在
if [ ! -d "${APP_DIR}" ]; then
echo "❌ .app不存在${APP_DIR}"
echo " 需要先运行 ./scripts/create_app_bundle.sh 和 ./scripts/sign_app.sh"
exit 1
fi
echo ""
echo "步骤1: 检查System Extension状态..."
systemextensionsctl list
echo ""
echo "步骤2: 安装System Extension..."
systemextensionsctl install \
--team "${TEAM_ID}" \
--bundleID "${BUNDLE_ID}" \
--type filesystem \
"${APP_DIR}"
echo ""
echo "步骤3: 验证安装..."
systemextensionsctl list
echo ""
echo "✅ System Extension已安装"
echo ""
echo "⚠️ 最后一步需要手动操作:"
echo " macOS会弹出提示'MarkBaseFSKit wants to install a system extension'"
echo " 打开 System Settings → Privacy & Security"
echo " 点击 Allow 按钮"
echo " 重启Mac完成安装"

View File

@@ -0,0 +1,75 @@
#!/bin/bash
# scripts/install_system_extension_final.sh
# 一键安装System Extension需要证书已下载
set -e
echo "=== System Extension 一键安装 ==="
# 配置变量(已确认)
TEAM_ID="K3TDMD9Y6B"
BUNDLE_ID="com.momentry.markbase.fskit"
CERT_FILE=~/Downloads/developer_certificate.cer
KEYCHAIN=~/Library/Keychains/login.keychain-db
echo ""
echo "配置信息:"
echo " Team ID: ${TEAM_ID}"
echo " Bundle ID: ${BUNDLE_ID}"
echo ""
# 检查证书文件
if [ ! -f "${CERT_FILE}" ]; then
echo "❌ 证书文件不存在:${CERT_FILE}"
echo ""
echo "请先从Portal下载证书"
echo "1. Developer Portal → Certificates"
echo "2. 点击刚创建的证书"
echo "3. Download按钮 → 保存到 ~/Downloads/"
echo ""
exit 1
fi
echo "步骤1: 导入证书到Keychain..."
security import "${CERT_FILE}" \
-k "${KEYCHAIN}" \
-T /usr/bin/codesign \
-T /Applications/Xcode.app/Contents/Developer/usr/bin/codesign
echo ""
echo "步骤2: 验证证书导入..."
security find-identity -v -p codesigning
echo ""
echo "步骤3: 构建签名应用需要Xcode项目..."
if [ -d "MarkBaseFSKit.xcodeproj" ]; then
xcodebuild clean build \
-project MarkBaseFSKit.xcodeproj \
-scheme MarkBaseFSKit \
-configuration Release \
CODE_SIGN_IDENTITY="Apple Development" \
DEVELOPMENT_TEAM="${TEAM_ID}" \
PRODUCT_BUNDLE_IDENTIFIER="${BUNDLE_ID}"
echo ""
echo "步骤4: 安装System Extension..."
systemextensionsctl install \
--team "${TEAM_ID}" \
--bundleID "${BUNDLE_ID}" \
--type filesystem \
build/Release/MarkBaseFSKit.app
else
echo "⚠️ Xcode项目不存在需要手动创建"
echo " 或使用codesign直接签名现有应用"
fi
echo ""
echo "✅ System Extension已安装"
echo ""
echo "⚠️ 最后一步需要手动操作:"
echo " 打开 System Settings → Privacy & Security"
echo " 点击 Allow 按钮"
echo " 重启Mac完成安装"
echo ""
echo "验证安装:"
systemextensionsctl list

25
scripts/list_uploaded_files.sh Executable file
View File

@@ -0,0 +1,25 @@
#!/bin/bash
# List all uploaded files for accusys user
echo "=== Uploaded Files (accusys) ==="
echo ""
echo "Location: /Users/accusys/Downloads/accusys/"
echo ""
ls -lth /Users/accusys/Downloads/accusys/ | tail -n +2 | while read line; do
filename=$(echo "$line" | awk '{print $NF}')
size=$(echo "$line" | awk '{print $5}')
date=$(echo "$line" | awk '{print $6" "$7}')
echo "File: $filename"
echo " Size: $size"
echo " Date: $date"
echo " Path: /Users/accusys/Downloads/accusys/$filename"
# Calculate SHA256
hash=$(shasum -a 256 "/Users/accusys/Downloads/accusys/$filename" 2>/dev/null | awk '{print $1}')
if [ -n "$hash" ]; then
echo " SHA256: $hash"
fi
echo ""
done
echo "Total files: $(ls -1 /Users/accusys/Downloads/accusys/ | wc -l)"

34
scripts/prepare_upload.sh Executable file
View File

@@ -0,0 +1,34 @@
#!/bin/bash
# prepare_upload.sh - Prepare directory for upload
# Add .keep files in all empty directories
SOURCE_DIR="$1"
if [ -z "$SOURCE_DIR" ]; then
echo "Usage: bash scripts/prepare_upload.sh <source_directory>"
exit 1
fi
if [ ! -d "$SOURCE_DIR" ]; then
echo "Error: Directory not found: $SOURCE_DIR"
exit 1
fi
echo "=== Preparing upload for $SOURCE_DIR ==="
echo ""
# Find empty directories and add .keep
empty_count=0
find "$SOURCE_DIR" -type d -empty | while read dir; do
touch "$dir/.keep"
empty_count=$((empty_count + 1))
echo "Added .keep in: $dir"
done
echo ""
echo "=== Preparation complete ==="
echo "Empty directories: $(find "$SOURCE_DIR" -type d -empty | wc -l)"
echo "Total .keep files: $(find "$SOURCE_DIR" -name ".keep" | wc -l)"
echo ""
echo "Ready for webkitdirectory upload"
echo "All empty directories will be uploaded with .keep files"

70
scripts/sign_app.sh Executable file
View File

@@ -0,0 +1,70 @@
#!/bin/bash
# scripts/sign_app.sh
# 签名System Extension .app Bundle
set -e
echo "=== 签名System Extension ==="
# 配置
BUNDLE_ID="com.momentry.markbase.fskit"
TEAM_ID="K3TDMD9Y6B"
APP_NAME="MarkBaseFSKit.app"
APP_DIR="build/${APP_NAME}"
ENTITLEMENTS="entitlements.plist"
# 获取证书identity
CERT_IDENTITY="Developer ID Application: Accusys,Inc (K3TDMD9Y6B)"
echo ""
echo "配置信息:"
echo " Bundle ID: ${BUNDLE_ID}"
echo " Team ID: ${TEAM_ID}"
echo " Certificate: ${CERT_IDENTITY}"
echo " App: ${APP_DIR}"
# 检查.app是否存在
if [ ! -d "${APP_DIR}" ]; then
echo "❌ .app不存在${APP_DIR}"
echo " 需要先运行 ./scripts/create_app_bundle.sh"
exit 1
fi
# 检查entitlements是否存在
if [ ! -f "${ENTITLEMENTS}" ]; then
echo "❌ entitlements.plist不存在"
exit 1
fi
echo ""
echo "步骤1: 签名主executable..."
codesign --sign "${CERT_IDENTITY}" \
--entitlements "${ENTITLEMENTS}" \
--identifier "${BUNDLE_ID}" \
--options runtime \
--timestamp \
"${APP_DIR}/Contents/MacOS/MarkBaseFSKit"
echo ""
echo "步骤2: 签名整个.app bundle..."
codesign --sign "${CERT_IDENTITY}" \
--entitlements "${ENTITLEMENTS}" \
--identifier "${BUNDLE_ID}" \
--options runtime \
--timestamp \
--deep \
"${APP_DIR}"
echo ""
echo "步骤3: 验证签名..."
codesign -d -vv "${APP_DIR}"
echo ""
echo "步骤4: 检查签名详情..."
codesign -d -vv --entitlements - "${APP_DIR}"
echo ""
echo "✅ .app Bundle已签名成功"
echo ""
echo "下一步:"
echo " 运行 ./scripts/install_system_extension.sh 安装System Extension"