mirror of
https://github.com/KDE/kdeconnect-android
synced 2025-08-30 05:37:43 +00:00
Delay initialization of sftp server
This commit is contained in:
parent
1ba9e59872
commit
51dfa2dd8c
@ -8,7 +8,6 @@ package org.kde.kdeconnect.Plugins.SftpPlugin;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
@ -16,10 +15,8 @@ import android.os.Environment;
|
||||
import android.os.storage.StorageManager;
|
||||
import android.os.storage.StorageVolume;
|
||||
import android.provider.Settings;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.RequiresApi;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
@ -34,7 +31,7 @@ import org.kde.kdeconnect.UserInterface.StartActivityAlertDialogFragment;
|
||||
import org.kde.kdeconnect_tp.BuildConfig;
|
||||
import org.kde.kdeconnect_tp.R;
|
||||
|
||||
import java.io.File;
|
||||
import java.security.GeneralSecurityException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
@ -63,13 +60,7 @@ public class SftpPlugin extends Plugin implements SharedPreferences.OnSharedPref
|
||||
|
||||
@Override
|
||||
public boolean onCreate() {
|
||||
try {
|
||||
server.init(context, device);
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
Log.e("SFTP", "Exception in server.init()", e);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -117,6 +108,14 @@ public class SftpPlugin extends Plugin implements SharedPreferences.OnSharedPref
|
||||
@Override
|
||||
public boolean onPacketReceived(NetworkPacket np) {
|
||||
if (np.getBoolean("startBrowsing")) {
|
||||
if (!server.isInitialized()) {
|
||||
try {
|
||||
server.initialize(context, device);
|
||||
} catch (GeneralSecurityException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
ArrayList<String> paths = new ArrayList<>();
|
||||
ArrayList<String> pathNames = new ArrayList<>();
|
||||
|
||||
|
@ -58,6 +58,8 @@ class SimpleSftpServer {
|
||||
SecurityUtils.setRegisterBouncyCastle(false);
|
||||
}
|
||||
|
||||
boolean initialized = false;
|
||||
|
||||
private final SshServer sshd = SshServer.setUpDefaultServer();
|
||||
private AndroidFileSystemFactory safFileSystemFactory;
|
||||
|
||||
@ -65,7 +67,7 @@ class SimpleSftpServer {
|
||||
safFileSystemFactory.initRoots(storageInfoList);
|
||||
}
|
||||
|
||||
void init(Context context, Device device) throws GeneralSecurityException {
|
||||
void initialize(Context context, Device device) throws GeneralSecurityException {
|
||||
|
||||
sshd.setKeyExchangeFactories(Arrays.asList(
|
||||
new ECDHP384.Factory(), // This is the best we have in mina-sshd 0.14.0 -- Upgrading is non-trivial
|
||||
@ -97,6 +99,8 @@ class SimpleSftpServer {
|
||||
|
||||
sshd.setPublickeyAuthenticator(keyAuth);
|
||||
sshd.setPasswordAuthenticator(passwordAuth);
|
||||
|
||||
initialized = true;
|
||||
}
|
||||
|
||||
public boolean start() {
|
||||
@ -177,6 +181,10 @@ class SimpleSftpServer {
|
||||
return ip6;
|
||||
}
|
||||
|
||||
public boolean isInitialized() {
|
||||
return initialized;
|
||||
}
|
||||
|
||||
static class SimplePasswordAuthenticator implements PasswordAuthenticator {
|
||||
|
||||
String password;
|
||||
|
Loading…
x
Reference in New Issue
Block a user