更新 _posts/2022-12-12-bt-s3-comp.md

pipelines/925174615
mayx 2022-12-12 13:23:54 +00:00
parent 2d4609d0ab
commit 033f7ce32b
1 changed files with 20 additions and 0 deletions

View File

@ -0,0 +1,20 @@
---
layout: post
title: 如何自定义宝塔亚马逊S3云存储插件的端点
tags: [S3, 插件]
---
会点Python就可以自己改插件啦<!--more-->
# 起因
上次[用Koyeb安装了宝塔面板](/2022/11/29/free-server.html)之后在上面写了些测试用的网站,不过因为我开发网站的时候喜欢直接在面板上面改,本地基本上都是没代码备份的,不过最近宝塔面板好像有不少关于漏洞的传言,为了避免由于各种奇怪的事情把我的网站搞没,我想整点备份用的插件。
# 插件的使用与修改
宝塔面板的插件还是挺多的,想要备份的话支持的平台也挺多的,而且都很人性化,功能啥的小白也能操作的来。不过考虑到宝塔面板的不安全性,我也不希望我常用的网盘挂在上面当备份,万一被攻破了我网盘上的文件就被别人拿走了。
综合考虑下来什么OSS还是什么云盘感觉还是不太好选择但是S3 API兼容的平台还挺多的比如我[之前用过的4EVERLAND](/2022/10/19/web3.html)也有存储桶。另外之前随便逛的时候注册了一个Filebase也支持都是0门槛免费5GB。所以想用这个存我的备份文件。
不过宝塔面板上带的亚马逊S3云存储插件只能用亚马逊的云服务不能改endpoint……但是我也不想注册AWS除了看着难受不人性化而且好像免费用要绑信用卡最主要是我想备份到Filebase ~~不然白注册了?😂~~
所以我就去看了看这个插件的源代码还好代码是Python的理解起来倒是不难。最开始我是想着它会不会是直接通过HTTP API访问AWS S3的端点所以就直接各种搜索但是找了半天没看到一个和AWS有关的域名……看来投机取巧不太行……就只能慢慢看代码了。最终找了半天发现它好像用的一个叫boto3的库来连接AWS的……这名字起的是真的……我完全没法从这个名字中看出来它和AWS有半毛钱关系好像因为Boto是亚马逊河豚据说是粉色的尤其它代码里是通过`from boto3 import client`这种方式引入的代码里就没有和boto3有关系的词了……client这个词又很通用这代码看着是真的难受啊……
不过还好最终起码找到要改的地方了,其实很简单,它的“/www/server/panel/plugin/aws_s3/s3lib/client/aws_s3.py”这个文件是引入的关键其中`build_auth()`方法是连接S3的关键我在网上搜了一下boto3它也是支持自定义端点的只要在第100行后面加一个endpoint_url参数就可以了比如Filebase就加一句`endpoint_url="https://s3.filebase.com"`,保存之后其他的就在面板上配置就行了。
# 感想
这下就能看出来宝塔是有多垃圾了吧,明明就一个参数就能搞定的事情,它偏偏不给你加,而且就这样还啥功能都不支持,文件夹也删不了,也没法在面板里上传/下载文件而且还要给你装个boto3的依赖啥都不支持还要装个全功能的依赖实在是太垃圾了。不过小白不会写代码再垃圾的东西该用还得用吧🤣。