From 440bb063bfb45b89160f961f23287934e51cbfde Mon Sep 17 00:00:00 2001 From: jxl1216 <49269749+jxl1216@users.noreply.github.com> Date: Sun, 19 Jul 2026 14:15:27 +0800 Subject: [PATCH 1/3] feat: add zabbix_clonehosts module MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a new module that batch-clones and imports hosts based on an existing monitored host's configuration. Features: source host cloning with full config inheritance; dual-mode data entry (CSV upload + online table); smart field inheritance; auto-creation of missing host groups; preview with conflict detection; selective import via per-row checkboxes; back-to-edit with data preserved; sequential AJAX import with progress bar; CSV result report; bilingual UI (zh_CN/en_GB); compatible with Zabbix 6.0/6.4/7.x/8.x via CompatHelper. Authors: 先龍 / Mars XiaoLiu --- README.md | 30 + README_en.md | 14 + zabbix_clonehosts/CompatHelper.php | 159 +++ zabbix_clonehosts/LangHelper.php | 686 +++++++++++ zabbix_clonehosts/Module.php | 53 + zabbix_clonehosts/README.md | 133 +++ zabbix_clonehosts/README_en.md | 123 ++ zabbix_clonehosts/actions/Clonehosts.php | 127 ++ .../actions/ClonehostsImport.php | 357 ++++++ .../actions/ClonehostsPreview.php | 247 ++++ .../actions/ClonehostsSource.php | 93 ++ zabbix_clonehosts/assets/css/clonehosts.css | 1064 +++++++++++++++++ zabbix_clonehosts/assets/js/clonehosts.js.php | 1037 ++++++++++++++++ .../assets/js/clonehosts.preview.js.php | 253 ++++ zabbix_clonehosts/clonehosts_template.csv | 3 + zabbix_clonehosts/images/image-1.png | Bin 0 -> 135031 bytes zabbix_clonehosts/images/image-2.png | Bin 0 -> 104879 bytes zabbix_clonehosts/images/image-3.png | Bin 0 -> 126792 bytes zabbix_clonehosts/images/image-4.png | Bin 0 -> 58262 bytes zabbix_clonehosts/images/image.png | Bin 0 -> 47493 bytes zabbix_clonehosts/manifest.json | 37 + zabbix_clonehosts/views/clonehosts.import.php | 30 + zabbix_clonehosts/views/clonehosts.php | 211 ++++ .../views/clonehosts.preview.php | 314 +++++ 24 files changed, 4971 insertions(+) create mode 100644 zabbix_clonehosts/CompatHelper.php create mode 100644 zabbix_clonehosts/LangHelper.php create mode 100644 zabbix_clonehosts/Module.php create mode 100644 zabbix_clonehosts/README.md create mode 100644 zabbix_clonehosts/README_en.md create mode 100644 zabbix_clonehosts/actions/Clonehosts.php create mode 100644 zabbix_clonehosts/actions/ClonehostsImport.php create mode 100644 zabbix_clonehosts/actions/ClonehostsPreview.php create mode 100644 zabbix_clonehosts/actions/ClonehostsSource.php create mode 100644 zabbix_clonehosts/assets/css/clonehosts.css create mode 100644 zabbix_clonehosts/assets/js/clonehosts.js.php create mode 100644 zabbix_clonehosts/assets/js/clonehosts.preview.js.php create mode 100644 zabbix_clonehosts/clonehosts_template.csv create mode 100644 zabbix_clonehosts/images/image-1.png create mode 100644 zabbix_clonehosts/images/image-2.png create mode 100644 zabbix_clonehosts/images/image-3.png create mode 100644 zabbix_clonehosts/images/image-4.png create mode 100644 zabbix_clonehosts/images/image.png create mode 100644 zabbix_clonehosts/manifest.json create mode 100644 zabbix_clonehosts/views/clonehosts.import.php create mode 100644 zabbix_clonehosts/views/clonehosts.php create mode 100644 zabbix_clonehosts/views/clonehosts.preview.php diff --git a/README.md b/README.md index ed73294..2515183 100644 --- a/README.md +++ b/README.md @@ -167,6 +167,32 @@ **兼容性**:Zabbix 6.0.x, 7.0.x, 7.4.x, 8.0.x +### 8. Zabbix Clonehosts + +**简介**:基于已有监控主机的配置批量克隆导入大量主机的 Zabbix 前端模块,支持 CSV 文件导入和在线表格录入两种方式,并提供预览、冲突检测、选择性导入和实时导入进度反馈功能。 + +**功能特性**: + +- 源主机克隆:选择任意已有监控主机作为克隆模板,其接口、群组、模板、标签、宏、TLS、IPMI、资产模式等全部配置均可被继承 +- 双模式数据录入:CSV 文件上传(UTF-8/GBK 自动识别,可下载模板)/ 在线表格录入(增删行、清空、实时校验) +- 智能字段继承:仅主机名称和接口 IP 必填,其他字段留空时自动继承源主机配置 +- 主机群组自动创建:CSV 中指定的主机群组若不存在,自动调用 API 创建后再关联 +- 预览与冲突检测:导入前全面预览,自动检测主机名冲突、必填字段缺失、批次内重复、与已有主机/模板同名冲突;状态标识区分「已存在」「将新建」「未找到」「继承自源主机」 +- 选择性导入:预览页支持勾选/取消要导入的主机,冲突主机自动跳过,就绪主机可单独取消导入 +- 返回编辑:预览页可一键带着数据返回在线表格录入页,方便对非就绪主机进行编辑,不会清空已录入数据 +- 导入进度反馈:逐台 AJAX 创建主机,实时进度条和成功/失败计数 +- 结果报告导出:导入完成后可下载 CSV 格式的结果报告(含主机名、IP、主机ID、结果、错误信息) +- 支持中英文界面国际化 + +![1](zabbix_clonehosts/images/image.png) +![2](zabbix_clonehosts/images/image-1.png) +![3](zabbix_clonehosts/images/image-2.png) +![4](zabbix_clonehosts/images/image-3.png) + +**文档链接**:[zabbix_clonehosts/README.md](./zabbix_clonehosts/README.md)([English](./zabbix_clonehosts/README_en.md)) + +**兼容性**:Zabbix 6.0.x, 7.0.x, 7.4.x, 8.0.x + ## 安装说明 ### 安装模块 @@ -209,6 +235,9 @@ sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' zabbix_jumpserver/ma # 修改 zabbix_im 模块 sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' zabbix_im/manifest.json + +# 修改 zabbix_clonehosts 模块 +sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' zabbix_clonehosts/manifest.json ``` 如果使用 Zabbix 7.0+ 或 8.0+,则无需修改,保持默认值即可。 @@ -236,6 +265,7 @@ sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' zabbix_im/manifest.j - **数据采集 → SNMP Assistant** (SNMP 助手:Zabbix Mibs / Zabbix Walk) - **资产记录 → JumpServer** (JumpServer 同步) - **Users → IM同步助手** (IM 同步 / 同步设置) +- **数据采集 → 主机批量导入** (基于源主机批量克隆主机) ### 单独安装模块 diff --git a/README_en.md b/README_en.md index 8e7be19..a267aa0 100644 --- a/README_en.md +++ b/README_en.md @@ -90,6 +90,18 @@ This repository contains a collection of independent Zabbix frontend modules tha - **Docs**: [zabbix_im/README_en.md](./zabbix_im/README_en.md)([中文](./zabbix_im/README.md)) +### 8. Zabbix Clonehosts + +- **Purpose**: Batch-clone and import a large number of hosts based on an existing monitored host's configuration, with CSV upload and online table entry, plus preview, conflict detection, selective import and real-time progress feedback. +- **Features**: source host cloning (interfaces, groups, templates, tags, macros, TLS, IPMI, inventory_mode inheritable); dual-mode data entry (CSV upload with UTF-8/GBK auto-detection and template download / online table with add-remove rows and live validation); smart field inheritance (only host name and IP required, others fall back to source); auto-create missing host groups; full preview with conflict detection (host name conflicts, missing required fields, in-batch duplicates, name clashes with hosts/templates) and status badges (exists / new / not found / inherited); selective import via per-row checkboxes; back-to-edit from preview with all data preserved; sequential AJAX import with real-time progress bar and counters; CSV result report download (host name, IP, host ID, result, error); bilingual UI. + +![1](zabbix_clonehosts/images/image.png) +![2](zabbix_clonehosts/images/image-1.png) +![3](zabbix_clonehosts/images/image-2.png) +![4](zabbix_clonehosts/images/image-3.png) + +- **Docs**: [zabbix_clonehosts/README_en.md](./zabbix_clonehosts/README_en.md)([中文](./zabbix_clonehosts/README.md)) + ## Installation ### Deploy all modules (recommended) @@ -117,6 +129,7 @@ sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' zabbix_rack/manifest sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' zabbix_snmp/manifest.json sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' zabbix_jumpserver/manifest.json sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' zabbix_im/manifest.json +sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' zabbix_clonehosts/manifest.json ``` For Zabbix 7.0+ / 8.0+, no change is required. @@ -136,6 +149,7 @@ After enabling and refreshing the UI, the modules appear under the following men - **Data collection → SNMP Assistant** (Zabbix Mibs / Zabbix Walk) - **Inventory → JumpServer** - **Users → IM Sync Assistant** (IM Sync / Sync Settings) +- **Data collection → Host Batch Import** (batch clone hosts from a source host) Each module contains its own README with specific installation and usage details. diff --git a/zabbix_clonehosts/CompatHelper.php b/zabbix_clonehosts/CompatHelper.php new file mode 100644 index 0000000..428ba41 --- /dev/null +++ b/zabbix_clonehosts/CompatHelper.php @@ -0,0 +1,159 @@ +get([ + 'output' => [] + ]); + // If Settings API exists, it's 6.4+ + self::$major_version = 6; + // Check if it's 7.x by looking for newer API methods + if (method_exists(\API::Host(), 'get')) { + // Try a lightweight call to detect version behavior + // If selectHostGroups works, it's 6.4+ + self::$major_version = 7; // Default to 7 for safety + } + return self::$major_version; + } catch (\Exception $e) { + self::$major_version = 6; + return self::$major_version; + } + } + + $parts = explode('.', $version); + self::$major_version = (int) $parts[0]; + + return self::$major_version; + } + + /** + * Check if running on Zabbix 6.0 (which uses selectGroups). + * + * @return bool + */ + public static function isZabbix60(): bool { + return self::getMajorVersion() === 6 && self::getMinorVersion() === 0; + } + + /** + * Get the minor version. + * + * @return int + */ + public static function getMinorVersion(): int { + if (defined('ZABBIX_VERSION')) { + $parts = explode('.', ZABBIX_VERSION); + return (int) ($parts[1] ?? 0); + } + return 4; // Default assumption + } + + /** + * Get the correct select parameter for host groups. + * - Zabbix 6.0: 'selectGroups' + * - Zabbix 6.4+: 'selectHostGroups' + * + * @return string + */ + public static function getHostGroupSelectParam(): string { + if (self::isZabbix60()) { + return 'selectGroups'; + } + return 'selectHostGroups'; + } + + /** + * Get the correct result key for host groups in host data. + * - Zabbix 6.0: 'groups' + * - Zabbix 6.4+: 'hostgroups' + * + * @return string + */ + public static function getHostGroupResultKey(): string { + if (self::isZabbix60()) { + return 'groups'; + } + return 'hostgroups'; + } + + /** + * Normalize host data so that host groups are always under the 'hostgroups' key, + * regardless of Zabbix version. + * + * @param array $host Host data from API::Host()->get() + * @return array Normalized host data + */ + public static function normalizeHost(array $host): array { + $key = self::getHostGroupResultKey(); + + // If the key is 'groups' (Zabbix 6.0), rename to 'hostgroups' for consistency + if ($key === 'groups' && isset($host['groups']) && !isset($host['hostgroups'])) { + $host['hostgroups'] = $host['groups']; + unset($host['groups']); + } + + return $host; + } + + /** + * Build the API::Host()->get() parameters with version-correct host group select. + * + * @param array $baseParams Base parameters (output, hostids, selectInterfaces, etc.) + * @param array $groupFields Fields to select for host groups (e.g., ['groupid', 'name']) + * @return array Complete parameters with correct host group select + */ + public static function buildHostGetParams(array $baseParams, array $groupFields = ['groupid', 'name']): array { + $selectParam = self::getHostGroupSelectParam(); + $baseParams[$selectParam] = $groupFields; + return $baseParams; + } + + /** + * Get the correct manifest_version for the running Zabbix. + * - Zabbix 6.0: 1.0 + * - Zabbix 6.4+: 2.0 + * + * @return float + */ + public static function getManifestVersion(): float { + if (self::isZabbix60()) { + return 1.0; + } + return 2.0; + } +} diff --git a/zabbix_clonehosts/LangHelper.php b/zabbix_clonehosts/LangHelper.php new file mode 100644 index 0000000..0e83eaf --- /dev/null +++ b/zabbix_clonehosts/LangHelper.php @@ -0,0 +1,686 @@ + [en_GB => English, zh_CN => Chinese] */ + private static $translations = [ + // ===== Menu ===== + 'menu.clonehosts' => [ + 'en_GB' => 'Host Batch Import', + 'zh_CN' => '主机批量导入' + ], + + // ===== Step 1: Source Host Selection ===== + 'step1.title' => [ + 'en_GB' => 'Step 1: Select Source Host', + 'zh_CN' => '第一步:选择克隆源主机' + ], + 'step1.description' => [ + 'en_GB' => 'Select an existing monitored host. Its configuration (groups, templates, tags, macros, interfaces, TLS settings, etc.) will serve as the baseline template for all cloned hosts. Fields not specified in the import data will inherit values from this host.', + 'zh_CN' => '选择一个已有的监控主机。其配置(群组、模板、标签、宏、接口、TLS设置等)将作为所有克隆主机的基准模板。导入数据中未指定的字段将继承该主机的配置值。' + ], + 'step1.select_placeholder' => [ + 'en_GB' => '— Select Source Host —', + 'zh_CN' => '— 选择源主机 —' + ], + 'step1.load_btn' => [ + 'en_GB' => 'Load Source Host Info', + 'zh_CN' => '加载源主机信息' + ], + 'step1.loading' => [ + 'en_GB' => 'Loading...', + 'zh_CN' => '加载中...' + ], + 'step1.load_failed' => [ + 'en_GB' => 'Failed to load source host info', + 'zh_CN' => '加载源主机信息失败' + ], + 'step1.load_failed_network' => [ + 'en_GB' => 'Failed to load source host info, please check network connection.', + 'zh_CN' => '加载源主机信息失败,请检查网络连接。' + ], + 'step1.source_host_label' => [ + 'en_GB' => 'Source Host: ', + 'zh_CN' => '源主机:' + ], + 'step1.inherited_note' => [ + 'en_GB' => 'Fields not specified in the import data will inherit the above configuration.', + 'zh_CN' => '导入数据中未指定的字段将继承以上配置。' + ], + + // ===== Host Filter ===== + 'filter.host_group' => [ + 'en_GB' => 'Host Group', + 'zh_CN' => '主机群组' + ], + 'filter.all_groups' => [ + 'en_GB' => '— All Groups —', + 'zh_CN' => '— 全部群组 —' + ], + 'filter.host_name' => [ + 'en_GB' => 'Host Name', + 'zh_CN' => '主机名称' + ], + 'filter.name_placeholder' => [ + 'en_GB' => 'Search by host name...', + 'zh_CN' => '搜索主机名称...' + ], + 'filter.count' => [ + 'en_GB' => 'Showing {total} of {all} hosts', + 'zh_CN' => '显示 {total}/{all} 台主机' + ], + 'filter.no_match' => [ + 'en_GB' => 'No matching hosts found', + 'zh_CN' => '未找到匹配的主机' + ], + + // ===== Unified Search Box ===== + 'search.placeholder' => [ + 'en_GB' => 'Search hosts or host groups...', + 'zh_CN' => '搜索主机或主机群组...' + ], + 'search.hint' => [ + 'en_GB' => 'Type to search. Click a host or host group in the dropdown to filter the list below.', + 'zh_CN' => '输入关键字搜索。点击下拉框中的主机或主机群组,即可筛选下方列表。' + ], + 'search.category.host' => [ + 'en_GB' => 'Hosts', + 'zh_CN' => '主机' + ], + 'search.category.group' => [ + 'en_GB' => 'Host Groups', + 'zh_CN' => '主机群组' + ], + 'search.no_match' => [ + 'en_GB' => 'No matching data', + 'zh_CN' => '无匹配数据' + ], + 'search.remove' => [ + 'en_GB' => 'Remove', + 'zh_CN' => '移除' + ], + + // ===== Multiselect Control ===== + 'multiselect.search_placeholder' => [ + 'en_GB' => 'Type to search...', + 'zh_CN' => '输入关键字搜索...' + ], + 'multiselect.select_btn' => [ + 'en_GB' => 'Select', + 'zh_CN' => '选择' + ], + 'multiselect.popup_title_group' => [ + 'en_GB' => 'Select Host Groups', + 'zh_CN' => '选择主机群组' + ], + 'multiselect.popup_title_host' => [ + 'en_GB' => 'Select Hosts', + 'zh_CN' => '选择主机' + ], + 'multiselect.popup_search_placeholder' => [ + 'en_GB' => 'Search...', + 'zh_CN' => '搜索...' + ], + 'multiselect.popup_name_header' => [ + 'en_GB' => 'Name', + 'zh_CN' => '名称' + ], + 'multiselect.popup_count' => [ + 'en_GB' => '{count} selected', + 'zh_CN' => '已选 {count} 项' + ], + 'multiselect.popup_cancel' => [ + 'en_GB' => 'Cancel', + 'zh_CN' => '取消' + ], + 'multiselect.popup_apply' => [ + 'en_GB' => 'Apply', + 'zh_CN' => '应用' + ], + + // ===== Step 2: Data Input ===== + 'step2.title' => [ + 'en_GB' => 'Step 2: Enter Host Data', + 'zh_CN' => '第二步:录入主机数据' + ], + 'step2.description' => [ + 'en_GB' => 'Upload a CSV file or enter host data directly in the table below. Host name and interface IP are required; other fields are optional and will inherit from the source host when left blank.', + 'zh_CN' => '上传CSV文件或在下方表格中直接录入主机数据。主机名称和接口IP为必填项,其他字段为选填,留空时将继承源主机的配置。' + ], + 'step2.tab_file' => [ + 'en_GB' => 'File Upload (CSV)', + 'zh_CN' => '文件上传 (CSV)' + ], + 'step2.tab_table' => [ + 'en_GB' => 'Online Table Entry', + 'zh_CN' => '在线表格录入' + ], + + // ===== CSV Upload ===== + 'csv.parse_btn' => [ + 'en_GB' => 'Parse CSV File', + 'zh_CN' => '解析CSV文件' + ], + 'csv.download_template' => [ + 'en_GB' => 'Download CSV Template', + 'zh_CN' => '下载CSV模板' + ], + 'csv.encoding_hint' => [ + 'en_GB' => 'Tip: If Chinese characters in the CSV appear garbled, try switching encoding to GBK and re-parse. The template file uses UTF-8 encoding and can be opened directly in Excel.', + 'zh_CN' => '提示:若CSV文件中文显示乱码,请尝试切换编码为 GBK 后重新解析。模板文件使用 UTF-8 编码,可直接在 Excel 中打开编辑。' + ], + 'csv.no_data' => [ + 'en_GB' => 'No valid data rows found in CSV file.', + 'zh_CN' => 'CSV文件中未找到有效数据行。' + ], + 'csv.parsed_rows' => [ + 'en_GB' => 'Parsed: ', + 'zh_CN' => '解析:' + ], + 'csv.valid_rows' => [ + 'en_GB' => 'Valid: ', + 'zh_CN' => '有效:' + ], + 'csv.invalid_rows' => [ + 'en_GB' => 'Invalid (missing required fields): ', + 'zh_CN' => '无效(缺少必填字段):' + ], + 'csv.more_rows' => [ + 'en_GB' => '... ', + 'zh_CN' => '... 还有 ' + ], + 'csv.more_rows_suffix' => [ + 'en_GB' => ' more rows', + 'zh_CN' => ' 行' + ], + + // ===== CSV Headers ===== + 'csv.header.host' => [ + 'en_GB' => 'Host Name(*)', + 'zh_CN' => '主机名称(*)' + ], + 'csv.header.visible_name' => [ + 'en_GB' => 'Visible Name', + 'zh_CN' => '可见的名称' + ], + 'csv.header.ip' => [ + 'en_GB' => 'Interface IP(*)', + 'zh_CN' => '接口IP(*)' + ], + 'csv.header.port' => [ + 'en_GB' => 'Port', + 'zh_CN' => '端口' + ], + 'csv.header.groups' => [ + 'en_GB' => 'Host Groups', + 'zh_CN' => '主机群组' + ], + 'csv.header.templates' => [ + 'en_GB' => 'Templates', + 'zh_CN' => '模板' + ], + 'csv.header.tags' => [ + 'en_GB' => 'Tags', + 'zh_CN' => '标签' + ], + 'csv.header.macros' => [ + 'en_GB' => 'Macros', + 'zh_CN' => '宏' + ], + 'csv.header.description' => [ + 'en_GB' => 'Description', + 'zh_CN' => '描述' + ], + + // ===== Table Toolbar ===== + 'table.add_row' => [ + 'en_GB' => 'Add Row', + 'zh_CN' => '添加行' + ], + 'table.remove_row' => [ + 'en_GB' => 'Remove Selected Rows', + 'zh_CN' => '删除选中行' + ], + 'table.clear_all' => [ + 'en_GB' => 'Clear All', + 'zh_CN' => '清空全部' + ], + 'table.row_count' => [ + 'en_GB' => 'Total rows: ', + 'zh_CN' => '总行数:' + ], + 'table.clear_confirm' => [ + 'en_GB' => 'Are you sure you want to clear all rows?', + 'zh_CN' => '确定要清空所有行吗?' + ], + 'table.placeholder.required' => [ + 'en_GB' => 'Required', + 'zh_CN' => '必填' + ], + 'table.placeholder.inherited' => [ + 'en_GB' => '(inherited)', + 'zh_CN' => '(继承)' + ], + + // ===== Column Headers ===== + 'col.host_name' => [ + 'en_GB' => 'Host Name', + 'zh_CN' => '主机名称' + ], + 'col.visible_name' => [ + 'en_GB' => 'Visible Name', + 'zh_CN' => '可见的名称' + ], + 'col.interface_ip' => [ + 'en_GB' => 'Interface IP', + 'zh_CN' => '接口IP' + ], + 'col.port' => [ + 'en_GB' => 'Port', + 'zh_CN' => '端口' + ], + 'col.host_groups' => [ + 'en_GB' => 'Host Groups', + 'zh_CN' => '主机群组' + ], + 'col.templates' => [ + 'en_GB' => 'Templates', + 'zh_CN' => '模板' + ], + 'col.tags' => [ + 'en_GB' => 'Tags', + 'zh_CN' => '标签' + ], + 'col.macros' => [ + 'en_GB' => 'Macros', + 'zh_CN' => '宏' + ], + 'col.description' => [ + 'en_GB' => 'Description', + 'zh_CN' => '描述' + ], + 'col.status' => [ + 'en_GB' => 'Status', + 'zh_CN' => '状态' + ], + 'col.result' => [ + 'en_GB' => 'Result', + 'zh_CN' => '结果' + ], + 'col.host_id' => [ + 'en_GB' => 'Host ID', + 'zh_CN' => '主机ID' + ], + 'col.error' => [ + 'en_GB' => 'Error', + 'zh_CN' => '错误' + ], + + // ===== Preview ===== + 'preview.btn' => [ + 'en_GB' => 'Preview Import', + 'zh_CN' => '预览导入' + ], + 'preview.hint_no_data' => [ + 'en_GB' => 'Please fill in at least one valid row of host data to continue.', + 'zh_CN' => '请至少填写一行有效的主机数据以继续。' + ], + 'preview.hint_no_source' => [ + 'en_GB' => 'Please select a source host first.', + 'zh_CN' => '请先选择源主机。' + ], + 'preview.hint_ready' => [ + 'en_GB' => 'Ready to preview import.', + 'zh_CN' => '可以预览导入。' + ], + 'preview.alert_no_data' => [ + 'en_GB' => 'Please enter at least one valid host (host name and IP are required).', + 'zh_CN' => '请至少输入一台有效的主机(主机名和IP为必填项)。' + ], + + // ===== Preview Page ===== + 'preview.source_config' => [ + 'en_GB' => 'Source Host Configuration (will be inherited)', + 'zh_CN' => '源主机配置(将被继承)' + ], + 'preview.interfaces' => [ + 'en_GB' => 'Interfaces', + 'zh_CN' => '接口' + ], + 'preview.none' => [ + 'en_GB' => 'None', + 'zh_CN' => '无' + ], + 'preview.total' => [ + 'en_GB' => 'Total: ', + 'zh_CN' => '总计:' + ], + 'preview.conflicts' => [ + 'en_GB' => 'Conflicts: ', + 'zh_CN' => '冲突:' + ], + 'preview.importable' => [ + 'en_GB' => 'Importable: ', + 'zh_CN' => '可导入:' + ], + 'preview.pending_count' => [ + 'en_GB' => 'Hosts to import: ', + 'zh_CN' => '待导入主机数:' + ], + 'preview.no_conflicts' => [ + 'en_GB' => 'No conflicts detected', + 'zh_CN' => '未检测到冲突' + ], + 'preview.title' => [ + 'en_GB' => 'Host Import Preview', + 'zh_CN' => '主机导入预览' + ], + 'preview.inherited' => [ + 'en_GB' => '(inherited)', + 'zh_CN' => '(继承)' + ], + 'preview.ready' => [ + 'en_GB' => 'Ready', + 'zh_CN' => '就绪' + ], + 'preview.back' => [ + 'en_GB' => 'Back', + 'zh_CN' => '返回' + ], + 'preview.start_import' => [ + 'en_GB' => 'Start Import', + 'zh_CN' => '开始导入' + ], + 'preview.resolve_conflicts' => [ + 'en_GB' => 'Conflicting hosts will be skipped. You can uncheck ready hosts to exclude them too.', + 'zh_CN' => '冲突主机将被跳过,您也可以取消勾选就绪主机以排除。' + ], + 'preview.back_edit' => [ + 'en_GB' => 'Back to Edit', + 'zh_CN' => '返回编辑' + ], + 'preview.import_selected' => [ + 'en_GB' => 'Import Selected ({count})', + 'zh_CN' => '导入所选 ({count})' + ], + 'preview.no_selected' => [ + 'en_GB' => 'Please select at least one ready host to import.', + 'zh_CN' => '请至少勾选一台就绪主机进行导入。' + ], + 'preview.skipped' => [ + 'en_GB' => 'Skipped', + 'zh_CN' => '已跳过' + ], + 'preview.col_select' => [ + 'en_GB' => 'Import', + 'zh_CN' => '导入' + ], + + // ===== Field Status Legend ===== + 'legend.exists' => [ + 'en_GB' => 'Exists → Link directly', + 'zh_CN' => '已存在 → 直接关联' + ], + 'legend.new' => [ + 'en_GB' => 'Will be created', + 'zh_CN' => '将新建' + ], + 'legend.not_found' => [ + 'en_GB' => 'Not found', + 'zh_CN' => '未找到' + ], + 'legend.inherited' => [ + 'en_GB' => 'Inherited from source host', + 'zh_CN' => '继承自源主机' + ], + 'legend.exists_tooltip' => [ + 'en_GB' => 'Already exists, will be linked directly', + 'zh_CN' => '已存在,将直接关联' + ], + 'legend.new_tooltip_group' => [ + 'en_GB' => 'This host group will be created', + 'zh_CN' => '将新建此主机群组' + ], + 'legend.not_found_tooltip_template' => [ + 'en_GB' => 'Template not found, please verify the template name', + 'zh_CN' => '模板未找到,请确认模板名称是否正确' + ], + + // ===== Import Progress ===== + 'import.progress_title' => [ + 'en_GB' => 'Import Progress', + 'zh_CN' => '导入进度' + ], + 'import.importing' => [ + 'en_GB' => 'Importing...', + 'zh_CN' => '导入中...' + ], + 'import.complete' => [ + 'en_GB' => 'Import Complete', + 'zh_CN' => '导入完成' + ], + 'import.results_title' => [ + 'en_GB' => 'Import Results', + 'zh_CN' => '导入结果' + ], + 'import.success' => [ + 'en_GB' => 'Success: ', + 'zh_CN' => '成功:' + ], + 'import.failed' => [ + 'en_GB' => 'Failed: ', + 'zh_CN' => '失败:' + ], + 'import.download_report' => [ + 'en_GB' => 'Download Report', + 'zh_CN' => '下载报告' + ], + 'import.result_success' => [ + 'en_GB' => 'Success', + 'zh_CN' => '成功' + ], + 'import.result_failed' => [ + 'en_GB' => 'Failed', + 'zh_CN' => '失败' + ], + 'import.ajax_error' => [ + 'en_GB' => 'AJAX error: ', + 'zh_CN' => 'AJAX错误:' + ], + 'import.unknown_error' => [ + 'en_GB' => 'Unknown', + 'zh_CN' => '未知' + ], + + // ===== Report CSV Headers ===== + 'report.col_row' => [ + 'en_GB' => '#', + 'zh_CN' => '#' + ], + 'report.col_result' => [ + 'en_GB' => 'Result', + 'zh_CN' => '结果' + ], + 'report.col_host' => [ + 'en_GB' => 'Host Name', + 'zh_CN' => '主机名称' + ], + 'report.col_ip' => [ + 'en_GB' => 'Interface IP', + 'zh_CN' => '接口IP' + ], + 'report.col_hostid' => [ + 'en_GB' => 'Host ID', + 'zh_CN' => '主机ID' + ], + 'report.col_error' => [ + 'en_GB' => 'Error', + 'zh_CN' => '错误' + ], + + // ===== Error Messages (from controllers) ===== + 'err.host_required' => [ + 'en_GB' => 'Host name is required', + 'zh_CN' => '主机名称为必填项' + ], + 'err.ip_required' => [ + 'en_GB' => 'Interface IP is required', + 'zh_CN' => '接口IP为必填项' + ], + 'err.host_exists' => [ + 'en_GB' => 'This host already exists', + 'zh_CN' => '该主机已存在' + ], + 'err.template_exists' => [ + 'en_GB' => 'A template with the same name already exists', + 'zh_CN' => '同名模板已存在' + ], + 'err.source_not_found' => [ + 'en_GB' => 'Source host not found', + 'zh_CN' => '源主机未找到' + ], + 'err.no_groups' => [ + 'en_GB' => 'No host groups available (not specified and cannot inherit)', + 'zh_CN' => '没有可用的主机群组(未指定且无法继承)' + ], + 'err.unknown_api_response' => [ + 'en_GB' => 'Unknown API response', + 'zh_CN' => '未知的API响应' + ], + 'err.batch_duplicate' => [ + 'en_GB' => 'Duplicate host name within batch', + 'zh_CN' => '批次内主机名称重复' + ], + 'err.host_exists_in_zabbix' => [ + 'en_GB' => 'This host name already exists in Zabbix', + 'zh_CN' => '该主机名称在Zabbix中已存在' + ], + + // ===== Interface Type Names ===== + 'iface.Agent' => [ + 'en_GB' => 'Agent', + 'zh_CN' => 'Agent' + ], + 'iface.SNMP' => [ + 'en_GB' => 'SNMP', + 'zh_CN' => 'SNMP' + ], + 'iface.IPMI' => [ + 'en_GB' => 'IPMI', + 'zh_CN' => 'IPMI' + ], + 'iface.JMX' => [ + 'en_GB' => 'JMX', + 'zh_CN' => 'JMX' + ], + 'iface.Type' => [ + 'en_GB' => 'Type ', + 'zh_CN' => 'Type ' + ], + ]; + + /** + * Detect the current user's language from Zabbix. + * Priority: CWebUser::$data['lang'] → API user.get → default en_GB + * + * @return string Language code (e.g., 'zh_CN', 'en_GB') + */ + public static function getLang(): string { + if (self::$lang !== null) { + return self::$lang; + } + + // Method 1: Try CWebUser (available in Zabbix frontend context) + if (class_exists('CWebUser', false) && isset(\CWebUser::$data['lang'])) { + self::$lang = \CWebUser::$data['lang']; + return self::$lang; + } + + // Method 2: Try to get from the session/API + try { + $user = \API::User()->get([ + 'output' => ['lang'], + 'userids' => [\CWebUser::$data['userid'] ?? 0] + ]); + if (!empty($user) && !empty($user[0]['lang'])) { + self::$lang = $user[0]['lang']; + return self::$lang; + } + } catch (\Exception $e) { + // Fall through to default + } + + // Default: English + self::$lang = 'en_GB'; + return self::$lang; + } + + /** + * Check if the current language is Chinese. + * + * @return bool + */ + public static function isChinese(): bool { + return self::getLang() === 'zh_CN' || strpos(self::getLang(), 'zh') === 0; + } + + /** + * Translate a key to the current language, with optional parameter substitution. + * Supports {placeholder} style parameters in the translation string. + * + * @param string $key Translation key + * @param array $params Optional ['{placeholder}' => 'value'] pairs for substitution + * @return string Translated string (falls back to English, then to the key itself) + */ + public static function t(string $key, array $params = []): string { + $lang = self::getLang(); + + if (isset(self::$translations[$key][$lang])) { + $str = self::$translations[$key][$lang]; + } elseif (isset(self::$translations[$key]['en_GB'])) { + $str = self::$translations[$key]['en_GB']; + } else { + $str = $key; + } + + if (!empty($params)) { + $str = strtr($str, $params); + } + + return $str; + } + + /** + * Get all translations for the current language as a JSON-serializable array. + * Used to pass translations to JavaScript. + * + * @return array Key => translated string + */ + public static function getAllForJs(): array { + $lang = self::getLang(); + $result = []; + + foreach (self::$translations as $key => $langs) { + if (isset($langs[$lang])) { + $result[$key] = $langs[$lang]; + } elseif (isset($langs['en_GB'])) { + $result[$key] = $langs['en_GB']; + } + } + + return $result; + } +} diff --git a/zabbix_clonehosts/Module.php b/zabbix_clonehosts/Module.php new file mode 100644 index 0000000..485a6b1 --- /dev/null +++ b/zabbix_clonehosts/Module.php @@ -0,0 +1,53 @@ +get('menu.main') + ->findOrAdd(_('Data collection')) + ->getSubmenu() + ->insertAfter(_('Hosts'), + (new CMenuItem($menu_label))->setAction('clonehosts') + ); + } +} + +// Compatibility: Zabbix 6.4+ uses Zabbix\Core\CModule, Zabbix 6.0 uses Core\CModule +if (class_exists('Zabbix\\Core\\CModule', false)) { + class Module extends \Zabbix\Core\CModule { + use ModuleInitTrait; + } +} else { + class Module extends \Core\CModule { + use ModuleInitTrait; + } +} diff --git a/zabbix_clonehosts/README.md b/zabbix_clonehosts/README.md new file mode 100644 index 0000000..94ff81c --- /dev/null +++ b/zabbix_clonehosts/README.md @@ -0,0 +1,133 @@ +# Zabbix Clonehosts 模块 + +[English](README_en.md) + +## ✨ 版本兼容性 + +本模块兼容 Zabbix 6.0 / 7.0+ / 8.0+ 版本。 + +- ✅ Zabbix 6.0.x +- ✅ Zabbix 7.0.x +- ✅ Zabbix 7.4.x +- ✅ Zabbix 8.0.x + +**兼容性说明**:模块内置智能版本检测机制(`CompatHelper`),自动适配不同版本的 Zabbix API 参数差异(如 6.0 的 `selectGroups` 与 6.4+ 的 `selectHostGroups`、`groups` 与 `hostgroups` 结果键差异、`Zabbix\Core\CModule` 与 `Core\CModule` 命名空间差异等),无需手动配置。语言助手 `LangHelper` 会自动跟随 Zabbix 系统语言设置切换中/英文界面。 + +## 描述 + +这是一个 Zabbix 前端模块,用于基于已有监控主机的配置批量克隆导入大量主机。模块在 Zabbix Web 的「数据采集(Data collection)」菜单下新增「主机批量导入」菜单项(位于「主机」之后),支持 CSV 文件导入和在线表格录入两种方式,并提供预览、冲突检测和实时导入进度反馈功能。 + +![1](images/image.png) +![2](images/image-1.png) +![3](images/image-2.png) +![4](images/image-3.png) + +## 功能特性 + +- **源主机克隆**:选择任意已有监控主机作为克隆模板,其全部配置(接口、群组、模板、标签、宏、TLS、IPMI、资产模式等)均可被继承 + +- **双模式数据录入**: + - CSV 文件上传:支持 UTF-8 和 GBK 编码,自动表头检测和编码识别,可下载 CSV 模板 + - 在线表格录入:支持添加/删除行、清空全部,数据实时校验 + +- **智能字段继承**:仅主机名称和接口 IP 为必填项,其他字段(可见名称、端口、主机群组、模板、标签、宏、描述)留空时自动继承源主机配置 + +- **主机群组自动创建**:导入时 CSV 中指定的主机群组若不存在,自动调用 API 创建后再关联 + +- **预览与冲突检测**:导入前全面预览,自动检测主机名冲突、必填字段缺失、批次内重复、与已有主机/模板同名冲突等问题;并以状态标识区分「已存在直接关联」「将新建」「未找到」「继承自源主机」 + +- **选择性导入**:预览页支持勾选/取消要导入的主机,冲突主机自动跳过,就绪主机可单独取消导入 + +- **返回编辑**:预览页可一键带着数据返回在线表格录入页,方便对非就绪主机进行编辑,不会清空已录入数据 + +- **导入进度反馈**:逐台 AJAX 创建主机,实时进度条和成功/失败计数 + +- **结果报告导出**:导入完成后可下载 CSV 格式的结果报告(含主机名、IP、主机ID、结果、错误信息) + +- **中英文双语支持**:界面语言自动跟随 Zabbix 系统设置(`zh_CN` / `en_GB`),无需 gettext 依赖 + +- **响应式设计**:适配不同屏幕尺寸 + +- **现代化界面**:遵循 Zabbix 原生设计风格 + +## 安装步骤 + +### 安装模块 + +```bash +# Zabbix 6.0 / 7.0 部署方法 +git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/modules/ + +# Zabbix 7.4 / 8.0 部署方法 +git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/ui/modules/ +``` + +### ⚠️ 修改 manifest.json 文件 + +```bash +# ⚠️ 如果使用Zabbix 6.0,修改manifest_version +sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' zabbix_clonehosts/manifest.json +``` + +### 启用模块 + +1. 转到 **Administration → General → Modules**。 +2. 点击 **Scan directory** 按钮扫描新模块。 +3. 找到「Host Batch Import / 主机批量导入」模块,点击启用模块。 +4. 刷新页面,模块将在 **Data collection(数据采集)** 菜单下显示为「主机批量导入」,位于「Hosts(主机)」之后。 + +## CSV 数据格式 + +模块附带模板文件 `clonehosts_template.csv`,可在导入页面点击「下载 CSV 模板」获取。CSV 表头及字段说明: + +| 字段 | 必填 | 说明 | +| --- | --- | --- | +| 主机名称(*) | 是 | 主机标识,需全局唯一(与模板共享命名空间) | +| 可见的名称 | 否 | 留空时使用主机名称 | +| 接口IP(*) | 是 | 主机接口 IP 地址 | +| 端口 | 否 | 留空时继承源主机端口 | +| 主机群组 | 否 | 多个群组用 `;` 分隔,不存在时自动创建 | +| 模板 | 否 | 多个模板用 `;` 分隔,按 host 或 name 匹配 | +| 标签 | 否 | 格式 `tag=value`,多个用 `;` 分隔 | +| 宏 | 否 | 格式 `{$MACRO}=value`,多个用 `;` 分隔 | +| 描述 | 否 | 主机描述信息 | + +示例: + +```csv +主机名称(*),可见的名称,接口IP(*),端口,主机群组,模板,标签,宏,描述 +web-server-01,Web Server 01,192.168.1.10,10050,Servers;Web Servers,Linux by Zabbix Agent;Nginx by HTTP,env=prod;os=linux,{$SNMP_COMMUNITY}=public,Web server 01 +db-server-01,DB Server 01,192.168.1.20,10050,Servers;Database Servers,MySQL by Zabbix Agent,env=prod;os=linux;role=db,{$MYSQL_PORT}=3306,Database server 01 +``` + +## 注意事项 + +- **性能考虑**:导入采用逐台串行方式,大批量导入可能需要较长时间。建议单次导入不超过 500 台主机。 +- **主机名唯一性**:主机名在 Zabbix 中与模板名共享命名空间,必须全局唯一。预览阶段会同时检测主机和模板冲突。 +- **模板依赖**:CSV 中指定的模板必须在 Zabbix 中已存在,否则导入时仅关联已存在的模板(未找到的模板会被标记为「未找到」)。 +- **CSV 编码**:建议使用 UTF-8 编码保存 CSV 文件。若中文显示乱码,可在页面切换编码为 GBK 后重新解析。 +- **权限要求**:使用本模块需要 Zabbix 管理员(Zabbix Admin)及以上权限。 +- **数据准确性**:创建的监控主机基于源主机的当前配置快照。如果源主机在导入过程中被修改,已创建的主机不会受影响。 + +## 开发 + +模块基于 Zabbix 模块框架开发。文件结构: + +- `manifest.json`:模块配置、路由和静态资源声明 +- `Module.php`:菜单注册(兼容 `Zabbix\Core\CModule` 与 `Core\CModule`) +- `CompatHelper.php`:Zabbix 6.0/6.4/7.x/8.x API 兼容性辅助类 +- `LangHelper.php`:中英文国际化语言管理(纯 PHP 数组实现,无 gettext 依赖) +- `actions/Clonehosts.php`:主页面控制器(源主机选择、CSV 上传、表格录入) +- `actions/ClonehostsSource.php`:AJAX 源主机配置加载接口 +- `actions/ClonehostsPreview.php`:预览页面控制器(冲突检测、字段状态) +- `actions/ClonehostsImport.php`:AJAX 导入接口(逐台创建主机) +- `views/`:页面视图(主页面、预览、JSON 响应) +- `assets/js/`:JavaScript(CSV 解析、表格管理、AJAX 导入进度) +- `assets/css/`:模块样式表 +- `clonehosts_template.csv`:CSV 导入模板 + +如需扩展,可参考 [Zabbix 模块开发文档](https://www.zabbix.com/documentation/current/zh/devel/modules/file_structure)。 + +## 许可证 + +本项目遵循 GPL-2.0 许可证。 diff --git a/zabbix_clonehosts/README_en.md b/zabbix_clonehosts/README_en.md new file mode 100644 index 0000000..728fb1a --- /dev/null +++ b/zabbix_clonehosts/README_en.md @@ -0,0 +1,123 @@ +# Zabbix Clonehosts Module + +[中文](README.md) + +## ✨ Version Compatibility + +This module is compatible with Zabbix 6.0 / 7.0+ / 8.0+. + +- ✅ Zabbix 6.0.x +- ✅ Zabbix 7.0.x +- ✅ Zabbix 7.4.x +- ✅ Zabbix 8.0.x + +**Compatibility Note**: The module includes an automatic version detection layer (`CompatHelper`) that adapts to different Zabbix API versions and library namespaces (e.g. `selectGroups` vs `selectHostGroups`, `groups` vs `hostgroups` result keys, `Zabbix\Core\CModule` vs `Core\CModule`), so no manual configuration is required. The `LangHelper` helper automatically follows the Zabbix system language to switch between Chinese and English. + +## Description + +Zabbix Clonehosts is a frontend module for Zabbix that batch-clones and imports a large number of hosts based on an existing monitored host's configuration. It adds a "Host Batch Import" menu item under the "Data collection" menu in Zabbix Web (after "Hosts"), supporting both CSV file import and online table entry, with preview, conflict detection, and real-time import progress feedback. + +![1](images/image.png) +![2](images/image-1.png) +![3](images/image-2.png) +![4](images/image-3.png) + +## Features + +- **Source host cloning**: Pick any existing monitored host as the clone template. Its full configuration (interfaces, groups, templates, tags, macros, TLS, IPMI, inventory mode, etc.) can be inherited. +- **Dual-mode data entry**: + - CSV upload: UTF-8 and GBK supported, automatic header detection and encoding recognition, CSV template download available. + - Online table entry: add/remove rows, clear all, real-time validation. +- **Smart field inheritance**: Only host name and interface IP are required. Other fields (visible name, port, host groups, templates, tags, macros, description) fall back to the source host's config when left empty. +- **Host group auto-creation**: Host groups specified in the CSV that do not yet exist are created via the API before being linked. +- **Preview & conflict detection**: Full preview before import; auto-detects host name conflicts, missing required fields, in-batch duplicates, and name clashes with existing hosts/templates. Status badges distinguish "exists / direct link", "will create", "not found", and "inherited from source". +- **Selective import**: The preview page lets you check/uncheck the hosts you want to import. Conflicting hosts are skipped automatically; ready hosts can also be excluded individually. +- **Back to edit**: From the preview page you can return to the online table page with all data preserved, so non-ready hosts can be edited without losing what was already entered. +- **Import progress feedback**: Hosts are created one by one via AJAX, with a real-time progress bar and success/fail counters. +- **Result report export**: After import finishes, you can download a CSV report (host name, IP, host ID, result, error message). +- **Bilingual UI**: The interface follows the Zabbix system language (`zh_CN` / `en_GB`), no gettext dependency. +- **Responsive design**: Adapts to different screen sizes. +- **Modern UI**: Follows the native Zabbix design language. + +## Installation + +### Install the module + +```bash +# For Zabbix 6.0 / 7.0 deployment +git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/modules/ + +# For Zabbix 7.4 / 8.0 deployment +git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/ui/modules/ +``` + +### ⚠️ Modify `manifest.json` + +If you are using Zabbix 6.0, change the `manifest_version` in `zabbix_clonehosts/manifest.json` to `1.0`: + +```bash +sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' zabbix_clonehosts/manifest.json +``` + +### Enable the module + +1. Go to Administration → General → Modules. +2. Click **Scan directory** to detect new modules. +3. Find and enable the "Host Batch Import / 主机批量导入" module. +4. Refresh the page — the module appears under **Data collection → Host Batch Import**, right after "Hosts". + +## CSV format + +The module ships with a template file `clonehosts_template.csv`. You can download it from the import page via the "Download CSV template" button. CSV header and field descriptions: + +| Field | Required | Description | +| --- | --- | --- | +| 主机名称(*) | Yes | Host identifier, must be globally unique (shares namespace with templates) | +| 可见的名称 | No | Falls back to host name when empty | +| 接口IP(*) | Yes | Host interface IP address | +| 端口 | No | Falls back to source host's port when empty | +| 主机群组 | No | Multiple groups separated by `;`; auto-created if missing | +| 模板 | No | Multiple templates separated by `;`; matched by host or name | +| 标签 | No | Format `tag=value`, multiple pairs separated by `;` | +| 宏 | No | Format `{$MACRO}=value`, multiple pairs separated by `;` | +| 描述 | No | Host description | + +Example: + +```csv +主机名称(*),可见的名称,接口IP(*),端口,主机群组,模板,标签,宏,描述 +web-server-01,Web Server 01,192.168.1.10,10050,Servers;Web Servers,Linux by Zabbix Agent;Nginx by HTTP,env=prod;os=linux,{$SNMP_COMMUNITY}=public,Web server 01 +db-server-01,DB Server 01,192.168.1.20,10050,Servers;Database Servers,MySQL by Zabbix Agent,env=prod;os=linux;role=db,{$MYSQL_PORT}=3306,Database server 01 +``` + +## Notes + +- **Performance**: Import is sequential. Large batches may take a while. Recommended upper bound: ~500 hosts per run. +- **Host name uniqueness**: Host names share the namespace with templates in Zabbix and must be globally unique. The preview stage checks both host and template conflicts. +- **Template dependency**: Templates referenced in the CSV must already exist in Zabbix. Missing templates are marked as "not found" and skipped during import. +- **CSV encoding**: UTF-8 is recommended. If Chinese characters look garbled, switch the page encoding to GBK and re-parse. +- **Permissions**: Using this module requires Zabbix Admin or higher. +- **Data accuracy**: Created hosts are based on a snapshot of the source host's current configuration. Changes to the source host during import do not affect already-created hosts. + +## Development + +The module is built on the Zabbix module framework. Key files: + +- `manifest.json` — module configuration, routes and asset declarations +- `Module.php` — menu registration (compatible with both `Zabbix\Core\CModule` and `Core\CModule`) +- `CompatHelper.php` — Zabbix 6.0/6.4/7.x/8.x API compatibility helper +- `LangHelper.php` — Chinese/English i18n (pure PHP array, no gettext) +- `actions/Clonehosts.php` — main page controller (source host selection, CSV upload, table entry) +- `actions/ClonehostsSource.php` — AJAX endpoint for loading source host config +- `actions/ClonehostsPreview.php` — preview page controller (conflict detection, field status) +- `actions/ClonehostsImport.php` — AJAX import endpoint (creates hosts one by one) +- `views/` — page views (main page, preview, JSON response) +- `assets/js/` — JavaScript (CSV parsing, table management, AJAX import progress) +- `assets/css/` — module styles +- `clonehosts_template.csv` — CSV import template + +See Zabbix module development docs for extension: https://www.zabbix.com/documentation/current/en/devel/modules/file_structure + +## License + +This project is licensed under GPL-2.0. diff --git a/zabbix_clonehosts/actions/Clonehosts.php b/zabbix_clonehosts/actions/Clonehosts.php new file mode 100644 index 0000000..1d2a78d --- /dev/null +++ b/zabbix_clonehosts/actions/Clonehosts.php @@ -0,0 +1,127 @@ +disableCsrfValidation(); + } + if (method_exists($this, 'disableSIDvalidation')) { + $this->disableSIDvalidation(); + } + } + + protected function checkInput(): bool { + $ret = $this->validateInput([ + 'source_hostid' => 'string', + 'host_data' => 'string', + 'return_from_preview' => 'in 1' + ]); + return true; + } + + protected function checkPermissions(): bool { + return $this->getUserType() >= USER_TYPE_ZABBIX_ADMIN; + } + + protected function doAction(): void { + // Get all monitored hosts for the source host dropdown. + // Include host group membership so the frontend can filter by group. + $host_get_params = [ + 'output' => ['hostid', 'host', 'name'], + 'filter' => ['status' => HOST_STATUS_MONITORED], + 'sortfield' => 'name', + 'preservekeys' => true + ]; + $host_get_params = CompatHelper::buildHostGetParams($host_get_params); + + $hosts = API::Host()->get($host_get_params); + + // Normalize host data (Zabbix 6.0 uses 'groups', 6.4+ uses 'hostgroups'). + // Build a hostid → [groupid, groupid, ...] mapping for frontend filtering. + $host_group_map = []; + $group_result_key = CompatHelper::getHostGroupResultKey(); + foreach ($hosts as $hostid => $host) { + $host = CompatHelper::normalizeHost($host); + $host_group_map[$hostid] = []; + if (isset($host['hostgroups'])) { + foreach ($host['hostgroups'] as $group) { + $host_group_map[$hostid][] = $group['groupid']; + } + } + $hosts[$hostid] = $host; + } + + // Get all host groups for reference. + $host_groups = API::HostGroup()->get([ + 'output' => ['groupid', 'name'], + 'sortfield' => 'name', + 'preservekeys' => true + ]); + + // Get all templates for reference. + // Zabbix 6.0: API::Template() exists but may have slightly different behavior. + $templates = API::Template()->get([ + 'output' => ['templateid', 'host', 'name'], + 'sortfield' => 'name', + 'preservekeys' => true + ]); + + $data = [ + 'hosts' => $hosts, + 'host_groups' => $host_groups, + 'host_group_map' => $host_group_map, + 'templates' => $templates, + 'lang' => LangHelper::getAllForJs() + ]; + + // Handle return-from-preview: carry back source host + table data so the + // online table can be restored instead of being cleared. + $return_source_hostid = $this->getInput('source_hostid', ''); + $return_host_data_raw = $this->getInput('host_data', ''); + $return_from_preview = $this->getInput('return_from_preview', ''); + + if ($return_from_preview === '1') { + $return_host_data = json_decode($return_host_data_raw, true); + if (is_array($return_host_data)) { + $data['return_source_hostid'] = $return_source_hostid; + $data['return_host_data'] = $return_host_data; + } + } + + $response = new CControllerResponseData($data); + $this->setResponse($response); + } +} diff --git a/zabbix_clonehosts/actions/ClonehostsImport.php b/zabbix_clonehosts/actions/ClonehostsImport.php new file mode 100644 index 0000000..5e35ee4 --- /dev/null +++ b/zabbix_clonehosts/actions/ClonehostsImport.php @@ -0,0 +1,357 @@ +disableCsrfValidation(); + } + if (method_exists($this, 'disableSIDvalidation')) { + $this->disableSIDvalidation(); + } + } + + protected function checkInput(): bool { + $ret = $this->validateInput([ + 'source_hostid' => 'required|string', + 'host_data' => 'required|array' + ]); + + if (!$ret) { + $this->setResponse(new CControllerResponseFatal()); + } + + return $ret; + } + + protected function checkPermissions(): bool { + return $this->getUserType() >= USER_TYPE_ZABBIX_ADMIN; + } + + protected function doAction(): void { + $source_hostid = $this->getInput('source_hostid'); + $host_input = $this->getInput('host_data'); + + $host_name = trim($host_input['host'] ?? ''); + $ip = trim($host_input['ip'] ?? ''); + $visible_name = trim($host_input['visible_name'] ?? ''); + $port = trim($host_input['port'] ?? ''); + $description = trim($host_input['description'] ?? ''); + $groups_input = trim($host_input['groups'] ?? ''); + $templates_input = trim($host_input['templates'] ?? ''); + $tags_input = trim($host_input['tags'] ?? ''); + $macros_input = trim($host_input['macros'] ?? ''); + + $result = [ + 'host' => $host_name, + 'ip' => $ip, + 'success' => false, + 'error' => '', + 'hostid' => '' + ]; + + // Validate required fields. + if ($host_name === '') { + $result['error'] = LangHelper::t('err.host_required'); + $this->sendResponse($result); + return; + } + + if ($ip === '') { + $result['error'] = LangHelper::t('err.ip_required'); + $this->sendResponse($result); + return; + } + + // Check if host already exists. + $existing = API::Host()->get([ + 'output' => ['hostid'], + 'filter' => ['host' => [$host_name]] + ]); + + if (!empty($existing)) { + $result['error'] = LangHelper::t('err.host_exists'); + $this->sendResponse($result); + return; + } + + // Check if template with same name exists. + $existing_tpl = API::Template()->get([ + 'output' => ['templateid'], + 'filter' => ['host' => [$host_name]] + ]); + + if (!empty($existing_tpl)) { + $result['error'] = LangHelper::t('err.template_exists'); + $this->sendResponse($result); + return; + } + + // Load the source host's full configuration for inheritance. + // Use CompatHelper for version-correct host group select parameter. + $host_get_params = [ + 'output' => ['hostid', 'host', 'name', 'status', 'description', + 'inventory_mode', 'tls_connect', 'tls_accept', 'tls_issuer', + 'tls_subject', 'ipmi_authtype', 'ipmi_privilege', + 'ipmi_username', 'ipmi_password' + ], + 'hostids' => [$source_hostid], + 'selectInterfaces' => ['type', 'main', 'useip', 'ip', 'dns', 'port', 'details'], + 'selectParentTemplates' => ['templateid', 'host', 'name'], + 'selectTags' => ['tag', 'value'], + 'selectMacros' => ['macro', 'value', 'description', 'type'] + ]; + $host_get_params = CompatHelper::buildHostGetParams($host_get_params); + + $source_host = API::Host()->get($host_get_params); + + if (empty($source_host)) { + $result['error'] = LangHelper::t('err.source_not_found'); + $this->sendResponse($result); + return; + } + + $source_host = CompatHelper::normalizeHost($source_host[0]); + + // --- Build the host creation payload, inheriting from source host --- + + // 1. Interfaces: use source host's interface as template, override IP and port. + $interfaces = []; + if (!empty($source_host['interfaces'])) { + foreach ($source_host['interfaces'] as $src_iface) { + $iface = [ + 'type' => (int) $src_iface['type'], + 'main' => (int) $src_iface['main'], + 'useip' => (int) $src_iface['useip'], + 'ip' => $ip, + 'dns' => $src_iface['useip'] ? ($src_iface['dns'] ?? '') : $ip, + 'port' => $port !== '' ? $port : $src_iface['port'] + ]; + if (isset($src_iface['details']) && !empty($src_iface['details'])) { + $iface['details'] = $src_iface['details']; + } + $interfaces[] = $iface; + } + } else { + // Default: Zabbix agent interface. + $interfaces[] = [ + 'type' => 1, + 'main' => 1, + 'useip' => 1, + 'ip' => $ip, + 'dns' => '', + 'port' => $port !== '' ? $port : '10050' + ]; + } + + // 2. Host groups: use specified groups or inherit from source host. + $groups = []; + if ($groups_input !== '') { + $group_names = array_filter(array_map('trim', explode(';', $groups_input))); + if (!empty($group_names)) { + // Look up existing groups. + $db_groups = API::HostGroup()->get([ + 'output' => ['groupid', 'name'], + 'filter' => ['name' => $group_names] + ]); + $found_group_names = array_column($db_groups, 'name'); + + foreach ($db_groups as $dg) { + $groups[] = ['groupid' => $dg['groupid']]; + } + + // Auto-create any groups that don't exist yet. + $missing_groups = array_diff($group_names, $found_group_names); + foreach ($missing_groups as $mg_name) { + try { + $created = API::HostGroup()->create(['name' => $mg_name]); + if (isset($created['groupids'][0])) { + $groups[] = ['groupid' => $created['groupids'][0]]; + } + } catch (\Exception $e) { + // If group creation fails, skip it silently. + // The group will simply not be added. + } + } + } + } + if (empty($groups) && !empty($source_host['hostgroups'])) { + foreach ($source_host['hostgroups'] as $sg) { + $groups[] = ['groupid' => $sg['groupid']]; + } + } + + if (empty($groups)) { + $result['error'] = LangHelper::t('err.no_groups'); + $this->sendResponse($result); + return; + } + + // 3. Templates: use specified templates or inherit from source host. + $templates = []; + if ($templates_input !== '') { + $template_names = array_filter(array_map('trim', explode(';', $templates_input))); + if (!empty($template_names)) { + $db_templates = API::Template()->get([ + 'output' => ['templateid', 'host', 'name'], + 'filter' => ['host' => $template_names] + ]); + // Also try matching by visible name. + $found_hosts = array_column($db_templates, 'host'); + $missing = array_diff($template_names, $found_hosts); + if (!empty($missing)) { + $db_templates_by_name = API::Template()->get([ + 'output' => ['templateid', 'host', 'name'], + 'filter' => ['name' => array_values($missing)] + ]); + $db_templates = array_merge($db_templates, $db_templates_by_name); + } + foreach ($db_templates as $dt) { + $templates[] = ['templateid' => $dt['templateid']]; + } + } + } + if (empty($templates) && !empty($source_host['parentTemplates'])) { + foreach ($source_host['parentTemplates'] as $st) { + $templates[] = ['templateid' => $st['templateid']]; + } + } + + // 4. Tags: use specified tags or inherit from source host. + $tags = []; + if ($tags_input !== '') { + $tag_pairs = array_filter(array_map('trim', explode(';', $tags_input))); + foreach ($tag_pairs as $pair) { + $parts = explode('=', $pair, 2); + if (count($parts) === 2) { + $tags[] = [ + 'tag' => trim($parts[0]), + 'value' => trim($parts[1]) + ]; + } elseif (count($parts) === 1 && trim($parts[0]) !== '') { + $tags[] = [ + 'tag' => trim($parts[0]), + 'value' => '' + ]; + } + } + } + if (empty($tags) && !empty($source_host['tags'])) { + foreach ($source_host['tags'] as $st) { + $tags[] = [ + 'tag' => $st['tag'], + 'value' => $st['value'] ?? '' + ]; + } + } + + // 5. Macros: use specified macros or inherit from source host. + $macros = []; + if ($macros_input !== '') { + $macro_pairs = array_filter(array_map('trim', explode(';', $macros_input))); + foreach ($macro_pairs as $pair) { + $parts = explode('=', $pair, 2); + if (count($parts) === 2) { + $macros[] = [ + 'macro' => trim($parts[0]), + 'value' => trim($parts[1]), + 'type' => 0 + ]; + } + } + } + if (empty($macros) && !empty($source_host['macros'])) { + foreach ($source_host['macros'] as $sm) { + $macros[] = [ + 'macro' => $sm['macro'], + 'value' => $sm['value'] ?? '', + 'type' => (int) ($sm['type'] ?? 0) + ]; + if (isset($sm['description'])) { + $macros[count($macros) - 1]['description'] = $sm['description']; + } + } + } + + // 6. Build the final host creation array. + $create_host = [ + 'host' => $host_name, + 'name' => $visible_name !== '' ? $visible_name : $host_name, + 'status' => (int) $source_host['status'], + 'interfaces' => $interfaces, + 'groups' => $groups, + 'templates' => $templates, + 'tags' => $tags, + 'macros' => $macros, + 'inventory_mode' => (int) $source_host['inventory_mode'], + 'description' => $description !== '' ? $description : ($source_host['description'] ?? ''), + 'tls_connect' => (int) $source_host['tls_connect'], + 'tls_accept' => (int) $source_host['tls_accept'] + ]; + + if (!empty($source_host['tls_issuer'])) { + $create_host['tls_issuer'] = $source_host['tls_issuer']; + } + if (!empty($source_host['tls_subject'])) { + $create_host['tls_subject'] = $source_host['tls_subject']; + } + + // 7. Create the host via API. + try { + $created = API::Host()->create($create_host); + + if (isset($created['hostids'][0])) { + $result['success'] = true; + $result['hostid'] = $created['hostids'][0]; + } else { + $result['error'] = LangHelper::t('err.unknown_api_response'); + } + } catch (\Exception $e) { + $result['error'] = $e->getMessage(); + } + + $this->sendResponse($result); + } + + /** + * Set JSON response via CControllerResponseData. + * The view (clonehosts.import.php) outputs the data as JSON. + */ + private function sendResponse(array $data): void { + $this->setResponse(new CControllerResponseData($data)); + } +} diff --git a/zabbix_clonehosts/actions/ClonehostsPreview.php b/zabbix_clonehosts/actions/ClonehostsPreview.php new file mode 100644 index 0000000..a0dd7dd --- /dev/null +++ b/zabbix_clonehosts/actions/ClonehostsPreview.php @@ -0,0 +1,247 @@ +disableCsrfValidation(); + } + if (method_exists($this, 'disableSIDvalidation')) { + $this->disableSIDvalidation(); + } + } + + protected function checkInput(): bool { + $ret = $this->validateInput([ + 'source_hostid' => 'required|string', + 'host_data' => 'required|string' + ]); + + if (!$ret) { + $this->setResponse(new CControllerResponseFatal()); + } + + return $ret; + } + + protected function checkPermissions(): bool { + return $this->getUserType() >= USER_TYPE_ZABBIX_ADMIN; + } + + protected function doAction(): void { + $source_hostid = $this->getInput('source_hostid'); + $host_data_json = $this->getInput('host_data'); + $host_data = json_decode($host_data_json, true); + + if (!is_array($host_data)) { + $this->setResponse(new CControllerResponseFatal()); + return; + } + + // Load the source host's full configuration for inheritance. + // Use CompatHelper for version-correct host group select parameter. + $host_get_params = [ + 'output' => ['hostid', 'host', 'name', 'status', 'description', + 'inventory_mode', 'tls_connect', 'tls_accept', 'tls_issuer', + 'tls_subject', 'ipmi_authtype', 'ipmi_privilege', + 'ipmi_username', 'ipmi_password' + ], + 'hostids' => [$source_hostid], + 'selectInterfaces' => ['type', 'main', 'useip', 'ip', 'dns', 'port', 'details'], + 'selectParentTemplates' => ['templateid', 'host', 'name'], + 'selectTags' => ['tag', 'value'], + 'selectMacros' => ['macro', 'value', 'description', 'type'] + ]; + $host_get_params = CompatHelper::buildHostGetParams($host_get_params); + + $source_host = API::Host()->get($host_get_params); + + $source_host = $source_host ? CompatHelper::normalizeHost($source_host[0]) : []; + + // Check for duplicate host names within the batch. + $batch_names = []; + $duplicate_names = []; + foreach ($host_data as $item) { + $host_name = trim($item['host'] ?? ''); + if ($host_name === '') { + continue; + } + if (in_array($host_name, $batch_names)) { + $duplicate_names[] = $host_name; + } + $batch_names[] = $host_name; + } + + // Check for existing hosts in Zabbix with the same names. + $existing_hosts = []; + if (!empty($batch_names)) { + $existing = API::Host()->get([ + 'output' => ['hostid', 'host', 'name'], + 'filter' => ['host' => array_unique($batch_names)] + ]); + foreach ($existing as $eh) { + $existing_hosts[$eh['host']] = $eh; + } + } + + // Also check templates with the same names (host name must be unique across hosts and templates). + $existing_templates = []; + if (!empty($batch_names)) { + $existing_tpl = API::Template()->get([ + 'output' => ['templateid', 'host'], + 'filter' => ['host' => array_unique($batch_names)] + ]); + foreach ($existing_tpl as $et) { + $existing_templates[$et['host']] = $et; + } + } + + // Build conflict info for each host entry. + $conflicts = []; + foreach ($host_data as $idx => $item) { + $host_name = trim($item['host'] ?? ''); + $ip = trim($item['ip'] ?? ''); + $issues = []; + + if ($host_name === '') { + $issues[] = LangHelper::t('err.host_required'); + } + if ($ip === '') { + $issues[] = LangHelper::t('err.ip_required'); + } + if (in_array($host_name, $duplicate_names)) { + $issues[] = LangHelper::t('err.batch_duplicate'); + } + if (isset($existing_hosts[$host_name])) { + $issues[] = LangHelper::t('err.host_exists_in_zabbix'); + } + if (isset($existing_templates[$host_name])) { + $issues[] = LangHelper::t('err.template_exists'); + } + + $conflicts[$idx] = $issues; + } + + // Prepare host groups and templates lookup maps for name resolution. + $all_groups = API::HostGroup()->get([ + 'output' => ['groupid', 'name'], + 'preservekeys' => false + ]); + $group_map = []; + foreach ($all_groups as $g) { + $group_map[$g['name']] = $g['groupid']; + } + + $all_templates = API::Template()->get([ + 'output' => ['templateid', 'host', 'name'], + 'preservekeys' => false + ]); + $template_map = []; + foreach ($all_templates as $t) { + $template_map[$t['host']] = $t['templateid']; + $template_map[$t['name']] = $t['templateid']; + } + + // Build field status for each row: detect which groups/templates exist vs need creation. + $field_status = []; + foreach ($host_data as $idx => $item) { + $fstatus = [ + 'groups' => [], + 'templates' => [], + 'groups_inherited' => true, + 'templates_inherited' => true, + 'tags_inherited' => true, + 'macros_inherited' => true + ]; + + // Groups + $groups_input = trim($item['groups'] ?? ''); + if ($groups_input !== '') { + $fstatus['groups_inherited'] = false; + $group_names = array_filter(array_map('trim', explode(';', $groups_input))); + foreach ($group_names as $gn) { + $fstatus['groups'][] = [ + 'name' => $gn, + 'status' => isset($group_map[$gn]) ? 'exists' : 'new' + ]; + } + } + + // Templates + $templates_input = trim($item['templates'] ?? ''); + if ($templates_input !== '') { + $fstatus['templates_inherited'] = false; + $template_names = array_filter(array_map('trim', explode(';', $templates_input))); + foreach ($template_names as $tn) { + // Try both host and name lookup + $found = isset($template_map[$tn]); + $fstatus['templates'][] = [ + 'name' => $tn, + 'status' => $found ? 'exists' : 'not_found' + ]; + } + } + + // Tags + $fstatus['tags_inherited'] = (trim($item['tags'] ?? '') === ''); + + // Macros + $fstatus['macros_inherited'] = (trim($item['macros'] ?? '') === ''); + + $field_status[$idx] = $fstatus; + } + + $data = [ + 'source_host' => $source_host, + 'host_data' => $host_data, + 'conflicts' => $conflicts, + 'duplicate_names' => array_unique($duplicate_names), + 'existing_hosts' => $existing_hosts, + 'existing_templates' => $existing_templates, + 'group_map' => $group_map, + 'template_map' => $template_map, + 'field_status' => $field_status, + 'total_count' => count($host_data), + 'conflict_count' => count(array_filter($conflicts, function ($c) { + return !empty($c); + })) + ]; + + $response = new CControllerResponseData($data); + $this->setResponse($response); + } +} diff --git a/zabbix_clonehosts/actions/ClonehostsSource.php b/zabbix_clonehosts/actions/ClonehostsSource.php new file mode 100644 index 0000000..7c143dd --- /dev/null +++ b/zabbix_clonehosts/actions/ClonehostsSource.php @@ -0,0 +1,93 @@ +disableCsrfValidation(); + } + if (method_exists($this, 'disableSIDvalidation')) { + $this->disableSIDvalidation(); + } + } + + protected function checkInput(): bool { + $ret = $this->validateInput([ + 'source_hostid' => 'required|string' + ]); + + if (!$ret) { + $this->setResponse(new CControllerResponseFatal()); + } + + return $ret; + } + + protected function checkPermissions(): bool { + return $this->getUserType() >= USER_TYPE_ZABBIX_ADMIN; + } + + protected function doAction(): void { + $source_hostid = $this->getInput('source_hostid'); + + // Use CompatHelper for version-correct host group select parameter. + $host_get_params = [ + 'output' => ['hostid', 'host', 'name', 'status', 'description', + 'inventory_mode', 'tls_connect', 'tls_accept' + ], + 'hostids' => [$source_hostid], + 'selectInterfaces' => ['type', 'main', 'useip', 'ip', 'dns', 'port'], + 'selectParentTemplates' => ['templateid', 'host', 'name'], + 'selectTags' => ['tag', 'value'], + 'selectMacros' => ['macro', 'value', 'description', 'type'] + ]; + $host_get_params = CompatHelper::buildHostGetParams($host_get_params); + + $source_host = API::Host()->get($host_get_params); + + $source_host = $source_host ? CompatHelper::normalizeHost($source_host[0]) : null; + + $data = [ + 'success' => !empty($source_host), + 'source_host' => $source_host, + 'error' => empty($source_host) ? LangHelper::t('err.source_not_found') : '' + ]; + + $response = new CControllerResponseData($data); + $this->setResponse($response); + } +} diff --git a/zabbix_clonehosts/assets/css/clonehosts.css b/zabbix_clonehosts/assets/css/clonehosts.css new file mode 100644 index 0000000..89b328a --- /dev/null +++ b/zabbix_clonehosts/assets/css/clonehosts.css @@ -0,0 +1,1064 @@ +/* +** Zabbix +** Copyright (C) 2001-2024 Zabbix SIA +** +** Styles for Host Batch Clone module. +*/ + +/* ===== Page Layout ===== */ +.clonehosts-wrapper { + padding: 0; +} + +.clonehosts-page { + max-width: 100%; +} + +.clonehosts-section { + margin-bottom: 20px; + padding: 15px 20px; + background: #ffffff; + border: 1px solid #dfe4e7; + border-radius: 4px; +} + +.clonehosts-section h3 { + margin: 0 0 10px 0; + font-size: 15px; + font-weight: 600; + color: #1f1f1f; + padding-bottom: 8px; + border-bottom: 1px solid #ebebeb; +} + +.clonehosts-section .description { + margin: 0 0 15px 0; + font-size: 12px; + color: #768390; + line-height: 1.5; +} + +/* ===== Filter Fields ===== */ +.filter-field-wrapper { + margin-bottom: 12px; +} + +.filter-field-label { + display: block; + margin-bottom: 4px; + font-size: 12px; + font-weight: 600; + color: #4d5966; +} + +/* ===== Multiselect Control ===== */ +.multiselect-wrapper { + position: relative; +} + +.multiselect-selected { + display: flex; + flex-wrap: wrap; + gap: 4px; + min-height: 0; + margin-bottom: 4px; +} + +.multiselect-selected:empty { + margin-bottom: 0; +} + +.ms-tag { + display: inline-flex; + align-items: center; + gap: 4px; + padding: 2px 6px; + background: #e8f5ff; + border: 1px solid #b3d9ff; + border-radius: 3px; + font-size: 12px; + color: #1f2c33; + line-height: 1.4; +} + +.ms-tag-icon { + display: inline-flex; + align-items: center; + justify-content: center; + width: 16px; + height: 16px; + border-radius: 2px; + font-size: 9px; + font-weight: 700; + color: #fff; + background: #0275b8; +} + +.ms-tag-name { + max-width: 200px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.ms-tag-remove { + display: inline-flex; + align-items: center; + justify-content: center; + width: 14px; + height: 14px; + margin-left: 2px; + font-size: 14px; + line-height: 1; + color: #768d99; + cursor: pointer; + border-radius: 2px; +} + +.ms-tag-remove:hover { + background: #d4e8f7; + color: #dc3838; +} + +.multiselect-input-row { + display: flex; + align-items: center; + gap: 6px; +} + +.multiselect-input { + flex: 1; + min-width: 150px; + padding: 5px 8px; + border: 1px solid #afb7be; + border-radius: 3px; + font-size: 12px; + background: #fff; + height: 28px; + color: #1f2c33; + transition: border-color 0.2s, box-shadow 0.2s; +} + +.multiselect-input:focus { + border-color: #4298e8; + outline: none; + box-shadow: 0 0 0 2px rgba(66, 152, 232, 0.15); +} + +.multiselect-input::placeholder { + color: #b0b8bf; + font-style: italic; +} + +.multiselect-button { + padding: 5px 12px; + border: 1px solid #768390; + border-radius: 3px; + font-size: 12px; + font-weight: 600; + background: #e9edf0; + color: #333333; + cursor: pointer; + white-space: nowrap; + height: 28px; + transition: all 0.2s; +} + +.multiselect-button:hover { + background: #d4dae0; + border-color: #4d5966; + color: #1f1f1f; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12); +} + +.multiselect-button:active { + background: #c5cdd4; +} + +/* ===== Inline Dropdown ===== */ +.multiselect-dropdown { + position: absolute; + top: 100%; + left: 0; + z-index: 100; + min-width: 100%; + max-width: 500px; + max-height: 280px; + overflow-y: auto; + margin-top: 2px; + background: #fff; + border: 1px solid #afb7be; + border-radius: 3px; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); +} + +.ms-dropdown-item { + display: flex; + align-items: center; + gap: 8px; + padding: 6px 10px; + cursor: pointer; + font-size: 12px; + color: #1f2c33; +} + +.ms-dropdown-item:hover, +.ms-dropdown-item.active { + background: #e8f5ff; + color: #0275b8; +} + +.ms-item-icon { + width: 16px; + height: 16px; + flex-shrink: 0; + background-repeat: no-repeat; + background-position: center; + background-size: contain; +} + +.ms-item-icon.host-icon { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23768d99' d='M13.5 2h-11A1.5 1.5 0 0 0 1 3.5v9A1.5 1.5 0 0 0 2.5 14h11a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 13.5 2zM8 11.5a.5.5 0 0 1-.5-.5V7.707L6.354 8.854a.5.5 0 1 1-.708-.708l2-2a.5.5 0 0 1 .708 0l2 2a.5.5 0 1 1-.708.708L8.5 7.707V11a.5.5 0 0 1-.5.5z'/%3E%3C/svg%3E"); + opacity: 0.7; +} + +.ms-item-icon.group-icon { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23768d99' d='M8 3.5a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5zM3.5 9a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5zm9 0a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5z'/%3E%3C/svg%3E"); + opacity: 0.7; +} + +.ms-dropdown-item:hover .ms-item-icon, +.ms-dropdown-item.active .ms-item-icon { + opacity: 1; +} + +.ms-item-name { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.ms-dropdown-no-match { + padding: 15px; + text-align: center; + color: #768d99; + font-size: 12px; + font-style: italic; +} + +/* ===== Popup Dialog ===== */ +.ms-popup-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.3); + z-index: 10000; + display: flex; + align-items: center; + justify-content: center; +} + +.ms-popup-dialog { + background: #fff; + border: 1px solid #dfe4e7; + border-radius: 4px; + box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2); + width: 520px; + max-width: 90vw; + max-height: 80vh; + display: flex; + flex-direction: column; +} + +.ms-popup-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 10px 15px; + border-bottom: 1px solid #dfe4e7; + background: #f4f6f8; + border-radius: 4px 4px 0 0; +} + +.ms-popup-title { + font-size: 14px; + font-weight: 600; + color: #1f1f1f; +} + +.ms-popup-close { + font-size: 20px; + line-height: 1; + color: #768d99; + background: transparent; + border: none; + cursor: pointer; + padding: 0; + width: 24px; + height: 24px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 3px; +} + +.ms-popup-close:hover { + background: #dfe4e7; + color: #dc3838; +} + +.ms-popup-search { + padding: 10px 15px; + border-bottom: 1px solid #ebeef0; +} + +.ms-popup-search input { + width: 100%; + padding: 6px 10px; + border: 1px solid #afb7be; + border-radius: 3px; + font-size: 13px; + background: #fff; + color: #1f2c33; +} + +.ms-popup-search input:focus { + border-color: #4298e8; + outline: none; + box-shadow: 0 0 0 2px rgba(66, 152, 232, 0.15); +} + +.ms-popup-list-wrapper { + flex: 1; + overflow-y: auto; + max-height: 400px; +} + +.ms-popup-table { + width: 100%; + border-collapse: collapse; + font-size: 12px; +} + +.ms-popup-table thead { + position: sticky; + top: 0; + z-index: 5; +} + +.ms-popup-table thead th { + background: #f4f6f8; + border-bottom: 1px solid #dfe4e7; + padding: 6px 8px; + text-align: left; + font-weight: 600; + color: #4d5966; +} + +.ms-popup-check-col { + width: 32px; + text-align: center; +} + +.ms-popup-name-col { + padding: 4px 8px; +} + +.ms-popup-table tbody tr { + cursor: pointer; + border-bottom: 1px solid #ebeef0; +} + +.ms-popup-table tbody tr:hover { + background: #e8f5ff; +} + +.ms-popup-table tbody td.ms-popup-check-col { + text-align: center; + padding: 4px 8px; +} + +.ms-popup-table tbody td.ms-popup-name-col { + padding: 4px 8px; + color: #1f2c33; +} + +.ms-popup-no-match { + padding: 20px; + text-align: center; + color: #768d99; + font-style: italic; +} + +.ms-popup-footer { + display: flex; + align-items: center; + justify-content: space-between; + padding: 10px 15px; + border-top: 1px solid #dfe4e7; + background: #f4f6f8; + border-radius: 0 0 4px 4px; +} + +.ms-popup-count { + font-size: 12px; + color: #768d99; +} + +.ms-popup-actions { + display: flex; + gap: 8px; +} + +.ms-popup-actions .btn-grey { + padding: 5px 14px; + border: 1px solid #768390; + border-radius: 3px; + font-size: 12px; + font-weight: 600; + background: #e9edf0; + color: #333333; + cursor: pointer; + height: 28px; +} + +.ms-popup-actions .btn-grey:hover { + background: #d4dae0; +} + +.ms-popup-apply { + padding: 5px 14px; + border: 1px solid #4298e8; + border-radius: 3px; + font-size: 12px; + font-weight: 600; + background: #4298e8; + color: #fff; + cursor: pointer; + height: 28px; +} + +.ms-popup-apply:hover { + background: #3b87d1; + border-color: #3b87d1; +} + +/* ===== Source Host Selection ===== */ +.source-host-select-wrapper { + display: flex; + align-items: flex-start; + gap: 10px; + margin-bottom: 15px; +} + +.source-host-select { + min-width: 350px; + width: 100%; + max-width: 600px; + padding: 4px; + border: 1px solid #afb7be; + border-radius: 3px; + font-size: 12px; + background: #fff; + height: 200px; + overflow-y: auto; +} + +.source-host-select option { + padding: 3px 6px; +} + +.source-host-select option:checked { + background: #4298e8; + color: #fff; +} + +.source-host-select:focus { + border-color: #4298e8; + outline: none; + box-shadow: 0 0 0 2px rgba(66, 152, 232, 0.15); +} + +#load-source-btn { + align-self: center; +} + +.source-host-info { + margin-top: 15px; + padding: 12px 15px; + background: #f4f6f8; + border: 1px solid #dfe4e7; + border-radius: 4px; +} + +.source-host-info h4 { + margin: 0 0 10px 0; + font-size: 14px; + color: #1f1f1f; +} + +.source-info-table { + width: 100%; + border-collapse: collapse; +} + +.source-info-table th { + text-align: right; + white-space: nowrap; + padding: 4px 12px 4px 0; + font-weight: 600; + color: #4d5966; + font-size: 12px; + width: 130px; + vertical-align: top; +} + +.source-info-table td { + padding: 4px 0; + font-size: 12px; + color: #1f1f1f; +} + +.inherited-note { + margin: 10px 0 0 0; + font-size: 11px; + color: #768390; + font-style: italic; +} + +/* ===== Tabs ===== */ +.tabs-nav { + display: flex; + gap: 0; + margin-bottom: 0; + border-bottom: 2px solid #dfe4e7; +} + +.tab-btn { + padding: 8px 20px; + border: 1px solid #dfe4e7; + border-bottom: none; + background: #f4f6f8; + color: #4d5966; + font-size: 13px; + cursor: pointer; + border-radius: 4px 4px 0 0; + transition: all 0.2s; +} + +.tab-btn:hover { + background: #e9edf0; +} + +.tab-btn.active { + background: #fff; + color: #1f1f1f; + border-bottom: 2px solid #fff; + margin-bottom: -2px; + font-weight: 600; +} + +.tab-content { + display: none; + padding: 15px 0; +} + +.tab-content.active { + display: block; +} + +/* ===== File Upload ===== */ +.file-upload-area { + display: flex; + align-items: center; + gap: 10px; + flex-wrap: wrap; +} + +.file-upload-area input[type="file"] { + padding: 4px; + font-size: 13px; +} + +.csv-parse-result { + margin-top: 15px; +} + +.csv-parse-summary { + display: flex; + gap: 20px; + padding: 8px 12px; + background: #f4f6f8; + border-radius: 3px; + margin-bottom: 10px; + font-size: 13px; +} + +.csv-preview-table { + font-size: 12px; +} + +.more-rows { + text-align: center; + color: #768390; + font-style: italic; + padding: 8px; +} + +/* ===== Online Table ===== */ +.table-toolbar { + display: flex; + align-items: center; + gap: 8px; + margin-bottom: 10px; + flex-wrap: wrap; +} + +.row-count { + margin-left: auto; + font-size: 12px; + color: #768390; +} + +.table-wrapper { + overflow-x: auto; + max-height: 500px; + overflow-y: auto; + border: 1px solid #dfe4e7; + border-radius: 3px; +} + +.host-data-table { + width: 100%; + border-collapse: collapse; + font-size: 12px; +} + +.host-data-table thead { + position: sticky; + top: 0; + z-index: 10; +} + +.host-data-table th { + background: #f4f6f8; + border-bottom: 1px solid #dfe4e7; + padding: 6px 8px; + text-align: left; + font-weight: 600; + color: #4d5966; + white-space: nowrap; +} + +.host-data-table td { + border-bottom: 1px solid #ebebeb; + padding: 4px 6px; +} + +.host-data-table input[type="text"] { + width: 100%; + padding: 3px 6px; + border: 1px solid #c5cdd4; + border-radius: 2px; + font-size: 12px; + background: #fff; +} + +.host-data-table input[type="text"]:focus { + border-color: #4298e8; + outline: none; + box-shadow: 0 0 0 1px rgba(66, 152, 232, 0.2); +} + +.host-data-table input[type="text"]::placeholder { + color: #b0b8bf; + font-style: italic; +} + +.col-checkbox { + width: 32px; + text-align: center; +} + +.col-host, .col-ip { + min-width: 140px; +} + +.col-visible-name, .col-port { + min-width: 100px; +} + +.col-groups, .col-templates, .col-tags, .col-macros { + min-width: 150px; +} + +.col-description { + min-width: 120px; +} + +/* Column widths for preview table */ +.host-data-table .col-status { + width: 50px; + text-align: center; +} + +/* ===== Preview Table ===== */ +.row-ok { + background: #fff; +} + +.row-conflict { + background: #fff5f5; +} + +.inherited { + color: #9aa3ac; + font-style: italic; + font-size: 11px; +} + +.icon-ok { + color: #4caf50; + font-weight: bold; +} + +.icon-conflict { + color: #f44336; + font-weight: bold; + font-size: 14px; +} + +.preview-summary-bar { + display: flex; + gap: 20px; + padding: 10px 15px; + background: #f4f6f8; + border-radius: 3px; + font-size: 13px; +} + +.summary-item { + font-weight: 500; +} + +.summary-total { + color: #1f1f1f; +} + +.summary-ok { + color: #4caf50; +} + +.summary-conflict { + color: #f44336; +} + +/* ===== Action Bar ===== */ +.action-bar { + display: flex; + align-items: center; + gap: 12px; + padding: 10px 0; +} + +.preview-hint { + font-size: 12px; + color: #768390; +} + +.conflict-warning { + color: #f44336; + font-size: 12px; + font-weight: 500; +} + +/* ===== Buttons ===== */ +.btn { + display: inline-block; + padding: 6px 16px; + font-size: 13px; + border-radius: 3px; + cursor: pointer; + border: 1px solid transparent; + transition: all 0.2s; + text-decoration: none; + line-height: 1.4; +} + +.btn:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +.btn-primary { + background: #4298e8; + color: #fff; + border-color: #4298e8; +} + +.btn-primary:hover:not(:disabled) { + background: #3b87d1; + border-color: #3b87d1; +} + +.btn-secondary { + background: #e9edf0; + color: #333333; + border: 1px solid #768390; + font-weight: 600; +} + +.btn-secondary:hover:not(:disabled) { + background: #d4dae0; + border-color: #4d5966; + color: #1f1f1f; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12); +} + +.btn-secondary:active:not(:disabled) { + background: #c5cdd4; + border-color: #4d5966; +} + +/* Back button - extra prominence for navigation */ +.btn-back { + background: #4298e8; + color: #ffffff; + border: 1px solid #4298e8; + font-weight: 600; + padding: 6px 18px; +} + +.btn-back:hover:not(:disabled) { + background: #0275b8; + color: #ffffff; + border-color: #0275b8; + box-shadow: 0 2px 4px rgba(2, 117, 184, 0.3); +} + +.btn-back:active:not(:disabled) { + background: #02609b; + color: #ffffff; + border-color: #02609b; +} + +.btn-link { + background: transparent; + color: #4298e8; + border: none; + text-decoration: underline; + padding: 6px 8px; +} + +.btn-link:hover:not(:disabled) { + color: #3b87d1; +} + +/* ===== Progress Bar ===== */ +.progress-bar-wrapper { + display: flex; + align-items: center; + gap: 15px; + margin-bottom: 20px; +} + +.progress-bar-container { + flex: 1; + height: 24px; + background: #e9edf0; + border-radius: 12px; + overflow: hidden; + border: 1px solid #dfe4e7; +} + +.progress-bar { + height: 100%; + background: linear-gradient(90deg, #4298e8, #54a9f5); + border-radius: 12px; + transition: width 0.3s ease; + min-width: 0; +} + +.progress-text { + font-size: 13px; + font-weight: 600; + color: #4d5966; + white-space: nowrap; + min-width: 80px; +} + +/* ===== Results ===== */ +.results-summary { + display: flex; + gap: 25px; + padding: 12px 15px; + background: #f4f6f8; + border-radius: 3px; + margin-bottom: 15px; + align-items: center; +} + +.result-item { + font-size: 14px; + font-weight: 600; +} + +.result-success { + color: #4caf50; +} + +.result-failed { + color: #f44336; +} + +.result-total { + color: #1f1f1f; +} + +.results-table .result-success td { + color: #1f1f1f; +} + +.results-table .result-failed td { + color: #f44336; +} + +.error-msg { + color: #f44336; + font-size: 12px; +} + +.encoding-select { + padding: 4px 8px; + border: 1px solid #afb7be; + border-radius: 3px; + font-size: 12px; + background: #fff; + height: 28px; + color: #1f2c33; +} + +.encoding-hint { + margin: 5px 0 0 0; + font-size: 11px; + color: #768d99; + font-style: italic; +} + +/* ===== Field Status Badges ===== */ +.col-field-status { + min-width: 150px; + max-width: 250px; +} + +.field-badge { + display: inline-block; + padding: 2px 7px; + margin: 1px 2px; + border-radius: 3px; + font-size: 11px; + line-height: 1.5; + white-space: nowrap; + font-weight: 500; +} + +.field-badge-exists { + background: #e8f5e9; + color: #2e7d32; + border: 1px solid #a5d6a7; +} + +.field-badge-new { + background: #e3f2fd; + color: #1565c0; + border: 1px solid #90caf9; +} + +.field-badge-not_found { + background: #fff3e0; + color: #e65100; + border: 1px solid #ffcc80; +} + +/* Legend for field status */ +.field-legend { + display: flex; + gap: 15px; + padding: 8px 0; + margin-bottom: 8px; + font-size: 11px; + align-items: center; + flex-wrap: wrap; +} + +.field-legend-item { + display: flex; + align-items: center; + gap: 5px; + color: #768d99; +} + +.field-legend-swatch { + display: inline-block; + width: 20px; + height: 12px; + border-radius: 2px; +} + +.field-legend-swatch.exists { background: #e8f5e9; border: 1px solid #a5d6a7; } +.field-legend-swatch.new { background: #e3f2fd; border: 1px solid #90caf9; } +.field-legend-swatch.not_found { background: #fff3e0; border: 1px solid #ffcc80; } +.field-legend-swatch.inherited { background: #f4f6f8; border: 1px solid #dfe4e7; } + +/* ===== Responsive ===== */ +@media (max-width: 1200px) { + .host-data-table { + font-size: 11px; + } + + .host-data-table input[type="text"] { + font-size: 11px; + } + + .source-host-select { + min-width: 250px; + } + + .multiselect-dropdown { + max-width: 100%; + } +} + +@media (max-width: 768px) { + .multiselect-input-row { + flex-direction: column; + align-items: stretch; + } + + .multiselect-button { + width: 100%; + } + + .multiselect-dropdown { + position: static; + width: 100%; + max-width: 100%; + margin-top: 2px; + } + + .source-host-select-wrapper { + flex-direction: column; + } + + .source-host-select { + max-width: 100%; + height: 150px; + } + + .ms-popup-dialog { + width: 95vw; + max-height: 90vh; + } +} diff --git a/zabbix_clonehosts/assets/js/clonehosts.js.php b/zabbix_clonehosts/assets/js/clonehosts.js.php new file mode 100644 index 0000000..1004187 --- /dev/null +++ b/zabbix_clonehosts/assets/js/clonehosts.js.php @@ -0,0 +1,1037 @@ + + +(function($) { + 'use strict'; + + $(function() { + var data = window.clonehostsData || {}; + var sourceHostid = ''; + var parsedRows = []; + + // ===== i18n ===== + var L = data.lang || {}; + + function t(key) { + return L[key] || key; + } + + // ===== CSV Column Definitions ===== + var CSV_COLUMNS = [ + 'host', // Host Name (*) + 'visible_name', // Visible Name + 'ip', // Interface IP (*) + 'port', // Port + 'groups', // Host Groups (semicolon-separated) + 'templates', // Templates (semicolon-separated) + 'tags', // Tags (tag=value;tag=value) + 'macros', // Macros ({$MACRO}=value;{$MACRO}=value) + 'description' // Description + ]; + + function getCSVHeaders() { + return [ + t('csv.header.host'), + t('csv.header.visible_name'), + t('csv.header.ip'), + t('csv.header.port'), + t('csv.header.groups'), + t('csv.header.templates'), + t('csv.header.tags'), + t('csv.header.macros'), + t('csv.header.description') + ]; + } + + // ===== Tab Switching ===== + $('.tab-btn').on('click', function() { + var tab = $(this).data('tab'); + $('.tab-btn').removeClass('active'); + $(this).addClass('active'); + $('.tab-content').removeClass('active').hide(); + $('#tab-' + tab).addClass('active').show(); + updatePreviewButton(); + }); + + // ===== Dual Multiselect: Host Group + Host (with linkage) ===== + var allHosts = data.hosts || []; + var allGroups = data.hostGroups || []; + var selectedGroups = []; // [{id, name}] + var selectedHosts = []; // [{id, name, host}] + var msInputTimer = null; + var msDropdownVisible = false; + var msActiveItemIndex = -1; + var msCurrentFilteredItems = []; + var msActiveContext = null; // 'group' or 'host' + + // Popup dialog state + var popupContext = null; // 'group' or 'host' + var popupSelected = {}; // id -> {id, name} (temp selections in popup) + var popupFilteredItems = []; // current filtered list in popup + + function getHostLabel(host) { + var label = host.name || ''; + if (host.host && host.host !== host.name) { + label += ' (' + host.host + ')'; + } + return label; + } + + function fuzzyMatch(text, keyword) { + if (!keyword) return true; + text = (text || '').toLowerCase(); + keyword = keyword.toLowerCase().trim(); + return text.indexOf(keyword) >= 0; + } + + // ===== Get hosts filtered by selected groups ===== + function getHostsFilteredByGroups() { + if (selectedGroups.length === 0) { + return allHosts.slice(); + } + var groupIds = selectedGroups.map(function(g) { return g.id; }); + return allHosts.filter(function(h) { + if (!h.groupids || h.groupids.length === 0) return false; + for (var i = 0; i < h.groupids.length; i++) { + if (groupIds.indexOf(h.groupids[i]) >= 0) return true; + } + return false; + }); + } + + // ===== Render Selected Tags ===== + function renderGroupTags() { + var $container = $('#group-ms-selected'); + $container.empty(); + $.each(selectedGroups, function(i, g) { + var html = '' + + 'G' + + '' + escapeHtml(g.name) + '' + + '×' + + ''; + $container.append(html); + }); + } + + function renderHostTags() { + var $container = $('#host-ms-selected'); + $container.empty(); + $.each(selectedHosts, function(i, h) { + var label = h.name; + if (h.host && h.host !== h.name) { + label = h.name + ' (' + h.host + ')'; + } + var html = '' + + 'H' + + '' + escapeHtml(label) + '' + + '×' + + ''; + $container.append(html); + }); + } + + // ===== Add/Remove Tags ===== + function addGroup(id, name) { + id = String(id); + for (var i = 0; i < selectedGroups.length; i++) { + if (String(selectedGroups[i].id) === id) return; + } + selectedGroups.push({ id: id, name: name }); + renderGroupTags(); + pruneHostsByGroups(); + renderHostTags(); + applyFilters(); + } + + function addHost(id, name, host) { + id = String(id); + selectedHosts = [{ id: id, name: name, host: host || '' }]; + renderHostTags(); + applyFilters(); + } + + function pruneHostsByGroups() { + if (selectedGroups.length === 0) return; + var filteredHosts = getHostsFilteredByGroups(); + var validIds = filteredHosts.map(function(h) { return h.hostid; }); + selectedHosts = selectedHosts.filter(function(h) { + return validIds.indexOf(h.id) >= 0; + }); + } + + function removeGroup(id) { + id = String(id); + selectedGroups = selectedGroups.filter(function(g) { return String(g.id) !== id; }); + renderGroupTags(); + pruneHostsByGroups(); + renderHostTags(); + applyFilters(); + } + + function removeHost(id) { + id = String(id); + selectedHosts = selectedHosts.filter(function(h) { return String(h.id) !== id; }); + renderHostTags(); + applyFilters(); + } + + // ===== Inline Dropdown for Group Search ===== + function renderGroupDropdown(keyword) { + var $dd = $('#group-ms-dropdown'); + keyword = (keyword || '').toLowerCase().trim(); + + var matched = allGroups.filter(function(g) { + if (!fuzzyMatch(g.name, keyword)) return false; + for (var i = 0; i < selectedGroups.length; i++) { + if (selectedGroups[i].id === g.groupid) return false; + } + return true; + }); + + msCurrentFilteredItems = []; + $dd.empty(); + + if (matched.length === 0) { + $dd.append('
' + t('search.no_match') + '
'); + } else { + $.each(matched, function(i, g) { + var $item = $('
') + .data('id', g.groupid) + .data('name', g.name); + $item.append(''); + $item.append('' + escapeHtml(g.name) + ''); + $dd.append($item); + msCurrentFilteredItems.push($item[0]); + }); + } + + $dd.show(); + msDropdownVisible = true; + msActiveItemIndex = -1; + } + + // ===== Inline Dropdown for Host Search ===== + function renderHostDropdown(keyword) { + var $dd = $('#host-ms-dropdown'); + keyword = (keyword || '').toLowerCase().trim(); + + var availableHosts = getHostsFilteredByGroups(); + + var matched = availableHosts.filter(function(h) { + var label = getHostLabel(h); + if (!fuzzyMatch(label, keyword) && !fuzzyMatch(h.host, keyword)) return false; + for (var i = 0; i < selectedHosts.length; i++) { + if (selectedHosts[i].id === h.hostid) return false; + } + return true; + }); + + msCurrentFilteredItems = []; + $dd.empty(); + + if (matched.length === 0) { + $dd.append('
' + t('search.no_match') + '
'); + } else { + $.each(matched, function(i, h) { + var label = getHostLabel(h); + var $item = $('
') + .data('id', h.hostid) + .data('name', h.name) + .data('host', h.host); + $item.append(''); + $item.append('' + escapeHtml(label) + ''); + $dd.append($item); + msCurrentFilteredItems.push($item[0]); + }); + } + + $dd.show(); + msDropdownVisible = true; + msActiveItemIndex = -1; + } + + function hideMsDropdown() { + $('.multiselect-dropdown').hide(); + msDropdownVisible = false; + msActiveItemIndex = -1; + } + + function setMsActiveItem(index) { + $(msCurrentFilteredItems).removeClass('active'); + if (index >= 0 && index < msCurrentFilteredItems.length) { + msActiveItemIndex = index; + $(msCurrentFilteredItems[msActiveItemIndex]).addClass('active'); + msCurrentFilteredItems[msActiveItemIndex].scrollIntoView({ block: 'nearest' }); + } else { + msActiveItemIndex = -1; + } + } + + // ===== Keyboard Navigation for Multiselect Inputs ===== + function bindMsKeyboardNavigation($input, context) { + $input.on('keydown', function(e) { + if (!msDropdownVisible || msActiveContext !== context) { + if (e.which === 40) { // down arrow opens dropdown + if (context === 'group') renderGroupDropdown($(this).val()); + else renderHostDropdown($(this).val()); + msActiveContext = context; + e.preventDefault(); + } + return; + } + + if (e.which === 40) { // down + e.preventDefault(); + var next = msActiveItemIndex + 1; + if (next >= msCurrentFilteredItems.length) next = 0; + setMsActiveItem(next); + } else if (e.which === 38) { // up + e.preventDefault(); + var prev = msActiveItemIndex - 1; + if (prev < 0) prev = msCurrentFilteredItems.length - 1; + setMsActiveItem(prev); + } else if (e.which === 13) { // enter + e.preventDefault(); + if (msActiveItemIndex >= 0 && msActiveItemIndex < msCurrentFilteredItems.length) { + var $item = $(msCurrentFilteredItems[msActiveItemIndex]); + if (context === 'group') { + addGroup($item.data('id'), $item.data('name')); + $('#group-ms-input').val(''); + } else { + addHost($item.data('id'), $item.data('name'), $item.data('host')); + $('#host-ms-input').val(''); + } + hideMsDropdown(); + } + } else if (e.which === 27) { // escape + e.preventDefault(); + hideMsDropdown(); + } + }); + } + + bindMsKeyboardNavigation($('#group-ms-input'), 'group'); + bindMsKeyboardNavigation($('#host-ms-input'), 'host'); + + // ===== Group Input Events ===== + $('#group-ms-input').on('focus', function() { + if (!msDropdownVisible || msActiveContext !== 'group') { + renderGroupDropdown($(this).val()); + msActiveContext = 'group'; + } + }); + + $('#group-ms-input').on('input', function() { + clearTimeout(msInputTimer); + var val = $(this).val(); + msInputTimer = setTimeout(function() { + renderGroupDropdown(val); + msActiveContext = 'group'; + }, 150); + }); + + // ===== Host Input Events ===== + $('#host-ms-input').on('focus', function() { + if (!msDropdownVisible || msActiveContext !== 'host') { + renderHostDropdown($(this).val()); + msActiveContext = 'host'; + } + }); + + $('#host-ms-input').on('input', function() { + clearTimeout(msInputTimer); + var val = $(this).val(); + msInputTimer = setTimeout(function() { + renderHostDropdown(val); + msActiveContext = 'host'; + }, 150); + }); + + // ===== Dropdown Item Click ===== + $(document).on('mousedown', '#group-ms-dropdown .ms-dropdown-item', function(e) { + e.preventDefault(); + var $item = $(this); + addGroup($item.data('id'), $item.data('name')); + $('#group-ms-input').val('').focus(); + hideMsDropdown(); + }); + + $(document).on('mousedown', '#host-ms-dropdown .ms-dropdown-item', function(e) { + e.preventDefault(); + var $item = $(this); + addHost($item.data('id'), $item.data('name'), $item.data('host')); + $('#host-ms-input').val('').focus(); + hideMsDropdown(); + }); + + // ===== Remove Tag ===== + $(document).on('click', '.ms-tag-remove', function(e) { + e.stopPropagation(); + var $tag = $(this).closest('.ms-tag'); + var id = $tag.data('id'); + var type = $tag.data('type'); + if (type === 'group') removeGroup(id); + else removeHost(id); + }); + + // ===== Click Outside to Close Dropdown ===== + $(document).on('click', function(e) { + var $target = $(e.target); + if (!$target.closest('.multiselect-wrapper').length) { + hideMsDropdown(); + } + }); + + // ===== Popup Dialog for "Select" Button ===== + function openPopup(context) { + popupContext = context; + popupSelected = {}; + + if (context === 'group') { + $.each(selectedGroups, function(i, g) { popupSelected[String(g.id)] = { id: String(g.id), name: g.name }; }); + $('#ms-popup-title').text(t('multiselect.popup_title_group')); + } else { + $.each(selectedHosts, function(i, h) { popupSelected[String(h.id)] = { id: String(h.id), name: h.name, host: h.host || '' }; }); + $('#ms-popup-title').text(t('multiselect.popup_title_host')); + } + + $('#ms-popup-search-input').val(''); + $('#ms-popup-select-all').prop('checked', false); + renderPopupList(''); + $('#ms-popup-overlay').show(); + $('#ms-popup-search-input').focus(); + } + + function renderPopupList(keyword) { + keyword = (keyword || '').toLowerCase().trim(); + var $tbody = $('#ms-popup-tbody'); + $tbody.empty(); + popupFilteredItems = []; + + var items; + if (popupContext === 'group') { + items = allGroups.map(function(g) { return { id: g.groupid, name: g.name, host: '' }; }); + } else { + items = getHostsFilteredByGroups().map(function(h) { + return { id: h.hostid, name: h.name, host: h.host || '' }; + }); + } + + var matched = items.filter(function(item) { + var label = item.name; + if (item.host && item.host !== item.name) label += ' (' + item.host + ')'; + return fuzzyMatch(label, keyword) || fuzzyMatch(item.host, keyword); + }); + + if (matched.length === 0) { + $tbody.append('' + t('search.no_match') + ''); + updatePopupCount(); + return; + } + + $.each(matched, function(i, item) { + var isChecked = popupSelected[String(item.id)] !== undefined; + var label = item.name; + if (item.host && item.host !== item.name) label += ' (' + item.host + ')'; + var $tr = $('') + .data('id', item.id) + .data('name', item.name) + .data('host', item.host); + $tr.append(''); + $tr.append('' + escapeHtml(label) + ''); + $tbody.append($tr); + popupFilteredItems.push(item); + }); + + var allChecked = matched.length > 0 && matched.every(function(item) { return popupSelected[String(item.id)] !== undefined; }); + $('#ms-popup-select-all').prop('checked', allChecked); + updatePopupCount(); + } + + function updatePopupCount() { + var count = Object.keys(popupSelected).length; + $('#ms-popup-count').text(t('multiselect.popup_count').replace('{count}', count)); + } + + // Popup "Select" button click + $('#group-ms-btn').on('click', function() { openPopup('group'); }); + $('#host-ms-btn').on('click', function() { openPopup('host'); }); + + // Popup close + $('#ms-popup-close').on('click', closePopup); + $('#ms-popup-cancel').on('click', closePopup); + $('#ms-popup-overlay').on('click', function(e) { + if (e.target === this) closePopup(); + }); + + function closePopup() { + $('#ms-popup-overlay').hide(); + popupContext = null; + popupSelected = {}; + } + + // Popup search + $('#ms-popup-search-input').on('input', function() { + renderPopupList($(this).val()); + }); + + // Popup checkbox toggle (row click) + $(document).on('click', '#ms-popup-tbody tr', function(e) { + if ($(e.target).is('input[type="checkbox"]')) return; + var $cb = $(this).find('.ms-popup-checkbox'); + if (popupContext === 'host') { + $('.ms-popup-checkbox').prop('checked', false); + $cb.prop('checked', true); + popupSelected = {}; + var $tr = $(this); + var id = String($tr.data('id')); + popupSelected[id] = { id: id, name: $tr.data('name'), host: $tr.data('host') }; + updatePopupCount(); + $('#ms-popup-select-all').prop('checked', false); + applyPopupSelection(); + closePopup(); + } else { + $cb.prop('checked', !$cb.prop('checked')); + $cb.trigger('change'); + applyPopupSelection(); + closePopup(); + } + }); + + $(document).on('change', '.ms-popup-checkbox', function() { + var $tr = $(this).closest('tr'); + var id = String($tr.data('id')); + var name = $tr.data('name'); + var host = $tr.data('host'); + if ($(this).prop('checked')) { + popupSelected[id] = { id: id, name: name, host: host }; + } else { + delete popupSelected[id]; + } + updatePopupCount(); + var allChecked = popupFilteredItems.length > 0 && popupFilteredItems.every(function(item) { return popupSelected[String(item.id)] !== undefined; }); + $('#ms-popup-select-all').prop('checked', allChecked); + }); + + // Popup select-all + $('#ms-popup-select-all').on('change', function() { + var checked = $(this).prop('checked'); + $.each(popupFilteredItems, function(i, item) { + var sid = String(item.id); + if (checked) { + popupSelected[sid] = { id: sid, name: item.name, host: item.host }; + } else { + delete popupSelected[sid]; + } + }); + $('.ms-popup-checkbox').prop('checked', checked); + updatePopupCount(); + }); + + function applyPopupSelection() { + if (popupContext === 'group') { + selectedGroups = Object.values(popupSelected).map(function(g) { + return { id: String(g.id), name: g.name }; + }).sort(function(a, b) { return a.name.localeCompare(b.name); }); + renderGroupTags(); + pruneHostsByGroups(); + renderHostTags(); + } else { + selectedHosts = Object.values(popupSelected).map(function(h) { + return { id: String(h.id), name: h.name, host: h.host || '' }; + }).sort(function(a, b) { return a.name.localeCompare(b.name); }); + renderHostTags(); + } + applyFilters(); + } + + $('#ms-popup-apply').on('click', function() { + applyPopupSelection(); + closePopup(); + }); + + // ===== Filter Source Host List ===== + function applyFilters() { + if (selectedHosts.length > 0) { + var firstHost = selectedHosts[0]; + sourceHostid = firstHost.id; + $('#hidden-source-hostid').val(sourceHostid); + loadSourceHostInfo(sourceHostid); + } else { + sourceHostid = ''; + $('#hidden-source-hostid').val(''); + $('#source-host-info').hide().empty(); + } + updatePreviewButton(); + } + + // ===== Source Host Info Loading ===== + function loadSourceHostInfo(hostid) { + if (!hostid) return; + + $('#source-host-info').show().html('
' + t('step1.loading') + '
'); + + $.ajax({ + url: 'zabbix.php?action=clonehosts.source', + method: 'POST', + data: { + source_hostid: hostid + }, + dataType: 'json', + success: function(resp) { + if (resp.success && resp.source_host) { + displaySourceHostInfo(resp.source_host); + } else { + $('#source-host-info').show().html( + '
' + (resp.error || t('step1.load_failed')) + '
' + ); + } + }, + error: function() { + $('#source-host-info').show().html( + '
' + t('step1.load_failed_network') + '
' + ); + } + }); + } + + function displaySourceHostInfo(host) { + var typeNames = {1: t('iface.Agent'), 2: t('iface.SNMP'), 3: t('iface.IPMI'), 4: t('iface.JMX')}; + var html = '

' + t('step1.source_host_label') + escapeHtml(host.name) + '

'; + html += ''; + + // Interfaces + html += ''; + + // Host Groups + html += ''; + + // Templates + html += ''; + + // Tags + html += ''; + + // Macros + html += ''; + + // Description + html += ''; + + html += '
' + t('preview.interfaces') + ''; + if (host.interfaces && host.interfaces.length > 0) { + var ifaces = []; + $.each(host.interfaces, function(i, iface) { + var typeName = typeNames[iface.type] || (t('iface.Type') + iface.type); + var addr = iface.useip == 1 ? iface.ip : iface.dns; + ifaces.push(typeName + ': ' + addr + ':' + iface.port); + }); + html += ifaces.join('
'); + } else { + html += t('preview.none'); + } + html += '
' + t('col.host_groups') + ''; + if (host.hostgroups && host.hostgroups.length > 0) { + html += $.map(host.hostgroups, function(g) { return escapeHtml(g.name); }).join(', '); + } else { + html += t('preview.none'); + } + html += '
' + t('col.templates') + ''; + if (host.parenttemplates && host.parenttemplates.length > 0) { + html += $.map(host.parenttemplates, function(tp) { return escapeHtml(tp.name); }).join(', '); + } else { + html += t('preview.none'); + } + html += '
' + t('col.tags') + ''; + if (host.tags && host.tags.length > 0) { + html += $.map(host.tags, function(tp) { return escapeHtml(tp.tag + '=' + tp.value); }).join(', '); + } else { + html += t('preview.none'); + } + html += '
' + t('col.macros') + ''; + if (host.macros && host.macros.length > 0) { + html += $.map(host.macros, function(m) { return escapeHtml(m.macro + '=' + m.value); }).join(', '); + } else { + html += t('preview.none'); + } + html += '
' + t('col.description') + '' + escapeHtml(host.description || '') + '
'; + html += '

' + t('step1.inherited_note') + '

'; + + $('#source-host-info').show().html(html); + } + + // ===== CSV File Upload ===== + $('#csv-file-input').on('change', function() { + var file = this.files[0]; + $('#parse-csv-btn').prop('disabled', !file); + }); + + $('#parse-csv-btn').on('click', function() { + var file = $('#csv-file-input')[0].files[0]; + if (!file) return; + + var encoding = $('#csv-encoding-select').val() || 'UTF-8'; + var reader = new FileReader(); + reader.onload = function(e) { + var text = e.target.result; + // Strip UTF-8 BOM if present + if (text.charCodeAt(0) === 0xFEFF) { + text = text.substring(1); + } + parsedRows = parseCSV(text); + + var resultDiv = $('#csv-parse-result'); + if (parsedRows.length === 0) { + resultDiv.show().html('
' + t('csv.no_data') + '
'); + return; + } + + // Validate rows + var validCount = 0; + var invalidCount = 0; + $.each(parsedRows, function(i, row) { + if (row.host && row.ip) { + validCount++; + } else { + invalidCount++; + row._invalid = true; + } + }); + + var html = '
'; + html += '' + t('csv.parsed_rows') + parsedRows.length + ''; + html += '' + t('csv.valid_rows') + validCount + ''; + if (invalidCount > 0) { + html += '' + t('csv.invalid_rows') + invalidCount + ''; + } + html += '
'; + + // Show parsed data preview (first 10 rows) + var csvHeaders = getCSVHeaders(); + html += '
'; + $.each(csvHeaders, function(i, h) { + html += ''; + }); + html += ''; + var previewCount = Math.min(parsedRows.length, 10); + for (var i = 0; i < previewCount; i++) { + var row = parsedRows[i]; + var cls = row._invalid ? 'row-conflict' : 'row-ok'; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + } + if (parsedRows.length > 10) { + html += ''; + } + html += '
' + h + '
' + escapeHtml(row.host || '') + '' + escapeHtml(row.visible_name || '') + '' + escapeHtml(row.ip || '') + '' + escapeHtml(row.port || '') + '' + escapeHtml(row.groups || '') + '' + escapeHtml(row.templates || '') + '' + escapeHtml(row.tags || '') + '' + escapeHtml(row.macros || '') + '' + escapeHtml(row.description || '') + '
' + t('csv.more_rows') + (parsedRows.length - 10) + t('csv.more_rows_suffix') + '
'; + + // Also populate the online table with parsed data + populateTableFromRows(parsedRows); + + resultDiv.show().html(html); + updatePreviewButton(); + }; + reader.readAsText(file, encoding); + }); + + // ===== CSV Parsing ===== + function parseCSV(text) { + var rows = []; + var lines = text.split(/\r\n|\r|\n/); + var startIdx = 0; + + // Detect and skip header row + if (lines.length > 0) { + var firstLine = lines[0].toLowerCase().replace(/\s/g, ''); + if (firstLine.indexOf('hostname') >= 0 || firstLine.indexOf('host_name') >= 0 || + firstLine.indexOf('host') >= 0 || firstLine.indexOf('主机名称') >= 0) { + startIdx = 1; + } + } + + for (var i = startIdx; i < lines.length; i++) { + var line = lines[i].trim(); + if (line === '') continue; + + var fields = parseCSVLine(line); + if (fields.length === 0) continue; + + // Pad fields to match column count + while (fields.length < CSV_COLUMNS.length) { + fields.push(''); + } + + var row = {}; + for (var j = 0; j < CSV_COLUMNS.length; j++) { + row[CSV_COLUMNS[j]] = (fields[j] || '').trim(); + } + + // Skip completely empty rows + var hasData = false; + for (var key in row) { + if (row[key] !== '') { hasData = true; break; } + } + if (hasData) { + rows.push(row); + } + } + + return rows; + } + + function parseCSVLine(line) { + var fields = []; + var current = ''; + var inQuotes = false; + + for (var i = 0; i < line.length; i++) { + var char = line[i]; + + if (char === '"') { + if (inQuotes && i + 1 < line.length && line[i + 1] === '"') { + // Escaped quote + current += '"'; + i++; + } else { + inQuotes = !inQuotes; + } + } else if (char === ',' && !inQuotes) { + fields.push(current); + current = ''; + } else { + current += char; + } + } + + fields.push(current); + return fields; + } + + // ===== CSV Template Download ===== + $('#download-template-btn').on('click', function() { + var csvHeaders = getCSVHeaders(); + var csv = csvHeaders.join(',') + '\n'; + // Add example rows + csv += 'web-server-01,Web Server 01,192.168.1.10,10050,Servers;Web Servers,Linux by Zabbix Agent;Nginx by HTTP,env=prod;os=linux,{$SNMP_COMMUNITY}=public,Web server 01\n'; + csv += 'db-server-01,DB Server 01,192.168.1.20,10050,Servers;Database Servers,MySQL by Zabbix Agent,env=prod;os=linux;role=db,{$MYSQL_PORT}=3306,Database server 01\n'; + + var blob = new Blob(['\ufeff' + csv], {type: 'text/csv;charset=utf-8;'}); + var link = document.createElement('a'); + link.href = URL.createObjectURL(blob); + link.download = 'clonehosts_template.csv'; + link.click(); + }); + + // ===== Online Table Management ===== + $('#add-row-btn').on('click', function() { + addTableRow(); + }); + + $('#remove-row-btn').on('click', function() { + $('#host-data-tbody input.row-checkbox:checked').each(function() { + $(this).closest('tr').remove(); + }); + updateRowCount(); + updatePreviewButton(); + }); + + $('#clear-table-btn').on('click', function() { + if (confirm(t('table.clear_confirm'))) { + $('#host-data-tbody').empty(); + addTableRow(); + updateRowCount(); + updatePreviewButton(); + } + }); + + $('#select-all-rows').on('change', function() { + var checked = $(this).prop('checked'); + $('#host-data-tbody input.row-checkbox').prop('checked', checked); + }); + + function addTableRow(rowData) { + rowData = rowData || {}; + var phRequired = t('table.placeholder.required'); + var phInherited = t('table.placeholder.inherited'); + var row = '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''; + $('#host-data-tbody').append(row); + updateRowCount(); + updatePreviewButton(); + } + + function populateTableFromRows(rows) { + $('#host-data-tbody').empty(); + $.each(rows, function(i, row) { + addTableRow(row); + }); + if (rows.length === 0) { + addTableRow(); + } + } + + function updateRowCount() { + $('#row-count').text($('#host-data-tbody tr').length); + } + + // ===== Preview Button Management ===== + function updatePreviewButton() { + var hasSource = !!sourceHostid; + var hasData = false; + + // Check if there's data in the table + $('#host-data-tbody tr').each(function() { + var host = $(this).find('.input-host').val(); + var ip = $(this).find('.input-ip').val(); + if (host && host.trim() && ip && ip.trim()) { + hasData = true; + return false; // break + } + }); + + // Also check parsed CSV rows + if (!hasData && parsedRows.length > 0) { + $.each(parsedRows, function(i, row) { + if (row.host && row.ip) { + hasData = true; + return false; // break + } + }); + } + + $('#preview-btn').prop('disabled', !(hasSource && hasData)); + + if (!hasSource) { + $('.preview-hint').text(t('preview.hint_no_source')); + } else if (!hasData) { + $('.preview-hint').text(t('preview.hint_no_data')); + } else { + $('.preview-hint').text(t('preview.hint_ready')); + } + } + + // Live validation + $(document).on('input', '#host-data-tbody input', function() { + updatePreviewButton(); + }); + + // ===== Form Submission to Preview ===== + $('#preview-btn').on('click', function() { + var hostData = collectHostData(); + if (hostData.length === 0) { + alert(t('preview.alert_no_data')); + return; + } + + $('#hidden-source-hostid').val(sourceHostid); + $('#hidden-host-data').val(JSON.stringify(hostData)); + $('#preview-form').submit(); + }); + + function collectHostData() { + var rows = []; + $('#host-data-tbody tr').each(function() { + var host = $(this).find('.input-host').val(); + var ip = $(this).find('.input-ip').val(); + + if (!host || !ip) return; // skip + host = host.trim(); + ip = ip.trim(); + if (!host || !ip) return; // skip + + rows.push({ + host: host, + visible_name: ($(this).find('.input-visible-name').val() || '').trim(), + ip: ip, + port: ($(this).find('.input-port').val() || '').trim(), + groups: ($(this).find('.input-groups').val() || '').trim(), + templates: ($(this).find('.input-templates').val() || '').trim(), + tags: ($(this).find('.input-tags').val() || '').trim(), + macros: ($(this).find('.input-macros').val() || '').trim(), + description: ($(this).find('.input-description').val() || '').trim() + }); + }); + return rows; + } + + // ===== Utility Functions ===== + function escapeHtml(str) { + if (str === null || str === undefined) return ''; + return String(str) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); + } + + // ===== Initialize ===== + // Handle return-from-preview: restore source host selection + table data. + var returnHostData = data.returnHostData || []; + var returnSourceHostid = data.returnSourceHostid || ''; + + if (returnSourceHostid && returnHostData.length > 0) { + // Find the source host in the allHosts list to restore its tag. + for (var i = 0; i < allHosts.length; i++) { + if (String(allHosts[i].hostid) === String(returnSourceHostid)) { + selectedHosts = [{ + id: String(allHosts[i].hostid), + name: allHosts[i].name, + host: allHosts[i].host || '' + }]; + renderHostTags(); + break; + } + } + + // Switch to the online table tab and populate rows. + $('.tab-btn').removeClass('active'); + $('.tab-btn[data-tab="table"]').addClass('active'); + $('.tab-content').removeClass('active').hide(); + $('#tab-table').addClass('active').show(); + + populateTableFromRows(returnHostData); + } + + // Populate source host list (all hosts initially) + applyFilters(); + + // Start with one empty row (only if table body is empty and no return data) + if ($('#host-data-tbody tr').length === 0) { + addTableRow(); + } + updatePreviewButton(); +}); + +})(jQuery); diff --git a/zabbix_clonehosts/assets/js/clonehosts.preview.js.php b/zabbix_clonehosts/assets/js/clonehosts.preview.js.php new file mode 100644 index 0000000..e83b1f2 --- /dev/null +++ b/zabbix_clonehosts/assets/js/clonehosts.preview.js.php @@ -0,0 +1,253 @@ + + +(function($) { + 'use strict'; + + $(function() { + var config = window.clonehostsPreview || {}; + var hostData = config.hostData || []; + var totalCount = config.totalCount || 0; + var sourceHostid = config.sourceHostid || ''; + var ajaxUrl = config.ajaxUrl || 'zabbix.php?action=clonehosts.import'; + + // ===== i18n ===== + var L = config.lang || {}; + + function t(key) { + return L[key] || key; + } + + var successCount = 0; + var failedCount = 0; + var processedCount = 0; + var results = []; + var importing = false; + var importQueue = []; // Only hosts selected for import + + // ===== Update import button label based on selected rows ===== + function updateImportButton() { + var selectedCount = $('#preview-table input.row-select:checked').length; + $('#start-import-btn').text(t('preview.import_selected').replace('{count}', selectedCount)); + } + + function updateSelectAllCheckbox() { + var $readyBoxes = $('#preview-table input.row-select[data-ready="1"]'); + var totalReady = $readyBoxes.length; + var checkedReady = $readyBoxes.filter(':checked').length; + $('#preview-select-all').prop('checked', totalReady > 0 && totalReady === checkedReady); + } + + // Select / deselect all ready rows + $('#preview-select-all').on('change', function() { + var checked = $(this).prop('checked'); + $('#preview-table input.row-select[data-ready="1"]').prop('checked', checked); + updateImportButton(); + }); + + // Re-count when a checkbox changes + $(document).on('change', '#preview-table input.row-select', function() { + updateSelectAllCheckbox(); + updateImportButton(); + }); + + // Initialize select-all state + updateSelectAllCheckbox(); + + // ===== Start Import ===== + $('#start-import-btn').on('click', function() { + if (importing) return; + + // Collect only checked & ready rows + importQueue = []; + $('#preview-table tbody tr').each(function() { + var $cb = $(this).find('input.row-select'); + if ($cb.length && $cb.prop('checked') && $cb.data('ready') == 1) { + var idx = parseInt($(this).data('index'), 10); + if (!isNaN(idx) && hostData[idx]) { + importQueue.push({ rowNum: idx + 1, host: hostData[idx] }); + } + } + }); + + if (importQueue.length === 0) { + alert(t('preview.no_selected')); + return; + } + + importing = true; + $('#start-import-btn').prop('disabled', true).text(t('import.importing')); + $('#import-progress-section').show(); + $('#import-results-section').hide(); + + // Reset counters + successCount = 0; + failedCount = 0; + processedCount = 0; + results = []; + $('#results-tbody').empty(); + $('#progress-bar').css('width', '0%'); + $('#progress-text').text('0 / ' + importQueue.length); + $('#total-count').text(importQueue.length); + + // Start processing hosts sequentially + processNextHost(0); + }); + + function processNextHost(queueIndex) { + if (queueIndex >= importQueue.length) { + // All done + finishImport(); + return; + } + + var item = importQueue[queueIndex]; + var rowNum = item.rowNum; + var host = item.host; + + $.ajax({ + url: ajaxUrl, + method: 'POST', + data: { + source_hostid: sourceHostid, + host_data: host + }, + dataType: 'json', + success: function(resp) { + processedCount++; + + if (resp.success) { + successCount++; + addResultRow(rowNum, 'success', host.host, host.ip, resp.hostid || '', ''); + results.push({ + row: rowNum, + result: 'success', + host: host.host, + ip: host.ip, + hostid: resp.hostid || '', + error: '' + }); + } else { + failedCount++; + var errorMsg = resp.error || t('import.unknown_error'); + addResultRow(rowNum, 'failed', host.host, host.ip, '', errorMsg); + results.push({ + row: rowNum, + result: 'failed', + host: host.host, + ip: host.ip, + hostid: '', + error: errorMsg + }); + } + + updateProgress(); + }, + error: function(xhr, status, error) { + processedCount++; + failedCount++; + var errorMsg = t('import.ajax_error') + (error || status || t('import.unknown_error')); + addResultRow(rowNum, 'failed', host.host, host.ip, '', errorMsg); + results.push({ + row: rowNum, + result: 'failed', + host: host.host, + ip: host.ip, + hostid: '', + error: errorMsg + }); + updateProgress(); + }, + complete: function() { + // Process next host (small delay to allow UI update) + setTimeout(function() { + processNextHost(queueIndex + 1); + }, 50); + } + }); + } + + function updateProgress() { + var percent = Math.round((processedCount / importQueue.length) * 100); + $('#progress-bar').css('width', percent + '%'); + $('#progress-text').text(processedCount + ' / ' + importQueue.length); + $('#success-count').text(successCount); + $('#failed-count').text(failedCount); + } + + function addResultRow(rowNum, result, hostName, ip, hostid, error) { + var resultClass = result === 'success' ? 'result-success' : 'result-failed'; + var resultIcon = result === 'success' + ? '✓ ' + t('import.result_success') + : '✗ ' + t('import.result_failed'); + + var html = '' + + '' + rowNum + '' + + '' + resultIcon + '' + + '' + escapeHtml(hostName) + '' + + '' + escapeHtml(ip) + '' + + '' + (hostid ? escapeHtml(hostid) : '-') + '' + + '' + (error ? '' + escapeHtml(error) + '' : '-') + '' + + ''; + + $('#results-tbody').append(html); + } + + function finishImport() { + importing = false; + $('#start-import-btn').text(t('import.complete')); + $('#import-results-section').show(); + + // Show/hide download report button + if (results.length > 0) { + $('#download-report-btn').show(); + } + + // Scroll to results + $('html, body').animate({ + scrollTop: $('#import-results-section').offset().top - 50 + }, 500); + } + + // ===== Download Report ===== + $('#download-report-btn').on('click', function() { + var csv = t('report.col_row') + ',' + t('report.col_result') + ',' + t('report.col_host') + ',' + t('report.col_ip') + ',' + t('report.col_hostid') + ',' + t('report.col_error') + '\n'; + $.each(results, function(i, r) { + csv += r.row + ',' + + r.result + ',' + + '"' + r.host.replace(/"/g, '""') + '",' + + '"' + r.ip.replace(/"/g, '""') + '",' + + (r.hostid || '') + ',' + + '"' + (r.error || '').replace(/"/g, '""') + '"\n'; + }); + + var blob = new Blob(['\ufeff' + csv], {type: 'text/csv;charset=utf-8;'}); + var link = document.createElement('a'); + link.href = URL.createObjectURL(blob); + link.download = 'host_import_report_' + Date.now() + '.csv'; + link.click(); + }); + + // ===== Utility ===== + function escapeHtml(str) { + if (str === null || str === undefined) return ''; + return String(str) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); + } + }); + +})(jQuery); diff --git a/zabbix_clonehosts/clonehosts_template.csv b/zabbix_clonehosts/clonehosts_template.csv new file mode 100644 index 0000000..0304043 --- /dev/null +++ b/zabbix_clonehosts/clonehosts_template.csv @@ -0,0 +1,3 @@ +主机名称(*),可见的名称,接口IP(*),端口,主机群组,模板,标签,宏,描述 +web-server-01,Web Server 01,192.168.1.10,10050,Servers;Web Servers,Linux by Zabbix Agent;Nginx by HTTP,env=prod;os=linux,{$SNMP_COMMUNITY}=public,Web server 01 +db-server-01,DB Server 01,192.168.1.20,10050,Servers;Database Servers,MySQL by Zabbix Agent,env=prod;os=linux;role=db,{$MYSQL_PORT}=3306,Database server 01 diff --git a/zabbix_clonehosts/images/image-1.png b/zabbix_clonehosts/images/image-1.png new file mode 100644 index 0000000000000000000000000000000000000000..9d199e0c70a624f68249186fb6d9163a1081c573 GIT binary patch literal 135031 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

b@2r~(Mn+rS{m`M?D-ufxo{Ni< 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 literal 0 HcmV?d00001 diff --git a/zabbix_clonehosts/images/image-2.png b/zabbix_clonehosts/images/image-2.png new file mode 100644 index 0000000000000000000000000000000000000000..632b43152e5efef749d59a41866ade35aae3fab0 GIT binary patch literal 104879 zcmbSzby!v3*6u<;L`pzFKtfWwyOmDq+#ucE4I&^d-QC@t3ew%R>8?#9eYfZQ)N{T+ zzI&fLpS9uHYpprgtTD#>jxp8_`XDQY@*M9u001Zw;=&35fZzfEuu;#RK+oVlkMoB9 zL$ncBw+8@%z+WGjh|Lp2=t*=35j6)zYa<6|T{}ZS(aO|D*WSSpgfk3=Uc~uzQQ6+m zj`+Q`rKO>j1E8pHXJ}|;Z({9m<%l8%0K|ZVu#l2V$^qC_D`xXX;5gz_xD>LL-*ePY z$eAP#a3^pZrXM1t6MV3vjPin{vM@I6zOwd*u0QR8ukL!w!uMGRQ~F6nf6S+QGDaaK zy%z?;W8eJW#0!ls6R{w7lIWQZywbM-m1bu$+q^i*1S^Wo5@JD|4~;!oN#IB9HUYVymL%WZe*$X9^@O z11$?Rrm!8a1Pu*0{l`O=i3Zi0*S(z+bvy#Vg>ClL3KLUGvyJ+Jb(RZtPMp6R5`hf4)|$^S%f4hBkOqp1inyH*M(5>Up#M|GqBGwIqKb-I4h#$|7;SDn z8uvVE@DRGuF18}63=;oob8CODdb{@Yv@S4Wvyz_WcXf31doJgrI#c)auEc3nzb}7E zn$nc>QO%Hmb75`gpH@h+C}VA#FDudf%x^I#VgZlRs6*)<01u1^sEeKqSG0;`b;>van56c9Hoe zGRr^#4eZ7nwK@?oM112Ws>^e4=5dTUMA`WSA;XqoTi^ZrtE6VUxIC7>0al>5g|vzw zK8NGBW@n2@mb+qbH zye5a?yHNrs_vF8KY5ojse#nudtU5%SOONhM0s=JH@5fb|;$ZfC!6qD%Lm|+&2ajgv3F_RUzUssLNP9B6cH6R=7lI zci5x_i8R(QJ_x``m?U_1oi>&7SBjYPIh0StH%Pat&T>2H1}fx*Bok&Mv6=7AZmJ(A znyXSul{6M9fIgTN)#xiB`mST=7U-rF_d2q}kM=DY$F(PmUp;*rtzxa6-(rwnIX&?a zeTaMtekxa#WzDsDU12T8=Inlvl5f$_%xd;h`N@x5RSHr*E3qVoE}sT-+iA#eM|rip?x`>kl$q*-{uiy?gDnewXTbD8>hvGdnF z4{KM;rVFL-vFn+b+dMbzPMTt6q#y0M(SEwOpXzgM@8=AJk-vYs*jqL;+wpZ~3wbZU zow`r^!V??lP+=beXOd=6J#KotqhYbN_L7nut0lG$SWU-#k$REzM39K%QCAQ6V34Pp zIHwsR0}reiEcI&j#T*9esPX9@1e_m_NtITqiYGgoso5*%HUYZUkpSKlJX;wana-iH zMX(qAoX+4pdD>A@+w~_%9@X&o2cv$HM^v`=F@bC2_=L(tt?ZJdqlOea;R^7OZFgz4qe6$^?}`X6~5wayWNhO#GLU#vwf;rh&FAfBlX zPoyfzJ{nbHtZ}{JzX5S?P%zx1mcu;(ln^+|wHRy@j}-CqTu#H0m*>5?I~s{_WHpoA z;Mb@YoF|PEVFWqtHZ|HO3w7X237t*a^sASj{nn3e^L#aE9h%ZdmlbkB=|if23R%uMu2gFTC}j$YMTo{+uQY22Mb4aa@+L25i$4m(%dt3ik( zx^mQX>oSxI&zG3*S;y!u4GAw`;J@(0GuI)h*3{oPwYs%`L<}|L1FM<{CdUu@vaNR* zZYGb?Oc`_!U*Rth$$heuar`Ml__h~deMaU<&H29K87N;d+F7$O#q@L2APu>3HHvUv z&uHZbOv7i*L&)-kGRi4&Gd8q`X;oI+p(`k1W`P8 z4o1-RG63;RWjlD0V#L1sD&asttzeePR;xgA{Z*abr)R*hB>^R<%-uOI%$~Q#DZW_2 zQAoMjUn5rm_Cu}?)6`UF!;5;|Z|FUb?`r9r z;8|6b_RKQsvc7QdpJgPX7gB%WGm^b>WS#;FnD6-B96w8hyli)P@9=$b#4`yb`1y~} z+o4g8EnbjEcs)KxuyI{p`h>N5g=fTXisw_c!Kb=$TfUusWU;V(Fl8I>HG7e<0H&ok zo1M**Np42b^i4KKO0G5?VjxFStqJxj0jS* zyUR|+8;U3FCIFLE%46!Zdm!!R4y;&7*k{67R<)LTo^xwwyS6-LZ3Nrn>rR4tY&~s- zF0vlzoHQ^%6+7jVSza1aHtDu@T>=BXSPfnQx9D#d5mMhVmFOopWNg`AkxyzNBvGFu z14*y~6tIMf_vTV0NPN>)$+S8&(FvmQ|V~z#wX47*6FAycC)9;OV-j>%kK>)uekvDbb3=Gi=mtm=0_Vz64jHKundb3zf8tXDc6+D$D@)5$)?Yf(+A_jL!J<27 zUg{9WSfZC6jK1Y2T1H2$Q9REyM$SsGt`|bW2jm1SQc|ZUsFf%nS4H^6dus{4&X5Gv zb6>w33K!c)=0BM#QAhD6WMLoaXXMRcFy+=PjZKbyKHJPS#dopK={>=1Yu2ANnD+{`i(hYEe`QaD3N6`;21b0#i@(9;Ea{^D*+wPyrBJ z!jW<=^gS0T3kS%MREIx=ro<*c{`fqF$Tqhz1cS)|%LYkH>_JHGGSiY&uVO_{ib14D zdI{K&yGG`JUmhV$0<(x&C@Uj+79n4~;FbA67*w~+fe#!trixzYy}3lm?qt{Vk?)H>r;?=4)QYfp zJ+9m@sFt(ZTiNsG(4NJz7{lQZ4QN%5x+^+CrW7eGM$hA(6_1?TpQ$hd9`bN8 zHs1kjs{FI({ZoS%XYAWgUa=b=;`_m^2?2nwL4x!XneSKB9i9414v&?EI&fCQ7}p-J zk02D{O9bh~3W#75r&0p-{FR`Fa=2bP287?-AyP#ObEq!;A>ZEH9dJD}R!!mbD%TZF zO=od;eC;D8Kw+k7g`L{y!I*n%Bgew9T#ZkPFN=PD0OmOM?2O~7x5Bp8$iLGAWoxPp zqn6Fs+0J--L#JL8VR>M8lsIx^ALx%DY;4$XM`OL>FTv|$HpeI0p=Gh5AeD%ZpV>|l zQ}JAGNy3jv88v(;TWrMh1w{I_Joj7WSZ8>2w7j$s1rsYg+9>xy-I+Lm02E!;5DMFT~&1T zpgf$Qr^Q9gr~^=l9`bpe-IH9MPuBg`iP@V{5xBlxuTnC~TAI%#k0y=J4QQ#sz0}3u z77xvY0~Bv{t5A9B_Sy&n>j*t=k2S>nx@?tizTNv2Zzvdy-tdM!_n~&Zr`#>HzHWvo z%vSA|EjZ&9{H@lq0yJVwj(B*4H#T8c2KytF9;M9ma!hI%e1b9CV;^sz#3MFl)UzS~ zT5|$VhSi*2`z^Q;blYUQkc;o=MBt z%BfSSS9y;RDWxUed72&i!Gy_(kVHQFDq>*p8R;{Mk?C`0H0{#mJTu0FHdbZF$4F40 z2A}2PQ_CvO+x?-yn2vyRf&dmJ#MNqy?jP79ZYEW#5%|sDR^)@`{U-HniE>Yy3{I=A zFF7#sj=pq?d+S(Iv`MC7ap~^SvxUa$gw|>-@z6?Ze$z;;U}OakO;O!{neV|zgsEN( zx443UFm)BQo)Aa2t(C|ZyU|QI=g`1o81H5X!QTHM<;Xb#r?x1lv}4;}__d?|CcEcK zw`WirqJK}f-GY{J-fT&(<7u1zZG8#&0Qu%tl=ImONx;H-y1Ln6!|?jSP4VB1K|-*8 zfBeGV8k1XNL2cww@P48EVozfdf3bVkMR0N(EY@q$sj4NAsu}5d(B?dOxQPxW(C`_2 zX7_iL=4E$~o+A7i2v4PY@TGU7^#)INK>KsQ_d`wH*s<*e3U^6oHt#&%vLcREe^TI8 z5q^f{BL)$gr|#%|(3{>?|D~pECQVqQglgA+L^~V&oF=1>t;FoMR1!CW%rn()jaEcf zTyolXpJssY@+G3D7V4;*WKctF(s<|j=g@6xt=GO(nrs+sOZ6qb+E~rvZQ!WaE*E@@ z!NxAdt2>u>a-kxlb6Cq;>k4@SR0==IN#{gNY&!_x)}0>B*r3k*P@qx_vs;C{d(6Q9 z6Yq>aeT-<7pgeBy+N)=Q{T=Yh*UIX0=+^|Q_uFOgzVUD^vNaQCuLkrl#J|J8Jrni8MHP{W#t;D+)Ky$c-|yJ%(9lvG&)JlYq(Z2m4S2>6@ddPV3o4b5*~QdDX@TniXDj=Jd&hg^{ne%ySB}qD zs96;AU`gC*gpOu}klGa_wYq?=)`9hRpRftr3|u~`jmjuVxiimAX5?yG@)^Xw%fyy_ z$e=)=OJwZHetSktjK|x{s9thMZ6crbPSHNGR=+PwE{^uvpf74?qdS}|-}+hDfU@ac ztu}X)`#y)}zE>_aUZR&=RJ;L60mdc1G)Dhj54X(2-f@5AJP%HAC_}EXfhFqQ#%Dn? zjG)g?0LDX&v;JAvht<}zLm0swF7KJEhc&H^sXogM1fpgV4!y-m7dFwd6o^K(mvOow z!lm&x)~4aXavQxxlTrytZtLo#XW9F}01jZR^1j`_NBCZ=Zd9PiukM9>?6I)EF|O`g zZ3J&M{3JtC4Uf}YWo7(4lZ65)Qw_JKvEz97r2s_{ag-}-z99RbRm6Xg&T3TDG4HFI z0<3hXcmmNk~z@;JDBVd7J2T(%f~Vt{GEf~owXWi3y=)u6q5 z@`sEwaa}}t`O74b)Xeg_x`zzr_0aN5E}eKrctB=PHTl=Qx;n-w6dd&2$~qBql+2{- z;-cM=p`kyo!(QU6P)#_~CShm_1eQ?s^1c;NyW0O;wR%p$d2@5+dwN#7TdSM{Pgv~a zNsBeTHEfv&QQL-b{Qf=RMy#}U-M^N~HBvYgFaMM99>u3o^}QU+i?7^MWh%MoN+8Jy zoz}M>YeG_EV`q#GL5NzEa&<6pQ2V9l%OuQ>k$D-7j8i9@n3&<~sa6niKX@ z2j5Y#pye>#YMs?PHUeneSEZQT+KI3Ld!Vi%wmB|4{5D%|d3-jz$k~^N=?w9u;z6Y+FBaE{a_!Cnla(v3uyUV{?zI0_3_fMh)%!xG1pk2F^r3;iBkx4IL?p|OZ)C8A4vwq>=kmeaS5B?uomoM%*{f3#ATBZFH+RwS+V z&~rtjwHa3F&b6@d_l&rQ#GLDu8;fx)rk>pkr1eq4Vf-UW@}&r}tWt5J2~DW5$F~TO z;)r{<<&&(jw(dL-5Yz3wu;YWoQxiZ6>}**4Wty^EVWUt#a=R{8cg z-d5J~VSKU*)O>NP%IPD8$fMlnetzgLpZ;LklO}s_LAQ)TuhpEjdq^lAtM^!c_^?!7 z<)wc{xbH0cFfqsRxZBvVNqC=hs`C)|t90qCnqW*o3)Vf0R(Tc<)lv8#F8Q z;Tzk38A>=n$Z_k`wa`b6eaY*(YH^alwh5i&v5&L{U+b4^(eBW6zbm&I10P8wwt|%r z<`;j1cu#_eQ8amudJ6F=;kXF2d8$@15o)`v6y6G?v(dbRx-dAlMbY+`KXfX+O~KgG zX>u^|?KPdR8hLM+g|D8BGpLmoRrVqQ5$4O{max^MOHOsp)}Vu1ocLsO<&>GY(b0Ua z=M+lfYBhTS&|&&%FoU~x)H2U|$lP)7J0kutqNm<>-aS6TuYbH8mXoHOpIVyo9FDHF6AE7ZF$BUoawU6;}ERG)8q&yeVoR7ztJ_l6g=JAeq zX8F4xREK^bRmZo_WXXp+SGh!{!Y*;rtVmnc~(|xapuws+A6GV&}`aGvW4udfJ=Z z?l3$233R~b8(}QL3#$F|j{CY>o8}4a*#9C;_ildHR3XEj7ykSM76q#-Jh8FlI^Oax zvBqpF(&iFo+``h~RtDQU_YD(aQb6@pJ#WkZB^#cQy)lQy#)&S49DQWqhL#2J4NE?F z!_Qe(-DO!rKc-GOfZU-*{1R8CroefwBrR}IZH=OInZhon@AW?WMcq|H&zQcSvm7z- zk+uYj?%io!TnO~Dj1NTQ&1g#67oJ~kGGCkwE~xIs`;S`ba<-lBZ7#$QSf$cD ztQ*K;o*)h0I=sA^s#`3s>PhqtL?TE9&ONVMtH&Z`7XN@Q^s(yQZ<5Aev89avgzC^u zQ|YKI7v`D%o*9b{3o`m`aY#taB8{d@yfkP;{@x)!aPnWFvuBt?zlSF*JV_$WiuoHM zp#RU9+jvPJ3)am}El8Xt4N9Y=B$Fb5RT#pFiV>(Y}YN>J2KIz5aiUh^_R5vEyvceYpO6 z-JeGZpTA|L8MD|uU>7#XX>Tc|UW|4{g$)SZUyxt0J3Pqr%XetiyV89x4J;1IJ+O%_ zO!nD^4%Vc4Wi_t9>bVr@%l(c%{poBzsIJqHM8?T&{+j=Yw8XuRWfr~wyyJ9Tj!+dc z*5movkwdB8+}Po8c!+)~ww0RW1KrUzQP~Y$ z8$1W~1v-%v&BtoFp-idLr}#ClC$t?h7(vf??5HX`;+!P~;~q*kgQ*u|J>IrwWtTRW z)|G}7c*>tJD6sm72#KaKme$(eG75FgM9R^KZzQ z(AS6}>9!%F;>f8q&xF|r=DmfC*&YGfD`r`p7ug_pFpS>B<)PU;xAPus3hd1@9-w}& z#C+Fc?oi|UqV4@_+1+4`jU0l07+_(Qnd9ozf!rr}9AtX!_=&0EZQF4VQg|L}o{6fw zwjy@+jb7bRO>MYq{T7&_ws$USd>YmF&t`fE{bdB0Th)V%KvU~CQ*<>q4av@M=Tj`) z!B2twmC;gCYDs&*IRg}L700P+u~e$ryhnpG48vxsW8Z_*bZ2`f=yc-qW_{7pe*BbR zF;E>mo?lHfwJjeipl$QAF?l;bHPG*taRGI+ov=Z{`0-4&47sB25b9v`h6gr^somx@ z7S=rY2MKyOle7igcZfrb?vyotuKyK!@76e?H8 zP*&t1r7Zox`CSA5&{BEzo8k?@-}T&CHJ`XjXVK(&>ZWz~5`QU*w9i;d()F);+6kKY zKDY#({5muyyuZ4~?J3j$l7sMnQ>1c9d()_Y9KT=o^s*8kNRmq4j#SEvQ6G)bp`C@& z!2nwPjgXJQM>KL%A2Udt)>b0MS;MSsYd1DlAtcMmJB`%u{rbDEv?J&}Oiunt?pP}{ zIl>#=SJB49#BgU8J_sk7(8cX62{s*Uhfpeq^Y7$uUnQy8~Ws%vXqn;eCHAw)Z6#7EfX)(M$7;u^P3 zuF_u6+fEX2-i_`0$%QaLBvJ8?7M8{wzZ-oOxnUwZdsEP48r0rRO<)IHmkv~cPBrWRsj z*C7#&ica28JL|b%Y?zZoy0GAX%g@eShcFAD0vOaYQdeGBnDQgDWH2u>5=|r8XVQDm129ICKY9>2*-T4TDF6by2O= z;4V1RmTNPAIQ=C((oi)f!O*c*MQ^pD;Rd4l$OHK@vKvjyc6K|6#Emwl>*o*;Zd3xv zly)9G&!E&~+w1DG6-Ce`mtm!S7a>qZ$2H&x8;N)DB36y3gsgjnhl6p9e;)dmMY0G) zJ?{m%1f=}H8@lZF(J-C4l6rS7q_VI+S2u%isff|4gXm*Yh854fw?Q82S(>H4>MzkS z85W5glHB`ko+(9&%^(tQV6YSQ-vbpGR&Rj(ZH%`y6(@+8ALz} zu!3?tBl6fuYmyFCP6TWoAG3Eq`bxR14S$iJ_Je)cOkx$f8LRtJ-&4Y*-ULx}&h!es z`0};GS<4@bJ=-WSv=Y0GS2F;^QXa+8Frs6(6W;sBA%^_EVmJL4L7Px|u3{-}oDBo) z1C+Rfpm3_EKuUOUy$o${-y$=GtA>m}iiklJ)En_B#c|1f3s-5d;@KCSz(!p=L0o)K zW&`C^T9)xo+t>j|L(nQQfiFe7;()IVm*Ev4)vwX&720u}&U!=P#|z2oFNk&^hVcz@ z&HD03rabNF*l(A%3N^`?Udk(Y@*YQR8!!+2lT#!IN0GFPURxp)`7G|0oB0$XROniRZB4+O{e4Y>)C_!3U-zA5!Uq<(2&D^dwZW`9Sr|(_9 z2Jm(GdE9|Sl=(t8+*7qDHfV@r+n;I|v#0fwmb-k&$`jo4J%1?H=S$ZD;~1A6nwqum zxp`{5wU2Nu+iSZpfUfE3(WAF=k_V7YQ^ZYQG7)bEIVk`e#+P{mXKznzK_dizF7O{Y zud6GO~00)q+yY40?zOzL6zscy`Q0Ad|p`Akpc216Nth~C1^5GX*5u2@>@)jA&- zbzZnSG9=K_!R_S0*OC8NR#-04EjO{&q0rdV-w<@Rs|fG&sv}V`I4Lvuj-=y>ppe)7 zh~Qg&oGy2Gv=n@bk-{^YX8D@0h+|7U#IQVU ztuh38?+48(`<-y-c2Mc?w3b;{wfvY^4D63yg}N;cIz+yi_!OV>t#{rrG^8u1ka++v z)={vaIp{Krmg*ZPaYlPv_5DgFc2QJ+AOR0LpJ+@a5{bnOoBWs>E`F+-du$3Z0&v}C z5PA}2w&1|VifpE1f@O^)ej1#}O=ZS+4xf4fN<-B>O`-`Z#acOHpF;v}3;+!dj$M2NWr#@uAHl@0C z+tKV|KqlJRpr6vgvA$(htRtEH=x>JdF+pcI=-Na*_*?BMXUzos`#`DMbU}pC3Fm=e zZr?AIWzXT!`F@O(ke>Otvb!VC-yjUEQ~H0Nm4I%JCsAJ=Gw-)|sVT0|>Xx@HSX6mL z;}zpRBa7SEq&*eidmSQ+M3}l!@7(;#$Kg88b2zOssCL(4K!WKFW-jV5+k!gq)hp@M z-nQj>28e}8a(>05YH|R-kFu4wi!CIlM8Gh+v>j$HE=6K3X%F|ewF_qVeB`R;S}&sx zUwTW^qzSq&fXxal4vUn}CsYBEzfWfQ`ESzxaIOtS7yEJotvsys`9V~E_wk`KX*_X( zuGq5S3Syq?E%a--mw=C?Ygd2Uz5~9Mb0hMka%jKWyp%tVx5{W{3$)_a z1~)qwv0=q8I3CTXXq|P+{Uv&1`sJHJTTrIhCa=;(dxlvgqe<#3afNRvQcCdb4-V(6 zO^P*X(*zCCo<$c!@0jNOn_wyyhz9Gy?C9X+aq%NQ4Kh;;YqNg}X@7M48R&^)Rp+Gi zhpC-Q>t$W{oux>vAh&Px#HI73*>5yFec|B!V4ZE;j64v$eCjDGZ!RYGr^d)@illVb z`{l&d897Jdo8*|~3ro|W?_OSz)=h!K%L_Sg&OX1t9QHikOeM_7%>w!L?(GxidVFYt z6R^i}Qrz~~IhF-66HL6a63}o>G-|w6jr2V^suk^&`AW1IAB+9|;Jz&5 z*O)_cG28CJ{R}kL%h^{JWB$otcY()v(LbFO?)q<1P4x7q@b!IGe|2*MK^ePSL1Vcx zBs^a3VM%R9XY+LGbb2xE531LI{nh+gdm3#zmtBgzlU6755CH+-p@?BmM7p(q!+Dc4 zo8{2qAN;!W?cR3X2ubzhZYbqI-+d6}D(?y1h+Axe|NR|ysON*zbi_%~G-BwV2c&^` z$L?~tuCH-Ud|B?EbOxmGq$#>6!#-;gc&zumPiuBn29NDdA-1R8ouApTu8d^PTMQ-|C5dvh<-L*hT<+)@9AIdtAt^q>g(+foJFzOX$$ zX*P8CFVwKPO^%Ib+g!;y;%BSeESXX(Va3XvBS|+Q!2{G-VyHMutUK(LaZMUX=kbmB zxjL6}>MUA71~;9{#%f<-$WxBG5)!8@9f=hNq9!Cf2h*~+mm7KHki}Fz^pu7b|ClQZ zYCor^8Uj0Ee>y8)3Kd44i;8h2E$jpb|9+Q@Q%$qVTg`d5nuW6QEQyKs`*rzt}S;22y!*U`Eo*>#;!| z|HCj|85q@`of6Ktohwo5l0MN&rrc>9eonflA-1#N=lG(4Y zQA5!Si&5QGteaIbCMaBB;&@Ensq(SZiNJyB*o5TyXJTgbJ-gD(Osu}F{vH--7yktv z>>EsquK4JWb|q6v6=v(^Y@#K5U3f<6Kk)ACKv;~07l-!rKnd6N`+T)`ABW%4bL$2M zbUs%o(%(u&mXMA#W0?3vutjdBgO_3}tA6mh62ZqpYS<1enDdlJn0y*_BF#j$CSp3> zTo%dcOWkraU&r{z`uXU|oBtvUg_p>VnHvsiS&uxBwE+yU*{}6H(GH?gq%*_WB`V=F zgBtSJk=FT~sg#I?&cjK6Fk>LhIH^-M<4OI|I;?RZ+%PJl1J$yQ%f1&2_abD3s0c$E z$xfcCMkLj`a0)!+20V#B?n*_^E7EyN44+V@L^`ZG3YJgRyWFl zAE84AC#!#rrb43%{Xz#rtaCu1+gwIWS^cq<*7m3?iD0#!qnen1ba{Z@Hr=TwYjMKK ziEzu6^WIv0h9#0@F2tb=*zL^4>7S=Vy{uY3@bGylvHJ zAvTax{fXQ?YGb~R$rmOLSbYEPyzwL5Rl!BV76%h?AI;X1sm{sdA#`c*mHQu=rON=cKOkhCeAp`l^U-A%H)7+Ny_8-?V zUwD!xx8DwfE%$!Ihv){8hi+EWR>B1z7jRD>B{kq+7x7HsZq2ocFATqba(Gbt2odPW`(_YSI>m<*H;fu~IgGNnM0~bSSX)18Uto zQF!co3M24biSS(eEf+)ia;DLZoc5CP6M4N1<85zy%O9_w8XkOdDgS5*6L#~9Fc@HO z81%PBnH6cznueH~wBt>-*<9g9<9HLxL|SiiWaXI;a^L^_G@mr~kL{B~{zYk7td_TP zMeIDE&@7X>(4wyuL!L$f%Izya zGr}VJh88v7mYbq5Hvr=0_)sQo1OGq|!A@7zu4AMM{yNax{z6L2EY$qMk0^$NP$QNgIwxeZ< zugKvy9Q|V5TuHBU;sYCuB4aM{Eov?}h!>(*B(xOy{&|&ZM`A1wB4AwSgnZuclZw5i zT%=rp@7_XU*E7G^c?7?O4CM)CpZNghdoa9Dp3OkAH4(NP%CmFlc!wuItcU)FT)ZP@ z6B=6LI{mvP=k$12s8PeE&0XXlfb5^;c^a;o8#O2GBtuP&-r#i0rU4`K{=%yApi!L0>Ndm`1p zpKthTkW4i z;_a8W?c`{$$;1=tE(P`;_^lJK+8x}4C>ZzeNu#P+wjqO04Oom2c$eh`@>@+gkdPM| z=WCr3k$SXs>?^ju8{f{*PtQjZ%&%S+km^K?I~CYPx2WblvT^+7Kj-JJP?Cgg-Q4KF ziC=vr++Le~c;iSD^sv>8zUsR!rfG0=!N@XJz+eaq(CfVIGgnPEVUKjcT2;_q9h&zq zQ+ic0U*;JY+&OlO>VUr?uyMIM*%Gw?Fs{{dXmRs~TmQ%Ve9>z{QpQS4MQ&yJ%D3E> zDj@0NB5QDay{p^3e&4`W(Xv9_N`Ge5b0jHMV4+O_G~1Yr@D#0f$K~N*WZoCoT{gwc z3|x%M!@O6gROrng7abjG+iKmh;oV}hs&+ckGwGZ}gnQ3r`VFdfZfImgcV@AAiZq!B z|I(sf!gEIJ%Lmf6`c?{hM(GdBg?D_1-uXw%3$MWxL$8j;as4@v05Tk{>(Mp{>qn_! zZ^~hq*GqWIn+l@+umQYuJG}zJz&%$hKnCw`swDZWGpt=cX?|O zCCqaqnz)OfJ|)!*eCU=%Za9fYkP((+z3zUdnRt~(cAbAT-fq=R^ z&)V9^CzoBmnb@f75*U!6;)*sC4V)VkF#+p1LnmY6)Nhk3y6coNc}y3Y^tP7g4&y1R zHtphZ;V$)WtWKL?_D1J`_Lpz3kY_`8TzsF7Ya#c?0mM|ky2ZxlSD`vftc_vLebO$SsSmxf z)>}ZSTeim5rp`9uRf|j3&>Aba7iy1De;sK}k$-U4B*-LF50Y$B^>69m@FJQkyjUJcK z1JL?4a4uB#RFlZ!7@v)9R##8@q}46NPHy2ktO6h=An!~gWLT1@ZUN`EErU`>8h9T5syXuC1Gw5B9Hm&w@LGa!K;jM$eunGZ)`j_eU& zYH!Dz>>1A!m$M(WC80vXXsR0D2@^;1zg{ARy9g+AIYzw_JgM^$|9murTp|67lQQ|N zGOeyzre(MKl{#LKV4NZJ+Q)@#LL)!f`bL%!^Y|VLIu2_S(x&%^v`^MpV1es3Q9r7F zzA#_kr|oMS_@pmr%iAS`NQhv?Oas;DuEaca5p%GI_Th5|knDWcEKh1>j^w$Ht`6wv zc@fQtEU8NbXH#w^ zZCX615y)3*`2z-K>H$GRix6lX$^>O-CmbMtJWzbzUML)iHp@O=7{{Tyqt;Ah!OK(g)D`W!;hRvn;upT@cgo~2`(Vw4=WN=ispx^rTrI8kt~wAEev zme3`2*bJ7I;(c|tFhsa!#rNRhG8q${-p)U|zW&m|*|YT?TMmLFCW*i>^x+3W>kgOM z%CZ)MyPI5yzNH0;o5{v)RHboRm|u06pL3Tf2=U9OyB1Ld8j{vpW#+uYv9wiqAKz)T zZ5C{()%d0B0?0!{6xZbjJaSNaH0G|X^>XvviL}~bQ2Mde#rKR8Gx?+@{*qn zFl{Z-T;4@R{Tvv6p}Jqcrih`=;rE3wY0VPd9cs~xpmgciaeyMaA}Kht2qYRfdn}g z-c8db4q@A&WJN8)-BP@OTP%zgsj1qbegNR*XWw9rVll%zLcJy|9mnr6pNgDZH#C%a zLfJm_X97~|L5EWz>-#Ywe$lO*;r3P%wfp@M5>mKfP86JPn_eS9e;xzyS+YzqA><;z z+l&_oKd#}5tlyd0fA^r`wktG+;0+?Y-FSCU#?abSTlSB!AI43&{$KnrUZ(H*4gDB2Yg+y8bn}wPoCTd_VOO!` z^{rFweT={Bf}`TxH*d|u5O;~xDD1~%vf@pog~L$ug7VV+pNcc1i?;88hJZZ+u1)&3 zqUp)})=s#-q0wM4txkT)=NxKusxJ{U5G$1ek5m>+g<=um=aW{ca@YG@@8cR3x0hquv02>AGx(XOdR2_&)Y4gvkRztKg~$>^IJ7&F9PibtUrXxy_61R zIrwp;NBe6|05>o{@-a43dbJ_gA+S5R=JQLLZ|dlgB`+U4Bf0~IQySlT40uA|J#7?( zh4TjOt1KQye&oS6>&#VFcYL79RyqqDXPwzy^$ovpm+Md2ESIgvLU&!;RTbHYnhoIR zlMxnv@;*H-4k-eBs}ZoiRbhjwh0Zg!o*iqQN7$AxblN`4!DZ9W*x9-Fedy$|ZjW*8 zE|OawyvGQ$m>AkmkMA;c5k2~OviE!?r}y>d>nqNaAm&LE?B=g@eLah@R(R;>?I>7p zo=2A14PByQ3S;h3^pRI$91?QSPkfMBOM1>+CER5bkR~pbxb9?pgX>lV#?Y#+|2&6} zu>Lx>Rb(zTAJlCF&JV6QM+scKBUl&Fnw)olk_f{Rc4qP2Eqam%$jkkGb@M73W&6c- z;n1apDYbu1oUrglyQsj4g7b}BQnP`c;!&M!&%L@wE7NVS9Pc6F4{>vFVKs>Nm1!xb zqsmn@c+^uTw*WK>M;VgkTTIR53z|6%PrfTGyGK2e|Y6p%NPv!Z}x$&yuu zEIDT-=bWR8!jM67mYhLy2FXayVHg;48giH+&o(^#SMAn*wfk*t7gaRfP50?@?>+aN z-}#-}sXOP9zx8jV*x}PLMAq>()CU-ou)7T$>Q;#aOIu&$oSL?vjkiiJf9KTnAA6^h zV4Nj!ciNd1FF;Fz(g|<=_16*Dp<3ERdnz@#rrBTa4o1y*R4D;XsTajxH|H;5R-VL9 zZ+0;-=4IaiH~Dw_@Z?GV?Jh=Sxaou2{kX4Sj@#W|FJ2_vx!tFIHjI6{`|4qU@$K#> z$-Xl_j3dV5wE>jV-?s;?xt{c|%W${(A^&rzZq1*HHR1KWtUtHL_^<9K!FliYHt*m4 zw?sAeqQKZ8l=0xYD(OuK8%v4N5uE7EWoSEmhfjU%e~3~e(Yr{}nmPDVZGBAf{!pzb7!6 zG}c<6cs@M=H6bD{>l;Zrof{w-bk%@J=(Hq+p{gHiXB2H86Wpn3G&LZfh0R=oiL}d2 z-k3Z2SDCt~1QvTGve5t1DQcu|xqGdip~0USBs?mO$dUlJ9Ow?+OGgqPw?=vN;B0q% z1gqP0jCB}Ple+Hvrk}95iiV8FE2Y9t#zqrpK=GNNNOlb}vHv%}`9P}WKLzaD8)ut- z6;n5<%0-As?rP*#*G}xtIGD9cfI8Y3Y*;~g6Eslf#_{j%b_I=UaC+EL+ za727QERhiJxR2W&mW1h@&5prygbH54aDP@1M0{L|PElP+T~QBttm^)_nvC{avT

    X62Z&wH*gp28C9|7kw2s#sXM=B=a9>5W|psK?j6%Rv&vPs=oVTNt?x1lfXLZP z7N%uvDb|~@&(v*vzk7izYFI~mLKXOO;^natO^vY)+l7U=9NAJ0r&_x!gO1`SAMHE{ z1kK+;ng!wRWJ?>#t0;u6d_zZ|ocyL8CGT8qG{w6;3#^g^tkKa2evnm#2aIj)V1zxV zyRSi`UfF?jg_?Rmfnx6Qb)){;P9qCgeYPVsD8%_eZpQ?kEC5edi_;25#_e)=wM4^; zI-*!>5bD_FrB<~~hDI#<2K=yWov`yHl{x$MZDY5omeH9usk*a*9n{#CJBOLW$MO!r zfXbZS_CwvE>`o|EB3VKL+2*FjE?YIJH9h}#?$mr#uwK3pH#4Kd_w~oHt*kpWf+{(M z5WGrmFq)rPWTciF{7fY;pZB4pbVDmRQ#o=cQ9~hpNUYvp?0mC)aAlwO&U6Rq`Q6GH z_R4A@A|~o<3v6CZY$aJ}Al16i&BL{Q&~SeGty`k)jO-)4 z9PpD^UEKti7o1ODGIjCLgP%=)AS$C_1wT^^kD$3a%ctnsdl_3M(sevYk+dZW-XbRl zqs6Rbvx7={bn{)7qv}ucfx{reh38!iIL8@Xyi-oD{_Is>fRX@Uo3CyM7>+?lWXc4?pRyHsqNtU+^j>w zq<4cRIh*7?4$4A2X-aWcXKNVUebG0#)st&#FDsji z53<7vPNX8`k*OFK?};t6rcWM@t3JybTae2a(p+%qdCn%4nO9m>tP9>GP3YK+VIq7( z#VF6(f9#W^ZU&oBg}wtP=^UdG>~p1~A9Cyrig`=f1sGb;^6fF9@p}6shHCk%HC>Wg z<5-~I+M6lUd{$YqW4;UgYwCUis{1N6L`tg^uoJEnU6+z<7SL1A9p_8MK_oj632J`TTcKnTS1RjucmX?mn}T}4O_HY^?jg4 z(&~`J@qWOyBRO<

    KSv;jKV**eY_tedz*1X0>xd} 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 literal 0 HcmV?d00001 diff --git a/zabbix_clonehosts/images/image-3.png b/zabbix_clonehosts/images/image-3.png new file mode 100644 index 0000000000000000000000000000000000000000..4eeab260a41aee48289a45c5d0db2775a332c424 GIT binary patch literal 126792 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

    =}AbchC<@s8EZS0y0h?K58JDYJsVYKOj0vy$$ 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

    + + + + + diff --git a/zabbix_clonehosts/views/clonehosts.preview.php b/zabbix_clonehosts/views/clonehosts.preview.php new file mode 100644 index 0000000..eee566e --- /dev/null +++ b/zabbix_clonehosts/views/clonehosts.preview.php @@ -0,0 +1,314 @@ + LangHelper::t('iface.Agent'), 2 => LangHelper::t('iface.SNMP'), 3 => LangHelper::t('iface.IPMI'), 4 => LangHelper::t('iface.JMX')]; + $type_name = $type_names[$iface['type']] ?? (LangHelper::t('iface.Type') . $iface['type']); + $src_interfaces[] = htmlspecialchars($type_name . ': ' . ($iface['useip'] ? $iface['ip'] : $iface['dns']) . ':' . $iface['port']); + } +} + +// Prepare host data for JavaScript (for AJAX import). +$js_host_data = []; +foreach ($host_data as $item) { + $js_host_data[] = [ + 'host' => $item['host'] ?? '', + 'visible_name' => $item['visible_name'] ?? '', + 'ip' => $item['ip'] ?? '', + 'port' => $item['port'] ?? '', + 'groups' => $item['groups'] ?? '', + 'templates' => $item['templates'] ?? '', + 'tags' => $item['tags'] ?? '', + 'macros' => $item['macros'] ?? '', + 'description' => $item['description'] ?? '' + ]; +} +?> + +
    + +
    +

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ', $src_interfaces) : LangHelper::t('preview.none') ?>
    +
    +
    + + +
    +
    + 0): ?> + + + + + + + +
    +
    + + +
    +

    +
    + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + !' + : '✓'; + $fstatus = $field_status[$idx - 1] ?? []; + // Conflict rows: disabled & unchecked; ready rows: checked by default. + $checkbox = $has_conflict + ? '' + : ''; + ?> + + + + + + + + + + + + + + + + +
    #
    ' . LangHelper::t('preview.inherited') . '' ?>' . LangHelper::t('preview.inherited') . '' ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ' . LangHelper::t('preview.inherited') . '' ?>
    +
    +
    + + +
    +
    +
    + + + + +
    + + 0): ?> + + +
    +
    + + + +
    + + From 1ffd7878264f51b370e37054c33694c699d7aa46 Mon Sep 17 00:00:00 2001 From: jxl1216 <49269749+jxl1216@users.noreply.github.com> Date: Sun, 19 Jul 2026 17:12:54 +0800 Subject: [PATCH 2/3] feat: add auto-release workflow and Zabbix 7.2+ path compatibility - Add .github/workflows/release.yml for automated module packaging * Single Release with multiple Assets (all-in-one + per-module packages) * Version format: {module_count}.{major}.{minor} (e.g., 8.2.0) * Auto-detect module version changes, also support manual trigger - Update all READMEs for Zabbix 7.2+ path compatibility * 6.0/7.0: /usr/share/zabbix/modules/ * 7.2+/7.4/8.0: /usr/share/zabbix/ui/modules/ - Add Zabbix 6.0 manifest_version one-liner fix (all modules / single module) - Bump zabbix_clonehosts version to 1.2.0 (semver 3-digit format) - Reorder README install options: all-in-one package first, then single module --- .github/workflows/release.yml | 202 ++++++++++++++++++++++++++++++++ README.md | 84 +++++++++---- README_en.md | 73 ++++++++++-- zabbix_clonehosts/README.md | 2 +- zabbix_clonehosts/README_en.md | 2 +- zabbix_clonehosts/manifest.json | 2 +- zabbix_cmdb/README.md | 2 +- zabbix_cmdb/README_en.md | 2 +- zabbix_graphtrees/README.md | 2 +- zabbix_graphtrees/README_en.md | 2 +- zabbix_im/README.md | 2 +- zabbix_im/README_en.md | 2 +- zabbix_jumpserver/README.md | 2 +- zabbix_jumpserver/README_en.md | 2 +- zabbix_rack/README.md | 2 +- zabbix_rack/README_en.md | 2 +- zabbix_reports/README.md | 2 +- zabbix_reports/README_en.md | 2 +- zabbix_snmp/README.md | 2 +- zabbix_snmp/README_en.md | 2 +- 20 files changed, 341 insertions(+), 52 deletions(-) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..34552db --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,202 @@ +name: Release Zabbix Modules + +# 当任意模块的 manifest.json 中 version 字段升级并推送到主分支时, +# 自动打包所有模块和整体项目到一个 Release 中。 +# 版本号格式:模块数量.大版本.小版本(如 8.1.0) +# Release Assets 包含: +# - zabbix_modules-<版本号>.tar.gz(整体打包) +# - zabbix_<模块名>-<版本号>.tar.gz(每个模块独立打包) +# 也支持手动触发。 + +on: + push: + branches: + - main + - master + paths: + - 'zabbix_*/manifest.json' + workflow_dispatch: + +jobs: + detect-and-release: + runs-on: ubuntu-latest + permissions: + contents: write + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Detect changed modules with version bump + id: detect + run: | + # Find all module directories + modules=() + for dir in zabbix_*/; do + [ -d "$dir" ] || continue + [ -f "${dir}manifest.json" ] || continue + modules+=("${dir%/}") + done + + echo "Found modules: ${modules[*]}" + + # Determine whether to release: + # - Manual trigger: always release + # - Push trigger: only when at least one module's version changed + should_release="false" + if [ "$GITHUB_EVENT_NAME" = "workflow_dispatch" ]; then + should_release="true" + echo "Manual trigger: will release" + else + for mod in "${modules[@]}"; do + mf="${mod}/manifest.json" + current_ver=$(python3 -c "import json; print(json.load(open('$mf'))['version'])") + prev_ver=$(git show HEAD~1:"${mf}" 2>/dev/null | python3 -c "import json,sys; print(json.load(sys.stdin)['version'])" 2>/dev/null || echo "") + if [ -z "$prev_ver" ] || [ "$current_ver" != "$prev_ver" ]; then + echo " $mod: version changed (${prev_ver:-new} -> ${current_ver}), will release" + should_release="true" + else + echo " $mod: version unchanged (${current_ver}), skip" + fi + done + fi + + echo "should_release=${should_release}" >> $GITHUB_OUTPUT + + - name: Package all modules and project into single Release + if: steps.detect.outputs.should_release == 'true' + run: | + # Count modules + MODULE_COUNT=$(ls -d zabbix_*/ 2>/dev/null | wc -l) + echo "Module count: ${MODULE_COUNT}" + + # Find the latest major version for this module count + # Version format: {module_count}.{major}.{minor} (e.g., 8.1.0) + LATEST_MAJOR=0 + for tag in $(git tag --list "v${MODULE_COUNT}.*"); do + major=$(echo "${tag}" | sed "s/v${MODULE_COUNT}\.\([0-9]*\)\.[0-9]*/\1/") + if [[ "${major}" =~ ^[0-9]+$ ]] && [ "${major}" -gt "${LATEST_MAJOR}" ] 2>/dev/null; then + LATEST_MAJOR="${major}" + fi + done + + MAJOR_VER=$((LATEST_MAJOR + 1)) + VERSION="${MODULE_COUNT}.${MAJOR_VER}.0" + echo "Release version: ${VERSION}" + + tag="v${VERSION}" + + # Check if tag already exists + if git rev-parse "refs/tags/${tag}" >/dev/null 2>&1; then + echo "Tag ${tag} already exists, skipping release" + exit 0 + fi + + mkdir -p assets + + # Package each module + echo "=== Packaging individual modules ===" + MODULE_LIST="" + for mod in zabbix_*/; do + mod="${mod%/}" + [ -f "${mod}/manifest.json" ] || continue + mod_ver=$(python3 -c "import json; print(json.load(open('${mod}/manifest.json'))['version'])") + echo "Packaging ${mod} v${mod_ver}..." + tar -czf "assets/${mod}-${mod_ver}.tar.gz" "${mod}" + ls -lh "assets/${mod}-${mod_ver}.tar.gz" + MODULE_LIST="${MODULE_LIST}- ${mod} - v${mod_ver}\n" + done + + # Package entire project (all modules together) + echo "=== Packaging entire project ===" + tar -czf "assets/zabbix_modules-${VERSION}.tar.gz" \ + --exclude=".git" \ + --exclude=".github" \ + --exclude="*.md" \ + --exclude="*.csv" \ + --exclude="images" \ + zabbix_*/ + + echo "Packaged zabbix_modules-${VERSION}.tar.gz:" + ls -lh "assets/zabbix_modules-${VERSION}.tar.gz" + + # Create release notes file + { + echo "## Zabbix Modules ${VERSION}" + echo "" + echo "### Included Modules" + echo "" + for mod in zabbix_*/; do + mod="${mod%/}" + if [ -f "${mod}/manifest.json" ]; then + mod_ver=$(python3 -c "import json; print(json.load(open('${mod}/manifest.json'))['version'])") + echo "- ${mod} - v${mod_ver}" + fi + done + echo "" + echo "### Assets" + echo "" + echo "- \`zabbix_modules-${VERSION}.tar.gz\` - 所有模块整体打包(All modules in one package)" + echo "- \`zabbix_-.tar.gz\` - 单个模块独立打包(Individual module packages)" + echo "" + echo "### Deployment" + echo "" + echo "#### 选项 A:部署所有模块(整体包)" + echo "" + echo "1. Download \`zabbix_modules-${VERSION}.tar.gz\` below" + echo "2. Upload to Zabbix server and extract:" + echo "" + echo '```bash' + echo "# Zabbix 6.0 / 7.0" + echo "tar -xzf zabbix_modules-${VERSION}.tar.gz -C /usr/share/zabbix/modules/" + echo "" + echo "# Zabbix 7.2+ / 7.4 / 8.0" + echo "tar -xzf zabbix_modules-${VERSION}.tar.gz -C /usr/share/zabbix/ui/modules/" + echo '```' + echo "" + echo "3. If using Zabbix 6.0, change manifest_version for all modules:" + echo '```bash' + echo "sed -i 's/\"manifest_version\": 2.0/\"manifest_version\": 1.0/' /usr/share/zabbix/modules/zabbix_*/manifest.json" + echo '```' + echo "" + echo "#### Option B: Deploy a single module" + echo "" + echo "1. Download the \`zabbix_-.tar.gz\` file for the module you want" + echo "2. Upload to Zabbix server and extract:" + echo "" + echo '```bash' + echo "# Zabbix 6.0 / 7.0" + echo "tar -xzf zabbix_-.tar.gz -C /usr/share/zabbix/modules/" + echo "" + echo "# Zabbix 7.2+ / 7.4 / 8.0" + echo "tar -xzf zabbix_-.tar.gz -C /usr/share/zabbix/ui/modules/" + echo '```' + echo "" + echo "3. If using Zabbix 6.0, change manifest_version:" + echo '```bash' + echo "sed -i 's/\"manifest_version\": 2.0/\"manifest_version\": 1.0/' /usr/share/zabbix/modules/zabbix_/manifest.json" + echo '```' + echo "" + echo "### Enable modules in Zabbix Web" + echo "" + echo "1. Open Zabbix Web UI → Administration → General → Modules" + echo "2. Click **Scan directory** to detect new modules" + echo "3. Enable the modules you need" + } > release_notes.md + + # Create single Release with all assets + echo "=== Creating release ${tag} with all assets ===" + gh release create "${tag}" \ + assets/*.tar.gz \ + --title "Zabbix Modules ${VERSION}" \ + --notes-file release_notes.md \ + --repo "${{ github.repository }}" + + echo "=== Released ${tag} ===" + echo "Assets in release:" + gh release view "${tag}" --json assets --jq '.assets[].name' \ + --repo "${{ github.repository }}" + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/README.md b/README.md index 2515183..e22fe05 100644 --- a/README.md +++ b/README.md @@ -195,49 +195,85 @@ ## 安装说明 -### 安装模块 +### 方式一:下载 Releases 压缩包(适合生产部署,按需选择) -这是最简单快捷的安装方式,一次性部署所有模块: +Releases 页面提供两种压缩包,无需安装 git: -1. **Zabbix 6.0 / 7.0 部署方法** +- **整体打包压缩包**:`zabbix_modules-<版本号>.tar.gz`(包含所有模块,版本号格式:`模块数量.大版本.小版本`,如 `8.2.0`) +- **单模块压缩包**:`zabbix_<模块名>-<版本号>.tar.gz`(按需下载单个模块) + +#### 选项 A:下载所有模块整体压缩包 + +1. 前往 [Releases 页面](https://github.com/X-Mars/zabbix_modules/releases),下载 `zabbix_modules-<版本号>.tar.gz` 文件(如 `zabbix_modules-8.2.0.tar.gz`) +2. 上传到 Zabbix 服务器并解压到模块目录: ```bash -git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/modules/ +# Zabbix 6.0 / 7.0 +tar -xzf zabbix_modules-<版本号>.tar.gz -C /usr/share/zabbix/modules/ + +# Zabbix 7.2+ / 7.4 / 8.0 +tar -xzf zabbix_modules-<版本号>.tar.gz -C /usr/share/zabbix/ui/modules/ ``` -2. **Zabbix 7.4 / 8.0 部署方法** +3. **如果使用 Zabbix 6.0,修改所有模块的 manifest_version** ```bash -git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/ui/modules/ +for mod in /usr/share/zabbix/modules/zabbix_*/; do + sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' ${mod}manifest.json +done ``` -3. **如果使用Zabbix 6.0,修改manifest_version** +如果使用 Zabbix 7.0+ 或 8.0+,则无需修改,保持默认值即可。 + +#### 选项 B:下载单个模块 + +1. 前往 [Releases 页面](https://github.com/X-Mars/zabbix_modules/releases),下载所需模块的 `zabbix_<模块名>-<版本号>.tar.gz` 文件 +2. 上传到 Zabbix 服务器并解压到模块目录: ```bash -cd /usr/share/zabbix/modules/ -# 修改 zabbix_reports 模块 -sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' zabbix_reports/manifest.json +# Zabbix 6.0 / 7.0 +tar -xzf zabbix_<模块名>-<版本号>.tar.gz -C /usr/share/zabbix/modules/ + +# Zabbix 7.2+ / 7.4 / 8.0 +tar -xzf zabbix_<模块名>-<版本号>.tar.gz -C /usr/share/zabbix/ui/modules/ +``` -# 修改 zabbix_cmdb 模块 -sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' zabbix_cmdb/manifest.json +3. **如果使用 Zabbix 6.0,修改 manifest_version** -# 修改 zabbix_graphtrees 模块 -sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' zabbix_graphtrees/manifest.json +```bash +sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' /usr/share/zabbix/modules/zabbix_<模块名>/manifest.json +``` -# 修改 zabbix_rack 模块 -sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' zabbix_rack/manifest.json +如果使用 Zabbix 7.0+ 或 8.0+,则无需修改,保持默认值即可。 -# 修改 zabbix_snmp 模块 -sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' zabbix_snmp/manifest.json +### 方式二:git clone 直接部署(适合开发/跟踪更新) -# 修改 zabbix_jumpserver 模块 -sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' zabbix_jumpserver/manifest.json +一次性部署所有模块: -# 修改 zabbix_im 模块 -sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' zabbix_im/manifest.json +1. **Zabbix 6.0 / 7.0 部署方法** -# 修改 zabbix_clonehosts 模块 -sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' zabbix_clonehosts/manifest.json +```bash +git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/modules/ +``` + +2. **Zabbix 7.2+ / 7.4 / 8.0 部署方法** + +```bash +git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/ui/modules/ +``` + +3. **如果使用Zabbix 6.0,修改manifest_version** + +一键修改所有模块: + +```bash +sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' /usr/share/zabbix/modules/zabbix_*/manifest.json +``` + +单独修改某个模块(如 zabbix_reports): + +```bash +sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' /usr/share/zabbix/modules/zabbix_reports/manifest.json ``` 如果使用 Zabbix 7.0+ 或 8.0+,则无需修改,保持默认值即可。 diff --git a/README_en.md b/README_en.md index a267aa0..645798c 100644 --- a/README_en.md +++ b/README_en.md @@ -104,7 +104,58 @@ This repository contains a collection of independent Zabbix frontend modules tha ## Installation -### Deploy all modules (recommended) +### Option 1: Download Release packages (for production, choose what you need) + +The Releases page offers two types of packages — no git required: + +- **All-in-one package**: `zabbix_modules-.tar.gz` (includes all modules; version format: `module_count.major.minor`, e.g., `8.2.0`) +- **Single-module package**: `zabbix_-.tar.gz` (download only the modules you need) + +#### Option A: Download the all-in-one package + +1. Go to the [Releases page](https://github.com/X-Mars/zabbix_modules/releases) and download the `zabbix_modules-.tar.gz` file (e.g., `zabbix_modules-8.2.0.tar.gz`). +2. Upload to the Zabbix server and extract to the modules directory: + + ```bash + # Zabbix 6.0 / 7.0 + tar -xzf zabbix_modules-.tar.gz -C /usr/share/zabbix/modules/ + + # Zabbix 7.2+ / 7.4 / 8.0 + tar -xzf zabbix_modules-.tar.gz -C /usr/share/zabbix/ui/modules/ + ``` + +3. If you run Zabbix 6.0, change `manifest_version` for every module: + + ```bash + for mod in /usr/share/zabbix/modules/zabbix_*/; do + sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' ${mod}manifest.json + done + ``` + + For Zabbix 7.0+ / 8.0+, no change is required. + +#### Option B: Download a single module + +1. Go to the [Releases page](https://github.com/X-Mars/zabbix_modules/releases) and download the `zabbix_-.tar.gz` file for the module you want. +2. Upload to the Zabbix server and extract to the modules directory: + + ```bash + # Zabbix 6.0 / 7.0 + tar -xzf zabbix_-.tar.gz -C /usr/share/zabbix/modules/ + + # Zabbix 7.2+ / 7.4 / 8.0 + tar -xzf zabbix_-.tar.gz -C /usr/share/zabbix/ui/modules/ + ``` + +3. If you run Zabbix 6.0, change `manifest_version`: + + ```bash + sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' /usr/share/zabbix/modules/zabbix_/manifest.json + ``` + + For Zabbix 7.0+ / 8.0+, no change is required. + +### Option 2: Deploy all modules via git clone (for development / tracking updates) 1. For Zabbix 6.0 / 7.0: @@ -112,7 +163,7 @@ This repository contains a collection of independent Zabbix frontend modules tha git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/modules/ ``` -2. For Zabbix 7.4 / 8.0: +2. For Zabbix 7.2+ / 7.4 / 8.0: ```bash git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/ui/modules/ @@ -120,16 +171,16 @@ git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/ui/modu 3. If you run Zabbix 6.0, change `manifest_version` for each module: +One-liner for all modules: + +```bash +sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' /usr/share/zabbix/modules/zabbix_*/manifest.json +``` + +For a single module (e.g., zabbix_reports): + ```bash -cd /usr/share/zabbix/modules/ -sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' zabbix_reports/manifest.json -sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' zabbix_cmdb/manifest.json -sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' zabbix_graphtrees/manifest.json -sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' zabbix_rack/manifest.json -sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' zabbix_snmp/manifest.json -sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' zabbix_jumpserver/manifest.json -sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' zabbix_im/manifest.json -sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' zabbix_clonehosts/manifest.json +sed -i 's/"manifest_version": 2.0/"manifest_version": 1.0/' /usr/share/zabbix/modules/zabbix_reports/manifest.json ``` For Zabbix 7.0+ / 8.0+, no change is required. diff --git a/zabbix_clonehosts/README.md b/zabbix_clonehosts/README.md index 94ff81c..612d26c 100644 --- a/zabbix_clonehosts/README.md +++ b/zabbix_clonehosts/README.md @@ -58,7 +58,7 @@ # Zabbix 6.0 / 7.0 部署方法 git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/modules/ -# Zabbix 7.4 / 8.0 部署方法 +# Zabbix 7.2+ / 7.4 / 8.0 部署方法 git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/ui/modules/ ``` diff --git a/zabbix_clonehosts/README_en.md b/zabbix_clonehosts/README_en.md index 728fb1a..0c6e0ed 100644 --- a/zabbix_clonehosts/README_en.md +++ b/zabbix_clonehosts/README_en.md @@ -47,7 +47,7 @@ Zabbix Clonehosts is a frontend module for Zabbix that batch-clones and imports # For Zabbix 6.0 / 7.0 deployment git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/modules/ -# For Zabbix 7.4 / 8.0 deployment +# For Zabbix 7.2+ / 7.4 / 8.0 deployment git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/ui/modules/ ``` diff --git a/zabbix_clonehosts/manifest.json b/zabbix_clonehosts/manifest.json index b8246e6..9ad3eb1 100644 --- a/zabbix_clonehosts/manifest.json +++ b/zabbix_clonehosts/manifest.json @@ -5,7 +5,7 @@ "author": "火星小刘/先龍", "url": "https://github.com/X-Mars/zabbix_modules", "namespace": "ZabbixClonehosts", - "version": "1.2", + "version": "1.2.0", "description": "Batch clone/import hosts based on an existing monitored host. Supports CSV/online table entry, preview with conflict detection, auto-creation of host groups, existence status indicators, and progress feedback. Compatible with Zabbix 6.0/6.4/7.x. Auto-syncs language with Zabbix system settings (Chinese/English).", "actions": { "clonehosts": { diff --git a/zabbix_cmdb/README.md b/zabbix_cmdb/README.md index e1490be..6c9757c 100644 --- a/zabbix_cmdb/README.md +++ b/zabbix_cmdb/README.md @@ -50,7 +50,7 @@ # Zabbix 6.0 / 7.0 部署方法 git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/modules/ -# Zabbix 7.4 / 8.0 部署方法 +# Zabbix 7.2+ / 7.4 / 8.0 部署方法 git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/ui/modules/ ``` diff --git a/zabbix_cmdb/README_en.md b/zabbix_cmdb/README_en.md index 92d3aa8..6637610 100644 --- a/zabbix_cmdb/README_en.md +++ b/zabbix_cmdb/README_en.md @@ -50,7 +50,7 @@ This is a Zabbix frontend module that provides Configuration Management Database # Zabbix 6.0 / 7.0 deployment git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/modules/ -# Zabbix 7.4 / 8.0 deployment +# Zabbix 7.2+ / 7.4 / 8.0 deployment git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/ui/modules/ ``` diff --git a/zabbix_graphtrees/README.md b/zabbix_graphtrees/README.md index bbde88d..c67229f 100644 --- a/zabbix_graphtrees/README.md +++ b/zabbix_graphtrees/README.md @@ -48,7 +48,7 @@ # Zabbix 6.0 / 7.0 部署方法 git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/modules/ -# Zabbix 7.4 / 8.0 部署方法 +# Zabbix 7.2+ / 7.4 / 8.0 部署方法 git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/ui/modules/ ``` diff --git a/zabbix_graphtrees/README_en.md b/zabbix_graphtrees/README_en.md index 322db53..55a3f95 100644 --- a/zabbix_graphtrees/README_en.md +++ b/zabbix_graphtrees/README_en.md @@ -47,7 +47,7 @@ This is a Zabbix frontend module that provides tree-structured resource browsing # Zabbix 6.0 / 7.0 deployment git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/modules/ -# Zabbix 7.4 / 8.0 deployment +# Zabbix 7.2+ / 7.4 / 8.0 deployment git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/ui/modules/ ``` diff --git a/zabbix_im/README.md b/zabbix_im/README.md index 4c035e9..658f474 100644 --- a/zabbix_im/README.md +++ b/zabbix_im/README.md @@ -43,7 +43,7 @@ # Zabbix 6.0 / 7.0 部署方法 git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/modules/ -# Zabbix 7.4 / 8.0 部署方法 +# Zabbix 7.2+ / 7.4 / 8.0 部署方法 git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/ui/modules/ ``` diff --git a/zabbix_im/README_en.md b/zabbix_im/README_en.md index 2e5a39c..b61fe37 100644 --- a/zabbix_im/README_en.md +++ b/zabbix_im/README_en.md @@ -43,7 +43,7 @@ The module adds an **IM Sync Assistant** submenu under the **Users** menu in Zab # Zabbix 6.0 / 7.0 deployment git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/modules/ -# Zabbix 7.4 / 8.0 deployment +# Zabbix 7.2+ / 7.4 / 8.0 deployment git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/ui/modules/ ``` diff --git a/zabbix_jumpserver/README.md b/zabbix_jumpserver/README.md index 0feaf00..4d1d5bc 100644 --- a/zabbix_jumpserver/README.md +++ b/zabbix_jumpserver/README.md @@ -100,7 +100,7 @@ # Zabbix 6.0 / 7.0 部署方法 git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/modules/ -# Zabbix 7.4 / 8.0 部署方法 +# Zabbix 7.2+ / 7.4 / 8.0 部署方法 git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/ui/modules/ ``` diff --git a/zabbix_jumpserver/README_en.md b/zabbix_jumpserver/README_en.md index 238da45..56a04d9 100644 --- a/zabbix_jumpserver/README_en.md +++ b/zabbix_jumpserver/README_en.md @@ -100,7 +100,7 @@ Useful when assets already exist in JumpServer but Zabbix hosts do not yet have # Zabbix 6.0 / 7.0 deployment git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/modules/ -# Zabbix 7.4 / 8.0 deployment +# Zabbix 7.2+ / 7.4 / 8.0 deployment git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/ui/modules/ ``` diff --git a/zabbix_rack/README.md b/zabbix_rack/README.md index 1885d09..b9d248a 100644 --- a/zabbix_rack/README.md +++ b/zabbix_rack/README.md @@ -66,7 +66,7 @@ # Zabbix 6.0 / 7.0 部署方法 git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/modules/ -# Zabbix 7.4 / 8.0 部署方法 +# Zabbix 7.2+ / 7.4 / 8.0 部署方法 git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/ui/modules/ ``` diff --git a/zabbix_rack/README_en.md b/zabbix_rack/README_en.md index 3068918..8e5c870 100644 --- a/zabbix_rack/README_en.md +++ b/zabbix_rack/README_en.md @@ -66,7 +66,7 @@ This is a Zabbix frontend module for data center rack visualization and host pla # Zabbix 6.0 / 7.0 deployment git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/modules/ -# Zabbix 7.4 / 8.0 deployment +# Zabbix 7.2+ / 7.4 / 8.0 deployment git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/ui/modules/ ``` diff --git a/zabbix_reports/README.md b/zabbix_reports/README.md index 053183b..a7859e6 100644 --- a/zabbix_reports/README.md +++ b/zabbix_reports/README.md @@ -47,7 +47,7 @@ # Zabbix 6.0 / 7.0 部署方法 git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/modules/ -# Zabbix 7.4 / 8.0 部署方法 +# Zabbix 7.2+ / 7.4 / 8.0 部署方法 git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/ui/modules/ ``` diff --git a/zabbix_reports/README_en.md b/zabbix_reports/README_en.md index 1c3b5ec..cadc55c 100644 --- a/zabbix_reports/README_en.md +++ b/zabbix_reports/README_en.md @@ -47,7 +47,7 @@ Zabbix Reports is a frontend module for Zabbix that generates daily, weekly, and # For Zabbix 6.0 / 7.0 deployment git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/modules/ -# For Zabbix 7.4 / 8.0 deployment +# For Zabbix 7.2+ / 7.4 / 8.0 deployment git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/ui/modules/ ``` diff --git a/zabbix_snmp/README.md b/zabbix_snmp/README.md index 32814a8..d7e8c83 100644 --- a/zabbix_snmp/README.md +++ b/zabbix_snmp/README.md @@ -56,7 +56,7 @@ # Zabbix 6.0 / 7.0 部署方法 git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/modules/ -# Zabbix 7.4 / 8.0 部署方法 +# Zabbix 7.2+ / 7.4 / 8.0 部署方法 git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/ui/modules/ ``` diff --git a/zabbix_snmp/README_en.md b/zabbix_snmp/README_en.md index df0f5b9..876c6e7 100644 --- a/zabbix_snmp/README_en.md +++ b/zabbix_snmp/README_en.md @@ -56,7 +56,7 @@ This is a Zabbix frontend module that provides an SNMP assistant. It adds an **S # Zabbix 6.0 / 7.0 deployment git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/modules/ -# Zabbix 7.4 / 8.0 deployment +# Zabbix 7.2+ / 7.4 / 8.0 deployment git clone https://github.com/X-Mars/zabbix_modules.git /usr/share/zabbix/ui/modules/ ``` From f17d06f50fe86d9f837f18743d4e168cf8af49c5 Mon Sep 17 00:00:00 2001 From: jxl1216 <49269749+jxl1216@users.noreply.github.com> Date: Mon, 20 Jul 2026 22:40:37 +0800 Subject: [PATCH 3/3] feat: zabbix_clonehosts v1.3.0 - real-time progress stats, Zabbix 6.0 compatibility, menu location fix, API error details --- zabbix_clonehosts/LangHelper.php | 12 +++++++++ zabbix_clonehosts/Module.php | 8 +++++- .../actions/ClonehostsImport.php | 3 ++- zabbix_clonehosts/assets/css/clonehosts.css | 26 +++++++++++++++++++ .../assets/js/clonehosts.preview.js.php | 3 +++ zabbix_clonehosts/manifest.json | 2 +- zabbix_clonehosts/views/clonehosts.php | 14 ++++++++++ .../views/clonehosts.preview.php | 19 ++++++++++++++ 8 files changed, 84 insertions(+), 3 deletions(-) diff --git a/zabbix_clonehosts/LangHelper.php b/zabbix_clonehosts/LangHelper.php index 0e83eaf..3718a36 100644 --- a/zabbix_clonehosts/LangHelper.php +++ b/zabbix_clonehosts/LangHelper.php @@ -464,6 +464,18 @@ class LangHelper { 'en_GB' => 'Import Progress', 'zh_CN' => '导入进度' ], + 'import.status_success' => [ + 'en_GB' => 'Success:', + 'zh_CN' => '成功:' + ], + 'import.status_failed' => [ + 'en_GB' => 'Failed:', + 'zh_CN' => '失败:' + ], + 'import.status_pending' => [ + 'en_GB' => 'Pending:', + 'zh_CN' => '待处理:' + ], 'import.importing' => [ 'en_GB' => 'Importing...', 'zh_CN' => '导入中...' diff --git a/zabbix_clonehosts/Module.php b/zabbix_clonehosts/Module.php index 485a6b1..5fc1d63 100644 --- a/zabbix_clonehosts/Module.php +++ b/zabbix_clonehosts/Module.php @@ -23,6 +23,7 @@ use APP, CMenu, CMenuItem; +use Modules\ZabbixClonehosts\CompatHelper; /** * Trait containing the module initialization logic shared across Zabbix versions. @@ -32,8 +33,13 @@ trait ModuleInitTrait { public function init(): void { $menu_label = LangHelper::t('menu.clonehosts'); + // Zabbix menu structure differs by version: + // - Zabbix 6.0: Configuration → Hosts + // - Zabbix 6.4+: Data collection → Hosts + $main_menu_name = CompatHelper::isZabbix60() ? _('Configuration') : _('Data collection'); + APP::Component()->get('menu.main') - ->findOrAdd(_('Data collection')) + ->findOrAdd($main_menu_name) ->getSubmenu() ->insertAfter(_('Hosts'), (new CMenuItem($menu_label))->setAction('clonehosts') diff --git a/zabbix_clonehosts/actions/ClonehostsImport.php b/zabbix_clonehosts/actions/ClonehostsImport.php index 5e35ee4..77f145c 100644 --- a/zabbix_clonehosts/actions/ClonehostsImport.php +++ b/zabbix_clonehosts/actions/ClonehostsImport.php @@ -338,7 +338,8 @@ protected function doAction(): void { $result['success'] = true; $result['hostid'] = $created['hostids'][0]; } else { - $result['error'] = LangHelper::t('err.unknown_api_response'); + $result['error'] = LangHelper::t('err.unknown_api_response') + . ': ' . json_encode($created, JSON_UNESCAPED_UNICODE); } } catch (\Exception $e) { $result['error'] = $e->getMessage(); diff --git a/zabbix_clonehosts/assets/css/clonehosts.css b/zabbix_clonehosts/assets/css/clonehosts.css index 89b328a..61236d3 100644 --- a/zabbix_clonehosts/assets/css/clonehosts.css +++ b/zabbix_clonehosts/assets/css/clonehosts.css @@ -889,6 +889,32 @@ min-width: 80px; } +.progress-stats { + display: flex; + gap: 20px; + padding: 10px 15px; + background: #f4f6f8; + border-radius: 3px; + margin-bottom: 15px; +} + +.progress-stat { + font-size: 13px; + font-weight: 600; +} + +.progress-success { + color: #4caf50; +} + +.progress-failed { + color: #f44336; +} + +.progress-pending { + color: #768390; +} + /* ===== Results ===== */ .results-summary { display: flex; diff --git a/zabbix_clonehosts/assets/js/clonehosts.preview.js.php b/zabbix_clonehosts/assets/js/clonehosts.preview.js.php index e83b1f2..fa6e562 100644 --- a/zabbix_clonehosts/assets/js/clonehosts.preview.js.php +++ b/zabbix_clonehosts/assets/js/clonehosts.preview.js.php @@ -181,6 +181,9 @@ function updateProgress() { var percent = Math.round((processedCount / importQueue.length) * 100); $('#progress-bar').css('width', percent + '%'); $('#progress-text').text(processedCount + ' / ' + importQueue.length); + $('#progress-success').text(successCount); + $('#progress-failed').text(failedCount); + $('#progress-pending').text(importQueue.length - processedCount); $('#success-count').text(successCount); $('#failed-count').text(failedCount); } diff --git a/zabbix_clonehosts/manifest.json b/zabbix_clonehosts/manifest.json index 9ad3eb1..e9e5942 100644 --- a/zabbix_clonehosts/manifest.json +++ b/zabbix_clonehosts/manifest.json @@ -5,7 +5,7 @@ "author": "火星小刘/先龍", "url": "https://github.com/X-Mars/zabbix_modules", "namespace": "ZabbixClonehosts", - "version": "1.2.0", + "version": "1.3.0", "description": "Batch clone/import hosts based on an existing monitored host. Supports CSV/online table entry, preview with conflict detection, auto-creation of host groups, existence status indicators, and progress feedback. Compatible with Zabbix 6.0/6.4/7.x. Auto-syncs language with Zabbix system settings (Chinese/English).", "actions": { "clonehosts": { diff --git a/zabbix_clonehosts/views/clonehosts.php b/zabbix_clonehosts/views/clonehosts.php index 7d4b6ae..483ee46 100644 --- a/zabbix_clonehosts/views/clonehosts.php +++ b/zabbix_clonehosts/views/clonehosts.php @@ -24,6 +24,12 @@ */ use Modules\ZabbixClonehosts\LangHelper; +use Modules\ZabbixClonehosts\CompatHelper; + +// Zabbix 6.0 does not auto-load assets declared in manifest.json. +// Detect once and emit manual / + + + + diff --git a/zabbix_clonehosts/views/clonehosts.preview.php b/zabbix_clonehosts/views/clonehosts.preview.php index eee566e..c513564 100644 --- a/zabbix_clonehosts/views/clonehosts.preview.php +++ b/zabbix_clonehosts/views/clonehosts.preview.php @@ -24,6 +24,11 @@ */ use Modules\ZabbixClonehosts\LangHelper; +use Modules\ZabbixClonehosts\CompatHelper; + +// Zabbix 6.0 does not auto-load assets declared in manifest.json. +$need_manual_assets = CompatHelper::isZabbix60(); +$module_asset_base = 'modules/zabbix_clonehosts/assets'; $source_host = $data['source_host']; $host_data = $data['host_data']; @@ -89,6 +94,10 @@ } ?> + + + +
    @@ -276,6 +285,12 @@ 0 /
    +
    + 0 + 0 + +
    +

    v;j=+E39 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 literal 0 HcmV?d00001 diff --git a/zabbix_clonehosts/images/image-4.png b/zabbix_clonehosts/images/image-4.png new file mode 100644 index 0000000000000000000000000000000000000000..aa412f29df60af612969d33569535d35a873d276 GIT binary patch literal 58262 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 literal 0 HcmV?d00001 diff --git a/zabbix_clonehosts/images/image.png b/zabbix_clonehosts/images/image.png new file mode 100644 index 0000000000000000000000000000000000000000..fab29c1d10d56c79071059efa02a6031d8601f4d GIT binary patch literal 47493 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 AQ2+n{ literal 0 HcmV?d00001 diff --git a/zabbix_clonehosts/manifest.json b/zabbix_clonehosts/manifest.json new file mode 100644 index 0000000..b8246e6 --- /dev/null +++ b/zabbix_clonehosts/manifest.json @@ -0,0 +1,37 @@ +{ + "manifest_version": 2.0, + "id": "zabbix-clonehosts", + "name": "Zabbix Clonehosts", + "author": "火星小刘/先龍", + "url": "https://github.com/X-Mars/zabbix_modules", + "namespace": "ZabbixClonehosts", + "version": "1.2", + "description": "Batch clone/import hosts based on an existing monitored host. Supports CSV/online table entry, preview with conflict detection, auto-creation of host groups, existence status indicators, and progress feedback. Compatible with Zabbix 6.0/6.4/7.x. Auto-syncs language with Zabbix system settings (Chinese/English).", + "actions": { + "clonehosts": { + "class": "Clonehosts", + "view": "clonehosts" + }, + "clonehosts.preview": { + "class": "ClonehostsPreview", + "view": "clonehosts.preview" + }, + "clonehosts.import": { + "class": "ClonehostsImport", + "view": "clonehosts.import" + }, + "clonehosts.source": { + "class": "ClonehostsSource", + "view": "clonehosts.import" + } + }, + "assets": { + "js": [ + "clonehosts.js.php", + "clonehosts.preview.js.php" + ], + "css": [ + "clonehosts.css" + ] + } +} diff --git a/zabbix_clonehosts/views/clonehosts.import.php b/zabbix_clonehosts/views/clonehosts.import.php new file mode 100644 index 0000000..5b65fb0 --- /dev/null +++ b/zabbix_clonehosts/views/clonehosts.import.php @@ -0,0 +1,30 @@ + $host) { + $hosts_js[] = [ + 'hostid' => $host['hostid'], + 'name' => $host['name'], + 'host' => $host['host'], + 'groupids' => $host_group_map[$hostid] ?? [] + ]; +} + +// Build host groups data for JavaScript (groupid + name). +$host_groups_js = []; +foreach ($data['host_groups'] as $group) { + $host_groups_js[] = [ + 'groupid' => $group['groupid'], + 'name' => $group['name'] + ]; +} +?> + +