{
    "code_name": "dhcp_servers",
    "unique_prefix": "DHCPSRVS",
    "plugin_type": "other",
    "enabled": true,    
    "data_source":  "script",
    "show_ui": true,
    "localized": ["display_name", "description", "icon"],
    "display_name" : [{
        "language_code":"en_us",
        "string" : "Rogue DHCP"
    },
    {
        "language_code":"es_es",
        "string" : "Rogue DHCP (DHCP no autorizado)"
    }],
    "icon":[{
        "language_code":"en_us",
        "string" : "<i class=\"fa-solid fa-skull-crossbones\"></i>"
    },
    {
        "language_code":"es_es",
        "string" : "<i class=\"fa-solid fa-skull-crossbones\"></i>"
    }],     
    "description": [{
        "language_code":"en_us",
        "string" : "This plugin is to use NMAP to monitor for rogue DHCP servers."
    },
    {
        "language_code":"es_es",
        "string" : "Este complemento es para usar NMAP para monitorear servidores DHCP no autorizados."
    }],
    "params" : [],  
    "database_column_definitions":
    [          
        {
            "column": "Index",
            "css_classes": "col-sm-2",
            "show": false,
            "type": "label",            
            "default_value":"",
            "options": [],
            "localized": ["name"],
            "name":[{
                "language_code":"en_us",
                "string" : "N/A"
                },
                {
                "language_code":"es_es",
                "string" : "N/A"
                }]
        } ,
        {
            "column": "Plugin",
            "css_classes": "col-sm-2",
            "show": false,
            "type": "label",            
            "default_value":"",
            "options": [],
            "localized": ["name"],
            "name":[{
                "language_code":"en_us",
                "string" : "N/A"
                },
                {
                "language_code":"es_es",
                "string" : "N/A"
                }]
        },
        {
            "column": "Object_PrimaryID",
            "css_classes": "col-sm-2",
            "show": true,
            "type": "device_ip",            
            "default_value":"",
            "options": [],
            "localized": ["name"],
            "name":[{
                "language_code":"en_us",
                "string" : "Server Identifier"
                },
                {
                "language_code":"es_es",
                "string" : "Identificador de servidor"
                }]
        },
        {
            "column": "Object_SecondaryID",
            "css_classes": "col-sm-2",
            "show": true,
            "type": "label",            
            "default_value":"",
            "options": [],
            "localized": ["name"],
            "name":[{
                "language_code":"en_us",
                "string" : "Domain Name"
                },
                {
                "language_code":"es_es",
                "string" : "Nombre de dominio"
                }]
        } ,
        {
            "column": "DateTimeCreated",
            "css_classes": "col-sm-2",
            "show": true,
            "type": "label",            
            "default_value":"",
            "options": [],
            "localized": ["name"],
            "name":[{
                "language_code":"en_us",
                "string" : "Created"
                },
                {
                "language_code":"es_es",
                "string" : "Creado"
                }]
        },
        {
            "column": "DateTimeChanged",
            "css_classes": "col-sm-2",
            "show": false,
            "type": "label",            
            "default_value":"",
            "options": [],
            "localized": ["name"],
            "name":[{
                "language_code":"en_us",
                "string" : "Changed"
                },
                {
                "language_code":"es_es",
                "string" : "Cambiado"
                }]
        },
        {
            "column": "Watched_Value1",
            "css_classes": "col-sm-2",
            "show": false,
            "type": "label",            
            "default_value":"",
            "options": [],
            "localized": ["name"],
            "name":[{
                "language_code":"en_us",
                "string" : "Domain Name Server"
                },
                {
                "language_code":"es_es",
                "string" : "Servidor de nombres de dominio"
                }]
        },
        {
            "column": "Watched_Value2",
            "css_classes": "col-sm-2",
            "show": true,
            "type": "label",            
            "default_value":"",
            "options": [],
            "localized": ["name"],
            "name":[{
                "language_code":"en_us",
                "string" : "IP Offered"
                },
                {
                "language_code":"es_es",
                "string" : "IP ofrecida"
                }]
        },
        {
            "column": "Watched_Value3",
            "css_classes": "col-sm-2",
            "show": false,
            "type": "label",            
            "default_value":"",
            "options": [],
            "localized": ["name"],
            "name":[{
                "language_code":"en_us",
                "string" : "Interface"
                },
                {
                "language_code":"es_es",
                "string" : "Interfaz"
                }]
        } ,
        {
            "column": "Watched_Value4",
            "css_classes": "col-sm-2",
            "show": true,
            "type": "label",            
            "default_value":"",
            "options": [],
            "localized": ["name"],
            "name":[{
                "language_code":"en_us",
                "string" : "Router"
                },
                {
                "language_code":"es_es",
                "string" : "Router"
                }]
        } ,       
        {
            "column": "UserData",
            "css_classes": "col-sm-2",
            "show": true,
            "type": "textbox_save",            
            "default_value":"",
            "options": [],
            "localized": ["name"],
            "name":[{
                "language_code":"en_us",
                "string" : "Comments"
                },
                {
                "language_code":"es_es",
                "string" : "Comentarios"
                }]
        },        
        {
            "column": "Status",
            "css_classes": "col-sm-1",
            "show": true,
            "type": "replace",            
            "default_value":"",
            "options": [
                {
                    "equals": "watched-not-changed",
                    "replacement": "<div style='text-align:center'><i class='fa-solid fa-square-check'></i><div></div>"
                },
                {
                    "equals": "watched-changed",
                    "replacement": "<div style='text-align:center'><i class='fa-solid fa-triangle-exclamation'></i></div>"
                },
                {
                    "equals": "new",
                    "replacement": "<div style='text-align:center'><i class='fa-solid fa-circle-plus'></i></div>"
                },
                {
                    "equals": "missing-in-last-scan",
                    "replacement": "<div style='text-align:center'><i class='fa-solid fa-question'></i></div>"
                }
            ],
            "localized": ["name"],
            "name":[{
                "language_code":"en_us",
                "string" : "Status"
                },
                {    
                "language_code":"es_es",
                "string" : "Estado"
                }]
        },        
        {
            "column": "Extra",
            "css_classes": "col-sm-3",
            "show": true,
            "type": "label",            
            "default_value":"",
            "options": [],
            "localized": ["name"],
            "name":[{
                "language_code":"en_us",
                "string" : "Extra info"
                },
                {
                "language_code":"es_es",
                "string" : "Información extra"
                }]
        }            
    ],
    "settings":[
        {
            "function": "RUN",     
            "events": ["run"],       
            "type": "text.select",            
            "default_value":"disabled",
            "options": ["disabled", "once", "schedule", "always_after_scan", "on_new_device"],
            "localized": ["name", "description"],
            "name" :[{
                "language_code":"en_us",
                "string" : "When to run"
            },
            {
                "language_code":"es_es",
                "string" : "Cuando ejecutar"
            }],
            "description": [{
                "language_code":"en_us",
                "string" : "Enable a regular scan of rogue DHCP servers. If you select <code>schedule</code> the scheduling settings from below are applied. If you select <code>once</code> the scan is run only once on start of the application (container) or after you update your settings. ⚠ Use the same schedule if you have multiple <i class=\"fa-solid fa-magnifying-glass-plus\"></i> Device scanners enabled."
            },
            {
                "language_code":"es_es",
                "string" : "Habilite un escaneo regular de servidores DHCP no autorizados. Si selecciona <code>schedule</code>, se aplican las configuraciones de programación de abajo. Si selecciona <code>once</code>, el análisis se ejecuta solo una vez al inicio de la aplicación (contenedor) o después de actualizar su configuración."
            }]
        },
        {
            "function": "CMD",
            "type": "text",
            "default_value":"python3 /app/front/plugins/dhcp_servers/script.py",
            "options": [],
            "localized": ["name", "description"],
            "name" : [{
                "language_code":"en_us",
                "string" : "Command"
            },
            {
                "language_code":"es_es",
                "string" : "Comando"
            }],
            "description": [{
                "language_code":"en_us",
                "string" : "Command to run"
            },
            {
                "language_code":"es_es",
                "string" : "Comando a ejecutar"
            }]
        },
        {
            "function": "RUN_SCHD",
            "type": "text",
            "default_value":"0 2 * * *",
            "options": [],
            "localized": ["name", "description"],
            "name" : [{
                "language_code":"en_us",
                "string" : "Schedule"
            },
            {
                "language_code":"es_es",
                "string" : "Programar"
            }],
            "description": [{
                "language_code":"en_us",
                "string" : "Only enabled if you select <code>schedule</code> in the <a href=\"#DHCPSRVS_RUN\"><code>DHCPSRVS_RUN</code> setting</a>. Make sure you enter the schedule in the correct cron-like format (e.g. validate at <a href=\"https://crontab.guru/\" target=\"_blank\">crontab.guru</a>). For example entering <code>0 4 * * *</code> will run the scan after 4 am in the <a onclick=\"toggleAllSettings()\" href=\"#TIMEZONE\"><code>TIMEZONE</code> you set above</a>. Will be run NEXT time the time passes."
            },
            {
                "language_code":"es_es",
                "string" : "Solo está habilitado si selecciona <code>schedule</code> en la configuración de <a href=\"#DHCPSRVS_RUN\"><code>DHCPSRVS_RUN</code></a>. Asegúrese de ingresar la programación en el formato similar a cron correcto (por ejemplo, valide en <a href=\"https://crontab.guru/\" target=\"_blank\">crontab.guru</a>). Por ejemplo, ingresar <code>0 4 * * *</code> ejecutará el escaneo después de las 4 a.m. en el <a onclick=\"toggleAllSettings()\" href=\"#TIMEZONE\"><code>TIMEZONE</ código> que configuró arriba</a>. Se ejecutará la PRÓXIMA vez que pase el tiempo."
            }]
        },
        {
            "function": "RUN_TIMEOUT",
            "type": "integer",
            "default_value":10,
            "options": [],
            "localized": ["name", "description"],
            "name" : [{
                "language_code":"en_us",
                "string" : "Run timeout"
            },
            {
                "language_code":"es_es",
                "string" : "Tiempo de espera de ejecución"
            },                
            {
                "language_code":"de_de",
                "string" : "Wartezeit"
            }],
            "description": [{
                "language_code":"en_us",
                "string" : "Maximum time in seconds to wait for the script to finish. If this time is exceeded the script is aborted."
            },
            {
                "language_code":"es_es",
                "string" : "Tiempo máximo en segundos para esperar a que finalice el script. Si se supera este tiempo, el script se cancela."
            }]
        },
        {
            "function": "WATCH",
            "type": "text.multiselect",
            "default_value":["Watched_Value1"],
            "options": ["Watched_Value1","Watched_Value2","Watched_Value3","Watched_Value4"],
            "localized": ["name", "description"],
            "name" :[{
                "language_code":"en_us",
                "string" : "Watched"
            },
            {
                "language_code":"es_es",
                "string" : "Visto"
            }] ,
            "description":[{
                "language_code":"en_us",
                "string" : "Send a notification if selected values change. Use <code>CTRL + Click</code> to select/deselect. <ul> <li><code>Watched_Value1</code> is Domain Name Server</li><li><code>Watched_Value2</code> is IP Offered</li><li><code>Watched_Value3</code> is Interface </li><li><code>Watched_Value4</code> is Router </li></ul>"
            },
            {
                "language_code":"es_es",
                "string" : "Envíe una notificación si los valores seleccionados cambian. Utilice <code>CTRL + clic</code> para seleccionar/deseleccionar. <ul> <li><code>Watched_Value1</code> es servidor de nombres de dominio</li><li><code>Watched_Value2</code> es IP ofrecida</li><li><code>Watched_Value3</code> es Interfaz </li><li><code>Watched_Value4</code> es enrutador </li></ul>"
            }] 
        },
        {
            "function": "REPORT_ON",
            "type": "text.multiselect",
            "default_value":["new","watched-changed"],
            "options": ["new","watched-changed","watched-not-changed"],
            "localized": ["name", "description"],
            "name" :[{
                "language_code":"en_us",
                "string" : "Report on"
            },
            {
                "language_code":"es_es",
                "string" : "Informar sobre"
            }] ,
            "description":[{
                "language_code":"en_us",
                "string" : "Send a notification only on these statuses. <code>new</code> means a new unique (unique combination of PrimaryId and SecondaryId) object was discovered. <code>watched-changed</code> means that selected <code>Watched_ValueN</code> columns changed."
            },
            {
                "language_code":"es_es",
                "string" : "Envíe una notificación solo en estos estados. <code>new</code> significa que se descubrió un nuevo objeto único (una combinación única de PrimaryId y SecondaryId). <code>watched-changed</code> significa que las columnas <code>Watched_ValueN</code> seleccionadas cambiaron."
            }] 
        }
    ]
}
