Commit Diff
Diff:
176d5d5d9a6208946006a89a85fd93a4fafc7919
8de79cd0c9fc4a2969d176d53e066cbe54adcc05
Commit:
8de79cd0c9fc4a2969d176d53e066cbe54adcc05
Tree:
b1d31fe1d25f03d2f0e12f3f9844fc0738c89b5e
Author:
jrmu <jrmu@ircnow.org>
Committer:
jrmu <jrmu@ircnow.org>
Date:
Mon Mar 6 05:32:14 2023 UTC
Message:
Fixed bugs in mail
blob - adf491de0cc69afa816d6f9942324f4c01223169
blob + cc520b037bcb7795b1f07c9b6676182bdcf4e093
--- BNC.pm
+++ BNC.pm
@@ -271,6 +271,7 @@ sub mcontrolpanel {
if($hostmask eq '*controlpanel!znc@znc.in') {
if ($text =~ /^Error: User \[cloneuser\] does not exist/) {
createclone($bot);
+ main::putserv($bot, "PRIVMSG *status :loadmod blockuser");
foreach my $chan (@teamchans) {
main::putserv($bot, "PRIVMSG $chan :Cloneuser created");
}
@@ -409,7 +410,7 @@ sub mailbnc {
$approvemsg = <<"EOF";
*IMPORTANT*: Your account has been created but it has not yet been
-activated. To activate your account, please contact your admins
+approved. To get your account approved, please contact your admins
$staff on IRC and by email.
EOF
blob - ea264bb186718e1782b96621a9a983d02252a7ad
blob + 2c81071ce140bdccf136648d4140f6f26b776bac
--- Mail.pm
+++ Mail.pm
@@ -6,10 +6,12 @@ use strict;
use warnings;
use OpenBSD::Pledge;
use OpenBSD::Unveil;
+use File::Copy qw(copy);
use MIME::Base64;
use Digest::SHA qw(sha256_hex);
my %conf = %main::conf;
+my $chans = $conf{chans};
my $staff = $conf{staff};
my $hostname = $conf{hostname};
my $mailfrom = $conf{mailfrom};
@@ -19,9 +21,12 @@ my $smtpport = $conf{smtpport};
my $teamchans = $conf{teamchans};
my @teamchans = split /[,\s]+/m, $teamchans;
my $mailwebpanel = $conf{mailwebpanel};
+my $approval = $conf{approval};
+my $expires = $conf{expires};
my $passwdpath = "/etc/mail/passwd";
my $virtualspath = "/etc/mail/virtuals";
my $senderspath = "/etc/mail/users";
+my @users;
main::cbind("msg", "-", "mail", \&mmail);
@@ -30,6 +35,9 @@ sub init {
unveil("/usr/bin/encrypt", "rx") or die "Unable to unveil $!";
#dependencies for mail
unveil("/usr/sbin/sendmail", "rx") or die "Unable to unveil $!";
+ unveil($passwdpath, "rwc") or die "Unable to unveil $!";
+ unveil($virtualspath, "rwc") or die "Unable to unveil $!";
+ unveil($senderspath, "rwc") or die "Unable to unveil $!";
unveil("/usr/lib/libutil.so.13.1", "r") or die "Unable to unveil $!";
unveil("/bin/sh", "rx") or die "Unable to unveil $!";
}
@@ -61,7 +69,14 @@ sub mmail {
return;
} elsif (main::isstaff($bot, $nick) && $text =~ /^approve\s+([[:ascii:]]+)/) {
my $username = $1;
- ### TODO: Unblock account ###
+ my @passwd = main::readarray($passwdpath);
+ foreach my $line (@passwd) {
+ $line =~ s/^#(${username}\@${hostname}.*)/$1/;
+ }
+ # trailing newline necessary
+ main::writefile("$passwdpath.bak", join("\n", @passwd)."\n");
+ copy "${passwdpath}.bak", $passwdpath;
+
foreach my $chan (@teamchans) {
main::putserv($bot, "PRIVMSG $chan :$username mail approved");
}
@@ -98,14 +113,21 @@ sub mmail {
main::putserv($bot, "PRIVMSG $nick :Check your email!");
mailmail($username, $pass, $email);
if ($approval eq "true") {
- ### TODO: Block account ###
+ my @passwd = main::readarray($passwdpath);
+ foreach my $line (@passwd) {
+ $line =~ s/^(${username}\@${hostname}.*)/#$1/;
+ }
+ # trailing newline necessary
+ main::writefile("$passwdpath.bak", join("\n", @passwd)."\n");
+ copy "${passwdpath}.bak", $passwdpath;
+
main::putserv($bot, "PRIVMSG $nick :Your account has been created but must be manually approved by your admins ($staff) before it can be used.");
foreach my $chan (@teamchans) {
main::putservlocalnet($bot, "PRIVMSG $chan :$staff: $nick\'s account $username must be manually unblocked before it can be used.");
}
}
foreach my $chan (@teamchans) {
- main::putservlocalnet($bot, "PRIVMSG $chan :$nick\'s mail registration of $username@$hostname on $bot->{name} was successful, please help him connect");
+ main::putservlocalnet($bot, "PRIVMSG $chan :$nick\'s mail registration of $username\@$hostname on $bot->{name} was successful, please help him connect");
}
#www($newnick, $reply, $password, "bouncer");
return;
@@ -192,7 +214,7 @@ sub mailmail {
$approvemsg = <<"EOF";
*IMPORTANT*: Your account has been created but it has not yet been
-activated. To activate your account, please contact your admins
+approved. To get your account approved, please contact your admins
$staff on IRC and by email.
EOF
@@ -202,7 +224,7 @@ Welcome to IRCNow!
You created an email account:
-Username: $username@$hostname
+Username: $username\@$hostname
Password: $password
Server: $hostname
IMAP Port: $imapport (STARTTLS)
@@ -238,20 +260,20 @@ sub createmail {
sub deletemail {
my ($username) = @_;
- my @passwd = readarray($passwdpath);
- my @virtuals = readarray($virtualspath);
- my @senders = readarray($senderspath);
+ my @passwd = main::readarray($passwdpath);
+ my @virtuals = main::readarray($virtualspath);
+ my @senders = main::readarray($senderspath);
@passwd = grep !/^${username}\@${hostname}/, @passwd;
@virtuals = grep !/^${username}\@${hostname}/, @virtuals;
@senders = grep !/^${username}\@${hostname}/, @virtuals;
# trailing newline necessary
main::writefile("$passwdpath.bak", join("\n", @passwd)."\n");
- copy "$passwdpath.bak", $passwdpath;
+ copy "${passwdpath}.bak", $passwdpath;
main::writefile("$virtualspath", join("\n", @virtuals)."\n");
- copy "$virtualspath.bak", $virtualspath;
+ copy "${virtualspath}.bak", $virtualspath;
main::writefile("$senderspath", join("\n", @senders)."\n");
- copy "$senderspath.bak", $senderspath;
+ copy "${senderspath}.bak", $senderspath;
`doas rcctl restart smtpd`;
`doas rcctl reload dovecot`;
blob - 14153c3d570d26cb6f92b04d67e07903dec73848
blob + 4097cd6fdf76db9b84c02aa5d68869f299dcc8df
--- Shell.pm
+++ Shell.pm
@@ -39,7 +39,7 @@ main::cbind("msg", "-", "shell", \&mshell);
sub yesterday {
my @months = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();
- my $localtime = sprintf("%s%02d%04d", $months[mon], $mday-1, $year+1900);
+ my $localtime = sprintf("%s%02d%04d", $months[$mon], $mday-1, $year+1900);
return $localtime;
}
sub init {
@@ -176,7 +176,7 @@ sub mshell {
main::whois($bot->{sock}, $nick);
main::ctcp($bot->{sock}, $nick);
main::putserv($bot, "PRIVMSG $nick :".`figlet $captcha`);
- main::putserv($bot, "PRIVMSG $nick :$captchaURL".encode_base64($captcha));
+ # main::putserv($bot, "PRIVMSG $nick :$captchaURL".encode_base64($captcha));
main::putserv($bot, "PRIVMSG $nick :Type !shell captcha <text>");
foreach my $chan (@teamchans) {
main::putservlocalnet($bot, "PRIVMSG $chan :$nick\'s captcha on $bot->{name} is $captcha");
@@ -197,7 +197,7 @@ sub mailshell {
$approvemsg = <<"EOF";
*IMPORTANT*: Your account has been created but it has not yet been
-activated. To activate your account, please contact your admins
+approved. To get your account approved, please contact your admins
$staff on IRC and by email.
EOF
IRCNow