/** * Plugin activation * * @throws iMSCP_Plugin_Exception * @param iMSCP_Plugin_Manager $pluginManager * @return void */ public function enable(iMSCP_Plugin_Manager $pluginManager) { try { # Make sure that postgrey smtp restriction is evaluated first. This is based on plugin_priority field. if ($pluginManager->pluginIsKnown('Postgrey') && $pluginManager->pluginIsEnabled('Postgrey')) { $pluginManager->pluginChange('Postgrey'); } iMSCP_Registry::get('dbConfig')->set('PORT_POLICYD_WEIGHT', $this->getConfigParam('policyd_weight_port', 12525) . ';tcp;POLICYD_WEIGHT;1;127.0.0.1'); } catch (iMSCP_Exception $e) { throw new iMSCP_Plugin_Exception($e->getMessage(), $e->getCode(), $e); } }
/** * Generate page * * @param $tpl iMSCP_pTemplate * @param iMSCP_Plugin_Manager $pluginManager * @param int $resellerId * @param int $customerAdminId * @return void */ function ownddnsSettings($tpl, $pluginManager) { /** @var $cfg iMSCP_Config_Handler_File */ $cfg = iMSCP_Registry::get('config'); $htmlChecked = $cfg->HTML_CHECKED; if (($plugin = $pluginManager->loadPlugin('OwnDDNS', false, false)) !== null) { $pluginConfig = $plugin->getConfig(); } else { set_page_message(tr("Can't load plugin configuration!"), 'error'); redirectTo('index.php'); } if (isset($_REQUEST['action'])) { $action = clean_input($_REQUEST['action']); if ($action === 'change') { $error = false; $max_allowed_accounts = clean_input($_POST['max_allowed_accounts']); $max_accounts_lenght = clean_input($_POST['max_accounts_lenght']); $update_repeat_time = clean_input($_POST['update_repeat_time']); $update_ttl_time = clean_input($_POST['update_ttl_time']); $current_update_ttl_time = clean_input($_POST['current_update_ttl_time']); $debugOwnddns = clean_input($_POST['debug']); $use_base64_encoding = clean_input($_POST['use_base64_encoding']); $account_name_blacklist = explode(';', clean_input($_POST['account_name_blacklist'])); $debugOwnddns = $debugOwnddns == 'yes' ? TRUE : FALSE; $use_base64_encoding = $use_base64_encoding == 'yes' ? TRUE : FALSE; if (!is_numeric($max_allowed_accounts) || !is_numeric($max_accounts_lenght) || !is_numeric($update_repeat_time) || !is_numeric($update_ttl_time)) { set_page_message(tr("Wrong values in your config."), 'error'); $error = true; } if ($update_ttl_time < 60) { set_page_message(tr("Value for dns TTL update time to small (min. 60)."), 'error'); $error = true; } if (!$error) { $configOwnddns = array('debug' => $debugOwnddns, 'use_base64_encoding' => $use_base64_encoding, 'max_allowed_accounts' => $max_allowed_accounts, 'max_accounts_lenght' => $max_accounts_lenght, 'update_repeat_time' => $update_repeat_time, 'update_ttl_time' => $update_ttl_time, 'account_name_blacklist' => $account_name_blacklist); exec_query(' UPDATE `plugin` SET `plugin_config` = ? WHERE `plugin_name` = ? ', array(json_encode($configOwnddns), 'OwnDDNS')); if ($update_ttl_time != $current_update_ttl_time) { removeOwnDDNSDnsEntries(); revokeOwnDDNSDnsEntries($update_ttl_time); } set_page_message(tr('The OwnDDNS settings updated successfully.'), 'success'); } redirectTo('ownddns.php'); } } $tpl->assign(array('OWNDDNS_DEBUG_YES' => $pluginConfig['debug'] === TRUE ? $htmlChecked : '', 'OWNDDNS_DEBUG_NO' => $pluginConfig['debug'] === FALSE ? $htmlChecked : '', 'OWNDDNS_BASE64_YES' => $pluginConfig['use_base64_encoding'] === TRUE ? $htmlChecked : '', 'OWNDDNS_BASE64_NO' => $pluginConfig['use_base64_encoding'] === FALSE ? $htmlChecked : '', 'MAX_ALLOWED_ACCOUNTS' => $pluginConfig['max_allowed_accounts'], 'MAX_ACCOUNTS_LENGHT' => $pluginConfig['max_accounts_lenght'], 'MAX_UPDATE_REPEAT_TIME' => $pluginConfig['update_repeat_time'], 'MAX_UPDATE_TTL_TIME' => $pluginConfig['update_ttl_time'], 'ACCOUNT_NAME_BLACKLIST' => implode(';', $pluginConfig['account_name_blacklist']))); }
/** * Generate page * * @param $tpl iMSCP_pTemplate * @param iMSCP_Plugin_Manager $pluginManager * @param int $userId * @return void */ function ownddns_generateAccountsList($tpl, $pluginManager, $userId) { /** @var $cfg iMSCP_Config_Handler_File */ $cfg = iMSCP_Registry::get('config'); if (($plugin = $pluginManager->loadPlugin('OwnDDNS', false, false)) !== null) { $pluginConfig = $plugin->getConfig(); } else { set_page_message(tr("Can't load plugin configuration!"), 'error'); redirectTo('ownddns.php'); } $baseServerVhostPrefix = $cfg->BASE_SERVER_VHOST_PREFIX == 'https://' ? 'http(s)://' : $cfg->BASE_SERVER_VHOST_PREFIX; if ($pluginConfig['use_base64_encoding'] === TRUE) { $udateURL = $baseServerVhostPrefix . $cfg->BASE_SERVER_VHOST . '/ownddns.php?action=update&data=<b64>AccountName;AccessKey;FQDN</b64>'; set_page_message(tr('Base64 encoding is activated. Your router must send the data base64 encrypted!<br />Update-URL: <strong>%s</strong>', $udateURL), 'info'); } else { $udateURL = $baseServerVhostPrefix . $cfg->BASE_SERVER_VHOST . '/ownddns.php?action=update&data=AccountName;AccessKey;FQDN'; set_page_message(tr('Base64 encoding is deactivated. <br />Update-URL: <strong>%s</strong>', $udateURL), 'info'); } $rowsPerPage = $cfg->DOMAIN_ROWS_PER_PAGE; if (isset($_GET['psi']) && $_GET['psi'] == 'last') { unset($_GET['psi']); } $startIndex = isset($_GET['psi']) ? (int) $_GET['psi'] : 0; $countQuery = "\n\t\tSELECT COUNT(`admin_id`) AS `cnt` \n\t\tFROM \n\t\t\t`ownddns_accounts`\n\t\tWHERE\n\t\t\t`admin_id` = ?\n\t"; $stmt = exec_query($countQuery, $userId); $recordsCount = $stmt->fields['cnt']; $query = "\n\t\tSELECT\n\t\t\t*\n\t\tFROM\n\t\t\t`ownddns_accounts`\n\t\tWHERE\n\t\t\t`admin_id` = ?\n\t\tORDER BY\n\t\t\t`ownddns_account_name` ASC\n\t"; $stmt = exec_query($query, $userId); if ($stmt->rowCount()) { $prevSi = $startIndex - $rowsPerPage; if ($startIndex == 0) { $tpl->assign('SCROLL_PREV', ''); } else { $tpl->assign(array('SCROLL_PREV_GRAY' => '', 'PREV_PSI' => $prevSi)); } $nextSi = $startIndex + $rowsPerPage; if ($nextSi + 1 > $recordsCount) { $tpl->assign('SCROLL_NEXT', ''); } else { $tpl->assign(array('SCROLL_NEXT_GRAY' => '', 'NEXT_PSI' => $nextSi)); } while ($data = $stmt->fetchRow()) { if ($data['ownddns_account_status'] == $cfg->ITEM_OK_STATUS) { $statusIcon = 'ok'; } elseif ($data['ownddns_account_status'] == $cfg->ITEM_DISABLED_STATUS) { $statusIcon = 'disabled'; } elseif ($data['ownddns_account_status'] == $cfg->ITEM_TOADD_STATUS || $data['ownddns_account_status'] == $cfg->ITEM_TOCHANGE_STATUS || $data['ownddns_account_status'] == $cfg->ITEM_TODELETE_STATUS || ($data['ownddns_account_status'] == $cfg->ITEM_TOADD_STATUS || $data['ownddns_account_status'] == $cfg->ITEM_TORESTORE_STATUS || $data['ownddns_account_status'] == $cfg->ITEM_TOCHANGE_STATUS || $data['ownddns_account_status'] == $cfg->ITEM_TOENABLE_STATUS || $data['ownddns_account_status'] == $cfg->ITEM_TODISABLE_STATUS || $data['ownddns_account_status'] == $cfg->ITEM_TODELETE_STATUS)) { $statusIcon = 'reload'; } else { $statusIcon = 'error'; } $tpl->assign(array('OWNDDNS_ACCOUNT_NAME' => $data['ownddns_account_name'], 'OWNDDNS_ACCOUNT_FQDN' => $data['ownddns_account_fqdn'], 'OWNDDNS_ACCOUNT_KEY' => $data['ownddns_key'], 'OWNDDNS_ACCOUNT_ID' => $data['ownddns_account_id'], 'OWNDDNS_LAST_IP' => $data['ownddns_last_ip'] != '' ? $data['ownddns_last_ip'] : 'N/A', 'OWNDDNS_LAST_UPDATE' => $data['ownddns_last_update'] != '0000-00-00 00:00:00' ? $data['ownddns_last_update'] : 'N/A', 'OWNDDNS_ACCOUNT_STATUS' => translate_dmn_status($data['ownddns_account_status']), 'STATUS_ICON' => $statusIcon)); $tpl->parse('OWNDDNS_ACCOUNT_ITEM', '.ownddns_account_item'); } $tpl->assign('OWNDDNS_NO_ACCOUNT_ITEM', ''); $tpl->parse('OWNDDNS_ACCOUNT_LIST', 'ownddns_account_list'); } else { $tpl->assign(array('OWNDDNS_ACCOUNT_LIST' => '', 'SCROLL_PREV' => '', 'SCROLL_PREV_GRAY' => '', 'SCROLL_NEXT' => '', 'SCROLL_NEXT_GRAY' => '')); } $tpl->assign(array('OWNDDNS_EDIT_ACCOUNT' => '', 'MAX_ACCOUNT_NAME_LENGHT' => $pluginConfig['max_accounts_lenght'])); }
/** * Update plugin list * * @param PluginManager $pluginManager * @param iMSCP * @return void */ function updatePluginList($pluginManager) { $eventManager = $pluginManager->getEventManager(); /** @var EventCollection $responses */ $responses = $eventManager->dispatch(Events::onBeforeUpdatePluginList, array('pluginManager' => $pluginManager)); if (!$responses->isStopped()) { $updateInfo = $pluginManager->pluginUpdateList(); $eventManager->dispatch(Events::onAfterUpdatePluginList, array('pluginManager' => $pluginManager)); set_page_message(tr('Plugins list has been updated: %s new plugin(s) found, %s plugin(s) updated, %s plugin(s) reconfigured, and %s plugin(s) deleted.', $updateInfo['new'], $updateInfo['updated'], $updateInfo['changed'], $updateInfo['deleted']), 'success'); } }