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.28
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 : copycert-lib.pl
# Functions for copying SSL certs to other servers # list_service_ssl_cert_types() # Returns a list of services to which per-domain or per-IP certs can be copied sub list_service_ssl_cert_types { my @rv; my %miniserv; &get_miniserv_config(\%miniserv); push(@rv, {'id' => 'webmin', 'dom' => 1, 'virt' => 1, 'port' => $miniserv{'port'}, 'short' => '' }); if (&foreign_installed("usermin")) { &foreign_require("usermin"); my %uminiserv; &usermin::get_usermin_miniserv_config(\%uminiserv); push(@rv, {'id' => 'usermin', 'dom' => 1, 'virt' => 1, 'port' => $uminiserv{'port'}, 'short' => 'u' }); } if (&foreign_installed("dovecot")) { push(@rv, {'id' => 'dovecot', 'dom' => 1, 'virt' => 1, 'short' => 'd' }); } if ($config{'mail'} && $config{'mail_system'} == 0) { push(@rv, {'id' => 'postfix', 'dom' => &postfix_supports_sni() ? 1 : 0, 'virt' => 1, 'short' => 'p' }); } if ($config{'ftp'}) { push(@rv, {'id' => 'proftpd', 'dom' => 0, 'virt' => 0, 'short' => 'f' }); } foreach my $rv (@rv) { $rv->{'desc'} ||= $text{'cert_service_'.$rv->{'id'}}; } return @rv; } # get_all_service_ssl_certs(&domain, include-per-ip-certs) # Returns a list of all SSL certs used by global services like Postfix sub get_all_service_ssl_certs { my ($d, $perip) = @_; my @svcs; &foreign_require("webmin"); my %miniserv; &get_miniserv_config(\%miniserv); if ($miniserv{'ssl'}) { # Check Webmin certificate if ($perip) { # Check for per-IP or per-domain cert first my @ipkeys = &webmin::get_ipkeys(\%miniserv); my ($cfile, $chain, $ip, $dom) = &ipkeys_to_domain_cert($d, \@ipkeys); if ($cfile) { push(@svcs, { 'id' => 'webmin', 'cert' => $cfile, 'ca' => $chain, 'ip' => $ip, 'dom' => $dom, 'd' => $d, 'prefix' => 'admin', 'port' => $miniserv{'port'} }); } } # Also add global config my $cfile = $miniserv{'certfile'}; my $chain = $miniserv{'extracas'}; push(@svcs, { 'id' => 'webmin', 'cert' => $cfile, 'ca' => $chain, 'prefix' => 'admin', 'port' => $miniserv{'port'} }); } if (&foreign_installed("usermin")) { # Check Usermin certificate &foreign_require("usermin"); my %uminiserv; &usermin::get_usermin_miniserv_config(\%uminiserv); if ($uminiserv{'ssl'}) { my ($cfile, $chain, $ip, $dom); if ($perip) { # Check for per-IP or per-domain cert first my @ipkeys = &webmin::get_ipkeys(\%uminiserv); my ($cfile, $chain, $ip, $dom) = &ipkeys_to_domain_cert($d, \@ipkeys); if ($cfile) { push(@svcs, { 'id' => 'usermin', 'cert' => $cfile, 'ca' => $chain, 'ip' => $ip, 'dom' => $dom, 'd' => $d, 'prefix' => 'webmail', 'port' => $uminiserv{'port'} }); } } # Also add global config my $cfile = $uminiserv{'certfile'}; my $chain = $uminiserv{'extracas'}; push(@svcs, { 'id' => 'usermin', 'cert' => $cfile, 'ca' => $chain, 'prefix' => 'webmail', 'port' => $uminiserv{'port'} }); } } if (&foreign_installed("dovecot")) { # Check Dovecot certificate if ($perip) { # Try per-IP cert first my ($cfile, $kfile, $cafile, $ip, $dom) = &get_dovecot_ssl_cert($d); if ($cfile) { if (!$cafile && &cert_file_split($cfile) > 1) { # CA cert might be in the cert file $cafile = $cfile; } push(@svcs, { 'id' => 'dovecot', 'cert' => $cfile, 'ca' => $cafile, 'prefix' => 'mail', 'port' => 993, 'sslports' => [ 995 ], 'ip' => $ip, 'dom' => $dom, 'd' => $d, }); } } # Also add global Dovecot cert &foreign_require("dovecot"); my $conf = &dovecot::get_config(); my $cfile = &dovecot::find_value("ssl_cert_file", $conf, 0, "") || &dovecot::find_value("ssl_cert", $conf, 0, ""); $cfile =~ s/^<//; $cafile = &dovecot::find_value("ssl_ca", $conf, 0, ""); $cafile =~ s/^<//; if ($cfile) { if (!$cafile && &cert_file_split($cfile) > 1) { # CA cert might be in the cert file $cafile = $cfile; } push(@svcs, { 'id' => 'dovecot', 'cert' => $cfile, 'ca' => $cafile, 'prefix' => 'mail', 'port' => 993, 'sslports' => [ 995 ]}); } } if ($config{'mail_system'} == 0) { # Check Postfix certificate if ($perip) { # Try per-IP cert first my ($cfile, $kfile, $cafile, $ip, $dom) = &get_postfix_ssl_cert($d); if ($cfile) { push(@svcs, { 'id' => 'postfix', 'cert' => $cfile, 'ca' => $cafile, 'prefix' => 'mail', 'port' => 587, 'sslports' => [ 25 ], 'ip' => $ip, 'dom' => $dom, 'd' => $d, }); } } # Also add global Postfix cert &foreign_require("postfix"); my $cfile = &postfix::get_real_value("smtpd_tls_cert_file"); my $cafile = &postfix::get_real_value("smtpd_tls_CAfile"); if ($cfile) { push(@svcs, { 'id' => 'postfix', 'cert' => $cfile, 'ca' => $cafile, 'prefix' => 'mail', 'port' => 587, 'sslports' => [ 25 ], 'ip' => $ip, }); } } if ($config{'ftp'}) { # Check ProFTPd certificate &foreign_require("proftpd"); my $conf = &proftpd::get_config(); my $cfile = &proftpd::find_directive( "TLSRSACertificateFile", $conf); my $cafile = &proftpd::find_directive( "TLSCACertificateFile", $conf); if ($cfile) { push(@svcs, { 'id' => 'proftpd', 'cert' => $cfile, 'ca' => $cafile, 'prefix' => 'ftp', 'port' => 990, }); } } return @svcs; } # get_all_domain_service_ssl_certs(&domain) # Returns certs that are using this domain's cert and key sub get_all_domain_service_ssl_certs { my ($d) = @_; my @rv; my $chain = &get_website_ssl_file($d, 'ca'); foreach my $svc (&get_all_service_ssl_certs($d, 1)) { if ((&same_cert_file($d->{'ssl_cert'}, $svc->{'cert'}) || &same_cert_file($d->{'ssl_combined'}, $svc->{'cert'})) && (!$svc->{'ca'} || -s $svc->{'ca'} < 16 || $svc->{'ca'} eq 'none' || &same_cert_file_any($chain, $svc->{'ca'}))) { push(@rv, $svc); } } return @rv; } # update_all_domain_service_ssl_certs(&domain, &certs-before) # Updates all services that were using this domain's SSL cert after it has # changed. sub update_all_domain_service_ssl_certs { my ($d, $before) = @_; my $tmpl = &get_template($d->{'template'}); &push_all_print(); &set_all_null_print(); foreach my $svc (@$before) { if ($tmpl->{'web_'.$svc->{'id'}.'_ssl'}) { if ($svc->{'d'}) { my $func = "sync_".$svc->{'id'}."_ssl_cert"; &$func($d, 1) if (defined(&$func)); } else { my $func = "copy_".$svc->{'id'}."_ssl_service"; &$func($d) if (defined(&$func)); } } } &pop_all_print(); } # enable_domain_service_ssl_certs(&domain) # To be called when SSL is enabled for a domain, to setup all per-service SSL # certs configured in the template that can be used. sub enable_domain_service_ssl_certs { my ($d) = @_; my $tmpl = &get_template($d->{'template'}); foreach my $svc (&list_service_ssl_cert_types()) { next if (!$svc->{'dom'} && !$svc->{'virt'}); next if (!$svc->{'dom'} && !$d->{'virt'}); if ($tmpl->{'web_'.$svc->{'id'}.'_ssl'}) { # Prevent applying service certificate on initial # service creation, like when calling 'setup_ssl' # for the first time, to prevent application of # default, potentially self-signed certificate if ($d->{"no_default_service_cert_$svc->{'id'}"}) { delete($d->{"no_default_service_cert_$svc->{'id'}"}) if ($d->{"no_default_service_cert_$svc->{'id'}"} == 2); next; } my $func = "sync_".$svc->{'id'}."_ssl_cert"; &$func($d, 1) if (defined(&$func)); } } } # disable_domain_service_ssl_certs(&domain) # To be called when SSL is turned off for a domain, to remove all per-service # SSL certs. sub disable_domain_service_ssl_certs { my ($d) = @_; foreach my $svc (&get_all_service_ssl_certs($d, 1)) { if ($svc->{'d'}) { my $func = "sync_".$svc->{'id'}."_ssl_cert"; &$func($d, 0) if (defined(&$func)); } } } # ipkeys_to_domain_cert(&domain, &ipkeys) # Returns the cert, chain file, IP and domain for a matching ipkeys entry sub ipkeys_to_domain_cert { my ($d, $ipkeys) = @_; foreach my $k (@$ipkeys) { if (&indexof($d->{'dom'}, @{$k->{'ips'}}) >= 0) { return ($k->{'cert'}, $k->{'extracas'}, undef, $d->{'dom'}); } if ($d->{'virt'} && &indexof($d->{'ip'}, @{$k->{'ips'}}) >= 0) { return ($k->{'cert'}, $k->{'extracas'}, $d->{'ip'}, undef); } } return ( ); } # copy_dovecot_ssl_service(&domain) # Copy a domain's SSL cert to Dovecot for global use sub copy_dovecot_ssl_service { my ($d) = @_; # Get the Dovecot config and cert files &foreign_require("dovecot"); my $configfile = &dovecot::get_config_file(); &lock_file($configfile); my $dovedir = $configfile; $dovedir =~ s/\/([^\/]+)$//; my $conf = &dovecot::get_config(); my $v2 = &dovecot::find_value("ssl_cert", $conf, 2, "") ? 1 : &dovecot::find_value("ssl_cert_file", $conf, 2, "") ? 0 : &dovecot::get_dovecot_version() >= 2 ? 1 : 0; my $cfile = &dovecot::find_value("ssl_cert_file", $conf, 0, "") || &dovecot::find_value("ssl_cert", $conf, 0, ""); my $kfile = &dovecot::find_value("ssl_key_file", $conf, 0, "") || &dovecot::find_value("ssl_key", $conf, 0, ""); my $cafile = &dovecot::find_value("ssl_ca", $conf, 0, ""); $cfile =~ s/^<//; $kfile =~ s/^<//; $cafile =~ s/^<//; if ($cfile =~ /snakeoil/) { # Hack to not use shared cert file on Ubuntu / Debian $cfile = $kfile = $cafile = undef; } $cfile ||= "$dovedir/dovecot.cert.pem"; $kfile ||= "$dovedir/dovecot.key.pem"; # Copy cert into those files &$first_print($text{'copycert_dsaving'}); my $cdata = &cert_pem_data($d); my $kdata = &key_pem_data($d); my $casrcfile = &get_website_ssl_file($d, "ca"); $cadata = $casrcfile ? &read_file_contents($casrcfile) : undef; $cdata || &error($text{'copycert_ecert'}); $kdata || &error($text{'copycert_ekey'}); &open_lock_tempfile(CERT, ">$cfile"); &print_tempfile(CERT, $cdata,"\n"); if (!$cafile && $cadata) { # No CA file is already defined in the config, so just append to the # cert file &print_tempfile(CERT, $cadata,"\n"); } &close_tempfile(CERT); &set_ownership_permissions(undef, undef, 0750, $cfile); &open_lock_tempfile(KEY, ">$kfile"); &print_tempfile(KEY, $kdata,"\n"); &close_tempfile(KEY); &set_ownership_permissions(undef, undef, 0750, $kfile); if ($cafile && $cadata) { # CA file already exists, and should have contents. This mode is # deprecated, but can still happen with older configs &open_lock_tempfile(KEY, ">$cafile"); &print_tempfile(KEY, $cadata,"\n"); &close_tempfile(KEY); &set_ownership_permissions(undef, undef, 0750, $cafile); } # Update config with correct files if ($v2) { # 2.0 and later format &dovecot::save_directive($conf, "ssl_cert", "<".$cfile, ""); &dovecot::save_directive($conf, "ssl_key", "<".$kfile, ""); if ($cafile) { &dovecot::save_directive($conf, "ssl_ca", "<".$cafile, ""); } } else { # Pre-2.0 format &dovecot::save_directive($conf, "ssl_cert_file", $cfile, ""); &dovecot::save_directive($conf, "ssl_key_file", $kfile, ""); } &$second_print(&text($cadata ? 'copycert_dsaved2' : 'copycert_dsaved', "<tt>$cfile</tt>", "<tt>$kfile</tt>")); # Make sure SSL is enabled &$first_print($text{'copycert_denabling'}); if (&dovecot::find("ssl_disable", $conf, 2)) { &dovecot::save_directive($conf, "ssl_disable", "no", ""); } else { &dovecot::save_directive($conf, "ssl", "yes", ""); } if (&dovecot::get_dovecot_version() < 2) { # Add imaps and pop3s protocols .. $protos = &dovecot::find_value("protocols", $conf, 0, ""); @protos = split(/\s+/, $protos); %protos = map { $_, 1 } @protos; push(@protos, "imaps") if (!$protos{'imaps'} && $protos{'imap'}); push(@protos, "pop3s") if (!$protos{'pop3s'} && $protos{'pop3'}); &dovecot::save_directive($conf, "protocols", join(" ", @protos), ""); } # Enable PCI-compliant ciphers &foreign_require("webmin"); if (!&dovecot::find_value("ssl_cipher_list", $conf, 0, "")) { &dovecot::save_directive($conf, "ssl_cipher_list", $webmin::strong_ssl_ciphers, ""); } &flush_file_lines(); &unlock_file($configfile); &$second_print($text{'setup_done'}); # Apply Dovecot config if (&dovecot::is_dovecot_running()) { &dovecot::stop_dovecot(); &dovecot::start_dovecot(); } } # copy_postfix_ssl_service(&domain) # Copy a domain's SSL cert to Postfix for global use sub copy_postfix_ssl_service { my ($d) = @_; # Get the Postfix config and cert files &foreign_require("postfix"); my $cfile = &postfix::get_real_value("smtpd_tls_cert_file"); my $kfile = &postfix::get_real_value("smtpd_tls_key_file"); my $cafile = &postfix::get_real_value("smtpd_tls_CAfile"); my $cdir = &postfix::guess_config_dir(); if ($cfile =~ /snakeoil/) { # Hack to not use shared cert file on Ubuntu / Debian $cfile = $kfile = $cafile = undef; } $cfile ||= "$cdir/postfix.cert.pem"; $kfile ||= "$cdir/postfix.key.pem"; $cafile ||= "$cdir/postfix.ca.pem"; # Copy cert into those files my $casrcfile = &get_website_ssl_file($d, "ca"); &$first_print($casrcfile ? $text{'copycert_psaving2'} : $text{'copycert_psaving'}); my $cdata = &cert_pem_data($d); my $kdata = &key_pem_data($d); my $cadata = $casrcfile ? &read_file_contents($casrcfile) : undef; $cdata || &error($text{'copycert_ecert'}); $kdata || &error($text{'copycert_ekey'}); &open_lock_tempfile(CERT, ">$cfile"); &print_tempfile(CERT, $cdata,"\n"); &close_tempfile(CERT); &set_ownership_permissions(undef, undef, 0700, $cfile); if ($cfile eq $kfile) { &open_lock_tempfile(KEY, ">>$kfile"); &print_tempfile(KEY, $kdata,"\n"); &close_tempfile(KEY); } else { &open_lock_tempfile(KEY, ">$kfile"); &print_tempfile(KEY, $kdata,"\n"); &close_tempfile(KEY); &set_ownership_permissions(undef, undef, 0700, $kfile); } if ($cadata) { &open_lock_tempfile(CA, ">$cafile"); &print_tempfile(CA, $cadata,"\n"); &close_tempfile(CA); &set_ownership_permissions(undef, undef, 0750, $cafile); } # Update config with correct files &postfix::set_current_value("smtpd_tls_cert_file", $cfile); &postfix::set_current_value("smtpd_tls_key_file", $kfile); &postfix::set_current_value("smtpd_tls_CAfile", $cadata ? $cafile : undef); if (&compare_version_numbers($postfix::postfix_version, "2.3") >= 0) { &postfix::set_current_value("smtpd_tls_security_level", "may"); if (&compare_version_numbers($postfix::postfix_version, "2.11") >= 0) { &postfix::set_current_value("smtp_tls_security_level", "dane"); &postfix::set_current_value("smtp_dns_support_level", "dnssec", 1); &postfix::set_current_value("smtp_host_lookup", "dns", 1); } else { &postfix::set_current_value("smtp_tls_security_level", "may"); } } &$second_print(&text('copycert_dsaved', "<tt>$cfile</tt>", "<tt>$kfile</tt>")); # Make sure SSL is enabled &$first_print($text{'copycert_penabling'}); if (&compare_version_numbers($postfix::postfix_version, "2.3") >= 0) { &postfix::set_current_value("smtpd_tls_security_level", "may"); } else { &postfix::set_current_value("smtpd_use_tls", "yes"); } &postfix::set_current_value("smtpd_tls_mandatory_protocols", &postfix::get_current_value("smtpd_tls_mandatory_protocols", "nodef") || "!SSLv2, !SSLv3, !TLSv1, !TLSv1.1"); &lock_file($postfix::config{'postfix_master'}); my $master = &postfix::get_master_config(); my ($smtps_enabled_prior) = grep { ($_->{'name'} eq 'smtps' || $_->{'name'} eq '127.0.0.1:smtps') && $_->{'enabled'} } @$master; my ($smtps) = grep { $_->{'name'} eq 'smtps' || $_->{'name'} eq '127.0.0.1:smtps' } @$master; my ($smtp) = grep { $_->{'name'} eq 'smtp' || $_->{'name'} eq '127.0.0.1:smtp' } @$master; if (!$smtps_enabled_prior && $smtps && !$smtps->{'enabled'}) { # Enable existing entry $smtps->{'enabled'} = 1; &postfix::modify_master($smtps); } elsif (!$smtps_enabled_prior && !$smtps && $smtp) { # Add new smtps entry, cloned from smtp $smtps = { %$smtp }; $smtps->{'name'} = 'smtps'; $smtps->{'command'} .= " -o smtpd_tls_wrappermode=yes"; &postfix::create_master($smtps); } &unlock_file($postfix::config{'postfix_master'}); &$second_print($text{'setup_done'}); # Apply Postfix config if (&postfix::is_postfix_running()) { &postfix::stop_postfix(); &postfix::start_postfix(); } } # copy_proftpd_ssl_service(&domain) # Copy a domain's SSL cert to Proftpd sub copy_proftpd_ssl_service { my ($d) = @_; # Get the ProFTPd config and cert files &foreign_require("proftpd"); &proftpd::lock_proftpd_files(); my $conf = &proftpd::get_config(); my $cfile = &proftpd::find_directive("TLSRSACertificateFile", $conf); my $kfile = &proftpd::find_directive("TLSRSACertificateKeyFile", $conf); my $cafile = &proftpd::find_directive("TLSCACertificateFile", $conf); my $cdir = $proftpd::config{'proftpd_conf'}; $cdir =~ s/\/[^\/]+$//; $cfile ||= "$cdir/proftpd.cert"; $kfile ||= "$cdir/proftpd.key"; $cafile ||= "$cdir/proftpd.ca"; # Copy cert into those files my $casrcfile = &get_website_ssl_file($d, "ca"); &$first_print($casrcfile ? $text{'copycert_fsaving2'} : $text{'copycert_fsaving'}); my $cdata = &cert_pem_data($d); my $kdata = &key_pem_data($d); my $cadata = $casrcfile ? &read_file_contents($casrcfile) : undef; $cdata || &error($text{'copycert_ecert'}); $kdata || &error($text{'copycert_ekey'}); &open_lock_tempfile(CERT, ">$cfile"); &print_tempfile(CERT, $cdata,"\n"); if ($cadata) { &print_tempfile(CERT, $cadata,"\n"); } &close_tempfile(CERT); &set_ownership_permissions(undef, undef, 0700, $cfile); if ($cfile eq $kfile) { &open_lock_tempfile(KEY, ">>$kfile"); &print_tempfile(KEY, $kdata,"\n"); &close_tempfile(KEY); } else { &open_lock_tempfile(KEY, ">$kfile"); &print_tempfile(KEY, $kdata,"\n"); &close_tempfile(KEY); &set_ownership_permissions(undef, undef, 0700, $kfile); } if ($cadata) { &open_lock_tempfile(CA, ">$cafile"); &print_tempfile(CA, $cadata,"\n"); &close_tempfile(CA); &set_ownership_permissions(undef, undef, 0750, $cafile); } # Update config with correct files &proftpd::save_directive("TLSRSACertificateFile", [ $cfile ], $conf, $conf); &proftpd::save_directive("TLSRSACertificateKeyFile", [ $kfile ], $conf, $conf); &proftpd::save_directive("TLSCACertificateFile", $cadata ? [ $cafile ] : [ ], $conf, $conf); &$second_print(&text('copycert_dsaved', "<tt>$cfile</tt>", "<tt>$kfile</tt>")); # Make sure SSL is enabled &$first_print($text{'copycert_fenabling'}); &proftpd::save_directive("TLSEngine", [ "on" ], $conf, $conf); &flush_file_lines(); &proftpd::unlock_proftpd_files(); ®ister_post_action(\&restart_proftpd); &$second_print($text{'setup_done'}); } # copy_webmin_ssl_service(&domain) # Copy a domain's SSL cert to Webmin sub copy_webmin_ssl_service { my ($d) = @_; # Copy to appropriate config dir my $dir = $config_directory; &$first_print(&text('copycert_webmindir', "<tt>$dir</tt>")); my $certfile; $certfile = "$dir/$d->{'dom'}.cert"; &lock_file($certfile); ©_source_dest($d->{'ssl_cert'}, $certfile); &unlock_file($certfile); if ($d->{'ssl_key'}) { $keyfile = "$dir/$d->{'dom'}.key"; &lock_file($keyfile); ©_source_dest($d->{'ssl_key'}, $keyfile); &unlock_file($keyfile); } my $dchain = &get_website_ssl_file($d, 'ca'); if ($dchain) { $chainfile = "$dir/$d->{'dom'}.ca"; &lock_file($chainfile); ©_source_dest($dchain, $chainfile); &unlock_file($chainfile); } &$second_print($text{'setup_done'}); # Configure Webmin to use it &$first_print($text{'copycert_webminconfig'}); &lock_file($ENV{'MINISERV_CONFIG'}); &get_miniserv_config(\%miniserv); $miniserv{'certfile'} = $certfile; $miniserv{'keyfile'} = $keyfile; $miniserv{'extracas'} = $chainfile; &put_miniserv_config(\%miniserv); &unlock_file($ENV{'MINISERV_CONFIG'}); &restart_miniserv(); &$second_print($text{'setup_done'}); # Tell the user if not in SSL mode if (!$miniserv{'ssl'}) { &$second_print(&text('copycert_webminnot', "../webmin/edit_ssl.cgi")); } } # copy_usermin_ssl_service(&domain) # Copy a domain's SSL cert to Usermin sub copy_usermin_ssl_service { my ($d) = @_; # Copy to appropriate config dir &foreign_require("usermin"); my $dir = $usermin::config{'usermin_dir'}; &$first_print(&text('copycert_webmindir', "<tt>$dir</tt>")); $certfile = "$dir/$d->{'dom'}.cert"; &lock_file($certfile); ©_source_dest($d->{'ssl_cert'}, $certfile); &unlock_file($certfile); if ($d->{'ssl_key'}) { $keyfile = "$dir/$d->{'dom'}.key"; &lock_file($keyfile); ©_source_dest($d->{'ssl_key'}, $keyfile); &unlock_file($keyfile); } if ($d->{'ssl_chain'}) { $chainfile = "$dir/$d->{'dom'}.ca"; &lock_file($chainfile); ©_source_dest($d->{'ssl_chain'}, $chainfile); &unlock_file($chainfile); } &$second_print($text{'setup_done'}); # Configure Usermin to use it &$first_print($text{'copycert_userminconfig'}); &lock_file($usermin::usermin_miniserv_config); &usermin::get_usermin_miniserv_config(\%miniserv); $miniserv{'certfile'} = $certfile; $miniserv{'keyfile'} = $keyfile; $miniserv{'extracas'} = $chainfile; &usermin::put_usermin_miniserv_config(\%miniserv); &unlock_file($usermin::usermin_miniserv_config); &usermin::restart_usermin_miniserv(); &$second_print($text{'setup_done'}); # Tell the user if not in SSL mode if (!$miniserv{'ssl'}) { &$second_print(&text('copycert_userminnot', "../usermin/edit_ssl.cgi")); } } 1;
Close