Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
edgeless-bot
Advanced tools
用于从 PortableApps 网站自动抓取便携版软件更新信息,当存在更新时自动下载新版并制作成 Edgeless 插件包然后上传
支持自动识别和校对 MD5、自动检测简体中文版本、自动解析下载地址,甚至支持无需编写 make.cmd
脚本的全自动制作
支持最近三次的构建状态记录和自动删除冗余历史构建,支持自动输出晴雨表
得益于使用 rclone,远程上传功能支持本地存储、FTP、Onedrive、Google Drive等五十多种存储方式,详情请查看 rclone 官方介绍
需要 Windows 10 环境,在默认路径安装 7-Zip 并添加到 PATH
中
如果需要启用远程上传功能请安装 rclone ,推荐使用 scoop 命令scoop install rclone
进行安装
创建并编辑 config.jsonc
{
// 开启远程,使用rclone将构建成功的插件包上传至服务器
"enableRemote": false,
// 忽略远程警告,禁用远程时程序会输出Warning,启用此项可以忽略此Warning
"ignoreRemote": false,
// 任务文件夹,存放所有的任务描述
"dirTask": "./tasks",
// 工作文件夹,其子目录会作为make脚本工作目录使用
"dirWorkshop": "./workshop",
// 构建文件夹,存放构建成功的插件包
"dirBuilds": "./builds",
// 数据库路径,用于保存构建信息
"pathDatabase": "./database.json",
// 最大构建数,成功的构建总数超过此值时程序会尝试从本地和远程删除过期构建
"maxBuildsNum": 3,
// 远程主机名,需要在rclone中提前配置远程存储然后将远程存储名称填入此处
"remoteName": "pineapple",
// 远程根路径,远程存储中存放构建的根目录
"remoteRoot": "/hdisk/edgeless/插件包",
// aria2 RPC 端口,如果出现端口冲突导致的aria2启动失败请修改此值
"aria2Port": 46800,
// aria2 RPC 主机,理论上不允许修改
"aria2Host": "localhost",
// aria2 RPC 秘钥,必须与启动参数中"--rpc-secret"的值一致
"aria2Secret": "edgeless",
// 是否启动 aria2,如果已经有正在运行的aria2可以禁用此项阻止自带aria2运行
"spawnAria2": true,
// aria2 启动参数
"aria2SpawnArgs": [
// 配置代理 "--all-proxy=http://localhost:10089",
"--enable-rpc",
"--rpc-allow-origin-all=true",
"--rpc-listen-all=true",
"--rpc-listen-port=46800",
"--rpc-secret=edgeless"
]
}
# 安装
npm i -g edgeless-bot
# 运行全部 Tasks
# elbot 或 edgeless-bot 都可以
elbot
# 强制重新构建指定 Task
elbot -t <Task name> -f
elbot[ -t TaskName][ -f][ -d][ -g]
指定运行某个 Task,TaskName
为任务名称
忽略与数据库的最新版本对比结果,强制重新构建任务
debug模式,此模式下的远程操作会被自动禁用,且数据库不会被更新
GitHub Actions 模式
为了创建一个任务,你需要提供一个名为 config.json
的文件,结构如下:
interface Task {
name: string; //软件名(也作为任务名)
category: string; //软件分类
author: string; //打包者名称
paUrl: string; //PortableApps网页链接
releaseRequirement: Array<string>; //解压下载的exe后工作目录中应该出现的文件/文件夹,用于包校验
buildRequirement: Array<string>; //构建成功时工作目录中应该出现的文件/文件夹,用于构建校验
preprocess:boolean; //是否启用PortableApps预处理
autoMake:boolean; //是否启用自动制作
}
示例(Firefox):
{
"name":"Firefox",
"category":"浏览器",
"author":"Cno",
"paUrl":"https://portableapps.com/apps/internet/firefox_portable",
"releaseRequirement":["FirefoxPortable.exe","App/Firefox64/firefox.exe"],
"buildRequirement": ["Firefox_bot.wcs","Firefox_bot/FirefoxPortable.exe"],
"preprocess": true,
"autoMake": true
}
释义:
name
软件名称,会体现在构建生成文件的文件名中。
category
软件分类,必须是Edgeless下载站现有分类中的一种,如果觉得需要新建分类请建立issue。
author
打包者名暨Task配置作者名,会体现在构建生成文件的文件名中;最终的构建文件名会在打包者后加上(bot)
表示此插件包由Edgeless bot构建,未经过人工测试。
paUrl
PortableApps URL,页面中必须包含一个绿色的下载按钮 className="download-box"
。
releaseRequirement
将从PortableApps下载得到的.paf.exe文件直接使用7-Zip解压后得到的文件夹中需要包含的文件/文件夹,用于校验下载到的软件是否正确和适用此Task。
buildRequirement
运行make.cmd
脚本或自动构建后build
文件夹应该出现的文件/文件夹,用于校验make.cmd
脚本或自动构建是否执行成功/
preprocess
预处理release
目录,程序会执行两个步骤:
$PLUGINSDIR
Other
目录和help.html
App/readme.txt
文件。pac_installer_log.ini
以绕过首次运行会弹出的安全警告。autoMake
使用自动制作,如果启用此项则不需要编写make.cmd
脚本,程序会生成一个完成以下动作的外置批处理:
X:\Users\PortableApps
目录内以绕过部分PortableApps应用不允许在X:\Program Files
中运行的限制。release
目录的第一个可执行文件(通常为xxxPortable.exe)的快捷方式,快捷方式名称为项目名。关于使用autoMake后如何配置
buildRequirement
理论上使用autoMake的task不需要配置
buildRequirement
,不过为了确保安全在实际配置时还是需要带上buildRequirement
autoMake完成后的
build
目录中会出现一个taskName_bot
文件夹和一个taskName_bot.wcs
外置批处理,taskName_bot
文件夹为经过预处理(或未经预处理)的release
目录移动位置而来,因此buildRequirement
可以配置为["taskName_bot.wcs","taskName_bot/appNamePortable.exe"]
,参考 傲游浏览器的config.json
大部分的程序都可以直接使用autoMake
选项自动制作(记得同时启用preprocess
执行预处理),部分应用需要作者编写make.cmd
以完成构建,例如在线版本的Chrome.
和Edgeless插件包类似,make.cmd
会在一个特定的目录中执行,称之为"Workshop"。Workshop的起始目录结构如下:
│ target.exe
├─build
└─release
└─*
其中:
target.exe
是PortableApps网站上下载得到的 *.paf.exe
文件.
build
是一个空白目录,你编写的 make.cmd
脚本需要将插件包 压缩前 的内容提供在这个目录中.
release
目录则是target.exe
解压后得到的文件,例如:
└─release
│ GoogleChromePortable.exe
│ help.html
├─$PLUGINSDIR
├─7zTemp
├─App
│ ├─AppInfo
│ ├─Chrome-bin
│ └─DefaultData
│ └─profile
│ └─Default
└─Other
├─Help
│ └─images
└─Source
├─ChromePasswords
│ ├─ChromePasswords
│ └─Release
└─Languages
在执行 make.cmd
时,你可能需要一些外部工具。我们允许你建立一个 utils
文件夹存放你需要的工具,因此在 make.cmd
运行时的Workshop 就会是这样:
如果你不需要外部工具,不要建立这个文件夹就行了.
│ target.exe
│ make.cmd
├─utils
│ └─*
├─build
└─release
└─*
以Firefox任务为例编写一个近似自动构建的等效脚本,make.cmd
内容如下:
::关闭回显以优化控制台输出
@echo off
::移动release文件夹到build目录下
move .\release .\build\FireFox_bot
::生成外置批处理脚本,创建快捷方式指向FirefoxPortable.exe
echo LINK X:\Users\Default\Desktop\Firefox,X:\Program Files\Edgeless\FireFox_bot\FirefoxPortable.exe >./build/firefox_bot.wcs
脚本运行结束后的build
目录结构如下:
└─build
│ Firefox_bot.wcs
│
└─Firefox_bot
└─*
显然将此目录中的所有内容压缩成 .7z
压缩包即可完成插件包的制作,而 make.cmd
不需要完成压缩这一步,Edgeless bot会在验收完成之后将其压缩并完成后续工作.
更复杂一些的在线版Chrome的
make.cmd
可以 查看此处 ,涉及了按键模拟、utils内工具调用等.
为了让使用自动制作的Task也能完成简单的文件替换操作,我们允许你建立一个cover
文件夹来存放对release
目录的覆盖文件.
例如需要替换release
目录中的App/readme.txt
,在cover
文件夹中也同样建立一个App
文件夹然后将你的readme.txt
放在里面就行了,目录结构如下:
├─release
│ │ GoogleChromePortable.exe
│ ├─App
│ │ │ readme.txt
│ │ └─*
│ └─*
│
└─cover
└─App
│ readme.txt
cover
目录中的所有内容会被覆盖复制到 release
文件夹,这项工作会在 make.cmd
或自动构建运行后完成.
运行以下命令来测试你新增的任务:
elbot -d -t <Task Name>
你可以将自己编写的Task通过 Pull Request
的形式添加到自动构建仓库,Github Actions
会在PR通过时构建插件包;此外, Github Actions
也会每日定时调用 Edgeless Bot
构建插件包.
FAQs
Edgeless 自动插件机器人
The npm package edgeless-bot receives a total of 7 weekly downloads. As such, edgeless-bot popularity was classified as not popular.
We found that edgeless-bot demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.