Compare commits
19 Commits
v1.09e-r7
...
bug-2378-p
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e3ae3233fe | ||
|
|
bc464b0eba | ||
|
|
9b3d7250ec | ||
|
|
b04f7f6c81 | ||
|
|
41151a184b | ||
|
|
9d9b24cb98 | ||
|
|
087e3f5931 | ||
|
|
100ed6e58e | ||
|
|
a5bce53a12 | ||
|
|
c9be806b01 | ||
|
|
c16eeff130 | ||
|
|
03ea073426 | ||
|
|
cde5d31845 | ||
|
|
85709e4058 | ||
|
|
3f6e51b126 | ||
|
|
c0345d1309 | ||
|
|
746dcd4c6b | ||
|
|
37a6da5a3b | ||
|
|
1efe2e16a5 |
53
.github/ISSUE_TEMPLATE/bug_report.yaml
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
name: Bug Report
|
||||
description: Report a bug.
|
||||
title: "[BUG] "
|
||||
labels: bug
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Please check out the [FAQ section](https://github.com/PhilippC/keepass2android/blob/master/docs/Documentation.md#faq) and [search for open issues](https://github.com/PhilippC/keepass2android/issues?q=is%3Aopen+is%3Aissue+label%3Abug) first.
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Checks
|
||||
options:
|
||||
- label: I have read the FAQ section, searched the open issues, and still think this is a new bug.
|
||||
required: true
|
||||
- type: textarea
|
||||
id: bug
|
||||
attributes:
|
||||
label: "Describe the bug you encountered:"
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: expected
|
||||
attributes:
|
||||
label: "Describe what you expected to happen:"
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Please follow these steps to find your app version:
|
||||
1. Click the **⁝** icon in the top right corner
|
||||
2. Select **Settings**
|
||||
3. Click **About**
|
||||
4. Find the "Version" information and provide it below
|
||||
- type: input
|
||||
id: version
|
||||
attributes:
|
||||
label: "What version of Keepass2Android are you using?"
|
||||
validations:
|
||||
required: true
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Please follow these steps to find your Android version:
|
||||
1. Open your device's **Settings** app
|
||||
2. Scroll down and select **About phone** or **About tablet**
|
||||
3. Find the **Android version** section and provide it below
|
||||
- type: input
|
||||
id: os
|
||||
attributes:
|
||||
label: "Which version of Android are you on?"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
8
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
name: Feature Request
|
||||
about: Suggest an idea for this project.
|
||||
title: '[FEAT] '
|
||||
labels: enhancement
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
16
.github/ISSUE_TEMPLATE/question.md
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
name: Question
|
||||
about: Ask a question about 'Keepass2Android'.
|
||||
title: '[QUESTION] '
|
||||
labels: question
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**What version of Keepass2Android are you using?**
|
||||
Please follow these steps to find your app version:
|
||||
1. Click the **⁝** icon in the top right corner
|
||||
2. Select **Settings**
|
||||
3. Click **About**
|
||||
4. Find the "Version" information and provide it here:
|
||||
|
||||
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 84 KiB After Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 107 KiB After Width: | Height: | Size: 87 KiB |
@@ -18,6 +18,8 @@ Keepass2Android does not collect personal identifiable information. For debuggin
|
||||
* **Internet** (Keepass2Android regular only): Required to allow the user to read/store password databases or key files on remote locations, e.g. Dropbox or via WebDav.
|
||||
* **Contacts/Accounts** (Keepass2Android regular only): Required by the Google Drive SDK. If you want to access files on Google Drive, you are prompted to select one of the Google Accounts on your phone to use. The permission is required to query the list of Google accounts on the device. Keepass2Android does not access your personal contacts.
|
||||
* **Storage**: Required to allow the user to read/store password databases or key files on the device locally.
|
||||
* **Fingerprint**: Required if you want to use fingerprint unlock.
|
||||
* **Fingerprint/Biometric**: Required if you want to use biometric unlock.
|
||||
* **Vibrate**: Required by the built-in keyboard (vibrate on key press)
|
||||
* **Camera**: Required for scanning OTP QR Codes
|
||||
* **Foreground service**: Required to keep the app alive for QuickUnlock (so you don't need to enter your full master password repeatedly)
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 93 KiB After Width: | Height: | Size: 69 KiB |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 2.9 KiB |
@@ -3,14 +3,15 @@ using Android.Content;
|
||||
|
||||
namespace keepass2android.Io
|
||||
{
|
||||
public partial class PCloudFileStorage: JavaFileStorage
|
||||
public class PCloudFileStorage: JavaFileStorage
|
||||
{
|
||||
private const string ClientId = "CkRWTQXY6Lm";
|
||||
|
||||
public PCloudFileStorage(Context ctx, IKp2aApp app) :
|
||||
base(new Keepass2android.Javafilestorage.PCloudFileStorage(ctx, ClientId), app)
|
||||
base(new Keepass2android.Javafilestorage.PCloudFileStorage(ctx, ClientId, "pcloud", ""), app)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public override bool UserShouldBackup
|
||||
@@ -18,6 +19,23 @@ namespace keepass2android.Io
|
||||
get { return false; }
|
||||
}
|
||||
}
|
||||
public class PCloudFileStorageAll : JavaFileStorage
|
||||
{
|
||||
private const string ClientId = "FLm22de7bdS";
|
||||
|
||||
public PCloudFileStorageAll(Context ctx, IKp2aApp app) :
|
||||
base(new Keepass2android.Javafilestorage.PCloudFileStorage(ctx, ClientId, "pcloudall", "PCLOUDALL_"), app)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
public override bool UserShouldBackup
|
||||
{
|
||||
get { return false; }
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
BIN
src/PCloudBindings/Jars/pcloud-sdk-android-1.8.1.aar
Normal file
BIN
src/PCloudBindings/Jars/pcloud-sdk-java-core-1.8.1.jar
Normal file
@@ -56,7 +56,7 @@
|
||||
<ItemGroup>
|
||||
<None Include="Jars\AboutJars.txt" />
|
||||
<None Include="Additions\AboutAdditions.txt" />
|
||||
<LibraryProjectZip Include="Jars\pcloud-sdk-android-1.2.0.aar" />
|
||||
<LibraryProjectZip Include="Jars\pcloud-sdk-android-1.8.1.aar" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<TransformFile Include="Transforms\Metadata.xml" />
|
||||
@@ -72,6 +72,6 @@
|
||||
</Target>
|
||||
-->
|
||||
<ItemGroup>
|
||||
<EmbeddedReferenceJar Include="Jars\pcloud-sdk-java-core-1.2.0.jar" />
|
||||
<EmbeddedReferenceJar Include="Jars\pcloud-sdk-java-core-1.8.1.jar" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
||||
@@ -47,8 +47,8 @@ dependencies {
|
||||
implementation('com.onedrive.sdk:onedrive-sdk-android:1.2.0') {
|
||||
transitive = false
|
||||
}
|
||||
implementation 'com.pcloud.sdk:java-core:1.2.0'
|
||||
implementation 'com.pcloud.sdk:android:1.2.0'
|
||||
implementation 'com.pcloud.sdk:java-core:1.8.1'
|
||||
implementation 'com.pcloud.sdk:android:1.8.1'
|
||||
implementation 'com.google.code.gson:gson:2.8.6'
|
||||
implementation 'com.microsoft.services.msa:msa-auth:0.8.6'
|
||||
implementation 'com.microsoft.aad:adal:1.14.0'
|
||||
|
||||
@@ -22,6 +22,7 @@ import com.pcloud.sdk.ApiError;
|
||||
import com.pcloud.sdk.Authenticators;
|
||||
import com.pcloud.sdk.AuthorizationActivity;
|
||||
import com.pcloud.sdk.AuthorizationData;
|
||||
import com.pcloud.sdk.AuthorizationRequest;
|
||||
import com.pcloud.sdk.AuthorizationResult;
|
||||
import com.pcloud.sdk.Call;
|
||||
import com.pcloud.sdk.DataSource;
|
||||
@@ -47,11 +48,19 @@ public class PCloudFileStorage extends JavaFileStorageBase
|
||||
|
||||
private ApiClient apiClient;
|
||||
private String clientId;
|
||||
private String protocolId;
|
||||
|
||||
public PCloudFileStorage(Context ctx, String clientId) {
|
||||
///prefix for SHARED_PREF keys so we can distinguish between different instances
|
||||
private String sharedPrefPrefix;
|
||||
|
||||
public PCloudFileStorage(Context ctx, String clientId, String protocolId, String sharedPrefPrefix) {
|
||||
this.ctx = ctx;
|
||||
this.clientId = clientId;
|
||||
this.protocolId = protocolId;
|
||||
this.sharedPrefPrefix = sharedPrefPrefix;
|
||||
|
||||
this.apiClient = createApiClientFromSharedPrefs();
|
||||
android.util.Log.d("KP2A", "Init pcloud with protocol " + protocolId + ", prefix=" + sharedPrefPrefix + ", clientId=" + clientId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -86,7 +95,8 @@ public class PCloudFileStorage extends JavaFileStorageBase
|
||||
|
||||
@Override
|
||||
public String getProtocolId() {
|
||||
return "pcloud";
|
||||
|
||||
return protocolId;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -228,11 +238,17 @@ public class PCloudFileStorage extends JavaFileStorageBase
|
||||
finishActivityWithSuccess(activity);
|
||||
} else if (!activity.getState().getBoolean("hasStartedAuth", false)) {
|
||||
Activity castedActivity = (Activity)activity;
|
||||
Intent authIntent = AuthorizationActivity.createIntent(castedActivity, this.clientId);
|
||||
AuthorizationRequest req = AuthorizationRequest.create()
|
||||
.setClientId(this.clientId)
|
||||
.setType(AuthorizationRequest.Type.TOKEN)
|
||||
.setForceAccessApproval(true)
|
||||
.build();
|
||||
Intent authIntent = AuthorizationActivity.createIntent(castedActivity, req);
|
||||
castedActivity.startActivityForResult(authIntent, PCLOUD_AUTHORIZATION_REQUEST_CODE);
|
||||
activity.getState().putBoolean("hasStartedAuth", true);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -273,7 +289,7 @@ public class PCloudFileStorage extends JavaFileStorageBase
|
||||
}
|
||||
|
||||
private ApiClient createApiClientFromSharedPrefs() {
|
||||
SharedPreferences prefs = this.ctx.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);
|
||||
SharedPreferences prefs = this.ctx.getSharedPreferences(sharedPrefPrefix + SHARED_PREF_NAME, Context.MODE_PRIVATE);
|
||||
String authToken = prefs.getString(SHARED_PREF_AUTH_TOKEN, null);
|
||||
String apiHost = prefs.getString(SHARED_PREF_API_HOST, null);
|
||||
return this.createApiClient(authToken, apiHost);
|
||||
|
||||
@@ -400,12 +400,16 @@ public class SftpStorage extends JavaFileStorageBase {
|
||||
ci.password = decode(userPwd.substring(userPwd.indexOf(":")+1));
|
||||
ci.host = ci.host.substring(ci.host.indexOf('@') + 1);
|
||||
ci.port = DEFAULT_SFTP_PORT;
|
||||
int portSeparatorIndex = ci.host.indexOf(":");
|
||||
int portSeparatorIndex = ci.host.lastIndexOf(":");
|
||||
if (portSeparatorIndex >= 0)
|
||||
{
|
||||
ci.port = Integer.parseInt(ci.host.substring(portSeparatorIndex+1));
|
||||
ci.host = ci.host.substring(0, portSeparatorIndex);
|
||||
}
|
||||
// Encode/decode required to support IPv6 (colons break host:port parse logic)
|
||||
// See Bug #2350
|
||||
ci.host = decode(ci.host);
|
||||
|
||||
ci.localPath = extractSessionPath(filename);
|
||||
return ci;
|
||||
}
|
||||
@@ -476,6 +480,10 @@ public class SftpStorage extends JavaFileStorageBase {
|
||||
|
||||
public String buildFullPath( String host, int port, String localPath, String username, String password) throws UnsupportedEncodingException
|
||||
{
|
||||
// Encode/decode required to support IPv6 (colons break host:port parse logic)
|
||||
// See Bug #2350
|
||||
host = encode(host);
|
||||
|
||||
if (port != DEFAULT_SFTP_PORT)
|
||||
host += ":"+String.valueOf(port);
|
||||
return getProtocolPrefix()+encode(username)+":"+encode(password)+"@"+host+localPath;
|
||||
|
||||
|
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 7.2 KiB |
|
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 511 B After Width: | Height: | Size: 391 B |
|
Before Width: | Height: | Size: 760 B After Width: | Height: | Size: 634 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 913 B |
|
Before Width: | Height: | Size: 730 B After Width: | Height: | Size: 434 B |
|
Before Width: | Height: | Size: 940 B After Width: | Height: | Size: 540 B |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 461 B After Width: | Height: | Size: 277 B |
|
Before Width: | Height: | Size: 332 B After Width: | Height: | Size: 192 B |
|
Before Width: | Height: | Size: 498 B After Width: | Height: | Size: 326 B |
|
Before Width: | Height: | Size: 811 B After Width: | Height: | Size: 659 B |
|
Before Width: | Height: | Size: 715 B After Width: | Height: | Size: 442 B |
|
Before Width: | Height: | Size: 1001 B After Width: | Height: | Size: 577 B |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 892 B |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 745 B After Width: | Height: | Size: 451 B |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 614 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 903 B |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 833 B After Width: | Height: | Size: 432 B |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 226 B After Width: | Height: | Size: 166 B |
|
Before Width: | Height: | Size: 807 B After Width: | Height: | Size: 507 B |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 690 B |
|
Before Width: | Height: | Size: 681 B After Width: | Height: | Size: 427 B |
|
Before Width: | Height: | Size: 548 B After Width: | Height: | Size: 345 B |
|
Before Width: | Height: | Size: 438 B After Width: | Height: | Size: 274 B |
|
Before Width: | Height: | Size: 200 B After Width: | Height: | Size: 152 B |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 972 B |
|
Before Width: | Height: | Size: 379 B After Width: | Height: | Size: 227 B |
|
Before Width: | Height: | Size: 301 B After Width: | Height: | Size: 186 B |
|
Before Width: | Height: | Size: 404 B After Width: | Height: | Size: 237 B |
|
Before Width: | Height: | Size: 413 B After Width: | Height: | Size: 240 B |
|
Before Width: | Height: | Size: 341 B After Width: | Height: | Size: 214 B |
|
Before Width: | Height: | Size: 388 B After Width: | Height: | Size: 227 B |
|
Before Width: | Height: | Size: 413 B After Width: | Height: | Size: 244 B |
|
Before Width: | Height: | Size: 367 B After Width: | Height: | Size: 221 B |
|
Before Width: | Height: | Size: 417 B After Width: | Height: | Size: 246 B |
|
Before Width: | Height: | Size: 417 B After Width: | Height: | Size: 245 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 753 B |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 843 B |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 215 B After Width: | Height: | Size: 159 B |
|
Before Width: | Height: | Size: 1012 B After Width: | Height: | Size: 999 B |
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 774 B After Width: | Height: | Size: 637 B |
|
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 983 B |
|
Before Width: | Height: | Size: 697 B After Width: | Height: | Size: 505 B |