新增图床地址白名单
All checks were successful
Java CI-CD with Maven / build (push) Successful in 12m23s

This commit is contained in:
zhangyuheng 2024-08-05 16:43:08 +08:00
parent 5896a30928
commit 78bb6c9447
6 changed files with 58 additions and 4 deletions

View File

@ -76,15 +76,21 @@
### 配置文件参考 ### 配置文件参考
```yaml ```yaml
# 地图画阵列的最大尺寸 宽
MaxFrameX: 32 MaxFrameX: 32
# 地图画阵列的最大尺寸 高
MaxFrameY: 18 MaxFrameY: 18
CheckUpdate: true # 是否启用经济系统 消耗玩家金钱生成地图画
Economy: Economy:
Enable: false Enable: false
CostPerMap: 100.0 CostPerMap: 100.0 # 每张地图画的单价 - 3*3的地图画需要9张地图画 也就是 9*100 = 900
# 图床地址白名单,不在白名单中的图床将无法使用,留空表示不启用地址白名单
AddressWhiteList: []
CheckUpdate: true
Debug: false Debug: false
``` ```

View File

@ -6,7 +6,7 @@
<groupId>cn.lunadeer</groupId> <groupId>cn.lunadeer</groupId>
<artifactId>ColorfulMap</artifactId> <artifactId>ColorfulMap</artifactId>
<version>2.1</version> <version>2.2</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>ColorfulMap</name> <name>ColorfulMap</name>

View File

@ -4,6 +4,8 @@ import cn.lunadeer.colorfulmap.utils.VaultConnect.VaultConnect;
import cn.lunadeer.colorfulmap.utils.XLogger; import cn.lunadeer.colorfulmap.utils.XLogger;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
import java.util.List;
public class Configuration { public class Configuration {
public Configuration(ColorfulMap plugin) { public Configuration(ColorfulMap plugin) {
@ -22,10 +24,12 @@ public class Configuration {
_check_update = _file.getBoolean("CheckUpdate", true); _check_update = _file.getBoolean("CheckUpdate", true);
_economy_enable = _file.getBoolean("Economy.Enable", false); _economy_enable = _file.getBoolean("Economy.Enable", false);
_price = (float) _file.getDouble("Economy.CostPerMap", 100.0); _price = (float) _file.getDouble("Economy.CostPerMap", 100.0);
_address_white_list = _file.getStringList("AddressWhiteList");
if (_economy_enable) { if (_economy_enable) {
XLogger.info("已启用经济系统"); XLogger.info("已启用经济系统");
new VaultConnect(_plugin); new VaultConnect(_plugin);
} }
saveAll();
} }
public void saveAll() { public void saveAll() {
@ -35,6 +39,7 @@ public class Configuration {
_file.set("CheckUpdate", _check_update); _file.set("CheckUpdate", _check_update);
_file.set("Economy.Enable", _economy_enable); _file.set("Economy.Enable", _economy_enable);
_file.set("Economy.CostPerMap", _price); _file.set("Economy.CostPerMap", _price);
_file.set("AddressWhiteList", _address_white_list);
_plugin.saveConfig(); _plugin.saveConfig();
} }
@ -98,6 +103,16 @@ public class Configuration {
_plugin.saveConfig(); _plugin.saveConfig();
} }
public List<String> getAddressWhiteList() {
return _address_white_list;
}
public void setAddressWhiteList(List<String> address_white_list) {
_address_white_list = address_white_list;
_file.set("AddressWhiteList", address_white_list);
_plugin.saveConfig();
}
private final ColorfulMap _plugin; private final ColorfulMap _plugin;
private FileConfiguration _file; private FileConfiguration _file;
private Boolean _debug; private Boolean _debug;
@ -106,4 +121,5 @@ public class Configuration {
private Boolean _check_update; private Boolean _check_update;
private Boolean _economy_enable; private Boolean _economy_enable;
private Float _price; private Float _price;
private List<String > _address_white_list;
} }

View File

@ -4,6 +4,7 @@ import cn.lunadeer.colorfulmap.ColorfulMap;
import cn.lunadeer.colorfulmap.StorageMaps; import cn.lunadeer.colorfulmap.StorageMaps;
import cn.lunadeer.colorfulmap.utils.ImageTool; import cn.lunadeer.colorfulmap.utils.ImageTool;
import cn.lunadeer.colorfulmap.utils.Notification; import cn.lunadeer.colorfulmap.utils.Notification;
import cn.lunadeer.colorfulmap.utils.UrlTools;
import cn.lunadeer.colorfulmap.utils.VaultConnect.VaultConnect; import cn.lunadeer.colorfulmap.utils.VaultConnect.VaultConnect;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -24,6 +25,10 @@ public class Multi {
public static ItemStack generate(Player player, String url, Float scale) { public static ItemStack generate(Player player, String url, Float scale) {
try { try {
if (!UrlTools.isInWhiteList(url)) {
Notification.error(player, "无法生成地图画: 此图床地址不被允许使用");
return null;
}
URL _url = new URL(url); URL _url = new URL(url);
BufferedImage raw_image = ImageIO.read(_url); BufferedImage raw_image = ImageIO.read(_url);
BufferedImage resized_image; BufferedImage resized_image;

View File

@ -0,0 +1,25 @@
package cn.lunadeer.colorfulmap.utils;
import cn.lunadeer.colorfulmap.ColorfulMap;
public class UrlTools {
public static boolean isInWhiteList(String url) {
if (ColorfulMap.config.getAddressWhiteList().isEmpty()) {
return true;
}
for (String whiteUrl : ColorfulMap.config.getAddressWhiteList()) {
if (url.startsWith(whiteUrl)) {
return true;
}
if (url.startsWith("http://" + whiteUrl)) {
return true;
}
if (url.startsWith("https://" + whiteUrl)) {
return true;
}
}
return false;
}
}

View File

@ -6,6 +6,8 @@ Economy:
Enable: false Enable: false
CostPerMap: 100.0 CostPerMap: 100.0
AddressWhiteList: []
CheckUpdate: true CheckUpdate: true
Debug: false Debug: false