5 # Copyright (c) 2002, Michael Blandford and Tal Yardeni
7 # This script is licensed under GPL.
8 ##### Conf Section #####
10 $data_dir = "/home/www/mail.topolis.inet/www/squirrelmail-devel-20050911/data";
12 $abook_table = "address";
13 $pref_table = "userprefs";
19 &GetOptions
( \
%opts, qw( abook data_dir:s delete h help pref sig user:s ) );
21 &Usage
if ( defined $opts{h
} or defined $opts{help
} );
23 unless ( defined $opts{abook
} or defined $opts{pref
} or
30 # Override the data directory if passed as an argument
31 $data_dir = $opts{data_dir
} if ( defined $opts{data_dir
} );
33 # Are we looking for specific users or all users?
34 # There has to be a better way to do this - Below
35 @user_list = split ( /,/, $opts{user
} ) if defined $opts{user
};
38 # If no arguments are passed, and we cant open the dir, we should
40 opendir(DIR
, $data_dir) or
41 die "DIRECTORY READ ERROR: Could not open $data_dir!!\n";
43 while ( $filename = readdir DIR
) {
44 next if ( $filename eq "." or $filename eq ".." );
45 $filename =~ /(.*)\.(.*)/;
48 # Deal with the people
49 # There has to be a better way to do this - Above
50 next if ( defined $opts{user
} and grep(!/$username/, @user_list));
52 # Deal with the extension files
55 &abook
if ( $ext eq "abook" and defined $opts{abook
} );
56 &pref
if ( $ext eq "pref" and defined $opts{pref
} );
57 &sig
if ( $ext =~ /si([g\d])$/ and defined $opts{sig
});
61 # All done. Below are functions
63 # Process a user address file
66 print "DELETE FROM $db.$abook_table WHERE owner = '$username;\n"
67 if ( defined $opts{delete} );
69 open(ABOOK
, ">$data_dir/$filename") or
70 die "FILE READ ERROR: Could not open $filename!!\n";
72 while (my $line = <ABOOK
> ) {
75 my ( $nickname,$firstname,$lastname,$email,$label ) = split(/\|/, $line);
77 print "INSERT INTO $db.$abook_table "
78 . "(owner,nickname,firstname,lastname,email,label) "
79 . "VALUES ('$username','$nickname','$firstname','$lastname',"
80 . "'$email','$label');\n";
86 # Process a user prefernce file
89 print "DELETE FROM $db.$pref_table "
90 . "WHERE user = '$username' and prefkey not like '___sig\%___';\n"
91 if ( defined $opts{delete} );
93 open(PREFS
, "<$data_dir/$filename") or
94 die "FILE READ ERROR: Could not open $filename!!\n";
96 while (my $line = <PREFS
> ) {
99 my ( $prefkey, $prefval ) = split(/=/, $line);
101 print "INSERT INTO $db.$pref_table "
102 . "(user,prefkey,prefval) "
103 . "VALUES ('$username','$prefkey','$prefval');\n";
110 # Process a user sig file
115 $del_ext = "nature" if ( $del_ext eq "g" );
116 print "DELETE FROM $db.$pref_table "
117 . "WHERE user = '$username' and prefkey like '___sig" . $del_ext . "___';\n"
118 if ( defined $opts{delete} );
120 open(SIG
, "<$data_dir/$filename") or
121 die "FILE READ ERROR: Could not open $filename!!\n";
126 $filename =~ /.*\.si([g,\d]$)/;
129 $prefkey .= "nature___";
134 print "INSERT INTO $db.$sig_table (user,prefkey,prefval) "
135 . "VALUES ('$username','$prefkey','".join("", @lines)."');\n";
138 # Print out the usage screen
145 This program generates SQL statements to aid importing squirrelmail
146 user config into a database.
148 Usage: $prog [--delete] [--abook] [--pref] [--sig] [--data_dir=<>] [--user=<username0[,username1[,username2]...]]
150 Prefs --abook, --pref, and --sig are assumed if none of them as passed
152 --delete removes all previous values for users ( --users=<> ) already in
153 the database. This is useful to reimport users.
154 It respects --abook, --pref, and --sig.
156 If --user is not specified, it will try to do all users.