[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdelibs/kdecore/network
From:       Waldo Bastian <bastian () kde ! org>
Date:       2005-03-03 12:27:12
Message-ID: 20050303122712.3F2A91751E () office ! kde ! org
[Download RAW message or body]

CVS commit by waba: 

Make IDN support configurable on a per TLD basis.


  M +23 -4     kresolver.cpp   1.44
  M +2 -0      kresolver.h   1.24


--- kdelibs/kdecore/network/kresolver.cpp  #1.43:1.44
@@ -284,4 +284,7 @@ void KResolverResults::virtual_hook( int
 // class KResolver
 
+QStringList *KResolver::idnDomains = 0;
+
+
 // default constructor
 KResolver::KResolver(QObject *parent, const char *name)
@@ -868,9 +871,17 @@ static QCString ToASCII(const QString& l
 static QString ToUnicode(const QString& label);
 
+static QStringList *KResolver_initIdnDomains()
+{
+  const char *kde_use_idn = getenv("KDE_USE_IDN");
+  if (!kde_use_idn)
+     kde_use_idn = "at:ch:cn:de:dk:kr:jp:li:no:se:tw";
+  return new QStringList(QStringList::split(':', QString::fromLatin1(kde_use_idn).lower()));
+}
+
 // implement the ToAscii function, as described by IDN documents
 QCString KResolver::domainToAscii(const QString& unicodeDomain)
 {
-  if (getenv("KDE_USE_IDN") == 0L)
-    return unicodeDomain.latin1();
+  if (!idnDomains)
+    idnDomains = KResolver_initIdnDomains();
 
   QCString retval;
@@ -882,4 +893,8 @@ QCString KResolver::domainToAscii(const 
   QStringList input = splitLabels(unicodeDomain);
 
+  // Do we allow IDN names for this TLD?
+  if (input.count() && !idnDomains->contains(input[input.count()-1].lower()))
+    return unicodeDomain.latin1(); // No IDN allowed for this TLD
+
   // 3) decide whether to enforce the STD3 rules for chars < 0x7F
   // we don't enforce
@@ -913,6 +928,6 @@ QString KResolver::domainToUnicode(const
   if (asciiDomain.isEmpty())
     return asciiDomain;
-  if (getenv("KDE_USE_IDN") == 0L)
-    return asciiDomain;;
+  if (!idnDomains)
+    idnDomains = KResolver_initIdnDomains();
 
   QString retval;
@@ -926,4 +941,8 @@ QString KResolver::domainToUnicode(const
   QStringList input = splitLabels(asciiDomain);
 
+  // Do we allow IDN names for this TLD?
+  if (input.count() && !idnDomains->contains(input[input.count()-1].lower()))
+    return asciiDomain; // No TLDs allowed
+
   // 3) decide whether to enforce the STD3 rules for chars < 0x7F
   // we don't enforce

--- kdelibs/kdecore/network/kresolver.h  #1.23:1.24
@@ -927,4 +927,6 @@ private:
   friend class KResolverResults;
   friend class ::KNetwork::Internal::KResolverManager;
+  
+  static QStringList *idnDomains;
 };
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic