| … | |
… | |
| 125 | my $user = shift; |
125 | my $user = shift; |
| 126 | return unless $self->{keys_db}->connect("ro"); |
126 | return unless $self->{keys_db}->connect("ro"); |
| 127 | my $result = $self->{keys_db}->hashRef->{$user}; |
127 | my $result = $self->{keys_db}->hashRef->{$user}; |
| 128 | $self->{keys_db}->disconnect; |
128 | $self->{keys_db}->disconnect; |
| 129 | my ($key, $timestamp) = defined $result ? split /\s+/, $result : (undef, undef); |
129 | my ($key, $timestamp) = defined $result ? split /\s+/, $result : (undef, undef); |
| 130 | return ($key, $timestamp); |
130 | if (time <= $timestamp+$self->{key_timeout}) { |
|
|
131 | return $key; |
|
|
132 | } else { |
|
|
133 | $self->deleteKey($user); |
|
|
134 | return 0; |
|
|
135 | } |
| 131 | } |
136 | } |
| 132 | |
137 | |
| 133 | sub setKey($$$$) { |
138 | sub setKey($$$) { |
| 134 | my $self = shift; |
139 | my $self = shift; |
| 135 | my $user = shift; |
140 | my $user = shift; |
| 136 | my $key = shift; |
141 | my $key = shift; |
| 137 | my $timestamp = shift; |
|
|
| 138 | my $key_string = "$key $timestamp"; |
|
|
| 139 | $self->{keys_db}->connect("rw"); |
142 | $self->{keys_db}->connect("rw"); |
| 140 | $self->{keys_db}->hashRef->{$user} = $key_string; |
143 | $self->{keys_db}->hashRef->{$user} = "$key " . time; |
| 141 | $self->{keys_db}->disconnect; |
144 | $self->{keys_db}->disconnect; |
| 142 | } |
145 | } |
| 143 | |
146 | |
| 144 | sub verifyKey($$$$$) { |
147 | sub verifyKey($$$) { |
| 145 | my $self = shift; |
148 | my $self = shift; |
| 146 | my $user = shift; |
149 | my $user = shift; |
| 147 | my $key = shift; |
150 | my $key = shift; |
| 148 | my $timestamp = shift; |
|
|
| 149 | my ($real_key, $real_timestamp) = $self->getKey($user); |
151 | my $real_key = $self->getKey($user); |
| 150 | return unless defined $real_key and defined $real_timestamp; |
152 | return unless defined $real_key; |
| 151 | if ($key eq $real_key and $timestamp <= $real_timestamp+$self->{key_timeout}) { |
153 | if ($key eq $real_key) { |
| 152 | # update timestamp |
154 | # update timestamp |
| 153 | $self->setKey($user, $key, $timestamp); |
155 | $self->setKey($user, $real_key); |
| 154 | return 1; |
156 | return 1; |
| 155 | } else { |
157 | } else { |
| 156 | return 0; |
158 | return 0; |
| 157 | } |
159 | } |
| 158 | } |
160 | } |