Net::Google::SafeBrowsing2::Storage(3pm) | User Contributed Perl Documentation | Net::Google::SafeBrowsing2::Storage(3pm) |
Net::Google::SafeBrowsing2::Storage - Base class for storing the Google Safe Browsing v2 database
package Net::Google::SafeBrowsing2::Sqlite; use base 'Net::Google::SafeBrowsing2::Storage';
This is the base class for implementing a storage mechanism for the Google Safe Browsing v2 database. See Net::Google::SafeBrowsing2::Sqlite for an example of implementation.
This module cannot be used on its own as it does not actually store anything. All methods should redefined. Check the code to see which arguments are used, and what should be returned.
Create a Net::Google::SafeBrowsing2::Storage object my $storage => Net::Google::SafeBrowsing2::Storage->new();
Add chunk information to the local database
$storage->add_chunks(type => 'a', chunknum => 2154, chunks => [{host => HEX, prefix => ''}], list => 'goog-malware-shavar');
Does not return anything.
Arguments
For add chunks, each element of the array is an hash reference in the following format:
{ host => HEX, prefix => HEX }
For sub chunks, each element of the array is an hash reference in the following format:
{ host => HEX, prefix => HEX, add_chunknum => INTEGER }
Returns a list of chunks for a given host key for all lists.
my @chunks = $storage->get_add_chunks(hostkey => HEX);
Arguments
Return value
( { chunknum => 25121, hostkey => hex('12345678'), prefix => '', list => 'goog-malware-shavar' }, { chunknum => '25121', hostkey => hex('12345678'), prefix => hex('2fc96b9f'), list => 'goog-malware-shavar' }, );
Returns a list of sub chunks for a given host key for all lists.
my @chunks = $storage->get_sub_chunks(hostkey => HEX);
Arguments
Return value
( { chunknum => 37441, prefix => '', addchunknum => 23911, list => 'goog-malware-shavar' }, { chunknum => 37441, prefix => '', addchunknum => 22107, list => 'goog-malware-shavar' }, );
Returns a list of unique add chunk numbers for a specific list.
IMPORTANT: this list should be sorted in ascendant order.
my @ids = $storage->get_add_chunks_nums(list => 'goog-malware-shavar');
Arguments
Return value
qw(25121 25122 25123 25124 25125 25126)
Returns a list of unique sub chunk numbers for a specific list.
IMPORTANT: this list should be sorted in ascendant order.
my @ids = $storage->get_sub_chunks_nums(list => 'goog-malware-shavar');
Arguments
Return value
qw(37441 37442 37443 37444 37445 37446 37447 37448 37449 37450)
Delete add chunks from the local database
$storage->delete_add_chunks(chunknums => [qw/37444 37445 37446/], list => 'goog-malware-shavar');
Arguments
No return value
Delete sub chunks from the local database
$storage->delete_sub_chunks(chunknums => [qw/37444 37445 37446/], list => 'goog-malware-shavar');
Arguments
No return value
Return a list of full hashes
$storage->get_full_hashes(chunknum => 37444, timestamp => time() - 45 * 60 * 60, list => 'goog-malware-shavar');
Arguments
Return value
(HEX, HEX, HEX)
Save information about a successful database update
$storage->updated('time' => time(), wait => 1800, list => 'goog-malware-shavar');
Arguments
No return value
Save information about a failed database update
$storage->update_error('time' => time(), wait => 60, list => 'goog-malware-shavar', errors => 1);
Arguments
No return value
Return information about the last database update
my $info = $storage->last_update(list => 'goog-malware-shavar');
Arguments
Return value
{ time => time(), wait => 1800, errors => 0 }
Add full hashes to the local database
$storage->add_full_hashes(timestamp => time(), full_hashes => [{chunknum => 2154, hash => HEX, list => 'goog-malware-shavar'}]);
Arguments
{ chunknum => INTEGER, hash => HEX, list => 'goog-malware-shavar' }
No return value
Delete full hashes from the local database
$storage->delete_full_hashes(chunknums => [qw/2154 2156 2158/], list => 'goog-malware-shavar');
Arguments
No return value
Save information about failed attempt to retrieve a full hash
$storage->full_hash_error(timestamp => time(), prefix => HEX);
Arguments
No return value
Save information about a successful attempt to retrieve a full hash
$storage->full_hash_ok(timestamp => time(), prefix => HEX);
Arguments
No return value
Save information about a successful attempt to retrieve a full hash
my $info = $storage->get_full_hash_error(prefix => HEX);
Arguments
Return value
Hash reference in the following format if there was an error:
{ timestamp => time(), errors => 3 }
Retrieve the Message Authentication Code (MAC) keys.
my $keys = $storage->get_mac_keys();
No arguments
Return value
{ client_key => '', wrapped_key => '' }
Add the Message Authentication Code (MAC) keys.
$storage->delete_mac_keys(client_key => 'KEY', wrapped_key => 'KEY');
Arguments
No return value
Delete the Message Authentication Code (MAC) keys.
$storage->delete_mac_keys();
No arguments
No return value
Remove all local data
$storage->delete_mac_keys();
Arguments
No return value
These functions are not intended for debugging purpose.
Transform hexadecimal strings to printable ASCII strings. Used mainly for debugging.
print $storage->hex_to_ascii('hex value');
Transform ASCII strings to hexadecimal strings.
print $storage->ascii_to_hex('ascii value');
See Net::Google::SafeBrowsing2 for handling Google Safe Browsing v2.
See Net::Google::SafeBrowsing2::Sqlite or Net::Google::SafeBrowsing2::MySQL for an example of storing and managing the Google Safe Browsing database.
Google Safe Browsing v2 API: <http://code.google.com/apis/safebrowsing/developers_guide_v2.html>
Julien Sobrier, <jsobrier@zscaler.com> or <julien@sobrier.net>
Copyright (C) 2011 by Julien Sobrier
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.
2013-04-08 | perl v5.14.2 |