Linux server.flyproject.com.br 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64
Apache
: 207.244.227.86 | : 216.73.217.1
10 Domain
7.1.33
hubnog
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
usr /
sbin /
[ HOME SHELL ]
Name
Size
Permission
Action
ModemManager
1.19
MB
-rwxr-xr-x
NetworkManager
2.83
MB
-rwxr-xr-x
abrt-auto-reporting
10.98
KB
-rwxr-xr-x
abrt-configuration
31.66
KB
-rwxr-xr-x
abrt-dbus
31.22
KB
-rwxr-xr-x
abrt-harvest-pstoreoops
1.32
KB
-rwxr-xr-x
abrt-harvest-vmcore
8.19
KB
-rwxr-xr-x
abrt-install-ccpp-hook
2.85
KB
-rwxr-xr-x
abrt-server
31.11
KB
-rwxr-xr-x
abrtd
31.22
KB
-rwxr-xr-x
accept
10.95
KB
-rwxr-xr-x
accessdb
11.55
KB
-rwxr-xr-x
accton
11.19
KB
-rwxr-xr-x
adcli
152.61
KB
-rwxr-xr-x
addgnupghome
3.05
KB
-rwxr-xr-x
addpart
19.69
KB
-rwxr-xr-x
adduser
134.39
KB
-rwxr-xr-x
agetty
48.48
KB
-rwxr-xr-x
alsa-info
28.09
KB
-rwxr-xr-x
alsa-info.sh
28.09
KB
-rwxr-xr-x
alsabat-test.sh
4.04
KB
-rwxr-xr-x
alsactl
99.15
KB
-rwxr-xr-x
alternatives
27.61
KB
-rwxr-xr-x
anaconda
54.99
KB
-rwxr-xr-x
anacron
35.52
KB
-rwxr-xr-x
apachectl
4.31
KB
-rwxr-xr-x
applygnupgdefaults
2.21
KB
-rwxr-xr-x
arp
63.98
KB
-rwxr-xr-x
arpd
52.98
KB
-rwxr-xr-x
arping
23.19
KB
-rwxr-xr-x
atd
27.17
KB
-rwxr-xr-x
atrun
67
B
-rwxr-xr-x
audispd
39.75
KB
-rwxr-xr-x
auditctl
39.56
KB
-rwxr-xr-x
auditd
125.65
KB
-rwxr-xr-x
augenrules
3.7
KB
-rwxr-xr-x
aureport
105.39
KB
-rwxr-xr-x
ausearch
109.8
KB
-rwxr-xr-x
authconfig
43.49
KB
-rwxr-xr-x
authconfig-tui
43.49
KB
-rwxr-xr-x
automount
301.4
KB
-rwxr-xr-x
autrace
15.49
KB
-rwxr-x---
avahi-daemon
133.04
KB
-rwxr-xr-x
avcstat
11.25
KB
-rwxr-xr-x
badblocks
27.69
KB
-rwxr-xr-x
biosdecode
24.15
KB
-rwxr-xr-x
biosdevname
36.57
KB
-rwxr-xr-x
blkdeactivate
15.97
KB
-r-xr-xr-x
blkdiscard
23.84
KB
-rwxr-xr-x
blkid
77.92
KB
-rwxr-xr-x
blkmapd
43.81
KB
-rwxr-xr-x
blockdev
32.2
KB
-rwxr-xr-x
bpftool
1.9
MB
-rwxr-xr-x
brctl
32.13
KB
-rwxr-xr-x
bridge
77.61
KB
-rwxr-xr-x
btrfs
690.59
KB
-rwxr-xr-x
btrfs-convert
378.62
KB
-rwxr-xr-x
btrfs-debug-tree
354.23
KB
-rwxr-xr-x
btrfs-find-root
346.22
KB
-rwxr-xr-x
btrfs-image
374.63
KB
-rwxr-xr-x
btrfs-map-logical
350.27
KB
-rwxr-xr-x
btrfs-select-super
346.2
KB
-rwxr-xr-x
btrfs-zero-log
346.2
KB
-rwxr-xr-x
btrfsck
690.59
KB
-rwxr-xr-x
btrfstune
350.24
KB
-rwxr-xr-x
build-locale-archive
860.52
KB
-rwx------
cacertdir_rehash
644
B
-rwxr-xr-x
cache_check
1.23
MB
-rwxr-xr-x
cache_dump
1.23
MB
-rwxr-xr-x
cache_metadata_size
1.23
MB
-rwxr-xr-x
cache_repair
1.23
MB
-rwxr-xr-x
cache_restore
1.23
MB
-rwxr-xr-x
cache_writeback
1.23
MB
-rwxr-xr-x
capsh
19.43
KB
-rwxr-xr-x
cbq
32.73
KB
-rwxr-xr-x
certmonger
482.03
KB
-rwxr-xr-x
cfdisk
71.37
KB
-rwxr-xr-x
cgclear
15.3
KB
-rwxr-xr-x
cgconfigparser
15.43
KB
-rwxr-xr-x
cgdcbxd
31.39
KB
-rwxr-xr-x
cgdisk
176.87
KB
-rwxr-xr-x
cgrulesengd
31.66
KB
-rwxr-xr-x
chat
27.3
KB
-rwxr-xr-x
chcpu
23.7
KB
-rwxr-xr-x
chgpasswd
64.1
KB
-rwxr-xr-x
chkconfig
40.22
KB
-rwxr-xr-x
chpasswd
55.88
KB
-rwxr-xr-x
chronyd
263.08
KB
-rwxr-xr-x
chroot
32.48
KB
-rwxr-xr-x
cifs.idmap
15.07
KB
-rwxr-xr-x
cifs.upcall
31.23
KB
-rwxr-xr-x
clock
48.44
KB
-rwxr-xr-x
clockdiff
19.04
KB
-rwxr-xr-x
consoletype
6.95
KB
-rwxr-xr-x
convertquota
70.88
KB
-rwxr-xr-x
cracklib-check
7.04
KB
-rwxr-xr-x
cracklib-format
246
B
-rwxr-xr-x
cracklib-packer
11.06
KB
-rwxr-xr-x
cracklib-unpacker
7.02
KB
-rwxr-xr-x
crda
11.34
KB
-rwxr-xr-x
create-cracklib-dict
990
B
-rwxr-xr-x
crond
68.48
KB
-rwxr-xr-x
cryptsetup
85.41
KB
-rwxr-xr-x
ctrlaltdel
11.2
KB
-rwxr-xr-x
ctstat
20.09
KB
-rwxr-xr-x
cups-browsed
136.9
KB
-rwxr-xr-x
cups-genppd.5.2
56.05
KB
-rwxr-xr-x
cups-genppdupdate
34.2
KB
-rwxr-xr-x
cupsaccept
10.95
KB
-rwxr-xr-x
cupsaddsmb
10.98
KB
-rwxr-xr-x
cupsctl
14.97
KB
-rwxr-xr-x
cupsd
427.17
KB
-rwxr-xr-x
cupsdisable
10.95
KB
-rwxr-xr-x
cupsenable
10.95
KB
-rwxr-xr-x
cupsfilter
27.37
KB
-rwxr-xr-x
cupsreject
10.95
KB
-rwxr-xr-x
dcbtool
60.03
KB
-rwxr-xr-x
ddns-confgen
19.44
KB
-rwxr-xr-x
debugfs
120.65
KB
-rwxr-xr-x
delpart
19.69
KB
-rwxr-xr-x
depmod
143.24
KB
-rwxr-xr-x
devlink
64.72
KB
-rwxr-xr-x
dhclient
414.34
KB
-rwxr-xr-x
dhclient-script
30.38
KB
-rwxr-xr-x
dm_dso_reg_tool
11.29
KB
-rwxr-xr-x
dmevent_tool
11.29
KB
-rwxr-xr-x
dmeventd
39.56
KB
-r-xr-xr-x
dmfilemapd
19.16
KB
-r-xr-xr-x
dmidecode
120.2
KB
-rwxr-xr-x
dmraid
22.1
KB
-rwxr-xr-x
dmraid.static
22.1
KB
-rwxr-xr-x
dmsetup
149.2
KB
-r-xr-xr-x
dmstats
149.2
KB
-r-xr-xr-x
dnsmasq
340.79
KB
-rwxr-xr-x
dnssec-checkds
922
B
-rwxr-xr-x
dnssec-coverage
924
B
-rwxr-xr-x
dnssec-dsfromkey
56.6
KB
-rwxr-xr-x
dnssec-importkey
52.59
KB
-rwxr-xr-x
dnssec-keyfromlabel
60.52
KB
-rwxr-xr-x
dnssec-keygen
64.55
KB
-rwxr-xr-x
dnssec-keymgr
920
B
-rwxr-xr-x
dnssec-revoke
48.46
KB
-rwxr-xr-x
dnssec-settime
56.52
KB
-rwxr-xr-x
dnssec-signzone
105.71
KB
-rwxr-xr-x
dnssec-verify
48.46
KB
-rwxr-xr-x
dosfsck
56.24
KB
-rwxr-xr-x
dosfslabel
52.23
KB
-rwxr-xr-x
dovecot
362.53
KB
-rwxr-xr-x
dovecot_cpshutdown
3.27
KB
-rwxr-xr-x
dracut
55.83
KB
-rwxr-xr-x
dump-acct
19.63
KB
-rwxr-xr-x
dump-utmp
15.47
KB
-rwxr-xr-x
dumpe2fs
23.62
KB
-rwxr-xr-x
e2freefrag
11.15
KB
-rwxr-xr-x
e2fsck
250.55
KB
-rwxr-xr-x
e2image
27.85
KB
-rwxr-xr-x
e2label
69.41
KB
-rwxr-xr-x
e2undo
11.32
KB
-rwxr-xr-x
e4defrag
23.55
KB
-rwxr-xr-x
eapol_test
1.77
MB
-rwxr-xr-x
ebtables
6.85
KB
-rwxr-xr-x
ebtables-restore
10.88
KB
-rwxr-xr-x
ebtables-save
851
B
-rwxr-xr-x
edquota
83.09
KB
-rwxr-xr-x
era_check
1.23
MB
-rwxr-xr-x
era_dump
1.23
MB
-rwxr-xr-x
era_invalidate
1.23
MB
-rwxr-xr-x
era_restore
1.23
MB
-rwxr-xr-x
ether-wake
73.26
KB
-rwxr-xr-x
ethtool
293.87
KB
-rwxr-xr-x
exicyclog
11.01
KB
-rwxr-xr-x
exigrep
10.44
KB
-rwxr-xr-x
exim
1.33
MB
-rwsr-xr-x
exim_checkaccess
4.73
KB
-rwxr-xr-x
exim_dbmbuild
82.25
KB
-rwxr-xr-x
exim_dumpdb
134.61
KB
-rwxr-xr-x
exim_fixdb
168.38
KB
-rwxr-xr-x
exim_lock
64.84
KB
-rwxr-xr-x
exim_tidydb
142.97
KB
-rwxr-xr-x
eximstats
148.01
KB
-rwxr-xr-x
exinext
8.02
KB
-rwxr-xr-x
exiqgrep
5.45
KB
-rwxr-xr-x
exiqsumm
5.07
KB
-rwxr-xr-x
exiwhat
4.32
KB
-rwxr-xr-x
exportfs
76.91
KB
-rwxr-xr-x
faillock
15.02
KB
-rwxr-xr-x
fatlabel
52.23
KB
-rwxr-xr-x
fcgistarter
11
KB
-rwxr-xr-x
fcnsq
15.13
KB
-rwxr-xr-x
fcoeadm
48.52
KB
-rwxr-xr-x
fcoemon
69.21
KB
-rwxr-xr-x
fcping
31.52
KB
-rwxr-xr-x
fcrls
19.16
KB
-rwxr-xr-x
fdformat
11.27
KB
-rwxr-xr-x
fdisk
195.8
KB
-rwxr-xr-x
filefrag
15.23
KB
-rwxr-xr-x
findfs
11.2
KB
-rwxr-xr-x
fipvlan
40.16
KB
-rwxr-xr-x
firewalld
6.87
KB
-rwxr-xr-x
firstboot
6.45
KB
-rwxr-xr-x
fixfiles
11.03
KB
-rwxr-xr-x
fixparts
61.65
KB
-rwxr-xr-x
fsadm
23.97
KB
-r-xr-xr-x
fsck
32.12
KB
-rwxr-xr-x
fsck.btrfs
1.16
KB
-rwxr-xr-x
fsck.cramfs
19.57
KB
-rwxr-xr-x
fsck.ext2
250.55
KB
-rwxr-xr-x
fsck.ext3
250.55
KB
-rwxr-xr-x
fsck.ext4
250.55
KB
-rwxr-xr-x
fsck.fat
56.24
KB
-rwxr-xr-x
fsck.minix
73.32
KB
-rwxr-xr-x
fsck.msdos
56.24
KB
-rwxr-xr-x
fsck.vfat
56.24
KB
-rwxr-xr-x
fsck.xfs
433
B
-rwxr-xr-x
fsfreeze
11.23
KB
-rwxr-xr-x
fstrim
40.59
KB
-rwxr-xr-x
ftpdctl
84.05
KB
-rwxr-xr-x
ftpscrub
19.97
KB
-rwx------
ftpshut
13.33
KB
-rwxr-xr-x
fuser
32.34
KB
-rwxr-xr-x
fxload
19.26
KB
-rwxr-xr-x
gdisk
184.49
KB
-rwxr-xr-x
gdm
430.45
KB
-rwxr-xr-x
genhomedircon
23.77
KB
-rwxr-xr-x
genhostid
6.94
KB
-rwxr-xr-x
genl
52.81
KB
-rwxr-xr-x
genl-ctrl-list
11.27
KB
-rwxr-xr-x
genrandom
11.16
KB
-rwxr-xr-x
getcap
11.13
KB
-rwxr-xr-x
getenforce
7.01
KB
-rwxr-xr-x
getpcaps
7.07
KB
-rwxr-xr-x
getsebool
11.13
KB
-rwxr-xr-x
glibc_post_upgrade.i686
700.2
KB
-rwx------
glibc_post_upgrade.x86_64
772.05
KB
-rwx------
gluster
465.84
KB
-rwxr-xr-x
glusterfs
245.27
KB
-rwxr-xr-x
glusterfsd
245.27
KB
-rwxr-xr-x
groupadd
85.65
KB
-rwxr-xr-x
groupdel
77.38
KB
-rwxr-xr-x
groupmems
55.97
KB
-rwxr-xr-x
groupmod
85.66
KB
-rwxr-xr-x
grpck
59.93
KB
-rwxr-xr-x
grpconv
51.73
KB
-rwxr-xr-x
grpunconv
51.73
KB
-rwxr-xr-x
grub2-bios-setup
1.03
MB
-rwxr-xr-x
grub2-get-kernel-settings
2.08
KB
-rwxr-xr-x
grub2-install
1.29
MB
-rwxr-xr-x
grub2-macbless
1.02
MB
-rwxr-xr-x
grub2-mkconfig
7.63
KB
-rwxr-xr-x
grub2-ofpathname
225.52
KB
-rwxr-xr-x
grub2-probe
1.03
MB
-rwxr-xr-x
grub2-reboot
4
KB
-rwxr-xr-x
grub2-rpm-sort
258.52
KB
-rwxr-xr-x
grub2-set-default
3.46
KB
-rwxr-xr-x
grub2-setpassword
2.96
KB
-rwxr-xr-x
grub2-sparc64-setup
1.04
MB
-rwxr-xr-x
grubby
71.27
KB
-rwxr-xr-x
gss-server
23.13
KB
-rwxr-xr-x
gssproxy
130.64
KB
-rwxr-xr-x
halt
704.8
KB
-rwxr-xr-x
handle-sshpw
2.35
KB
-rwxr-xr-x
hardlink
15.29
KB
-rwxr-xr-x
htcacheclean
31.16
KB
-rwxr-xr-x
httpd
680.23
KB
-rwxr-xr-x
hwclock
48.44
KB
-rwxr-xr-x
hypervfcopyd
11.18
KB
-rwxr-xr-x
hypervkvpd
27.38
KB
-rwxr-xr-x
hypervvssd
15.23
KB
-rwxr-xr-x
iconvconfig
22.15
KB
-rwxr-xr-x
iconvconfig.i686
21.44
KB
-rwxr-xr-x
iconvconfig.x86_64
22.15
KB
-rwxr-xr-x
ifcfg
2.99
KB
-rwxr-xr-x
ifconfig
80.05
KB
-rwxr-xr-x
ifdown
1.61
KB
-rwxr-xr-x
ifenslave
19.74
KB
-rwxr-xr-x
ifstat
40.6
KB
-rwxr-xr-x
ifup
4.89
KB
-rwxr-xr-x
in.proftpd
1.63
MB
-rwxr-xr-x
init
1.56
MB
-rwxr-xr-x
insmod
143.24
KB
-rwxr-xr-x
install-info
110.42
KB
-rwxr-xr-x
installkernel
2.69
KB
-rwxr-xr-x
intel-microcode2ucode
11.1
KB
-rwxr-xr-x
ip
459.59
KB
-rwxr-xr-x
ip6tables
91.52
KB
-rwxr-xr-x
ip6tables-restore
91.52
KB
-rwxr-xr-x
ip6tables-save
91.52
KB
-rwxr-xr-x
ipa-certupdate
871
B
-rwxr-xr-x
ipa-client-automount
19.12
KB
-rwxr-xr-x
ipa-client-install
921
B
-rwxr-xr-x
ipa-getkeytab
128.14
KB
-rwxr-xr-x
ipa-join
31.09
KB
-rwxr-xr-x
ipa-rmkeytab
15.01
KB
-rwxr-xr-x
ipmaddr
19.33
KB
-rwxr-xr-x
iprconfig
394.37
KB
-rwxr-xr-x
iprdbg
135.94
KB
-rwx------
iprdump
123.67
KB
-rwxr-xr-x
iprinit
123.64
KB
-rwxr-xr-x
iprsos
2.18
KB
-rwxr-xr-x
iprupdate
123.64
KB
-rwxr-xr-x
ipsec
14.96
KB
-rwxr-xr-x
ipset
7.02
KB
-rwxr-xr-x
iptables
91.52
KB
-rwxr-xr-x
iptables-restore
91.52
KB
-rwxr-xr-x
iptables-save
91.52
KB
-rwxr-xr-x
iptunnel
23.33
KB
-rwxr-xr-x
irqbalance
48.5
KB
-rwxr-xr-x
isc-hmac-fixup
11.2
KB
-rwxr-xr-x
iscsi-iname
11.01
KB
-rwxr-xr-x
iscsiadm
794.39
KB
-rwxr-xr-x
iscsid
819.81
KB
-rwxr-xr-x
iscsistart
361.05
KB
-rwxr-xr-x
iscsiuio
182.09
KB
-rwxr-xr-x
iw
157.97
KB
-rwxr-xr-x
kexec
166.06
KB
-rwxr-xr-x
key.dns_resolver
19.45
KB
-rwxr-xr-x
killall5
23.17
KB
-rwxr-xr-x
kpartx
39.47
KB
-rwxr-xr-x
kpatch
14.53
KB
-rwxr-xr-x
ksmtuned
3.36
KB
-rwxr-xr-x
lchage
15.41
KB
-rwxr-xr-x
ldattach
27.93
KB
-rwxr-xr-x
ldconfig
952.08
KB
-rwxr-xr-x
ledctl
61.97
KB
-rwxr-xr-x
ledmon
62.15
KB
-rwxr-xr-x
lgroupadd
11.28
KB
-rwxr-xr-x
lgroupdel
11.26
KB
-rwxr-xr-x
lgroupmod
15.44
KB
-rwxr-xr-x
libvirtd
506.11
KB
-rwxr-xr-x
lid
15.4
KB
-rwxr-xr-x
liveinst
5.83
KB
-rwxr-xr-x
lldpad
402.72
KB
-rwxr-xr-x
lldptool
96.02
KB
-rwxr-xr-x
lnewusers
15.46
KB
-rwxr-xr-x
lnstat
20.09
KB
-rwxr-xr-x
load_policy
10.97
KB
-rwxr-xr-x
lockdev
10.95
KB
-rwx--s--x
logrotate
68.61
KB
-rwxr-xr-x
logsave
11.27
KB
-rwxr-xr-x
losetup
82.45
KB
-rwxr-xr-x
lpadmin
27.09
KB
-rwxr-xr-x
lpasswd
15.5
KB
-rwxr-xr-x
lpc
15.07
KB
-rwxr-xr-x
lpc.cups
15.07
KB
-rwxr-xr-x
lpinfo
14.96
KB
-rwxr-xr-x
lpmove
10.98
KB
-rwxr-xr-x
lshw
895.18
KB
-rwxr-xr-x
lsmod
143.24
KB
-rwxr-xr-x
lsof
150.57
KB
-rwxr-xr-x
lspci
73.67
KB
-rwxr-xr-x
luseradd
15.38
KB
-rwxr-xr-x
luserdel
11.3
KB
-rwxr-xr-x
lusermod
19.43
KB
-rwxr-xr-x
lvchange
2.15
MB
-r-xr-xr-x
lvconvert
2.15
MB
-r-xr-xr-x
lvcreate
2.15
MB
-r-xr-xr-x
lvdisplay
2.15
MB
-r-xr-xr-x
lvextend
2.15
MB
-r-xr-xr-x
lvm
2.15
MB
-r-xr-xr-x
lvmconf
12.55
KB
-r-xr-xr-x
lvmconfig
2.15
MB
-r-xr-xr-x
lvmdiskscan
2.15
MB
-r-xr-xr-x
lvmdump
10.07
KB
-r-xr-xr-x
lvmetad
71.66
KB
-r-xr-xr-x
lvmpolld
64.07
KB
-r-xr-xr-x
lvmsadc
2.15
MB
-r-xr-xr-x
lvmsar
2.15
MB
-r-xr-xr-x
lvreduce
2.15
MB
-r-xr-xr-x
lvremove
2.15
MB
-r-xr-xr-x
lvrename
2.15
MB
-r-xr-xr-x
lvresize
2.15
MB
-r-xr-xr-x
lvs
2.15
MB
-r-xr-xr-x
lvscan
2.15
MB
-r-xr-xr-x
lwresd
768.02
KB
-rwxr-xr-x
makedumpfile
376.52
KB
-rwxr-xr-x
matchpathcon
11.19
KB
-rwxr-xr-x
mdadm
593.45
KB
-rwxr-xr-x
mdmon
331.55
KB
-rwxr-xr-x
mii-diag
20.08
KB
-rwxr-xr-x
mii-tool
19.51
KB
-rwxr-xr-x
mkdict
246
B
-rwxr-xr-x
mkdosfs
28.05
KB
-rwxr-xr-x
mkdumprd
13.99
KB
-rwxr-xr-x
mke2fs
94.08
KB
-rwxr-xr-x
mkfs
11.25
KB
-rwxr-xr-x
mkfs.btrfs
366.45
KB
-rwxr-xr-x
mkfs.cramfs
36.16
KB
-rwxr-xr-x
mkfs.ext2
94.08
KB
-rwxr-xr-x
mkfs.ext3
94.08
KB
-rwxr-xr-x
mkfs.ext4
94.08
KB
-rwxr-xr-x
mkfs.fat
28.05
KB
-rwxr-xr-x
mkfs.minix
36.27
KB
-rwxr-xr-x
mkfs.msdos
28.05
KB
-rwxr-xr-x
mkfs.vfat
28.05
KB
-rwxr-xr-x
mkfs.xfs
359.8
KB
-rwxr-xr-x
mkhomedir_helper
19.05
KB
-rwxr-xr-x
mklost+found
11.11
KB
-rwxr-xr-x
mkswap
69.64
KB
-rwxr-xr-x
modinfo
143.24
KB
-rwxr-xr-x
modprobe
143.24
KB
-rwxr-xr-x
modsec-sdbm-util
22.17
KB
-rwxr-x---
mount.cifs
40.05
KB
-rwxr-xr-x
mount.fuse
11.1
KB
-rwxr-xr-x
mount.glusterfs
22.15
KB
-rwxr-xr-x
mount.nfs
114.68
KB
-rwsr-xr-x
mount.nfs4
114.68
KB
-rwsr-xr-x
mountstats
40.59
KB
-rwxr-xr-x
mpathconf
10.6
KB
-rwxr-xr-x
mpathpersist
27.91
KB
-rwxr-xr-x
mtr
83.18
KB
-rwxr-xr-x
multipath
22.99
KB
-rwxr-xr-x
multipathd
84.37
KB
-rwxr-xr-x
mysqld
242.32
MB
-rwxr-xr-x
mysqld-debug
163.78
MB
-rwxr-xr-x
named
768.02
KB
-rwxr-xr-x
named-checkconf
32.25
KB
-rwxr-xr-x
named-checkzone
32.06
KB
-rwxr-xr-x
named-compilezone
32.06
KB
-rwxr-xr-x
named-journalprint
11.13
KB
-rwxr-xr-x
nameif
15.32
KB
-rwxr-xr-x
netreport
10.96
KB
-rwxr-sr-x
netscsid
19.55
KB
-rwxr-xr-x
new-kernel-pkg
24.96
KB
-rwxr-xr-x
newusers
93.45
KB
-rwxr-xr-x
nfsdcltrack
40.11
KB
-rwxr-xr-x
nfsidmap
19.32
KB
-rwxr-xr-x
nfsiostat
23.64
KB
-rwxr-xr-x
nfsstat
29.84
KB
-rwxr-xr-x
nl-class-add
11.7
KB
-rwxr-xr-x
nl-class-delete
11.55
KB
-rwxr-xr-x
nl-class-list
11.48
KB
-rwxr-xr-x
nl-classid-lookup
11.29
KB
-rwxr-xr-x
nl-cls-add
11.76
KB
-rwxr-xr-x
nl-cls-delete
11.68
KB
-rwxr-xr-x
nl-cls-list
11.58
KB
-rwxr-xr-x
nl-link-list
11.52
KB
-rwxr-xr-x
nl-pktloc-lookup
11.36
KB
-rwxr-xr-x
nl-qdisc-add
11.6
KB
-rwxr-xr-x
nl-qdisc-delete
11.54
KB
-rwxr-xr-x
nl-qdisc-list
11.63
KB
-rwxr-xr-x
nologin
7.01
KB
-rwxr-xr-x
nscd
179.8
KB
-rwxr-xr-x
nsec3hash
11.13
KB
-rwxr-xr-x
nstat
23.88
KB
-rwxr-xr-x
ntp-keygen
100.88
KB
-rwxr-xr-x
ntpd
712.59
KB
-rwxr-xr-x
ntpdate
107.58
KB
-rwxr-xr-x
ntpdc
170.02
KB
-rwxr-xr-x
ntpq
164.36
KB
-rwxr-xr-x
ntptime
73.66
KB
-rwxr-xr-x
ntsysv
36.24
KB
-rwxr-xr-x
oddjobd
72.11
KB
-rwxr-xr-x
osd_login
2.55
KB
-rwxr-xr-x
ownership
15.04
KB
-rwxr-xr-x
packer
11.06
KB
-rwxr-xr-x
pam_console_apply
39.69
KB
-rwxr-xr-x
pam_tally2
15.05
KB
-rwxr-xr-x
pam_timestamp_check
10.97
KB
-rwxr-xr-x
paperconfig
4.07
KB
-rwxr-xr-x
parted
77.22
KB
-rwxr-xr-x
partprobe
11.23
KB
-rwxr-xr-x
partx
86.55
KB
-rwxr-xr-x
pdata_tools
1.23
MB
-rwxr-xr-x
pdns_server
74.75
MB
-rwxr-xr-x
pethtool
8.94
KB
-rwxr-xr-x
pidof
23.17
KB
-rwxr-xr-x
pifconfig
3.03
KB
-rwxr-xr-x
ping6
64.63
KB
-rwxr-xr-x
pivot_root
11.19
KB
-rwxr-xr-x
plipconfig
11.06
KB
-rwxr-xr-x
pluginviewer
15.23
KB
-rwxr-xr-x
plymouth-set-default-theme
6.21
KB
-rwxr-xr-x
plymouthd
84.22
KB
-rwxr-xr-x
pm-hibernate
2.86
KB
-rwxr-xr-x
pm-powersave
2.09
KB
-rwxr-xr-x
pm-suspend
2.86
KB
-rwxr-xr-x
pm-suspend-hybrid
2.86
KB
-rwxr-xr-x
pm-utils-bugreport-info.sh
1.47
KB
-rwxr-xr-x
poweroff
704.8
KB
-rwxr-xr-x
ppp-watch
23.2
KB
-rwxr-xr-x
pppd
372.98
KB
-r-xr-xr-x
pppdump
52.77
KB
-rwxr-xr-x
pppoe-discovery
18.04
KB
-r-xr-xr-x
pppstats
14.99
KB
-rwxr-xr-x
proftpd
1.63
MB
-rwxr-xr-x
pvchange
2.15
MB
-r-xr-xr-x
pvck
2.15
MB
-r-xr-xr-x
pvcreate
2.15
MB
-r-xr-xr-x
pvdisplay
2.15
MB
-r-xr-xr-x
pvmove
2.15
MB
-r-xr-xr-x
pvremove
2.15
MB
-r-xr-xr-x
pvresize
2.15
MB
-r-xr-xr-x
pvs
2.15
MB
-r-xr-xr-x
pvscan
2.15
MB
-r-xr-xr-x
pwck
51.71
KB
-rwxr-xr-x
pwconv
47.57
KB
-rwxr-xr-x
pwhistory_helper
15.44
KB
-rwxr-xr-x
pwunconv
47.59
KB
-rwxr-xr-x
quot
70.66
KB
-rwxr-xr-x
quotacheck
107.29
KB
-rwxr-xr-x
quotaoff
75.03
KB
-rwxr-xr-x
quotaon
75.03
KB
-rwxr-xr-x
quotastats
14.03
KB
-rwxr-xr-x
radvd
101.59
KB
-rwxr-xr-x
radvdump
23.64
KB
-rwxr-xr-x
raid-check
3.7
KB
-rwxr-xr-x
rdisc
23.17
KB
-rwxr-xr-x
rdma
73.42
KB
-rwxr-xr-x
rdma-ndd
15.36
KB
-rwxr-xr-x
readprofile
15.46
KB
-rwxr-xr-x
realm
138.77
KB
-rwxr-xr-x
reboot
704.8
KB
-rwxr-xr-x
regdbdump
7.12
KB
-rwxr-xr-x
reject
10.95
KB
-rwxr-xr-x
repquota
75.16
KB
-rwxr-xr-x
request-key
19.41
KB
-rwxr-xr-x
resize2fs
48.41
KB
-rwxr-xr-x
resizepart
32.36
KB
-rwxr-xr-x
restorecon
27.16
KB
-rwxr-xr-x
rfkill
11.29
KB
-rwxr-xr-x
rmmod
143.24
KB
-rwxr-xr-x
rndc
35.88
KB
-rwxr-xr-x
rndc-confgen
19.44
KB
-rwxr-xr-x
rngd
42.39
KB
-rwxr-xr-x
rotatelogs
23.06
KB
-rwxr-xr-x
route
66.6
KB
-rwxr-xr-x
routef
173
B
-rwxr-xr-x
routel
1.59
KB
-rwxr-xr-x
rpc.gssd
88.73
KB
-rwxr-xr-x
rpc.idmapd
48.13
KB
-rwxr-xr-x
rpc.mountd
128.91
KB
-rwxr-xr-x
rpc.nfsd
40.2
KB
-rwxr-xr-x
rpc.rquotad
78.95
KB
-rwxr-xr-x
rpc.statd
97.59
KB
-rwxr-xr-x
rpcbind
60.07
KB
-rwxr-xr-x
rpcdebug
18.05
KB
-rwxr-xr-x
rpcinfo
27.3
KB
-rwxr-xr-x
rsyslogd
648.45
KB
-rwxr-xr-x
rtacct
41.93
KB
-rwxr-xr-x
rtcwake
31.96
KB
-rwxr-xr-x
rtkitctl
10.88
KB
-rwxr-xr-x
rtmon
48.67
KB
-rwxr-xr-x
rtpr
37
B
-rwxr-xr-x
rtstat
20.09
KB
-rwxr-xr-x
runlevel
704.8
KB
-rwxr-xr-x
runq
1.33
MB
-rwsr-xr-x
runuser
32.21
KB
-rwxr-xr-x
sa
36.77
KB
-rwxr-xr-x
safe_finger
11.08
KB
-rwxr-xr-x
saned
47.41
KB
-rwxr-xr-x
saslauthd
92.59
KB
-rwxr-xr-x
sasldblistusers2
19.26
KB
-rwxr-xr-x
saslpasswd2
15.09
KB
-rwxr-xr-x
sedispatch
15.56
KB
-rwxr-xr-x
sefcontext_compile
60.53
KB
-rwxr-xr-x
selabel_digest
11.17
KB
-rwxr-xr-x
selabel_lookup
11.14
KB
-rwxr-xr-x
selabel_lookup_best_match
11.16
KB
-rwxr-xr-x
selabel_partial_match
11.09
KB
-rwxr-xr-x
selinux_restorecon
15.21
KB
-rwxr-xr-x
selinuxconlist
11.1
KB
-rwxr-xr-x
selinuxdefcon
11.12
KB
-rwxr-xr-x
selinuxenabled
6.98
KB
-rwxr-xr-x
selinuxexeccon
7.09
KB
-rwxr-xr-x
semanage
42.76
KB
-rwxr-xr-x
semodule
23.77
KB
-rwxr-xr-x
sendmail
13.64
KB
-rwxr-sr-x
service
3.17
KB
-rwxr-xr-x
sestatus
15.02
KB
-rwxr-xr-x
setcap
11.13
KB
-rwxr-xr-x
setenforce
7.05
KB
-rwxr-xr-x
setfiles
27.16
KB
-rwxr-xr-x
setpci
23.4
KB
-rwxr-xr-x
setquota
83.16
KB
-rwxr-xr-x
setregdomain
1.7
KB
-rwxr-xr-x
setroubleshootd
3.22
KB
-rwxr-xr-x
setsebool
14.99
KB
-rwxr-xr-x
setup
15.38
KB
-rwxr-xr-x
sfdisk
83.25
KB
-rwxr-xr-x
sgdisk
168.33
KB
-rwxr-xr-x
sgpio
15.63
KB
-rwxr-xr-x
showmount
19.56
KB
-rwxr-xr-x
shutdown
704.8
KB
-rwxr-xr-x
sim_server
10.97
KB
-rwxr-xr-x
skdump
15.2
KB
-rwxr-xr-x
sktest
6.98
KB
-rwxr-xr-x
slattach
42.4
KB
-rwxr-xr-x
sln
743.78
KB
-rwxr-xr-x
sm-notify
68.43
KB
-rwxr-xr-x
smartctl
864.48
KB
-rwxr-xr-x
smartd
670.63
KB
-rwxr-xr-x
sosreport
561
B
-rwxr-xr-x
spice-vdagentd
43.73
KB
-rwxr-xr-x
ss
128.44
KB
-rwxr-xr-x
sshd
832.9
KB
-rwxr-xr-x
sshd-keygen
3.53
KB
-rwxr-xr-x
sss_cache
80.02
KB
-rwxr-xr-x
sssd
84.18
KB
-rwxr-xr-x
start-statd
842
B
-rwxr-xr-x
suexec
19.02
KB
-rwsr-xr-x
sulogin
40.53
KB
-rwxr-xr-x
sushell
67
B
-rwxr-xr-x
sw-engine-fpm
22.35
MB
-rwxr-xr-x
swaplabel
15.31
KB
-rwxr-xr-x
swapoff
15.53
KB
-rwxr-xr-x
swapon
53.29
KB
-rwxr-xr-x
switch_root
15.35
KB
-rwxr-xr-x
sys-unconfig
184
B
-rwxr-xr-x
sysctl
23.57
KB
-rwxr-xr-x
t1libconfig
3.83
KB
-rwxr-xr-x
tc
384.66
KB
-rwxr-xr-x
tcpd
36.62
KB
-rwxr-xr-x
tcpdmatch
40.83
KB
-rwxr-xr-x
tcpdump
920.16
KB
-rwxr-xr-x
tcpslice
23.64
KB
-rwxr-xr-x
tcsd
300.27
KB
-rwxr-xr-x
telinit
704.8
KB
-rwxr-xr-x
testsaslauthd
15.09
KB
-rwxr-xr-x
thin_check
1.23
MB
-rwxr-xr-x
thin_delta
1.23
MB
-rwxr-xr-x
thin_dump
1.23
MB
-rwxr-xr-x
thin_ls
1.23
MB
-rwxr-xr-x
thin_metadata_size
1.23
MB
-rwxr-xr-x
thin_repair
1.23
MB
-rwxr-xr-x
thin_restore
1.23
MB
-rwxr-xr-x
thin_rmap
1.23
MB
-rwxr-xr-x
thin_trim
1.23
MB
-rwxr-xr-x
tickadj
6.95
KB
-rwxr-xr-x
tracepath
15.05
KB
-rwxr-xr-x
tracepath6
15.05
KB
-rwxr-xr-x
try-from
23.47
KB
-rwxr-xr-x
tsig-keygen
19.44
KB
-rwxr-xr-x
tune2fs
69.41
KB
-rwxr-xr-x
tuned
3.29
KB
-rwxr-xr-x
tuned-adm
5.22
KB
-rwxr-xr-x
udevadm
414.27
KB
-rwxr-xr-x
umount.nfs
114.68
KB
-rwsr-xr-x
umount.nfs4
114.68
KB
-rwsr-xr-x
umount.udisks2
10.98
KB
-rwxr-xr-x
unbound-anchor
55.62
KB
-rwxr-xr-x
unix_chkpwd
35.42
KB
-rwxr-xr-x
unix_update
35.42
KB
-rwx------
update-alternatives
27.61
KB
-rwxr-xr-x
update-pciids
1.71
KB
-rwxr-xr-x
update-smart-drivedb
14.34
KB
-rwxr-xr-x
usb_modeswitch
57.61
KB
-rwxr-xr-x
usb_modeswitch_dispatcher
236.66
KB
-rwxr-xr-x
usbmuxd
69.72
KB
-rwxr-xr-x
useradd
134.39
KB
-rwxr-xr-x
userdel
93.5
KB
-rwxr-xr-x
userhelper
39.38
KB
-rws--x--x
usermod
130.33
KB
-rwxr-xr-x
usernetctl
11.03
KB
-rwsr-xr-x
uuserver
14.97
KB
-rwxr-xr-x
vdptool
48.96
KB
-rwxr-xr-x
vgcfgbackup
2.15
MB
-r-xr-xr-x
vgcfgrestore
2.15
MB
-r-xr-xr-x
vgchange
2.15
MB
-r-xr-xr-x
vgck
2.15
MB
-r-xr-xr-x
vgconvert
2.15
MB
-r-xr-xr-x
vgcreate
2.15
MB
-r-xr-xr-x
vgdisplay
2.15
MB
-r-xr-xr-x
vgexport
2.15
MB
-r-xr-xr-x
vgextend
2.15
MB
-r-xr-xr-x
vgimport
2.15
MB
-r-xr-xr-x
vgimportclone
2.15
MB
-r-xr-xr-x
vgmerge
2.15
MB
-r-xr-xr-x
vgmknodes
2.15
MB
-r-xr-xr-x
vgreduce
2.15
MB
-r-xr-xr-x
vgremove
2.15
MB
-r-xr-xr-x
vgrename
2.15
MB
-r-xr-xr-x
vgs
2.15
MB
-r-xr-xr-x
vgscan
2.15
MB
-r-xr-xr-x
vgsplit
2.15
MB
-r-xr-xr-x
vigr
62.54
KB
-rwxr-xr-x
vipw
62.54
KB
-rwxr-xr-x
virt-what
11.57
KB
-rwxr-xr-x
virtlockd
723.38
KB
-rwxr-xr-x
virtlogd
719.13
KB
-rwxr-xr-x
visudo
200.91
KB
-rwxr-xr-x
vmcore-dmesg
19.28
KB
-rwxr-xr-x
vpddecode
15.33
KB
-rwxr-xr-x
weak-modules
31.9
KB
-rwxr-xr-x
whmapi0
3.02
MB
-rwxr-xr-x
whmapi1
3.02
MB
-rwxr-xr-x
whmlogin
2.33
KB
-rwxr-xr-x
wipefs
28.05
KB
-rwxr-xr-x
wpa_cli
128.06
KB
-rwxr-xr-x
wpa_passphrase
56.79
KB
-rwxr-xr-x
wpa_supplicant
1.93
MB
-rwxr-xr-x
xfs_admin
1.35
KB
-rwxr-xr-x
xfs_bmap
638
B
-rwxr-xr-x
xfs_copy
339.33
KB
-rwxr-xr-x
xfs_db
576.38
KB
-rwxr-xr-x
xfs_estimate
11.16
KB
-rwxr-xr-x
xfs_freeze
767
B
-rwxr-xr-x
xfs_fsr
31.83
KB
-rwxr-xr-x
xfs_growfs
327.2
KB
-rwxr-xr-x
xfs_info
472
B
-rwxr-xr-x
xfs_io
122.68
KB
-rwxr-xr-x
xfs_logprint
355.81
KB
-rwxr-xr-x
xfs_mdrestore
314.81
KB
-rwxr-xr-x
xfs_metadump
747
B
-rwxr-xr-x
xfs_mkfile
1007
B
-rwxr-xr-x
xfs_ncheck
650
B
-rwxr-xr-x
xfs_quota
84.88
KB
-rwxr-xr-x
xfs_repair
563.2
KB
-rwxr-xr-x
xfs_rtcp
15.25
KB
-rwxr-xr-x
xfsdump
291.68
KB
-rwxr-xr-x
xfsinvutil
61.87
KB
-rwxr-xr-x
xfsrestore
353.19
KB
-rwxr-xr-x
xqmstats
14.03
KB
-rwxr-xr-x
xtables-multi
91.52
KB
-rwxr-xr-x
yum-complete-transaction
9.22
KB
-rwxr-xr-x
yumdb
8.67
KB
-rwxr-xr-x
zdump
14.02
KB
-rwxr-xr-x
zic
50.02
KB
-rwxr-xr-x
zramctl
82.23
KB
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : cups-genppdupdate
#!/usr/bin/python # $Id$ # Update CUPS PPDs for Gutenprint queues. # Copyright (C) 2002-2003 Roger Leigh (rleigh@debian.org) # Copyright (C) 2009, 2011 Red Hat, Inc. # # 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, 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. import getopt import glob import os import re import stat import subprocess import sys global optargs global debug global verbose global interactive global quiet global no_action global reset_defaults global version global micro_version global use_static_ppd global file_version global ppd_dir global ppd_root_dir global ppd_base_dir global ppd_out_dir global gzext global updated_ppd_count global skipped_ppd_count global failed_ppd_count global exit_after_parse_args global languages global serverdir global driver_bin global driver_version global server_multicat global server_multicat_initialized global ppd_files global languagemappings def help(): print """ Usage: %s [OPTION]... [PPD_FILE]... Update CUPS+Gutenprint PPD files. -d flags Enable debugging -h Display this help text -n No-action. Don't overwrite any PPD files. -q Quiet mode. No messages except errors. -s ppd_dir Use ppd_dir as the source PPD directory. -p ppd_dir Update PPD files in ppd_dir. -P driver Use the specified driver binary to generate PPD files. -v Verbose messages. -N Reset options to defaults. -o out_dir Output PPD files to out_dir. -r version Use PPD files for Gutenprint major.minor version. -f Ignore new PPD file safety checks. -i Prompt (interactively) for each PPD file. -l language Language choice (Gutenprint 5.1 or below). Choices: %s Or -loriginal to preserve original language with Gutenprint 5.2 or above """ % (sys.argv[0], reduce (lambda x,y: "%s %s" % (x,y), languages)) sys.exit (0) def die_if_not_directory (dir): try: st = os.stat (dir) if not st.S_ISDIR (st.st_mode): os.chdir (dir) except OSError, (e, s): print "%s: invalid directory: %s" % (dir, s) sys.exit (1) def get_driver_version(): global server_multicat global driver_version def run_with_arg (arg): try: p = subprocess.Popen ([driver_bin, arg], stdin=file("/dev/null"), stdout=subprocess.PIPE, stderr=file("/dev/null", "w"), shell=False) (stdout, stderr) = p.communicate () except OSError: return None return stdout stdout = run_with_arg ("org.gutenprint.extensions") if stdout == None: return for line in stdout.split ("\n"): if line == "org.gutenprint.multicat": server_multicat = 1 break stdout = run_with_arg ("VERSION") if stdout == None: return driver_version = stdout.strip () def parse_options(): try: opts, args = getopt.getopt (sys.argv[1:], "d:hnqs:vNo:p:P:r:ifl:") except getopt.GetoptError: help () global optargs global debug global verbose global interactive global quiet global no_action global reset_defaults global version global micro_version global use_static_ppd global file_version global ppd_dir global ppd_out_dir global ppd_base_dir global ppd_root_dir global serverdir global driver_bin global driver_version global server_multicat global languages optargs = dict() for opt, optarg in opts: optargs[opt[1]] = optarg if optargs.has_key ('n'): no_action = 1 if optargs.has_key ('d'): try: debug = int (optargs['d']) except ValueError: d = 0 if optargs.has_key ('v'): verbose = 1 quiet = 0 if optargs.has_key ('q'): verbose = 0 quiet = 1 if optargs.has_key ('N'): reset_defaults = 1 if optargs.has_key ('o'): opt_o = optargs['o'] die_if_not_directory (opt_o) ppd_out_dir = opt_o if optargs.has_key ('r'): opt_r = optargs['r'] if version != opt_r: version = opt_r if optargs.has_key ('s'): opt_s = optargs['s'] die_if_not_directory (opt_s) ppd_base_dir = opt_s driver_bin = "" server_multicat = 0 use_static_ppd = "yes" else: ppd_base_dir = ppd_root_dir + "/gutenprint/" + version driver_bin = serverdir + "/driver/gutenprint." + version driver_version = "" # If user specifies version, we're not going to be able to check # for an exact match. file_version = '"' + version if os.access (driver_bin, os.X_OK): get_driver_version () use_static_ppd = "no" file_version = "\"%s\"$" % driver_version else: print "Gutenprint %s does not appear to be installed!" % version sys.exit (1) if optargs.has_key ('s'): opt_s = optargs['s'] die_if_not_directory (opt_s) ppd_base_dir = opt_s driver_bin = "" server_multicat = 0 driver_version = "" use_static_ppd = "yes" if optargs.has_key ('p'): opt_p = optargs['p'] die_if_not_directory (opt_p) ppd_dir = opt_p if optargs.has_key ('P'): opt_P = optargs['P'] if os.access (opt_P, os.X_OK): driver_bin = opt_P get_driver_version () use_static_ppd = "no" else: print "%s: invalid executable" % opt_P if optargs.has_key ('h'): help () if (optargs.has_key ('l') and optargs['l'].lower () != "original" and optargs['l'].lower () not in languages): print >>sys.stderr, "Unknown language '%s'" % optargs['l'] if optargs.has_key ('i'): interactive = 1 if exit_after_parse_args: sys.exit (0) if verbose and driver_version != "": print "Updating PPD files from Gutenprint %s" % driver_version return args def update_ppd (ppd_source_filename): global ppd_dest_filename global ppd_out_dir global optargs global languagemappings global interactive global server_multicat global no_action global quiet, verbose global reset_defaults ppd_dest_filename = ppd_source_filename if ppd_out_dir: ppd_dest_filename = "%s/%s" % (ppd_out_dir, os.path.basename (ppd_dest_filename)) orig = file (ppd_source_filename) orig_metadata = os.fstat (orig.fileno ()) if debug & 1: print "Source Filename: %s" % ppd_source_filename filename = "" driver = "" gutenprintdriver = "" locale = "" lingo = "" region = "" valid = 0 orig_locale = "" for line in orig.readlines (): line.rstrip () if line.find ("*StpLocale:") != -1: match = re.search ("\*StpLocale:\s*\"(.*)\"$", line) if match: groups = match.groups () if len (groups) >= 1: locale = groups[0] orig_locale = locale valid = 1 elif line.startswith ("*LanguageVersion"): match = re.search ("^\*LanguageVersion:\s*(.*)$", line) if match: groups = match.groups () if len (groups) >= 1: lingo = groups[0] elif line.startswith ("*StpDriverName:"): match = re.search ("^\*StpDriverName:\s*\"(.*)\"$", line) if match: groups = match.groups () if len (groups) >= 1: driver = groups[0] valid = 1 elif line.find ("*%End of ") != -1 and driver == "": match = re.search ("^\*%End of\s*(.*).ppd$", line) if match: groups = match.groups () if len (groups) >= 1: driver = groups[0] elif line.startswith ("*StpPPDLocation:"): match = re.search ("^\*StpPPDLocation:\s*\"(.*)\"$", line) if match: groups = match.groups () if len (groups) >= 1: filename = groups[0] valid = 1 elif line.startswith ("*%Gutenprint Filename:"): valid = 1 if filename and driver and lingo and locale: break if not valid and line.startswith ("*OpenUI"): break if not valid: #print >>sys.stderr, ("Skipping %s: not a Gutenprint PPD file" % # ppd_source_filename) return -1 if (optargs.has_key ('l') and optargs['l'] != "" and optargs['l'].lower () != "original"): locale = optargs['l'] orig_locale = locale if debug & 2: print "Gutenprint Filename: %s" % filename if optargs.has_key ('l'): print "Locale: %s (from -l)" % locale else: print "Locale: %s" % locale print "Language: %s" % lingo print "Driver: %s" % driver if locale: # Split into the language and territory. s = locale.split ("_", 1) locale = s[0] try: region = s[1] except IndexError: region = "" else: # Split into the language and territory. s = lingo.split ("_", 1) locale = s[0] try: region = s[1] except IndexError: region = "" # Convert language into language code. locale = languagemappings.get (lingo.lower (), "C") if debug & 2: print "Base Locale: %s" % locale print "Region: %s" % region # Read in the new PPD, decompressing it if needed... (new_ppd_filename, source_fd) = get_ppd_fh (ppd_source_filename, filename, driver, locale, region) if source_fd == None: print "Unable to retrieve PPD file!" return 0 if interactive: inp = raw_input ("Update PPD %s from %s [nyq]? " % ppd_source_filename) inp = inp.lower () if inp.startswith ("q"): if not server_multicat: source_fd.close () print "Skipping all..." return -2 elif not inp.startswith ("y"): if not server_multicat: source_fd.close () print "Skipping..." return -1 # Extract the default values from the original PPD... orig.seek (0) (odt, oopt, ores, odef, unused) = get_ppd_data (orig, 1, 0, 1, 1, 0) (ndt, nopt, nres, ndef, source_data) = get_ppd_data (source_fd, 1, 1, 1, 1, 1) # Close original and temporary files... orig.close () if not server_multicat: source_fd.close () orig_default_types = odt new_default_types = ndt defaults = odef new_defaults = ndef options = nopt resolution_map = nres old_resolution_map = dict() for key, value in resolution_map.iteritems (): old_resolution_map[value] = key # Store previous language in the PPD file so that -l original works # correctly. if orig_locale != "": lines = source_data.rstrip ().split ("\n") source_data = "" for line in lines: m = re.search ("(\*StpLocale:\s*\")(.*)(\")", line) if m: groups = m.groups () line = groups[0] + orig_locale + groups[2] source_data += line + "\n" if debug & 4: print "Options (Old->New Default Type):" keys = options.keys () keys.sort () for t in keys: old_type = orig_default_types.get (t, "(New)") new_type = new_default_types.get (t) if old_type != new_type: out = " %s (%s -> %s) : " % (t, old_type, new_type) else: out = " %s (%s) : " % (t, new_type) dft = defaults.get ("Default%s" % t) for opt in options.get (t, []): if dft != None and dft == opt: out += "*" out += "%s " % opt print out if len (resolution_map.keys ()) > 0: print "Resolution Map:" keys = resolution_map.keys () keys.sort () for key in keys: print " %s: %s" % (key, resolution_map[key]) if len (old_resolution_map.keys ()) > 0: print "Old Resolution Map:" keys = old_resolution_map.keys () keys.sort () for key in keys: print " %s: %s" % (key, old_resolution_map[key]) print "Non-UI Defaults:" keys = defaults.keys () keys.sort () for key in keys: xkey = key if xkey.startswith ("Default"): xkey = xkey[7:] if not options.has_key (xkey): print " %s: %s" % (key, defaults[key]) print "Default Types of dropped options:" keys = orig_default_types.keys () keys.sort () for t in keys: if not options.has_key (t): print " %s: %s" % (t, orig_default_types[t]) if no_action: if not quiet or verbose: if ppd_dest_filename == ppd_source_filename: print "Would update %s using %s" % (ppd_source_filename, new_ppd_filename) else: print "Would update %s to %s using %s" % (ppd_source_filename, ppd_dest_filename, new_ppd_filename) return 0 if not reset_defaults: # Update source buffer with old defaults... # Loop through each default in turn. keys = defaults.keys () keys.sort () for default_option in keys: default_option_value = defaults[default_option] option = default_option if option.startswith ("Default"): # Strip off `Default' option = option[7:] # Check method is valid orig_method = orig_default_types.get (option) new_method = new_default_types.get (option) new_default = new_defaults.get (default_option) if (orig_method == None or new_method == None or orig_method != new_method): continue if (new_default != None and default_option_value == new_default): if verbose: print "%s: Preserve *%s (%s)" % (ppd_source_filename, default_option, default_option_value) continue if new_method == "PickOne": next_default = False # Check the old setting is valid for opt in options.get (option, []): def_option = default_option_value odef_option = def_option if (option == "Resolution" and old_resolution_map.has_key (def_option)): if debug & 4: print ("Intermapping old resolution %s to %s" % def_option, old_resolution_map[def_option]) def_option = old_resolution_map[def_option] dopts = [def_option] if def_option != odef_option: dopts.append (odef_option) for dopt in dopts: valid = False if dopt == opt: valid = True elif (option == "Resolution" and resolution_map.has_key (dopt)): dopt = resolution_map[dopt] if dopt == opt: valid = True if valid: # Valid option # Set the option in the new PPD lines = source_data.rstrip ().split ("\n") source_data = "" attr = "*%s" % default_option for line in lines: if line.startswith (attr): line = "%s:%s" % (attr, dopt) source_data += line + "\n" if verbose: print "%s: Set *%s to %s" % (ppd_source_filename, default_option, dopt) next_default = True break if next_default: break if next_default: continue print ("Warning: %s: Invalid option: *%s: %s. Using default " "setting %s." % (ppd_source_filename, default_option, defaults[default_option], new_defaults[default_option])) continue print ("Warning: %s: PPD OpenUI method %s not understood." % (ppd_source_filename, new_default_types[default_option])) # Write new PPD... tmpnew = "%s.new" % ppd_dest_filename try: newppd = file (tmpnew, "w") except IOError, (e, s): print "Can't create %s: %s" % (tmpnew, s) return 0 newppd.writelines (source_data) try: newppd.close () except IOError, (e, s): print "Can't write to %s: %s" % (tmpnew, s) return 0 chcon = subprocess.Popen (["chcon", "--reference=%s" % ppd_dest_filename, tmpnew], shell=False, stdin=file("/dev/null"), stdout=file("/dev/null", "w"), stderr=subprocess.STDOUT) chcon.communicate () try: os.rename (tmpnew, ppd_dest_filename) except OSError, (e, s): print "Can't rename %s to %s: %s" % (tmpnew, ppd_dest_filename, s) try: os.unlink (tmpnew) except OSError: pass return 0 try: os.chown (ppd_dest_filename, orig_metadata.st_uid, orig_metadata.st_gid) except OSError: pass try: os.chmod (ppd_dest_filename, orig_metadata.st_mode & 0777) except OSError: pass if not quiet or verbose: if ppd_dest_filename == ppd_source_filename: print "Updated %s using %s" % (ppd_source_filename, new_ppd_filename) else: print "Updated %s to %s using %s" % (ppd_source_filename, ppd_dest_filename, new_ppd_filename) # All done! return 1 def get_ppd_data (fh, types, opts, resolutions, defaults, data): options_map = dict() defaults_map = dict() resolution_map = dict() default_types = dict() cur_opt = "" optionlist = [] source_data = "" if reset_defaults: types = 0 opts = 0 resolutions = 0 defaults = 0 if resolutions or types or opts or defaults or data: while True: line = fh.readline () if line == '': break if line == "*%*%EOFEOF\n": break source_data += line line = line.strip () if (types or opts) and line.startswith ("*OpenUI"): m = re.search ("^\*OpenUI\s\*(\w+).*:\s(\w+)", line) if m: groups = m.groups () key = groups[0] value = groups[1] default_types[key] = value cur_opt = key elif opts and line.startswith ("*CloseUI"): if cur_opt != "": options_map[cur_opt] = optionlist cur_opt = "" optionlist = [] elif opts and line.startswith ("*%s" % cur_opt): m = re.search ("^\*%s\s*(\w+)[\/:]" % cur_opt, line) if m: groups = m.groups() if len (groups) >= 1: value = m.groups ()[0] optionlist.append (value) elif resolutions and line.startswith ("*StpResolutionMap:"): s = line.split (None, 3) if len (s) == 3: new = s[1] old = s[2] resolution_map[old] = new elif defaults and line.startswith ("*Default"): m = re.search ("^\*(\w+):\s*(\w+)", line) if m: groups = m.groups () key = groups[0] value = groups[1] defaults_map[key] = value return (default_types, options_map, resolution_map, defaults_map, source_data) def get_ppd_fh (ppd_source_filename, filename, driver, locale, region): global use_static_ppd global driver_version global optargs global driver_bin global debug global server_multicat, server_multicat_initialized global gzext if use_static_ppd == "no" and driver_version != "": if re.search (".*/([^/]*)(.sim)(.ppd)?(.gz)?$", filename): simplified = "simple" else: simplified = "expert" opt_r = optargs.get ('r') if opt_r: try: opt_r = float (opt_r) except ValueError: opt_r = None url_list = [] if (((opt_r != None and opt_r < 5.2) or (optargs.has_key ('l') and optargs['l'] != "")) and locale != ""): if region: url_list.append ("gutenprint.%s://%s/%s/%s_%s" % version, driver, simplified, locale, region) url_list.append ("gutenprint.%s://%s/%s/%s" % version, driver, simplified, locale) url_list.append ("gutenprint.%s://%s/%s" % (version, driver, simplified)) for url in url_list: new_ppd_filename = url if debug & 8: if server_multicat: cat = "" else: cat = "%s cat " % driver_bin print ("Trying %s%s for %s, %s, %s, %s" % (cat, url, driver, simplified, locale, region)) if server_multicat: try: if not server_multicat_initialized: mc_proc = subprocess.Popen ([driver_bin, "org.gutenprint.multicat"], shell=False, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=file("/dev/null", "w")) server_multicat_initialized = mc_proc print >>server_multicat_initialized.stdin, "%s" % url server_multicat_initialized.stdin.flush () return (new_ppd_filename, server_multicat_initialized.stdout) except OSError: pass try: proc = subprocess.Popen ([driver_bin, "cat", url], shell=False, stdin=file("/dev/null"), stdout=subprocess.PIPE, stderr=file("/dev/null", "w")) return (new_ppd_filename, proc.stdout) except OSError: pass # Otherwise fall through and try to find a static PPD # Search for a PPD matching our criteria... new_ppd_filename = find_ppd (filename, driver, locale, region) if not new_ppd_filename: # There wasn't a valid source PPD file, so give up. print >>sys.stderr, ("%s: no valid candidate for replacement. " "Skipping" % ppd_source_filename) print >>sys.stderr, ("%s: please upgrade this PPD manually" % ppd_source_filename) return ("", None) if debug & 1: print "Candidate PPD: %s" % new_ppd_filename suffix = "\\" + gzext # Add '\' so the regexp matches the '.' if new_ppd_filename.endswith (".gz"): # Decompress input buffer try: proc = subprocess.Popen (['gunzip', '-c', new_ppd_filename], shell=False, stdin=file("/dev/null"), stdout=subprocess.PIPE, stderr=file("/dev/null", "w")) except OSError, (e, s): print "can't open for decompression: %s" % s sys.exit (1) return (new_ppd_filename, proc.stdout) else: return (new_ppd_filename, file (new_ppd_filename)) def find_ppd (gutenprintfilename, drivername, lang, region): global file_version global optargs global ppd_base_dir global ppd_root_dir global debug key = '^\\*FileVersion:[ ]*' + file_version match = re.search (".*/([^/]+\.[0-9]+\.[0-9]+)(\.sim)?(\.ppd)?(\.gz)?$", gutenprintfilename) if not match: return None stored_name = match.groups ()[0] if re.search (".*/([^/]*)(\.sim)(\.ppd)?(\.gz)?$", gutenprintfilename): simplified = ".sim" else: simplified = "" stored_dir = os.path.dirname (gutenprintfilename) current_best_file = "" current_best_time = 0 if optargs.has_key ('s'): basedirs = [optargs['s']] else: basedirs = [ppd_base_dir, stored_dir, ppd_root_dir] lingos = [] if region != "": lingos.append ("%s_%s/" % (lang, region)) lingos.append ("%s/" % lang) if lang != "C": lingos.append ("C/") lingos.append ("en/") lingos.append ("") lingos.append ("Global/") bases = ["stp-%s.%s%s" % (drivername, version, simplified), "%s.%s%s" % (drivername, version, simplified)] if stored_name not in bases: bases.append (stored_name) bases.append (drivername) # All possible candidates, in order of usefulness and gzippedness for lingo in lingos: for suffix in (".ppd%s" % gzext, ".ppd"): for base in bases: for basedir in basedirs: if basedir == "" or base == "": continue fn = "%s/%s%s%s" % (basedir, lingo, base, suffix) if debug & 8: print ("Trying %s for %s, %s, %s" % (fn, gutenprintfilename, lang, region)) try: st = os.stat (fn) except OSError: continue if (optargs.has_key ('f') or (stat.S_ISREG (st.st_mode) and st.st_uid == 0)): # Check that the file is a valid Gutenprint PPD file # of the correct version. if fn.endswith (".gz"): cmdline = "gunzip -c '%s' | grep '%s'" % (fn, key) else: cmdline = "cat '%s' | grep '%s'" % (fn, key) try: p = subprocess.Popen (cmdline, stdin=file("/dev/null"), stdout=subprocess.PIPE, stderr=file("/dev/null", "w")) except OSError: new_file_version = "" else: (stdin, stderr) = p.communicate () new_file_version = stdin.rstrip () if new_file_version != "": if debug & 8: print (" Format valid: time %s best %s " "prev %s cur %s!" % (st.st_mtime, current_best_time, current_best_file, fn)) if st.st_mtime > current_best_time: current_best_time = st.st_mtime current_best_file = fn if debug & 8: print >>sys.stderr, ("***current_best_file " " is %s" % fn) elif debug & 8: print " Format invalid" else: if (not stat.S_ISDIR (st.st_mode) and not fn.endswith ("/")): print >>sys.stderr, ("%s: not a regular file, " "or insecure ownership and " "permissions. Skipped" % fn) if current_best_file: return current_best_file # Yikes! Cannot find a valid PPD file! return None debug=0 verbose=0 interactive=0 quiet=0 no_action=0 reset_defaults=0 version="5.2" micro_version="5.2.9" use_static_ppd="no" file_version='"5.2.9"$' ppd_dir = "/etc/cups/ppd" ppd_root_dir = "/usr/share/cups/model"; ppd_base_dir = ppd_root_dir + "/gutenprint/" + version ppd_out_dir = "" gzext = ".gz" updated_ppd_count = 0 skipped_ppd_count = 0 failed_ppd_count = 0 exit_after_parse_args = 0 languages=["Global", "C"] + "cs da de el en_GB es fi fr gl hu it ja nb nl pl pt ru sk sl sv uk zh_CN zh_TW".split (' ') serverdir = "/usr/lib/cups" driver_bin = serverdir + "/driver/gutenprint." + version driver_version = "" server_multicat = 0 server_multicat_initialized = 0 if os.access (driver_bin, os.X_OK): get_driver_version () ppd_files = [] languagemappings = { "chinese": "cn", "danish": "da", "dutch": "nl", "english": "en", "finnish": "fi", "french": "fr", "german": "de", "greek": "el", "hungarian": "hu", "italian": "it", "japanese": "jp", "norwegian": "no", "polish": "pl", "portuguese": "pt", "russian": "ru", "slovak": "sk", "spanish": "es", "swedish": "sv", "turkish": "tr" } # Check command-line options... args = parse_options() # Set a secure umask... os.umask (0177) # Find all in-use Gutenprint PPD files... # For case-insensitive filesystems, use only one of .ppd and .PPD # (bug 1929738) for f in args: if (os.access (f, os.F_OK) and (f.lower ().endswith (".ppd") or f.find ("/") != -1)): ppd_files.append (f) elif os.access ("%s/%s" % (ppd_dir, f), os.F_OK): ppd_files.append ("%s/%s" % (ppd_dir, f)) elif os.access ("%s/%s.ppd" % (ppd_dir, f), os.F_OK): ppd_files.append ("%s/%s.ppd" % (ppd_dir, f)) elif os.access ("%s/%s.PPD" % (ppd_dir, f), os.F_OK): ppd_files.append ("%s/%s.PPD" % (ppd_dir, f)) else: print >>sys.stderr, ("Cannot find file %s/%s, %s/%s.ppd, or %s/%s.PPD" % ppd_dir, f, ppd_dir, f, ppd_dir, f) if len (args) == 0: ppdtmp = glob.glob ("%s/*.ppd" % ppd_dir) ppdtmp += glob.glob ("%s/*.PPD" % ppd_dir) ppd_map = dict() for each in ppdtmp: ppd_map[each] = 1 for f in ppdtmp: if f.endswith (".PPD"): g = f[:-4] + ".ppd" if not ppd_map.has_key (g): ppd_files.append (f) else: ppd_files.append (f) # Update each of the Gutenprint PPDs, where possible... for ppd_file in ppd_files: status = update_ppd (ppd_file) if status == -2: break elif status == 0: failed_ppd_count += 1 elif status == 1: updated_ppd_count += 1 elif status == -1: skipped_ppd_count += 1 if (not quiet) or verbose: if len (ppd_files) == 0: print "No Gutenprint PPD files to update." elif updated_ppd_count > 0: plural = "" if updated_ppd_count != 1: plural = "s" print "Updated %d PPD file%s" % (updated_ppd_count, plural) if ((not optargs.has_key ('o')) or optargs['o'] != ""): print "Restart cupsd for the changes to take effect." else: if failed_ppd_count > 0: print "Failed to update any PPD files" else: print "Did not update any PPD files" sys.exit (failed_ppd_count > 0)
Close