Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
M
Magisk
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Magisk
Commits
674d272e
Commit
674d272e
authored
Oct 11, 2019
by
topjohnwu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Support pre-5.0 without GMS
Fix #1912
parent
c3e00c27
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
37 additions
and
26 deletions
+37
-26
build.gradle
app/build.gradle
+1
-1
App.kt
app/src/main/java/com/topjohnwu/magisk/App.kt
+0
-3
NetworkingModule.kt
...src/main/java/com/topjohnwu/magisk/di/NetworkingModule.kt
+13
-9
build.gradle
shared/build.gradle
+1
-0
proguard-rules.pro
shared/proguard-rules.pro
+4
-0
AndroidManifest.xml
shared/src/main/AndroidManifest.xml
+1
-0
Networking.java
...ed/src/main/java/com/topjohnwu/magisk/net/Networking.java
+7
-3
NoSSLv3SocketFactory.java
...n/java/com/topjohnwu/magisk/net/NoSSLv3SocketFactory.java
+10
-10
No files found.
app/build.gradle
View file @
674d272e
...
...
@@ -94,7 +94,7 @@ dependencies {
implementation
"com.squareup.retrofit2:converter-scalars:${vRetrofit}"
implementation
"com.squareup.retrofit2:adapter-rxjava2:${vRetrofit}"
def
vOkHttp
=
'3.12.
2
'
def
vOkHttp
=
'3.12.
6
'
implementation
"com.squareup.okhttp3:okhttp:${vOkHttp}"
implementation
"com.squareup.okhttp3:logging-interceptor:${vOkHttp}"
...
...
app/src/main/java/com/topjohnwu/magisk/App.kt
View file @
674d272e
...
...
@@ -13,7 +13,6 @@ import com.topjohnwu.magisk.data.database.RepoDatabase_Impl
import
com.topjohnwu.magisk.di.ActivityTracker
import
com.topjohnwu.magisk.di.koinModules
import
com.topjohnwu.magisk.extensions.get
import
com.topjohnwu.magisk.net.Networking
import
com.topjohnwu.magisk.utils.LocaleManager
import
com.topjohnwu.magisk.utils.RootUtils
import
com.topjohnwu.superuser.Shell
...
...
@@ -50,8 +49,6 @@ open class App : Application() {
}
registerActivityLifecycleCallbacks
(
get
<
ActivityTracker
>())
Networking
.
init
(
base
)
LocaleManager
.
setLocale
(
this
)
}
...
...
app/src/main/java/com/topjohnwu/magisk/di/NetworkingModule.kt
View file @
674d272e
package
com.topjohnwu.magisk.di
import
android.content.Context
import
com.squareup.moshi.JsonAdapter
import
com.squareup.moshi.Moshi
import
com.topjohnwu.magisk.BuildConfig
import
com.topjohnwu.magisk.Const
import
com.topjohnwu.magisk.data.network.GithubApiServices
import
com.topjohnwu.magisk.data.network.GithubRawServices
import
com.topjohnwu.magisk.net.Networking
import
com.topjohnwu.magisk.net.NoSSLv3SocketFactory
import
okhttp3.OkHttpClient
import
okhttp3.logging.HttpLoggingInterceptor
import
org.koin.dsl.module
...
...
@@ -16,14 +19,14 @@ import retrofit2.converter.scalars.ScalarsConverterFactory
import
se.ansman.kotshi.KotshiJsonAdapterFactory
val
networkingModule
=
module
{
single
{
createOkHttpClient
()
}
single
{
createMoshiConverterFactory
()
}
single
{
createRetrofit
(
get
(),
get
())
}
single
{
createOkHttpClient
(
get
())
}
single
{
createRetrofit
(
get
())
}
single
{
createApiService
<
GithubRawServices
>(
get
(),
Const
.
Url
.
GITHUB_RAW_URL
)
}
single
{
createApiService
<
GithubApiServices
>(
get
(),
Const
.
Url
.
GITHUB_API_URL
)
}
}
fun
createOkHttpClient
():
OkHttpClient
{
@Suppress
(
"DEPRECATION"
)
fun
createOkHttpClient
(
context
:
Context
):
OkHttpClient
{
val
builder
=
OkHttpClient
.
Builder
()
if
(
BuildConfig
.
DEBUG
)
{
...
...
@@ -33,6 +36,10 @@ fun createOkHttpClient(): OkHttpClient {
builder
.
addInterceptor
(
httpLoggingInterceptor
)
}
if
(!
Networking
.
init
(
context
))
{
builder
.
sslSocketFactory
(
NoSSLv3SocketFactory
())
}
return
builder
.
build
()
}
...
...
@@ -43,13 +50,10 @@ fun createMoshiConverterFactory(): MoshiConverterFactory {
return
MoshiConverterFactory
.
create
(
moshi
)
}
fun
createRetrofit
(
okHttpClient
:
OkHttpClient
,
converterFactory
:
MoshiConverterFactory
):
Retrofit
.
Builder
{
fun
createRetrofit
(
okHttpClient
:
OkHttpClient
):
Retrofit
.
Builder
{
return
Retrofit
.
Builder
()
.
addConverterFactory
(
ScalarsConverterFactory
.
create
())
.
addConverterFactory
(
c
onverterFactory
)
.
addConverterFactory
(
c
reateMoshiConverterFactory
()
)
.
addCallAdapterFactory
(
RxJava2CallAdapterFactory
.
create
())
.
client
(
okHttpClient
)
}
...
...
shared/build.gradle
View file @
674d272e
...
...
@@ -3,6 +3,7 @@ apply plugin: 'com.android.library'
android
{
defaultConfig
{
vectorDrawables
.
useSupportLibrary
=
true
consumerProguardFiles
'proguard-rules.pro'
}
}
...
...
shared/proguard-rules.pro
View file @
674d272e
...
...
@@ -19,3 +19,7 @@
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
-
keepclassmembers
class
*
implements
javax
.
net
.
ssl
.
SSLSocketFactory
{
**
delegate
;
}
shared/src/main/AndroidManifest.xml
View file @
674d272e
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
package=
"com.topjohnwu.shared"
>
<uses-permission
android:name=
"android.permission.ACCESS_NETWORK_STATE"
/>
<uses-permission
android:name=
"android.permission.REQUEST_INSTALL_PACKAGES"
/>
<uses-permission
android:name=
"android.permission.WRITE_EXTERNAL_STORAGE"
/>
...
...
shared/src/main/java/com/topjohnwu/magisk/net/Networking.java
View file @
674d272e
...
...
@@ -35,7 +35,7 @@ public class Networking {
return
request
(
url
,
"GET"
);
}
public
static
void
init
(
Context
context
)
{
public
static
boolean
init
(
Context
context
)
{
try
{
// Try installing new SSL provider from Google Play Service
Context
gms
=
context
.
createPackageContext
(
"com.google.android.gms"
,
...
...
@@ -45,11 +45,15 @@ public class Networking {
.
getMethod
(
"insertProvider"
,
Context
.
class
)
.
invoke
(
null
,
gms
);
}
catch
(
Exception
e
)
{
if
(
Build
.
VERSION
.
SDK_INT
<
21
)
{
// Failed to update SSL provider, use NoSSLv3SocketFactory on SDK < 21
if
(
Build
.
VERSION
.
SDK_INT
<
21
)
// and return false to notify potential issues
HttpsURLConnection
.
setDefaultSSLSocketFactory
(
new
NoSSLv3SocketFactory
());
return
false
;
}
}
return
true
;
}
public
static
boolean
checkNetworkStatus
(
Context
context
)
{
ConnectivityManager
manager
=
(
ConnectivityManager
)
...
...
shared/src/main/java/com/topjohnwu/magisk/net/NoSSLv3SocketFactory.java
View file @
674d272e
...
...
@@ -11,18 +11,18 @@ import javax.net.ssl.HttpsURLConnection;
import
javax.net.ssl.SSLSocket
;
import
javax.net.ssl.SSLSocketFactory
;
class
NoSSLv3SocketFactory
extends
SSLSocketFactory
{
public
class
NoSSLv3SocketFactory
extends
SSLSocketFactory
{
private
final
static
SSLSocketFactory
bas
e
=
HttpsURLConnection
.
getDefaultSSLSocketFactory
();
private
final
static
SSLSocketFactory
delegat
e
=
HttpsURLConnection
.
getDefaultSSLSocketFactory
();
@Override
public
String
[]
getDefaultCipherSuites
()
{
return
bas
e
.
getDefaultCipherSuites
();
return
delegat
e
.
getDefaultCipherSuites
();
}
@Override
public
String
[]
getSupportedCipherSuites
()
{
return
bas
e
.
getSupportedCipherSuites
();
return
delegat
e
.
getSupportedCipherSuites
();
}
private
Socket
createSafeSocket
(
Socket
socket
)
{
...
...
@@ -40,31 +40,31 @@ class NoSSLv3SocketFactory extends SSLSocketFactory {
@Override
public
Socket
createSocket
(
Socket
s
,
String
host
,
int
port
,
boolean
autoClose
)
throws
IOException
{
return
createSafeSocket
(
bas
e
.
createSocket
(
s
,
host
,
port
,
autoClose
));
return
createSafeSocket
(
delegat
e
.
createSocket
(
s
,
host
,
port
,
autoClose
));
}
@Override
public
Socket
createSocket
()
throws
IOException
{
return
createSafeSocket
(
bas
e
.
createSocket
());
return
createSafeSocket
(
delegat
e
.
createSocket
());
}
@Override
public
Socket
createSocket
(
String
host
,
int
port
)
throws
IOException
{
return
createSafeSocket
(
bas
e
.
createSocket
(
host
,
port
));
return
createSafeSocket
(
delegat
e
.
createSocket
(
host
,
port
));
}
@Override
public
Socket
createSocket
(
String
host
,
int
port
,
InetAddress
localHost
,
int
localPort
)
throws
IOException
{
return
createSafeSocket
(
bas
e
.
createSocket
(
host
,
port
,
localHost
,
localPort
));
return
createSafeSocket
(
delegat
e
.
createSocket
(
host
,
port
,
localHost
,
localPort
));
}
@Override
public
Socket
createSocket
(
InetAddress
host
,
int
port
)
throws
IOException
{
return
createSafeSocket
(
bas
e
.
createSocket
(
host
,
port
));
return
createSafeSocket
(
delegat
e
.
createSocket
(
host
,
port
));
}
@Override
public
Socket
createSocket
(
InetAddress
address
,
int
port
,
InetAddress
localAddress
,
int
localPort
)
throws
IOException
{
return
createSafeSocket
(
bas
e
.
createSocket
(
address
,
port
,
localAddress
,
localPort
));
return
createSafeSocket
(
delegat
e
.
createSocket
(
address
,
port
,
localAddress
,
localPort
));
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment