79 lines
1.9 KiB
Perl
Executable File
79 lines
1.9 KiB
Perl
Executable File
#!/usr/bin/perl
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
package Websocket;
|
|
|
|
use List::Util qw(shuffle);
|
|
use Mojo::Util qw/html_unescape term_escape/;
|
|
use Time::Duration;
|
|
use Date::Parse;
|
|
use Time::Piece;
|
|
use Crypt::Simple;
|
|
use File::Slurp;
|
|
use Mojo::JSON qw(decode_json encode_json);
|
|
use Data::Dumper;
|
|
|
|
require "./gb.pl";
|
|
require "./subroutines.pl";
|
|
my $config_file = read_file('./config.json');
|
|
my $config = decode_json $config_file;
|
|
our $logfile = &subs::home($config->{'logfile'});
|
|
`touch $logfile` if not -e $logfile;
|
|
our $log = Mojo::Log->new(path => $logfile);
|
|
|
|
my $device = &subs::device_setter();
|
|
my $home_file = &subs::home('~/') . '.president/ws_watcher';
|
|
`touch $home_file` unless -e $home_file;
|
|
sub send() {
|
|
my ($app,$msg) = @_;
|
|
my ($db,$database,$sql) = &subs::database_grabber();
|
|
my $returner;
|
|
if ($msg->{'console'}) {
|
|
if (!$msg->{'whoami'}) {
|
|
$msg->{'whoami'} = `whoami`;
|
|
chomp $msg->{'whoami'};
|
|
}
|
|
if (!$msg->{'hostname'}) {
|
|
$msg->{'hostname'} = `hostname`;
|
|
chomp $msg->{'hostname'};
|
|
}
|
|
}
|
|
my $original_msg = $msg;
|
|
if ( eval { encode_json $msg } ) {
|
|
my $uuid = &subs::random_string_creator(10);
|
|
|
|
|
|
|
|
|
|
# $msg->{'uuid'} = $uuid;
|
|
$msg->{'formatted_name'} = &subs::format_name($msg->{'app'});
|
|
my $m = encode_json $msg;
|
|
|
|
my $server_time = &subs::rightNow();
|
|
|
|
if (eval { $sql->db } && $sql->dsn !~ /:$/) {
|
|
|
|
my $lid = undef;
|
|
until ($lid) {
|
|
my $success = eval { return &subs::db_insert('websocket_messages', {
|
|
origin => $original_msg->{'origin'},
|
|
server_time => $server_time,
|
|
timestamp => $original_msg->{'timestamp'} || $server_time,
|
|
message => $m,
|
|
destination => $original_msg->{'destination'} || $original_msg->{'browser_tab_id'},
|
|
app => $app,
|
|
environment => 'manager',
|
|
uuid => $uuid,
|
|
patience => $original_msg->{'patience'}
|
|
}) };
|
|
$lid = $success->last_insert_id;
|
|
}
|
|
# my $home = &subs::home('~/');
|
|
# `echo "$server_time" > $home_file`;
|
|
}
|
|
}
|
|
return $returner;
|
|
}
|
|
1; |