Skip to content
This repository was archived by the owner on Jul 23, 2020. It is now read-only.

Commit 6471992

Browse files
committed
v 1.129
1 parent 23bb90b commit 6471992

File tree

11 files changed

+127
-32
lines changed

11 files changed

+127
-32
lines changed

README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,16 @@ Downloads
4949

5050
Changelog
5151
---------
52+
Cambios en v1.129:
53+
* Fix cfi.
54+
* Agregado fr.ninemanga.
55+
* Opción para desabilitar el chequeo de certificados.
56+
57+
Changes on v1.129:
58+
* Fix cfi.
59+
* Added fr.ninemanga.
60+
* Option to disable cert checks.
61+
5262
Cambios en v1.128:
5363
* Pequeños arreglos.
5464

app/build.gradle

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ android {
55
buildToolsVersion '29.0.3'
66
defaultConfig {
77
applicationId "ar.rulosoft.mimanganu"
8-
versionCode 128
9-
versionName "1.128"
8+
versionCode 129
9+
versionName "1.129"
1010
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
1111
minSdkVersion 15
1212
}
@@ -39,6 +39,10 @@ android {
3939
signingConfig signingConfigs.debug
4040
}
4141
}
42+
compileOptions {
43+
sourceCompatibility = 1.8
44+
targetCompatibility = 1.8
45+
}
4246
compileOptions.encoding = 'UTF-8'
4347
flavorDimensions "builds"
4448
productFlavors {
@@ -83,7 +87,10 @@ dependencies {
8387
implementation 'com.github.sevar83:indeterminate-checkbox:1.0.5@aar'
8488
implementation group: 'org.brotli', name: 'dec', version: '0.1.2'
8589
//implementation group: 'com.github.junrar', name: 'junrar', version: '4.0.0'
86-
implementation 'com.github.raulhaag:RapidDecoder:0.3.1Ax'
90+
implementation 'rapid.decoder:library:0.3.0'
91+
implementation 'rapid.decoder:jpeg-decoder:0.3.0'
92+
implementation 'rapid.decoder:png-decoder:0.3.0'
93+
//implementation 'com.github.raulhaag:RapidDecoder:0.3.1Ax'
8794
implementation 'com.squareup.okhttp3:okhttp:3.9.1' //on 3.10.0 are deprecated some ciphers
8895
implementation 'com.squareup.okio:okio:1.15.0'
8996
implementation 'com.squareup.duktape:duktape-android:1.2.0'/* v 1.2.0 need 4+mb extra*/

app/src/androidTest/java/ar/rulosoft/mimanganu/testNine.java

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package ar.rulosoft.mimanganu;
22

33
import android.content.Context;
4-
import android.util.Log;
54

65
import androidx.test.filters.LargeTest;
76
import androidx.test.rule.ActivityTestRule;
@@ -13,10 +12,17 @@
1312

1413
import ar.rulosoft.mimanganu.componentes.Chapter;
1514
import ar.rulosoft.mimanganu.componentes.Manga;
15+
import ar.rulosoft.mimanganu.servers.JSServerHelper;
16+
import ar.rulosoft.mimanganu.servers.TuMangaOnline;
17+
import ar.rulosoft.mimanganu.utils.Util;
1618
import ar.rulosoft.navegadores.Navigator;
1719
import okhttp3.Request;
1820
import okio.Buffer;
1921

22+
import static ar.rulosoft.mimanganu.servers.ServerBase.TUMANGAONLINE;
23+
import static ar.rulosoft.mimanganu.servers.ServerBase.getFirstMatch;
24+
import static ar.rulosoft.mimanganu.servers.ServerBase.getServer;
25+
2026
/**
2127
* Created by Raul on 01/04/2017.
2228
*/
@@ -28,6 +34,10 @@ public class testNine {
2834
private Context context;
2935
private Manga manga;
3036
private Chapter chapter;
37+
private String script;
38+
private TuMangaOnline tmoServ = (TuMangaOnline) getServer(TUMANGAONLINE, context);
39+
private JSServerHelper scriptHelper;
40+
3141

3242
private static String bodyToString(final Request request){
3343
try {
@@ -43,19 +53,22 @@ private static String bodyToString(final Request request){
4353
@Test
4454
public void testImages() throws Exception {
4555
Navigator nav = Navigator.getInstance();
46-
nav.addHeader("Accept-Language", "es-AR,es;q=0.8,en-US;q=0.5,en;q=0.3");
47-
nav.addHeader("Accept-Encoding", "deflate");
48-
nav.addHeader("Accept","application/json, text/plain, */*");
49-
nav.addHeader("Accept-Encoding","gzip, deflate, br");
50-
nav.addHeader("Accept-Language","es-AR,es;q=0.8,en-US;q=0.5,en;q=0.3");
51-
nav.addHeader("Cache-mode","no-cache");
52-
//nav.addHeader("Connection","keep-alive");
53-
nav.addHeader("Cookie","__cfduid=d7025d17b59e189d890c2cc05b9feb5c31505483555; tmoSession=eyJpdiI6ImZXZUlPZjVWOGNKS2VCRkVcL1I3XC9iZz09IiwidmFsdWUiOiJ0MEhzdXF0XC93YkFvSkJlUnVvZ3hnN011WWtGUzdEdnJrY1ZOakhnTVRBTGJQZk91NmphTTFaNDhhbUozUnZnRmJndGtBdkNHZlFsTTFZT2RvSWlBSGc9PSIsIm1hYyI6ImMxODZmYmRkNTJiZTQ4YjUwZGQ0MTBkYTRlOWExNmU1NjM3YWFkMTA2MGJjNGJhMzMwOGY3NjY0YmFhMDIyMmIifQ%3D%3D");
54-
//nav.addHeader("Host","www.tumangaonline.com");
55-
nav.addHeader("Referer","https://www.tumangaonline.com/biblioteca");
56-
//nav.addHeader("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:54.0) Gecko/20100101 Firefox/54.0");
57-
//nav.addHeader("X-Requested-With","XMLHttpRequest");
58-
Log.e("respuesta", nav.get("https://www.tumangaonline.com/api/v1/mangas/2968/capitulos?page=2&tomo=-1"));
56+
checkScript();
57+
scriptHelper.notifyAll();
58+
}
59+
60+
private void checkScript() throws Exception {
61+
if (scriptHelper == null) {
62+
String d = " " + context.getString(R.string.factor_suffix).hashCode() + getServer(TUMANGAONLINE, context).getServerID() + TUMANGAONLINE;
63+
try {
64+
script = Util.xorDecode(tmoServ.getNavWithNeededHeaders().get("https://raw.githubusercontent.com/raulhaag/MiMangaNu/master/js_plugin/" + tmoServ.getServerID() + "_5.js"), d);
65+
} catch (Exception e) {
66+
script = tmoServ.getNavWithNeededHeaders().get("https://github.com/raulhaag/MiMangaNu/blob/master/js_plugin/" + tmoServ.getServerID() + "_5.js");
67+
script = Util.xorDecode(Util.getInstance().fromHtml(getFirstMatch("(<table class=\"highlight tab-size js-file-line-container\"[\\s\\S]+<\\/table>)", script, "error obteniendo script")).toString(), d);
68+
}
69+
if (!script.isEmpty())
70+
scriptHelper = new JSServerHelper(context, script);
71+
}
5972

6073
}
6174

app/src/main/java/ar/rulosoft/mimanganu/servers/TuMangaOnline.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616
/**
1717
* Created by Raul on 05/04/2016.
1818
*/
19-
class TuMangaOnline extends ServerBase {
19+
public class TuMangaOnline extends ServerBase {
2020

2121
private static final String HOST = "https://tmofans.com";
2222
public static String script = null;
23-
private JSServerHelper scriptHelper;
23+
public JSServerHelper scriptHelper;
2424

2525
public static String[] type = new String[]{
2626
"Todos", "Manga", "Manhua", "Manhwa", "Novela", "One Shot", "Dounjinshi", "Oel"
@@ -160,7 +160,7 @@ public ArrayList<Manga> getMangasFiltered(int[][] filters, int pageNumber) throw
160160
return scriptHelper.getMangasFiltered(filters, pageNumber);
161161
}
162162

163-
private Navigator getNavWithNeededHeaders() {
163+
public Navigator getNavWithNeededHeaders() {
164164
Navigator nav = getNavigatorAndFlushParameters();
165165
nav.addHeader("Cache-mode", "no-cache");
166166
nav.addHeader("Referer", HOST + "/library/manga/");

app/src/main/java/ar/rulosoft/mimanganu/services/SingleDownload.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@
1111
import java.io.OutputStream;
1212
import java.util.concurrent.TimeUnit;
1313

14+
import javax.net.ssl.HostnameVerifier;
15+
import javax.net.ssl.SSLSession;
16+
1417
import ar.rulosoft.mimanganu.utils.PostProcess;
1518
import ar.rulosoft.navegadores.Navigator;
1619
import okhttp3.OkHttpClient;
@@ -84,9 +87,16 @@ public void run() {
8487
copy = Navigator.getInstance().getHttpClient().newBuilder()
8588
.connectTimeout(5, TimeUnit.SECONDS)
8689
.readTimeout(20, TimeUnit.SECONDS)
90+
.hostnameVerifier(new HostnameVerifier() {
91+
@Override
92+
public boolean verify(String hostname, SSLSession session) {
93+
return true;
94+
}
95+
})
8796
.build();
8897
rBuilder = new Request.Builder()
89-
.addHeader("User-Agent", Navigator.USER_AGENT);
98+
.addHeader("User-Agent", Navigator.USER_AGENT)
99+
.addHeader("Connection", "keep-alive");
90100
if (referer) {
91101
if (inRef != null) {
92102
rBuilder.addHeader("Referer", inRef);
@@ -103,9 +113,8 @@ public void run() {
103113
changeStatus(Status.ERROR_CONNECTION);
104114
}
105115
retry = 0;
106-
if (!ot.delete()) {
107-
Log.e("SingleDownload", "failed to delete temporary file");
108-
}
116+
//noinspection ResultOfMethodCallIgnored
117+
ot.delete();
109118
writeErrorImage(ot);
110119
if (!ot.renameTo(o)) {
111120
Log.e("SingleDownload", "failed to rename temporary file");

app/src/main/java/ar/rulosoft/navegadores/CFInterceptor.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@
2828
public class CFInterceptor implements Interceptor {
2929

3030
private final static Pattern OPERATION_PATTERN = Pattern.compile("setTimeout\\(function\\(\\)\\{\\s+(var .,.,.,.[\\s\\S]+?a\\.value = .+?;)", Pattern.DOTALL);
31-
private final static Pattern PASS_PATTERN = Pattern.compile("name=\"pass\" value=\"(.+?)\"", Pattern.DOTALL);
32-
private final static Pattern CHALLENGE_PATTERN = Pattern.compile("name=\"jschl_vc\" value=\"(\\w+)\"", Pattern.DOTALL);
3331
private final static Pattern EXTRA_STRING_ADDED_PATTERN = Pattern.compile("<input type=\"hidden\" name=\"r\" value=\"([^\"]*)");
3432
private final static Pattern REPLACE_VALUE = Pattern.compile("visibility:hidden;\" id=\".+\">([^<]+)<");
3533
private final static Pattern FORM_ACTION = Pattern.compile("action=\"([^\"]+)");
@@ -52,7 +50,7 @@ public Response intercept(Chain chain) throws IOException {
5250
return response;
5351
}
5452

55-
public Response resolveOverCF(Chain chain, Response response) throws IOException {
53+
public synchronized Response resolveOverCF(Chain chain, Response response) throws IOException {
5654
Request request = response.request();
5755
String domain = request.url().host().trim();
5856
String content = response.body().string();

app/src/main/java/ar/rulosoft/navegadores/Navigator.java

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@
2929
import java.util.regex.Matcher;
3030
import java.util.regex.Pattern;
3131

32+
import javax.net.ssl.HostnameVerifier;
3233
import javax.net.ssl.SSLContext;
34+
import javax.net.ssl.SSLSession;
3335
import javax.net.ssl.SSLSocketFactory;
3436
import javax.net.ssl.TrustManager;
3537
import javax.net.ssl.TrustManagerFactory;
@@ -55,6 +57,7 @@ public class Navigator {
5557
public static int writeTimeout = 10;
5658
public static int readTimeout = 30;
5759
public static int connectionRetry = 10;
60+
private static boolean trustAll;
5861
private static CookieJar cookieJar;
5962
private static Navigator instance;
6063
public OkHttpClient httpClient;
@@ -74,6 +77,7 @@ private Navigator(Context context) throws Exception {
7477
connectionRetry = Integer.parseInt(prefs.getString("connection_retry", "10"));
7578
readTimeout = Integer.parseInt(prefs.getString("read_timeout", "30"));
7679
connectionTimeout = Integer.parseInt(prefs.getString("connection_timeout", "10"));
80+
trustAll = prefs.getBoolean("accept_all_certs", false);
7781
cookieJar = new CookieFilter(new SetCookieCache(), new SharedPrefsCookiePersistor(context));
7882
initClient(cookieJar, context);
7983
}
@@ -110,7 +114,28 @@ public static CookieJar getCookieJar() {
110114
}
111115

112116
private void initClient(CookieJar cookieJar, Context context) throws KeyManagementException, NoSuchAlgorithmException {
113-
TrustManager[] trustManagers = getTrustManagers(context);
117+
TrustManager[] trustManagers;
118+
if (trustAll) {
119+
trustManagers = new TrustManager[]{
120+
new X509TrustManager() {
121+
@Override
122+
public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
123+
}
124+
125+
@Override
126+
public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
127+
}
128+
129+
@Override
130+
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
131+
return new java.security.cert.X509Certificate[]{};
132+
}
133+
}
134+
};
135+
} else {
136+
trustManagers = getTrustManagers(context);
137+
}
138+
114139
SSLContext sslContext = SSLContext.getInstance("TLS");
115140
sslContext.init(null, trustManagers, null);
116141
SSLSocketFactory socketFactory = null;
@@ -119,7 +144,8 @@ private void initClient(CookieJar cookieJar, Context context) throws KeyManageme
119144
} else {
120145
socketFactory = sslContext.getSocketFactory();
121146
}
122-
httpClient = new OkHttpClientConnectionChecker.Builder()
147+
148+
OkHttpClientConnectionChecker.Builder cBuilder = new OkHttpClientConnectionChecker.Builder()
123149
.addInterceptor(new UncompressInterceptor())
124150
.addInterceptor(new RetryInterceptor())// the interceptors list appear to be a lifo
125151
.addInterceptor(new CFInterceptor())
@@ -129,7 +155,16 @@ private void initClient(CookieJar cookieJar, Context context) throws KeyManageme
129155
.readTimeout(30, TimeUnit.SECONDS)
130156
.cookieJar(cookieJar)
131157
//.dns(new MmNDNS())//
132-
.build();
158+
;
159+
if (trustAll) {
160+
cBuilder.hostnameVerifier(new HostnameVerifier() {
161+
@Override
162+
public boolean verify(String hostname, SSLSession session) {
163+
return true;
164+
}
165+
});
166+
}
167+
httpClient = cBuilder.build();
133168
Navigator.cookieJar = cookieJar;
134169
}
135170

app/src/main/res/values-es/strings.xml

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<resources>
3-
<string name="update_message">Cambios en v1.128:\n\t* Pequeños arreglos.</string>
3+
<string name="update_message">Cambios en v1.129:\n\t* Fix cfi.\n\t* Agregado fr.ninemanga.\n\t* Opción para desabilitar el chequeo de certificados.
4+
</string>
45
<string name="action_ajustar_a">Ajustar a</string>
56
<string name="descargas">Descargas</string>
67
<string name="datosde">Datos de </string>
@@ -466,5 +467,17 @@
466467
<string name="device_dont_supported">Tu dispositivo no soporta esta función.</string>
467468
<string name="restart">Reiniciar aplicación</string>
468469
<string name="contact">Contactar al desarrollador</string>
470+
<string name="clear_images_summary">Si estas necesitando espacio</string>
471+
<string name="clear_images_title">Borrar la imagenes de todos los mangas</string>
472+
<string name="deleting_all_images_message">Borrando imagenes, espera hasta el próximo mensaje.</string>
473+
<string name="process_finished">Preceso terminado.</string>
474+
<string name="are_you_sure">¿Estas seguro?</string>
475+
<string name="accept_all_certs_title">Deshabilitar el chequeo de certificados</string>
476+
<string name="accept_all_certs_summary">Si tienes una vesion vieja de android o un servidor tiene problemas.</string>
477+
<string name="backup_dont_found">Backup no encotrado</string>
478+
<string name="run_test">Correr test de servidores</string>
479+
<string name="run_test_summary">Test basico sobre servidores.</string>
480+
<string name="notification_channel_new">Nuevos mangas y actualizaciones.</string>
481+
<string name="notification_channel_update">Buqueda de nuevos capítulos.</string>
469482

470483
</resources>

app/src/main/res/values/strings.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<resources>
3-
<string name="update_message">Changes on v1.128:\n\t* Small Fixes.</string>
3+
<string name="update_message">Changes on v1.129:\n\t* Fix cfi.\n\t* Added fr.ninemanga.\n\t* Option to disable cert checks.</string>
44
<string name="_12hours">12 Hours</string>
55
<string name="_1day">1 day</string>
66
<string name="_2day">2 days</string>
@@ -514,5 +514,7 @@
514514
<string name="deleting_all_images_message">Deleting all images please wait until next message.</string>
515515
<string name="process_finished">Process finished.</string>
516516
<string name="are_you_sure">Are you sure?</string>
517+
<string name="accept_all_certs_title">Disable cert check</string>
518+
<string name="accept_all_certs_summary">If you have old android and/or the server cert are\'t trusted (need restart)</string>
517519

518520
</resources>

app/src/main/res/xml/fragment_preferences.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@
3434
android:key="only_wifi"
3535
android:summary="@string/use_only_wifi_subtitle"
3636
android:title="@string/use_only_wifi_title" />
37+
<androidx.preference.SwitchPreferenceCompat
38+
android:defaultValue="false"
39+
android:key="accept_all_certs"
40+
android:summary="@string/accept_all_certs_summary"
41+
android:title="@string/accept_all_certs_title" />
3742
<ar.rulosoft.custompref.SeekBarCustomPreference
3843
android:defaultValue="10"
3944
android:dialogTitle="@string/connection_retry_title"

0 commit comments

Comments
 (0)