Private
Server IP : 195.201.23.43  /  Your IP : 13.58.187.29
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/bin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME SHELL ]     

Current File : /usr/share/webmin/bin/disable-twofactor
#!/usr/bin/env perl
# disable-twofactor - Disable two-factor authentication for a user. 
use strict;
use warnings;

BEGIN { $Pod::Usage::Formatter = 'Pod::Text::Color'; }
use 5.010; # Version in CentOS 6

use Getopt::Long;
use Pod::Usage;
use Term::ANSIColor qw(:constants);

sub main {
    my %opt;
    GetOptions(
        'help|h' => \$opt{'help'},
        'config|c=s' => \$opt{'config'},
        'user|u=s' => \$opt{'user'}
    );
    pod2usage(0) if ( $opt{'help'} );

    $opt{'config'} ||= "/etc/webmin";

    # Boilerplate, boilerplate, boilerplate...
    $ENV{'WEBMIN_CONFIG'} = $opt{'config'};
    $ENV{'WEBMIN_VAR'}    ||= "/var/webmin";
    $ENV{'MINISERV_CONFIG'} = $ENV{'WEBMIN_CONFIG'} . "/miniserv.conf";

    my $root = root($opt{'config'});
    chdir($root);
    $0 = "$root/bin/webmin";
    push(@INC, $root);
    eval 'use WebminCore'; ## no critic
    init_config();
    foreign_require('acl', 'acl-lib.pl');
    our (%config);

    # Get the user
    my @users = acl::list_users();
    my $user;
    ($user) = grep { $_->{'name'} eq $opt{'user'} } @users;

    # Cancel twofactor authentication
    $user->{'twofactor_provider'} = undef;
    $user->{'twofactor_id'} = undef;
    $user->{'twofactor_apikey'} = undef;
    acl::modify_user($user->{'name'}, $user); 
    reload_miniserv();
    webmin_log("onefactor", "user", $user->{'name'});

    exit 0;
}
exit main( \@ARGV ) if !caller(0);

sub root {
    my ($config) = @_;
    open(my $CONF, "<", "$config/miniserv.conf") || die RED,
        "Failed to open $config/miniserv.conf", RESET;
    my $root;
    while (<$CONF>) {
        if (/^root=(.*)/) {
            $root = $1;
        }
    }
    close($CONF);
    # Does the Webmin root exist?
    if ( $root ) {
        die "$root is not a directory. Is --config correct?" unless (-d $root);
    } else {
        die "Unable to determine Webmin installation directory from $ENV{'WEBMIN_CONFIG'}";
    }

    return $root;
}

1;

=pod

=head1 NAME

disable-twofactor

=head1 DESCRIPTION

Disable two factor authentication for a given user. Useful in cases where the
second factor (e.g. phone or USB key) has been lost.

=head1 SYNOPSIS

webmin disable-twofactor --user username

=head1 OPTIONS

=over

=item --help, -h

Print this usage summary and exit.

=item --config, -c

Specify the full path to the Webmin configuration directory. Defaults to
C</etc/webmin>

=item --user, -u

Name of the user to disable two-factor authentication for.



=back

=head1 LICENSE AND COPYRIGHT


 Copyright 2018 Jamie Cameron <jcameron@webmin.com>
                Joe Cooper <joe@virtualmin.com>
                Ilia Rostovtsev <ilia@virtualmin.com>
Private