Implemented plugin loading whitelist/blacklist by config file (#2783)

This commit is contained in:
Dylan T
2019-03-24 16:18:13 +00:00
committed by GitHub
parent aea775c7c6
commit 9c76fb7d96
5 changed files with 131 additions and 4 deletions

View File

@ -82,6 +82,7 @@ use pocketmine\permission\DefaultPermissions;
use pocketmine\permission\PermissionManager;
use pocketmine\plugin\PharPluginLoader;
use pocketmine\plugin\Plugin;
use pocketmine\plugin\PluginGraylist;
use pocketmine\plugin\PluginLoadOrder;
use pocketmine\plugin\PluginManager;
use pocketmine\plugin\ScriptPluginLoader;
@ -106,6 +107,7 @@ use function array_shift;
use function array_sum;
use function base64_encode;
use function bin2hex;
use function copy;
use function count;
use function define;
use function explode;
@ -147,6 +149,7 @@ use function strtolower;
use function time;
use function touch;
use function trim;
use function yaml_parse;
use const DIRECTORY_SEPARATOR;
use const PHP_EOL;
use const PHP_INT_MAX;
@ -1227,7 +1230,19 @@ class Server{
$this->resourceManager = new ResourcePackManager($this->getDataPath() . "resource_packs" . DIRECTORY_SEPARATOR, $this->logger);
$this->pluginManager = new PluginManager($this, ((bool) $this->getProperty("plugins.legacy-data-dir", true)) ? null : $this->getDataPath() . "plugin_data" . DIRECTORY_SEPARATOR);
$pluginGraylist = null;
$graylistFile = $this->dataPath . "plugin_list.yml";
if(!file_exists($graylistFile)){
copy(\pocketmine\RESOURCE_PATH . 'plugin_list.yml', $graylistFile);
}
try{
$pluginGraylist = PluginGraylist::fromArray(yaml_parse(file_get_contents($graylistFile)));
}catch(\InvalidArgumentException $e){
$this->logger->emergency("Failed to load $graylistFile: " . $e->getMessage());
$this->forceShutdown();
return;
}
$this->pluginManager = new PluginManager($this, ((bool) $this->getProperty("plugins.legacy-data-dir", true)) ? null : $this->getDataPath() . "plugin_data" . DIRECTORY_SEPARATOR, $pluginGraylist);
$this->profilingTickRate = (float) $this->getProperty("settings.profile-report-trigger", 20);
$this->pluginManager->registerInterface(new PharPluginLoader($this->autoloader));
$this->pluginManager->registerInterface(new ScriptPluginLoader());