Private
Server IP : 195.201.23.43  /  Your IP : 52.14.205.130
Web Server : Apache
System : Linux webserver2.vercom.be 5.4.0-192-generic #212-Ubuntu SMP Fri Jul 5 09:47:39 UTC 2024 x86_64
User : kdecoratie ( 1041)
PHP Version : 7.1.33-63+ubuntu20.04.1+deb.sury.org+1
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/share/webmin/virtual-server/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME SHELL ]     

Current File : /usr/share/webmin/virtual-server/save_newmxs.cgi
#!/usr/bin/perl
# Save secondary MX servers

require './virtual-server-lib.pl';
&can_edit_templates() || &error($text{'newmxs_ecannot'});
&ReadParse();
&error_setup($text{'newmxs_err'});

&ui_print_header(undef, $text{'newmxs_title'}, "");

# Get old MX servers and all servers
&foreign_require("servers");
@oldmxs = &list_mx_servers();
%oldmxids = map { $_->{'id'}, $_ } @oldmxs;
@servers = grep { $_->{'user'} } &servers::list_servers();

foreach $id (split(/\0/, $in{'servers'})) {
	($server) = grep { $_->{'id'} eq $id } @servers;
	if ($server) {
		# Make sure the system actually has Virtualmin 2.98+
		&$first_print(&text('newmxs_doing', $server->{'host'}));
		&remote_foreign_require($server, "webmin", "webmin-lib.pl");
		%minfo = &remote_foreign_call($server, "webmin",
				"get_module_info", "virtual-server");
		if (!$minfo{'version'}) {
			# Virtualmin not installed
			&$second_print(&text('newmxs_evirtualmin',
					     $server->{'host'}));
			goto failed;
			}
		else {
			# Ask the remote server if it is OK
			&remote_foreign_require($server, "virtual-server",
						"virtual-server-lib.pl");
			$mxerr = &remote_foreign_call($server, "virtual-server",
						      "check_secondary_mx");
			if ($mxerr) {
				&$second_print(&text('newmxs_eprob',
					$server->{'host'}, $mxerr));
				goto failed;
				}

			# Make sure we're not somehow adding this system!
			$rhost = &remote_foreign_call($server, "virtual-server",
						      "get_system_hostname");
			$myhost = &get_system_hostname();
			if ($rhost eq $myhost) {
				&$second_print(&text('newmxs_esame',
					$server->{'host'}, $myhost));
				goto failed;
				}

			# Save the MX name to use for this server
			if ($in{"mxname_".$server->{'id'}."_def"}) {
				delete($server->{'mxname'});
				}
			else {
				$in{"mxname_".$server->{'id'}} =~
				    /^[a-z0-9\.\-\_]+$/ ||
					&text('newmxs_emxname',
					      $server->{'host'});
				$server->{'mxname'} =
					$in{"mxname_".$server->{'id'}};
				}
			push(@mxs, $server);
			$newmxids{$server->{'id'}} = $server;
			}
		&$second_print($text{'setup_done'});
		}
	}
&save_mx_servers(\@mxs);

# Update all existing email domains on new MX servers
my $anychanged = 0;
foreach my $d (&list_domains()) {
	next if (!$d->{'mail'});
	my $oldd = { %$d };
	my $changed = 0;

	my @ids = split(/\s+/, $d->{'mx_servers'});
	my (@added, @deleted);
	if ($in{'addexisting'}) {
		# Add to new secondaries
		if (!$changed++) {
			&$first_print(&text('newmxs_dom', $d->{'dom'}));
			&$indent_print();
			}
		foreach $server (@mxs) {
			if (!$oldmxids{$server->{'id'}}) {
				&$first_print(&text('newmxs_adding',
						    $server->{'host'}));
				$err = &setup_one_secondary($d, $server);
				if (!$err) {
					push(@ids, $server->{'id'});
					&$second_print($text{'setup_done'});
					}
				else {
					&$second_print(&text('newmxs_failed',
							     $err));
					}
				push(@added, $server);
				}
			}
		}

	# Remove from old secondaries
	foreach $server (@oldmxs) {
		if (!$newmxids{$server->{'id'}} &&
		    &indexof($server->{'id'}, @ids) >= 0) {
			if (!$changed++) {
				&$first_print(&text('newmxs_dom', $d->{'dom'}));
				&$indent_print();
				}
			&$first_print(&text('newmxs_removing',
					    $server->{'host'}));
			$err = &delete_one_secondary($d, $server);
			if (!$err) {
				&$second_print($text{'setup_done'});
				}
			else {
				&$second_print(&text('newmxs_failed', $err));
				}
			@ids = grep { $_ != $server->{'id'} } @ids;
			push(@deleted, $server);
			}
		}
	if ($changed) {
		$d->{'mx_servers'} = join(" ", @ids);

		if ($d->{'dns'}) {
			# Add or remove DNS MX records
			&modify_dns($d, $oldd);
			}
		}

	# Re-sync virtusers for domain to secondaries, if any were added or
	# removed
	if (@added || @deleted) {
		&$first_print($text{'newmxs_syncing'});
		@rv = ( );
		push(@rv, &sync_secondary_virtusers($d, \@added, 0))
			if (@added);
		push(@rv, &sync_secondary_virtusers($d, \@deleted, 1))
			if (@deleted);
		@errs = grep { $_->[1] } @rv;
		if (@errs) {
			&$second_print(&text('newmxs_esynced',
				join(", ", map { $_->[0]->{'host'}." - ".
						 ($_->[1] || "OK") } @rv)));
			}
		else {
			&$second_print(&text('newmxs_synced',
				join(", ", map { $_->[0]->{'host'} } @rv)));
			}
		}

	&save_domain($d);
	if ($changed) {
		&$outdent_print();
		&$second_print($text{'setup_done'});
		$anychanged++;
		}
	}
if (!$anychanged) {
	&$first_print($text{'newmxs_nothing'});
	}

&run_post_actions();
&webmin_log("mxs");
failed:			# Goto here if one server fails
&ui_print_footer("edit_newmxs.cgi", $text{'newmxs_return'},
                 "", $text{'index_return'});

Private