(entry *ldap.Entry)
| 826 | } |
| 827 | |
| 828 | func getNodeName(entry *ldap.Entry) string { |
| 829 | if entry.DN == "" { |
| 830 | if Emojis { |
| 831 | return ldaputils.EmojiMap["root"] + "RootDSE" |
| 832 | } |
| 833 | return "RootDSE" |
| 834 | } |
| 835 | |
| 836 | dn := getDN(entry) |
| 837 | dnParts := strings.Split(dn, ",") |
| 838 | |
| 839 | // Build emoji prefix from objectClass values. |
| 840 | var classEmojisBuf bytes.Buffer |
| 841 | isDomain := false |
| 842 | for _, objectClass := range entry.GetAttributeValues("objectClass") { |
| 843 | if objectClass == "domain" || objectClass == "dcObject" { |
| 844 | isDomain = true |
| 845 | classEmojisBuf.WriteString(ldaputils.EmojiMap["domain"]) |
| 846 | } else { |
| 847 | classEmojisBuf.WriteString(ldaputils.EmojiMap[objectClass]) |
| 848 | } |
| 849 | } |
| 850 | emojisPrefix := classEmojisBuf.String() |
| 851 | |
| 852 | // Fall back to DN-based emoji when objectClass wasn't fetched. |
| 853 | if emojisPrefix == "" { |
| 854 | switch { |
| 855 | case strings.HasPrefix(dn, "OU="): |
| 856 | emojisPrefix = ldaputils.EmojiMap["organizationalUnit"] |
| 857 | case strings.HasPrefix(dn, "DC="): |
| 858 | emojisPrefix = ldaputils.EmojiMap["domain"] |
| 859 | default: |
| 860 | emojisPrefix = ldaputils.EmojiMap["container"] |
| 861 | } |
| 862 | } |
| 863 | |
| 864 | // Also detect domain root from DN structure when objectClass wasn't fetched. |
| 865 | if !isDomain { |
| 866 | isDomain = true |
| 867 | for _, part := range dnParts { |
| 868 | if !strings.HasPrefix(part, "DC=") { |
| 869 | isDomain = false |
| 870 | break |
| 871 | } |
| 872 | } |
| 873 | } |
| 874 | |
| 875 | // Raw first component: used for the non-emoji return path and NoName fallback. |
| 876 | firstDNPart := dnParts[0] |
| 877 | if strings.HasPrefix(dnParts[0], "DC=") { |
| 878 | firstDNPart = dn |
| 879 | } |
| 880 | |
| 881 | resolvedName := entryMarker.ReplaceAllString(getName(entry), "") |
| 882 | |
| 883 | // Priority: NoName(getName returned nothing) > domain name > resolved name. |
| 884 | var finalName string |
| 885 | switch { |
no test coverage detected