#!/usr/bin/perl use warnings; use strict; die "Usage: $0 \n" unless @ARGV; my @hosts_granted; my @hosts_denied; open HOSTS,"$ENV{HOME}/.config/chromium/Default/cookies_accept.txt" and do { chop $_ and push @hosts_granted,$_ while ; close HOSTS; }; open HOSTS,"$ENV{HOME}/.config/chromium/Default/cookies_reject.txt" and do { chop $_ and push @hosts_denied,$_ while ; close HOSTS; }; ## Open SQLite open OLD,"sqlite3 $ENV{HOME}/.config/chromium/Default/Cookies .dump|" or die $!; if( $ARGV[0] eq "apply" ) { @hosts_granted=(".") if @hosts_denied; die "No filter list!" unless @hosts_granted or @hosts_denied; unlink "$ENV{HOME}/.config/chromium/Default/Cookies.new"; open NEW,"|sqlite3 $ENV{HOME}/.config/chromium/Default/Cookies.new" or die $!; ## Parsing & filtering my $n=0; my $total=0; while( ) { if( /^INSERT INTO "cookies" VALUES\(([^)]+)\)/ ) { my @cookie=split(",",$1); my $host=$cookie[1]; $host=~s/^'|'$//g; $total++; next unless grep { $host =~ /$_/ } @hosts_granted; next if grep { $host =~ /$_/ } @hosts_denied; $n++; } print NEW $_; } print NEW "\n.quit\n"; close NEW; rename "$ENV{HOME}/.config/chromium/Default/Cookies","$ENV{HOME}/.config/chromium/Default/Cookies.bak"; rename "$ENV{HOME}/.config/chromium/Default/Cookies.new","$ENV{HOME}/.config/chromium/Default/Cookies"; print "$n/$total cookies kept\n" } elsif( $ARGV[0] eq "list" ) { while( ) { if( /^INSERT INTO "cookies" VALUES\(([^)]+)\)/ ) { my @cookie=split(",",$1); my $host=$cookie[1]; $host=~s/^'|'$//g; print "$host\n"; } } } else { warn "Command `$ARGV[0]' unknown. Available commands: list, apply\n"; } close OLD;