HEX
Server: Apache
System: Linux vps-cdc32557.vps.ovh.ca 5.15.0-156-generic #166-Ubuntu SMP Sat Aug 9 00:02:46 UTC 2025 x86_64
User: hanode (1017)
PHP: 7.4.33
Disabled: 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,pcntl_unshare,
Upload Files
File: //usr/share/perl5/Virtualmin/Config/Plugin/Usermin.pm
package Virtualmin::Config::Plugin::Usermin;
use strict;
use warnings;
no warnings qw(once);
use parent 'Virtualmin::Config::Plugin';

our $config_directory;
our (%gconfig, %uconfig, %uminiserv);
our $trust_unknown_referers = 1;

sub new {
  my ($class, %args) = @_;

  # inherit from Plugin
  my $self = $class->SUPER::new(name => 'Usermin', %args);

  return $self;
}

# actions method performs whatever configuration is needed for this
# plugin.
sub actions {
  my $self = shift;

  use Cwd;
  my $cwd  = getcwd();
  my $root = $self->root();
  chdir($root);
  $0 = "$root/virtual-server/config-system.pl";
  push(@INC, $root);
  push(@INC, "$root/vendor_perl");
  eval 'use WebminCore';    ## no critic
  init_config();

  $self->spin();
  eval {
    foreign_require("init",    "init-lib.pl");
    foreign_require("usermin", "usermin-lib.pl");
    usermin::get_usermin_config(\%uconfig);
    $uconfig{'theme'}      = "authentic-theme";
    $uconfig{'gotomodule'} = 'mailbox';
    usermin::put_usermin_config(\%uconfig);
    usermin::get_usermin_miniserv_config(\%uminiserv);
    $uminiserv{'preroot'}         = "authentic-theme";
    $uminiserv{'ssl'}             = "1";
    $uminiserv{'ssl_cipher_list'} = $webmin::strong_ssl_ciphers;
    $uminiserv{'domainuser'}      = 1;
    $uminiserv{'domainstrip'}     = 1;

    # Enable 2FA
    $uminiserv{'twofactor_provider'} = 'totp';
    $uminiserv{'twofactorfile'}
      ||= "$usermin::config{'usermin_dir'}/twofactor-users";
    $uminiserv{'twofactor_wrapper'}
      = "$usermin::config{'usermin_dir'}/twofactor/twofactor.pl";
    usermin::create_cron_wrapper($uminiserv{'twofactor_wrapper'},
      "twofactor", "twofactor.pl");
    my (%uacl, %umdirs);
    lock_file(usermin::usermin_acl_filename());
    usermin::read_usermin_acl(\%uacl, \%umdirs);
    push(@{$umdirs{'user'}}, 'twofactor');
    usermin::save_usermin_acl("user", $umdirs{'user'});
    unlock_file(usermin::usermin_acl_filename());

    usermin::put_usermin_miniserv_config(\%uminiserv);

    if (init::status_action("usermin")) {
      usermin::restart_usermin_miniserv();
    }
    else {
      usermin::start_usermin();
    }

    # Start Usermin at boot
    foreign_require("init", "init-lib.pl");
    init::enable_at_boot("usermin");

    $self->done(1);    # OK!
  };
  if ($@) {
    $self->done(0);    # NOK!
  }
}

1;