From cdbe91622c3d0eb55a746d9bef05d5a8d0c9c1a4 Mon Sep 17 00:00:00 2001 From: okxlin Date: Wed, 26 Jul 2023 23:36:34 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=B7=BB=E5=8A=A0transmission=E5=88=B0?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/transmission/4.0.3/.env.sample | 8 ++ apps/transmission/4.0.3/data.yml | 48 ++++++++++ apps/transmission/4.0.3/docker-compose.yml | 32 +++++++ apps/transmission/README.md | 101 ++++++++++++++++++++ apps/transmission/data.yml | 20 ++++ apps/transmission/latest/.env.sample | 8 ++ apps/transmission/latest/data.yml | 48 ++++++++++ apps/transmission/latest/docker-compose.yml | 32 +++++++ apps/transmission/logo.png | Bin 0 -> 20006 bytes 9 files changed, 297 insertions(+) create mode 100644 apps/transmission/4.0.3/.env.sample create mode 100644 apps/transmission/4.0.3/data.yml create mode 100644 apps/transmission/4.0.3/docker-compose.yml create mode 100644 apps/transmission/README.md create mode 100644 apps/transmission/data.yml create mode 100644 apps/transmission/latest/.env.sample create mode 100644 apps/transmission/latest/data.yml create mode 100644 apps/transmission/latest/docker-compose.yml create mode 100644 apps/transmission/logo.png diff --git a/apps/transmission/4.0.3/.env.sample b/apps/transmission/4.0.3/.env.sample new file mode 100644 index 00000000..a603f9f8 --- /dev/null +++ b/apps/transmission/4.0.3/.env.sample @@ -0,0 +1,8 @@ +CONTAINER_NAME="transmission" +DOWNLOAD_PATH="./data/downloads" +PANEL_APP_PORT_HTTP="40154" +PEER_PORT_VALUE="40152" +WATCH_PATH="./data/Watch" +WEBUI_USER="" +WEBUI_PWD="" + diff --git a/apps/transmission/4.0.3/data.yml b/apps/transmission/4.0.3/data.yml new file mode 100644 index 00000000..01ae4d36 --- /dev/null +++ b/apps/transmission/4.0.3/data.yml @@ -0,0 +1,48 @@ +additionalProperties: + formFields: + - default: 40154 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: WebUI Port + labelZh: 网页端口 + required: true + rule: paramPort + type: number + - default: 40152 + edit: true + envKey: PEER_PORT_VALUE + labelEn: Peer Port + labelZh: BT端口 + required: true + rule: paramPort + type: number + - default: ./data/Watch + edit: true + envKey: WATCH_PATH + labelEn: Watch folder for torrent files + labelZh: 监视种子文件的文件夹 + required: true + type: text + - default: ./data/downloads + edit: true + envKey: DOWNLOAD_PATH + labelEn: Download folder path + labelZh: 下载文件夹路径 + required: true + type: text + - default: "" + edit: true + envKey: WEBUI_USER + labelEn: Webui user + labelZh: 网页用户 + required: false + type: text + - default: "" + edit: true + envKey: WEBUI_PWD + labelEn: Webui password + labelZh: 网页密码 + random: false + required: false + rule: paramComplexity + type: password diff --git a/apps/transmission/4.0.3/docker-compose.yml b/apps/transmission/4.0.3/docker-compose.yml new file mode 100644 index 00000000..b6daa703 --- /dev/null +++ b/apps/transmission/4.0.3/docker-compose.yml @@ -0,0 +1,32 @@ +version: '3' +services: + transmission: + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:9091" + - "${PEER_PORT_VALUE}:${PEER_PORT_VALUE}" + - "${PEER_PORT_VALUE}:${PEER_PORT_VALUE}/udp" + volumes: + - "./data/config:/config" + - "${DOWNLOAD_PATH}:/downloads" + - "${WATCH_PATH}:/watch" + environment: + - PUID=1000 + - PGID=1000 + - TZ=Asia/Shanghai + - TRANSMISSION_WEB_HOME= #optional + - USER=${WEBUI_USER} + - PASS=${WEBUI_PWD} + - WHITELIST= #optional + - PEERPORT=${PEER_PORT_VALUE} + - HOST_WHITELIST= #optional + image: linuxserver/transmission:4.0.3 + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/transmission/README.md b/apps/transmission/README.md new file mode 100644 index 00000000..473eceff --- /dev/null +++ b/apps/transmission/README.md @@ -0,0 +1,101 @@ +## About + +Transmission is a fast, easy, and free BitTorrent client. It comes in several flavors: + * A native macOS GUI application + * GTK+ and Qt GUI applications for Linux, BSD, etc. + * A Qt-based Windows-compatible GUI application + * A headless daemon for servers and routers + * A web UI for remote controlling any of the above + +Visit https://transmissionbt.com/ for more information. + +## Documentation + +[Transmission's documentation](https://github.com/transmission/transmission/blob/main/docs/README.md) is currently out-of-date, but the team has recently begun a new project to update it and is looking for volunteers. If you're interested, please feel free to submit pull requests! + +## Command line interface notes + +Transmission is fully supported in transmission-remote, the preferred cli client. + +Three standalone tools to examine, create, and edit .torrent files exist: transmission-show, transmission-create, and transmission-edit, respectively. + +Prior to development of transmission-remote, the standalone client transmission-cli was created. Limited to a single torrent at a time, transmission-cli is deprecated and exists primarily to support older hardware dependent upon it. In almost all instances, transmission-remote should be used instead. + +Different distributions may choose to package any or all of these tools in one or more separate packages. + +## Building + +Transmission has an Xcode project file (Transmission.xcodeproj) for building in Xcode. + +For a more detailed description, and dependencies, visit [How to Build Transmission](https://github.com/transmission/transmission/blob/main/docs/Building-Transmission.md) in docs + +### Building a Transmission release from the command line + + $ tar xf transmission-3.00.tar.xz + $ cd transmission-3.00 + $ mkdir build + $ cd build + # Use -DCMAKE_BUILD_TYPE=RelWithDebInfo to build optimzed binary with debug information. (preferred) + # Use -DCMAKE_BUILD_TYPE=Release to build full optimized binary. + $ cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo .. + $ make + $ sudo make install + +### Building Transmission from the nightly builds + +Download a tarball from https://build.transmissionbt.com/job/trunk-linux/ and follow the steps from the previous section. + +If you're new to building programs from source code, this is typically easier than building from Git. + +### Building Transmission from Git (first time) + + $ git clone https://github.com/transmission/transmission Transmission + $ cd Transmission + $ git submodule update --init --recursive + $ mkdir build + $ cd build + # Use -DCMAKE_BUILD_TYPE=RelWithDebInfo to build optimzed binary with debug information. (preferred) + # Use -DCMAKE_BUILD_TYPE=Release to build full optimized binary. + $ cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo .. + $ make + $ sudo make install + +### Building Transmission from Git (updating) + + $ cd Transmission/build + $ make clean + $ git submodule foreach --recursive git clean -xfd + $ git pull --rebase --prune + $ git submodule update --init --recursive + # Use -DCMAKE_BUILD_TYPE=RelWithDebInfo to build optimzed binary with debug information. (preferred) + # Use -DCMAKE_BUILD_TYPE=Release to build full optimized binary. + $ cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo .. + $ make + $ sudo make install + +## Contributing + +### Code Style + +You would want to setup your editor to make use of the .clang-format file located in the root of this repository and the eslint/prettier rules in web/package.json. + +If for some reason you are unwilling or unable to do so, there is a shell script which you can use: `./code_style.sh` + +### Translations + +See [language translations](https://github.com/transmission/transmission/blob/main/docs/Translating.md). + +## Sponsors + + + + + + + + + + + + +
[MacStadium]macOS CI builds are running on a M1 Mac Mini provided by MacStadium
[SignPath]Free code signing on Windows provided by SignPath.io, certificate by SignPath Foundation
diff --git a/apps/transmission/data.yml b/apps/transmission/data.yml new file mode 100644 index 00000000..8f50a7ae --- /dev/null +++ b/apps/transmission/data.yml @@ -0,0 +1,20 @@ +name: Transmission +tags: + - 工具 +title: 一个快速,简单,免费的BitTorrent客户端 +type: 工具 +description: 一个快速,简单,免费的BitTorrent客户端 +additionalProperties: + key: transmission + name: Transmission + tags: + - Tool + shortDescZh: 一个快速,简单,免费的BitTorrent客户端 + shortDescEn: A fast, easy, and free BitTorrent client + type: tool + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://transmissionbt.com/ + github: https://github.com/transmission/transmission + document: https://github.com/transmission/transmission \ No newline at end of file diff --git a/apps/transmission/latest/.env.sample b/apps/transmission/latest/.env.sample new file mode 100644 index 00000000..a603f9f8 --- /dev/null +++ b/apps/transmission/latest/.env.sample @@ -0,0 +1,8 @@ +CONTAINER_NAME="transmission" +DOWNLOAD_PATH="./data/downloads" +PANEL_APP_PORT_HTTP="40154" +PEER_PORT_VALUE="40152" +WATCH_PATH="./data/Watch" +WEBUI_USER="" +WEBUI_PWD="" + diff --git a/apps/transmission/latest/data.yml b/apps/transmission/latest/data.yml new file mode 100644 index 00000000..01ae4d36 --- /dev/null +++ b/apps/transmission/latest/data.yml @@ -0,0 +1,48 @@ +additionalProperties: + formFields: + - default: 40154 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: WebUI Port + labelZh: 网页端口 + required: true + rule: paramPort + type: number + - default: 40152 + edit: true + envKey: PEER_PORT_VALUE + labelEn: Peer Port + labelZh: BT端口 + required: true + rule: paramPort + type: number + - default: ./data/Watch + edit: true + envKey: WATCH_PATH + labelEn: Watch folder for torrent files + labelZh: 监视种子文件的文件夹 + required: true + type: text + - default: ./data/downloads + edit: true + envKey: DOWNLOAD_PATH + labelEn: Download folder path + labelZh: 下载文件夹路径 + required: true + type: text + - default: "" + edit: true + envKey: WEBUI_USER + labelEn: Webui user + labelZh: 网页用户 + required: false + type: text + - default: "" + edit: true + envKey: WEBUI_PWD + labelEn: Webui password + labelZh: 网页密码 + random: false + required: false + rule: paramComplexity + type: password diff --git a/apps/transmission/latest/docker-compose.yml b/apps/transmission/latest/docker-compose.yml new file mode 100644 index 00000000..5c80faf3 --- /dev/null +++ b/apps/transmission/latest/docker-compose.yml @@ -0,0 +1,32 @@ +version: '3' +services: + transmission: + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:9091" + - "${PEER_PORT_VALUE}:${PEER_PORT_VALUE}" + - "${PEER_PORT_VALUE}:${PEER_PORT_VALUE}/udp" + volumes: + - "./data/config:/config" + - "${DOWNLOAD_PATH}:/downloads" + - "${WATCH_PATH}:/watch" + environment: + - PUID=1000 + - PGID=1000 + - TZ=Asia/Shanghai + - TRANSMISSION_WEB_HOME= #optional + - USER=${WEBUI_USER} + - PASS=${WEBUI_PWD} + - WHITELIST= #optional + - PEERPORT=${PEER_PORT_VALUE} + - HOST_WHITELIST= #optional + image: linuxserver/transmission:latest + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/transmission/logo.png b/apps/transmission/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b9f52ba498e8dbcb6e6c26c6601306c92d227efd GIT binary patch literal 20006 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 B&zt}N literal 0 HcmV?d00001