Linux server.thearyasamaj.org 4.18.0-553.56.1.el8_10.x86_64 #1 SMP Tue Jun 10 05:00:59 EDT 2025 x86_64
Apache
: 103.90.241.146 | : 216.73.216.156
Cant Read [ /etc/named.conf ]
5.6.40
ftpuser@mantra.thearyasamaj.org
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 /
libexec /
webmin /
virtual-server /
[ HOME SHELL ]
Name
Size
Permission
Action
IDNA
[ DIR ]
drwxr-xr-x
PHP
[ DIR ]
drwxr-xr-x
S3
[ DIR ]
drwxr-xr-x
default
[ DIR ]
drwxr-xr-x
help
[ DIR ]
drwxr-xr-x
images
[ DIR ]
drwxr-xr-x
lang
[ DIR ]
drwxr-xr-x
newfeatures-all
[ DIR ]
drwxr-xr-x
newfeatures-gpl
[ DIR ]
drwxr-xr-x
newfeatures-pro
[ DIR ]
drwxr-xr-x
scripts
[ DIR ]
drwxr-xr-x
CHANGELOG
210.34
KB
-rw-r--r--
EC2-IMAGES
870
B
-rw-r--r--
FUNDING.yml
64
B
-rw-r--r--
LICENSE
34.32
KB
-rw-r--r--
README.md
3.89
KB
-rw-r--r--
S3.pm
4.19
KB
-rw-r--r--
acl_security.pl
2.41
KB
-rwxr-xr-x
add_script.cgi
2.44
KB
-rwxr-xr-x
admins-lib.pl
1.54
KB
-rwxr-xr-x
all_webmin.cgi
374
B
-rwxr-xr-x
assoc.cgi
1
KB
-rwxr-xr-x
assoc_form.cgi
966
B
-rwxr-xr-x
autoconfig.cgi
2.25
KB
-rwxr-xr-x
backup-domain.pl
15.59
KB
-rwxr-xr-x
backup.cgi
9.73
KB
-rwxr-xr-x
backup.pl
9.09
KB
-rwxr-xr-x
backup_config.pl
1.79
KB
-rwxr-xr-x
backup_form.cgi
12.49
KB
-rwxr-xr-x
backup_sched.cgi
6.37
KB
-rwxr-xr-x
backuplog.cgi
3.06
KB
-rwxr-xr-x
backups-lib.pl
171.86
KB
-rwxr-xr-x
break_cert.cgi
521
B
-rwxr-xr-x
bw-template
411
B
-rw-r--r--
bw.pl
7.18
KB
-rwxr-xr-x
bwgraph.cgi
12.02
KB
-rwxr-xr-x
bwreset.cgi
1.62
KB
-rwxr-xr-x
bwreset_form.cgi
1.43
KB
-rwxr-xr-x
cert_form.cgi
15.57
KB
-rwxr-xr-x
cgi_args.pl
2.08
KB
-rwxr-xr-x
change-licence.pl
6.08
KB
-rwxr-xr-x
change-license.pl
6.08
KB
-rwxr-xr-x
change-password.pl
3.65
KB
-rwxr-xr-x
change_users.cgi
230
B
-rwxr-xr-x
check-config.pl
1.87
KB
-rwxr-xr-x
check-scripts.pl
6.06
KB
-rwxr-xr-x
check.cgi
1.69
KB
-rwxr-xr-x
clam-wrapper.pl
1.29
KB
-rwxr-xr-x
clamdscan-remote-wrapper.pl
629
B
-rwxr-xr-x
clone-domain.pl
4.49
KB
-rwxr-xr-x
clone.cgi
2.67
KB
-rwxr-xr-x
clone_form.cgi
1.96
KB
-rwxr-xr-x
cloud-lib.pl
17.74
KB
-rw-r--r--
collect-lib.pl
21.49
KB
-rwxr-xr-x
collectinfo.pl
1.71
KB
-rwxr-xr-x
commands-lib.pl
8.84
KB
-rwxr-xr-x
config
4.81
KB
-rw-r--r--
config-freebsd
4.72
KB
-rw-r--r--
config-system.pl
3.22
KB
-rwxr-xr-x
config.info
14.23
KB
-rw-r--r--
config.info.cs
9.28
KB
-rw-r--r--
config.info.de
11.34
KB
-rw-r--r--
config.info.es
7.73
KB
-rw-r--r--
config.info.fr
4.6
KB
-rw-r--r--
config.info.nl
11.73
KB
-rw-r--r--
config.info.no
10.96
KB
-rw-r--r--
config.info.pl
551
B
-rw-r--r--
config.info.tr
5.48
KB
-rw-r--r--
config_info.pl
714
B
-rwxr-xr-x
copy-mailbox.pl
2.43
KB
-rwxr-xr-x
copy_cert_all.cgi
826
B
-rwxr-xr-x
copycert-lib.pl
20.83
KB
-rw-r--r--
create-admin.pl
5.28
KB
-rwxr-xr-x
create-alias.pl
3.36
KB
-rwxr-xr-x
create-database.pl
4.12
KB
-rwxr-xr-x
create-domain.pl
32.26
KB
-rwxr-xr-x
create-login-link.pl
3.34
KB
-rwxr-xr-x
create-plan.pl
5.38
KB
-rwxr-xr-x
create-redirect.pl
4.1
KB
-rwxr-xr-x
create-rs-container.pl
1.87
KB
-rwxr-xr-x
create-s3-bucket.pl
1.77
KB
-rwxr-xr-x
create-shared-address.pl
3.33
KB
-rwxr-xr-x
create-simple-alias.pl
5.36
KB
-rwxr-xr-x
create-template.pl
2.56
KB
-rwxr-xr-x
create-user.pl
11.97
KB
-rwxr-xr-x
create_newmysql.cgi
1.31
KB
-rwxr-xr-x
createvirtualminmodule.sh
1.39
KB
-rwxr-xr-x
cron-lib.pl
6.33
KB
-rw-r--r--
cron_chooser.cgi
722
B
-rwxr-xr-x
cron_select.cgi
641
B
-rwxr-xr-x
csr.cgi
5.2
KB
-rwxr-xr-x
defaultacl
118
B
-rw-r--r--
delete-admin.pl
1.79
KB
-rwxr-xr-x
delete-alias.pl
2.36
KB
-rwxr-xr-x
delete-backup.pl
1.78
KB
-rwxr-xr-x
delete-database.pl
2.24
KB
-rwxr-xr-x
delete-domain.pl
3
KB
-rwxr-xr-x
delete-php-directory.pl
1.86
KB
-rwxr-xr-x
delete-plan.pl
1.75
KB
-rwxr-xr-x
delete-redirect.pl
1.93
KB
-rwxr-xr-x
delete-rs-container.pl
2.08
KB
-rwxr-xr-x
delete-rs-file.pl
2.08
KB
-rwxr-xr-x
delete-s3-bucket.pl
1.9
KB
-rwxr-xr-x
delete-s3-file.pl
1.94
KB
-rwxr-xr-x
delete-script.pl
4.39
KB
-rwxr-xr-x
delete-shared-address.pl
2.18
KB
-rwxr-xr-x
delete-template.pl
1.81
KB
-rwxr-xr-x
delete-user.pl
2.75
KB
-rwxr-xr-x
delete_admins.cgi
704
B
-rwxr-xr-x
delete_aliases.cgi
871
B
-rwxr-xr-x
delete_backup.cgi
1.24
KB
-rwxr-xr-x
delete_databases.cgi
2.33
KB
-rwxr-xr-x
delete_domain.cgi
3.33
KB
-rwxr-xr-x
delete_newmysqls.cgi
1.6
KB
-rwxr-xr-x
delete_plans.cgi
698
B
-rwxr-xr-x
delete_postgrey.cgi
722
B
-rwxr-xr-x
delete_records.cgi
1.36
KB
-rwxr-xr-x
delete_redirects.cgi
822
B
-rwxr-xr-x
delete_scheds.cgi
1.06
KB
-rwxr-xr-x
delete_tmpls.cgi
1.15
KB
-rwxr-xr-x
delete_users.cgi
3.25
KB
-rwxr-xr-x
disable-domain.pl
2.45
KB
-rwxr-xr-x
disable-feature.pl
4.64
KB
-rwxr-xr-x
disable-limit.pl
3.64
KB
-rwxr-xr-x
disable-writelogs.pl
2.2
KB
-rwxr-xr-x
disable_clamd.cgi
543
B
-rwxr-xr-x
disable_domain.cgi
2.36
KB
-rwxr-xr-x
disable_mod_php.cgi
2.76
KB
-rwxr-xr-x
disable_postgrey.cgi
428
B
-rwxr-xr-x
disable_scripts.cgi
649
B
-rwxr-xr-x
disable_spamd.cgi
539
B
-rwxr-xr-x
disconnect-database.pl
2.43
KB
-rwxr-xr-x
dkim-lib.pl
38.03
KB
-rw-r--r--
dkim.cgi
3.55
KB
-rwxr-xr-x
dnscloud-lib.pl
11.45
KB
-rw-r--r--
dnsclouds.cgi
1.28
KB
-rwxr-xr-x
domain-template
1.46
KB
-rw-r--r--
domain_form.cgi
22.15
KB
-rwxr-xr-x
domain_setup.cgi
15.96
KB
-rwxr-xr-x
domainname-lib.pl
3.43
KB
-rwxr-xr-x
downgrade-licence.pl
5.79
KB
-rwxr-xr-x
downgrade-license.pl
5.79
KB
-rwxr-xr-x
download-dropbox-file.pl
1.59
KB
-rwxr-xr-x
download-rs-file.pl
2.45
KB
-rwxr-xr-x
download-s3-file.pl
2.25
KB
-rwxr-xr-x
download_backup.cgi
1.15
KB
-rw-r--r--
download_cert.cgi
647
B
-rwxr-xr-x
download_key.cgi
638
B
-rwxr-xr-x
dynip-lib.pl
4.64
KB
-rwxr-xr-x
dynip.pl
2.49
KB
-rwxr-xr-x
edit_2fa.cgi
1.41
KB
-rwxr-xr-x
edit_admin.cgi
4.26
KB
-rwxr-xr-x
edit_afile.cgi
1.08
KB
-rwxr-xr-x
edit_alias.cgi
3.73
KB
-rwxr-xr-x
edit_bucket.cgi
4.87
KB
-rwxr-xr-x
edit_cloud.cgi
2.33
KB
-rwxr-xr-x
edit_database.cgi
3.83
KB
-rwxr-xr-x
edit_defaults.cgi
2.79
KB
-rwxr-xr-x
edit_dnscloud.cgi
2.1
KB
-rwxr-xr-x
edit_domain.cgi
12.4
KB
-rwxr-xr-x
edit_domdkim.cgi
2.19
KB
-rwxr-xr-x
edit_exclude.cgi
1.08
KB
-rwxr-xr-x
edit_ffile.cgi
2.16
KB
-rwxr-xr-x
edit_limits.cgi
7.49
KB
-rwxr-xr-x
edit_link.cgi
2.65
KB
-rwxr-xr-x
edit_mail.cgi
3.11
KB
-rwxr-xr-x
edit_mailusers.cgi
1.76
KB
-rwxr-xr-x
edit_newautoconfig.cgi
670
B
-rwxr-xr-x
edit_newbw.cgi
6.32
KB
-rwxr-xr-x
edit_newchangelog.cgi
573
B
-rwxr-xr-x
edit_newchroot.cgi
1.77
KB
-rwxr-xr-x
edit_newdynip.cgi
2.19
KB
-rwxr-xr-x
edit_newfeatures.cgi
3.86
KB
-rwxr-xr-x
edit_newfields.cgi
1.25
KB
-rwxr-xr-x
edit_newglobal.cgi
1002
B
-rwxr-xr-x
edit_newips.cgi
2.01
KB
-rwxr-xr-x
edit_newlinks.cgi
2.33
KB
-rwxr-xr-x
edit_newmxs.cgi
1.19
KB
-rwxr-xr-x
edit_newmysqls.cgi
2.48
KB
-rwxr-xr-x
edit_newnotify.cgi
1.56
KB
-rwxr-xr-x
edit_newplan.cgi
2.14
KB
-rwxr-xr-x
edit_newquotacheck.cgi
1.12
KB
-rwxr-xr-x
edit_newquotas.cgi
1.95
KB
-rwxr-xr-x
edit_newretention.cgi
1.44
KB
-rwxr-xr-x
edit_newscripts.cgi
10.62
KB
-rwxr-xr-x
edit_newsharedips.cgi
1.61
KB
-rwxr-xr-x
edit_newshells.cgi
2.04
KB
-rwxr-xr-x
edit_newsv.cgi
4.67
KB
-rwxr-xr-x
edit_newtmpl.cgi
1.95
KB
-rwxr-xr-x
edit_newupgrade.cgi
869
B
-rwxr-xr-x
edit_newvalidate.cgi
5.38
KB
-rwxr-xr-x
edit_pass.cgi
1.2
KB
-rwxr-xr-x
edit_phpmode.cgi
8.28
KB
-rw-r--r--
edit_plan.cgi
7.82
KB
-rwxr-xr-x
edit_plugconfig.cgi
1.21
KB
-rwxr-xr-x
edit_postgrey.cgi
1.31
KB
-rwxr-xr-x
edit_record.cgi
5.69
KB
-rwxr-xr-x
edit_redirect.cgi
2.65
KB
-rwxr-xr-x
edit_rfile.cgi
2.13
KB
-rwxr-xr-x
edit_script.cgi
4.95
KB
-rwxr-xr-x
edit_spam.cgi
3.26
KB
-rwxr-xr-x
edit_spf.cgi
3.78
KB
-rwxr-xr-x
edit_tmpl.cgi
4.7
KB
-rwxr-xr-x
edit_user.cgi
16.73
KB
-rwxr-xr-x
edit_vfile.cgi
2.79
KB
-rwxr-xr-x
edit_website.cgi
4.62
KB
-rwxr-xr-x
enable-domain.pl
2.02
KB
-rwxr-xr-x
enable-feature.pl
5.32
KB
-rwxr-xr-x
enable-limit.pl
3.6
KB
-rwxr-xr-x
enable-writelogs.pl
2.57
KB
-rwxr-xr-x
enable_clamd.cgi
520
B
-rwxr-xr-x
enable_dkim.cgi
1.57
KB
-rwxr-xr-x
enable_domain.cgi
2.05
KB
-rwxr-xr-x
enable_postgrey.cgi
425
B
-rwxr-xr-x
enable_spamd.cgi
521
B
-rwxr-xr-x
expframe_form.cgi
798
B
-rwxr-xr-x
feature-dir.pl
32.37
KB
-rwxr-xr-x
feature-dns.pl
143.74
KB
-rwxr-xr-x
feature-ftp.pl
18.18
KB
-rwxr-xr-x
feature-logrotate.pl
17.37
KB
-rwxr-xr-x
feature-mail.pl
191.23
KB
-rwxr-xr-x
feature-mysql.pl
102.19
KB
-rwxr-xr-x
feature-postgres.pl
32.16
KB
-rwxr-xr-x
feature-spam.pl
49.28
KB
-rwxr-xr-x
feature-ssl.pl
93.96
KB
-rwxr-xr-x
feature-status.pl
10.7
KB
-rwxr-xr-x
feature-unix.pl
37.38
KB
-rwxr-xr-x
feature-virt.pl
14.13
KB
-rwxr-xr-x
feature-virt6.pl
13.73
KB
-rwxr-xr-x
feature-virus.pl
24
KB
-rwxr-xr-x
feature-web.pl
152.92
KB
-rwxr-xr-x
feature-webalizer.pl
19.4
KB
-rwxr-xr-x
feature-webmin.pl
39.81
KB
-rwxr-xr-x
fetch-script-files.pl
2.61
KB
-rwxr-xr-x
fix-domain-permissions.pl
2.39
KB
-rwxr-xr-x
fix-domain-quota.pl
2.21
KB
-rwxr-xr-x
fix_symlinks.cgi
2.47
KB
-rwxr-xr-x
fixperms.cgi
1.07
KB
-rwxr-xr-x
fixttl.cgi
1.18
KB
-rwxr-xr-x
fixvirtualminrepos.sh
43.58
KB
-rw-r--r--
frame_form.cgi
1.36
KB
-rwxr-xr-x
framefwd-template
639
B
-rw-r--r--
ftp-lib.pl
8.43
KB
-rw-r--r--
generate-cert.pl
7.58
KB
-rwxr-xr-x
generate-letsencrypt-cert.pl
6.86
KB
-rwxr-xr-x
generate-script-sites.pl
1.38
KB
-rwxr-xr-x
get-command.pl
3.73
KB
-rwxr-xr-x
get-dns.pl
4.23
KB
-rwxr-xr-x
get-logs.pl
2.26
KB
-rwxr-xr-x
get-ssl.pl
2.07
KB
-rwxr-xr-x
get-template.pl
2.58
KB
-rwxr-xr-x
import-database.pl
2.94
KB
-rwxr-xr-x
import.cgi
18.24
KB
-rwxr-xr-x
import_database.cgi
1.18
KB
-rwxr-xr-x
import_form.cgi
3.76
KB
-rwxr-xr-x
index.cgi
10.14
KB
-rwxr-xr-x
info.pl
3.36
KB
-rwxr-xr-x
install-cert.pl
8.31
KB
-rwxr-xr-x
install-script.pl
14.06
KB
-rwxr-xr-x
install-service-cert.pl
3.77
KB
-rwxr-xr-x
install-type
4
B
-rw-r--r--
install_awscli.cgi
576
B
-rwxr-xr-x
install_dkim.cgi
442
B
-rwxr-xr-x
install_postgrey.cgi
471
B
-rwxr-xr-x
install_ratelimit.cgi
1.54
KB
-rwxr-xr-x
jailkit-lib.pl
9.32
KB
-rw-r--r--
json-lib.pl
6.43
KB
-rwxr-xr-x
kill_running.cgi
702
B
-rwxr-xr-x
latest-scripts-key.asc
1.75
KB
-rw-r--r--
lets-encrypt-x3-cross-signed.p...
1.61
KB
-rw-r--r--
letsencrypt.cgi
5.22
KB
-rwxr-xr-x
licence-info.pl
1.54
KB
-rwxr-xr-x
licence.cgi
1.68
KB
-rwxr-xr-x
licence.pl
337
B
-rwxr-xr-x
license-info.pl
1.54
KB
-rwxr-xr-x
license.pl
337
B
-rwxr-xr-x
link.cgi
7.54
KB
-rwxr-xr-x
list-admins.pl
2.93
KB
-rwxr-xr-x
list-aliases.pl
3.72
KB
-rwxr-xr-x
list-available-scripts.pl
3.59
KB
-rwxr-xr-x
list-available-shells.pl
2.84
KB
-rwxr-xr-x
list-backup-keys.pl
1.89
KB
-rwxr-xr-x
list-backup-logs.pl
6
KB
-rwxr-xr-x
list-bandwidth.pl
3.53
KB
-rwxr-xr-x
list-certs-expiry.pl
5.68
KB
-rwxr-xr-x
list-certs.pl
2.79
KB
-rwxr-xr-x
list-commands.pl
3.04
KB
-rwxr-xr-x
list-custom.pl
2.65
KB
-rwxr-xr-x
list-databases.pl
3.45
KB
-rwxr-xr-x
list-domains.pl
28.3
KB
-rwxr-xr-x
list-dropbox-files.pl
2.8
KB
-rwxr-xr-x
list-features.pl
3.48
KB
-rwxr-xr-x
list-gcs-buckets.pl
2.41
KB
-rwxr-xr-x
list-gcs-files.pl
2.37
KB
-rwxr-xr-x
list-mailbox.pl
2.96
KB
-rwxr-xr-x
list-mysql-servers.pl
2.07
KB
-rwxr-xr-x
list-php-directories.pl
2.6
KB
-rwxr-xr-x
list-php-ini.pl
3.07
KB
-rwxr-xr-x
list-php-versions.pl
2.62
KB
-rwxr-xr-x
list-plans.pl
4.05
KB
-rwxr-xr-x
list-redirects.pl
2.69
KB
-rwxr-xr-x
list-rs-containers.pl
2.92
KB
-rwxr-xr-x
list-rs-files.pl
3.14
KB
-rwxr-xr-x
list-s3-buckets.pl
3.92
KB
-rwxr-xr-x
list-s3-files.pl
2.88
KB
-rwxr-xr-x
list-scheduled-backups.pl
5.09
KB
-rwxr-xr-x
list-scripts.pl
4.92
KB
-rwxr-xr-x
list-server-statuses.pl
1.54
KB
-rwxr-xr-x
list-service-certs.pl
2.31
KB
-rwxr-xr-x
list-shared-addresses.pl
2.57
KB
-rwxr-xr-x
list-simple-aliases.pl
3.35
KB
-rwxr-xr-x
list-templates.pl
2.2
KB
-rwxr-xr-x
list-users.pl
9.88
KB
-rwxr-xr-x
list_admins.cgi
1.57
KB
-rwxr-xr-x
list_aliases.cgi
3.24
KB
-rwxr-xr-x
list_buckets.cgi
1.61
KB
-rwxr-xr-x
list_clouds.cgi
1.03
KB
-rwxr-xr-x
list_databases.cgi
9.24
KB
-rwxr-xr-x
list_records.cgi
4.2
KB
-rwxr-xr-x
list_redirects.cgi
1.52
KB
-rwxr-xr-x
list_running.cgi
1.6
KB
-rwxr-xr-x
list_sched.cgi
2.75
KB
-rwxr-xr-x
list_scripts.cgi
7.05
KB
-rwxr-xr-x
list_users.cgi
2.75
KB
-rwxr-xr-x
log_parser.pl
5.62
KB
-rwxr-xr-x
lookup-domain-daemon.pl
5.58
KB
-rwxr-xr-x
lookup-domain.pl
5.61
KB
-rwxr-xr-x
mailclient.cgi
2.53
KB
-rwxr-xr-x
maillog.pl
348
B
-rwxr-xr-x
mailusers.cgi
1.44
KB
-rwxr-xr-x
manual_records.cgi
1.21
KB
-rwxr-xr-x
manual_records_save.cgi
1.62
KB
-rwxr-xr-x
mass_aedit.cgi
4.37
KB
-rwxr-xr-x
mass_aedit_form.cgi
1.69
KB
-rwxr-xr-x
mass_change.cgi
5.5
KB
-rwxr-xr-x
mass_create.cgi
10.71
KB
-rwxr-xr-x
mass_create_form.cgi
3.64
KB
-rwxr-xr-x
mass_form.cgi
2.06
KB
-rwxr-xr-x
mass_scripts.cgi
4.62
KB
-rwxr-xr-x
mass_ucreate.cgi
8.07
KB
-rwxr-xr-x
mass_ucreate_form.cgi
1.76
KB
-rwxr-xr-x
mass_uninstall.cgi
2.81
KB
-rwxr-xr-x
mass_upgrade.cgi
4.13
KB
-rwxr-xr-x
migrate-domain.pl
10.18
KB
-rwxr-xr-x
migrate.cgi
4.21
KB
-rwxr-xr-x
migrate_form.cgi
2.68
KB
-rwxr-xr-x
migration-cpanel.pl
48.22
KB
-rwxr-xr-x
migration-directadmin.pl
19.92
KB
-rwxr-xr-x
migration-ensim.pl
21.02
KB
-rwxr-xr-x
migration-lxadmin.pl
16.11
KB
-rwxr-xr-x
migration-plesk.pl
34.62
KB
-rwxr-xr-x
migration-plesk9.pl
31.77
KB
-rwxr-xr-x
migration-psa.pl
21.55
KB
-rwxr-xr-x
modify-admin.pl
6.72
KB
-rwxr-xr-x
modify-all-ips.pl
3.18
KB
-rwxr-xr-x
modify-custom.pl
2.81
KB
-rwxr-xr-x
modify-database-hosts.pl
3.94
KB
-rwxr-xr-x
modify-database-pass.pl
2.97
KB
-rwxr-xr-x
modify-database-user.pl
3.15
KB
-rwxr-xr-x
modify-dns.pl
21.94
KB
-rwxr-xr-x
modify-domain.pl
28.85
KB
-rwxr-xr-x
modify-limits.pl
10.91
KB
-rwxr-xr-x
modify-mail.pl
13.6
KB
-rwxr-xr-x
modify-php-ini.pl
5.11
KB
-rwxr-xr-x
modify-plan.pl
6.68
KB
-rwxr-xr-x
modify-spam.pl
9.9
KB
-rwxr-xr-x
modify-template.pl
3.33
KB
-rwxr-xr-x
modify-user.pl
19.19
KB
-rwxr-xr-x
modify-web.pl
29.91
KB
-rwxr-xr-x
module.info
241
B
-rw-r--r--
module.info.cs
39
B
-rw-r--r--
module.info.de
36
B
-rw-r--r--
module.info.es.auto
43
B
-rw-r--r--
module.info.fr
37
B
-rw-r--r--
module.info.it.auto
35
B
-rw-r--r--
module.info.ja.auto
37
B
-rw-r--r--
module.info.nl
36
B
-rw-r--r--
module.info.no
37
B
-rw-r--r--
module.info.pl
37
B
-rw-r--r--
module.info.pt_BR.auto
42
B
-rw-r--r--
module.info.ru.auto
57
B
-rw-r--r--
module.info.tr
37
B
-rw-r--r--
module.info.tr.auto
37
B
-rw-r--r--
module.info.zh.auto
34
B
-rw-r--r--
module.info.zh_TW.auto
37
B
-rw-r--r--
move-domain.pl
4.58
KB
-rwxr-xr-x
move.cgi
2.48
KB
-rwxr-xr-x
move_form.cgi
1.84
KB
-rwxr-xr-x
move_newlinks.cgi
439
B
-rwxr-xr-x
newchain.cgi
2.59
KB
-rwxr-xr-x
newfeatures-lib.pl
7.87
KB
-rwxr-xr-x
newip_form.cgi
5.38
KB
-rwxr-xr-x
newkey.cgi
5.56
KB
-rwxr-xr-x
notify-domains.pl
5.01
KB
-rwxr-xr-x
notify.cgi
1.69
KB
-rwxr-xr-x
oauth.cgi
1.94
KB
-rwxr-xr-x
peripcerts.cgi
1.07
KB
-rwxr-xr-x
php-lib.pl
78.99
KB
-rwxr-xr-x
plans-lib.pl
9.45
KB
-rwxr-xr-x
ports-lib.pl
4.84
KB
-rw-r--r--
postgres-encodings
1.79
KB
-rw-r--r--
postgrey-lib.pl
11.65
KB
-rwxr-xr-x
postgrey.cgi
2.41
KB
-rwxr-xr-x
postinstall.pl
17.58
KB
-rwxr-xr-x
postsave.cgi
1.31
KB
-rwxr-xr-x
prefs.info
133
B
-rw-r--r--
pro-tip-lib.pl
11.54
KB
-rwxr-xr-x
procmail-logger.pl
934
B
-rwxr-xr-x
procmail-wrapper
8.66
KB
-rwxr-xr-x
procmail-wrapper.c
593
B
-rw-r--r--
provision-lib.pl
2.94
KB
-rw-r--r--
provision.cgi
1.54
KB
-rwxr-xr-x
proxy_form.cgi
803
B
-rwxr-xr-x
public_suffix_list.dat
239.33
KB
-rw-r--r--
quotacheck.cgi
1.05
KB
-rwxr-xr-x
quotas.pl
7.29
KB
-rwxr-xr-x
ratelimit-lib.pl
16.14
KB
-rw-r--r--
ratelimit.cgi
2.83
KB
-rwxr-xr-x
recollect.cgi
630
B
-rwxr-xr-x
recollect_whois.cgi
598
B
-rwxr-xr-x
recovery.cgi
2.22
KB
-rwxr-xr-x
redirects-lib.pl
9.16
KB
-rw-r--r--
reemail.cgi
804
B
-rwxr-xr-x
remote.cgi
3.44
KB
-rwxr-xr-x
remove_cert.cgi
1.44
KB
-rwxr-xr-x
rename-domain.pl
2.79
KB
-rwxr-xr-x
rename.cgi
1.8
KB
-rwxr-xr-x
rename_form.cgi
2.84
KB
-rwxr-xr-x
reseller-template
242
B
-rw-r--r--
resend-email.pl
1.43
KB
-rwxr-xr-x
reset-feature.pl
5.47
KB
-rwxr-xr-x
reset_features.cgi
2.89
KB
-rwxr-xr-x
restart_feature.cgi
1.26
KB
-rwxr-xr-x
restart_script.cgi
1.36
KB
-rwxr-xr-x
restore-domain.pl
16.65
KB
-rwxr-xr-x
restore.cgi
10.66
KB
-rwxr-xr-x
restore_form.cgi
5.72
KB
-rwxr-xr-x
rs-lib.pl
11.23
KB
-rw-r--r--
run-all-webalizer.pl
1.35
KB
-rwxr-xr-x
run-api-command.pl
8.23
KB
-rwxr-xr-x
s3-lib.pl
30.71
KB
-rwxr-xr-x
save_2fa.cgi
3.06
KB
-rwxr-xr-x
save_admin.cgi
2.93
KB
-rwxr-xr-x
save_afile.cgi
738
B
-rwxr-xr-x
save_alias.cgi
3.03
KB
-rwxr-xr-x
save_bucket.cgi
5.6
KB
-rwxr-xr-x
save_cloud.cgi
1
KB
-rwxr-xr-x
save_database.cgi
4.16
KB
-rwxr-xr-x
save_dbhosts.cgi
1.24
KB
-rwxr-xr-x
save_dbname.cgi
1.79
KB
-rwxr-xr-x
save_dbpass.cgi
1.44
KB
-rwxr-xr-x
save_defaults.cgi
2.27
KB
-rwxr-xr-x
save_defplan.cgi
560
B
-rwxr-xr-x
save_dnscloud.cgi
1.04
KB
-rwxr-xr-x
save_domain.cgi
9.88
KB
-rwxr-xr-x
save_domdkim.cgi
910
B
-rwxr-xr-x
save_exclude.cgi
899
B
-rwxr-xr-x
save_expframe.cgi
613
B
-rwxr-xr-x
save_ffile.cgi
1.04
KB
-rwxr-xr-x
save_frame.cgi
1.63
KB
-rwxr-xr-x
save_limits.cgi
3.75
KB
-rwxr-xr-x
save_link.cgi
1.08
KB
-rwxr-xr-x
save_linkcats.cgi
635
B
-rwxr-xr-x
save_mail.cgi
4.86
KB
-rwxr-xr-x
save_mysqlremote.cgi
1.09
KB
-rwxr-xr-x
save_newautoconfig.cgi
1.18
KB
-rwxr-xr-x
save_newbw.cgi
3.01
KB
-rwxr-xr-x
save_newchroot.cgi
1.5
KB
-rwxr-xr-x
save_newdynip.cgi
1.64
KB
-rwxr-xr-x
save_newfeatures.cgi
3.05
KB
-rwxr-xr-x
save_newfields.cgi
808
B
-rwxr-xr-x
save_newglobal.cgi
728
B
-rwxr-xr-x
save_newip.cgi
9.77
KB
-rwxr-xr-x
save_newips.cgi
3.89
KB
-rwxr-xr-x
save_newmxs.cgi
3.86
KB
-rwxr-xr-x
save_newquotas.cgi
1.75
KB
-rwxr-xr-x
save_newretention.cgi
1.03
KB
-rwxr-xr-x
save_newsharedips.cgi
2.46
KB
-rwxr-xr-x
save_newshells.cgi
1.77
KB
-rwxr-xr-x
save_newsv.cgi
3.72
KB
-rwxr-xr-x
save_pass.cgi
3.21
KB
-rwxr-xr-x
save_phpmode.cgi
6.27
KB
-rw-r--r--
save_plan.cgi
3.75
KB
-rwxr-xr-x
save_plugconfig.cgi
988
B
-rwxr-xr-x
save_postgrey.cgi
1.19
KB
-rwxr-xr-x
save_provision.cgi
5.32
KB
-rwxr-xr-x
save_proxy.cgi
1.47
KB
-rwxr-xr-x
save_ratelimit.cgi
4.85
KB
-rwxr-xr-x
save_record.cgi
4.31
KB
-rwxr-xr-x
save_redirect.cgi
2.76
KB
-rwxr-xr-x
save_rfile.cgi
1.04
KB
-rwxr-xr-x
save_scriptallow.cgi
384
B
-rwxr-xr-x
save_scriptlatest.cgi
926
B
-rwxr-xr-x
save_scriptwarn.cgi
1.35
KB
-rwxr-xr-x
save_spam.cgi
2.74
KB
-rwxr-xr-x
save_spf.cgi
3.63
KB
-rwxr-xr-x
save_tmpl.cgi
3.54
KB
-rwxr-xr-x
save_user.cgi
20.06
KB
-rwxr-xr-x
save_validate.cgi
1.69
KB
-rwxr-xr-x
save_vfile.cgi
1.72
KB
-rwxr-xr-x
save_website.cgi
6.41
KB
-rwxr-xr-x
script_form.cgi
5.87
KB
-rwxr-xr-x
script_install.cgi
6.83
KB
-rwxr-xr-x
scriptlatest.pl
5.42
KB
-rwxr-xr-x
scripts-lib.pl
103.4
KB
-rwxr-xr-x
scriptwarn.pl
3.91
KB
-rwxr-xr-x
search.cgi
2.18
KB
-rwxr-xr-x
security-lib.pl
19.54
KB
-rwxr-xr-x
seen_newfeatures.cgi
349
B
-rwxr-xr-x
set-dkim.pl
3.67
KB
-rwxr-xr-x
set-global-feature.pl
5.66
KB
-rwxr-xr-x
set-mysql-pass.pl
2.01
KB
-rwxr-xr-x
set-php-directory.pl
2.87
KB
-rwxr-xr-x
set-spam.pl
7.9
KB
-rwxr-xr-x
set_seen_pro_tip.cgi
243
B
-rwxr-xr-x
setup-repos.pl
3.06
KB
-rwxr-xr-x
showpass.cgi
1.45
KB
-rwxr-xr-x
showphpinfo.cgi
1.02
KB
-rwxr-xr-x
sign-script-installers.pl
4.15
KB
-rwxr-xr-x
simple-lib.pl
17.77
KB
-rwxr-xr-x
spamclear.pl
8.11
KB
-rwxr-xr-x
spamconfig.pl
1.15
KB
-rwxr-xr-x
spamtrap.pl
8.42
KB
-rwxr-xr-x
start-stop-script.pl
3.96
KB
-rwxr-xr-x
start_feature.cgi
983
B
-rwxr-xr-x
start_script.cgi
1.15
KB
-rwxr-xr-x
stats-lib.pl
3.26
KB
-rw-r--r--
stop_feature.cgi
975
B
-rwxr-xr-x
stop_script.cgi
1.04
KB
-rwxr-xr-x
subdomain-template
1.04
KB
-rw-r--r--
summary_domain.cgi
7.06
KB
-rwxr-xr-x
switch_theme.cgi
1.28
KB
-rwxr-xr-x
switch_user.cgi
1.17
KB
-rwxr-xr-x
syncmx-domain.pl
2.22
KB
-rwxr-xr-x
system_info.pl
20.96
KB
-rw-r--r--
test-imap.pl
2.64
KB
-rwxr-xr-x
test-pop3.pl
2.19
KB
-rwxr-xr-x
test-smtp.pl
6.29
KB
-rwxr-xr-x
transfer-domain.pl
4.47
KB
-rwxr-xr-x
transfer.cgi
1.96
KB
-rwxr-xr-x
transfer_form.cgi
3.31
KB
-rwxr-xr-x
unalias-domain.pl
1.9
KB
-rwxr-xr-x
unalias.cgi
1.18
KB
-rwxr-xr-x
uninstall.pl
616
B
-rwxr-xr-x
unscript_install.cgi
3.12
KB
-rwxr-xr-x
unsub-domain.pl
1.93
KB
-rwxr-xr-x
unsub.cgi
1.05
KB
-rwxr-xr-x
update-template
416
B
-rw-r--r--
upgrade-licence.pl
3.91
KB
-rwxr-xr-x
upgrade-license.pl
3.91
KB
-rwxr-xr-x
upgrade.cgi
11.96
KB
-rwxr-xr-x
upload-api-docs.pl
6.18
KB
-rwxr-xr-x
upload-dropbox-file.pl
1.78
KB
-rwxr-xr-x
upload-rs-file.pl
2.83
KB
-rwxr-xr-x
upload-s3-file.pl
3.18
KB
-rwxr-xr-x
usage.cgi
5.71
KB
-rwxr-xr-x
user-template
380
B
-rw-r--r--
useradmin_update.pl
2.71
KB
-rwxr-xr-x
validate-domains.pl
3.54
KB
-rwxr-xr-x
validate.cgi
1.67
KB
-rwxr-xr-x
validate.pl
2.29
KB
-rwxr-xr-x
view_backuplog.cgi
4.28
KB
-rwxr-xr-x
view_domain.cgi
7.04
KB
-rwxr-xr-x
view_log.cgi
1.35
KB
-rwxr-xr-x
view_records.cgi
1.38
KB
-rwxr-xr-x
virtual-server-lib-funcs.pl
534.17
KB
-rwxr-xr-x
virtual-server-lib.pl
15.62
KB
-rwxr-xr-x
virtual_feature_api.pl
21.35
KB
-rwxr-xr-x
virtualmin-licence.pl
1.7
KB
-rwxr-xr-x
vui-lib.pl
7.56
KB
-rwxr-xr-x
warnbw-template
453
B
-rw-r--r--
webmin_menu.pl
6.08
KB
-rw-r--r--
webmincron-fixed.pl
473
B
-rwxr-xr-x
wizard-lib.pl
25.03
KB
-rwxr-xr-x
wizard.cgi
2.09
KB
-rwxr-xr-x
writelogs.pl
690
B
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : modify-dns.pl
#!/usr/bin/perl =head1 modify-dns.pl Change DNS settings for virtual servers This program updates DNS-related options for one or more servers, selected using the C<--domain> or C<--all-domains> flags. Or you can select all domains that don't have their own private IP address with C<--all-nonvirt-domains>. To enable SPF for a domain, using C<--spf> option, and to turn it off use C<--no-spf>. By default, the SPF record will be created using the settings from the DNS section of the domain's server template. To add allowed hostname, MX domains or IP addresses, use the C<--spf-add-a>, C<--spf-add-mx>, C<--spf-add-ip4> and C<--spf-add-ip6> options respectively. Each of which must be followed by a single host, domain or IP address. Or you can use C<--spf-add-include> followed by a domain name who's SPF policy will be included in this one. Similarly, the C<--spf-remove-a>, C<--spf-remove-mx>, C<--spf-remove-ip4>, C<--spf-remove-ip6> and C<--spf-remove-include> options will remove the following host, domain or IP address from the allowed list for the specified domains. To control how SPF treats senders not in the allowed hosts list, use one of the C<--spf-all-disallow>, C<--spf-all-discourage>, C<--spf-all-neutral>, C<--spf-all-allow> or C<--spf-all-default> parameters. To enable the DMARC DNS record for a domain, use the C<--dmarc> flag - or to disable it, use C<--no-dmarc>. The DMARC action for other mail servers to perform can be set with the C<--dmarc-policy> flag, and the percentage of messages it should be applied to can be set with C<--dmarc-percent>. This command can also be used to add and remove DNS records from all the selected domains. Adding is done with the C<--add-record> flag, which must be followed by a single parameter containing the record name, type and value. Alternately, you can use C<--add-record-with-ttl> followed by the name, type, TTL and value. If your cloud DNS provider supports proxy records, you can use the C<--add-proxy-record> with the same parameters as C<--add-record>. Conversely, deletion is done with the C<--remove-record> flag, followed by a single parameter containing the name and type of the record(s) to delete. You can also optionally include the record values, to disambiguate records with the same name but different values (like MX records). Both the additional and deletion flags can be given multiple times. Similarly, the default TTL for records can be set with the C<--ttl> flag followed by a number in seconds. Suffixes like h, m and d are also allowed to specific a TTL in hours, minutes or days. Alternately, the C<--all-ttl> flag can be used to set the TTL for all records in the domain. You can also add or remove slave DNS servers for this domain, assuming that they have already been setup in Webmin's BIND DNS Server module. To add a specific slave host, use the C<--add-slave> flag followed by a hostname. Or to add them all, use the C<--add-all-slaves> flag. To remove a single slave host, use the C<--remove-slave> command followed by a hostname. Or to remove any slave hosts that are no longer valid (ie. because they were removed from Webmin), use the C<--sync-all-slaves> flag. If your system is on an internal network and made available to the Internet via a router doing NAT, the IP address of a domain in DNS may be different from it's IP on the actual system. To set this, the C<--dns-ip> flag can be given, followed by the external IP address to use. To revert to using the real IP in DNS, use C<--no-dns-ip> instead. In both cases, the actual DNS records managed by Virtualmin will be updated. To add TLSA records (for publishing SSL certs) to selected domains, use the C<--enable-tlsa> flag. Similarly the C<--disable-tlsa> removes them, and the C<--sync-tlsa> updates them in domains where they already exist. If a virtual server is a sub-domain of another server, you can move it's DNS records out into a separate zone file with the C<--disable-subdomain> flag. Or if eligible, you can combine the zones with C<--enable-subdomain>. If this domain has a parent domain also hosted on the same system but not sharding the same zone file, you can use the C<--add-parent-ds> flags to add required DNSSEC DS records to the parent. Alternately you can use C<--remove-parent-ds> to delete them, but this is not recommded as it may break DNSSEC validation. =cut package virtual_server; if (!$module_name) { $main::no_acl_check++; $ENV{'WEBMIN_CONFIG'} ||= "/etc/webmin"; $ENV{'WEBMIN_VAR'} ||= "/var/webmin"; if ($0 =~ /^(.*)\/[^\/]+$/) { chdir($pwd = $1); } else { chop($pwd = `pwd`); } $0 = "$pwd/modify-dns.pl"; require './virtual-server-lib.pl'; $< == 0 || die "modify-dns.pl must be run as root"; } &require_bind(); @OLDARGV = @ARGV; $config{'dns'} || &usage("The BIND DNS server is not enabled for Virtualmin"); &set_all_text_print(); # Parse command-line args while(@ARGV > 0) { local $a = shift(@ARGV); if ($a eq "--domain") { push(@dnames, shift(@ARGV)); } elsif ($a eq "--all-domains") { $all_doms = 1; } elsif ($a eq "--all-nonvirt-domains") { $all_doms = 2; } elsif ($a eq "--spf") { $spf = 1; } elsif ($a eq "--no-spf") { $spf = 0; } elsif ($a =~ /^--spf-add-(a|mx|ip4|ip6|include)$/) { $add = shift(@ARGV); $type = $1; $add =~ /^[a-z0-9\.\-\_:]+$/ || &usage("$a must be followed by a hostname or IP address"); push(@{$add{$type}}, $add); } elsif ($a =~ /^--spf-remove-(a|mx|ip4|ip6|include)$/) { $rem = shift(@ARGV); $type = $1; $rem =~ /^[a-z0-9\.\-\_:]+$/ || &usage("$a must be followed by a hostname or IP address"); push(@{$rem{$type}}, $rem); } elsif ($a =~ /^--spf-all-(disallow|discourage|neutral|allow|default)$/){ $spfall = $1 eq "disallow" ? 3 : $1 eq "discourage" ? 2 : $1 eq "neutral" ? 1 : $1 eq "allow" ? 0 : -1; } elsif ($a eq "--dmarc") { $dmarc = 1; } elsif ($a eq "--no-dmarc") { $dmarc = 0; } elsif ($a eq "--dmarc-policy") { $dmarcp = shift(@ARGV); $dmarcp =~ /^(none|reject|quarantine)$/ || &usage("--dmarc-policy must be followed by none, ". "reject or quarantine"); } elsif ($a eq "--dmarc-percent") { $dmarcpct = shift(@ARGV); $dmarcpct =~ /^\d+$/ && $dmarcpct >= 0 && $dmarcpct <= 100 || &usage("--dmarc-percent must be followed by an ". "integer between 0 and 100"); } elsif ($a eq "--dns-ip") { $dns_ip = shift(@ARGV); &check_ipaddress($dns_ip) || &usage("--dns-ip must be followed by an IP address"); } elsif ($a eq "--no-dns-ip") { $dns_ip = ""; } elsif ($a eq "--add-record") { my ($name, $type, @values) = split(/\s+/, shift(@ARGV)); $name && $type && @values || &usage("--add-record must be followed by the record name, type and values, all in one parameter"); push(@addrecs, [ $name, $type, undef, \@values, 0 ]); } elsif ($a eq "--add-record-with-ttl") { my ($name, $type, $ttl, @values) = split(/\s+/, shift(@ARGV)); $name && $type && $ttl && @values || &usage("--add-record-with-ttl must be followed by the record name, type, TTL and values, all in one parameter"); push(@addrecs, [ $name, $type, $ttl, \@values, 0 ]); } elsif ($a eq "--add-proxied-record") { my ($name, $type, @values) = split(/\s+/, shift(@ARGV)); $name && $type && @values || &usage("--add-proxied-record must be followed by the record name, type and values, all in one parameter"); push(@addrecs, [ $name, $type, undef, \@values, 1 ]); } elsif ($a eq "--remove-record") { my ($name, $type, @values) = split(/\s+/, shift(@ARGV)); $name && $type || &usage("--remove-record must be followed by the record name and type, all in one parameter"); push(@delrecs, [ $name, $type, @values ]); } elsif ($a eq "--ttl") { $ttl = shift(@ARGV); $ttl =~ /^\d+(s|m|h|d)?$/ || &usage("--ttl must be followed by a number with a valid suffix"); } elsif ($a eq "--all-ttl") { $allttl = shift(@ARGV); $allttl =~ /^\d+(s|m|h|d)?$/ || &usage("--all-ttl must be followed by a number with a valid suffix"); $ttl = $allttl; } elsif ($a eq "--increment-soa") { $bumpsoa = 1; } elsif ($a eq "--add-slave") { push(@addslaves, shift(@ARGV)); } elsif ($a eq "--remove-slave") { push(@delslaves, shift(@ARGV)); } elsif ($a eq "--add-all-slaves") { $addallslaves = 1; } elsif ($a eq "--sync-all-slaves") { $syncallslaves = 1; } elsif ($a eq "--enable-dnssec") { $dnssec = 1; } elsif ($a eq "--disable-dnssec") { $dnssec = 0; } elsif ($a eq "--enable-tlsa") { $tlsa = 1; } elsif ($a eq "--disable-tlsa") { $tlsa = 0; } elsif ($a eq "--sync-tlsa") { $tlsa = 2; } elsif ($a eq "--enable-subdomain") { $submode = 1; } elsif ($a eq "--disable-subdomain") { $submode = 0; } elsif ($a eq "--multiline") { $multiline = 1; } elsif ($a eq "--cloud-dns") { $clouddns = shift(@ARGV); } elsif ($a eq "--add-parent-ds") { $parentds = 1; } elsif ($a eq "--remove-parent-ds") { $parentds = 0; } elsif ($a eq "--help") { &usage(); } else { &usage("Unknown parameter $a"); } } @dnames || $all_doms || usage("No domains specified"); defined($spf) || %add || %rem || defined($spfall) || defined($dns_ip) || @addrecs || @delrecs || @addslaves || @delslaves || $addallslaves || $ttl || defined($dmarc) || $dmarcp || defined($dmarcpct) || defined($dnssec) || defined($tlsa) || $syncallslaves || defined($submode) || $clouddns || defined($parentds) || &usage("Nothing to do"); # Get domains to update if ($all_doms == 1) { @doms = grep { $_->{'dns'} } &list_domains(); } elsif ($all_doms == 2) { @doms = grep { $_->{'dns'} && !$_->{'virt'} } &list_domains(); } else { foreach $n (@dnames) { $d = &get_domain_by("dom", $n); $d || &usage("Domain $n does not exist"); $d->{'dns'} || &usage("Virtual server $n does not have a DNS domain"); push(@doms, $d); } } # Validate slave args &require_bind(); if (@addslaves && $addallslaves) { &usage("Both --add-slave and --add-all-slaves cannot be specified at the same time"); } @slaveservers = &bind8::list_slave_servers(); if ($addallslaves) { @addslaves = map { $_->{'host'} } @slaveservers; @addslaves || &usage("No slave DNS servers have been setup in Webmin's BIND module"); } elsif (@addslaves) { foreach $s (@addslaves) { ($ss) = grep { $_->{'host'} eq $s } @slaveservers; $ss || &usage("No slave DNS server with hostname $s exists"); } } if (@delslaves) { foreach $s (@delslaves) { ($ss) = grep { $_->{'host'} eq $s } @slaveservers; $ss || &usage("No slave DNS server with hostname $s exists"); } } # Validate the Cloud DNS provider if ($clouddns) { if ($clouddns eq "services") { $config{'provision_dns'} || &usage("Cloudmin Services for DNS is not enabled"); } elsif ($clouddns ne "local") { my @cnames = map { $_->{'name'} } &list_dns_clouds(); &indexof($clouddns, @cnames) >= 0 || &usage("Valid Cloud DNS providers are : ". join(" ", @cnames)); } } # Do it for all domains foreach $d (@doms) { &$first_print("Updating server $d->{'dom'} .."); &obtain_lock_dns($d); &$indent_print(); $oldd = { %$d }; $cloud = &get_domain_dns_cloud($d); $currspf = &get_domain_spf($d); if (defined($spf)) { # Turn SPF on or off if ($spf == 1 && !$currspf) { # Need to enable, with default settings &$first_print($text{'spf_enable'}); &save_domain_spf($d, $currspf=&default_domain_spf($d)); &$second_print($text{'setup_done'}); } elsif ($spf == 0 && $currspf) { # Need to disable &$first_print($text{'spf_disable'}); &save_domain_spf($d, undef); &$second_print($text{'setup_done'}); $currspf = undef; } } $currdmarc = &get_domain_dmarc($d); if (defined($dmarc)) { # Turn DMARC on or off if ($dmarc == 1 && !$currdmarc) { # Need to enable, with default settings &$first_print($text{'spf_dmarcenable'}); $err = &save_domain_dmarc($d, $currdmarc = &default_domain_dmarc($d)); &$second_print($err || $text{'setup_done'}); } elsif ($dmarc == 0 && $currdmarc) { # Need to disable &$first_print($text{'spf_dmarcdisable'}); $err = &save_domain_dmarc($d, undef); &$second_print($err || $text{'setup_done'}); $currdmarc = undef; } } if ((%add || %rem || defined($spfall)) && $currspf) { # Update a, mx ip4 and ip6 in SPF record &$first_print($text{'spf_change'}); foreach $t (keys %add) { foreach $a (@{$add{$t}}) { push(@{$currspf->{$t.":"}}, $a); } $currspf->{$t.":"} = [ &unique(@{$currspf->{$t.":"}}) ]; } foreach $t (keys %rem) { foreach $a (@{$rem{$t}}) { $currspf->{$t.":"} = [ grep { $_ ne $a } @{$currspf->{$t.":"}} ]; } } if (defined($spfall)) { if ($spfall < 0) { delete($currspf->{'all'}); } else { $currspf->{'all'} = $spfall; } } &save_domain_spf($d, $currspf); &$second_print($text{'setup_done'}); } if (($dmarcp || defined($dmarcpct)) && $currdmarc) { # Update current DMARC record &$first_print($text{'spf_dmarcchange'}); if ($dmarcp) { $currdmarc->{'p'} = $dmarcp; } if (defined($dmarcpct)) { $currdmarc->{'pct'} = $dmarcpct; } &save_domain_dmarc($d, $currdmarc); &$second_print($text{'setup_done'}); } if (defined($dns_ip)) { if ($dns_ip) { # Changing IP address for DNS $d->{'dns_ip'} = $dns_ip; } else { # Resetting DNS IP address to default delete($d->{'dns_ip'}); } &modify_dns($d, $oldd); &save_domain($d); } # Remove records from the domain local ($recs, $file); local $changed; if (@delrecs) { &$first_print(&text('spf_delrecs', scalar(@delrecs))); if (!$recs) { &pre_records_change($d); ($recs, $file) = &get_domain_dns_records_and_file($d); } local @alld; foreach my $rn (@delrecs) { my ($name, $type, @values) = @$rn; if ($name !~ /\.$/) { $name .= ".".$d->{'dom'}."."; } local @d = grep { $_->{'name'} eq $name && lc($_->{'type'}) eq lc($type) } @$recs; if (@values) { # Also filter by values @d = grep { join(" ", @values) eq join(" ", @{$_->{'values'}}) } @d; } push(@alld, @d); } foreach my $r (@alld) { &delete_dns_record($recs, $file, $r); $changed++; } &$second_print($text{'setup_done'}); } # Add records to the domain if (@addrecs) { &$first_print(&text('spf_addrecs', scalar(@addrecs))); if (!$recs) { &pre_records_change($d); ($recs, $file) = &get_domain_dns_records_and_file($d); } foreach my $rn (@addrecs) { my ($name, $type, $ttl, $values, $proxied) = @$rn; if ($name !~ /\.$/ && $name ne "\@") { $name .= ".".$d->{'dom'}."."; } my $r = { 'name' => $name, 'type' => $type, 'ttl' => $ttl, 'values' => $values, 'proxied' => $proxied }; my ($clash) = grep { $_->{'name'} eq $name && &bind8::join_record_values($_) eq &bind8::join_record_values($r) } @$recs; if ($clash) { &$second_print(&text('spf_eaddrecs', $r->{'name'})); } elsif ($proxied && (!$cloud || !$cloud->{'proxy'})) { &$second_print(&text('spf_eaddproxy', $r->{'name'})); } else { &create_dns_record($recs, $file, $r); $changed++; } } &$second_print($text{'setup_done'}); } # Set or modify default TTL if ($ttl && &supports_dns_defttl($d)) { &$first_print(&text('spf_ttl', $ttl)); if (!$recs) { &pre_records_change($d); ($recs, $file) = &get_domain_dns_records_and_file($d); } ($oldttl) = grep { $_->{'defttl'} } @$recs; if ($oldttl) { $oldttl->{'defttl'} = $ttl; &modify_dns_record($recs, $file, $oldttl); } else { &create_dns_record($recs, $file, $ttl); } $changed++; &$second_print($text{'setup_done'}); } elsif ($ttl && !&supports_dns_defttl($d)) { &$first_print(&text('spf_ttl', $ttl)); &$second_print($text{'spf_ettlsupport'}); } # Change the TTL on any records that have one if ($allttl) { if (!$recs) { &pre_records_change($d); ($recs, $file) = &get_domain_dns_records_and_file($d); } foreach my $r (@$recs) { if ($r->{'ttl'} && $r->{'type'} ne 'SOA') { $r->{'ttl'} = $ttl; &modify_dns_record($recs, $file, $r); $changed++; } } } # Enable or disable DNSSEC if (defined($dnssec)) { if (&can_domain_dnssec($d)) { # DNSSEC is supported for this domain &pre_records_change($d); $key = &bind8::get_dnssec_key( &get_bind_zone($d->{'dom'})); if ($dnssec && !$key) { # Enable it &$first_print($text{'spf_enablednssec'}); $err = &enable_domain_dnssec($d); &$second_print($err || $text{'setup_done'}); $changed++; } elsif (!$dnssec && $key) { # Disable it &$first_print($text{'spf_disablednssec'}); $err = &disable_domain_dnssec($d); &$second_print($err || $text{'setup_done'}); $changed++; } # Records may have changed, so re-read ($recs, $file) = &get_domain_dns_records_and_file($d); } else { # Not supported on remote providers &$first_print($dnssec ? $text{'spf_enablednssec'} : $text{'spf_disablednssec'}); &$second_print($text{'spf_ednssecsupport'}); } } # Create or remove TLSA records if (defined($tlsa)) { &pre_records_change($d); if ($tlsa == 1) { &$first_print($text{'spf_enabletlsa'}); $err = &check_tlsa_support(); if ($err) { &$second_print(&text('spf_etlsa', $err)); } else { &sync_domain_tlsa_records($d, 1); &$second_print($text{'setup_done'}); $changed++; } } elsif ($tlsa == 0) { &$first_print($text{'spf_disabletlsa'}); &sync_domain_tlsa_records($d, 2); &$second_print($text{'setup_done'}); $changed++; } elsif ($tlsa == 2) { &$first_print($text{'spf_synctlsa'}); my @recs = &get_domain_tlsa_records($d); if (@recs) { &sync_domain_tlsa_records($d, 1); &$second_print($text{'setup_done'}); } else { &$first_print($text{'spf_esynctlsa'}); } } if ($changed) { # Records have changed, so re-read ($recs, $file) = &get_domain_dns_records_and_file($d); } } # Move into a DNS sub-domain if (defined($submode)) { if ($submode == 1) { # Turning on sub-domain mode &$first_print($text{'spf_enablesub'}); if ($d->{'dns_submode'}) { &$second_print($text{'spf_enablesubalready'}); } elsif ($err = &save_dns_submode($d, 1)) { &$second_print(&text('spf_eenablesub', $err)); } else { &$second_print($text{'setup_done'}); } } else { # Turning off sub-domain mode &$first_print($text{'spf_disablesub'}); if (!$d->{'dns_submode'}) { &$second_print($text{'spf_enablesubalready'}); } elsif ($err = &save_dns_submode($d, 0)) { &$second_print(&text('spf_eenablesub', $err)); } else { &$second_print($text{'setup_done'}); } } } # Add or remove DS records in parent if (defined($parentds)) { my $err; if ($parentds) { &$first_print($text{'spf_enableds'}); $err = &add_parent_dnssec_ds_records($d); } else { &$first_print($text{'spf_disableds'}); $err = &delete_parent_dnssec_ds_records($d); } if ($err) { &$second_print(&text('spf_eenablesub', $err)); } else { &$second_print($text{'setup_done'}); } } if ($changed || $bumpsoa) { my $err = &post_records_change($d, $recs, $file); if ($err) { &$second_print(&text('spf_epostchange', $err)); } &reload_bind_records($d); } # Add to slave DNS servers if (@addslaves) { &create_zone_on_slaves($d, join(" ", @addslaves)); } if (@delslaves) { &delete_zone_on_slaves($d, join(" ", @delslaves)); } # Remove slaves that are no longer valid if ($syncallslaves) { my @ds = split(/\s+/, $d->{'dns_slave'}); my %slavenames = map { $_->{'host'}, $_ } @slaveservers; @ds = grep { $slavename{$_} } @ds; $d->{'dns_slave'} = join(" ", @ds); } # Change DNS Cloud if ($clouddns) { if ($clouddns eq "local") { &$first_print($text{'spf_dnslocal'}); } else { my ($c) = grep { $_->{'name'} eq $clouddns } &list_dns_clouds(); &$first_print(&text('spf_dnscloud', $c->{'name'})); } &$indent_print(); my $err = &modify_dns_cloud($d, $clouddns); &$outdent_print(); if ($err) { &$second_print(&text('spf_eclouddns', $err)); } else { &$second_print($text{'setup_done'}); } } &$outdent_print(); &save_domain($d); &release_lock_dns($d); &$second_print(".. done"); } &run_post_actions(); &virtualmin_api_log(\@OLDARGV); sub usage { print "$_[0]\n\n" if ($_[0]); print "Changes DNS settings for one or more domains.\n"; print "\n"; print "virtualmin modify-dns --domain name | --all-domains | --all-nonvirt-domains\n"; print " [--spf | --no-spf]\n"; print " [--spf-add-a hostname]*\n"; print " [--spf-add-mx domain]*\n"; print " [--spf-add-ip4 address]*\n"; print " [--spf-add-ip6 address]*\n"; print " [--spf-remove-a hostname]*\n"; print " [--spf-remove-mx domain]*\n"; print " [--spf-remove-ip4 address]*\n"; print " [--spf-remove-ip6 address]*\n"; print " [--spf-all-disallow | --spf-all-discourage |\n"; print " --spf-all-neutral | --spf-all-allow |\n"; print " --spf-all-default]\n"; print " [--dmarc | --no-dmarc]\n"; print " [--dmarc-policy none|quarantine|reject]\n"; print " [--dmarc-percent number]\n"; print " [--add-record \"name type value\"]\n"; print " [--add-record-with-ttl \"name type TTL value\"]\n"; print " [--add-proxy-record \"name type value\"]\n"; print " [--remove-record \"name type value\"]\n"; print " [--ttl seconds | --all-ttl seconds]\n"; print " [--add-slave hostname]* | [--add-all-slaves]\n"; print " [--remove-slave hostname]* | [--sync-all-slaves]\n"; print " [--dns-ip address | --no-dns-ip]\n"; print " [--enable-dnssec | --disable-dnssec]\n"; print " [--enable-tlsa | --disable-tlsa | --sync-tlsa]\n"; print " [--enable-subdomain | --disable-subdomain]\n"; print " [--cloud-dns provider|\"local\"]\n"; print " [--add-parent-ds | --remove-parent-ds]\n"; exit(1); }
Close