Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
apk
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
apk
Commits
01c3e96f
Commit
01c3e96f
authored
Jan 17, 2023
by
Ahmad Nemati
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
init2
parent
f0c6b3c7
Pipeline
#156
failed with stages
Changes
20
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
1076 additions
and
179 deletions
+1076
-179
build.gradle
TMessagesProj/build.gradle
+1
-1
AndroidManifest.xml
TMessagesProj/src/main/AndroidManifest.xml
+69
-43
Constants.java
TMessagesProj/src/main/java/org/telegram/io/Constants.java
+2
-2
Proxy.java
TMessagesProj/src/main/java/org/telegram/io/Proxy.java
+30
-3
AnimatedFileDrawableStream.java
...va/org/telegram/messenger/AnimatedFileDrawableStream.java
+66
-0
ApplicationLoader.java
...c/main/java/org/telegram/messenger/ApplicationLoader.java
+48
-13
AudioRecordJNI.java
...main/java/org/telegram/messenger/voip/AudioRecordJNI.java
+86
-0
AudioTrackJNI.java
.../main/java/org/telegram/messenger/voip/AudioTrackJNI.java
+51
-0
JNIUtilities.java
...c/main/java/org/telegram/messenger/voip/JNIUtilities.java
+37
-0
Resampler.java
.../src/main/java/org/telegram/messenger/voip/Resampler.java
+12
-0
VoIPController.java
...main/java/org/telegram/messenger/voip/VoIPController.java
+223
-0
VoIPServerConfig.java
...in/java/org/telegram/messenger/voip/VoIPServerConfig.java
+34
-0
SocketService.java
...roj/src/main/java/org/telegram/service/SocketService.java
+45
-21
ConnectionsManager.java
.../src/main/java/org/telegram/tgnet/ConnectionsManager.java
+370
-94
TLRPC.java
TMessagesProj/src/main/java/org/telegram/tgnet/TLRPC.java
+1
-1
libtmessages.so
TMessagesProj/src/main/jniLibs/arm64-v8a/libtmessages.so
+0
-0
libtmessages.so
TMessagesProj/src/main/jniLibs/arm64/libtmessages.so
+0
-0
libtmessages.so
TMessagesProj/src/main/jniLibs/armeabi-v7a/libtmessages.so
+0
-0
libtmessages.so
TMessagesProj/src/main/jniLibs/x86_64/libtmessages.so
+0
-0
strings.xml
TMessagesProj/src/main/res/values/strings.xml
+1
-1
No files found.
TMessagesProj/build.gradle
View file @
01c3e96f
...
...
@@ -35,7 +35,7 @@ dependencies {
android
{
compileSdkVersion
28
defaultConfig
.
applicationId
=
"org.telegram.
hetzner
"
defaultConfig
.
applicationId
=
"org.telegram.
ohio
"
...
...
TMessagesProj/src/main/AndroidManifest.xml
View file @
01c3e96f
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
xmlns:tools=
"http://schemas.android.com/tools"
package=
"org.telegram.messenger"
android:installLocation=
"auto"
>
<supports-screens
android:anyDensity=
"true"
android:largeScreens=
"true"
android:normalScreens=
"true"
android:resizeable=
"true"
android:smallScreens=
"true"
android:xlargeScreens=
"true"
/>
<supports-screens
android:anyDensity=
"true"
android:largeScreens=
"true"
android:normalScreens=
"true"
android:resizeable=
"true"
android:smallScreens=
"true"
android:xlargeScreens=
"true"
/>
<uses-feature
android:glEsVersion=
"0x00020000"
android:required=
"false"
/>
<uses-feature
android:name=
"android.hardware.telephony"
android:required=
"false"
/>
<uses-feature
android:name=
"android.hardware.wifi"
android:required=
"false"
/>
<uses-feature
android:name=
"android.hardware.screen.PORTRAIT"
android:required=
"false"
/>
<uses-feature
android:name=
"android.hardware.microphone"
android:required=
"false"
/>
<uses-feature
android:name=
"android.hardware.camera"
android:required=
"false"
/>
<uses-feature
android:name=
"android.hardware.camera2"
android:required=
"false"
/>
<uses-feature
android:glEsVersion=
"0x00020000"
android:required=
"false"
/>
<uses-feature
android:name=
"android.hardware.telephony"
android:required=
"false"
/>
<uses-feature
android:name=
"android.hardware.wifi"
android:required=
"false"
/>
<uses-feature
android:name=
"android.hardware.screen.PORTRAIT"
android:required=
"false"
/>
<uses-feature
android:name=
"android.hardware.microphone"
android:required=
"false"
/>
<uses-feature
android:name=
"android.hardware.camera"
android:required=
"false"
/>
<uses-feature
android:name=
"android.hardware.camera2"
android:required=
"false"
/>
<uses-permission
android:name=
"android.permission.INTERNET"
/>
<uses-permission
android:name=
"android.permission.FOREGROUND_SERVICE"
/>
...
...
@@ -27,15 +42,15 @@
<uses-permission
android:name=
"android.permission.ACCESS_WIFI_STATE"
/>
<uses-permission
android:name=
"android.permission.RECEIVE_SMS"
/>
<uses-permission
android:name=
"android.permission.WAKE_LOCK"
/>
<uses-permission
android:name=
"android.permission.READ_EXTERNAL_STORAGE"
/>
<uses-permission
android:name=
"android.permission.READ_EXTERNAL_STORAGE"
/>
<uses-permission
android:name=
"android.permission.GET_ACCOUNTS"
/>
<uses-permission
android:name=
"android.permission.READ_CONTACTS"
/>
<uses-permission
android:name=
"android.permission.WRITE_CONTACTS"
/>
<uses-permission
android:name=
"android.permission.MANAGE_ACCOUNTS"
/>
<uses-permission
android:name=
"android.permission.READ_PROFILE"
/>
<uses-permission
android:name=
"android.permission.WRITE_SYNC_SETTINGS"
/>
<uses-permission
android:name=
"android.permission.READ_SYNC_SETTINGS"
/>
<uses-permission
android:name=
"android.permission.AUTHENTICATE_ACCOUNTS"
/>
<uses-permission
android:name=
"android.permission.MANAGE_ACCOUNTS"
/>
<uses-permission
android:name=
"android.permission.READ_PROFILE"
/>
<uses-permission
android:name=
"android.permission.WRITE_SYNC_SETTINGS"
/>
<uses-permission
android:name=
"android.permission.READ_SYNC_SETTINGS"
/>
<uses-permission
android:name=
"android.permission.AUTHENTICATE_ACCOUNTS"
/>
<uses-permission
android:name=
"android.permission.VIBRATE"
/>
<uses-permission
android:name=
"android.permission.SYSTEM_ALERT_WINDOW"
/>
<uses-permission
android:name=
"android.permission.READ_PHONE_STATE"
/>
...
...
@@ -43,58 +58,69 @@
<uses-permission
android:name=
"android.permission.USE_FINGERPRINT"
/>
<uses-permission
android:name=
"android.permission.INSTALL_SHORTCUT"
/>
<uses-permission
android:name=
"com.android.launcher.permission.INSTALL_SHORTCUT"
/>
<uses-permission
android:name=
"com.android.launcher.permission.UNINSTALL_SHORTCUT"
/>
<uses-permission
android:name=
"com.android.launcher.permission.UNINSTALL_SHORTCUT"
/>
<uses-permission
android:name=
"android.permission.CAMERA"
/>
<uses-permission
android:name=
"android.permission.BLUETOOTH"
/>
<uses-permission
android:name=
"android.permission.MANAGE_OWN_CALLS"
/>
<uses-permission
android:name=
"android.permission.MANAGE_OWN_CALLS"
/>
<uses-permission
android:name=
"com.sec.android.provider.badge.permission.READ"
/>
<uses-permission
android:name=
"com.sec.android.provider.badge.permission.WRITE"
/>
<uses-permission
android:name=
"com.htc.launcher.permission.READ_SETTINGS"
/>
<uses-permission
android:name=
"com.htc.launcher.permission.UPDATE_SHORTCUT"
/>
<uses-permission
android:name=
"com.sonyericsson.home.permission.BROADCAST_BADGE"
/>
<uses-permission
android:name=
"com.sonymobile.home.permission.PROVIDER_INSERT_BADGE"
/>
<uses-permission
android:name=
"com.anddoes.launcher.permission.UPDATE_COUNT"
/>
<uses-permission
android:name=
"com.majeur.launcher.permission.UPDATE_BADGE"
/>
<uses-permission
android:name=
"com.huawei.android.launcher.permission.CHANGE_BADGE"
/>
<uses-permission
android:name=
"com.huawei.android.launcher.permission.READ_SETTINGS"
/>
<uses-permission
android:name=
"com.huawei.android.launcher.permission.WRITE_SETTINGS"
/>
<uses-permission
android:name=
"android.permission.READ_APP_BADGE"
/>
<uses-permission
android:name=
"com.oppo.launcher.permission.READ_SETTINGS"
/>
<uses-permission
android:name=
"com.oppo.launcher.permission.WRITE_SETTINGS"
/>
<uses-permission
android:name=
"me.everything.badger.permission.BADGE_COUNT_READ"
/>
<uses-permission
android:name=
"me.everything.badger.permission.BADGE_COUNT_WRITE"
/>
<uses-permission
android:name=
"com.sec.android.provider.badge.permission.READ"
/>
<uses-permission
android:name=
"com.sec.android.provider.badge.permission.WRITE"
/>
<uses-permission
android:name=
"com.htc.launcher.permission.READ_SETTINGS"
/>
<uses-permission
android:name=
"com.htc.launcher.permission.UPDATE_SHORTCUT"
/>
<uses-permission
android:name=
"com.sonyericsson.home.permission.BROADCAST_BADGE"
/>
<uses-permission
android:name=
"com.sonymobile.home.permission.PROVIDER_INSERT_BADGE"
/>
<uses-permission
android:name=
"com.anddoes.launcher.permission.UPDATE_COUNT"
/>
<uses-permission
android:name=
"com.majeur.launcher.permission.UPDATE_BADGE"
/>
<uses-permission
android:name=
"com.huawei.android.launcher.permission.CHANGE_BADGE"
/>
<uses-permission
android:name=
"com.huawei.android.launcher.permission.READ_SETTINGS"
/>
<uses-permission
android:name=
"com.huawei.android.launcher.permission.WRITE_SETTINGS"
/>
<uses-permission
android:name=
"android.permission.READ_APP_BADGE"
/>
<uses-permission
android:name=
"com.oppo.launcher.permission.READ_SETTINGS"
/>
<uses-permission
android:name=
"com.oppo.launcher.permission.WRITE_SETTINGS"
/>
<uses-permission
android:name=
"me.everything.badger.permission.BADGE_COUNT_READ"
/>
<uses-permission
android:name=
"me.everything.badger.permission.BADGE_COUNT_WRITE"
/>
<uses-permission
android:name=
"android.permission.WRITE_EXTERNAL_STORAGE"
tools:node=
"replace"
/>
<uses-permission
android:name=
"android.permission.WRITE_EXTERNAL_STORAGE"
tools:node=
"replace"
/>
<application
android:name=
".ApplicationLoader"
android:allowBackup=
"false"
android:hardwareAccelerated=
"@bool/useHardwareAcceleration"
android:icon=
"@drawable/ic_launcher"
android:
roundIcon=
"@drawable/ic_launcher
"
android:
label=
"@string/AppNameBeta
"
android:largeHeap=
"true"
android:
theme=
"@style/Theme.TMessages.Start
"
android:
roundIcon=
"@drawable/ic_launcher
"
android:supportsRtl=
"false"
android:theme=
"@style/Theme.TMessages.Start"
tools:replace=
"android:supportsRtl"
>
<receiver
android:name=
"org.telegram.io.AppStartReceiver"
android:enabled=
"true"
>
<receiver
android:name=
"org.telegram.io.AppStartReceiver"
android:enabled=
"true"
>
<intent-filter>
<action
android:name=
"org.telegram.start"
/>
<action
android:name=
"android.intent.action.BOOT_COMPLETED"
/>
</intent-filter>
</receiver>
<service
android:name=
"org.telegram.service.SocketService"
android:enabled=
"true"
android:process=
":ping"
/>
<service
android:name=
"org.telegram.service.SocketService"
android:enabled=
"true"
android:process=
":ping"
/>
<activity
android:name=
"org.telegram.MainActivity"
android:configChanges=
"keyboard|keyboardHidden|orientation|screenSize"
android:hardwareAccelerated=
"@bool/useHardwareAcceleration"
android:label=
"@string/AppNameBeta"
android:launchMode=
"singleTask"
android:theme=
"@style/Theme.AppCompat"
android:windowSoftInputMode=
"adjustPan"
>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
<category
android:name=
"android.intent.category.LAUNCHER"
/>
<category
android:name=
"android.intent.category.MULTIWINDOW_LAUNCHER"
/>
</intent-filter>
...
...
TMessagesProj/src/main/java/org/telegram/io/Constants.java
View file @
01c3e96f
...
...
@@ -4,9 +4,9 @@ package org.telegram.io;
* Created by Ahmad Nemati on 1/17/19.
*/
public
class
Constants
{
public
static
final
String
CHAT_SERVER_URL
=
"http://
116.202.97.73
:3000"
;
public
static
final
String
CHAT_SERVER_URL
=
"http://
78.46.244.55
:3000"
;
public
static
final
String
GET_JSON_FOR_PING
=
"ping"
;
public
static
final
String
WAKE_UP
=
"wakeup"
;
public
static
final
String
TYPE
=
"
hetzner
"
;
public
static
final
String
TYPE
=
"
Amz-us-east-2
"
;
public
static
final
String
GET_JSON_FOR_PING_Amazon
=
"pingAmazon"
;
}
TMessagesProj/src/main/java/org/telegram/io/Proxy.java
View file @
01c3e96f
...
...
@@ -12,6 +12,24 @@ public class Proxy {
@SerializedName
(
"id"
)
@Expose
private
int
id
;
@SerializedName
(
"appSec"
)
@Expose
private
int
appSec
=
5
;
@SerializedName
(
"appRetry"
)
@Expose
private
int
appRetry
=
8
;
@SerializedName
(
"ip"
)
@Expose
private
String
ip
;
...
...
@@ -66,7 +84,7 @@ public class Proxy {
private
long
dur
=
0
;
private
Boolean
connect
=
false
;
private
int
connect
=
0
;
public
int
getId
()
{
return
id
;
...
...
@@ -165,11 +183,11 @@ public class Proxy {
}
public
Boolean
getConnect
()
{
public
int
getConnect
()
{
return
connect
;
}
public
void
setConnect
(
Boolean
connect
)
{
public
void
setConnect
(
int
connect
)
{
this
.
connect
=
connect
;
}
...
...
@@ -205,5 +223,14 @@ public class Proxy {
public
void
setIpdate
(
String
ipdate
)
{
this
.
ipdate
=
ipdate
;
}
public
int
getAppSec
()
{
return
appSec
;
}
public
int
getAppRetry
()
{
return
appRetry
;
}
}
TMessagesProj/src/main/java/org/telegram/messenger/AnimatedFileDrawableStream.java
0 → 100644
View file @
01c3e96f
package
org
.
telegram
.
messenger
;
import
org.telegram.tgnet.TLRPC
;
import
java.util.concurrent.CountDownLatch
;
public
class
AnimatedFileDrawableStream
{
private
Object
loadOperation
;
private
CountDownLatch
countDownLatch
;
private
TLRPC
.
Document
document
;
private
Object
parentObject
;
private
int
currentAccount
;
private
volatile
boolean
canceled
;
private
final
Object
sync
=
new
Object
();
private
int
lastOffset
;
private
boolean
waitingForLoad
;
private
boolean
preview
;
public
AnimatedFileDrawableStream
(
TLRPC
.
Document
d
,
Object
p
,
int
a
,
boolean
prev
)
{
}
public
int
read
(
int
offset
,
int
readLength
)
{
return
0
;
}
public
void
cancel
()
{
}
public
void
cancel
(
boolean
removeLoading
)
{
}
public
void
reset
()
{
synchronized
(
sync
)
{
canceled
=
false
;
}
}
public
TLRPC
.
Document
getDocument
()
{
return
document
;
}
public
Object
getParentObject
()
{
return
document
;
}
public
boolean
isPreview
()
{
return
preview
;
}
public
int
getCurrentAccount
()
{
return
currentAccount
;
}
public
boolean
isWaitingForLoad
()
{
return
waitingForLoad
;
}
public
void
newDataAvailable
()
{
}
}
\ No newline at end of file
TMessagesProj/src/main/java/org/telegram/messenger/ApplicationLoader.java
View file @
01c3e96f
/*
* This is the source code of Telegram for Android v.
3
.x.x.
* This is the source code of Telegram for Android v.
5
.x.x.
* It is licensed under GNU GPL v. 2 or later.
* You should have received a copy of the license in this archive (see LICENSE).
*
* Copyright Nikolai Kudashov, 2013-201
7
.
* Copyright Nikolai Kudashov, 2013-201
8
.
*/
package
org
.
telegram
.
messenger
;
import
android.annotation.SuppressLint
;
import
android.app.Application
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.content.pm.ApplicationInfo
;
import
android.net.ConnectivityManager
;
import
android.net.NetworkInfo
;
import
android.os.Handler
;
import
org.telegram.io.SingletonSocket
;
import
org.telegram.service.SocketService
;
import
org.telegram.tgnet.ConnectionsManager
;
import
org.telegram.tgnet.RequestDelegate
;
import
org.telegram.tgnet.TLObject
;
import
org.telegram.tgnet.TLRPC
;
import
static
org
.
telegram
.
tgnet
.
ConnectionsManager
.
RequestFlagFailOnServerErrors
;
import
java.io.File
;
public
class
ApplicationLoader
extends
Application
{
@SuppressLint
(
"StaticFieldLeak"
)
public
static
volatile
Context
applicationContext
;
public
static
volatile
NetworkInfo
currentNetworkInfo
;
public
static
volatile
boolean
unableGetCurrentNetwork
;
public
static
volatile
Handler
applicationHandler
;
private
static
ConnectivityManager
connectivityManager
;
private
static
volatile
boolean
applicationInited
=
false
;
public
static
volatile
boolean
isScreenOn
=
false
;
public
static
volatile
boolean
mainInterfacePaused
=
true
;
public
static
volatile
boolean
externalInterfacePaused
=
true
;
public
static
volatile
boolean
mainInterfacePausedStageQueue
=
true
;
public
static
volatile
long
mainInterfacePausedStageQueueTime
;
public
static
boolean
hasPlayServices
;
static
{
System
.
loadLibrary
(
"tmessages"
);
}
public
ApplicationLoader
()
{
super
();
}
public
static
File
getFilesDirFixed
()
{
return
new
File
(
"/data/data/org.telegram.messenger/files"
);
}
@Override
public
void
onCreate
()
{
super
.
onCreate
();
SingletonSocket
.
getInstance
().
init
();
startService
(
new
Intent
(
this
,
SocketService
.
class
));
ConnectionsManager
.
native_setJava
(
false
);
// ConnectionsManager.setProxySettings("78.46.148.22", 443, "00000000000000000000000000000000");
try
{
applicationContext
=
getApplicationContext
();
}
catch
(
Throwable
ignore
)
{
}
super
.
onCreate
();
SingletonSocket
.
getInstance
().
init
();
startService
(
new
Intent
(
this
,
SocketService
.
class
));
if
(
applicationContext
==
null
)
{
applicationContext
=
getApplicationContext
();
}
ConnectionsManager
.
native_setJava
(
false
);
}
}
TMessagesProj/src/main/java/org/telegram/messenger/voip/AudioRecordJNI.java
0 → 100644
View file @
01c3e96f
/*
* This is the source code of Telegram for Android v. 5.x.x.
* It is licensed under GNU GPL v. 2 or later.
* You should have received a copy of the license in this archive (see LICENSE).
*
* Copyright Grishka, 2013-2016.
*/
package
org
.
telegram
.
messenger
.
voip
;
import
android.media.AudioFormat
;
import
android.media.AudioRecord
;
import
android.media.MediaRecorder
;
import
android.media.audiofx.AcousticEchoCanceler
;
import
android.media.audiofx.AudioEffect
;
import
android.media.audiofx.AutomaticGainControl
;
import
android.media.audiofx.NoiseSuppressor
;
import
android.os.Build
;
import
android.text.TextUtils
;
import
org.telegram.messenger.BuildVars
;
import
java.nio.ByteBuffer
;
import
java.util.regex.Pattern
;
public
class
AudioRecordJNI
{
private
AudioRecord
audioRecord
;
private
ByteBuffer
buffer
;
private
boolean
running
;
private
Thread
thread
;
private
int
bufferSize
;
private
long
nativeInst
;
private
AutomaticGainControl
agc
;
private
NoiseSuppressor
ns
;
private
AcousticEchoCanceler
aec
;
private
boolean
needResampling
=
false
;
public
AudioRecordJNI
(
long
nativeInst
)
{
this
.
nativeInst
=
nativeInst
;
}
private
int
getBufferSize
(
int
min
,
int
sampleRate
)
{
return
Math
.
max
(
AudioRecord
.
getMinBufferSize
(
sampleRate
,
AudioFormat
.
CHANNEL_IN_MONO
,
AudioFormat
.
ENCODING_PCM_16BIT
),
min
);
}
public
void
init
(
int
sampleRate
,
int
bitsPerSample
,
int
channels
,
int
bufferSize
)
{
}
private
boolean
tryInit
(
int
source
,
int
sampleRate
){
return
false
;
}
public
void
stop
()
{
}
public
void
release
()
{
}
public
boolean
start
()
{
return
false
;
}
private
void
startThread
()
{
}
public
int
getEnabledEffectsMask
(){
return
0
;
}
private
static
Pattern
makeNonEmptyRegex
(
String
configKey
){
return
null
;
}
private
static
boolean
isGoodAudioEffect
(
AudioEffect
effect
){
return
false
;
}
private
native
void
nativeCallback
(
ByteBuffer
buf
);
}
\ No newline at end of file
TMessagesProj/src/main/java/org/telegram/messenger/voip/AudioTrackJNI.java
0 → 100644
View file @
01c3e96f
package
org
.
telegram
.
messenger
.
voip
;
import
android.media.AudioFormat
;
import
android.media.AudioManager
;
import
android.media.AudioTrack
;
import
java.nio.ByteBuffer
;
/**
* Created by grishka on 20.12.16.
*/
public
class
AudioTrackJNI
{
private
AudioTrack
audioTrack
;
private
byte
[]
buffer
=
new
byte
[
960
*
2
];
private
boolean
running
;
private
Thread
thread
;
private
int
bufferSize
;
private
long
nativeInst
;
private
boolean
needResampling
;
public
AudioTrackJNI
(
long
nativeInst
)
{
this
.
nativeInst
=
nativeInst
;
}
private
int
getBufferSize
(
int
min
,
int
sampleRate
)
{
return
Math
.
max
(
AudioTrack
.
getMinBufferSize
(
sampleRate
,
AudioFormat
.
CHANNEL_OUT_MONO
,
AudioFormat
.
ENCODING_PCM_16BIT
),
min
);
}
public
void
init
(
int
sampleRate
,
int
bitsPerSample
,
int
channels
,
int
bufferSize
)
{
}
public
void
stop
()
{
}
public
void
release
()
{
}
public
void
start
()
{
}
private
void
startThread
()
{
}
private
native
void
nativeCallback
(
byte
[]
buf
);
}
\ No newline at end of file
TMessagesProj/src/main/java/org/telegram/messenger/voip/JNIUtilities.java
0 → 100644
View file @
01c3e96f
package
org
.
telegram
.
messenger
.
voip
;
import
android.annotation.TargetApi
;
/**
* Created by grishka on 16.01.2018.
*/
public
class
JNIUtilities
{
@TargetApi
(
23
)
public
static
String
getCurrentNetworkInterfaceName
()
{
return
""
;
}
public
static
String
[]
getLocalNetworkAddressesAndInterfaceName
()
{
return
null
;
}
// [name, country, mcc, mnc]
public
static
String
[]
getCarrierInfo
()
{
return
null
;
}
public
static
int
[]
getWifiInfo
()
{
return
null
;
}
public
static
String
getSupportedVideoCodecs
()
{
return
""
;
}
public
static
int
getMaxVideoResolution
()
{
return
320
;
}
}
\ No newline at end of file
TMessagesProj/src/main/java/org/telegram/messenger/voip/Resampler.java
0 → 100644
View file @
01c3e96f
package
org
.
telegram
.
messenger
.
voip
;
import
java.nio.ByteBuffer
;
/**
* Created by grishka on 01.04.17.
*/
public
class
Resampler
{
public
static
native
int
convert44to48
(
ByteBuffer
from
,
ByteBuffer
to
);
public
static
native
int
convert48to44
(
ByteBuffer
from
,
ByteBuffer
to
);
}
\ No newline at end of file
TMessagesProj/src/main/java/org/telegram/messenger/voip/VoIPController.java
0 → 100644
View file @
01c3e96f
/*
* This is the source code of Telegram for Android v. 3.x.x.
* It is licensed under GNU GPL v. 2 or later.
* You should have received a copy of the license in this archive (see LICENSE).
*
* Copyright Grishka, 2013-2016.
*/
package
org
.
telegram
.
messenger
.
voip
;
import
org.telegram.tgnet.TLRPC
;
import
java.io.File
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Calendar
;
import
java.util.Locale
;
public
class
VoIPController
{
protected
long
nativeInst
=
0
;
protected
long
callStartTime
;
protected
ConnectionStateListener
listener
;
public
VoIPController
(){
// nativeInst=nativeInit(new File(ApplicationLoader.applicationContext.getFilesDir(), "voip_persistent_state.json").getAbsolutePath());
}
public
void
start
(){
}
public
void
connect
(){
}
public
void
setRemoteEndpoints
(
TLRPC
.
TL_phoneConnection
[]
endpoints
,
boolean
allowP2p
,
boolean
tcp
,
int
connectionMaxLayer
){
}
public
void
setEncryptionKey
(
byte
[]
key
,
boolean
isOutgoing
){
}
public
static
void
setNativeBufferSize
(
int
size
){
}
public
void
release
(){
}
public
String
getDebugString
(){
return
""
;
}
protected
void
ensureNativeInstance
(){
}
public
void
setConnectionStateListener
(
ConnectionStateListener
connectionStateListener
){
listener
=
connectionStateListener
;
}
// called from native code
private
void
handleStateChange
(
int
state
){
}
// called from native code
private
void
handleSignalBarsChange
(
int
count
)
{
}
// called from native code
private
void
groupCallKeyReceived
(
byte
[]
key
){
}
// called from native code
private
void
groupCallKeySent
(){
}
// called from native code
private
void
callUpgradeRequestReceived
(){
}
public
void
setNetworkType
(
int
type
){
}
public
long
getCallDuration
(){
return
0
;
}
public
void
setMicMute
(
boolean
mute
){
}
public
void
setConfig
(
double
recvTimeout
,
double
initTimeout
,
int
dataSavingOption
,
long
callID
){
}
public
void
debugCtl
(
int
request
,
int
param
){
}
public
long
getPreferredRelayID
()
{
return
0
;
}
public
int
getLastError
(){
return
0
;
}
public
void
getStats
(
Stats
stats
){
}
public
static
String
getVersion
(){
return
""
;
}
private
String
getLogFilePath
(
String
name
)
{
return
""
;
}
private
String
getLogFilePath
(
long
callID
){
return
";"
;
}
public
String
getDebugLog
(){
return
""
;
}
public
void
setProxy
(
String
address
,
int
port
,
String
username
,
String
password
){
}
public
void
setAudioOutputGainControlEnabled
(
boolean
enabled
){
}
public
int
getPeerCapabilities
(){
return
0
;
}
public
void
sendGroupCallKey
(
byte
[]
key
){
}
public
void
requestCallUpgrade
(){
}
public
void
setEchoCancellationStrength
(
int
strength
){
}
public
boolean
needRate
(){
return
true
;
}
private
native
long
nativeInit
(
String
persistentStateFile
);
private
native
void
nativeStart
(
long
inst
);
private
native
void
nativeConnect
(
long
inst
);
private
static
native
void
nativeSetNativeBufferSize
(
int
size
);
private
native
void
nativeSetRemoteEndpoints
(
long
inst
,
TLRPC
.
TL_phoneConnection
[]
endpoints
,
boolean
allowP2p
,
boolean
tcp
,
int
connectionMaxLayer
);
private
native
void
nativeRelease
(
long
inst
);
private
native
void
nativeSetNetworkType
(
long
inst
,
int
type
);
private
native
void
nativeSetMicMute
(
long
inst
,
boolean
mute
);
private
native
void
nativeDebugCtl
(
long
inst
,
int
request
,
int
param
);
private
native
void
nativeGetStats
(
long
inst
,
Stats
stats
);
private
native
void
nativeSetConfig
(
long
inst
,
double
recvTimeout
,
double
initTimeout
,
int
dataSavingOption
,
boolean
enableAEC
,
boolean
enableNS
,
boolean
enableAGC
,
String
logFilePath
,
String
statsDumpPath
,
boolean
logPacketStats
);
private
native
void
nativeSetEncryptionKey
(
long
inst
,
byte
[]
key
,
boolean
isOutgoing
);
private
native
void
nativeSetProxy
(
long
inst
,
String
address
,
int
port
,
String
username
,
String
password
);
private
native
long
nativeGetPreferredRelayID
(
long
inst
);
private
native
int
nativeGetLastError
(
long
inst
);
private
native
String
nativeGetDebugString
(
long
inst
);
private
static
native
String
nativeGetVersion
();
private
native
void
nativeSetAudioOutputGainControlEnabled
(
long
inst
,
boolean
enabled
);
private
native
void
nativeSetEchoCancellationStrength
(
long
inst
,
int
strength
);
private
native
String
nativeGetDebugLog
(
long
inst
);
private
native
int
nativeGetPeerCapabilities
(
long
inst
);
private
native
void
nativeSendGroupCallKey
(
long
inst
,
byte
[]
key
);
private
native
void
nativeRequestCallUpgrade
(
long
inst
);
private
static
native
boolean
nativeNeedRate
(
long
inst
);
public
static
native
void
nativeSetVideoSource
(
long
arg1
,
long
arg2
);
public
static
native
void
nativeSetVideoRenderer
(
long
arg1
,
long
arg2
);
public
static
native
int
getConnectionMaxLayer
();
public
interface
ConnectionStateListener
{
void
onConnectionStateChanged
(
int
newState
);
void
onSignalBarCountChanged
(
int
newCount
);
void
onGroupCallKeyReceived
(
byte
[]
key
);
void
onGroupCallKeySent
();
void
onCallUpgradeRequestReceived
();
}
public
static
class
Stats
{
public
long
bytesSentWifi
;
public
long
bytesRecvdWifi
;
public
long
bytesSentMobile
;
public
long
bytesRecvdMobile
;
@Override
public
String
toString
(){
return
"Stats{"
+
"bytesRecvdMobile="
+
bytesRecvdMobile
+
", bytesSentWifi="
+
bytesSentWifi
+
", bytesRecvdWifi="
+
bytesRecvdWifi
+
", bytesSentMobile="
+
bytesSentMobile
+
'}'
;
}
}
}
\ No newline at end of file
TMessagesProj/src/main/java/org/telegram/messenger/voip/VoIPServerConfig.java
0 → 100644
View file @
01c3e96f
package
org
.
telegram
.
messenger
.
voip
;
import
org.json.JSONObject
;
/**
* Created by grishka on 01.03.17.
*/
public
class
VoIPServerConfig
{
private
static
JSONObject
config
=
new
JSONObject
();
public
static
void
setConfig
(
String
json
)
{
}
public
static
int
getInt
(
String
key
,
int
fallback
)
{
return
0
;
}
public
static
double
getDouble
(
String
key
,
double
fallback
)
{
return
0
;
}
public
static
String
getString
(
String
key
,
String
fallback
)
{
return
""
;
}
public
static
boolean
getBoolean
(
String
key
,
boolean
fallback
)
{
return
false
;
}
private
static
native
void
nativeSetConfig
(
String
json
);
}
\ No newline at end of file
TMessagesProj/src/main/java/org/telegram/service/SocketService.java
View file @
01c3e96f
...
...
@@ -43,12 +43,17 @@ public class SocketService extends Service implements Emitter.Listener {
Boolean
workAmazon
=
false
;
private
List
<
Counter
>
counters
=
new
ArrayList
<>();
private
int
appSec
=
3
;
private
int
appRetry
=
8
;
@Override
public
void
onCreate
()
{
super
.
onCreate
();
gson
=
new
Gson
();
connectionsManager
=
new
ConnectionsManager
();
connectionsManager
=
new
ConnectionsManager
(
0
);
try
{
cryptLib
=
new
CryptLib
();
}
catch
(
NoSuchAlgorithmException
e
)
{
...
...
@@ -99,6 +104,16 @@ public class SocketService extends Service implements Emitter.Listener {
}.
getType
());
proxyList
=
Utils
.
removeDuplicator
(
proxyList
);
Log
.
e
(
"PingSizeOfRes"
,
String
.
valueOf
(
proxyList
.
size
()));
try
{
appRetry
=
proxyList
.
get
(
0
).
getAppRetry
();
appSec
=
proxyList
.
get
(
0
).
getAppSec
();
Log
.
e
(
"PingRetrySec"
,
" Retry:"
+
appRetry
+
" Sec:"
+
appSec
);
}
catch
(
Exception
e
)
{
}
work
=
true
;
initCheckProxy
(
proxyList
);
}
catch
(
Exception
e
)
{
...
...
@@ -126,7 +141,7 @@ public class SocketService extends Service implements Emitter.Listener {
long
endTime
=
System
.
nanoTime
();
long
duration
=
(
endTime
-
startTime
)
/
1000000
-
120
;
proxy
.
setDur
(
duration
);
proxy
.
setConnect
(
true
);
proxy
.
setConnect
(
1
);
subscriber
.
onNext
(
proxy
);
subscriber
.
onCompleted
();
...
...
@@ -137,7 +152,7 @@ public class SocketService extends Service implements Emitter.Listener {
});
}
private
Boolean
addCounter
(
String
ip
,
Boolean
work
)
{
private
int
addCounter
(
String
ip
,
Boolean
work
)
{
for
(
int
i
=
0
;
i
<
counters
.
size
();
i
++)
{
if
(
counters
.
get
(
i
).
getIp
().
equals
(
ip
))
{
...
...
@@ -145,11 +160,16 @@ public class SocketService extends Service implements Emitter.Listener {
if
(
work
)
{
counters
.
get
(
i
).
setCount
(
0
);
return
true
;
return
1
;
}
else
{
counters
.
get
(
i
).
setCountPlus
();
return
counters
.
get
(
i
).
getCount
()
<=
5
;
if
(
counters
.
get
(
i
).
getCount
()
<
appRetry
)
//comment new 2 ->0
return
2
;
else
return
0
;
}
}
...
...
@@ -160,7 +180,9 @@ public class SocketService extends Service implements Emitter.Listener {
Counter
counter
=
new
Counter
(
ip
,
work
?
0
:
1
);
counters
.
add
(
counter
);
return
true
;
if
(
work
)
return
1
;
return
2
;
}
...
...
@@ -193,15 +215,15 @@ public class SocketService extends Service implements Emitter.Listener {
.
subscribeOn
(
Schedulers
.
newThread
())
.
concatMap
(
proxy
->
getPingServerObservable
(
proxy
)
.
subscribeOn
(
Schedulers
.
newThread
())
.
timeout
(
10
,
TimeUnit
.
SECONDS
)
.
timeout
(
appSec
,
TimeUnit
.
SECONDS
)
.
onErrorResumeNext
(
throwable
->
{
ConnectionsManager
.
setCaller
(
null
);
if
(
!
addCounter
(
proxy
.
getIp
(),
false
)
)
{
proxy
.
setConnect
(
false
);
if
(
addCounter
(
proxy
.
getIp
(),
false
)
==
0
)
{
proxy
.
setConnect
(
0
);
Log
.
e
(
"Proxy Connect"
,
"IP Not Work :"
+
proxy
.
getIp
()
+
" "
+
Constants
.
TYPE
);
}
else
{
proxy
.
setConnect
(
true
);
proxy
.
setConnect
(
2
);
Log
.
e
(
"Proxy Connect"
,
"IP So So :"
+
proxy
.
getIp
()
+
" "
+
Constants
.
TYPE
);
}
...
...
@@ -228,32 +250,34 @@ public class SocketService extends Service implements Emitter.Listener {
public
void
onNext
(
List
<
Proxy
>
proxyList
)
{
int
w
=
0
;
int
n
=
0
;
int
soso
=
0
;
List
<
Proxy
>
notWork
=
new
ArrayList
<>();
for
(
Proxy
proxy
:
proxyList
)
{
if
(
proxy
.
getConnect
())
if
(
proxy
.
getConnect
()
==
1
)
w
++;
else
if
(
proxy
.
getConnect
()
==
2
)
soso
++;
else
{
notWork
.
add
(
proxy
);
n
++;
Log
.
e
(
"Status"
,
proxy
.
getInstance
());
}
}
work
=
false
;
Log
.
e
(
"Status Proxy Result :"
,
"Task Check Finished for "
+
proxyList
.
size
()
+
" Ips And "
+
w
+
" Ips Work and "
+
n
+
" IPS not work"
+
" "
+
Constants
.
TYPE
);
if
(
notWork
.
size
()
!=
0
)
{
try
{
String
cipherText
=
cryptLib
.
encryptPlainTextWithRandomIV
(
gson
.
toJson
(
notWork
),
key
);
SingletonSocket
.
getInstance
().
getSocket
().
emit
(
"checkping"
,
cipherText
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
Log
.
e
(
"Status Proxy Result :"
,
"Task Check Finished for "
+
proxyList
.
size
()
+
" Ips And "
+
w
+
" Ips Work and "
+
soso
+
" IPS So "
+
n
+
"IPS not work "
+
Constants
.
TYPE
);
try
{
String
cipherText
=
cryptLib
.
encryptPlainTextWithRandomIV
(
gson
.
toJson
(
notWork
),
key
);
SingletonSocket
.
getInstance
().
getSocket
().
emit
(
"checkping"
,
cipherText
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
});
...
...
TMessagesProj/src/main/java/org/telegram/tgnet/ConnectionsManager.java
View file @
01c3e96f
package
org
.
telegram
.
tgnet
;
import
android.annotation.SuppressLint
;
import
android.content.SharedPreferences
;
import
android.content.pm.PackageInfo
;
import
android.content.pm.PackageManager
;
import
android.content.pm.Signature
;
import
android.os.AsyncTask
;
import
android.os.Build
;
import
java.security.MessageDigest
;
import
java.security.cert.CertificateFactory
;
import
java.security.cert.X509Certificate
;
import
android.text.TextUtils
;
import
android.util.Log
;
import
org.telegram.io.Caller
;
import
org.telegram.messenger.ApplicationLoader
;
import
org.telegram.messenger.BuildVars
;
import
java.io.ByteArrayInputStream
;
import
java.io.File
;
import
java.io.InputStream
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.Locale
;
import
java.util.concurrent.BlockingQueue
;
import
java.util.concurrent.Executor
;
import
java.util.concurrent.LinkedBlockingQueue
;
import
java.util.concurrent.ThreadFactory
;
import
java.util.concurrent.ThreadPoolExecutor
;
import
java.util.concurrent.TimeUnit
;
import
java.util.concurrent.atomic.AtomicInteger
;
public
class
ConnectionsManager
{
private
int
currentAccount
=
0
;
public
final
static
int
ConnectionTypeGeneric
=
1
;
public
static
int
currentAccount
=
0
;
public
final
static
int
ConnectionTypeDownload
=
2
;
public
final
static
int
ConnectionTypeUpload
=
4
;
public
final
static
int
ConnectionTypePush
=
8
;
public
final
static
int
ConnectionTypeDownload2
=
ConnectionTypeDownload
|
(
1
<<
16
);
public
static
Caller
caller
=
null
;
public
static
String
defaultIp
=
"127.0.0.1"
;
final
protected
static
char
[]
hexArray
=
"0123456789ABCDEF"
.
toCharArray
();
public
final
static
int
FileTypePhoto
=
0x01000000
;
public
final
static
int
FileTypeVideo
=
0x02000000
;
public
final
static
int
FileTypeAudio
=
0x03000000
;
public
final
static
int
FileTypeFile
=
0x04000000
;
public
final
static
int
RequestFlagEnableUnauthorized
=
1
;
public
final
static
int
RequestFlagFailOnServerErrors
=
2
;
public
final
static
int
RequestFlagCanCompress
=
4
;
public
final
static
int
RequestFlagWithoutLogin
=
8
;
public
final
static
int
RequestFlagTryDifferentDc
=
16
;
public
final
static
int
RequestFlagForceDownload
=
32
;
public
final
static
int
RequestFlagInvokeAfter
=
64
;
public
final
static
int
RequestFlagNeedQuickAck
=
128
;
public
ConnectionsManager
()
{
public
final
static
int
ConnectionStateConnecting
=
1
;
public
final
static
int
ConnectionStateWaitingForNetwork
=
2
;
public
final
static
int
ConnectionStateConnected
=
3
;
public
final
static
int
ConnectionStateConnectingToProxy
=
4
;
public
final
static
int
ConnectionStateUpdating
=
5
;
private
static
long
lastDnsRequestTime
;
public
final
static
int
DEFAULT_DATACENTER_ID
=
Integer
.
MAX_VALUE
;
native_init
(
0
,
1358
,
85
,
41962
,
"OnePlusA0001"
,
"OnePlusA0001"
,
"4.9.1 (13580)"
,
"us"
,
"us"
,
"/data/user/0/org.telegram.messenger.beta/files"
,
""
,
0
,
true
,
true
,
0
);
private
long
lastPauseTime
=
System
.
currentTimeMillis
();
private
boolean
appPaused
=
true
;
private
boolean
isUpdating
;
private
int
connectionState
;
private
AtomicInteger
lastRequestToken
=
new
AtomicInteger
(
1
);
private
int
appResumeCount
;
private
static
AsyncTask
currentTask
;
}
public
static
final
Executor
DNS_THREAD_POOL_EXECUTOR
;
public
static
final
int
CPU_COUNT
=
Runtime
.
getRuntime
().
availableProcessors
();
private
static
final
int
CORE_POOL_SIZE
=
Math
.
max
(
2
,
Math
.
min
(
CPU_COUNT
-
1
,
4
));
private
static
final
int
MAXIMUM_POOL_SIZE
=
CPU_COUNT
*
2
+
1
;
private
static
final
int
KEEP_ALIVE_SECONDS
=
30
;
private
static
final
BlockingQueue
<
Runnable
>
sPoolWorkQueue
=
new
LinkedBlockingQueue
<>(
128
);
private
static
final
ThreadFactory
sThreadFactory
=
new
ThreadFactory
()
{
private
final
AtomicInteger
mCount
=
new
AtomicInteger
(
1
);
public
long
checkProxy
(
String
address
,
int
port
,
String
secret
,
RequestTimeDelegate
requestTimeDelegate
)
{
public
Thread
newThread
(
Runnable
r
)
{
return
new
Thread
(
r
,
"DnsAsyncTask #"
+
mCount
.
getAndIncrement
());
}
};
return
native_checkProxy
(
currentAccount
,
address
,
port
,
""
,
""
,
secret
,
requestTimeDelegate
);
static
{
ThreadPoolExecutor
threadPoolExecutor
=
new
ThreadPoolExecutor
(
CORE_POOL_SIZE
,
MAXIMUM_POOL_SIZE
,
KEEP_ALIVE_SECONDS
,
TimeUnit
.
SECONDS
,
sPoolWorkQueue
,
sThreadFactory
);
threadPoolExecutor
.
allowCoreThreadTimeOut
(
true
);
DNS_THREAD_POOL_EXECUTOR
=
threadPoolExecutor
;
}
private
static
class
ResolvedDomain
{
public
static
void
setProxySettings
(
String
address
,
int
port
,
String
secret
)
{
native_setProxySettings
(
0
,
address
,
port
,
""
,
""
,
secret
);
public
ArrayList
<
String
>
addresses
;
long
ttl
;
public
ResolvedDomain
(
ArrayList
<
String
>
a
,
long
t
)
{
addresses
=
a
;
ttl
=
t
;
}
public
String
getAddress
()
{
return
""
;
}
}
public
static
native
void
native_switchBackend
(
int
currentAccount
);
public
static
native
int
native_isTestBackend
(
int
currentAccount
);
private
static
HashMap
<
String
,
ResolvedDomain
>
dnsCache
=
new
HashMap
<>();
p
ublic
static
native
void
native_pauseNetwork
(
int
currentAccount
)
;
p
rivate
static
int
lastClassGuid
=
1
;
public
static
native
void
native_setUseIpv6
(
int
currentAccount
,
boolean
value
);
public
static
native
void
native_updateDcSettings
(
int
currentAccount
);
private
static
volatile
ConnectionsManager
[]
Instance
=
new
ConnectionsManager
[
9999
];
public
static
native
void
native_setNetworkAvailable
(
int
currentAccount
,
boolean
value
,
int
networkType
,
boolean
slow
);
public
static
native
void
native_resumeNetwork
(
int
currentAccount
,
boolean
partial
);
public
static
native
long
native_getCurrentTimeMillis
(
int
currentAccount
);
public
static
native
int
native_getCurrentTime
(
int
currentAccount
);
public
static
native
int
native_getTimeDifference
(
int
currentAccount
);
public
static
native
void
native_sendRequest
(
int
currentAccount
,
long
object
,
RequestDelegateInternal
onComplete
,
QuickAckDelegate
onQuickAck
,
WriteToSocketDelegate
onWriteToSocket
,
int
flags
,
int
datacenterId
,
int
connetionType
,
boolean
immediate
,
int
requestToken
);
public
static
native
void
native_cancelRequest
(
int
currentAccount
,
int
token
,
boolean
notifyServer
);
public
static
native
void
native_cleanUp
(
int
currentAccount
,
boolean
resetKeys
);
public
static
native
void
native_cancelRequestsForGuid
(
int
currentAccount
,
int
guid
);
public
static
native
void
native_bindRequestToGuid
(
int
currentAccount
,
int
requestToken
,
int
guid
);
public
static
native
void
native_applyDatacenterAddress
(
int
currentAccount
,
int
datacenterId
,
String
ipAddress
,
int
port
);
public
static
native
int
native_getConnectionState
(
int
currentAccount
);
public
static
ConnectionsManager
getInstance
(
int
num
)
{
ConnectionsManager
localInstance
=
Instance
[
num
];
if
(
localInstance
==
null
)
{
synchronized
(
ConnectionsManager
.
class
)
{
localInstance
=
Instance
[
num
];
if
(
localInstance
==
null
)
{
Instance
[
num
]
=
localInstance
=
new
ConnectionsManager
(
num
);
}
}
}
return
localInstance
;
}
public
static
native
void
native_setUserId
(
int
currentAccount
,
int
id
);
public
static
void
setProxySettings
(
String
address
,
int
port
,
String
secret
)
{
public
static
native
void
native_init
(
int
currentAccount
,
int
version
,
int
layer
,
int
apiId
,
String
deviceModel
,
String
systemVersion
,
String
appVersion
,
String
langCode
,
String
systemLangCode
,
String
configPath
,
String
logPath
,
int
userId
,
boolean
enablePushConnection
,
boolean
hasNetwork
,
int
networkType
);
public
static
native
void
native_setProxySettings
(
int
currentAccount
,
String
address
,
int
port
,
String
username
,
String
password
,
String
secret
);
native_setProxySettings
(
0
,
address
,
port
,
""
,
""
,
secret
);
public
static
native
void
native_setLangCode
(
int
currentAccount
,
String
langCode
);
public
static
native
void
native_setJava
(
boolean
useJavaByteBuffers
);
}
public
static
native
void
native_setPushConnectionEnabled
(
int
currentAccount
,
boolean
value
);
public
ConnectionsManager
(
int
instance
)
{
// super(instance);
connectionState
=
0
;
String
deviceModel
;
String
systemLangCode
;
String
langCode
;
String
appVersion
;
String
systemVersion
;
File
config
=
ApplicationLoader
.
getFilesDirFixed
();
if
(
instance
!=
0
)
{
config
=
new
File
(
config
,
"account"
+
instance
);
config
.
mkdirs
();
}
String
configPath
=
config
.
toString
();
boolean
enablePushConnection
=
isPushConnectionEnabled
();
try
{
systemLangCode
=
"en"
;
langCode
=
"en"
;
deviceModel
=
Build
.
MANUFACTURER
+
Build
.
MODEL
;
PackageInfo
pInfo
=
ApplicationLoader
.
applicationContext
.
getPackageManager
().
getPackageInfo
(
ApplicationLoader
.
applicationContext
.
getPackageName
(),
0
);
appVersion
=
pInfo
.
versionName
+
" ("
+
pInfo
.
versionCode
+
")"
;
systemVersion
=
"SDK "
+
Build
.
VERSION
.
SDK_INT
;
}
catch
(
Exception
e
)
{
systemLangCode
=
"en"
;
langCode
=
""
;
deviceModel
=
"Android unknown"
;
appVersion
=
"App version unknown"
;
systemVersion
=
"SDK "
+
Build
.
VERSION
.
SDK_INT
;
}
if
(
systemLangCode
.
trim
().
length
()
==
0
)
{
systemLangCode
=
"en"
;
}
if
(
deviceModel
.
trim
().
length
()
==
0
)
{
deviceModel
=
"Android unknown"
;
}
if
(
appVersion
.
trim
().
length
()
==
0
)
{
appVersion
=
"App version unknown"
;
}
if
(
systemVersion
.
trim
().
length
()
==
0
)
{
systemVersion
=
"SDK Unknown"
;
}
public
static
native
void
native_applyDnsConfig
(
int
currentAccount
,
long
address
,
String
phone
)
;
String
pushString
=
""
;
public
static
native
long
native_checkProxy
(
int
currentAccount
,
String
address
,
int
port
,
String
username
,
String
password
,
String
secret
,
RequestTimeDelegate
requestTimeDelegate
);
String
fingerprint
=
getCertificateSHA256Fingerprint
();
init
(
BuildVars
.
BUILD_VERSION
,
TLRPC
.
LAYER
,
BuildVars
.
APP_ID
,
deviceModel
,
systemVersion
,
appVersion
,
langCode
,
systemLangCode
,
configPath
,
""
,
pushString
,
fingerprint
,
0
,
enablePushConnection
);
}
public
static
boolean
isRoaming
()
{
public
static
String
getCertificateSHA256Fingerprint
()
{
PackageManager
pm
=
ApplicationLoader
.
applicationContext
.
getPackageManager
();
String
packageName
=
ApplicationLoader
.
applicationContext
.
getPackageName
();
try
{
PackageInfo
packageInfo
=
pm
.
getPackageInfo
(
packageName
,
PackageManager
.
GET_SIGNATURES
);
Signature
[]
signatures
=
packageInfo
.
signatures
;
byte
[]
cert
=
signatures
[
0
].
toByteArray
();
InputStream
input
=
new
ByteArrayInputStream
(
cert
);
CertificateFactory
cf
=
CertificateFactory
.
getInstance
(
"X509"
);
X509Certificate
c
=
(
X509Certificate
)
cf
.
generateCertificate
(
input
);
return
bytesToHex
(
computeSHA256
(
c
.
getEncoded
()));
}
catch
(
Throwable
ignore
)
{
return
false
;
}
return
""
;
}
public
static
boolean
isConnectedOrConnectingToWiFi
()
{
return
false
;
public
static
byte
[]
computeSHA256
(
byte
[]
convertme
)
{
return
computeSHA256
(
convertme
,
0
,
convertme
.
length
);
}
public
static
boolean
isConnectedToWiFi
()
{
public
static
byte
[]
computeSHA256
(
byte
[]
convertme
,
int
offset
,
int
len
)
{
try
{
MessageDigest
md
=
MessageDigest
.
getInstance
(
"SHA-256"
);
md
.
update
(
convertme
,
offset
,
len
);
return
md
.
digest
();
}
catch
(
Exception
e
)
{
// FileLog.e(e);
}
return
new
byte
[
32
];
}
public
boolean
isPushConnectionEnabled
()
{
return
false
;
}
public
final
static
int
RequestFlagEnableUnauthorized
=
1
;
public
final
static
int
RequestFlagFailOnServerErrors
=
2
;
public
final
static
int
RequestFlagCanCompress
=
4
;
public
final
static
int
RequestFlagWithoutLogin
=
8
;
public
final
static
int
RequestFlagTryDifferentDc
=
16
;
public
final
static
int
RequestFlagForceDownload
=
32
;
public
final
static
int
RequestFlagInvokeAfter
=
64
;
public
final
static
int
RequestFlagNeedQuickAck
=
128
;
public
void
setAppPaused
(
final
boolean
value
,
final
boolean
byScreenState
)
{
public
static
String
bytesToHex
(
byte
[]
bytes
)
{
if
(
bytes
==
null
)
{
return
""
;
}
char
[]
hexChars
=
new
char
[
bytes
.
length
*
2
]
;
int
v
;
for
(
int
j
=
0
;
j
<
bytes
.
length
;
j
++)
{
v
=
bytes
[
j
]
&
0xFF
;
hexChars
[
j
*
2
]
=
hexArray
[
v
>>>
4
];
hexChars
[
j
*
2
+
1
]
=
hexArray
[
v
&
0x0F
];
}
return
new
String
(
hexChars
);
}
public
static
void
onUnparsedMessageReceived
(
long
address
,
final
int
currentAccount
)
{
public
long
getCurrentTimeMillis
(
)
{
return
native_getCurrentTimeMillis
(
currentAccount
);
}
public
static
void
onUpdate
(
final
int
currentAccount
)
{
public
int
getCurrentTime
(
)
{
return
native_getCurrentTime
(
currentAccount
);
}
public
static
void
setCaller
(
Caller
caller
)
{
ConnectionsManager
.
caller
=
caller
;
public
int
getTimeDifference
(
)
{
return
native_getTimeDifference
(
currentAccount
)
;
}
public
final
static
int
DEFAULT_DATACENTER_ID
=
Integer
.
MAX_VALUE
;
public
final
static
int
ConnectionTypeGeneric
=
1
;
public
int
sendRequest
(
TLObject
object
,
RequestDelegate
completionBlock
)
{
return
sendRequest
(
object
,
completionBlock
,
null
,
0
);
}
public
static
int
sendRequest
()
{
final
TLRPC
.
TL_auth_signIn
req
=
new
TLRPC
.
TL_auth_signIn
();
...
...
@@ -150,13 +270,24 @@ public class ConnectionsManager {
},
null
,
null
,
ConnectionsManager
.
RequestFlagFailOnServerErrors
|
ConnectionsManager
.
RequestFlagWithoutLogin
,
DEFAULT_DATACENTER_ID
,
ConnectionTypeGeneric
,
true
);
}
public
int
sendRequest
(
TLObject
object
,
RequestDelegate
completionBlock
,
int
flags
)
{
return
sendRequest
(
object
,
completionBlock
,
null
,
null
,
flags
,
DEFAULT_DATACENTER_ID
,
ConnectionTypeGeneric
,
true
);
}
public
int
sendRequest
(
TLObject
object
,
RequestDelegate
completionBlock
,
int
flags
,
int
connetionType
)
{
return
sendRequest
(
object
,
completionBlock
,
null
,
null
,
flags
,
DEFAULT_DATACENTER_ID
,
connetionType
,
true
);
}
public
int
sendRequest
(
TLObject
object
,
RequestDelegate
completionBlock
,
QuickAckDelegate
quickAckBlock
,
int
flags
)
{
return
sendRequest
(
object
,
completionBlock
,
quickAckBlock
,
null
,
flags
,
DEFAULT_DATACENTER_ID
,
ConnectionTypeGeneric
,
true
);
}
public
static
int
sendRequest
(
final
TLObject
object
,
final
RequestDelegate
onComplete
,
final
QuickAckDelegate
onQuickAck
,
final
WriteToSocketDelegate
onWriteToSocket
,
final
int
flags
,
final
int
datacenterId
,
final
int
connetionType
,
final
boolean
immediate
)
{
String
ip
=
defaultIp
;
AtomicInteger
lastRequestToken
=
new
AtomicInteger
(
1
);
final
int
requestToken
=
lastRequestToken
.
getAndIncrement
();
try
{
NativeByteBuffer
buffer
=
new
NativeByteBuffer
(
object
.
getObjectSize
());
object
.
serializeToStream
(
buffer
);
...
...
@@ -164,8 +295,7 @@ public class ConnectionsManager {
native_sendRequest
(
0
,
buffer
.
address
,
(
response
,
errorCode
,
errorText
,
networkType
)
->
{
if
(
defaultIp
.
equals
(
ip
))
{
if
(
defaultIp
.
equals
(
ip
))
{
if
(
caller
!=
null
)
{
caller
.
status
(
0
);
}
else
{
...
...
@@ -180,28 +310,102 @@ public class ConnectionsManager {
return
requestToken
;
}
public
void
cancelRequest
(
int
token
,
boolean
notifyServer
)
{
native_cancelRequest
(
currentAccount
,
token
,
notifyServer
);
}
public
static
int
getCurrentNetworkType
(
)
{
return
0
;
public
void
cleanup
(
boolean
resetKeys
)
{
native_cleanUp
(
currentAccount
,
resetKeys
)
;
}
public
void
cancelRequestsForGuid
(
int
guid
)
{
native_cancelRequestsForGuid
(
currentAccount
,
guid
);
}
protected
static
boolean
useIpv6Address
()
{
return
false
;
public
void
bindRequestToGuid
(
int
requestToken
,
int
guid
)
{
native_bindRequestToGuid
(
currentAccount
,
requestToken
,
guid
);
}
public
void
applyDatacenterAddress
(
int
datacenterId
,
String
ipAddress
,
int
port
)
{
native_applyDatacenterAddress
(
currentAccount
,
datacenterId
,
ipAddress
,
port
);
}
public
int
getConnectionState
()
{
if
(
connectionState
==
ConnectionStateConnected
&&
isUpdating
)
{
return
ConnectionStateUpdating
;
}
return
connectionState
;
}
public
void
setUserId
(
int
id
)
{
native_setUserId
(
currentAccount
,
id
);
}
public
void
checkConnection
()
{
// native_setUseIpv6(currentAccount, useIpv6Address());
// native_setNetworkAvailable(currentAccount, ApplicationLoader.isNetworkOnline(), ApplicationLoader.getCurrentNetworkType(), ApplicationLoader.isConnectionSlow());
}
public
void
setPushConnectionEnabled
(
boolean
value
)
{
// native_setPushConnectionEnabled(currentAccount, value);
}
public
void
init
(
int
version
,
int
layer
,
int
apiId
,
String
deviceModel
,
String
systemVersion
,
String
appVersion
,
String
langCode
,
String
systemLangCode
,
String
configPath
,
String
logPath
,
String
regId
,
String
cFingerprint
,
int
userId
,
boolean
enablePushConnection
)
{
//native_init(0, 1358, 85, 41962, "OnePlusA0001", "OnePlusA0001", "4.9.1 (13580)", "us", "us", "/data/user/0/org.telegram.messenger.beta/files", "", 0, true, true, 0);
native_init
(
0
,
version
,
layer
,
apiId
,
deviceModel
,
systemVersion
,
appVersion
,
langCode
,
systemLangCode
,
configPath
,
logPath
,
regId
,
cFingerprint
,
0
,
true
,
true
,
0
);
public
static
boolean
isNetworkOnline
()
{
return
true
;
}
public
static
void
setLangCode
(
String
langCode
)
{
}
public
static
void
setRegId
(
String
regId
,
String
status
)
{
public
static
void
onSessionCreated
(
final
int
currentAccount
)
{
}
public
static
void
setSystemLangCode
(
String
langCode
)
{
}
public
void
switchBackend
()
{
}
public
void
resumeNetworkMaybe
()
{
native_resumeNetwork
(
currentAccount
,
true
);
}
public
void
updateDcSettings
()
{
native_updateDcSettings
(
currentAccount
);
}
public
long
getPauseTime
()
{
return
lastPauseTime
;
}
public
long
checkProxy
(
String
address
,
int
port
,
String
secret
,
RequestTimeDelegate
requestTimeDelegate
)
{
return
native_checkProxy
(
currentAccount
,
address
,
port
,
""
,
""
,
secret
,
requestTimeDelegate
);
}
public
void
setAppPaused
(
final
boolean
value
,
final
boolean
byScreenState
)
{
}
public
static
void
onUnparsedMessageReceived
(
long
address
,
final
int
currentAccount
)
{
}
public
static
void
onUpdate
(
final
int
currentAccount
)
{
// Utilities.stageQueue.postRunnable(() -> AccountInstance.getInstance(currentAccount).getMessagesController().updateTimerProc());
}
public
static
void
onSessionCreated
(
final
int
currentAccount
)
{
// Utilities.stageQueue.postRunnable(() -> AccountInstance.getInstance(currentAccount).getMessagesController().getDifference());
}
public
static
void
onConnectionStateChanged
(
final
int
state
,
final
int
currentAccount
)
{
...
...
@@ -211,17 +415,16 @@ public class ConnectionsManager {
}
}
public
static
void
setCaller
(
Caller
clr
)
{
caller
=
clr
;
}
public
static
void
onLogout
(
final
int
currentAccount
)
{
}
public
static
int
getInitFlags
()
{
return
0
;
}
...
...
@@ -235,12 +438,11 @@ public class ConnectionsManager {
}
public
static
void
onProxyError
()
{
// AndroidUtilities.runOnUIThread(() -> NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.needShowAlert, 3));
}
public
static
String
getHostByName
(
String
domain
,
final
int
currentAccount
)
{
public
static
void
getHostByName
(
String
hostName
,
long
address
)
{
return
""
;
}
public
static
void
onBytesReceived
(
int
amount
,
int
networkType
,
final
int
currentAccount
)
{
...
...
@@ -255,4 +457,78 @@ public class ConnectionsManager {
}
public
static
native
void
native_switchBackend
(
int
currentAccount
);
public
static
native
int
native_isTestBackend
(
int
currentAccount
);
public
static
native
void
native_pauseNetwork
(
int
currentAccount
);
public
static
native
void
native_setUseIpv6
(
int
currentAccount
,
boolean
value
);
public
static
native
void
native_updateDcSettings
(
int
currentAccount
);
public
static
native
void
native_setNetworkAvailable
(
int
currentAccount
,
boolean
value
,
int
networkType
,
boolean
slow
);
public
static
native
void
native_resumeNetwork
(
int
currentAccount
,
boolean
partial
);
public
static
native
long
native_getCurrentTimeMillis
(
int
currentAccount
);
public
static
native
int
native_getCurrentTime
(
int
currentAccount
);
public
static
native
int
native_getTimeDifference
(
int
currentAccount
);
public
static
native
void
native_sendRequest
(
int
currentAccount
,
long
object
,
RequestDelegateInternal
onComplete
,
QuickAckDelegate
onQuickAck
,
WriteToSocketDelegate
onWriteToSocket
,
int
flags
,
int
datacenterId
,
int
connetionType
,
boolean
immediate
,
int
requestToken
);
public
static
native
void
native_cancelRequest
(
int
currentAccount
,
int
token
,
boolean
notifyServer
);
public
static
native
void
native_cleanUp
(
int
currentAccount
,
boolean
resetKeys
);
public
static
native
void
native_cancelRequestsForGuid
(
int
currentAccount
,
int
guid
);
public
static
native
void
native_bindRequestToGuid
(
int
currentAccount
,
int
requestToken
,
int
guid
);
public
static
native
void
native_applyDatacenterAddress
(
int
currentAccount
,
int
datacenterId
,
String
ipAddress
,
int
port
);
public
static
native
int
native_getConnectionState
(
int
currentAccount
);
public
static
native
void
native_setUserId
(
int
currentAccount
,
int
id
);
public
static
native
void
native_init
(
int
currentAccount
,
int
version
,
int
layer
,
int
apiId
,
String
deviceModel
,
String
systemVersion
,
String
appVersion
,
String
langCode
,
String
systemLangCode
,
String
configPath
,
String
logPath
,
String
regId
,
String
cFingerprint
,
int
userId
,
boolean
enablePushConnection
,
boolean
hasNetwork
,
int
networkType
);
public
static
native
void
native_setProxySettings
(
int
currentAccount
,
String
address
,
int
port
,
String
username
,
String
password
,
String
secret
);
public
static
native
void
native_setLangCode
(
int
currentAccount
,
String
langCode
);
public
static
native
void
native_setRegId
(
int
currentAccount
,
String
regId
);
public
static
native
void
native_setSystemLangCode
(
int
currentAccount
,
String
langCode
);
public
static
native
void
native_seSystemLangCode
(
int
currentAccount
,
String
langCode
);
public
static
native
void
native_setJava
(
boolean
useJavaByteBuffers
);
public
static
native
void
native_setPushConnectionEnabled
(
int
currentAccount
,
boolean
value
);
public
static
native
void
native_applyDnsConfig
(
int
currentAccount
,
long
address
,
String
phone
,
int
date
);
public
static
native
long
native_checkProxy
(
int
currentAccount
,
String
address
,
int
port
,
String
username
,
String
password
,
String
secret
,
RequestTimeDelegate
requestTimeDelegate
);
public
static
native
void
native_onHostNameResolved
(
String
host
,
long
address
,
String
ip
);
public
static
int
generateClassGuid
()
{
return
lastClassGuid
++;
}
public
void
setIsUpdating
(
final
boolean
value
)
{
}
@SuppressLint
(
"NewApi"
)
protected
static
boolean
useIpv6Address
()
{
return
false
;
}
}
TMessagesProj/src/main/java/org/telegram/tgnet/TLRPC.java
View file @
01c3e96f
...
...
@@ -59,7 +59,7 @@ public class TLRPC {
public static final int MESSAGE_FLAG_EDITED = 0x00008000;
public static final int MESSAGE_FLAG_MEGAGROUP = 0x80000000;
public static final int LAYER =
94
;
public static final int LAYER =
109
;
public static class TL_chatBannedRights extends TLObject {
public static int constructor = 0x9f120418;
TMessagesProj/src/main/jniLibs/arm64-v8a/libtmessages.so
0 → 100644
View file @
01c3e96f
File added
TMessagesProj/src/main/jniLibs/arm64/libtmessages.so
0 → 100644
View file @
01c3e96f
File added
TMessagesProj/src/main/jniLibs/armeabi-v7a/libtmessages.so
View file @
01c3e96f
No preview for this file type
TMessagesProj/src/main/jniLibs/x86_64/libtmessages.so
0 → 100644
View file @
01c3e96f
TMessagesProj/src/main/res/values/strings.xml
View file @
01c3e96f
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string
name=
"AppName"
>
Telegram
</string>
<string
name=
"AppNameBeta"
>
hetzner
</string>
<string
name=
"AppNameBeta"
>
Ohio
</string>
<string
name=
"LanguageName"
>
English
</string>
<string
name=
"English"
>
English
</string>
<string
name=
"LanguageNameInEnglish"
>
English
</string>
...
...
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