From b09b48c061a9e08e8ec222810b935dfde9b71614 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Sun, 28 Dec 2025 16:34:41 +0300 Subject: [PATCH] Add https support to antietcd --- mon/antietcd_adapter.js | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/mon/antietcd_adapter.js b/mon/antietcd_adapter.js index b18016a0..83d879eb 100644 --- a/mon/antietcd_adapter.js +++ b/mon/antietcd_adapter.js @@ -18,7 +18,7 @@ class AntiEtcdAdapter cluster = cluster ? (''+(cluster||'')).split(/,+/) : []; cluster = Object.keys(cluster.reduce((a, url) => { - a[url.toLowerCase().replace(/^(https?:\/\/)/, '').replace(/\/.*$/, '')] = true; + a[url.toLowerCase().replace(/^(https?:\/\/)?(.*?)(\/.*)?$/, (m, m1, m2) => (m1||'http://')+m2)] = true; return a; }, {})); const cfg_port = config.antietcd_port; @@ -26,7 +26,8 @@ class AntiEtcdAdapter is_local['0.0.0.0'] = true; is_local['::'] = true; is_local[''] = true; - const selected = cluster.map(s => s.split(':', 2)).filter(ip => is_local[ip[0]] && (!cfg_port || ip[1] == cfg_port)); + // split :, 3 -> :: + const selected = cluster.map(s => s.split(':', 3)).filter(ip => is_local[ip[1].substr(2)] && (!cfg_port || ip[2] == cfg_port)); if (selected.length > 1) { console.error('More than 1 etcd_address matches local IPs, please specify port'); @@ -35,12 +36,15 @@ class AntiEtcdAdapter else if (selected.length == 1) { const antietcd_config = { - ip: selected[0][0], - port: selected[0][1], - data: config.antietcd_data_file || ((config.antietcd_data_dir || '/var/lib/vitastor') + '/mon_'+selected[0][1]+'.json.gz'), + ip: selected[0][1].substr(2), + port: selected[0][2], + cert: config.antietcd_cert, + key: config.antietcd_key, + ca: config.etcd_ca, + data: config.antietcd_data_file || ((config.antietcd_data_dir || '/var/lib/vitastor') + '/mon_'+selected[0][2]+'.json.gz'), persist_filter: vitastor_persist_filter({ vitastor_prefix: config.etcd_prefix || '/vitastor' }), - node_id: selected[0][0]+':'+selected[0][1], // node_id = ip:port - cluster: (cluster.length == 1 ? null : cluster.reduce((a, c) => { a[c] = "http://"+c; return a; }, {})), + node_id: selected[0][1].substr(2)+':'+selected[0][2], // node_id = ip:port + cluster: (cluster.length == 1 ? null : cluster.reduce((a, c) => { a[c.replace(/^(https?:\/\/)/, '')] = c; return a; }, {})), cluster_key: (config.etcd_prefix || '/vitastor'), stale_read: 1, log_level: 1,