#!/usr/bin/env python import os import pathlib import sys import json import sqlite3 # Define the installation path and extend the system path for plugin imports INSTALL_PATH = "/app" sys.path.extend([f"{INSTALL_PATH}/front/plugins", f"{INSTALL_PATH}/server"]) from plugin_helper import Plugin_Object, Plugin_Objects, decodeBase64 from plugin_utils import get_plugins_configs from logger import mylog from const import pluginsPath, fullDbPath from helper import timeNowTZ, get_setting_value from notification import write_notification # Define the current path and log file paths CUR_PATH = str(pathlib.Path(__file__).parent.resolve()) LOG_FILE = os.path.join(CUR_PATH, 'script.log') RESULT_FILE = os.path.join(CUR_PATH, 'last_result.log') # Initialize the Plugin obj output file plugin_objects = Plugin_Objects(RESULT_FILE) pluginName = '' def main(): mylog('verbose', [f'[{pluginName}] In script']) # Retrieve configuration settings some_setting = get_setting_value('SYNC_plugins') mylog('verbose', [f'[{pluginName}] some_setting calue {some_setting}']) # retrieve data device_data = get_device_data(some_setting) # Process the data into native application tables if len(device_data) > 0: # insert devices into the lats_result.log # make sure the below mapping is mapped in config.json, for example: #"database_column_definitions": [ # { # "column": "Object_PrimaryID", <--------- the value I save into primaryId # "mapped_to_column": "cur_MAC", <--------- gets unserted into the CurrentScan DB table column cur_MAC # for device in device_data: plugin_objects.add_object( primaryId = device['some_id'], secondaryId = device['some_id'], watched1 = device['some_id'], watched2 = device['some_id'], watched3 = device['some_id'], watched4 = device['some_id'], extra = '', foreignKey = device['some_id']) mylog('verbose', [f'[{pluginName}] New entries: "{len(new_devices)}"']) # log result plugin_objects.write_result_file() return 0 # retrieve data def get_device_data(some_setting): device_data = [] # do some processing, call exteranl APIs, and return a device_data list # ... # return device_data if __name__ == '__main__': main()