petar.company/tools/system2petar/.old/mail-sys-import.pl
2025-03-01 00:58:18 +01:00

54 lines
1.9 KiB
Perl
Executable file

#!/usr/bin/perl
# SQL STATEMENT:
# create table MAILUSER (id integer autoincrement primary key,login varchar (20), pwd varchar(50), uid integer autoincrement, gid varchar(6), email varchar(50), home varchar(30), shell varchar(20), domain varchar(50));
# cat import-email.sql | sqlite consiag.db
if (@ARGV[0] eq ""){
print "Usage: ";\
print "$0 masterpwd_db_file\n";
exit 5 ;
}
$defgid = "2000";
$defshell = "/sbin/nologin";
print "\n";
print "Ready to generate sql file for : @ARGV[0] \n";
print "\n";
print "\n";
print "Domain name []: ";
$domain_name = <STDIN>;
chomp($domain_name);
if ($domain_name eq "") { die "Domain name is mandatory ! Exiting ... \n";}
print "Default min uid ? [1001]\n";
print "Default user group ? [2000]\n";
print "Default user shell ? [/sbin/nologin]\n";
print "\n";
print "Press any key to continue or Ctrl+C to abort: [Return]";
$key = getc(STDIN);
print "\n";
open (IN, "<@ARGV[0]") or die "Error opening @ARGV[0]" ;
open (OUT, ">import-email-$domain_name.sql");
print OUT "drop table mailuser;\n";
print OUT "create table mailuser (uid integer autoincrement primary key,login varchar(20), pwd varchar(50), gid varchar(6), email varchar(50), home varchar(30), shell varchar(20), domain varchar(50));\n";
print OUT "insert into mailuser (uid,login) values (\'1999',\'removeme\');\n";
while ($line = <IN>){
chomp $line;
($login,$pwd,$uid,$gid,$dummy1,$dummy2,$dummy3,$email,$home,$shell) = split (":",$line);
if ( ($uid >= "1002" && $uid <= "65533") && substr($line,0,1) == "#" ){
($part1,$domain) = split ("@",$email);
print "converting $uid:$login:$email\n";
print OUT "insert into mailuser (login,pwd,gid,email,home,shell,domain) VALUES ".
"(\'$login\',\'$pwd\',\'$defgid\',\'$login\@$domain_name\',\'$home\',\'$shell\',\'$domain_name\');\n";
}
}
print OUT "delete from mailuser where uid = '1999';\n";
print "\n";
print "The file: import-email-$domain_name.sql is ready to be imported or edited.";