From fe2847ac3e6c1f4eed8ccf1852d1bb053e0d5215 Mon Sep 17 00:00:00 2001 From: yutent Date: Tue, 9 Jan 2024 16:17:16 +0800 Subject: [PATCH] add charles --- README.md | 6 +- charles/package.sh | 165 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 170 insertions(+), 1 deletion(-) create mode 100755 charles/package.sh diff --git a/README.md b/README.md index 4dd7f33..ea4b860 100644 --- a/README.md +++ b/README.md @@ -18,4 +18,8 @@ - `fcitx5-skin-plain` fcitx5皮肤 -- `wechat-devtools` 微信开发工具 \ No newline at end of file +- `wechat-devtools` 微信开发工具 + +- `inkscape` 矢量图编辑器 + +- `charles` 网络抓包工具 \ No newline at end of file diff --git a/charles/package.sh b/charles/package.sh new file mode 100755 index 0000000..0f3d508 --- /dev/null +++ b/charles/package.sh @@ -0,0 +1,165 @@ +#!/bin/bash + +origin_app_name="charles-proxy" +app_name="charles" +tmp_dir="/tmp/${app_name}_tmp" +version="4.6.5" +release="v${version}" +replace_name="charles-nj" +patch="Architecture: amd64" + +_type="amd64" + +if [ "$1" == "nj" ]; then + _type="all" + app_name+="-nj" + replace_name="charles" + patch="""Architecture: all +Depends: java11-runtime""" +fi + +deb_url="https://www.charlesproxy.com/packages/apt/pool/main/c/charles-proxy/${origin_app_name}_${version}_${_type}.deb" + + +# 创建临时目录, 用于下载官方包 +if [ -d $tmp_dir ]; then + rm -rf $tmp_dir +fi + + + +if [ -d "./unpack" ]; then + sudo rm -rf ./unpack +fi + +if [ -f "./${app_name}_${version}.deb" ]; then + rm "./${app_name}_${version}.deb" +fi + +mkdir $tmp_dir + +# 创建临时待打包目录 +echo "创建待打包目录..." +mkdir -p "./unpack/DEBIAN" +mkdir -p "./unpack/usr" + +source_dir="${tmp_dir}/${app_name}" + + +echo "下载官方原包..." +wget $deb_url -O "${tmp_dir}/${app_name}.deb" + +echo "下载完成, 解包中..." +dpkg-deb -R "${tmp_dir}/${app_name}.deb" "${tmp_dir}/${app_name}" + +echo "解包完成, 复制到待打包目录..." +mv "${source_dir}/usr" "./unpack/" + +rm -rf $tmp_dir + +echo "复制完成, 创建可执行文件及程序桌面入口文件..." + + +echo """ +#!/bin/bash -e +###################################################################### +# Charles Proxy startup script +# + +# Find Charles lib directory +CHARLES_LIB="/usr/lib/charles-proxy" +GDK_SCALE=1 + +java_bin=java + +if [ -d "\$CHARLES_LIB/jdk" ]; then + export JAVA_HOME="\$CHARLES_LIB/jdk" + java_bin="\$CHARLES_LIB/jdk/bin/java" +fi + +# HiDPI + +if [[ \$DESKTOP_SESSION ]]; then + + case \$DESKTOP_SESSION in + xfce) + GDK_SCALE=\$(xfconf-query -c xsettings -p /Gdk/WindowScalingFactor) + ;; + cinnamon) + GDK_SCALE=\$(/usr/bin/gsettings get org.cinnamon.desktop.interface scaling-factor | awk '{print \$2}') + ;; + gnome) + GDK_SCALE=\$(/usr/bin/gsettings get org.gnome.desktop.interface scaling-factor | awk '{print \$2}') + ;; + esac + +elif [[ \$GNOME_DESKTOP_SESSION_ID ]]; then + + GDK_SCALE=\$(/usr/bin/gsettings get org.gnome.desktop.interface scaling-factor | awk '{print \$2}') + +else + + if [ -x /usr/bin/xfconf-query ]; then + GDK_SCALE=\$(xfconf-query -c xsettings -p /Gdk/WindowScalingFactor) + elif [ -x /usr/bin/gsettings ]; then + GDK_SCALE=\$(/usr/bin/gsettings get org.gnome.desktop.interface scaling-factor | awk '{print \$2}') + fi +fi + +export GDK_SCALE + +# Launch Charles +\$java_bin \\ + -Xmx1024M \\ + -Dcharles.config="~/.charles.config" \\ + -Djava.library.path="\$CHARLES_LIB" \\ + -Djdk.gtk.verbose=true \\ + -Djdk.gtk.version=3 \\ + -jar \$CHARLES_LIB/charles.jar \\ + \$* +""" > ./unpack/usr/bin/charles + +chmod +x ./unpack/usr/bin/charles +rm ./unpack/usr/bin/charles4 + +sed -i -e 's/charles4/charles/; s/com-xk72-charles-gui-MainWithClassLoader/Charles/' ./unpack/usr/share/applications/charles-proxy.desktop + +echo "文件复制完成..." + +echo '计算文件md5中...' + +cd ./unpack + +find usr/ -type f | xargs -I {} md5sum {} > DEBIAN/md5sums +IFS=$'\t' read -ra size <<< "$(du -d 0)" + +echo """ +Package: ${app_name} +Version: ${version} +${patch} +Maintainer: Yutent +Section: non-free/develop +Breaks: ${replace_name} +Replaces: ${replace_name} +Priority: optional +Installed-Size: ${size[0]} +Homepage: https://www.charlesproxy.com/ +Description: 一个网络抓包调试工具, 内置java-11 runtime。 + Charles is an HTTP proxy / HTTP monitor / Reverse Proxy that enables a + developer to view all of the HTTP and SSL / HTTPS traffic between their + machine and the Internet. This includes requests, responses and the HTTP + headers (which contain the cookies and caching information). +""" > DEBIAN/control + + +echo '计算文件md5完成, 打包中...' + +cd ../ + +sudo chown -R root:root unpack + +dpkg-deb -b ./unpack "./${app_name}_${version}.deb" + +sudo rm -rf ./unpack +echo "打包完成 :)" +