橙汁解包资源库

橙汁解包资源库

记一次将橙汁解包资源部署到相册框架的过程 #

使用 acme 和 ngnix 获取 ssl 证书 #

acme #

使用官方的安装脚本:
curl https://get.acme.sh | sh -s email=hanekihyouka@gmail.com

nginx #

安装 nginx:
sudo apt install nginx
在使用 apache 的时候,启用和关闭站点有 a2ensite a2dissite 可以快速编辑软链接。
nginx 上没有类似的命令,我找到了这个 bash 脚本来模拟。

列出可用站点 sudo nginx_modsite -l 启用站点 sudo nginx_modsite -e archive.100oj.com 关闭站点 sudo nginx_modsite -d archive.100oj.com

生成 ssl 证书 #

acme.sh --issue -d archive.100oj.com -w /var/www/archive.100oj.com

链接证书 #

acme.sh --install-cert -d archive.100oj.com \
--cert-file      /path/to/certificate/cert.pem  \
--key-file       /path/to/certificate/privkey.pem  \
--fullchain-file /path/to/certificate/fullchain.pem \
--reloadcmd     "service nginx force-reload"

nginx 配置 #

server {
    listen 443 ssl;
    server_name archive.100oj.com;
    
    ssl_certificate /path/to/certificate/fullchain.pem;
    ssl_certificate_key /path/certificate/privkey.pem;
}

建立橙汁的解包文件 #

我原本打算直接通过 http clone gitlab 仓库里本地解包好的内容:
git clone http://hime.100oj.com:8137/haneki/orangejuice-data-structure-2.git 但是这个网络速度是在是太慢了,遂更换方案,clone 空的解包项目
然后用 steamcmd 获取橙汁的 depot,直接在远端解包。
或者depot 下载工具获取 depot 也行,会更快。
在方便程度上,两者各有千秋。

安装 steamcmd #

照着官方的文档走。

sudo add-apt-repository multiverse; sudo dpkg --add-architecture i386; sudo apt update
sudo apt install steamcmd

创建 steam 用户:

sudo useradd -m steam
sudo passwd steam

sudo -u steam -s
cd /home/steam

运行 steamcmd ,登录用户,下载橙汁:

$ steamcmd +@sSteamCmdForcePlatformType windows
Steam>  login hanekihyouka

Logging in user 'hanekihyouka' to Steam Public...
password: 
This computer has not been authenticated for your account using Steam Guard.
Please check your email for the message from Steam, and enter the Steam Guard
 code from that message.
You can also enter this code at any time using 'set_steam_guard_code'
 at the console.
Steam Guard code: *****
OK

## 下载/更新橙汁
Steam> app_update 282800
Steam> exit

这里指定 steamcmd 的平台为 windows,是因为我们只下载文件,而不运行游戏。
如果不指定,因为橙汁没有专用的 linux 版本,会因为平台不对应而无法安装。
如果用前面提到的 DepotDownloader,就没这么多逼事了,它是专为下载 depot 文件而设计的脚本。

解包 #

克隆解包仓库:

git clone https://github.com/Hanekihyouka/OrangeJuice-Data-Structure-Lite-2.git
cd OrangeJuice-Data-Structure-Lite-2
mkdir common/

然后把 橙汁目录下的 data/ 链接到仓库对应的 common/data.

ln -s "/path/to/Steam/steamapps/common/100 Orange Juice/data" "/path/to/OrangeJuice-Data-Structure-Lite-2/common/data"

解包脚本用到了 xor-toolimagick,分别用来解码和转换图片格式。

pip3 install xortool
apt install imagemagick

解包:bash decryptor.sh 首次解包,白名单里添加了全部目录,后续可以根据 steamdb 或者 md5tree 的内容更改白名单。


部署 pichome #

pichome 是一个相册存储框架,
因为橙汁的大部分资源都是图片,解包仓库 的信息虽然齐全,但是不方便浏览和使用。
后者更适合查看每次更新的对照。

使用 docker #

 curl -fsSL https://test.docker.com -o test-docker.sh
 sudo sh test-docker.sh

启用 pichome 容器

根据官方的文档,要求 /path/certificate/ 下 ssl 证书必须以 fullchain.pem,privkey.pem 命名。 docker run -d -p 443:443 --restart=always -v "/path/certificate/":/etc/nginx/ssl --name pichome oaooa/pichome

或者使用 docker-compose #

docker-compose.yaml 需要修改的内容有

  • 数据库 root 密码 MYSQL_ROOT_PASSWORD=密码
  • 编辑资源文件的挂载路径,把刚才解包的目录链接到容器的 /mnt/instance 下。
  • 把 ssl 证书挂载到 /etc/nginx/ssl 下。
  • 开启 443 端口。
>>>
ports:
    - 80:80
    - 443:443
>>>
volumes:
    - "/etc/nginx/ssl-certificate/archive.100oj.com:/etc/nginx/ssl"
    - "./site:/var/www/html"
    - "/root/OrangeJuice-Data-Structure-Lite-2/instance:/mnt/instance"
sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

git clone https://github.com/zyx0814/Pichome-docker.git
cd ./Pichome-docker/compose/
## 编辑 docker-compose.yaml

## 启动容器
docker-compose up -d

接下来全是在网页上配置 pichome,都是有 gui 界面,而且很线性,便不提了。