|
|
@ -8,6 +8,7 @@ use Hush::Util qw/barf/; |
|
|
|
use File::Slurp; |
|
|
|
use Hush::Logger qw/debug/; |
|
|
|
use JSON; |
|
|
|
use Data::Dumper; |
|
|
|
|
|
|
|
# as per z_sendmany rpc docs |
|
|
|
my $MAX_RECIPIENTS = 54; |
|
|
@ -16,6 +17,44 @@ my $HUSHLIST_CONFIG_DIR = $ENV{HUSH_CONFIG_DIR} || catdir($HUSH_CONFIG_DIR, 'lis |
|
|
|
our $VERSION = 20171031; |
|
|
|
my $rpc = Hush::RPC->new; |
|
|
|
|
|
|
|
sub contact { |
|
|
|
my $cmd = shift || ''; |
|
|
|
my $subcommands = { |
|
|
|
"add" => sub { |
|
|
|
# add a hush contact, yay |
|
|
|
my ($cmd,$name,$zaddr) = @ARGV; |
|
|
|
#barf Dumper [ $cmd, $name, $zaddr ]; |
|
|
|
#TODO: give user ability to choose |
|
|
|
my $chain = "hush"; |
|
|
|
my $contacts_file = catdir($HUSHLIST_CONFIG_DIR,"$chain-contacts.txt"); |
|
|
|
|
|
|
|
if (-e $contacts_file) { |
|
|
|
my %contacts = read_file( $contacts_file ) =~ /^(z[a-z0-9]+) (.*)$/mgi ; |
|
|
|
# TODO: check if zaddr OR nickname exists |
|
|
|
if ($contacts{$zaddr}) { |
|
|
|
} else { |
|
|
|
# TODO: see if this contact exists already in this chain |
|
|
|
open my $fh, ">>", $contacts_file or barf "Could not write file $contacts_file ! : $!"; |
|
|
|
#TODO: validation? |
|
|
|
print $fh "$zaddr $name\n"; |
|
|
|
close $fh; |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
"rm" => sub { |
|
|
|
my ($cmd,$name,$zaddr) = @ARGV; |
|
|
|
barf Dumper [ $cmd, $name, $zaddr ]; |
|
|
|
}, |
|
|
|
}; |
|
|
|
my $subcmd = $subcommands->{$cmd}; |
|
|
|
if ($subcmd) { |
|
|
|
$subcmd->(); |
|
|
|
} else { |
|
|
|
barf "Invalid hushlist contact subcommand!"; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
sub _sanity_checks { |
|
|
|
if (!-e $HUSH_CONFIG_DIR ) { |
|
|
|
barf "Hush config directory $HUSH_CONFIG_DIR not found! You can set the HUSH_CONFIG_DIR environment variable if it is not ~/.hush"; |
|
|
|