feat(11-01): add 21 ClassFreqConfigs entries and include LDAP/Kerberos/Syslog in AllClasses()

- Add 21 new ClassFreqConfigs entries covering mDNS/SSDP/SNMP/QUIC/IMAP/POP3/SMTPSub/RDP/Telnet/VNC/FTP/SMB/TFTP/MySQL/PostgreSQL/Redis/MongoDB/SIP/LDAP/Kerberos/Syslog
- Update AllClasses() to return 35 entries (add LDAP/Kerberos/Syslog in Infrastructure section)
- Remove outdated Phase 11 exclusion comment from AllClasses() doc comment
This commit is contained in:
2026-03-27 16:30:02 +01:00
parent 683470a7b1
commit 1556ce83e9
2 changed files with 157 additions and 4 deletions
+2 -4
View File
@@ -54,21 +54,19 @@ const (
// --- Web extension (PROTO-07) ---
ClassQUIC TrafficClass = "QUIC"
// --- Infrastructure extension (PROTO-08, D-01: no ClassFreqConfigs until Phase 11) ---
// --- Infrastructure extension (PROTO-08) ---
ClassLDAP TrafficClass = "LDAP"
ClassKerberos TrafficClass = "Kerberos"
ClassSyslog TrafficClass = "Syslog"
)
// AllClasses returns all known traffic classes in display order.
// Excludes ClassLDAP, ClassKerberos, and ClassSyslog — these have constants and rules
// but no ClassFreqConfigs entries until Phase 11, so they must not appear here
// (TestAllClassesHaveConfig in synth/config_test.go enforces the invariant).
func AllClasses() []TrafficClass {
return []TrafficClass{
// Infrastructure
ClassICMP, ClassDNS, ClassNTP, ClassDHCP,
ClassMDNS, ClassSSDP, ClassSNMP,
ClassLDAP, ClassKerberos, ClassSyslog,
// Web
ClassHTTPS, ClassHTTP, ClassQUIC,
// Mail
+155
View File
@@ -164,6 +164,58 @@ var ClassFreqConfigs = map[classify.TrafficClass]FreqConfig{
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 214.0, SampleRate),
Pan: 0.2,
Group: "Mail",
},
// --- Infrastructure additions (Triangle, 93-118 Hz) ---
classify.ClassMDNS: {
BaseHz: 93.0,
WaveformType: WaveformTriangle,
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 93.0, SampleRate),
Pan: 0.3,
Group: "Infrastructure",
},
classify.ClassSSDP: {
BaseHz: 105.0,
WaveformType: WaveformTriangle,
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 105.0, SampleRate),
Pan: -0.2,
Group: "Infrastructure",
},
classify.ClassSNMP: {
BaseHz: 118.0,
WaveformType: WaveformTriangle,
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 118.0, SampleRate),
Pan: 0.2,
Group: "Infrastructure",
},
// --- Web addition (Sawtooth, 190 Hz) ---
classify.ClassQUIC: {
BaseHz: 190.0,
WaveformType: WaveformSawtooth,
Harmonics: WaveformPresetHarmonics(WaveformSawtooth, 190.0, SampleRate),
Pan: -0.2,
Group: "Web",
},
// --- Mail additions (Triangle, 241-305 Hz) ---
classify.ClassIMAP: {
BaseHz: 241.0,
WaveformType: WaveformTriangle,
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 241.0, SampleRate),
Pan: 0.3,
Group: "Mail",
},
classify.ClassPOP3: {
BaseHz: 271.0,
WaveformType: WaveformTriangle,
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 271.0, SampleRate),
Pan: 0.4,
Group: "Mail",
},
classify.ClassSMTPSub: {
BaseHz: 305.0,
WaveformType: WaveformTriangle,
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 305.0, SampleRate),
Pan: 0.5,
Group: "Mail",
},
// --- Remote Access (Square, 343 Hz) ---
classify.ClassSSH: {
@@ -173,6 +225,50 @@ var ClassFreqConfigs = map[classify.TrafficClass]FreqConfig{
Pan: -0.7,
Group: "Remote Access",
},
// --- Remote Access additions (Square, 385-485 Hz) ---
classify.ClassRDP: {
BaseHz: 385.0,
WaveformType: WaveformSquare,
Harmonics: WaveformPresetHarmonics(WaveformSquare, 385.0, SampleRate),
Pan: -0.6,
Group: "Remote Access",
},
classify.ClassTelnet: {
BaseHz: 432.0,
WaveformType: WaveformSquare,
Harmonics: WaveformPresetHarmonics(WaveformSquare, 432.0, SampleRate),
Pan: -0.5,
Group: "Remote Access",
},
classify.ClassVNC: {
BaseHz: 485.0,
WaveformType: WaveformSquare,
Harmonics: WaveformPresetHarmonics(WaveformSquare, 485.0, SampleRate),
Pan: -0.4,
Group: "Remote Access",
},
// --- File Transfer additions (Square, 545-687 Hz) ---
classify.ClassFTP: {
BaseHz: 545.0,
WaveformType: WaveformSquare,
Harmonics: WaveformPresetHarmonics(WaveformSquare, 545.0, SampleRate),
Pan: 0.5,
Group: "File Transfer",
},
classify.ClassSMB: {
BaseHz: 612.0,
WaveformType: WaveformSquare,
Harmonics: WaveformPresetHarmonics(WaveformSquare, 612.0, SampleRate),
Pan: 0.6,
Group: "File Transfer",
},
classify.ClassTFTP: {
BaseHz: 687.0,
WaveformType: WaveformSquare,
Harmonics: WaveformPresetHarmonics(WaveformSquare, 687.0, SampleRate),
Pan: 0.7,
Group: "File Transfer",
},
// --- Unknown (Custom harmonics, 771-1375 Hz) ---
// D-05/D-06: dissonant harmonic character {1,1.0},{2,0.8},{3,0.4} retained for all Unknown entries.
// WaveformType is zero value (WaveformCustom) so bank.go uses the stored Harmonics directly.
@@ -212,4 +308,63 @@ var ClassFreqConfigs = map[classify.TrafficClass]FreqConfig{
Pan: 0.5,
Group: "Unknown",
},
// --- Database additions (Sawtooth, 1543-2182 Hz) ---
classify.ClassMySQL: {
BaseHz: 1543.0,
WaveformType: WaveformSawtooth,
Harmonics: WaveformPresetHarmonics(WaveformSawtooth, 1543.0, SampleRate),
Pan: -0.4,
Group: "Database",
},
classify.ClassPostgreSQL: {
BaseHz: 1732.0,
WaveformType: WaveformSawtooth,
Harmonics: WaveformPresetHarmonics(WaveformSawtooth, 1732.0, SampleRate),
Pan: -0.2,
Group: "Database",
},
classify.ClassRedis: {
BaseHz: 1944.0,
WaveformType: WaveformSawtooth,
Harmonics: WaveformPresetHarmonics(WaveformSawtooth, 1944.0, SampleRate),
Pan: 0.2,
Group: "Database",
},
classify.ClassMongoDB: {
BaseHz: 2182.0,
WaveformType: WaveformSawtooth,
Harmonics: WaveformPresetHarmonics(WaveformSawtooth, 2182.0, SampleRate),
Pan: 0.4,
Group: "Database",
},
// --- VoIP (Sine, 2449 Hz) ---
classify.ClassSIP: {
BaseHz: 2449.0,
WaveformType: WaveformSine,
Harmonics: WaveformPresetHarmonics(WaveformSine, 2449.0, SampleRate),
Pan: 0.0,
Group: "VoIP",
},
// --- Infrastructure auto-assigned (Triangle, 2950-3250 Hz) per D-02 ---
classify.ClassLDAP: {
BaseHz: 2950.0,
WaveformType: WaveformTriangle,
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 2950.0, SampleRate),
Pan: -0.2,
Group: "Infrastructure",
},
classify.ClassKerberos: {
BaseHz: 3250.0,
WaveformType: WaveformTriangle,
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 3250.0, SampleRate),
Pan: 0.0,
Group: "Infrastructure",
},
classify.ClassSyslog: {
BaseHz: 3050.0,
WaveformType: WaveformTriangle,
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 3050.0, SampleRate),
Pan: 0.2,
Group: "Infrastructure",
},
}