Browse Source

Filter dots at the beginning of the url

masensio 10 năm trước cách đây
mục cha
commit
870b8c0726

+ 1 - 1
owncloud-android-library

@@ -1 +1 @@
-Subproject commit 4692c4aadeba1d741b2b164af480c929ad4c17e9
+Subproject commit 9e761387a0b406402684571f28c36c2d6d2b6301

+ 2 - 3
src/com/owncloud/android/authentication/AuthenticatorActivity.java

@@ -776,9 +776,8 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity
 
         if (uri.length() != 0) {
             // Handle internationalized domain names
-            if (!uri.startsWith(".")) {
-                uri = DisplayUtils.convertIdn(uri, true);
-            }
+            uri = DisplayUtils.convertIdn(uri, true);
+
             mServerStatusText = R.string.auth_testing_connection;
             mServerStatusIcon = R.drawable.progress_small;
             showServerStatus();

+ 13 - 6
src/com/owncloud/android/utils/DisplayUtils.java

@@ -257,11 +257,18 @@ public class DisplayUtils {
      */
     @TargetApi(Build.VERSION_CODES.GINGERBREAD)
     public static String convertIdn(String url, boolean toASCII) {
-        
+
+        String urlNoDots = url;
+        String dots="";
+        while (urlNoDots.startsWith(".")) {
+            urlNoDots = url.substring(1);
+            dots = dots + ".";
+        }
+
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
             // Find host name after '//' or '@'
             int hostStart = 0;
-            if  (url.indexOf("//") != -1) {
+            if  (urlNoDots.indexOf("//") != -1) {
                 hostStart = url.indexOf("//") + "//".length();
             } else if (url.indexOf("@") != -1) {
                 hostStart = url.indexOf("@") + "@".length();
@@ -269,14 +276,14 @@ public class DisplayUtils {
 
             int hostEnd = url.substring(hostStart).indexOf("/");
             // Handle URL which doesn't have a path (path is implicitly '/')
-            hostEnd = (hostEnd == -1 ? url.length() : hostStart + hostEnd);
+            hostEnd = (hostEnd == -1 ? urlNoDots.length() : hostStart + hostEnd);
 
-            String host = url.substring(hostStart, hostEnd);
+            String host = urlNoDots.substring(hostStart, hostEnd);
             host = (toASCII ? IDN.toASCII(host) : IDN.toUnicode(host));
 
-            return url.substring(0, hostStart) + host + url.substring(hostEnd);
+            return dots + urlNoDots.substring(0, hostStart) + host + urlNoDots.substring(hostEnd);
         } else {
-            return url;
+            return dots + url;
         }
     }