Net::G...Storage(3pm)
π Net::Google::SafeBrowsing2::Storage π
(yes bestie, this is that Net::G...Storage(3pm) page β manual name and all)
πΈ NAME πΈ
Net::Google::SafeBrowsing2::Storage β the base class for storing the Google Safe Browsing v2 database. It's giving foundation, it's giving blueprint. π
π¦ SYNOPSIS π¦
package Net::Google::SafeBrowsing2::Sqlite;
use base 'Net::Google::SafeBrowsing2::Storage';
β¨ DESCRIPTION β¨
Okay so real talk: this is the base class for building a storage mechanism for the Google Safe Browsing v2 database. If you want to see what an actual implementation looks like, go peek at Net::Google::SafeBrowsing2::Sqlite β it's the blueprint in action. π«Ά
Here's the thing though: this module cannot be used on its own, because it does not actually store anything. Nothing. Zero. Nada. π Every single method should be redefined. So check the code to see which arguments are used, and what should be returned β that's the assignment, bestie.
π CONSTRUCTOR π
new()
Create a Net::Google::SafeBrowsing2::Storage object. Look at her go β¨
my $storage => Net::Google::SafeBrowsing2::Storage->new();
π PUBLIC FUNCTIONS π
add_chunks()
Add chunk information to the local database. Chunks are being added, the database is being fed, the vibes are immaculate. π
$storage->add_chunks(type => 'a', chunknum => 2154, chunks => [{host => HEX, prefix => ''}], list => 'goog-malware-shavar');
Does not return anything. Nope. Nothing. Not a single thing. π«
Arguments
typeβ Required. Type of chunk:'a'(add chunk) or's'(sub chunk). Pick your fighter.chunknumβ Required. Chunk number.chunksβ Required. Array of chunks.
For add chunks, each element of the array is a hash reference in the following format:
{
host => HEX,
prefix => HEX
}
For sub chunks, each element of the array is a hash reference in the following format:
{
host => HEX,
prefix => HEX,
add_chunknum => INTEGER
}
listβ Required. Google Safe Browsing list name.
get_add_chunks()
Returns a list of chunks for a given host key for all lists. All of them. Every single list, no cap. π
my @chunks = $storage->get_add_chunks(hostkey => HEX);
Arguments
hostkey.β Required. Host key. (yes there's a lil period in there, we don't question it, we just respect it) π
Return value
Array of add chunks in the same format as described above:
(
{
chunknum => 25121,
hostkey => hex('12345678'),
prefix => '',
list => 'goog-malware-shavar'
},
{
chunknum => '25121',
hostkey => hex('12345678'),
prefix => hex('2fc96b9f'),
list => 'goog-malware-shavar'
},
);
get_sub_chunks()
Returns a list of sub chunks for a given host key for all lists. Sub chunk supremacy, honestly. π¦
my @chunks = $storage->get_sub_chunks(hostkey => HEX);
Arguments
hostkeyβ Required. Host key.
Return value
Array of add chunks in the same format as described above:
(
{
chunknum => 37441,
prefix => '',
addchunknum => 23911,
list => 'goog-malware-shavar'
},
{
chunknum => 37441,
prefix => '',
addchunknum => 22107,
list => 'goog-malware-shavar'
},
);
get_add_chunks_nums()
Returns a list of unique add chunk numbers for a specific list. Unique! One of each! β¨
IMPORTANT: this list should be sorted in ascendant order. Do not play with me on this one, bestie. π
my @ids = $storage->get_add_chunks_nums(list => 'goog-malware-shavar');
Arguments
listβ Required. Google Safe Browsing list name
Return value
Array of integers sorted in ascendant order:
qw(25121 25122 25123 25124 25125 25126)
get_sub_chunks_nums()
Returns a list of unique sub chunk numbers for a specific list. Same energy, different chunk type. π
IMPORTANT: this list should be sorted in ascendant order. Again. Still. Forever. π
my @ids = $storage->get_sub_chunks_nums(list => 'goog-malware-shavar');
Arguments
listβ Required. Google Safe Browsing list name
Return value
Array of integers sorted in ascendant order:
qw(37441 37442 37443 37444 37445 37446 37447 37448 37449 37450)
delete_add_chunks()
Delete add chunks from the local database. Bye bye, we hardly knew ye ππ
$storage->delete_add_chunks(chunknums => [qw/37444 37445 37446/], list => 'goog-malware-shavar');
Arguments
chunknumsβ Required. Array of chunk numberslistβ Required. Google Safe Browsing list name
No return value. It just does the thing and leaves. Iconic. π
delete_sub_chunks()
Delete sub chunks from the local database. Ghosting them, respectfully. π«₯
$storage->delete_sub_chunks(chunknums => [qw/37444 37445 37446/], list => 'goog-malware-shavar');
Arguments
chunknumsβ Required. Array of chunk numberslistβ Required. Google Safe Browsing list name
No return value.
get_full_hashes()
Return a list of full hashes. The full ones. Not the prefixes. The whole entire thing. π₯
$storage->get_full_hashes(chunknum => 37444, timestamp => time() - 45 * 60 * 60, list => 'goog-malware-shavar');
Arguments
chunknumβ Required. Add chunk numbertimestampβ Required. Request hashes retrieved after this timestamp value.listβ Required. Google Safe Browsing list name
Return value
Array of full hashes:
(HEX, HEX, HEX)
updated()
Save information about a successful database update. We love a success story. π
$storage->updated('time' => time(), wait => 1800, list => 'goog-malware-shavar');
Arguments
timeβ Required. Time of the update.waitβ Required. Number of seconds to wait before doing the next update.listβ Required. Google Safe Browsing list name.
No return value.
update_error()
Save information about a failed database update. It happens. We log it and we move on. π
$storage->update_error('time' => time(), wait => 60, list => 'goog-malware-shavar', errors => 1);
Arguments
timeβ Required. Time of the update.waitβ Required. Number of seconds to wait before doing the next update.listβ Required. Google Safe Browsing list name.errorsβ Required. Number of errors.
No return value.
last_update()
Return information about the last database update. Receipts, basically. π§Ύ
my $info = $storage->last_update(list => 'goog-malware-shavar');
Arguments
listβ Required. Google Safe Browsing list name.
Return value
Hash reference
{
time => time(),
wait => 1800,
errors => 0
}
add_full_hashes()
Add full hashes to the local database. Feed the machine. π½οΈ
$storage->add_full_hashes(timestamp => time(), full_hashes => [{chunknum => 2154, hash => HEX, list => 'goog-malware-shavar'}]);
Arguments
timestampβ Required. Time when the full hash was retrieved.full_hashesβ Required. Array of full hashes. Each element is an hash reference in the following format:
{
chunknum => INTEGER,
hash => HEX,
list => 'goog-malware-shavar'
}
No return value.
delete_full_hashes()
Delete full hashes from the local database. Cleanup era. π§Ήβ¨
$storage->delete_full_hashes(chunknums => [qw/2154 2156 2158/], list => 'goog-malware-shavar');
Arguments
chunknumsβ Required. Array of chunk numbers.listβ Required. Google Safe Browsing list name.
No return value.
full_hash_error()
Save information about failed attempt to retrieve a full hash. It flopped. We noted it. π
$storage->full_hash_error(timestamp => time(), prefix => HEX);
Arguments
timestampβ Required. Time when the Google returned an error.prefixβ Required. Host prefix.
No return value.
full_hash_ok()
Save information about a successful attempt to retrieve a full hash. Slay. π
$storage->full_hash_ok(timestamp => time(), prefix => HEX);
Arguments
timestampβ Required. Time when the Google returned an error.prefixβ Required. Host prefix.
No return value.
get_full_hash_error()
Save information about a successful attempt to retrieve a full hash.
my $info = $storage->get_full_hash_error(prefix => HEX);
Arguments
prefixβ Required. Host prefix.
Return value
undef if there was no error
Hash reference in the following format if there was an error:
{
timestamp => time(),
errors => 3
}
get_mac_keys()
Retrieve the Message Authentication Code (MAC) keys. Gimme the keys πβ¨
my $keys = $storage->get_mac_keys();
No arguments
Return value
Hash reference in the following format:
{
client_key => '',
wrapped_key => ''
}
delete_add_keys()
Add the Message Authentication Code (MAC) keys.
$storage->delete_mac_keys(client_key => 'KEY', wrapped_key => 'KEY');
Arguments
client_keyβ Required. Client key.wrapped_keyβ Required. Wrapped key.
No return value.
delete_mac_keys()
Delete the Message Authentication Code (MAC) keys. Poof. Gone. π«§
$storage->delete_mac_keys();
No arguments
No return value.
reset()
Remove all local data. Everything. All of it. Full factory reset energy. π
$storage->delete_mac_keys();
Arguments
listβ Required. Google Safe Browsing list name.
No return value.
π§ PRIVATE FUNCTIONS π§
These functions are not intended for debugging purpose.
hex_to_ascii()
Transform hexadecimal strings to printable ASCII strings. Used mainly for debugging.
print $storage->hex_to_ascii('hex value');
ascii_to_hex()
Transform ASCII strings to hexadecimal strings.
print $storage->ascii_to_hex('ascii value');
π CHANGELOG π
0.4Addresetmethod to empty local database.0.3Return the hostkey as part of the add chunks (get_add_chunks).0.2Add functions to store and retrieve Message Authentication Code (MAC) keys.
π SEE ALSO π
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>
π«Ά AUTHOR π«Ά
Julien Sobrier, <jsobrier@zscaler.com> or <julien@sobrier.net>
π COPYRIGHT AND LICENSE π
okay bestie, the legal tea β β and it's actually good news for once, no cap:
- 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, and that means either Perl version 5.8.8 or, if you want, any later version of Perl 5 you happen to have lying around. Your call, main character. π
fr fr, that's it. No weird clauses, no "you must mail us a postcard" nonsense. Just: share it, remix it, keep the same energy. π«Ά
and that's a wrap on the whole page, babes π This little tour came to you via perl v5.32.0, dated 2021-01-07, filed under Net::G...Storage(3pm) β go forth and store things, iconically. β¨π¦π
π¦ where this page comes from
- ubuntu jammy: libnet-google-safebrowsing2-perl 1.07-6.1 Β· Perl
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms