首页
关于我们
友链链接
壁纸下载
更多
统计中心
热点搜索
图床上传
推荐
剩余价值
磁链清理
IP定位
Search
1
[Win DD包] wes7-x86-cn-精简,安装后仅占用1.55G存储空间
25,539 阅读
2
v2rayN基础使用教程、配置说明、添加订阅、路由选择
8,618 阅读
3
保姆级教程!甲骨文ARM DD成Debian10并升级内核成5.10
6,224 阅读
4
N1教程:Openwrt安装docker webui界面(基于flippy openwrt n1固件)
5,260 阅读
5
ZFAKA小店Docker版之 数据的备份和迁移
5,144 阅读
Linux学堂
网站建设
网络资源
主题插件
固件工具
主机评测
MV频道
登录
Search
标签搜索
vps
typecho
linux
bench
mysql
cloudflare
nginx
lnmp
ssl
empirecms
openwrt
google
centos
docker
n1
301
qbittorrent
telegram
free
onedrive
V+变量
累计撰写
288
篇文章
累计收到
215
条评论
首页
栏目
Linux学堂
网站建设
网络资源
主题插件
固件工具
主机评测
MV频道
页面
关于我们
友链链接
壁纸下载
统计中心
热点搜索
图床上传
推荐
剩余价值
磁链清理
IP定位
搜索到
93
篇与
的结果
2024-12-25
新手PT刷流一键安装与使用教程
观看本教程即同意承担风险风险:如不遵守规则被ban,配置不规范上传少于下载导致分享率小于1看前须知:1.刷流的目的是为了获得较多的上传量,升级和获得更好的数据方便求药,但是请牢记不要进行跳车等损人利己的行为,用盒子刷流可以快速出种,这种双赢的局面才是最好的,维护pt友好氛围人人有责。建议刷流+保种,这样数据才是真的好看,佬才会发药。我纯是家宽刷了100T,保种200T,单站最多11T,长期保种才是对站点最大的支持。2.各个站点对盒子有规定,请查询清楚站点规定,如要求盒子备案,在站点规则或者常见问题用Ctrl+F搜索“盒子”(可能不全,在公告论坛也有相关规则)即可查到相应规则有些站点要求上传不能超过100Mbps,超过即ban,不要做出没有查清规则就盲目刷流的不负责行为。刷流不规范,上家两行泪。3.盒子你可以理解为大硬盘的vps,常见的刷流厂家有netcup,hetzner安装刷流工具1.ssh登录你的vps,我这边推荐xshell和termius2.输入以下命令,username和password修改你自己的和用户名,密码bash <(wget -qO- https://raw.githubusercontent.com/jerry048/Dedicated-Seedbox/main/Install.sh) -u username -p password -c 3072 -q 4.3.9 -l v1.2.19 -v -x具体解释如下:用法 bash <(wget -qO- https://raw.githubusercontent.com/jerry048/Dedicated-Seedbox/main/Install.sh) -u <用戶名稱> -p <密碼> -c <緩存大小(單位:MiB)> -q <qBittorrent 版本> -l <libtorrent 版本> -b -v -r -3 -x -o Options 1. -u: 用戶名稱 2. -p: 密碼 3. -c: qBitorrent 的緩存大小 4. -q: qBittorrent 版本 5. -l: libtorrent 版本 6. -b: 安裝autobrr 7. -v: 安裝vertex 8. -r: 安裝 autoremove-torrents 9. -3: 啓動 BBR V3 10.-x: 啓動 BBRx 11.-o: 自定義端口 範例 bash <(wget -qO- https://raw.githubusercontent.com/jerry048/Dedicated-Seedbox/main/Install.sh) -u jerry048 -p 1LDw39VOgors -c 3072 -q 4.3.9 -l v1.2.19 -v -x 解釋 1. 用戶名稱 是 jerry048 2. 密碼 是 1LDw39VOgors 3. 緩存大小 是 3GB 4. 安裝 qBittorrent 4.3.9 - libtorrent-v1.2.19 6. 安裝 vertex 7. 啓動 BBRx请到 杰大仓库 仓库点上star3.等待命令执行完成,出现qb和vertex的登录信息,根据链接点开vertex,登录,用户名密码是你自己配置的配置刷流工具感谢栗佬开发这么好的工具,请到栗佬github仓库点上star1.配置删种规则在左侧选择规则组件-删种规则依次加入以下几条规则,自己填入即可,根据自己盒子进行数据调整长时间不发车 别名: 长时间不发车 持续时间: 1200秒 优先级: 0 类型: 普通 限制条件: - 上传速度 - 等于 - 0 - 下传速度 - 等于 - 0别名: 5G空闲删种 持续时间: 留空 优先级: 0 类型: 普通 限制条件: - 剩余空间 - 小于 - 5*1024*1024*1024别名: 无效做种 持续时间: 留空 优先级: 0 类型: 普通 限制条件: - 种子状态 - 包含于 - stalledUP,uploading - 上传速度 - 小于 - 512*1024 - 完成时间 - 大于 - 10*3600别名: 超时下载 持续时间: 留空 优先级: 0 类型: 普通 限制条件: - 添加时间 - 大于 - 48*3600 - 种子分类 - 不包含于 - KEEP,KEEP2别名: 黑车 持续时间: 留空 优先级: 0 类型: 普通 限制条件: - 下载速度 - 大于 - 30*1024*1024 - 上传速度 - 小于 - 6*1024*1024 - 种子分类 - 不包含于 - KEEP,KEEP2别名: 慢车 持续时间: 180s 优先级: 0 类型: 普通 限制条件: - 下载速度 - 小于 - 1*1024*1024 - 上传速度 - 小于 - 512*1024 - 种子分类 - 不包含于 - KEEP,KEEP22.配置下载器在左侧基础组件-下载器地址填脚本告诉你的qb地址,账户密码是你自己设置的,脚本也有提示,把配置的删种规则全部加上,里面你可以自己设置,保存,如图所示即为正常image3.配置RSS规则在左侧规则组件-rss规则根据自己需求灵活修改,种子名称用来匹配官种,自己灵活修改,一般来说官种更好另外种子大小看你盒子的硬盘大小灵活调整别名: 你要刷流的站点 类型: 普通 条件: - 种子大小 - 大于 - 10*1024*1024*1024 - 种子大小 - 小于 - 100*1024*1024*1024 - 种子名称 - 包含 - wiki4.配置站点 经提醒这一步不影响刷流在左侧基础组件-站点添加你要刷流的站点,填入cookiecookie获取是到站点F12点网络(network),再按F5,找到像网站的点开(什么php,index之类的),往下翻就能找到cookie5.配置RSS任务在左侧任务配置-RSS任务别名选你自己要刷流的站点,填入rss链接根据自己需求和站点要求选择配置“限制上传速度“”限制下载速度“拉到最下面”选择规则“勾选你要刷流的站点,点击试运行看看有没有错误,正常的话点击完成。如何获取rss链接:去到站点,点右上角像wifi一样的图标,点生成订阅链接,选择下面的链接这样子就能愉快刷流了,循环3,4,5步添加各个站点刷流运行命令service qbittorrent-nox stop #停止qbittorrent service qbittorrent-nox start #启动qbittorrent
2024年12月25日
344 阅读
0 评论
0 点赞
2024-12-21
鸿蒙Next也能科学上网?Clash Meta for harmorny next os
前言HarmonyOS Next 开源GoLang开源应用开发学习使用,Github github 。不知道可以放在败家里面不,如果买手机刷了只能国产软件的Harmony OS Next,应该是一种非常败家之行为? 关于鸿蒙系统如何安装鸿蒙安装器,本站之前曾介绍过:让鸿蒙也能自由安装应用,小白鸿蒙开源自助餐图文教程操作系统要求:Windows几乎都支持。macOS:旧版本可以尝试终端输入:sudo spctl --master-disable来关闭签名验证最新版 Sequoia 安全性要求太高,未签名软件不能运行了。HarmonyOS Next 手机设置进入系统设置——关于本机——点击软件版本多次,即可重启进入开发者模式。开始安装下载 Auto Installer 并安装。目前最新版是AutoInstaller.Setup.1.2.4.exe,后续如有更新,可以在作者发布页找。仓库地址;GitHub - likuai2010/auto-installer: HarmonyOS Next Hap installer下载 Clash For HarmonyOS hap 安装包.hap 文件是鸿蒙操作系统(HarmonyOS)应用程序的封装包格式。鸿蒙系统使用 .hap 文件来分发和安装应用程序,类似于 Android 的 .apk 文件。下载测试版 clash meta安装 .hap 至手机打开 Auto Installer,单击上传安装包:点击开始构建构建完毕后,点击下一步,软件会要求登陆华为账号,登录即可。在登录完毕后,点击下一步。Auto Installer 将使用你的华为开发者账号对 .hap 安装包签名。签名完毕后即可安装至手机。安装完,熟悉的界面又回来了,配置clash的教程可执行搜索。最后当然,能科学了了,下一步教大家怎么在鸿门系统安装Youtube、Telegram和Twitter这些应用.纯血鸿蒙系统如何安装电报、推特、Tiktok和油管APP
2024年12月21日
2,800 阅读
4 评论
0 点赞
2024-12-21
使用tg机器人自动下载并上传频道内文件到本地&网盘
因为要转存tg某些群的视频和图片(比如马里奥),但是太多了一个一个转存太麻烦了,有没有什么好的办法呢?于是找到了这个项目:GitHub地址:telegram_channel_downloader如果运行运行脚本时出现164行报错,那可能就是你的系统或是环境问题,这一点要注意。一. Telegram API 申请打开 https://my.telegram.org/apps ,登录后选择 Apps ,填写相关信息后自动生成 apiId 和 apiHash 等信息。如果之前申请过,进入 Apps 后即可看到。二. 搭建tg机器人下载脚本git clone https://github.com/snow922841/telegram_channel_downloader.git安装 rclone。如果只需要下载到本地,则无需安装这一步Rclone安装及检查命令:curl https://rclone.org/install.sh | sudo bashrclone --version* 安装完之后一定要记得配置好需要上传的网盘。进入脚本目录cd telegram_channel_downloader安装依赖pip3 install -r requirements.txt修改 telegram_channel_downloader.py 文件内的相关信息:api_id、api_hash:telegram api得到的信息,分别填入对应位置;bot_token:联系@BotFather 创建一个机器人,也可以是现有的。将获得的token。填入其中;admin_id:联系@get_id_bot 发送随意消息获取;如果需要上传到OD:应修改脚本中以下参数:drive_id=”,drive_name=’onedrive’,onedrive 就是你配置 rclone 的时候填的网盘名称,还有第102行的“fclone”替换为“rclone”;所有配置都有相应备注,根据需要修改。运行脚本:可用SCREEN保持在线python3 tg_channel_downloader.py # 输入 telegram 所绑定的手机号,获取验证码并输入后即可使用tg机器人自动下载并上传频道内文件到本地&网盘screen相关命令:创建一个screen会话:screen -S xx #xx为创建会话的名称隐藏并保留当前会话窗口:按Ctrl+A,再按"D"键恢复会话窗口:screen -r xx #恢复名字为xx的会话如果忘记或者没有设定会话名称:screen -ls #列出所有会话,找到并使用恢复命令即可关闭会话窗口exit运行:给机器人发送 /start 频道的链接 0 ,就可以正式开始运行脚本,下载文件了。使用tg机器人自动下载并上传频道内文件到本地&网盘频道的链接:点击你的频道名就能看到频道链接;0:这是消息ID,可以自己定义,0代表的是最早的信息。如果要从特定某条信息往后下载,鼠标右键点击该条消息,选择复制该消息直链,就能从链接末尾看到消息ID数字。三. 效果使用tg机器人自动下载并上传频道内文件到本地&网盘使用tg机器人自动下载并上传频道内文件到本地&网盘四. 如果你的服务器没有流量你可以用自己的电脑你可以用google colab打开google colab,并登录文件-新建笔记输入:!bash;点击左边的播放按钮使用tg机器人自动下载并上传频道内文件到本地&网盘这就相当于一个linux了,之后安装RCLONE,配置网盘,下载脚本文件,进入脚本文件夹内,安装依赖。这时要修改脚本文件,但是google colab修改文件内容不是那么容易,那么可以这样做:点击左边的播放按钮,暂停这行代码,在下面新建一行代码:使用tg机器人自动下载并上传频道内文件到本地&网盘在这行代码下面粘贴修改好的tg_channel_downloader.py文件。点击左边的播放按钮。再回到第一行代码,将!bash改成!python3 tg_channel_downloader.py,点击播放按钮运行即可,就可以输入telegram信息了。防止Google Colab自动断开代码:每60分钟自动运行代码刷新,解除90分钟断开限制.使用方法:colab页面按下 F12或者 Ctrl+Shift+I (mac按 Option+Command+I) 在console(控制台) 输入以下代码并回车。复制以下代码粘贴在浏览器console!!不要关闭浏览器以免失效。function ConnectButton(){console.log("Connect pushed"); document.querySelector("#connect").click() }setInterval(ConnectButton,60000);
2024年12月21日
139 阅读
0 评论
0 点赞
2024-12-20
MJJ 提醒工具 —— 不再错过续费、定期激活和抢购
0 前言相信很多MJJ和我一样,因为平时没时间关注鸡圈,导致经常错过一些关键的时间节点,比如传家宝的续费,黑五抢购,一些限时的优惠,因此,我开发了这一款MJJ提醒工具,无需服务器,还是薅我们的赛博活佛——cloudflare的羊毛,为了避免网站沉寂不工作,我们使用监控工具 cron-job.org Console 进行定时触发。灵感来自 woniu336大佬 的已有项目 MJJ订阅追踪,但是大佬的项目提醒和部署在服务器上不适合我,所以自建了一个1 正文下面就开始搭建吧1) 准备工具Cloudflare 账号Cloudflare PagesCloudflare D1 数据库Telegram Bot Token 和 Chat ID企业微信 Webhook 地址2) 数据库在 Cloudflare Workers 中创建 D1 数据库,然后在控制台执行查询命令:CREATE TABLE reminders ( id TEXT PRIMARY KEY, title TEXT NOT NULL, content TEXT NOT NULL, remind_time TEXT NOT NULL, cycle_type TEXT NOT NULL, status INTEGER DEFAULT 0, link TEXT, cron_job_id INTEGER, created_at TEXT );3) 部署步骤注册并且获取cron-job.org Console的api key只能创建一个,但是可以随时修改4) fork项目1143520/ deadline 或者下载源码,git上传在 Cloudflare Pages 中创建 pages 新项目连接您的 Git 仓库(GitHub、GitLab 等)在 Pages 项目设置中:绑定 D1 数据库,设置变量为DB配置环境变量(见环境变量配置部分)CRON_SECRET: 定时任务的访问密钥(根据个人喜好设置)CRONJOB_API_KEY: cron-job.org 的 API KEYTG_BOT_TOKEN: Telegram Bot Token(推送到tg机器人)(这个应该都会吧)TG_CHAT_ID: Telegram Chat IDWECOM_KEY: 企业微信 Webhook 地址(完整的url,推送到微信企业机器人,可选)(这个也可以网上找教程)5) 设置完成后重试部署使用
2024年12月20日
27 阅读
0 评论
0 点赞
2024-12-18
获取Telegram私人电报频道的ID的两种办法
今天加了一个自动通知微博更新的Telegram机器人,由于需要发送到我的私人群组,但是找不到私人频道的ID,始终发送失败,试过很多方式全都不能获取到正确的ID最后在Github上发现了正确使用方法解决方案在这里: https://github.com/GabrielRF/telegram-id#web-channel-id解决方案如下在网页版Telegram的帐户下登录:https://web.telegram.org点击你的私人的频道。这是浏览器的网址会发生变化,变成这样https://web.telegram.org/#/im?p=c1055587116_11052224402541910257从浏览器地址栏获取 1055587116 ,并添加 -100 作为前缀。所以,你的频道ID是 -1001055587116后来又发现一个更加简便的方法添加机器人 @get_id_bot 到你的频道,正常情况他会自动发言告诉你频道ID如果没有发言,可以在群组内输入 /my_id@get_id_bot 获取ID
2024年12月18日
139 阅读
1 评论
0 点赞
2024-12-17
来尝试无限容量,可以webdav挂载的teldrive吧!
0 前言两个月前偶然间看到telegram团队做了一个网盘叫teldrive,据说是可以无限存储的网盘,且可以webdav挂载到本地,于是部署到了服务器上,但当时没有写博客记录,最近空闲了决定补一下博客。1 teldrive介绍teldrive仓库地址 teldrive是一个通过telegram账号登陆后存储到私人账户空间的一个网盘空间,类似于google drive和onedrive特点如下数据很安全,官方保证存储数据不会丢失可以webdav挂载到本地无限容量上传下载速度取决于你的服务器链接至telgram服务器的速度缺点是无法直链共享,共享需要走自己的服务器流量这里可以看到这个url指向本地ip,需要公网环境才可以共享2 部署teldrive根据teldrive官方仓库的指引即可本文采取docker-compose部署的方式填写配置信息首先创建并填写config.toml创建config,根据提示填写数据库地址,secret即可数据库地址比较容易理解,secret则是可以通过openssl rand -hex 64生成,或者通过官方的vercel app链接一键获取这里可能会比较疑惑的是app-id和app-hash其实app-id和app-hash是telegram的api相关密钥telegram 获取api密钥根据英文指引即可获得,这里不再赘述特别提示:如果你部署在国内本地服务器,那你需要在[tg]下添加proxy选项最终我的配置是这样的[db] data-source = "postgres://postgres:xxx@postgres_db:5432/teldrive" [jwt] secret = "xxxxxxx" [tg] app-id = "xxxx" app-hash = "xxxxxxxxxxxxxxxxxxxxxxxx" proxy = "http://192.168.50.171:10809"填写docker-compose我的docker-compose.yml经供参考在同一文件夹下创建docker-compose.ymlvim docker-compose.yml填入如下内容services: teldrive: image: ghcr.io/tgdrive/teldrive restart: always container_name: teldrive ports: - '8080:8080' volumes: - ./config.toml:/config.toml - ./session.db:/session.db networks: - teldrive postgres_db: image: ghcr.io/tgdrive/postgres:17-alpine container_name: postgres_db restart: always networks: - teldrive environment: - POSTGRES_PASSWORD=xxxxxxxxx - POSTGRES_DB=teldrive volumes: - postgres-data:/var/lib/postgresql/data volumes: postgres-data: networks: teldrive: external: true注意这里POSTGRES_DB和POSTGRES_PASSWORD环境信息需要修改为同刚才config.toml相同的配置,如我的配置[db]data-source = "postgres://postgres:xxx@postgres_db:5432/teldrive"这里postgres://代表协议对接postgresql数据库冒号前则是用户名冒号后面的xxx则是密码@后面就是访问终结点,postgres_db,可以看作是ip5432则是端口,这里是默认没有改/teldrive代表访问的数据库是teldrive其实就是数据库的标准url访问i形式://:@:<port(optional)>/<database_name>顺带一提halo博客用的springboot,链接mysql的话也一个格式mysql://twoonefour:
[email protected]
/halo题外话扯远了,配置完docker-compose.yml后,这里还需要一个session.db文件,创建一下就可以开启容器了touch session.dbdocker-compose up -d之后可以尝试访问http://localhost:8080对接rclone使用webdavrclone是一个开源的用于挂载盘到本地的一个开源软件github仓库地址但这里teldrive是不能使用开源的rclone的,坑死我了teldrive需要使用telegram团队魔改的版本需要使用魔改版本需要使用魔改版本魔改teldrive 仓库地址直接从release下载下来即可使用下载完以后创建文件配置,位于~/.config/rclone/rclone.conf[teldrive]type = teldriveapi_host = http://localhost:8080 # default hostaccess_token = #session token obtained from cookieschunk_size = 500Mupload_concurrency = 4encrypt_files = false # Enable this to encrypt files make sure encryption key is not empty in teldrive config file.random_chunk_name= true # Use random chunk names when uploading files to channel instead of original filename.需要动脑筋的是access_token,在teldrive登陆以后,在控制台cookie中获取user-session就是access_tokenuser-session就是access_token复制这个值填上就可以了其他的根据需要填写填完以后就可以运行了,我的命令示例如下rclone mount teldrive:/ /volume3 \--vfs-cache-mode full \--vfs-cache-max-age 72h \--vfs-cache-poll-interval 5m \--vfs-cache-max-size 15G \--dir-cache-time 200h \--cache-dir /opt/rclonecache这里我是挂载到/volume3下的其他参数请看文档rclone文档自动挂载请参照官方文档自动挂载 rclone-as-unix-mount-helper我这里给出我的方案,我是使用的systemdvim /usr/lib/systemd/system/rclone.service填入以下内容[Unit]Description=Rclone webdavAfter=network.target[Service]User=rootNice=1RestartSec=5Restart=alwaysSuccessExitStatus=0 1ExecStart=rclone mount teldrive:/ /volume3 --vfs-cache-mode full --vfs-cache-max-age 72h --vfs-cache-poll-interval 5m --vfs-cache-max-size 15G --dir-cache-time 200h --cache-dir /opt/rclonecache[Install]WantedBy=multi-user.target接着素质二连即可启动systemctl daemon-reloadsystemctl start rclone之后就能同普通文件夹一样,访问/volume3就是访问远程,使用cp命令,mv命令都可以,看你的脑洞要如何运用了顺带一提我的nas就是整个备份到了teldrive里,可以看到我已经用了1T空间了.原文地址 原文地址 至此搭建结束,enjoy
2024年12月17日
169 阅读
0 评论
0 点赞
2024-12-15
PY的vps成本管理器简单代码
一直以来,本人有个痛点,就是手持太多vps。有月付的,年付的,半年的,季付的。 各种结算货币。完全无统一标准。导致财务管理困难。所以就诞生了这个工具简单易用,只需要把如下代码保存到任意.py文件并且在cmd运行即可。python xx.py程序会自动在相同目录创建vps_cost_config.json文件用作数据存储。感谢:chatgptimport tkinter as tk from tkinter import messagebox, ttk # 引入 ttk 组件,界面更美观 import json # =============== 配置文件相关 =============== CONFIG_FILE_PATH = "vps_cost_config.json" default_exchange_rates = {'USD': 1, 'CNY': 7.1, 'EUR': 0.85} def load_config(): try: with open(CONFIG_FILE_PATH, 'r') as file: return json.load(file) except FileNotFoundError: return {'exchange_rates': default_exchange_rates, 'vps_list': []} def save_config(config): with open(CONFIG_FILE_PATH, 'w') as file: json.dump(config, file, indent=4) # =============== 功能函数 =============== def update_exchange_rates(): try: exchange_rates = {currency: float(var.get()) for currency, var in currency_rate_vars.items()} config['exchange_rates'] = exchange_rates save_config(config) update_vps_list() update_monthly_costs() messagebox.showinfo("成功", "汇率已更新并保存。") except ValueError: messagebox.showerror("错误", "请输入有效的数字汇率。") def add_vps(): try: name = vps_name_var.get() amount = float(amount_var.get()) vps = { 'name': name, 'payment_cycle': payment_cycle_var.get(), 'amount': amount, 'currency': currency_var.get() } config['vps_list'].append(vps) save_config(config) update_vps_list() clear_vps_fields() update_monthly_costs() except ValueError: messagebox.showerror("错误", "请输入有效的费用。") def delete_vps(): selected = vps_listbox.curselection() if not selected: messagebox.showerror("错误", "请选择一个 VPS 项目删除。") return selected_name = vps_listbox.get(selected).split(' ')[0] config['vps_list'] = [v for v in config['vps_list'] if v['name'] != selected_name] save_config(config) update_vps_list() update_monthly_costs() def update_vps_list(): vps_listbox.delete(0, tk.END) for vps in config['vps_list']: vps_listbox.insert(tk.END, f"{vps['name']} ({vps['payment_cycle']}) - {vps['amount']} {vps['currency']}") def update_monthly_costs(): monthly_costs, total_cost = calculate_monthly_cost(config['vps_list'], config['exchange_rates']) monthly_cost_display.config(state="normal") monthly_cost_display.delete("1.0", tk.END) max_name_length = max(len(name) for name in monthly_costs.keys()) # 获取最长名字长度 separator = '-' * 40 # 分隔符 for name, cost in monthly_costs.items(): # 价格右对齐,名字用固定宽度 formatted_line = f"{name.ljust(max_name_length)} | {str(cost).rjust(8)} CNY\n" monthly_cost_display.insert(tk.END, formatted_line) monthly_cost_display.insert(tk.END, f"{separator}\n") monthly_cost_display.insert(tk.END, f"{'月度总成本'.ljust(max_name_length)} | {str(total_cost).rjust(8)} CNY") monthly_cost_display.config(state="disabled") def calculate_monthly_cost(vps_list, rates): total_cost = 0.0 costs = {} for vps in vps_list: amount = vps['amount'] / {'annual': 12, 'semi-annual': 6, 'quarterly': 3, 'monthly': 1}[vps['payment_cycle']] cost = round(amount * rates.get(vps['currency'], 1), 2) costs[vps['name']] = cost total_cost += cost return costs, round(total_cost, 2) def clear_vps_fields(): vps_name_var.set("") amount_var.set("") payment_cycle_var.set("annual") currency_var.set("USD") # =============== 主窗口与布局 =============== root = tk.Tk() root.title("VPS 成本管理") root.geometry("900x600") # 窗口大小 config = load_config() # =========== 左侧:汇率设置 =========== left_frame = tk.LabelFrame(root, text="汇率设置", padx=10, pady=10) left_frame.pack(fill="y", side="left", padx=10, pady=10) currency_rate_vars = {} for idx, (currency, rate) in enumerate(config['exchange_rates'].items()): tk.Label(left_frame, text=f"{currency} 汇率:").grid(row=idx, column=0, sticky="e", pady=5) rate_var = tk.StringVar(value=str(rate)) currency_rate_vars[currency] = rate_var tk.Entry(left_frame, textvariable=rate_var, width=10).grid(row=idx, column=1, pady=5) tk.Button(left_frame, text="更新汇率", command=update_exchange_rates).grid(columnspan=2, pady=10) # =========== 中间:VPS 管理 =========== middle_frame = tk.LabelFrame(root, text="VPS 管理", padx=10, pady=10) middle_frame.pack(fill="both", expand=True, side="left", padx=10, pady=10) vps_name_var, amount_var = tk.StringVar(), tk.StringVar() payment_cycle_var, currency_var = tk.StringVar(value="annual"), tk.StringVar(value="USD") # 输入框 tk.Label(middle_frame, text="名称:").grid(row=0, column=0, sticky="e") tk.Entry(middle_frame, textvariable=vps_name_var).grid(row=0, column=1, pady=5) tk.Label(middle_frame, text="费用:").grid(row=1, column=0, sticky="e") tk.Entry(middle_frame, textvariable=amount_var).grid(row=1, column=1, pady=5) tk.Label(middle_frame, text="周期:").grid(row=2, column=0, sticky="e") ttk.Combobox(middle_frame, textvariable=payment_cycle_var, values=["annual", "semi-annual", "quarterly", "monthly"]).grid(row=2, column=1) tk.Label(middle_frame, text="货币:").grid(row=3, column=0, sticky="e") ttk.Combobox(middle_frame, textvariable=currency_var, values=["USD", "CNY", "EUR"]).grid(row=3, column=1) tk.Button(middle_frame, text="添加 VPS", command=add_vps).grid(columnspan=2, pady=10) # 列表框 vps_listbox = tk.Listbox(middle_frame, width=45, height=15) vps_listbox.grid(row=5, columnspan=2, pady=10) tk.Button(middle_frame, text="删除选中", command=delete_vps).grid(columnspan=2, pady=5) # =========== 右侧:成本展示 =========== right_frame = tk.LabelFrame(root, text="每月成本", padx=10, pady=10) right_frame.pack(fill="y", side="right", padx=10, pady=10) monthly_cost_display = tk.Text(right_frame, width=42, height=40, state="disabled") monthly_cost_display.pack() # 初始化显示 update_vps_list() update_monthly_costs() root.mainloop()
2024年12月15日
22 阅读
0 评论
0 点赞
2024-12-04
Centos安装PT下载工具系列——qBittorrent
一.介绍如果问起在Windows上用什么软件下载BT或是PT,那么我觉得可能大部分人都会说是uTorrent,简单易用速度还快,这就是uTorrent受欢迎的原因,但是,在Linux平台上的uTorrent就不是这么回事了。所以qBittorrent打出了uTorrent替代品的旗号,虽然可能还有很远的路要走,但是它确实有不少可取之处。二.安装qBittorrent在Linux上有GUI模式以及WebGUI模式,我肯定是选择后者的,毕竟服务器大多不装界面,节省资源。下面就来说一下怎么装1.还是先得装libtorrent,这个是rasterbar版本,之前deluge我是懒得装了,这儿没办法,还得装,研究了下,真的是神坑,我从下午研究到了晚上才把这堆坑全填了,网上教程要么太老,要么全是ubuntu的,简直感人肺腑,甚至我这部分的教程写了删删了写来来回回好几次。yum groupinstall 'Development Tools' -y yum install centos-release-scl -y yum install openssl-devel qt5-qtbase-devel qt5-linguist devtoolset-3-toolchain -y yum remove boost* -y wget -O /etc/yum.repos.d/enetres.repo http://repo.enetres.net/enetres.repo sed -i "s/^enabled = 1/enabled = 0/g" /etc/yum.repos.d/enetres.repo yum install --enablerepo=enetres boost-devel scl enable devtoolset-3 bash cd /opt/ wget https://github.com/arvidn/libtorrent/releases/download/libtorrent-1_1_4/libtorrent-rasterbar-1.1.4.tar.gz tar xzf libtorrent-rasterbar-1.1.4.tar.gz cd libtorrent-rasterbar-1.1.4 CXXFLAGS="-std=c++11" ./configure --disable-debug --prefix=/usr make && make install ln -s /usr/lib/pkgconfig/libtorrent-rasterbar.pc /usr/lib64/pkgconfig/libtorrent-rasterbar.pc ln -s /usr/lib/libtorrent-rasterbar.so.9 /usr/lib64/libtorrent-rasterbar.so.9...PS.吐槽时间boost这边是坑之一,自己编译各种出问题,所以我翻来翻去找到了这个源,能直接用真好c++11也是坑之一,因为libtorrent的某个参数是GCC新版本的,相对老版本改了名字,所以老版本要改动才能用,但是老版本GCC在qBittorrent那边出问题了,所以索性从头就用高版本GCC。但是!!!因为默认没添加这个参数,会导致qBittorrent那边最后link错误,找了半天才找到这个解决办法反正我坑全踩了,你们直接复制粘贴就能跑通参考:①. https://github.com/qbittorrent/qBittorrent/issues/5265②. https://ermahgerdlernux.wordpress.com/2015/07/20/installing-qbittorrent-on-centos-6-6-64bit/2.现在可以开始装qBittorrent了,请务必保持在高版本GCC的环境中,如果退出了请重新运行上面的scl命令cd /opt/ wget -O qBittorrent-release-3.3.11.tar.gz https://github.com/qbittorrent/qBittorrent/archive/release-3.3.11.tar.gz tar xzf qBittorrent-release-3.3.11.tar.gz cd qBittorrent-release-3.3.11 ./configure --prefix=/usr --disable-gui gmake && make install...不出意外的话这儿就没问题了,然后你会得到qbittorrent-nox下面我们加个启动脚本方便运行管理cat >/etc/init.d/qbittorrent<<'EOF' #!/bin/sh # # chkconfig: - 80 20 # description: qBittorrent headless torrent server # processname: qbittorrent-nox # # Source function library. . /etc/init.d/functions QBT_USER="qbittorrent" QBT_LOG="/var/log/qbittorrent.log" prog=qbittorrent-nox args="" RETVAL=0 start() { if [ -x /etc/rc.d/init.d/functions ]; then daemon --user $QBT_USER $prog $args else su - $QBT_USER -c "$prog $args" > /var/log/qbittorrent.log & fi echo -n $"Starting qBittorrent: " RETVAL=$? [ $RETVAL = 0 ] && success || failure echo return $RETVAL } status() { qbstatus=`ps ax|grep $prog|grep -v grep` if [ "$qbstatus" = "" ]; then echo "qBittorrent is stopped !" else echo "qBittorrent is running !" fi } stop() { echo -n $"Stopping qBittorrent: " killall qbittorrent-nox success echo } case "$1" in start) start ;; stop) stop ;; status) status ;; restart|reload) stop sleep 2 start ;; *) echo "Usage: $0 {start|status|stop|restart|reload}" exit 1 esac exit $RETVAL EOF chmod +x /etc/init.d/qbittorrent chkconfig --add qbittorrent chkconfig qbittorrent on groupadd qbittorrent useradd qbittorrent -g qbittorrent...然后你就能直接运行了访问http://IP:8080/ 就能看到WebGUI了默认用户名是admin,密码是adminadmin如果要修改端口请在上方启动脚本中的args后面添加--webui-port=XXXX
2024年12月04日
44 阅读
0 评论
0 点赞
2024-12-04
如何挂PT和BT: Ubuntu安装qBittorrent webui (qbittorrent-nox)
1.添加源sudo add-apt-repository ppa:qbittorrent-team/qbittorrent-stable sudo apt update2.安装成功添加源后,更新包的信息,再安装qBittorrent webui:sudo apt install qbittorrent-nox3.启动成功安装后,输入以下命令启动软件:qbittorrent-nox启动后,在浏览器中输入http://ip地址:8080,即可打开qBittorrent的网页端。默认的用户名是admin,默认密码为adminadmin。如果要使用其他端口,只需在启动命令中加入--webui-port=XXXX参数,其中XXXX为端口号:qbittorrent-nox --webui-port=XXXX4.设置开机自启动在 /etc/systemd/system 下,新建文件 qbittorrent-nox.service ,vim /etc/systemd/system/qbittorrent-nox.service内容如下[Unit] Description=qBittorrent-nox After=network.target [Service] User=root Type=forking RemainAfterExit=yes ExecStart=/usr/bin/qbittorrent-nox -d [Install] WantedBy=multi-user.target再执行以下命令:systemctl enable qbittorrent-nox下一次开机时会自动启动qbittorent。如果要手动开启、停止和重启,参考以下命令:sudo service qbittorrent-nox start sudo service qbittorrent-nox stop sudo service qbittorrent-nox restart配置QBittorrent webui的配置文件qBittorrent.conf在~/.config/qBittorrent/文件夹中。更多命令启动 qbittorrent-nox 后台启动 qbittorrent-nox -d 查看版本 qbittorrent-nox -v 获得帮助 qbittorrent-nox -h
2024年12月04日
84 阅读
0 评论
0 点赞
2024-12-04
Linux开启bbr的第2种方法
1.修改系统变量echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf2.保存生效sysctl -p3.查看内核是否已开启BBRsysctl net.ipv4.tcp_available_congestion_control4.显示以下即已开启:# sysctl net.ipv4.tcp_available_congestion_control net.ipv4.tcp_congestion_control = bbr5.查看BBR是否启动lsmod | grep bbr6.显示以下即启动成功:# lsmod | grep bbr tcp_bbr 20480 14
2024年12月04日
64 阅读
1 评论
0 点赞
1
...
6
7
8
...
10