From 46c80fdf328f6538721f406c60c70d5773a4dc8f Mon Sep 17 00:00:00 2001 From: shats Date: Wed, 27 Aug 2025 18:12:55 +0700 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=92=D0=BE=D1=81=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D0=B8=D1=82=D1=8C=20=D0=BA=D0=BB=D0=B0=D1=81?= =?UTF-8?q?=D1=81=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=B8=D0=B5=20=D0=BA=D0=B0?= =?UTF-8?q?=D1=80=D1=82=D0=BE=D1=87=D0=BA=D0=B8=20=D0=B4=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BD=D0=BE=D0=B2=D1=8B?= =?UTF-8?q?=D1=85=20ASN,=20=D0=B4=D0=BE=D0=BC=D0=B5=D0=BD=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=B8=20IP-=D0=B4=D0=B8=D0=B0=D0=BF=D0=B0=D0=B7=D0=BE=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2=20=D0=B2=20=D1=81=D0=BE=D0=BE=D1=82=D0=B2=D0=B5?= =?UTF-8?q?=D1=82=D1=81=D1=82=D0=B2=D1=83=D1=8E=D1=89=D0=B8=D1=85=20=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D0=B5=D0=B4=D0=B6=D0=B5=D1=80=D0=B0=D1=85,=20?= =?UTF-8?q?=D1=83=D0=BB=D1=83=D1=87=D1=88=D0=B8=D0=B2=20=D0=B8=D0=BD=D1=82?= =?UTF-8?q?=D0=B5=D1=80=D1=84=D0=B5=D0=B9=D1=81=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D0=B2=D0=B2=D0=BE=D0=B4=D0=B0=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B?= =?UTF-8?q?=D1=85=20=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82?= =?UTF-8?q?=D0=B5=D0=BB=D0=B5=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/ASNsNewManager.jsx | 58 +++++++++++++++++++++++++++++ frontend/src/DomainsNewManager.jsx | 59 ++++++++++++++++++++++++++++++ frontend/src/IPRangesManager.jsx | 57 +++++++++++++++++++++++++++++ 3 files changed, 174 insertions(+) diff --git a/frontend/src/ASNsNewManager.jsx b/frontend/src/ASNsNewManager.jsx index 3b205f4..93b1ca4 100644 --- a/frontend/src/ASNsNewManager.jsx +++ b/frontend/src/ASNsNewManager.jsx @@ -466,6 +466,64 @@ function ASNsNewManager() { />
+ {/* Classic Add New ASN Card (restored) */} +
+
+

+ + Добавить новый ASN +

+
+
+
{ e.preventDefault(); handleAddItem(); }}> +
+ + setNewItem({ ...newItem, asn: e.target.value })} + /> + {newInvalid.asn &&
Только цифры
} +
Формат: только цифры, например 12345
+
+
+ + setNewItem({ ...newItem, community: v })} + communities={communities} + placeholder="Начните вводить номер или имя" + className={`form-control${newInvalid.community ? ' is-invalid' : ''}`} + /> + {newInvalid.community &&
Только цифры
} +
Формат: N или N:N (например 65000:100)
+ {(() => { + const match = communities.find(c => c.value === String(newItem.community).trim()); + if (!match) return null; + return ( +
+ {match.name && (<>{match.name} — )} + {match.description || ''} + {match.tags && match.tags.length > 0 && ( + <> ({match.tags.join(', ')}) + )} +
+ ); + })()} +
+
+ +
+
+
+
+ + {/* QuickAdd stays for batch input */}
+ {/* Classic Add New Domain Card (restored) */} +
+
+

+ + Добавить новый домен +

+
+
+
{ e.preventDefault(); handleAddItem(); }}> +
+ + setNewItem({ ...newItem, domain: e.target.value })} + /> + {newInvalid.domain &&
Неверный формат домена
} +
Без http/https, только доменное имя
+
Формат: sub.domain.tld (например foo.example.org)
+
+
+ + setNewItem({ ...newItem, community: v })} + communities={communities} + placeholder="Начните вводить номер или имя" + className={`form-control${newInvalid.community ? ' is-invalid' : ''}`} + /> + {newInvalid.community &&
Только цифры
} +
Формат: N или N:N (например 65000:100)
+ {(() => { + const match = communities.find(c => c.value === String(newItem.community).trim()); + if (!match) return null; + return ( +
+ {match.name && (<>{match.name} — )} + {match.description || ''} + {match.tags && match.tags.length > 0 && ( + <> ({match.tags.join(', ')}) + )} +
+ ); + })()} +
+
+ +
+
+
+
+ + {/* QuickAdd stays for batch input */}
+ {/* Classic Add New Item Card (restored) */} +
+
+

+ + Добавить новый IP-диапазон +

+
+
+
{ e.preventDefault(); handleAddItem(); }}> +
+ + setNewItem({ ...newItem, ipRange: e.target.value })} + /> + {newInvalid.ipRange &&
Некорректный CIDR
} +
Формат: A.B.C.D/Маска, например 10.0.0.0/24
+
+
+ + setNewItem({ ...newItem, community: v })} + communities={communities} + placeholder="Начните вводить номер или имя" + className={`form-control${newInvalid.community ? ' is-invalid' : ''}`} + /> + {newInvalid.community &&
Только цифры
} + {(() => { + const match = communities.find(c => c.value === String(newItem.community).trim()); + if (!match) return null; + return ( +
+ {match.name && (<>{match.name} — )} + {match.description || ''} + {match.tags && match.tags.length > 0 && ( + <> ({match.tags.join(', ')}) + )} +
+ ); + })()} +
+
+ +
+
+
+
+ + {/* QuickAdd stays for batch input */}