============================================================================
ПРИМЕРЫ КОНФИГУРАЦИИ ДЛЯ config.pl
============================================================================
Пример 1: Только стандартные MAC-адреса
$conf{CPE_MAC_FORMAT} = '^[0-9a-fA-F]{2}([:\\-\\.]?[0-9a-fA-F]{2}){5}$';
Пример 2: Стандартные MAC + Cisco формат
$conf{CPE_MAC_FORMAT} = '^[0-9a-fA-F]{2}([:\\-\\.]?[0-9a-fA-F]{2}){5}$|^[0-9a-fA-F]{4}\\.[0-9a-fA-F]{4}\\.[0-9a-fA-F]{4}$';
Пример 3: Только MAC с двоеточиями
$conf{CPE_MAC_FORMAT} = '^[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}$';
Пример 4: MAC без разделителей + с двоеточиями
$conf{CPE_MAC_FORMAT} = '^[0-9a-fA-F]{12}$|^[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}$';
Пример 5: Универсальный паттерн для большинства случаев
$conf{CPE_MAC_FORMAT} = '^[0-9a-fA-F]{2}([:\\-\\.]?[0-9a-fA-F]{2}){5}$|^[0-9a-fA-F]{4}\\.[0-9a-fA-F]{4}\\.[0-9a-fA-F]{4}$|^[0-9a-fA-F]{12}$';
Пример 6: Использование префиксов MAC: и SN:
$conf{CPE_MAC_FORMAT} = 'MAC:^[0-9a-fA-F]{2}([:\\-\\.]?[0-9a-fA-F]{2}){5}$|SN:^HWTC[0-9A-F]{8}$|SN:^ZTEG[0-9A-F]{8}$';
Пример 7: Комбинированный с явным указанием типов
$conf{CPE_MAC_FORMAT} = 'MAC:^[0-9a-fA-F]{4}\\.[0-9a-fA-F]{4}\\.[0-9a-fA-F]{4}$|MAC:^[0-9a-fA-F]{12}$|SN:^[A-Z]{2,4}[0-9A-F]{6,12}$';
============================================================================
ПРАКТИЧЕСКИЕ ПРИМЕРЫ КОМБИНИРОВАННОГО ИСПОЛЬЗОВАНИЯ
============================================================================
Пример 1: Смешанная среда с оборудованием разных производителей
$conf{CPE_MAC_FORMAT} = 'MAC:^[0-9a-fA-F]{12}$|MAC:^[0-9a-fA-F]{4}\.[0-9a-fA-F]{4}\.[0-9a-fA-F]{4}$|SN:^HWTC[0-9A-F]{8}$|SN:^ZTEG[0-9A-F]{8}$';
Пример 2: Только MAC-адреса (различные форматы)
$conf{CPE_MAC_FORMAT} = 'MAC:^[0-9a-fA-F]{2}([:\-\.]?[0-9a-fA-F]{2}){5}$';
Пример 3: Только серийные номера
$conf{CPE_MAC_FORMAT} = 'SN:^[A-Z]{2,4}[0-9A-F]{6,12}$|SN:^[0-9A-F]{16}$';
Пример 4: Универсальный для большинства случаев
$conf{CPE_MAC_FORMAT} = 'MAC:^[0-9a-fA-F]{2}([:\-\.]?[0-9a-fA-F]{2}){5}$|MAC:^[0-9a-fA-F]{4}\.[0-9a-fA-F]{4}\.[0-9a-fA-F]{4}$|SN:^[A-Z]{2,4}[0-9A-F]{6,12}$|SN:^[0-9A-F]{16}$|SN:^[0-9A-F]{4}:[0-9A-F]{8}$';
Пример 5: EPON/GEPON среда с новыми вендорами
$conf{CPE_MAC_FORMAT} = 'MAC:^([0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}$|SN:^BD[0-9A-F]{10}$|SN:^CD[0-9A-F]{12}$|SN:^QT[0-9A-F]{10}$';
Пример 6: Полная конфигурация для крупного провайдера
$conf{CPE_MAC_FORMAT} = 'MAC:^([0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}$|MAC:^[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}$|SN:^HWTC[0-9A-F]{8}$|SN:^ZTEG[0-9A-F]{8}$|SN:^BD[0-9A-F]{10}$|SN:^CD[0-9A-F]{12}$|SN:^QT[0-9A-F]{10}$|SN:^DSAN[0-9A-F]{8}$|SN:^GCOM[0-9A-F]{8}$';
Пример 7: Конфигурация для конкретных прошивок
$conf{CPE_MAC_FORMAT} = 'MAC:^([0-9A-Fa-f]{2}[.]){2}[0-9A-Fa-f]{4}[.]([0-9A-Fa-f]{2}[.]){2}[0-9A-Fa-f]{2}$|SN:^BDCOM[0-9]{8}$|SN:^CDATA[0-9]{10}$|SN:^QTECH[0-9]{8}$';
Пример 8: Смешанная среда с Cisco и новыми вендорами
$conf{CPE_MAC_FORMAT} = 'MAC:^[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}$|SN:^FHTT[0-9A-F]{8}$|SN:^RAIS[0-9A-F]{8}$|SN:^FH[A-Z0-9]{12}$|SN:^RC[A-Z0-9]{10}$';
============================================================================
ВАЖНЫЕ ЗАМЕЧАНИЯ
============================================================================
1. В Perl необходимо экранировать обратные слеши (\) удваиванием (\\)
2. Символ | используется как разделитель между паттернами
3. Если CPE_MAC соответствует любому паттерну с префиксом MAC: - форматируется как MAC
4. Если CPE_MAC соответствует паттерну с префиксом SN: - остается без изменений
5. Паттерны без префиксов обрабатываются как MAC-адреса (обратная совместимость)
6. Тестируйте регулярные выражения перед использованием в продакшене
7. Учитывайте особенности форматов разных производителей
8. Регулярные выражения чувствительны к регистру, используйте [A-Fa-f] для hex
9. Двоеточия внутри регулярных выражений НЕ влияют на парсинг префиксов
Пример: MAC:^[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}$
Здесь только первое двоеточие после 'MAC' является разделителем префикса
10. Версии прошивок могут изменять форматы - всегда проверяйте актуальность
11. Для EPON/GEPON оборудования часто используются специфичные форматы
12. Серийные номера могут содержать как буквы, так и цифры
13. При обновлении прошивки оборудования может измениться формат идентификаторов
14. Рекомендуется группировать паттерны по вендорам для удобства сопровождения
============================================================================
РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ ДЛЯ СЕРИЙНЫХ НОМЕРОВ
============================================================================
С введением префиксов теперь можно безопасно использовать паттерны серийных номеров
в CPE_MAC_FORMAT с префиксом SN:
Они приведены для справки и понимания форматов серийных номеров
Если серийный номер соответствует любому паттерну из CPE_MAC_FORMAT,
он будет ошибочно обработан как MAC-адрес
Huawei серийные номера:
Формат HWTC + 8 шестнадцатеричных символов
Для использования в CPE_MAC_FORMAT: SN:^HWTC[0-9A-F]{8}$
^HWTC[0-9A-F]{8}$
Примеры: HWTC1D6A1B9D, HWTCABCD1234
Формат 10 цифр + 6 шестнадцатеричных символов
Для использования в CPE_MAC_FORMAT: SN:^[0-9]{10}[A-F0-9]{6}$
^[0-9]{10}[A-F0-9]{6}$
Примеры: 2102311ABC123456, 1234567890ABCDEF
ZTE серийные номера:
Формат ZTEG + 8 символов
Для использования в CPE_MAC_FORMAT: SN:^ZTEG[0-9A-F]{8}$
^ZTEG[0-9A-F]{8}$
Примеры: ZTEG12345678, ZTEGABCD1234
Формат ZTEGC + 7 символов
Для использования в CPE_MAC_FORMAT: SN:^ZTEGC[0-9A-F]{7}$
^ZTEGC[0-9A-F]{7}$
Примеры: ZTEGC1234567, ZTEGCABCDEF1
Nokia/Alcatel серийные номера:
Формат ALCL + 8 символов
Для использования в CPE_MAC_FORMAT: SN:^ALCL[0-9A-F]{8}$
^ALCL[0-9A-F]{8}$
Примеры: ALCL12345678, ALCLABCD1234
Формат ISAM + 8 символов
Для использования в CPE_MAC_FORMAT: SN:^ISAM[0-9A-F]{8}$
^ISAM[0-9A-F]{8}$
Примеры: ISAM12345678, ISAMABCD1234
Универсальные форматы серийных номеров:
Буквенный префиксы (2-4 буквы) + цифры/буквы
Для использования в CPE_MAC_FORMAT: SN:^[A-Z]{2,4}[0-9A-F]{6,12}$
^[A-Z]{2,4}[0-9A-F]{6,12}$
Примеры: AB123456, HWTC12345678, ZTEG87654321
Только цифры (8-16 символов) - длинные серийные номера
Для использования в CPE_MAC_FORMAT: SN:^[0-9]{8,16}$
^[0-9]{8,16}$
Примеры: 12345678, 1234567890123456
Смешанный формат: буквы + цифры + буквы
Для использования в CPE_MAC_FORMAT: SN:^[A-Z]{2,4}[0-9]{4,8}[A-Z0-9]{2,4}$
^[A-Z]{2,4}[0-9]{4,8}[A-Z0-9]{2,4}$
Примеры: HWTC1234AB, ZTE5678CD12
============================================================================
РЕКОМЕНДАЦИИ ПО НАСТРОЙКЕ CPE_MAC_FORMAT
============================================================================
С новой функциональностью префиксов MAC: и SN: рекомендуется:
1. ИСПОЛЬЗУЙТЕ префиксы для явного указания типа данных:
- MAC: для паттернов MAC-адресов
- SN: для паттернов серийных номеров
2. Группируйте паттерны по вендорам для удобства сопровождения
3. Тестируйте паттерны на реальных данных перед внедрением
4. Учитывайте версии прошивок оборудования
РЕКОМЕНДУЕМЫЕ паттерны для MAC-адресов:
- MAC:^([0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}$ (стандартный формат)
- MAC:^[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}$ (Cisco формат)
РЕКОМЕНДУЕМЫЕ паттерны для серийных номеров:
- SN:^[A-Z]{2,4}[0-9A-F]{8,12}$ (буквенный префикс + цифры)
- SN:^[A-Z0-9]{8,16}$ (универсальный алфавитно-цифровой)
============================================================================
ПРИМЕРЫ РЕКОМЕНДУЕМОЙ КОНФИГУРАЦИИ С ПРЕФИКСАМИ
============================================================================
Вариант 1: Только MAC-адреса (стандартные форматы)
$conf{CPE_MAC_FORMAT} = 'MAC:^([0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}$|MAC:^[0-9A-Fa-f]{4}\\.[0-9A-Fa-f]{4}\\.[0-9A-Fa-f]{4}$';
Вариант 2: Только серийные номера (универсальные паттерны)
$conf{CPE_MAC_FORMAT} = 'SN:^[A-Z]{2,4}[0-9A-F]{8,12}$|SN:^[A-Z0-9]{8,16}$';
Вариант 3: Смешанная конфигурация (MAC + серийные номера)
$conf{CPE_MAC_FORMAT} = 'MAC:^([0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}$|MAC:^[0-9A-Fa-f]{4}\\.[0-9A-Fa-f]{4}\\.[0-9A-Fa-f]{4}$|SN:^[A-Z]{2,4}[0-9A-F]{8,12}$|SN:^[A-Z0-9]{8,16}$';
Вариант 4: Конфигурация для конкретных вендоров
$conf{CPE_MAC_FORMAT} = 'MAC:^([0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}$|SN:^HW[A-Z0-9]{12}$|SN:^ZTE[A-Z0-9]{8,12}$|SN:^BD[0-9A-F]{10}$';
============================================================================
ДОПОЛНИТЕЛЬНЫЕ ВЕНДОРЫ
============================================================================
============================================================================
ТЕСТИРОВАНИЕ ПАТТЕРНОВ
============================================================================
Примеры данных для тестирования:
MAC-адреса (должны соответствовать паттернам MAC:):
- 00:11:22:33:44:55
- 00-11-22-33-44-55
- AA:BB:CC:DD:EE:FF
- 0011.2233.4455 (Cisco формат)
- AABB.CCDD.EEFF
Серийные номера (должны соответствовать паттернам SN:):
- BD1234567890 (BDCOM)
- BDCOM12345678 (BDCOM старый формат)
- BDAA12345678BB (BDCOM новый формат)
- CD123456789ABC (C-Data)
- CDATA1234567890 (C-Data старый формат)
- QT1234567890 (Qtech)
- QTECH12345678 (Qtech старый формат)
- QTABC123456789 (Qtech новый формат)
- DSAN12345678 (Dasan)
- DS123456789012 (Dasan)
- GCOM12345678 (G-Com)
- GC1234567890 (G-Com)
- FHTT12345678 (Fiberhome)
- FH123XYZ789ABC (Fiberhome новый формат)
- RAIS12345678 (Raisecom)
- RCABC1234567 (Raisecom новый формат)
Примеры полных конфигураций для тестирования:
MAC:^([0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}$|SN:^BD[0-9A-F]{10}$
MAC:^[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}$|SN:^QTECH[0-9]{8}$