From 53bb0cb56f580b7115b874fe40d9011efe6dd8ed Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Mon, 14 Mar 2011 14:57:50 +0100 Subject: Fix encoding of welcome message --- fripost-adduser | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'fripost-adduser') diff --git a/fripost-adduser b/fripost-adduser index 73ff70b..192a691 100755 --- a/fripost-adduser +++ b/fripost-adduser @@ -16,13 +16,16 @@ use FindBin qw($Bin); use lib "$Bin/lib"; use Data::Dumper; +use Encode qw(encode); use File::Slurp qw(slurp); use Fripost::Password; use Fripost::Prompt; use Fripost::Schema; -use IO::Prompt; use Getopt::Long; +use IO::Prompt; +use MIME::Base64; use MIME::Lite; +use MIME::QuotedPrint; use YAML::Syck; # Prompt for user info @@ -86,14 +89,20 @@ say "New account $user->{username} added."; ## Send email my $msg = MIME::Lite->new( From => 'admin@fripost.org', - To => $user->{username}, - Subject => 'Välkommen till Fripost!', + To => 'test@example.com', + Subject => "=?UTF-8?B?" . + encode_base64(encode("utf8", 'Välkommen till Fripost!'), "") . "?=", Data => scalar slurp('templ/new_user_mail.tt'), # TODO: actually use TT + Encoding => 'quoted-printable', ); + +$msg->attr('content-type.charset' => 'utf-8'); $msg->send(); say "Sent welcome message: "; say $msg->as_string; +#say decode_qp($msg->as_string); + =head1 AUTHOR -- cgit v1.2.3 From 02fd9f27bb2f580c88a28d963ce27dcff210bf73 Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Mon, 14 Mar 2011 15:06:23 +0100 Subject: WIP: send login information to address when adding user --- fripost-adduser | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'fripost-adduser') diff --git a/fripost-adduser b/fripost-adduser index 192a691..0fd534c 100755 --- a/fripost-adduser +++ b/fripost-adduser @@ -30,7 +30,7 @@ use YAML::Syck; # Prompt for user info sub read_user_info { - my $username = prompt_username("New username: "); + my $username = prompt_email("New username: ", 'is_user'); my $name = prompt "Full (real) name: "; my $domain = (split /\@/, $username)[1]; my $maildir = "$domain/". (split /\@/, $username)[0] . "/Maildir/"; # trailing slash important @@ -103,6 +103,9 @@ say "Sent welcome message: "; say $msg->as_string; #say decode_qp($msg->as_string); +ask_if_ok_or_abort("Send email with login information? "); + +prompt_email("Where should the email be sent? "); =head1 AUTHOR -- cgit v1.2.3 From 65590a4ed002ebcecdec5fb5286895e9ecbc6209 Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Mon, 14 Mar 2011 15:11:29 +0100 Subject: Simplify adduser script --- fripost-adduser | 47 ++++++++++++++++++----------------------------- 1 file changed, 18 insertions(+), 29 deletions(-) (limited to 'fripost-adduser') diff --git a/fripost-adduser b/fripost-adduser index 0fd534c..89a4031 100755 --- a/fripost-adduser +++ b/fripost-adduser @@ -28,29 +28,6 @@ use MIME::Lite; use MIME::QuotedPrint; use YAML::Syck; -# Prompt for user info -sub read_user_info { - my $username = prompt_email("New username: ", 'is_user'); - my $name = prompt "Full (real) name: "; - my $domain = (split /\@/, $username)[1]; - my $maildir = "$domain/". (split /\@/, $username)[0] . "/Maildir/"; # trailing slash important - my $active = 1; - my $password = prompt_password(); - - # Show the information that will be inserted - my $user = { - username => $username, - name => $name, - domain => $domain, - maildir => $maildir, - active => $active, - password => $password, - }; - print Dumper $user; - - return $user; -} - ## Get command line options our $conf = LoadFile('default.yml'); @@ -67,20 +44,32 @@ my $schema = Fripost::Schema->connect( ); say "Adding a new virtual user."; +{ + my $user = { + username => prompt_email("New username: ", 'is_user'), + name => prompt "Full (real) name: ", + domain => (split /\@/, $username)[1], + maildir => "$domain/". (split /\@/, $username)[0] . "/Maildir/", # trailing slash important + active => 1, + password => prompt_password(), + }; -my $user = read_user_info(); - -ask_if_ok_or_abort(); + say "Username: $user->{username}"; + say "Name: $user->{name}"; + say "Password: (hidden)"; -if ($conf->{pretend}) { - say "Nothing to do since we are pretending..."; - exit 0; + ask_if_ok_or_abort(); } die "User already exists" if ($schema->resultset('Mailbox')->search({ username => $user->{username} })->count); +if ($conf->{pretend}) { + say "Nothing to do since we are pretending..."; + exit 0; +} + ## Insert user into database my $db_user = $schema->resultset('Mailbox')->new($user); $db_user->insert; -- cgit v1.2.3 From 6238a0b2d98b59a99c5eab89b15d5686ba6858f3 Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Mon, 14 Mar 2011 15:14:06 +0100 Subject: Fix bug --- fripost-adduser | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'fripost-adduser') diff --git a/fripost-adduser b/fripost-adduser index 89a4031..5153a18 100755 --- a/fripost-adduser +++ b/fripost-adduser @@ -44,8 +44,9 @@ my $schema = Fripost::Schema->connect( ); say "Adding a new virtual user."; +my $user; { - my $user = { + $user = { username => prompt_email("New username: ", 'is_user'), name => prompt "Full (real) name: ", domain => (split /\@/, $username)[1], @@ -78,7 +79,7 @@ say "New account $user->{username} added."; ## Send email my $msg = MIME::Lite->new( From => 'admin@fripost.org', - To => 'test@example.com', + To => $user->{username}, Subject => "=?UTF-8?B?" . encode_base64(encode("utf8", 'Välkommen till Fripost!'), "") . "?=", Data => scalar slurp('templ/new_user_mail.tt'), # TODO: actually use TT -- cgit v1.2.3 From 5d3d384a5bf1e08951ed37ec5111314c1cce82dc Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Mon, 14 Mar 2011 15:17:13 +0100 Subject: Better name: confirm_or_abort --- fripost-adduser | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'fripost-adduser') diff --git a/fripost-adduser b/fripost-adduser index 5153a18..c8bfc84 100755 --- a/fripost-adduser +++ b/fripost-adduser @@ -59,7 +59,7 @@ my $user; say "Name: $user->{name}"; say "Password: (hidden)"; - ask_if_ok_or_abort(); + confirm_or_abort(); } die "User already exists" @@ -93,7 +93,7 @@ say "Sent welcome message: "; say $msg->as_string; #say decode_qp($msg->as_string); -ask_if_ok_or_abort("Send email with login information? "); +confirm_or_abort("Send email with login information? "); prompt_email("Where should the email be sent? "); -- cgit v1.2.3 From d04c66ffea981891c7c27d539ed8fe45cd9de307 Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Mon, 14 Mar 2011 16:30:33 +0100 Subject: Revert one simplification --- fripost-adduser | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) (limited to 'fripost-adduser') diff --git a/fripost-adduser b/fripost-adduser index c8bfc84..9a2fa00 100755 --- a/fripost-adduser +++ b/fripost-adduser @@ -46,18 +46,25 @@ my $schema = Fripost::Schema->connect( say "Adding a new virtual user."; my $user; { + my $username = prompt_email("New username: ", 'is_user'); + my $name = prompt "Full (real) name: "; + my $domain = (split /\@/, $username)[1]; + my $maildir = "$domain/". (split /\@/, $username)[0] . "/Maildir/"; # trailing slash important + my $active = 1; + my $password = prompt_password(); + $user = { - username => prompt_email("New username: ", 'is_user'), - name => prompt "Full (real) name: ", - domain => (split /\@/, $username)[1], - maildir => "$domain/". (split /\@/, $username)[0] . "/Maildir/", # trailing slash important - active => 1, - password => prompt_password(), + username => $username, + name => $name, + domain => $domain, + maildir => $maildir, + active => $active, + password => $password, }; - say "Username: $user->{username}"; - say "Name: $user->{name}"; - say "Password: (hidden)"; + say "Username: $user->{username}"; + say "Real name: $user->{name}"; + say "Password: (hidden)"; confirm_or_abort(); } -- cgit v1.2.3 From b197defa26836ed7eb3052bf5ef82e52078825e6 Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Mon, 14 Mar 2011 16:31:26 +0100 Subject: WIP: send credentials --- fripost-adduser | 80 +++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 63 insertions(+), 17 deletions(-) (limited to 'fripost-adduser') diff --git a/fripost-adduser b/fripost-adduser index 9a2fa00..e71de69 100755 --- a/fripost-adduser +++ b/fripost-adduser @@ -26,6 +26,7 @@ use IO::Prompt; use MIME::Base64; use MIME::Lite; use MIME::QuotedPrint; +use Template; use YAML::Syck; ## Get command line options @@ -73,36 +74,81 @@ die "User already exists" if ($schema->resultset('Mailbox')->search({ username => $user->{username} })->count); +## Insert user into database if ($conf->{pretend}) { - say "Nothing to do since we are pretending..."; - exit 0; + say "Did not create user since we are pretending." +} +else { + $schema->resultset('Mailbox')->new($user)->insert; + say "New account $user->{username} added."; } -## Insert user into database -my $db_user = $schema->resultset('Mailbox')->new($user); -$db_user->insert; -say "New account $user->{username} added."; +### Prepare sending emails + +my $tt = Template->new({ + INCLUDE_PATH => "$Bin/templ", + INTERPOLATE => 1, +}) || die "$Template::ERROR\n"; -## Send email my $msg = MIME::Lite->new( - From => 'admin@fripost.org', - To => $user->{username}, + From => 'Friposts administratörer ', Subject => "=?UTF-8?B?" . encode_base64(encode("utf8", 'Välkommen till Fripost!'), "") . "?=", - Data => scalar slurp('templ/new_user_mail.tt'), # TODO: actually use TT Encoding => 'quoted-printable', ); $msg->attr('content-type.charset' => 'utf-8'); -$msg->send(); - -say "Sent welcome message: "; -say $msg->as_string; -#say decode_qp($msg->as_string); -confirm_or_abort("Send email with login information? "); +### Send welcome email to new user +{ + my ($vars, $data); + $vars = {}; + $tt->process('new_user_mail.tt', $vars, \$data) + || die $tt->error(), '\n'; + + $msg->replace(To => $user->{username}); + $msg->data($data); + + + unless ($conf->{pretend}) { + $msg->send() unless $conf->{pretend};; + say "Sent welcome message."; + } + say "----------------------------------- Welcome"; + say decode_qp($msg->as_string); + say "-----------------------------------"; +} -prompt_email("Where should the email be sent? "); +### Send login credentials to new user +{ + my ($vars, $data); + $vars = { + user => $user->{username}, + pass => $user->{password}, + real => $user->{name}, + }; + $tt->process('user_info.tt', $vars, \$data) + || die $tt->error(), '\n'; + + $msg->data($data); + + say "Login information mail:"; + say "----------------------------------- Credentials"; + say decode_qp($msg->as_string); + say "-----------------------------------"; + + + confirm_or_abort("Send email with login information? "); + my $to = prompt_email("Where should the email be sent? "); + $msg->replace(To => $to); + if (!$conf->{pretend}) { + $msg->send; + say "Credentials sent."; + } + else { + say "Pretending, will not send credentials."; + } +} =head1 AUTHOR -- cgit v1.2.3 From 6a541a75d37cb1ef63bc2289a3114882efe38190 Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Mon, 14 Mar 2011 16:51:05 +0100 Subject: adduser: Add verbosity options --- fripost-adduser | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) (limited to 'fripost-adduser') diff --git a/fripost-adduser b/fripost-adduser index e71de69..0c6f587 100755 --- a/fripost-adduser +++ b/fripost-adduser @@ -36,15 +36,19 @@ GetOptions( 'dbi_dsn' => \$conf->{dbi_dsn}, 'admuser=s' => \$conf->{admuser}, 'admpass=s' => \$conf->{admpass}, + 'debug' => \$conf->{debug}, 'pretend' => \$conf->{pretend}, + 'verbose' => \$conf->{verbose}, ) or die "Unable to get command line options."; +sub dsay { say @_ if $conf->{debug}; } +sub vsay { say @_ if $conf->{verbose} || $conf->{debug}; } + # Connect to the database my $schema = Fripost::Schema->connect( $conf->{dbi_dsn}, $conf->{admuser}, $conf->{admpass}, {} #\%dbi_params ); -say "Adding a new virtual user."; my $user; { my $username = prompt_email("New username: ", 'is_user'); @@ -63,7 +67,7 @@ my $user; password => $password, }; - say "Username: $user->{username}"; + say "User name: $user->{username}"; say "Real name: $user->{name}"; say "Password: (hidden)"; @@ -76,7 +80,7 @@ die "User already exists" ## Insert user into database if ($conf->{pretend}) { - say "Did not create user since we are pretending." + vsay "Did not create user since we are pretending." } else { $schema->resultset('Mailbox')->new($user)->insert; @@ -114,9 +118,11 @@ $msg->attr('content-type.charset' => 'utf-8'); $msg->send() unless $conf->{pretend};; say "Sent welcome message."; } - say "----------------------------------- Welcome"; - say decode_qp($msg->as_string); - say "-----------------------------------"; + dsay "-----------------------------------"; + dsay "| Welcome mail |"; + dsay "-----------------------------------"; + dsay decode_qp($msg->as_string); + dsay "-----------------------------------"; } ### Send login credentials to new user @@ -132,11 +138,11 @@ $msg->attr('content-type.charset' => 'utf-8'); $msg->data($data); - say "Login information mail:"; - say "----------------------------------- Credentials"; - say decode_qp($msg->as_string); - say "-----------------------------------"; - + dsay "-----------------------------------"; + dsay "| Login credentials mail |"; + dsay "-----------------------------------"; + dsay decode_qp($msg->as_string); + dsay "-----------------------------------"; confirm_or_abort("Send email with login information? "); my $to = prompt_email("Where should the email be sent? "); -- cgit v1.2.3 From 3c84e11c460289b4906dd8add66a036e9287d7e6 Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Mon, 14 Mar 2011 17:01:52 +0100 Subject: Fix subject encoding --- fripost-adduser | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'fripost-adduser') diff --git a/fripost-adduser b/fripost-adduser index 0c6f587..a4ab077 100755 --- a/fripost-adduser +++ b/fripost-adduser @@ -16,7 +16,6 @@ use FindBin qw($Bin); use lib "$Bin/lib"; use Data::Dumper; -use Encode qw(encode); use File::Slurp qw(slurp); use Fripost::Password; use Fripost::Prompt; @@ -96,8 +95,7 @@ my $tt = Template->new({ my $msg = MIME::Lite->new( From => 'Friposts administratörer ', - Subject => "=?UTF-8?B?" . - encode_base64(encode("utf8", 'Välkommen till Fripost!'), "") . "?=", + Subject => "=?UTF-8?B?" . encode_base64('Välkommen till Fripost!' . "?=", Encoding => 'quoted-printable', ); -- cgit v1.2.3 From 68708cd2430d4da548673fd612c891413448fddf Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Mon, 14 Mar 2011 20:54:51 +0100 Subject: Send password with credentials mail --- fripost-adduser | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'fripost-adduser') diff --git a/fripost-adduser b/fripost-adduser index a4ab077..ba97cdf 100755 --- a/fripost-adduser +++ b/fripost-adduser @@ -66,7 +66,7 @@ my $user; password => $password, }; - say "User name: $user->{username}"; + say "User name: $user->{username}"; say "Real name: $user->{name}"; say "Password: (hidden)"; -- cgit v1.2.3