forked from Github/Axter-Stash
Added logic to pass API key to service automatically
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
# FileMonitor: Ver 0.8.4 (By David Maisonave)
|
# FileMonitor: Ver 0.8.5 (By David Maisonave)
|
||||||
FileMonitor is a [Stash](https://github.com/stashapp/stash) plugin with the following two main features:
|
FileMonitor is a [Stash](https://github.com/stashapp/stash) plugin with the following two main features:
|
||||||
- Updates Stash when any file changes occurs in the Stash library.
|
- Updates Stash when any file changes occurs in the Stash library.
|
||||||
- **Task Scheduler**: Runs scheduled task based on the scheduler configuration in **filemonitor_config.py**.
|
- **Task Scheduler**: Runs scheduled task based on the scheduler configuration in **filemonitor_config.py**.
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ class StashPluginHelper(StashInterface):
|
|||||||
FRAGMENT_SERVER = None
|
FRAGMENT_SERVER = None
|
||||||
STASHPATHSCONFIG = None
|
STASHPATHSCONFIG = None
|
||||||
STASH_PATHS = []
|
STASH_PATHS = []
|
||||||
|
API_KEY = None
|
||||||
|
|
||||||
# printTo argument
|
# printTo argument
|
||||||
LOG_TO_FILE = 1
|
LOG_TO_FILE = 1
|
||||||
@@ -95,6 +96,7 @@ class StashPluginHelper(StashInterface):
|
|||||||
config = None, # From pluginName_config.py or pluginName_setting.py
|
config = None, # From pluginName_config.py or pluginName_setting.py
|
||||||
fragmentServer = None,
|
fragmentServer = None,
|
||||||
stash_url = None, # Stash URL (endpoint URL) Example: http://localhost:9999
|
stash_url = None, # Stash URL (endpoint URL) Example: http://localhost:9999
|
||||||
|
apiKey = None, # API Key only needed when username and password set while running script via command line
|
||||||
DebugTraceFieldName = "zzdebugTracing",
|
DebugTraceFieldName = "zzdebugTracing",
|
||||||
DryRunFieldName = "zzdryRun",
|
DryRunFieldName = "zzdryRun",
|
||||||
setStashLoggerAsPluginLogger = False):
|
setStashLoggerAsPluginLogger = False):
|
||||||
@@ -122,7 +124,6 @@ class StashPluginHelper(StashInterface):
|
|||||||
self.FRAGMENT_SERVER = {'Scheme': 'http', 'Host': '0.0.0.0', 'Port': '9999', 'SessionCookie': {'Name': 'session', 'Value': '', 'Path': '', 'Domain': '', 'Expires': '0001-01-01T00:00:00Z', 'RawExpires': '', 'MaxAge': 0, 'Secure': False, 'HttpOnly': False, 'SameSite': 0, 'Raw': '', 'Unparsed': None}, 'Dir': os.path.dirname(pathlib.Path(self.MAIN_SCRIPT_NAME).resolve().parent), 'PluginDir': pathlib.Path(self.MAIN_SCRIPT_NAME).resolve().parent}
|
self.FRAGMENT_SERVER = {'Scheme': 'http', 'Host': '0.0.0.0', 'Port': '9999', 'SessionCookie': {'Name': 'session', 'Value': '', 'Path': '', 'Domain': '', 'Expires': '0001-01-01T00:00:00Z', 'RawExpires': '', 'MaxAge': 0, 'Secure': False, 'HttpOnly': False, 'SameSite': 0, 'Raw': '', 'Unparsed': None}, 'Dir': os.path.dirname(pathlib.Path(self.MAIN_SCRIPT_NAME).resolve().parent), 'PluginDir': pathlib.Path(self.MAIN_SCRIPT_NAME).resolve().parent}
|
||||||
|
|
||||||
if debugTracing: self.DEBUG_TRACING = debugTracing
|
if debugTracing: self.DEBUG_TRACING = debugTracing
|
||||||
apiKey = ""
|
|
||||||
if config:
|
if config:
|
||||||
self.pluginConfig = config
|
self.pluginConfig = config
|
||||||
if 'apiKey' in self.pluginConfig and self.pluginConfig['apiKey'] != "":
|
if 'apiKey' in self.pluginConfig and self.pluginConfig['apiKey'] != "":
|
||||||
@@ -132,6 +133,9 @@ class StashPluginHelper(StashInterface):
|
|||||||
if DryRunFieldName in self.pluginConfig:
|
if DryRunFieldName in self.pluginConfig:
|
||||||
self.DRY_RUN = self.pluginConfig[DryRunFieldName]
|
self.DRY_RUN = self.pluginConfig[DryRunFieldName]
|
||||||
|
|
||||||
|
if apiKey and apiKey != "":
|
||||||
|
self.FRAGMENT_SERVER['ApiKey'] = apiKey
|
||||||
|
|
||||||
if len(sys.argv) > 1:
|
if len(sys.argv) > 1:
|
||||||
RUNNING_IN_COMMAND_LINE_MODE = True
|
RUNNING_IN_COMMAND_LINE_MODE = True
|
||||||
if not debugTracing or not stash_url:
|
if not debugTracing or not stash_url:
|
||||||
@@ -181,6 +185,8 @@ class StashPluginHelper(StashInterface):
|
|||||||
self.DEBUG_TRACING = self.pluginSettings[DebugTraceFieldName]
|
self.DEBUG_TRACING = self.pluginSettings[DebugTraceFieldName]
|
||||||
if DryRunFieldName in self.pluginSettings:
|
if DryRunFieldName in self.pluginSettings:
|
||||||
self.DRY_RUN = self.pluginSettings[DryRunFieldName]
|
self.DRY_RUN = self.pluginSettings[DryRunFieldName]
|
||||||
|
if 'apiKey' in self.STASH_CONFIGURATION:
|
||||||
|
self.API_KEY = self.STASH_CONFIGURATION['apiKey']
|
||||||
if self.DEBUG_TRACING: self.LOG_LEVEL = logging.DEBUG
|
if self.DEBUG_TRACING: self.LOG_LEVEL = logging.DEBUG
|
||||||
|
|
||||||
logging.basicConfig(level=self.LOG_LEVEL, format=logFormat, datefmt=dateFmt, handlers=[RFH])
|
logging.basicConfig(level=self.LOG_LEVEL, format=logFormat, datefmt=dateFmt, handlers=[RFH])
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ parser.add_argument('--trace', '-t', dest='trace', action='store_true', help='En
|
|||||||
parser.add_argument('--stop', '-s', dest='stop', action='store_true', help='Stop (kill) a running FileMonitor task.')
|
parser.add_argument('--stop', '-s', dest='stop', action='store_true', help='Stop (kill) a running FileMonitor task.')
|
||||||
parser.add_argument('--restart', '-r', dest='restart', action='store_true', help='Restart FileMonitor.')
|
parser.add_argument('--restart', '-r', dest='restart', action='store_true', help='Restart FileMonitor.')
|
||||||
parser.add_argument('--silent', '--quit', '-q', dest='quit', action='store_true', help='Run in silent mode. No output to console or stderr. Use this when running from pythonw.exe')
|
parser.add_argument('--silent', '--quit', '-q', dest='quit', action='store_true', help='Run in silent mode. No output to console or stderr. Use this when running from pythonw.exe')
|
||||||
|
parser.add_argument('--apikey', '-a', dest='apikey', type=str, help='API Key')
|
||||||
parse_args = parser.parse_args()
|
parse_args = parser.parse_args()
|
||||||
|
|
||||||
logToErrSet = 0
|
logToErrSet = 0
|
||||||
@@ -40,7 +41,8 @@ stash = StashPluginHelper(
|
|||||||
settings=settings,
|
settings=settings,
|
||||||
config=config,
|
config=config,
|
||||||
logToErrSet=logToErrSet,
|
logToErrSet=logToErrSet,
|
||||||
logToNormSet=logToNormSet
|
logToNormSet=logToNormSet,
|
||||||
|
apiKey=parse_args.apikey
|
||||||
)
|
)
|
||||||
stash.Status()
|
stash.Status()
|
||||||
stash.Log(f"\nStarting (__file__={__file__}) (stash.CALLED_AS_STASH_PLUGIN={stash.CALLED_AS_STASH_PLUGIN}) (stash.DEBUG_TRACING={stash.DEBUG_TRACING}) (stash.DRY_RUN={stash.DRY_RUN}) (stash.PLUGIN_TASK_NAME={stash.PLUGIN_TASK_NAME})************************************************")
|
stash.Log(f"\nStarting (__file__={__file__}) (stash.CALLED_AS_STASH_PLUGIN={stash.CALLED_AS_STASH_PLUGIN}) (stash.DEBUG_TRACING={stash.DEBUG_TRACING}) (stash.DRY_RUN={stash.DRY_RUN}) (stash.PLUGIN_TASK_NAME={stash.PLUGIN_TASK_NAME})************************************************")
|
||||||
@@ -72,8 +74,11 @@ fileExtTypes = stash.pluginConfig['fileExtTypes'].split(",") if stash.pluginConf
|
|||||||
includePathChanges = stash.pluginConfig['includePathChanges'] if len(stash.pluginConfig['includePathChanges']) > 0 else stash.STASH_PATHS
|
includePathChanges = stash.pluginConfig['includePathChanges'] if len(stash.pluginConfig['includePathChanges']) > 0 else stash.STASH_PATHS
|
||||||
excludePathChanges = stash.pluginConfig['excludePathChanges']
|
excludePathChanges = stash.pluginConfig['excludePathChanges']
|
||||||
|
|
||||||
|
|
||||||
|
stash.Trace(f"(apiKey={stash.API_KEY})")
|
||||||
stash.Trace(f"(includePathChanges={includePathChanges})")
|
stash.Trace(f"(includePathChanges={includePathChanges})")
|
||||||
|
|
||||||
|
|
||||||
if stash.DRY_RUN:
|
if stash.DRY_RUN:
|
||||||
stash.Log("Dry run mode is enabled.")
|
stash.Log("Dry run mode is enabled.")
|
||||||
stash.Trace(f"(SCAN_MODIFIED={SCAN_MODIFIED}) (SCAN_ON_ANY_EVENT={SCAN_ON_ANY_EVENT}) (RECURSIVE={RECURSIVE})")
|
stash.Trace(f"(SCAN_MODIFIED={SCAN_MODIFIED}) (SCAN_ON_ANY_EVENT={SCAN_ON_ANY_EVENT}) (RECURSIVE={RECURSIVE})")
|
||||||
@@ -533,6 +538,8 @@ def start_library_monitor_service():
|
|||||||
pass
|
pass
|
||||||
stash.Trace("FileMonitor is not running, so it's safe to start it as a service.")
|
stash.Trace("FileMonitor is not running, so it's safe to start it as a service.")
|
||||||
args = [f"{pathlib.Path(__file__).resolve().parent}{os.sep}filemonitor.py", '--url', f"{stash.STASH_URL}"]
|
args = [f"{pathlib.Path(__file__).resolve().parent}{os.sep}filemonitor.py", '--url', f"{stash.STASH_URL}"]
|
||||||
|
if stash.API_KEY:
|
||||||
|
args = args + ["-a", stash.API_KEY]
|
||||||
stash.ExecutePythonScript(args)
|
stash.ExecutePythonScript(args)
|
||||||
|
|
||||||
if parse_args.stop or parse_args.restart or stash.PLUGIN_TASK_NAME == "stop_library_monitor":
|
if parse_args.stop or parse_args.restart or stash.PLUGIN_TASK_NAME == "stop_library_monitor":
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
name: FileMonitor
|
name: FileMonitor
|
||||||
description: Monitors the Stash library folders, and updates Stash if any changes occurs in the Stash library paths.
|
description: Monitors the Stash library folders, and updates Stash if any changes occurs in the Stash library paths.
|
||||||
version: 0.8.4
|
version: 0.8.5
|
||||||
url: https://github.com/David-Maisonave/Axter-Stash/tree/main/plugins/FileMonitor
|
url: https://github.com/David-Maisonave/Axter-Stash/tree/main/plugins/FileMonitor
|
||||||
settings:
|
settings:
|
||||||
recursiveDisabled:
|
recursiveDisabled:
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ config = {
|
|||||||
# {"task" : "execute", "command" : "<plugin_path>test_hello_world.bat", "args" : "--name David", "weekday" : "friday", "time" : "12:03"}, # Does NOT show up in the Task Queue. Check FileMonitor log file, and look for -> Task 'execute' result=???
|
# {"task" : "execute", "command" : "<plugin_path>test_hello_world.bat", "args" : "--name David", "weekday" : "friday", "time" : "12:03"}, # Does NOT show up in the Task Queue. Check FileMonitor log file, and look for -> Task 'execute' result=???
|
||||||
],
|
],
|
||||||
|
|
||||||
# ApiKey only needed when Stash credentials are set.
|
# ApiKey only needed when Stash credentials are set and while calling FileMonitor via command line.
|
||||||
"apiKey" : "", # Example: "eyJabccideJIUfg1NigRInD345I6dfpXVCfd.eyJ1abcDEfGheHRlHJiJklMonPQ32FsVewtsfSIsImlhdCI6MTcyMzg2NzkwOH0.5bkHU6sfs3532dsryu1ki3iFBwnd_4AHs325yHljsPw"
|
"apiKey" : "", # Example: "eyJabccideJIUfg1NigRInD345I6dfpXVCfd.eyJ1abcDEfGheHRlHJiJklMonPQ32FsVewtsfSIsImlhdCI6MTcyMzg2NzkwOH0.5bkHU6sfs3532dsryu1ki3iFBwnd_4AHs325yHljsPw"
|
||||||
# Timeout in seconds. This is how often FileMonitor will check the scheduler and (in-plugin mode) check if another job (Task) is in the queue.
|
# Timeout in seconds. This is how often FileMonitor will check the scheduler and (in-plugin mode) check if another job (Task) is in the queue.
|
||||||
"timeOut": 60,
|
"timeOut": 60,
|
||||||
|
|||||||
Reference in New Issue
Block a user