int get_value_telnet(DC_ITEM *item, AGENT_RESULT *result) { char cmd[MAX_STRING_LEN], params[MAX_STRING_LEN], dns[INTERFACE_DNS_LEN_MAX], port[8], encoding[32]; if (ZBX_COMMAND_ERROR == parse_command(item->key, cmd, sizeof(cmd), params, sizeof(params))) { SET_MSG_RESULT(result, zbx_strdup(NULL, "Invalid item key format.")); return NOTSUPPORTED; } if (0 != strcmp(TELNET_RUN_KEY, cmd)) { SET_MSG_RESULT(result, zbx_strdup(NULL, "Unsupported item key for this item type.")); return NOTSUPPORTED; } if (4 < num_param(params)) { SET_MSG_RESULT(result, zbx_strdup(NULL, "Too many parameters.")); return NOTSUPPORTED; } if (0 != get_param(params, 2, dns, sizeof(dns))) *dns = '\0'; if ('\0' != *dns) { strscpy(item->interface.dns_orig, dns); item->interface.addr = item->interface.dns_orig; } if (0 != get_param(params, 3, port, sizeof(port))) *port = '\0'; if (0 != get_param(params, 4, encoding, sizeof(encoding))) *encoding = '\0'; if ('\0' != *port) { if (FAIL == is_ushort(port, &item->interface.port)) { SET_MSG_RESULT(result, zbx_strdup(NULL, "Invalid third parameter.")); return NOTSUPPORTED; } } else item->interface.port = ZBX_DEFAULT_TELNET_PORT; return telnet_run(item, result, encoding); }
/****************************************************************************** DECLARE PUBLIC FUNCTIONS ******************************************************************************/ void TASK_Servers (void *pvParameters) { bool cycle = false; strcpy (servers_user, SERVERS_DEF_USER); strcpy (servers_pass, SERVERS_DEF_PASS); telnet_init(); ftp_init(); for ( ;; ) { if (servers_data.do_enable) { // enable network services telnet_enable(); ftp_enable(); // now set/clear the flags servers_data.enabled = true; servers_data.do_enable = false; } else if (servers_data.do_disable) { // disable network services telnet_disable(); ftp_disable(); // now clear the flags servers_data.do_disable = false; servers_data.enabled = false; } if (cycle) { telnet_run(); } else { ftp_run(); } // move to the next cycle cycle = cycle ? false : true; HAL_Delay(SERVERS_CYCLE_TIME_MS); // set the alive flag for the wdt pybwdt_srv_alive(); } }
int get_value_telnet(DC_ITEM *item, AGENT_RESULT *result) { char cmd[MAX_STRING_LEN], params[MAX_STRING_LEN], dns[INTERFACE_DNS_LEN_MAX], port[8], encoding[32]; if (0 == parse_command(item->key, cmd, sizeof(cmd), params, sizeof(params))) return NOTSUPPORTED; if (0 != strcmp(TELNET_RUN_KEY, cmd)) return NOTSUPPORTED; if (4 < num_param(params)) return NOTSUPPORTED; if (0 != get_param(params, 2, dns, sizeof(dns))) *dns = '\0'; if ('\0' != *dns) { strscpy(item->interface.dns_orig, dns); item->interface.addr = item->interface.dns_orig; } if (0 != get_param(params, 3, port, sizeof(port))) *port = '\0'; if (0 != get_param(params, 4, encoding, sizeof(encoding))) *encoding = '\0'; if ('\0' != *port) { if (FAIL == is_ushort(port, &item->interface.port)) return NOTSUPPORTED; } else item->interface.port = ZBX_DEFAULT_TELNET_PORT; return telnet_run(item, result, encoding); }
/****************************************************************************** DECLARE PUBLIC FUNCTIONS ******************************************************************************/ void TASK_Servers (void *pvParameters) { bool cycle = false; strcpy (servers_user, SERVERS_DEF_USER); strcpy (servers_pass, SERVERS_DEF_PASS); telnet_init(); ftp_init(); for ( ;; ) { if (servers_data.do_enable) { // enable network services telnet_enable(); ftp_enable(); // now set/clear the flags servers_data.enabled = true; servers_data.do_enable = false; } else if (servers_data.do_disable) { // disable network services telnet_disable(); ftp_disable(); // now clear the flags servers_data.do_disable = false; servers_data.enabled = false; } else if (servers_data.do_reset) { // resetting the servers is needed to prevent half-open sockets servers_data.do_reset = false; if (servers_data.enabled) { telnet_reset(); ftp_reset(); } // and we should also close all user sockets. We do it here // for convinience and to save on code size. modusocket_close_all_user_sockets(); } if (cycle) { telnet_run(); } else { ftp_run(); } if (sleep_sockets) { sleep_sockets = false; pybwdt_srv_sleeping(true); modusocket_enter_sleep(); pybwdt_srv_sleeping(false); } // set the alive flag for the wdt pybwdt_srv_alive(); // move to the next cycle cycle = cycle ? false : true; mp_hal_delay_ms(SERVERS_CYCLE_TIME_MS); } }