记录 vohive 的来源、二进制获取、在网心云 OES Plus(arm64)上的部署与升级方法。 整理时间:2026-07。当前 OES Plus 上运行 v1.5.15 原生 arm64(
/opt/vohive,systemd 服务,端口 7575)。
- 官方:
iniwex5/vohive(Go 源码)+iniwex5/vohive-release(发布)
| // zalo_parser.js | |
| (function () { | |
| console.log("Zalo Parser extension loaded (Raw Data Mode)."); | |
| /** | |
| * Parses the DOM to extract chat messages. | |
| */ | |
| function parseMessages() { | |
| const messages = []; | |
| const messageNodes = document.querySelectorAll('.chat-message[id^="bb_msg_id_"]'); | |
| messageNodes.forEach(node => { |
| function nanoid(size = 21) { | |
| const scopedUrlAlphabet = 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict' | |
| const POOL_SIZE_MULTIPLIER = 128 | |
| let pool, poolOffset | |
| function fillPool(bytes) { | |
| if (!pool || pool.length < bytes) { | |
| pool = Buffer.allocUnsafe(bytes * POOL_SIZE_MULTIPLIER) | |
| crypto.getRandomValues(pool) |
| // 代码由 Figma Script Generator | PopLab AI App 生成 | |
| // https://poplab.ai/apps/tankXWAJ2nEm6h4bZWZFI | |
| // 获取选中的图层 | |
| const nodes = figma.currentPage.selection; | |
| if (nodes.length < 2) { | |
| figma.notify("请至少选择两个图层"); | |
| } else { | |
| // 保存原始位置 | |
| const positions = nodes.map(node => ({ x: node.x, y: node.y })); |
| // 获取当前选中的图层 | |
| const selection = figma.currentPage.selection; | |
| // 过滤不可见或锁定图层 | |
| const visibleNodes = selection.filter(node => node.visible && !node.locked); | |
| // 获取每个图层的左上角坐标 | |
| function getTopLeft(node) { | |
| // 如果有绝对位置属性,优先使用 | |
| if ('absoluteTransform' in node) { |
| // Please input the srouceTeam id, targetTeam id, token, cookie | |
| // Create a node project and install node-fetch | |
| // Add `"type": "module",` to package.json | |
| import fetch from "node-fetch"; | |
| // Id can be copied from team url | |
| let sourceTeam = { | |
| name: "source", | |
| id: "", |
| // Create a node project and install node-fetch | |
| // Add `"type": "module",` to package.json | |
| import fetch from "node-fetch"; | |
| let folders = [ | |
| "folder1", | |
| "folder2", | |
| ]; |
(Based on info from Peter Downs' gitub but with modified behavior to open a new terminal window for each invocation instead of reusing an already open window.)
The following three ways to launch an iTerm2 window from Finder have been tested on iTerm2 version 3+ running on macOS Mojave+.
pdanford - April 2020
| //Open the branch by abstract app | |
| let branchUrl = `abstract://app/share?branchId=${branchId}&commitSha=${commitSha}&kind=branch&projectId=${projectId}&sha=${projectSha}` | |
| //Open the file by asbtract app | |
| let fileUrl = `abstract://app/share?branchId=${branchId}&commitSha=${commitSha}&fileId=${fileId}&kind=file&open=true&projectId=${projectId}&sha=${projectSha}` |
| #!/bin/bash | |
| icon='iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAHdElNRQflAgcGOAqejWIfAAABvUlEQVRIx8XVMWtaURQH8F+DGigUpNi4PMlmQShZW+rQJV8gEMiWqR9ASelWsVuw36BTN8nUj9DBgGuGxpItJEt8Uly6NIMd1Jf3fJooBvq/y7nn3nPu//7vufcyi0099ajX1o7sup6cBxEYOYl6V64i+8RIMDt94+GM9yMTs597Z1seZbWJ7xmRXcZ7Q5d++J1OtSs0WrKFdqdhT6LVLzx17HwJ1hUf/fEyyWLPSGPpjTeM7CVF3Gap1cc4n0QgY9ML5FOTirKx3q2bmfG8AH16kTT7pqyO5ggaOor47kfeXsZXr1G2E+Wuaxn47ja2XlZVC18iz5kLdKfdWoxBKLSV2tKWUBhjUEuKGN97QUc/5e/rKCjOutMJsiTIx4WUEHZBghWR0fbWuOZXQ0Mdp2sz2HCgpKS5cmRTScnBIzCYxVytseB80gluDFTnFlLVIHUjZNQnpXyHYy0/dVKlXPAh5jn0Bt21LxM5gUAzlmCMoiDWkiW8b6QpEMhl/HWN4Rwt7sfQdVzES1SWPrvKJMIjPqprP+tjFuOP5ZMz3ya+BlGZH9rxefHHMsX//BvHCP26eyqdxka6XqWfun8Asb8C/wJwfAAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAIKADAAQAAAABAAAAIAAAAACPTkDJAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIxLTAyLTA3VDA2OjU0OjE5KzAwOjAwE5JqHgAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMS0wMi0wN1QwNj |