X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=cgi-auth-flexible.git;a=blobdiff_plain;f=cgi-auth-flexible.pm;h=65a929fda48af18210b7f45c7509298df6353299;hp=1197f868fa2fce022a5f06b83e661a92360a3626;hb=d1ac338fe76009ab1f28e8a43665e67d5d2341f6;hpb=a97dc2ce6b527a510159f3445834a17d9377ca96 diff --git a/cgi-auth-flexible.pm b/cgi-auth-flexible.pm index 1197f86..65a929f 100644 --- a/cgi-auth-flexible.pm +++ b/cgi-auth-flexible.pm @@ -32,7 +32,7 @@ BEGIN { @EXPORT = qw(); %EXPORT_TAGS = ( ); # eg: TAG => [ qw!name1 name2! ], - @EXPORT_OK = qw(); + @EXPORT_OK = qw(@default_db_setup_stmts); } our @EXPORT_OK; @@ -202,6 +202,18 @@ sub gen_plain_footer_html ($$) { ''); } +our @default_db_setup_stmts = + ("CREATE TABLE $v->{S}{db_prefix}_assocs (". + " assochash VARCHAR PRIMARY KEY,". + " username VARCHAR NOT NULL,". + " last INTEGER NOT NULL". + ")" + , + "CREATE INDEX $v->{S}{db_prefix}_assocs_timeout_index". + " ON $v->{S}{db_prefix}_assocs". + " (last)" + ); + #---------- licence and source code ---------- sub srcdump_dump ($$$) { @@ -426,7 +438,8 @@ sub new_verifier { assocdb_dsn => undef, assocdb_user => '', assocdb_password => '', - assocdb_table => 'caf_assocs', + db_prefix => 'caf', + assocdb_setup_stmts => [@_default_db_setup_statements], random_source => '/dev/urandom', secretbits => 128, # bits hash_algorithm => "SHA-256", @@ -543,14 +556,9 @@ sub _dbopen ($) { } $v->{Dbh} = $dbh; - $v->_db_setup_do("CREATE TABLE $v->{S}{assocdb_table} (". - " assochash VARCHAR PRIMARY KEY,". - " username VARCHAR NOT NULL,". - " last INTEGER NOT NULL". - ")"); - $v->_db_setup_do("CREATE INDEX $v->{S}{assocdb_table}_timeout_index". - " ON $v->{S}{assocdb_table}". - " (last)"); + foreach my $stmt (@default_db_setup_stmts) { + $v->_db_setup_do($stmt); + } return $dbh; } @@ -956,12 +964,12 @@ sub _identify ($$) { my $dbh = $r->{Dbh}; - $dbh->do("DELETE FROM $r->{S}{assocdb_table}". + $dbh->do("DELETE FROM $r->{S}{db_prefix}_assocs". " WHERE last < ?", {}, time - $r->{S}{login_timeout}); my $row = $dbh->selectrow_arrayref("SELECT username, last". - " FROM $r->{S}{assocdb_table}". + " FROM $r->{S}{db_prefix}_assocs". " WHERE assochash = ?", {}, $h); if (defined $row) { #print STDERR "_identify h=$h s=$s YES @$row\n"; @@ -1002,7 +1010,7 @@ sub _db_revoke ($$) { my $dbh = $r->{Dbh}; - $dbh->do("DELETE FROM $r->{S}{assocdb_table}". + $dbh->do("DELETE FROM $r->{S}{db_prefix}_assocs". " WHERE assochash = ?", {}, $h); } @@ -1010,7 +1018,7 @@ sub _db_record_login_ok ($$$) { my ($r,$h,$user) = @_; $r->_db_revoke($h); my $dbh = $r->{Dbh}; - $dbh->do("INSERT INTO $r->{S}{assocdb_table}". + $dbh->do("INSERT INTO $r->{S}{db_prefix}_assocs". " (assochash, username, last) VALUES (?,?,?)", {}, $h, $user, time); }