if (!$notablecheck) {
my %tables =
( "webmin_user" => [ "id", "name", "pass" ],
- "webmin_group" => [ "id", "name", "desc" ],
+ "webmin_group" => [ "id", "name", "description" ],
"webmin_user_attr" => [ "id", "attr", "value" ],
"webmin_group_attr" => [ "id", "attr", "value" ],
"webmin_user_acl" => [ "id", "module", "attr", "value" ],
sub userdb_table_sql
{
my ($str) = @_;
-return ( "create table webmin_user (id int(20), name varchar(255), pass varchar(255))",
- "create table webmin_group (id init(20), name varchar(255), desc varchar(255))",
- "create table webmin_user_attr (id int(20), attr varchar(32), value varchar(255))",
- "create table webmin_group_attr (id int(20), attr varchar(32), value varchar(255))",
- "create table webmin_user_acl (id int(20), module varchar(32), attr varchar(32), value varchar(255))",
- "create table webmin_group_acl (id int(20), module varchar(32), attr varchar(32), value varchar(255))",
+my $key;
+if ($str =~ /^(mysql|postgresql):/) {
+ $key = "not null primary key";
+ }
+# XXX will this work on postgresql?
+return ( "create table webmin_user (id int(20) $key, name varchar(255), pass varchar(255))",
+ "create table webmin_group (id int(20) $key, name varchar(255), description varchar(255))",
+ "create table webmin_user_attr (id int(20) $key, attr varchar(32), value varchar(255))",
+ "create table webmin_group_attr (id int(20) $key, attr varchar(32), value varchar(255))",
+ "create table webmin_user_acl (id int(20) $key, module varchar(32), attr varchar(32), value varchar(255))",
+ "create table webmin_group_acl (id int(20) $key, module varchar(32), attr varchar(32), value varchar(255))",
);
}
--- /dev/null
+#!/usr/local/bin/perl
+# Create all needed tables
+
+require './acl-lib.pl';
+$access{'pass'} || &error($text{'sql_ecannot'});
+&get_miniserv_config(\%miniserv);
+&ReadParse();
+&error_setup($text{'make_err'});
+
+$str = $miniserv{'userdb'};
+$dbh = &connect_userdb($str);
+ref($dbh) || &error($dbh);
+
+&ui_print_unbuffered_header(undef, $text{'make_title'}, "");
+
+foreach $sql (&userdb_table_sql($str)) {
+ print &text('make_exec', "<tt>".&html_escape($sql)."</tt>"),"<br>\n";
+ $cmd = $dbh->prepare($sql);
+ if (!$cmd || !$cmd->execute()) {
+ print &text('make_failed', &html_escape($dbh->errstr)),"<p>\n";
+ }
+ else {
+ print $text{'make_done'},"<p>\n";
+ }
+ }
+
+&ui_print_footer("", $text{'index_return'});
+