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
32 while (($k,$v,@_) = @_) {
33 die "unknown setting $k" unless %_s{$k};
41 $_s{assocdb_dsn}="dbi:SQLite:dbname=$s_{assocdb_path}"
45 $dbh = DBI->open($_s{assocdb_dsn}, $s_{assocdb_user},
46 $s_{assocdb_password}, {
47 AutoCommit => 0, RaiseError => 1,
49 die "${assocdb_dsn} $! ?" unless $dbh;
54 $dbh->do("CREATE TABLE $_s{assocdb_table} (".
55 " associd VARCHAR PRIMARY KEY,".
61 sub record_login ($) {
63 my $rs = new IO::File $_s{random_source}, '<'
64 or die "$_s{random_source} $!";
65 my $bytes = ($_s{associdlen} + 7) >> 3;
68 read($rs,$nassocbin,$bytes) == $bytes or die "$s_{random_source} $!";
69 my $nassoc = unpack "H*", $nassocbin;
71 $dbh->do("INSERT INTO $_s{assocdb_table}".
72 " (associd, username) VALUES (?,?)", {},
75 $username = $nusername;