1/*2Maddy Mail Server - Composable all-in-one email server.3Copyright © 2019-2020 Max Mazurov <fox.cpp@disroot.org>, Maddy Mail Server contributors45This program is free software: you can redistribute it and/or modify6it under the terms of the GNU General Public License as published by7the Free Software Foundation, either version 3 of the License, or8(at your option) any later version.910This program is distributed in the hope that it will be useful,11but WITHOUT ANY WARRANTY; without even the implied warranty of12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the13GNU General Public License for more details.1415You should have received a copy of the GNU General Public License16along with this program. If not, see <https://www.gnu.org/licenses/>.17*/1819package dns2021import (22 "golang.org/x/net/idna"23 "golang.org/x/text/unicode/norm"24)2526// SelectIDNA is a convenience function for encoding to/from Punycode.27//28// If ulabel is true, it returns U-label encoded domain in the Unicode NFC29// form.30// If ulabel is false, it returns A-label encoded domain.31func SelectIDNA(ulabel bool, domain string) (string, error) {32 if ulabel {33 uDomain, err := idna.ToUnicode(domain)34 return norm.NFC.String(uDomain), err35 }36 return idna.ToASCII(domain)37}