Linux anchor 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64
Apache/2.4.18 (Ubuntu)
Server IP : 10.10.100.4 & Your IP : 216.73.217.150
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
sbin /
Delete
Unzip
Name
Size
Permission
Date
Action
a2disconf
15.06
KB
-rwxr-xr-x
2020-07-16 00:29
a2dismod
15.06
KB
-rwxr-xr-x
2020-07-16 00:29
a2dissite
15.06
KB
-rwxr-xr-x
2020-07-16 00:29
a2enconf
15.06
KB
-rwxr-xr-x
2020-07-16 00:29
a2enmod
15.06
KB
-rwxr-xr-x
2020-07-16 00:29
a2ensite
15.06
KB
-rwxr-xr-x
2020-07-16 00:29
a2query
9.64
KB
-rwxr-xr-x
2020-08-13 03:35
aa-exec
22.16
KB
-rwxr-xr-x
2023-06-29 13:30
aa-remove-unknown
2.86
KB
-rwxr-xr-x
2023-06-29 13:30
aa-status
7.11
KB
-rwxr-xr-x
2023-06-29 13:30
accessdb
10.23
KB
-rwxr-xr-x
2015-11-07 00:14
acpid
46.98
KB
-rwxr-xr-x
2016-04-09 00:36
add-shell
695
B
-rwxr-xr-x
2016-01-26 19:17
addgnupghome
3.01
KB
-rwxr-xr-x
2018-06-14 22:06
addgroup
36.4
KB
-rwxr-xr-x
2015-07-02 22:11
adduser
36.4
KB
-rwxr-xr-x
2015-07-02 22:11
apache2
647.03
KB
-rwxr-xr-x
2020-08-13 03:36
apache2ctl
6.25
KB
-rwxr-xr-x
2020-07-16 00:29
apachectl
6.25
KB
-rwxr-xr-x
2020-07-16 00:29
apparmor_status
7.11
KB
-rwxr-xr-x
2023-06-29 13:30
applygnupgdefaults
2.16
KB
-rwxr-xr-x
2018-06-14 22:06
arp
54.09
KB
-rwxr-xr-x
2014-06-30 15:19
arpd
46.74
KB
-rwxr-xr-x
2019-04-16 14:37
atd
26.01
KB
-rwxr-xr-x
2016-01-14 23:35
bcache-super-show
14.23
KB
-rwxr-xr-x
2015-06-27 01:10
biosdecode
18.82
KB
-rwxr-xr-x
2020-02-07 17:53
check_forensic
952
B
-rwxr-xr-x
2011-04-26 17:10
chgpasswd
53.33
KB
-rwxr-xr-x
2019-03-26 20:34
chpasswd
49.43
KB
-rwxr-xr-x
2019-03-26 20:34
chroot
38.8
KB
-rwxr-xr-x
2017-03-02 19:07
cifs.idmap
14.07
KB
-rwxr-xr-x
2017-03-06 14:02
cifs.upcall
30.07
KB
-rwxr-xr-x
2017-03-06 14:02
cpgr
51.48
KB
-rwxr-xr-x
2019-03-26 20:34
cppw
51.48
KB
-rwxr-xr-x
2019-03-26 20:34
cron
43.43
KB
-rwxr-xr-x
2016-04-05 23:59
cryptdisks_start
1.11
KB
-rwxr-xr-x
2017-09-06 12:08
cryptdisks_stop
1.16
KB
-rwxr-xr-x
2017-09-06 12:08
delgroup
16.13
KB
-rwxr-xr-x
2015-07-02 22:11
deluser
16.13
KB
-rwxr-xr-x
2015-07-02 22:11
dmidecode
102.49
KB
-rwxr-xr-x
2020-02-07 17:53
dnsmasq
363.35
KB
-rwxr-xr-x
2021-04-22 15:12
dpkg-divert
135.4
KB
-rwxr-xr-x
2021-04-20 22:48
dpkg-preconfigure
3.52
KB
-rwxr-xr-x
2019-05-08 20:33
dpkg-reconfigure
4.23
KB
-rwxr-xr-x
2019-05-08 20:33
dpkg-statoverride
59.08
KB
-rwxr-xr-x
2021-04-20 22:48
e2freefrag
10.24
KB
-rwxr-xr-x
2020-01-22 15:42
e4defrag
26.53
KB
-rwxr-xr-x
2020-01-22 15:42
ephemeral-disk-warning
982
B
-rwxr-xr-x
2019-05-23 23:15
fdformat
22.57
KB
-rwxr-xr-x
2020-01-27 15:28
filefrag
14.31
KB
-rwxr-xr-x
2020-01-22 15:42
genl
46.69
KB
-rwxr-xr-x
2019-04-16 14:37
groupadd
57.42
KB
-rwxr-xr-x
2019-03-26 20:34
groupdel
53.2
KB
-rwxr-xr-x
2019-03-26 20:34
groupmod
67.7
KB
-rwxr-xr-x
2019-03-26 20:34
grpck
53.31
KB
-rwxr-xr-x
2019-03-26 20:34
grpconv
49.19
KB
-rwxr-xr-x
2019-03-26 20:34
grpunconv
49.2
KB
-rwxr-xr-x
2019-03-26 20:34
grub-bios-setup
765.98
KB
-rwxr-xr-x
2021-04-30 18:02
grub-install
964.38
KB
-rwxr-xr-x
2021-04-30 18:02
grub-macbless
753.64
KB
-rwxr-xr-x
2021-04-30 18:02
grub-mkconfig
7.85
KB
-rwxr-xr-x
2021-04-30 18:00
grub-mkdevicemap
196.29
KB
-rwxr-xr-x
2021-04-30 18:02
grub-probe
765.92
KB
-rwxr-xr-x
2021-04-30 18:02
grub-reboot
4.02
KB
-rwxr-xr-x
2021-04-30 18:00
grub-set-default
3.48
KB
-rwxr-xr-x
2021-04-30 18:00
httxt2dbm
9.96
KB
-rwxr-xr-x
2020-08-13 03:36
hv_fcopy_daemon
1.58
KB
-rwxr-xr-x
2021-04-16 13:32
hv_get_dhcp_info
1.39
KB
-rwxr-xr-x
2021-04-16 13:32
hv_get_dns_info
622
B
-rwxr-xr-x
2021-04-16 13:32
hv_kvp_daemon
1.58
KB
-rwxr-xr-x
2021-04-16 13:32
hv_set_ifconfig
7.72
KB
-rwxr-xr-x
2021-04-16 13:32
hv_vss_daemon
1.58
KB
-rwxr-xr-x
2021-04-16 13:32
iconvconfig
26.66
KB
-rwxr-xr-x
2021-04-21 20:14
install-sgmlcatalog
4.44
KB
-rwxr-xr-x
2012-12-05 15:11
invoke-rc.d
19.41
KB
-rwxr-xr-x
2016-11-29 18:28
ip6tables-apply
6.85
KB
-rwxr-xr-x
2016-02-19 16:20
iptables-apply
6.85
KB
-rwxr-xr-x
2016-02-19 16:20
irqbalance
47.3
KB
-rwxr-xr-x
2016-04-11 19:56
iscsi-iname
13.99
KB
-rwxr-xr-x
2018-12-11 21:12
iscsi_discovery
5.16
KB
-rwxr-xr-x
2013-09-12 09:01
iscsid
765.61
KB
-rwxr-xr-x
2018-12-11 21:12
iscsistart
321.29
KB
-rwxr-xr-x
2018-12-11 21:12
laptop-detect
2.53
KB
-rwxr-xr-x
2010-03-06 15:44
ldattach
26.63
KB
-rwxr-xr-x
2020-01-27 15:28
locale-gen
4.3
KB
-rwxr-xr-x
2016-04-14 20:33
logrotate
63.11
KB
-rwxr-xr-x
2017-08-10 17:16
lsvmbus
1.58
KB
-rwxr-xr-x
2021-04-16 13:32
luksformat
3.2
KB
-rwxr-xr-x
2017-09-06 12:08
make-bcache
18.35
KB
-rwxr-xr-x
2015-06-27 01:10
make-ssl-cert
3.7
KB
-rwxr-xr-x
2015-08-16 19:14
mkinitramfs
10.24
KB
-rwxr-xr-x
2019-10-07 12:53
mklost+found
10.25
KB
-rwxr-xr-x
2020-01-22 15:42
mysqld
23.52
MB
-rwxr-xr-x
2021-01-28 17:23
newusers
73.84
KB
-rwxr-xr-x
2019-03-26 20:34
nfnl_osf
14.37
KB
-rwxr-xr-x
2016-02-19 16:21
nologin
5.95
KB
-rwxr-xr-x
2019-03-26 20:34
nscd
34.92
KB
-rwxr-xr-x
2016-03-20 11:25
ntp-keygen
66.91
KB
-rwxr-xr-x
2020-01-07 16:08
ntp-wait
3.13
KB
-rwxr-xr-x
2020-01-07 16:08
ntpd
717.27
KB
-rwxr-xr-x
2020-01-07 16:08
ntpdate
75.97
KB
-rwxr-xr-x
2020-01-07 16:08
ntpdate-debian
583
B
-rwxr-xr-x
2020-01-07 16:08
ntptime
14.31
KB
-rwxr-xr-x
2020-01-07 16:08
openvpn
674.28
KB
-rwxr-xr-x
2019-05-08 15:50
overlayroot-chroot
2.45
KB
-rwxr-xr-x
2018-10-01 19:50
ownership
10.13
KB
-rwxr-xr-x
2020-02-07 17:53
pam-auth-update
19.09
KB
-rwxr-xr-x
2020-10-01 02:33
pam_getenv
2.82
KB
-rwxr-xr-x
2020-10-01 02:33
pam_timestamp_check
10.38
KB
-rwxr-xr-x
2020-10-01 02:36
paperconfig
4.07
KB
-rwxr-xr-x
2015-11-04 12:21
phpdismod
7.11
KB
-rwxr-xr-x
2021-02-22 11:45
phpenmod
7.11
KB
-rwxr-xr-x
2021-02-22 11:45
phpquery
6.24
KB
-rwxr-xr-x
2021-02-22 11:45
popcon-largest-unused
543
B
-rwxr-xr-x
2016-02-26 20:55
popularity-contest
4.56
KB
-rwxr-xr-x
2016-02-26 20:55
postalias
17.87
KB
-rwxr-xr-x
2020-07-28 23:11
postcat
13.94
KB
-rwxr-xr-x
2020-07-28 23:11
postconf
171.16
KB
-rwxr-xr-x
2020-07-28 23:11
postdrop
13.99
KB
-r-xr-sr-x
2020-07-28 23:11
postfix
13.95
KB
-rwxr-xr-x
2020-07-28 23:11
postfix-add-filter
4.9
KB
-rwxr-xr-x
2020-07-28 23:11
postfix-add-policy
3.83
KB
-rwxr-xr-x
2020-07-28 23:11
postkick
9.87
KB
-rwxr-xr-x
2020-07-28 23:11
postlock
9.87
KB
-rwxr-xr-x
2020-07-28 23:11
postlog
10.02
KB
-rwxr-xr-x
2020-07-28 23:11
postmap
17.87
KB
-rwxr-xr-x
2020-07-28 23:11
postmulti
26.26
KB
-rwxr-xr-x
2020-07-28 23:11
postqueue
17.95
KB
-r-xr-sr-x
2020-07-28 23:11
postsuper
22.2
KB
-rwxr-xr-x
2020-07-28 23:11
posttls-finger
33.95
KB
-rwxr-xr-x
2020-07-28 23:11
pwck
45.36
KB
-rwxr-xr-x
2019-03-26 20:34
pwconv
41.27
KB
-rwxr-xr-x
2019-03-26 20:34
pwunconv
36.43
KB
-rwxr-xr-x
2019-03-26 20:34
qmqp-sink
13.87
KB
-rwxr-xr-x
2020-07-28 23:11
qmqp-source
17.88
KB
-rwxr-xr-x
2020-07-28 23:11
qshape
12.55
KB
-rwxr-xr-x
2020-07-28 23:11
readprofile
14.52
KB
-rwxr-xr-x
2020-01-27 15:28
remove-shell
749
B
-rwxr-xr-x
2016-01-26 19:17
rmail
13.87
KB
-rwxr-xr-x
2020-07-28 23:11
rmt
54.95
KB
-rwxr-xr-x
2021-01-11 18:30
rmt-tar
54.95
KB
-rwxr-xr-x
2021-01-11 18:30
rsyslogd
585.28
KB
-rwxr-xr-x
2019-03-25 14:14
rtcwake
38.8
KB
-rwxr-xr-x
2020-01-27 15:28
safe_finger
10.35
KB
-rwxr-xr-x
2014-01-13 00:11
samba_kcc
10.72
KB
-rwxr-xr-x
2021-04-14 18:00
sendmail
26.02
KB
-rwxr-xr-x
2020-07-28 23:11
service
9.82
KB
-rwxr-xr-x
2016-09-12 10:57
setvesablank
10.27
KB
-rwxr-xr-x
2016-09-22 19:33
smtp-sink
30.8
KB
-rwxr-xr-x
2020-07-28 23:11
smtp-source
21.89
KB
-rwxr-xr-x
2020-07-28 23:11
spfd
17.96
KB
-r-xr-xr-x
2017-10-05 13:57
split-logfile
2.36
KB
-rwxr-xr-x
2020-08-13 03:34
sshd
772.48
KB
-rwxr-xr-x
2020-05-27 01:17
tarcat
936
B
-rwxr-xr-x
2021-01-11 18:30
tcpd
10.21
KB
-rwxr-xr-x
2014-01-13 00:11
tcpdchk
22.51
KB
-rwxr-xr-x
2014-01-13 00:11
tcpdmatch
18.42
KB
-rwxr-xr-x
2014-01-13 00:11
tcpdump
1007.6
KB
-rwxr-xr-x
2020-01-24 15:00
try-from
10.16
KB
-rwxr-xr-x
2014-01-13 00:11
tunelp
22.53
KB
-rwxr-xr-x
2020-01-27 15:28
tzconfig
106
B
-rwxr-xr-x
2016-01-21 18:04
ufw
4.4
KB
-rwxr-xr-x
2016-04-15 07:16
update-alternatives
46.61
KB
-rwxr-xr-x
2021-04-20 22:48
update-ca-certificates
5.16
KB
-rwxr-xr-x
2021-02-01 17:16
update-catalog
9.15
KB
-rwxr-xr-x
2012-12-05 15:11
update-grub
64
B
-rwxr-xr-x
2020-08-24 10:54
update-grub-gfxpayload
301
B
-rwxr-xr-x
2015-03-27 18:50
update-grub2
64
B
-rwxr-xr-x
2020-08-24 10:54
update-gsfontmap
450
B
-rwxr-xr-x
2021-01-06 20:23
update-info-dir
1.66
KB
-rwxr-xr-x
2016-03-12 10:46
update-initramfs
8.38
KB
-rwxr-xr-x
2019-10-07 12:53
update-locale
2.99
KB
-rwxr-xr-x
2016-01-27 15:17
update-mime
8.84
KB
-rwxr-xr-x
2015-10-30 16:39
update-passwd
30.41
KB
-rwxr-xr-x
2016-01-03 00:13
update-pciids
2.84
KB
-rwxr-xr-x
2019-02-11 14:13
update-rc.d
14.1
KB
-rwxr-xr-x
2016-02-29 13:24
update-usbids
1.05
KB
-rwxr-xr-x
2015-10-23 23:56
update-xmlcatalog
16.28
KB
-rwxr-xr-x
2012-11-07 22:44
upgrade-from-grub-legacy
1.49
KB
-rwxr-xr-x
2020-08-24 10:54
useradd
118.72
KB
-rwxr-xr-x
2019-03-26 20:34
userdel
81.92
KB
-rwxr-xr-x
2019-03-26 20:34
usermod
118.5
KB
-rwxr-xr-x
2019-03-26 20:34
uuidd
30.73
KB
-rwxr-xr-x
2020-01-27 15:28
validlocale
1.73
KB
-rwxr-xr-x
2016-01-27 15:17
vcstime
6.26
KB
-rwxr-xr-x
2016-09-22 19:33
vigr
55.7
KB
-rwxr-xr-x
2019-03-26 20:34
vipw
55.7
KB
-rwxr-xr-x
2019-03-26 20:34
visudo
187.89
KB
-rwxr-xr-x
2021-01-20 18:08
vpddecode
14.27
KB
-rwxr-xr-x
2020-02-07 17:53
waagent
1.48
KB
-rwxr-xr-x
2020-01-30 18:10
waagent2.0
246.41
KB
-rwxr-xr-x
2020-01-30 18:10
xfs_admin
1.35
KB
-rwxr-xr-x
2017-09-08 22:23
xfs_bmap
638
B
-rwxr-xr-x
2017-09-08 22:23
xfs_copy
335.02
KB
-rwxr-xr-x
2017-09-08 22:24
xfs_db
548.46
KB
-rwxr-xr-x
2017-09-08 22:24
xfs_estimate
10.26
KB
-rwxr-xr-x
2017-09-08 22:24
xfs_freeze
767
B
-rwxr-xr-x
2017-09-08 22:23
xfs_fsr
30.68
KB
-rwxr-xr-x
2017-09-08 22:24
xfs_growfs
323.02
KB
-rwxr-xr-x
2017-09-08 22:24
xfs_info
472
B
-rwxr-xr-x
2017-09-08 22:23
xfs_io
119.72
KB
-rwxr-xr-x
2017-09-08 22:24
xfs_logprint
351.3
KB
-rwxr-xr-x
2017-09-08 22:24
xfs_mdrestore
310.94
KB
-rwxr-xr-x
2017-09-08 22:24
xfs_metadump
747
B
-rwxr-xr-x
2017-09-08 22:23
xfs_mkfile
1007
B
-rwxr-xr-x
2017-09-08 22:23
xfs_ncheck
650
B
-rwxr-xr-x
2017-09-08 22:23
xfs_quota
82.69
KB
-rwxr-xr-x
2017-09-08 22:24
xfs_rtcp
14.34
KB
-rwxr-xr-x
2017-09-08 22:24
zerofree
10.16
KB
-rwxr-xr-x
2014-05-06 13:01
zic
50.54
KB
-rwxr-xr-x
2021-04-21 20:14
Save
Rename
#!/usr/bin/perl ## ---------------------------------------------------------------------- ## Debian update-xmlcatalog ## ---------------------------------------------------------------------- ## Copyright (c) 2003-2004 Ardo van Rangelrooij ## ## This is free software; see the GNU General Public Licence version 2 ## or later for copying conditions. There is NO warranty. ## ---------------------------------------------------------------------- =head1 NAME update-xmlcatalog - maintain XML catalog files =head1 SYNOPSIS B<update-xmlcatalog> B<--add> B<--root> S<B<--package> I<package>> S<B<--type> I<type>> S<B<--id> I<id>> B<update-xmlcatalog> B<--del> B<--root> S<B<--package> I<package>> S<B<--type> I<type>> S<B<--id> I<id>> B<update-xmlcatalog> B<--add> S<B<--package> I<package>> S<B<--local> I<local>> S<B<--type> I<type>> S<B<--id> I<id>> B<update-xmlcatalog> B<--del> S<B<--package> I<package>> S<B<--local> I<local>> S<B<--type> I<type>> S<B<--id> I<id>> B<update-xmlcatalog> B<--add> S<B<--local> I<local>> S<B<--file> I<file>> S<B<--type> I<type>> S<B<--id> I<id>> B<update-xmlcatalog> B<--del> S<B<--local> I<local>> S<B<--file> I<file>> S<B<--type> I<type>> S<B<--id> I<id>> B<update-xmlcatalog> B<--help> =head1 DESCRIPTION B<update-xmlcatalog> add entries to and removes entries from the root XML catalog file, a package XML catalog file or a local XML catalog file. =head1 OPTIONS =over 4 =item B<--add> Adds the entry to the root XML catalog file, a package XML catalog file or a local XML catalog file. If the XML catalog file does not exist yet, it is automatically created. =item B<--del> Deletes the entry from the root XML catalog file, the package XML catalog file or the local XML catalog file. A resulting empty XML catalog is not automatically deleted from the filesystem. =item B<--file> I<file> Indicates a local filename. =item B<--id> I<id> Indicates the XML catalog file entry identifier. =item B<--local> I<local> Indicates a local XML catalog file. =item B<--package> I<package> Indicates a package XML catalog file. =item B<--root> Indicates the root XML catalog file. =item B<--type> I<type> Indicates the XML catalog file entry type (public, system, uri). =item B<--help> Displays the usage information. =back =head1 NOTES B<update-xmlcatalog> is the de-facto standard tool to be used to maintain XML catalog files on a Debian system, similar to that L<update-catalog(8)> is the standard tool to be used to main SGML catalog files on a Debian system. A Debian XML Policy document to this effect is currently under development. B<update-xmlcatalog> and L<xmlcatalog(1)> are incompatible. The former has an internal database of all the entries in all the XML catalog files it maintains and regenerates the indicated XML catalog file completely from scratch upon an update. The latter updates the indicated XML catalog file directly. This means that any change made to an XML catalog file using L<xmlcatalog(1)> is overwritten the next time that XML catalog file is updated using B<update-xmlcatalog>. =head1 SEE ALSO F</usr/share/doc/xml-core/README.Debian> =head1 AUTHOR B<Ardo van Rangelrooij> E<lt>ardo@debian.orgE<gt> =cut ## ---------------------------------------------------------------------- use strict; ## ---------------------------------------------------------------------- use File::Spec; use Getopt::Long; ## ---------------------------------------------------------------------- $0 =~ m|[^/]+$|; ## ---------------------------------------------------------------------- my $name = $&; ## ---------------------------------------------------------------------- use vars qw( $catalog_data $catalog_data_dir ); use vars qw( $catalog $catalog_dir ); use vars qw( %catalog $key $entry ); ## ---------------------------------------------------------------------- $catalog_data_dir = '/var/lib/xml-core'; $catalog_dir = '/etc/xml'; ## ---------------------------------------------------------------------- use vars qw( $add ); use vars qw( $del ); use vars qw( $file ); use vars qw( $help ); use vars qw( $local ); use vars qw( $package ); use vars qw( $root ); use vars qw( $type $id ); use vars qw( $verbose ); ## ---------------------------------------------------------------------- if ( ! GetOptions( 'add' => \$add, 'del' => \$del, 'file=s' => \$file, 'help' => \$help, 'id=s' => \$id, 'local=s' => \$local, 'package=s' => \$package, 'root' => \$root, 'type=s' => \$type, 'verbose' => \$verbose, ) ) { &help; exit 1; } ## ---------------------------------------------------------------------- if ( defined( $help ) ) { &help; exit -1; } ## ---------------------------------------------------------------------- if ( ! ( defined( $add ) || defined( $del ) ) ) { print STDERR "$name: error: either 'add' or 'del' must be given\n"; exit 1; } elsif ( ( defined( $add ) && defined( $del ) ) ) { print STDERR "$name: error: only one of 'add' and 'del' can be given\n"; exit 1; } ## ---------------------------------------------------------------------- if ( defined( $add ) ) { if ( defined( $root ) ) { if ( defined( $package ) ) { my $catalog = File::Spec->catfile( $catalog_dir, "$package.xml" ); if ( ! -f $catalog ) { print STDERR "$name: error: package catalog $catalog not found\n"; exit 1; } } else { print STDERR "$name: error: package catalog not given\n"; exit 1; } if ( defined( $local) || defined( $file ) ) { print STDERR "$name: error: local catalog and file not for adding to root catalog file\n"; exit 1; } } elsif ( defined( $package ) ) { if ( defined( $local ) ) { if ( ! -f $local ) { print STDERR "$name: error: local catalog $local not found\n"; exit 1; } } else { print STDERR "$name: error: local catalog not given\n"; exit 1; } if ( defined( $file ) ) { print STDERR "$name: error: file not for adding to package catalog file\n"; exit 1; } } elsif ( defined( $local ) ) { if ( defined( $file ) ) { if ( ! -f $file ) { print STDERR "$name: error: file $file not found\n"; exit 1; } } else { print STDERR "$name: error: file not given\n"; exit 1; } } else { print STDERR "$name: error: catalog not given\n"; exit 1; } } elsif ( defined( $del ) ) { if ( defined( $root ) ) { my $catalog = File::Spec->catfile( $catalog_dir, 'catalog' ); if ( ! -f $catalog ) { print STDERR "$name: error: root catalog $catalog not found\n"; exit 1; } if ( defined( $package) || defined( $local ) || defined( $file ) ) { print STDERR "$name: error: package catalog, local catalog or file not for deleting from root catalog file\n"; exit 1; } } elsif ( defined( $package ) ) { my $catalog = File::Spec->catfile( $catalog_dir, "$package.xml" ); if ( ! -f $catalog ) { print STDERR "$name: error: package catalog $catalog not found\n"; exit 1; } if ( defined( $local ) || defined( $file ) ) { print STDERR "$name: error: local catalog or file not for deleting from package catalog file\n"; exit 1; } } elsif ( defined( $local ) ) { if ( ! -f $local ) { print STDERR "$name: error: local catalog $local not found\n"; exit 1; } if ( defined( $file ) ) { print STDERR "$name: error: file not for deleting from local catalog file\n"; exit 1; } } else { print STDERR "$name: error: catalog not given\n"; exit 1; } } ## ---------------------------------------------------------------------- if ( defined( $type ) ) { if ( $type !~ /^(public|system|uri)$/ ) { print STDERR "$name: error: wrong type\n"; exit 1; } } else { print STDERR "$name: error: type not given\n"; exit 1; } ## ---------------------------------------------------------------------- if ( ! defined( $id ) ) { print STDERR "$name: error: id not given\n"; exit 1; } ## ---------------------------------------------------------------------- if ( defined( $root ) ) { $catalog = 'catalog'; $catalog_data = File::Spec->catfile( $catalog_data_dir, $catalog ); $catalog = File::Spec->catfile( $catalog_dir, $catalog ); my $start = $type; $start .= 'Id' unless $type eq 'uri'; $start .= 'StartString'; $id = "$start=\"$id\""; $type = ( $type eq 'uri' ) ? "\U$type" : "\u$type"; $type = "delegate$type"; $package = "catalog=\"file:///etc/xml/$package.xml\""; $key = "$type $id"; $entry = "$package"; } elsif ( defined( $package ) ) { $catalog_data = File::Spec->catfile( $catalog_data_dir, $package ); $catalog = File::Spec->catfile( $catalog_dir, "$package.xml" ); my $start = $type; $start .= 'Id' unless $type eq 'uri'; $start .= 'StartString'; $id = "$start=\"$id\""; $type = ( $type eq 'uri' ) ? "\U$type" : "\u$type"; $type = "delegate$type"; $local = "catalog=\"file://$local\""; $key = "$type $id"; $entry = "$local"; } elsif ( defined( $local ) ) { $catalog = $local; $catalog_data = $local; $catalog_data =~ tr|/|_|; $catalog_data = File::Spec->catfile( $catalog_data_dir, $catalog_data ); my $start = ( $type eq 'uri' ) ? 'name' : $type; $start .= 'Id' unless $type eq 'uri'; $id = "$start=\"$id\""; $file = "uri=\"$file\""; $key = "$type $id"; $entry = "$file"; } ## ---------------------------------------------------------------------- if ( defined( $add ) ) { &read_catalog_data if -f $catalog_data; if ( &add_entry ) { &create_backup if -f $catalog; &write_catalog_data; &write_catalog; } else { exit 1; } } elsif ( defined( $del ) ) { &read_catalog_data; if ( &del_entry ) { &create_backup; &write_catalog_data; &write_catalog; } else { exit 1; } } ## ---------------------------------------------------------------------- exit 0; ## ---------------------------------------------------------------------- sub add_entry { ## ------------------------------------------------------------------ if ( exists( $catalog{ $key } ) ) { if ( $catalog{ $key } ne $entry ) { print STDERR "$name: error: entity already registered with a different value\n"; print STDERR " Entity : [$key]\n"; print STDERR " Old value: [$catalog{$key}]\n"; print STDERR " New value: [$entry]\n"; return; } else { print STDERR "$name: notice: entity already registered\n" if $verbose; return 1; } } else { print "$name: adding entity to catalog data $catalog_data with the same value\n" if $verbose; $catalog{ $key } = $entry; return 1; } } ## add_entry ## ---------------------------------------------------------------------- sub del_entry { ## ------------------------------------------------------------------ if ( exists( $catalog{ $key } ) ) { print "$name: removing entity from catalog data $catalog_data\n" if $verbose; delete( $catalog{ $key } ); return 1; } else { print STDERR "$name: error: entity not registered\n"; return; } } ## del_entry ## ---------------------------------------------------------------------- sub read_catalog_data { ## ------------------------------------------------------------------ print "$name: reading catalog data $catalog_data\n" if $verbose; open( CATALOG_DATA, '<', $catalog_data ) or die "$name: cannot open catalog data $catalog_data for reading: $!"; while ( <CATALOG_DATA> ) { chop; my ( $key, $entry ) = split( />/ ); $key =~ s/^<//; $entry =~ s/^<//; $catalog{ $key } = $entry; } close( CATALOG_DATA ) or die "$name: cannot close catalog data $catalog_data: $!"; } ## read_catalog_data ## ---------------------------------------------------------------------- sub write_catalog_data { ## ------------------------------------------------------------------ print "$name: writing catalog data $catalog_data\n" if $verbose; open( CATALOG_DATA, '>', $catalog_data ) or die "$name: cannot open catalog data $catalog_data for writing: $!"; my $counter = 0; for my $key ( keys %catalog ) { print( CATALOG_DATA "<$key><$catalog{ $key }>\n" ); $counter++; } close( CATALOG_DATA ) or die "$name: cannot close catalog data $catalog_data: $!"; ## ------------------------------------------------------------------ if ( $counter == 0 ) { print "$name: removing catalog data $catalog_data\n" if $verbose; unlink( $catalog_data ); } } ## write_catalog_data ## ---------------------------------------------------------------------- sub create_backup { ## ------------------------------------------------------------------ my $backup = $catalog . '.old'; ## ------------------------------------------------------------------ if ( -f $backup ) { print "$name: removing backup $backup\n" if $verbose; unlink( $backup ) or die "$name: cannot remove backup $backup: $!"; } ## ------------------------------------------------------------------ print "$name: moving catalog $catalog to backup $backup\n" if $verbose; rename( $catalog, $backup ) or die "$name: cannot move catalog $catalog to backup $backup: $!"; } ## create_backup ## ---------------------------------------------------------------------- sub write_catalog { ## ------------------------------------------------------------------ my @catalog = (); ## ------------------------------------------------------------------ my $header = '/usr/share/xml-core/catalog.header'; open( HEADER, '<', $header ) or die "$name: cannot open catalog header $header for reading: $!"; while ( <HEADER> ) { chop; push( @catalog, $_ ); } close( HEADER ) or die "$name: cannot close catalog header $header: $!"; ## ------------------------------------------------------------------ my $counter = 0; for my $key ( keys %catalog ) { push( @catalog, "<$key $catalog{ $key }/>" ); $counter++; } ## ------------------------------------------------------------------ my $footer = '/usr/share/xml-core/catalog.footer'; open( FOOTER, '<', $footer ) or die "$name: cannot open catalog footer $footer for reading: $!"; while ( <FOOTER> ) { chop; push( @catalog, $_ ); } close( FOOTER ) or die "$name: cannot close catalog footer $footer: $!"; ## ------------------------------------------------------------------ print "$name: writing catalog $catalog\n" if $verbose; open( CATALOG, '>', $catalog ) or die "$name: cannot open catalog $catalog for writing: $!"; for ( @catalog ) { print( CATALOG $_, "\n" ); } close( CATALOG ) or die "$name: cannot close catalog $catalog: $!"; ## ------------------------------------------------------------------ if ( $counter == 0 ) { print "$name: removing catalog $catalog\n" if $verbose; unlink( $catalog ); } } ## write_catalog ## ---------------------------------------------------------------------- sub help { ## ------------------------------------------------------------------ print <<END; Usage: $name <options> --add --root --type <type> \\ --id <id> --package <package> $name <options> --del --root --type <type> \\ --id <id> $name <options> --add --package <package> --type <type> \\ --id <id> --local <local> $name <options> --del --package <package> --type <type> \\ --id <id> $name <options> --add --local <local> --type <type> \\ --id <id> --file <file> $name <options> --del --local <local> --type <type> \\ --id <id> $name --help With: --file <file> = a local filename --id <id> = catalog entry idenitifier --local <local> = a local XML catalog --package <package> = a package XML catalog --root = the root XML catalog (= /etc/xml/catalog) --type <type> = catalog entry type (= public, system, uri) Options: --verbose = be verbose END } ## help ## ---------------------------------------------------------------------- __END__ ## ----------------------------------------------------------------------