Skip to content

Commit

Permalink
Enable denylist handling for plugins (Significant-Gravitas#3688)
Browse files Browse the repository at this point in the history
Co-authored-by: Luke Kyohere <[email protected]>
Co-authored-by: Nicholas Tindle <[email protected]>
  • Loading branch information
3 people authored and jaimevalero committed May 7, 2023
1 parent 6157abd commit 63cb62f
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 1 deletion.
2 changes: 2 additions & 0 deletions .env.template
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,9 @@ OPENAI_API_KEY=your-openai-api-key
################################################################################

#ALLOWLISTED_PLUGINS - Sets the listed plugins that are allowed (Example: plugin1,plugin2,plugin3)
#DENYLISTED_PLUGINS - Sets the listed plugins that are not allowed (Example: plugin1,plugin2,plugin3)
ALLOWLISTED_PLUGINS=
DENYLISTED_PLUGINS=

################################################################################
### CHAT PLUGIN SETTINGS
Expand Down
7 changes: 6 additions & 1 deletion autogpt/config/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,12 @@ def __init__(self) -> None:
self.plugins_allowlist = plugins_allowlist.split(",")
else:
self.plugins_allowlist = []
self.plugins_denylist = []

plugins_denylist = os.getenv("DENYLISTED_PLUGINS")
if plugins_denylist:
self.plugins_denylist = plugins_denylist.split(",")
else:
self.plugins_denylist = []

def get_azure_deployment_id_for_model(self, model: str) -> str:
"""
Expand Down
7 changes: 7 additions & 0 deletions autogpt/plugins.py
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,10 @@ def scan_plugins(cfg: Config, debug: bool = False) -> List[AutoGPTPluginTemplate
loaded_plugins = []
# Generic plugins
plugins_path_path = Path(cfg.plugins_dir)

logger.debug(f"Allowlisted Plugins: {cfg.plugins_allowlist}")
logger.debug(f"Denylisted Plugins: {cfg.plugins_denylist}")

for plugin in plugins_path_path.glob("*.zip"):
if moduleList := inspect_zip_for_modules(str(plugin), debug):
for module in moduleList:
Expand Down Expand Up @@ -257,9 +261,12 @@ def denylist_allowlist_check(plugin_name: str, cfg: Config) -> bool:
Returns:
True or False
"""
logger.debug(f"Checking if plugin {plugin_name} should be loaded")
if plugin_name in cfg.plugins_denylist:
logger.debug(f"Not loading plugin {plugin_name} as it was in the denylist.")
return False
if plugin_name in cfg.plugins_allowlist:
logger.debug(f"Loading plugin {plugin_name} as it was in the allowlist.")
return True
ack = input(
f"WARNING: Plugin {plugin_name} found. But not in the"
Expand Down

0 comments on commit 63cb62f

Please sign in to comment.