108 lines
2.9 KiB
Perl
Executable File
108 lines
2.9 KiB
Perl
Executable File
#!/usr/bin/perl
|
|
|
|
use Mojo::SQLite;
|
|
use Data::Dumper;
|
|
use Mojo::JSON qw(decode_json encode_json);
|
|
require './subroutines.pl';
|
|
use File::Slurp;
|
|
my $msg = shift;
|
|
my $database = shift;
|
|
die unless -e $database;
|
|
my $config_file = read_file('./config.json');
|
|
my $config = decode_json $config_file;
|
|
our $logfile = &subs::home($config->{'logfile'});
|
|
our $log = Mojo::Log->new(path => $logfile);
|
|
my $suds = &subs::suds_grabber();
|
|
my $tally = eval { return decode_json &subs::note_decrypter($suds,read_file(&subs::home('~/.president/pen'))) } || {};
|
|
my $sql = Mojo::SQLite->new('sqlite:' . $database, sqlite_use_immediate_transaction => 0);
|
|
|
|
|
|
if ( scalar @{$tally->{'__statements'}} == 0 ) {
|
|
|
|
my $statements = &subs::db_query('select * from mailbox order by server_time desc limit 10')->hashes;
|
|
|
|
|
|
foreach my $st ( @{$statements} ) {
|
|
my $old_message = &subs::note_decrypter($gb::suds, $st->{'body'});
|
|
$tally = &statement_preparer($old_message,$tally);
|
|
push @{$tally->{'__statements'}}, $old_message;
|
|
}
|
|
}
|
|
|
|
$tally = &statement_preparer($msg, $tally);
|
|
|
|
sub statement_preparer() {
|
|
my $msg = shift;
|
|
my $tally = shift;
|
|
my @msg = split ' ', $msg;
|
|
my @lexicon = @{$tally->{'__lexicon'}};
|
|
for (my $w = 0; $w <= scalar @msg; $w++) {
|
|
my $ms = $msg[$w];
|
|
$tally = &word_reader($ms, $tally);
|
|
|
|
for (my $n = 0; $n <= scalar @msg; $n++ ) {
|
|
my $word;
|
|
foreach my $wor ( $n .. scalar @msg ) {
|
|
$word .= '_' . $msg[$wor];
|
|
unless ( grep { $_ eq $word } @lexicon ) {
|
|
push @lexicon, $word;
|
|
&word_reader($word, $tally);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@{$tally->{'__lexicon'}} = @lexicon;
|
|
return $tally;
|
|
}
|
|
|
|
sub word_reader() {
|
|
my $m = shift;
|
|
my $tally = shift;
|
|
$m =~ s/^_//gi;
|
|
$m =~ s/_$//gi;
|
|
# $log->info('Word: ' . $m);
|
|
$m = &subs::unformat_name($m);
|
|
my $ms = &subs::settings_grabber({ app => $m, benign => 1 });
|
|
if (scalar keys %{$ms} > 0 ) { #$log->info('settings for ' . $m . ' ' . scalar keys %{$ms} );
|
|
}
|
|
$tally->{$ms->{'app'}}->{'setting'} = $ms if scalar keys %{$ms} > 2;
|
|
foreach my $mk ( keys %{$ms} ) {
|
|
if ($mk =~ /^sc_/gi) {
|
|
my $mak = $mk;
|
|
$mak =~ s/^sc_//gi;
|
|
$tally->{$ms->{'app'}}->{'sc'}->{$mak} = decode_json $ms->{$mk};
|
|
}
|
|
}
|
|
foreach my $mo ( qw/model option option_category subcategory/ ) {
|
|
# my $mos = &subs::db_select($mo, undef, { name => $mo })->hashes;
|
|
# $tally->{$ms->{'app'}}->{$mo} = $mos if scalar @{$mos} > 0;
|
|
}
|
|
return $tally;
|
|
}
|
|
|
|
push @{$tally->{'__statements'}}, $data->{'msg'};
|
|
#$log->info(Dumper $tally->{'__lexicon'});
|
|
|
|
my $jtally = encode_json $tally;
|
|
$log->info($jtally);
|
|
write_file(&subs::home('~/.president/pen'),&subs::note_encrypter($suds,$jtally));
|
|
|
|
|
|
my $return_msg = join ' ', grep { $_ !~ /^__/gi } keys %{$tally};
|
|
my $msg_data = {
|
|
uuid => &subs::random_string_creator(25),
|
|
timestamp => &subs::rightNow(),
|
|
server_time => &subs::rightNow(),
|
|
body => $return_msg,
|
|
manager_file => &subs::manager_file_maker('pen'),
|
|
status => 'public',
|
|
contact => 'pen'
|
|
};
|
|
&subs::db_insert('mailbox', $msg_data);
|
|
my $returner = encode_json $msg_data;
|
|
print $returner;
|
|
|
|
|
|
|
|
|