Support upload
This commit is contained in:
parent
a407dcc72d
commit
e08adc1353
|
@ -96,7 +96,6 @@ dependencies {
|
|||
implementation 'com.elconfidencial.bubbleshowcase:bubbleshowcase:1.3.1'
|
||||
implementation 'androidx.multidex:multidex:2.0.1'
|
||||
implementation 'com.google.android.exoplayer:exoplayer:2.9.3'
|
||||
implementation 'com.github.stom79:android-upload-service:3.4.2-Mastalab'
|
||||
implementation 'org.apache.poi:poi:3.16'
|
||||
implementation 'com.github.mabbas007:TagsEditText:1.0.5'
|
||||
implementation 'com.jaredrummler:material-spinner:1.3.1'
|
||||
|
@ -107,6 +106,8 @@ dependencies {
|
|||
implementation 'ja.burhanrashid52:photoeditor:0.3.3'
|
||||
implementation 'com.github.yalantis:ucrop:2.2.3'
|
||||
|
||||
implementation "net.gotev:uploadservice:$uploadServiceVersion"
|
||||
implementation "net.gotev:uploadservice-okhttp:$uploadServiceVersion"
|
||||
implementation "info.guardianproject.netcipher:netcipher:$netCipherVersion"
|
||||
implementation "info.guardianproject.netcipher:netcipher-okhttp3:$netCipherVersion"
|
||||
}
|
||||
|
|
|
@ -37,6 +37,8 @@ import es.dmoral.toasty.Toasty;
|
|||
import app.fedilab.android.BuildConfig;
|
||||
import app.fedilab.android.R;
|
||||
|
||||
import static app.fedilab.android.helper.Helper.initNetCipher;
|
||||
|
||||
/**
|
||||
* Created by Thomas on 29/04/2017.
|
||||
* Main application, jobs are launched here.
|
||||
|
@ -77,6 +79,7 @@ public class MainApplication extends MultiDexApplication {
|
|||
}catch (Exception ignored){}
|
||||
//Initialize upload service
|
||||
UploadService.NAMESPACE = BuildConfig.APPLICATION_ID;
|
||||
initNetCipher(this);
|
||||
Toasty.Config.getInstance()
|
||||
.setErrorColor(ContextCompat.getColor(getApplicationContext(), R.color.toasty_background))
|
||||
.setInfoColor(ContextCompat.getColor(getApplicationContext(), R.color.toasty_background))
|
||||
|
@ -85,7 +88,7 @@ public class MainApplication extends MultiDexApplication {
|
|||
.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.toasty_text))
|
||||
.apply();
|
||||
Toasty.Config.getInstance().apply();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -51,6 +51,7 @@ import android.text.Html;
|
|||
import android.text.InputFilter;
|
||||
import android.text.InputType;
|
||||
import android.text.TextWatcher;
|
||||
import android.util.Log;
|
||||
import android.util.Patterns;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
|
@ -95,6 +96,7 @@ import net.gotev.uploadservice.MultipartUploadRequest;
|
|||
import net.gotev.uploadservice.ServerResponse;
|
||||
import net.gotev.uploadservice.UploadInfo;
|
||||
import net.gotev.uploadservice.UploadNotificationConfig;
|
||||
import net.gotev.uploadservice.UploadService;
|
||||
import net.gotev.uploadservice.UploadServiceSingleBroadcastReceiver;
|
||||
import net.gotev.uploadservice.UploadStatusDelegate;
|
||||
|
||||
|
@ -121,6 +123,7 @@ import java.util.concurrent.TimeUnit;
|
|||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import app.fedilab.android.BuildConfig;
|
||||
import app.fedilab.android.R;
|
||||
import app.fedilab.android.asynctasks.PostActionAsyncTask;
|
||||
import app.fedilab.android.asynctasks.PostStatusAsyncTask;
|
||||
|
@ -173,6 +176,8 @@ import es.dmoral.toasty.Toasty;
|
|||
|
||||
import static app.fedilab.android.helper.Helper.changeDrawableColor;
|
||||
import static app.fedilab.android.helper.Helper.countWithEmoji;
|
||||
import static app.fedilab.android.helper.Helper.initNetCipher;
|
||||
import static app.fedilab.android.helper.Helper.orbotConnected;
|
||||
|
||||
/**
|
||||
* Created by Thomas on 01/05/2017.
|
||||
|
@ -423,7 +428,6 @@ public class TootActivity extends BaseActivity implements UploadStatusDelegate,
|
|||
else
|
||||
account = accountReply;
|
||||
|
||||
|
||||
if (MainActivity.social == null) {
|
||||
|
||||
//Update the static variable which manages account type
|
||||
|
|
|
@ -0,0 +1,69 @@
|
|||
package app.fedilab.android.client;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.InetAddress;
|
||||
import java.net.Socket;
|
||||
import java.net.UnknownHostException;
|
||||
|
||||
import javax.net.ssl.SSLSocket;
|
||||
import javax.net.ssl.SSLSocketFactory;
|
||||
|
||||
/**
|
||||
* Enables TLS v1.2 when creating SSLSockets.
|
||||
* <p/>
|
||||
* For some reason, android supports TLS v1.2 from API 16, but enables it by
|
||||
* default only from API 20.
|
||||
* @link https://developer.android.com/reference/javax/net/ssl/SSLSocket.html
|
||||
* @see SSLSocketFactory
|
||||
*/
|
||||
public class Tls12SocketFactory extends SSLSocketFactory {
|
||||
private static final String[] TLS_V12_ONLY = {"TLSv1.2"};
|
||||
|
||||
final SSLSocketFactory delegate;
|
||||
|
||||
public Tls12SocketFactory(SSLSocketFactory base) {
|
||||
this.delegate = base;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getDefaultCipherSuites() {
|
||||
return delegate.getDefaultCipherSuites();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getSupportedCipherSuites() {
|
||||
return delegate.getSupportedCipherSuites();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Socket createSocket(Socket s, String host, int port, boolean autoClose) throws IOException {
|
||||
return patch(delegate.createSocket(s, host, port, autoClose));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Socket createSocket(String host, int port) throws IOException, UnknownHostException {
|
||||
return patch(delegate.createSocket(host, port));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Socket createSocket(String host, int port, InetAddress localHost, int localPort) throws IOException, UnknownHostException {
|
||||
return patch(delegate.createSocket(host, port, localHost, localPort));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Socket createSocket(InetAddress host, int port) throws IOException {
|
||||
return patch(delegate.createSocket(host, port));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Socket createSocket(InetAddress address, int port, InetAddress localAddress, int localPort) throws IOException {
|
||||
return patch(delegate.createSocket(address, port, localAddress, localPort));
|
||||
}
|
||||
|
||||
private Socket patch(Socket s) {
|
||||
if (s instanceof SSLSocket) {
|
||||
((SSLSocket) s).setEnabledProtocols(TLS_V12_ONLY);
|
||||
}
|
||||
return s;
|
||||
}
|
||||
}
|
|
@ -129,6 +129,7 @@ import com.tonyodev.fetch2.Request;
|
|||
import com.tonyodev.fetch2core.DownloadBlock;
|
||||
|
||||
import net.gotev.uploadservice.UploadService;
|
||||
import net.gotev.uploadservice.okhttp.OkHttpStack;
|
||||
|
||||
import org.conscrypt.Conscrypt;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
@ -163,9 +164,12 @@ import java.util.Map;
|
|||
import java.util.Objects;
|
||||
import java.util.Random;
|
||||
import java.util.TimeZone;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import javax.net.ssl.SSLContext;
|
||||
|
||||
import app.fedilab.android.client.API;
|
||||
import app.fedilab.android.client.Entities.Account;
|
||||
import app.fedilab.android.client.Entities.Application;
|
||||
|
@ -179,6 +183,7 @@ import app.fedilab.android.client.Entities.Status;
|
|||
import app.fedilab.android.client.Entities.Tag;
|
||||
import app.fedilab.android.client.Entities.TagTimeline;
|
||||
import app.fedilab.android.client.Entities.Version;
|
||||
import app.fedilab.android.client.Tls12SocketFactory;
|
||||
import es.dmoral.toasty.Toasty;
|
||||
import app.fedilab.android.BuildConfig;
|
||||
import app.fedilab.android.R;
|
||||
|
@ -197,7 +202,9 @@ import app.fedilab.android.sqlite.Sqlite;
|
|||
import info.guardianproject.netcipher.client.StrongBuilder;
|
||||
import info.guardianproject.netcipher.client.StrongOkHttpClientBuilder;
|
||||
import info.guardianproject.netcipher.proxy.OrbotHelper;
|
||||
import okhttp3.ConnectionSpec;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.TlsVersion;
|
||||
|
||||
import static android.content.Context.DOWNLOAD_SERVICE;
|
||||
import static com.koushikdutta.async.util.StreamUtility.copyStream;
|
||||
|
@ -4030,7 +4037,7 @@ public class Helper {
|
|||
StrongOkHttpClientBuilder.forMaxSecurity(appContext).build(new StrongBuilder.Callback<OkHttpClient>() {
|
||||
@Override
|
||||
public void onConnected(OkHttpClient okHttpClient) {
|
||||
UploadService.HTTP_STACK = new OkHttpStack(okHttpClient);
|
||||
UploadService.HTTP_STACK = new OkHttpStack(getHttpClient(context));
|
||||
orbotConnected = true;
|
||||
Log.i("NetCipherClient", "Connection to orbot established!");
|
||||
// from now on, you can create upload requests
|
||||
|
@ -4060,4 +4067,43 @@ public class Helper {
|
|||
Log.e("Error", "Error while initializing TOR Proxy OkHttpClient", exc);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static OkHttpClient getHttpClient(Context context) {
|
||||
OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder()
|
||||
.followRedirects(true)
|
||||
.followSslRedirects(true)
|
||||
.retryOnConnectionFailure(true)
|
||||
.connectTimeout(15, TimeUnit.SECONDS)
|
||||
.writeTimeout(30, TimeUnit.SECONDS)
|
||||
.readTimeout(30, TimeUnit.SECONDS)
|
||||
.cache(null);
|
||||
|
||||
return enableTls12OnPreLollipop(clientBuilder).build();
|
||||
}
|
||||
|
||||
private static OkHttpClient.Builder enableTls12OnPreLollipop(OkHttpClient.Builder client) {
|
||||
if (Build.VERSION.SDK_INT < 22) {
|
||||
try {
|
||||
SSLContext sc = SSLContext.getInstance("TLSv1.2");
|
||||
sc.init(null, null, null);
|
||||
client.sslSocketFactory(new Tls12SocketFactory(sc.getSocketFactory()));
|
||||
|
||||
ConnectionSpec cs = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS)
|
||||
.tlsVersions(TlsVersion.TLS_1_2)
|
||||
.build();
|
||||
|
||||
List<ConnectionSpec> specs = new ArrayList<>();
|
||||
specs.add(cs);
|
||||
specs.add(ConnectionSpec.COMPATIBLE_TLS);
|
||||
specs.add(ConnectionSpec.CLEARTEXT);
|
||||
|
||||
client.connectionSpecs(specs);
|
||||
} catch (Exception exc) {
|
||||
Log.e("OkHttpTLSCompat", "Error while setting TLS 1.2", exc);
|
||||
}
|
||||
}
|
||||
|
||||
return client;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue