private boolean mResumed; // Control if activity is resumed\r
\r
public static String DIALOG_UNTRUSTED_CERT = "DIALOG_UNTRUSTED_CERT";\r
+ \r
+ private boolean mTryEmptyAuthorization = false;\r
\r
\r
/**\r
/// update status icon and text\r
if (mServerIsValid) {\r
hideRefreshButton();\r
+ // Try to create an account with user and pass "", to know if it is a regular server\r
+ tryEmptyAuthorization();\r
} else {\r
showRefreshButton();\r
}\r
mDiscoveredVersion = operation.getDiscoveredVersion();\r
mHostBaseUrl = normalizeUrl(mHostUrlInput.getText().toString());\r
\r
- /// allow or not the user try to access the server\r
- mOkButton.setEnabled(mServerIsValid);\r
+// /// allow or not the user try to access the server\r
+// mOkButton.setEnabled(mServerIsValid);\r
\r
} // else nothing ; only the last check operation is considered; \r
// multiple can be triggered if the user amends a URL before a previous check can be triggered\r
}\r
\r
\r
+ /**\r
+ * Try to access with user/pass ""/"", to know if it is a regular server\r
+ */\r
+ private void tryEmptyAuthorization() {\r
+ mTryEmptyAuthorization = true;\r
+ \r
+ Log_OC.d(TAG, "Trying empty authorization to detect authentication method");\r
+ \r
+ /// be gentle with the user\r
+ showDialog(DIALOG_LOGIN_PROGRESS);\r
+ \r
+ /// get the path to the root folder through WebDAV from the version server\r
+ String webdav_path = AccountUtils.getWebdavPath(mDiscoveredVersion, mAuthTokenType);\r
+\r
+ /// get basic credentials entered by user\r
+ String username = "";\r
+ String password = "";\r
+\r
+ /// test credentials \r
+ mAuthCheckOperation = new ExistenceCheckRemoteOperation("", this, false);\r
+ OwnCloudClient client = OwnCloudClientFactory.createOwnCloudClient(Uri.parse(mHostBaseUrl + webdav_path), this, true);\r
+ client.setBasicCredentials(username, password);\r
+ mOperationThread = mAuthCheckOperation.execute(client, this, mHandler);\r
+ }\r
+ \r
+ \r
private String normalizeUrl(String url) {\r
if (url != null && url.length() > 0) {\r
url = url.trim();\r
} catch (IllegalArgumentException e) {\r
// NOTHING TO DO ; can't find out what situation that leads to the exception in this code, but user logs signal that it happens\r
}\r
-\r
+ \r
if (result.isSuccess()) {\r
- Log_OC.d(TAG, "Successful access - time to save the account");\r
+ \r
+ if (mTryEmptyAuthorization) {\r
+ //allow or not the user try to access the server\r
+ mOkButton.setEnabled(mServerIsValid);\r
+ mTryEmptyAuthorization = false;\r
+ \r
+ } else {\r
+ Log_OC.d(TAG, "Successful access - time to save the account");\r
\r
- boolean success = false;\r
- if (mAction == ACTION_CREATE) {\r
- success = createAccount();\r
+ boolean success = false;\r
+ if (mAction == ACTION_CREATE) {\r
+ success = createAccount();\r
\r
- } else {\r
- updateToken();\r
- success = true;\r
- }\r
+ } else {\r
+ updateToken();\r
+ success = true;\r
+ }\r
\r
- if (success) {\r
- finish();\r
+ if (success) {\r
+ finish();\r
+ }\r
}\r
\r
} else if (result.isServerFail() || result.isException()) {\r