From bf34a550a54d0a358e7dfbd007a5f4902b18d49c Mon Sep 17 00:00:00 2001 From: Ryan Voots Date: Wed, 13 Apr 2016 12:55:24 -0400 Subject: [PATCH] Remove un-used languages from eval. Reduces memory footprint by 80%. --- lib/Bot/BB3/.PluginManager.pm.swp | Bin 16384 -> 0 bytes lib/eval.pl | 284 +++++++++++++++--------------- plugins/.badfactstemp.pm.swp | Bin 12288 -> 0 bytes plugins/eval.pm | 4 +- 4 files changed, 145 insertions(+), 143 deletions(-) delete mode 100644 lib/Bot/BB3/.PluginManager.pm.swp delete mode 100644 plugins/.badfactstemp.pm.swp diff --git a/lib/Bot/BB3/.PluginManager.pm.swp b/lib/Bot/BB3/.PluginManager.pm.swp deleted file mode 100644 index dc10d54cbf9d645f863ed556ccafadcf6e64b6d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 OD!`Em4*h+6rTh;hqyuyS diff --git a/lib/eval.pl b/lib/eval.pl index 35b1e41..1fddc73 100755 --- a/lib/eval.pl +++ b/lib/eval.pl @@ -20,22 +20,22 @@ use Encode; use Digest::MD5; use Digest::SHA; use DateTime; -use DateTimeX::Easy; +# use DateTimeX::Easy; use Date::Parse; use Time::Piece; use Time::HiRes; use URI; use URI::Encode; -use Rand::MersenneTwister; -use Mojo::DOM; -use Mojo::DOM::HTML; -use Mojo::DOM::CSS; -use Mojo::Collection; -use YAPE::Regex::Explain; +# use Rand::MersenneTwister; +#use Mojo::DOM; +#use Mojo::DOM::HTML; +#use Mojo::DOM::CSS; +#use Mojo::Collection; +#use YAPE::Regex::Explain; require Function::Parameters; require experimental; -require "if.pm"; +#require "if.pm"; #use JSON; #use JSON::XS; require Cpanel::JSON::XS; @@ -45,7 +45,7 @@ require JSON; require Moose; require MooseX::Declare; -eval "use MooseX::Declare; class LoadAllMooseXDeclare { has dongs => ( is => ro, isa => 'Int' ); };"; +# eval "use MooseX::Declare; class LoadAllMooseXDeclare { has dongs => ( is => ro, isa => 'Int' ); };"; require "utf8_heavy.pl"; use arybase; use Errno; @@ -108,10 +108,10 @@ eval {"\N{SPARKLE}"}; # force loading of some of the charnames stuff # Required for perl_deparse use B::Deparse; -# Javascript Libs -BEGIN{ eval "use JavaScript::V8; require JSON::XS; JavaScript::V8::Context->new()->eval('1')"; } -my $JSENV_CODE = do { local $/; open my $fh, "deps/env.js"; <$fh> }; -require 'bytes_heavy.pl'; +## Javascript Libs +#BEGIN{ eval "use JavaScript::V8; require JSON::XS; JavaScript::V8::Context->new()->eval('1')"; } +#my $JSENV_CODE = do { local $/; open my $fh, "deps/env.js"; <$fh> }; +#require 'bytes_heavy.pl'; use Tie::Hash::NamedCapture; @@ -121,34 +121,34 @@ use Tie::Hash::NamedCapture; } binmode STDOUT, ":utf8"; # Enable utf8 output. -BEGIN{ eval "use PHP::Interpreter;"; } +#BEGIN{ eval "use PHP::Interpreter;"; } # Evil Ruby stuff -BEGIN{ eval "use Inline::Ruby qw/rb_eval/;"; } -BEGIN { $SIG{SEGV} = sub { die "Segmentation Fault\n"; } } #Attempt to override the handler Ruby installs. +#BEGIN{ eval "use Inline::Ruby qw/rb_eval/;"; } +#BEGIN { $SIG{SEGV} = sub { die "Segmentation Fault\n"; } } #Attempt to override the handler Ruby installs. -# Evil K20 stuff -BEGIN { - local $@; - eval "use Language::K20;"; - unless( $@ ) { - Language::K20::k20eval( "2+2\n" ); # This eval loads the dynamic components before the chroot. - # Note that k20eval always tries to output to stdout so we - # must end the command with a \n to prevent this output. - } -} - -BEGIN { chdir "var/"; $0="../$0"; } # CHDIR to stop inline from creating stupid _Inline directories everywhere -# Inline::Lua doesn't seem to provide an eval function. SIGH. -BEGIN { eval 'use Inline Lua => "function lua_eval(str) return loadstring(str) end";'; } -BEGIN { chdir ".."; $0=~s/^\.\.\/// } # Assume our earlier chdir succeded. Yay! +# # Evil K20 stuff +# BEGIN { +# local $@; +# eval "use Language::K20;"; +# unless( $@ ) { +# Language::K20::k20eval( "2+2\n" ); # This eval loads the dynamic components before the chroot. +# # Note that k20eval always tries to output to stdout so we +# # must end the command with a \n to prevent this output. +# } +# } +# +# BEGIN { chdir "var/"; $0="../$0"; } # CHDIR to stop inline from creating stupid _Inline directories everywhere +# # Inline::Lua doesn't seem to provide an eval function. SIGH. +# BEGIN { eval 'use Inline Lua => "function lua_eval(str) return loadstring(str) end";'; } +# BEGIN { chdir ".."; $0=~s/^\.\.\/// } # Assume our earlier chdir succeded. Yay! -# Evil python stuff -BEGIN { eval "use Inline::Python qw/py_eval/;"; } +# # Evil python stuff +# BEGIN { eval "use Inline::Python qw/py_eval/;"; } -# Evil J stuff -BEGIN { eval "use Jplugin;"; } +# # Evil J stuff +# BEGIN { eval "use Jplugin;"; } use Carp::Heavy; use Storable qw/nfreeze/; nfreeze([]); #Preload Nfreeze since it's loaded on demand @@ -203,7 +203,7 @@ use Storable qw/nfreeze/; nfreeze([]); #Preload Nfreeze since it's loaded on dem my $kilo = 1024; my $meg = $kilo * $kilo; - my $limit = 1024 * $meg; + my $limit = 200 * $meg; ( setrlimit(RLIMIT_VMEM, 1.5*$limit, 1.5*$limit) @@ -248,30 +248,30 @@ use Storable qw/nfreeze/; nfreeze([]); #Preload Nfreeze since it's loaded on dem if( $type eq 'perl' or $type eq 'pl' ) { perl_code($code); } - elsif( $type eq 'javascript' ) { - javascript_code($code); - } - elsif( $type eq 'php' ) { - php_code($code); - } elsif( $type eq 'deparse' ) { deparse_perl_code($code); } - elsif( $type eq 'k20' ) { - k20_code($code); - } - elsif( $type eq 'rb' or $type eq 'ruby' ) { - ruby_code($code); - } - elsif( $type eq 'py' or $type eq 'python' ) { - python_code($code); - } - elsif( $type eq 'lua' ) { - lua_code($code); - } - elsif( $type eq 'j' ) { - j_code($code); - } +# elsif( $type eq 'javascript' ) { +# javascript_code($code); +# } +# elsif( $type eq 'php' ) { +# php_code($code); +# } +# elsif( $type eq 'k20' ) { +# k20_code($code); +# } +# elsif( $type eq 'rb' or $type eq 'ruby' ) { +# ruby_code($code); +# } +# elsif( $type eq 'py' or $type eq 'python' ) { +# python_code($code); +# } +# elsif( $type eq 'lua' ) { +# lua_code($code); +# } +# elsif( $type eq 'j' ) { +# j_code($code); +# } # *STDOUT = $oldout; close($stdh); @@ -315,88 +315,88 @@ use Storable qw/nfreeze/; nfreeze([]); #Preload Nfreeze since it's loaded on dem - sub javascript_code { - my( $code ) = @_; - local $@; - - my $js = JavaScript::V8::Context->new; - - # Set up the Environment for ENVJS - $js->bind("print", sub { print @_ } ); - $js->bind("write", sub { print @_ } ); - -# for( qw/log debug info warn error/ ) { -# $js->eval("Envjs.$_=function(x){}"); -# } - -# $js->eval($JSENV_CODE) or die $@; - - $code =~ s/(["\\])/\\$1/g; - my $rcode = qq{write(eval("$code"))}; - - - - my $out = eval { $js->eval($rcode) }; - - if( $@ ) { print "ERROR: $@"; } - else { print encode_json $out } - } - - sub ruby_code { - my( $code ) = @_; - local $@; - - print rb_eval( $code ); - } - - sub php_code { - my( $code ) = @_; - local $@; - - #warn "PHP - [$code]"; - - my $php = PHP::Interpreter->new; - - $php->set_output_handler(\ my $output ); - - $php->eval("$code;"); - - print $php->get_output; - - #warn "ENDING"; - - if( $@ ) { print "ERROR: $@"; } - } - - sub k20_code { - my( $code ) = @_; - - $code =~ s/\r?\n//g; - - - Language::K20::k20eval( '."\\\\r ' . int(rand(2**31)) . '";' . "\n"); # set random seed - - Language::K20::k20eval( $code ); - } - - sub python_code { - my( $code ) = @_; - - py_eval( $code, 2 ); - } - - sub lua_code { - my( $code ) = @_; - - #print lua_eval( $code )->(); - - my $ret = lua_eval( $code ); - - print ref $ret ? $ret->() : $ret; - } - - sub j_code { - my( $code ) = @_; - - Jplugin::jplugin( $code ); - } +# sub javascript_code { +# my( $code ) = @_; +# local $@; +# +# my $js = JavaScript::V8::Context->new; +# +# # Set up the Environment for ENVJS +# $js->bind("print", sub { print @_ } ); +# $js->bind("write", sub { print @_ } ); +# +# # for( qw/log debug info warn error/ ) { +# # $js->eval("Envjs.$_=function(x){}"); +# # } +# +# # $js->eval($JSENV_CODE) or die $@; +# +# $code =~ s/(["\\])/\\$1/g; +# my $rcode = qq{write(eval("$code"))}; +# +# +# +# my $out = eval { $js->eval($rcode) }; +# +# if( $@ ) { print "ERROR: $@"; } +# else { print encode_json $out } +# } +# +# sub ruby_code { +# my( $code ) = @_; +# local $@; +# +# print rb_eval( $code ); +# } +# +# sub php_code { +# my( $code ) = @_; +# local $@; +# +# #warn "PHP - [$code]"; +# +# my $php = PHP::Interpreter->new; +# +# $php->set_output_handler(\ my $output ); +# +# $php->eval("$code;"); +# +# print $php->get_output; +# +# #warn "ENDING"; +# +# if( $@ ) { print "ERROR: $@"; } +# } +# +# sub k20_code { +# my( $code ) = @_; +# +# $code =~ s/\r?\n//g; +# +# +# Language::K20::k20eval( '."\\\\r ' . int(rand(2**31)) . '";' . "\n"); # set random seed +# +# Language::K20::k20eval( $code ); +# } +# +# sub python_code { +# my( $code ) = @_; +# +# py_eval( $code, 2 ); +# } +# +# sub lua_code { +# my( $code ) = @_; +# +# #print lua_eval( $code )->(); +# +# my $ret = lua_eval( $code ); +# +# print ref $ret ? $ret->() : $ret; +# } +# +# sub j_code { +# my( $code ) = @_; +# +# Jplugin::jplugin( $code ); +# } diff --git a/plugins/.badfactstemp.pm.swp b/plugins/.badfactstemp.pm.swp deleted file mode 100644 index b0da10102e09998ce30e37c57e839117755611e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeHNO>7%Q6rNTTNK1bJi6fdihS*KwO;g7585>{czH9*`<#r7ycX^XAQa z-@Nx`tZaSk=;H_Z-qHgM*AB)`e{lNf#`*^K{_~85tHPt^f4Y>@w*6rDo_%{uj@R_B zD}IU;T6JG5E0CdEk0NaaZq#x-Wz|KaDQvB@YzL*FeO(=GnA7zPXjh5^HXVc=$EKnEMx3ow3T>OdpCZ@B87 zzM7k1z%XDKFbo(53GHFkl!k3>XFs12-W90zddS-NM-UO)wt+|IdE^f4iNr zuYiw%3&6X;S>R>hC7=r|08aqpz`ejW;E!#L{SN#F{0RI2Tm-%WJ_4G61ZIF~;PO_+ zz5_l1&H}!^O4Fg<9mI4uyO{EYUbebLok?3yn=b^a(Vy$J>~M@_`@!|q#t%2!G~SB3C7mgfOM7Q9Ue*@g+2Fev_M_Tga^RaSFg5q^)iwL@DaE=!zpp0=` z%Odm=jZQPZ!wzb1uO_XNJU>0b2HLBbS81Umb%jZjTrPpL4$mjkjaE`tNnAJ$2nTI4 z9Xebe>k_MrXNdbpE1mTPS>uy@9CBGls;Sl%+Fqc}AzII&K8aA0jPx3^Q4?WHkpR{q^>3Y6w*n-SdSNS45FR;@-=#d zZ^T$i5~;_uaZl#`B%iKLFcsB#7^O;1u;`S3bmSx$0Q1ln<}flScrB zWkh6-Q?SrmPYf;a17XQBb%|&2CnPU2&kI+18MHHMX{UuPD(X^@e%)u;0?q3NttAKp1#n0koR zRjPBtMFc2bNkOGFT+CY;cL|dSEF{OZ^<=~5PfQ;#?V2hUrpi?{T~)h!>UR~3Q+bPb zyS=bYtRSB#vYh+9Jf*CvXK||)_9fIBPilEgDiKT9dU$6UNZBEUOF__| z1|&-)XMG^L07K&aYATmK@mx8VE0%J#TE3I9T8q;wTTIeJS4?s`o?J?{Cp^UyL;Lh_ z2mYlJ>kd+{)fe4yWKu}-I1dLAZmFtXK$od8v9yBy5T&&1N^COSP$qX2XBi3??}!Uc zH%B?Xr@9Ja_ChxZeJyR>jlAp$g;QxqN3z=%cIZ>$6sNKrp!o0Q4mr!{4_(AyVr^1W zvwTYGMt_?1_Mj{Y2lSKR(sqY^M0o63%}(GLV?kp=0X_hAnhav?Txg1K9-o3tvEZ{r~^~ diff --git a/plugins/eval.pm b/plugins/eval.pm index 98d8817..09b778b 100644 --- a/plugins/eval.pm +++ b/plugins/eval.pm @@ -68,7 +68,9 @@ sub command { my $result = $filter->get( [ $output ] ); my $resultstr = $result->[0]->[0]; - $dbh->do("INSERT INTO evals (input, output) VALUES (?, ?)", {}, $code, $resultstr); + if ($type eq 'perl') { + $dbh->do("INSERT INTO evals (input, output) VALUES (?, ?)", {}, $code, $resultstr); + } if (!$said->{captured} && $resultstr !~ /\S/) { $resultstr = "No output.";