5 our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
10 %EXPORT_TAGS = ( ); # eg: TAG => [ qw!name1 name2! ],
12 @EXPORT_OK = qw(setup);
17 assocdb_path => 'cah-assocs.db';
20 assocdb_password => '',
21 assocdb_table => 'assocs',
22 random_source => '/dev/urandom',
23 associdlen => 128, # bits
24 param_name => 'cah_associd',
25 cookie_name => 'cah_associd', # make undef to disable cookie
26 param_get => sub { _c()->param($s_{param_name}) },
27 cookie_get => sub { $_s{cookie_name} ? _c()->param($s_{cookie_name}) : '' },
36 while (($k,$v,@_) = @_) {
37 die "unknown setting $k" unless %_s{$k};
45 $_s{assocdb_dsn}="dbi:SQLite:dbname=$s_{assocdb_path}"
49 $dbh = DBI->open($_s{assocdb_dsn}, $s_{assocdb_user},
50 $s_{assocdb_password}, {
51 AutoCommit => 0, RaiseError => 1,
53 die "${assocdb_dsn} $! ?" unless $dbh;
58 $dbh->do("CREATE TABLE $_s{assocdb_table} (".
59 " associd VARCHAR PRIMARY KEY,".
65 sub record_login ($) {
67 my $rs = new IO::File $_s{random_source}, '<'
68 or die "$_s{random_source} $!";
69 my $bytes = ($_s{associdlen} + 7) >> 3;
72 read($rs,$nassocbin,$bytes) == $bytes or die "$s_{random_source} $!";
73 my $nassoc = unpack "H*", $nassocbin;
75 $dbh->do("INSERT INTO $_s{assocdb_table}".
76 " (associd, username) VALUES (?,?)", {},
79 $username = $nusername;
84 my $passocid = $_s{param_get}();
85 my $cassocid = $_s{cookie_get}();