Net-FullAuto
view release on metacpan or search on metacpan
lib/Net/FullAuto/ISets/Local/FullAutoAPI_is.pm view on Meta::CPAN
# "/featureName:IIS-HttpCompressionStatic ".
# "/featureName:IIS-HttpCompressionDynamic /featureName:IIS-WebDAV ".
# "/featureName:IIS-WebServerManagementTools ".
# "/featureName:IIS-ManagementScriptingTools ".
# "/featureName:IIS-ManagementService ".
# "/featureName:IIS-IIS6ManagementCompatibility ".
# "/featureName:IIS-Metabase /featureName:IIS-WMICompatibility ".
# "/featureName:IIS-LegacyScripts /featureName:NetFx4Extended-ASPNET45 ".
# "/featureName:IIS-ApplicationInit /featureName:IIS-WebSockets ".
# "/featureName:IIS-CertProvider /featureName:IIS-ManagementConsole ".
# "/featureName:IIS-LegacySnapIn",'__display__');
#($stdout,$stderr)=$handle->cmd("DISM.EXE /online /enable-feature ".
# "/featureName:IIS-WebServerRole /featureName:IIS-WebServer ".
# "/featureName:IIS-CommonHttpFeatures /featureName:IIS-StaticContent ".
# "/featureName:IIS-DefaultDocument /featureName:IIS-DirectoryBrowsing ".
# "/featureName:IIS-HttpErrors /featureName:IIS-HealthAndDiagnostics ".
# "/featureName:IIS-HttpLogging /featureName:IIS-Performance ".
# "/featureName:IIS-HttpCompressionStatic /featureName:IIS-Security ".
# "/featureName:IIS-RequestFiltering /featureName:IIS-CGI ".
# "/featureName:IIS-WebServerManagementTools ".
# "/featureName:IIS-ManagementConsole",'__display__');
#my $appcmd="$ENV{WINDIR}/SYSTEM32/inetsrv";
#($appcmd,$stderr)=$handle->cmd("cygpath -u $appcmd");
#my $cyglocb=$handle->cmd("cygpath -w /");
#my $cyglocw=$handle->cmd("cygpath -w ~");
#my $cyglocwf="$cyglocw\\FullAutoAPI";
#$cyglocw=~s/\\/\\\\/g;
#$cyglocwf=~s/\\/\\\\/g;
#($stdout,$stderr)=$handle->cwd($appcmd);
#($stdout,$stderr)=$handle->cmd("pwd",'__display__');
#my $sleep=0;
#while (1==1) {
# my $ls_output=$handle->cmd("ls -1");
# last if -1<index $ls_output,'appcmd.exe';
# sleep 2;
# last if $sleep++>300;
#}
#sleep 5;
#($stdout,$stderr)=$handle->cmd("./appcmd add site /name:FullAutoAPI ".
# "/id:2 /physicalPath:$cyglocwf\\root /bindings:http/*:4000",
# '__display__');
#sleep 2;
#($stdout,$stderr)=$handle->cmd("./appcmd set config -section:".
# "system.webServer/fastCgi /+[\"fullpath=\'$cyglocb\\script\\".
# "CGI_script.bat\',arguments=\'$cyglocwf\\script\\".
# "fullautoapi_fastcgi.pl -e\',maxInstances=\'4\',".
# "idleTimeout=\'300\',activityTimeout=\'30\',requestTimeout='\90\',".
# "instanceMaxRequests=\'1000\',protocol=\'NamedPipe\',".
# "flushNamedPipe=\'False\']\" /commit:apphost",'__display__');
#sleep 2;
#($stdout,$stderr)=$handle->cmd("./appcmd set config -section:".
# "system.webServer/handlers /+\"[name=\'FullAutoAPI\',".
# "path=\'*\',verb=\'GET,HEAD,POST\',modules=".
# "\'FastCgiModule\',scriptProcessor=\'$cyglocb\\script\\".
# "CGI_Script.bat|$cyglocwf\\script\\fullautoapi_fastcgi.pl -e\',".
# "resourceType=\'Unspecified\',requireAccess=\'Script\']\" ".
# "/commit:apphost",'__display__');
#($stdout,$stderr)=$handle->cwd("FullAutoAPI/script");
#($stdout,$stderr)=$handle->cmd("touch CGI_Script.bat");
#
# echo-ing/streaming files over ssh can be tricky. Use echo -e
# and replace these characters with thier HEX
# equivalents (use an external editor for quick
# search and replace - and paste back results.
# use copy/paste or cat file and copy/paste results.):
#
# ! - \\x21 ` - \\x60
# " - \\x22 \ - \\x5C
# $ - \\x24 % - \\x25
#
#$cyglocb=~s/\\/\\x5C/g;
#my $content=<<END;
#$cyglocb\\x5Cbin\\x5Cbash -lc \\x22/bin/perl \\x251 \\x252\\x22
#END
#($stdout,$stderr)=$handle->cmd("echo -e \"$content\" > CGI_Script.bat");
#($stdout,$stderr)=$handle->cwd("~");
#($stdout,$stderr)=$handle->cmd("iisreset /start",'__display__');
}
###############
## RABBITMQ
###############
#($stdout,$stderr)=$handle->cmd(
# "wget --random-wait --progress=dot ".
# "https://github.com/erlang/otp/archive/maint.zip",
# '__display__');
#($stdout,$stderr)=$handle->cmd("unzip -o maint.zip",'__display__');
#($stdout,$stderr)=$handle->cmd("rm -rvf maint.zip",'__display__');
#($stdout,$stderr)=$handle->cwd("otp-maint");
#($stdout,$stderr)=$handle->cmd("export ERL_TOP=`pwd`",'__display__');
#($stdout,$stderr)=$handle->cmd("./otp_build autoconf");
#($stdout,$stderr)=$handle->cmd("./configure",'__display__');
#($stdout,$stderr)=$handle->cmd("sudo make install",'__display__');
#($stdout,$stderr)=$handle->cwd("..");
#($stdout,$stderr)=$handle->cmd("sudo sed -i ".
# "'s#secure_path = #secure_path = /usr/local/bin:/usr/local/sbin:#'".
# " /etc/sudoers");
#($stdout,$stderr)=$handle->cmd("wget -qO- ".
# "https://www.rabbitmq.com/download.html");
#my $source_flag=0;
#my $rmq='';my $rmqtar='';my $rmqdir='';
#foreach my $line (split "\n", $stdout) {
# if ($line=~/Source/) {
# $source_flag=1;
# } elsif ($source_flag) {
# $rmq=$line;
# $rmq=~s/^.*href=["](.*?)["].*$/$1/;
# $rmq='https://www.rabbitmq.com'.$rmq;
# ($rmqtar=$rmq)=~s/^.*\/(.*)$/$1/;
# ($rmqdir=$rmqtar)=~s/^(.*).tar.gz/$1/;
# last;
# }
#}
#($stdout,$stderr)=$handle->cmd(
# "wget --random-wait --progress=dot ".$rmq,'__display__');
#($stdout,$stderr)=$handle->cmd("tar zxvf $rmqtar",'__display__');
#($stdout,$stderr)=$handle->cmd("rm -rvf $rmqtar",'__display__');
#($stdout,$stderr)=$handle->cwd($rmqdir);
#$handle->print('sudo su');
#$prompt=$handle->prompt();
#while (1) {
# my $output.=Net::FullAuto::FA_Core::fetch($handle);
lib/Net/FullAuto/ISets/Local/FullAutoAPI_is.pm view on Meta::CPAN
"tar xvf $pcre.tar.gz",'__display__');
last unless $stderr;
($stdout,$stderr)=$handle->cmd($sudo.
"rm -rfv $pcre.tar.gz",'__display__');
}
($stdout,$stderr)=$handle->cmd($sudo.
"wget -qO- http://zlib.net/index.html");
my $zlib_ver=$stdout;
my $sha__256=$stdout;
$zlib_ver=~s/^.*? source code, version (\d+\.\d+\.\d+).*$/$1/s;
$sha__256=~s/^.*?SHA-256 hash [<]tt[>](.*?)[<][\/]tt[>].*$/$1/s;
foreach my $count (1..3) {
($stdout,$stderr)=$handle->cmd($sudo.
"wget --random-wait --progress=dot ".
"http://zlib.net/zlib-$zlib_ver.tar.gz",'__display__');
$checksum=$sha__256;
($stdout,$stderr)=$handle->cmd($sudo.
"sha256sum -c - <<<\"$checksum zlib-$zlib_ver.tar.gz\"",
'__display__');
unless ($stderr) {
print(qq{ + CHECKSUM Test for zlib-$zlib_ver *PASSED* \n});
last
} elsif ($count>=3) {
print "FATAL ERROR! : CHECKSUM Test for ".
"zlib-$zlib_ver.tar.gz *FAILED* ",
"after $count attempts\n";
cleanup;
}
($stdout,$stderr)=$handle->cmd($sudo.
"rm -rvf zlib-$zlib_ver.tar.gz",'__display__');
}
($stdout,$stderr)=$handle->cmd($sudo."tar xvf zlib-$zlib_ver.tar.gz",
'__display__');
my $ossl='openssl-1.1.1c';
foreach my $count (1..3) {
$checksum='71b830a077276cbeccc994369538617a21bee808';
($stdout,$stderr)=$handle->cmd($sudo.
"wget --random-wait --progress=dot ".
"https://www.openssl.org/source/$ossl.tar.gz",
'__display__');
($stdout,$stderr)=$handle->cmd($sudo.
"sha1sum -c - <<<\"$checksum $ossl.tar.gz\"",'__display__');
unless ($stderr) {
print(qq{ + CHECKSUM Test for $ossl *PASSED* \n});
last
} elsif ($count>=3) {
print "FATAL ERROR! : CHECKSUM Test for $ossl.tar.gz *FAILED* ",
"after $count attempts\n";
cleanup;
}
($stdout,$stderr)=$handle->cmd($sudo.
"rm -rvf $ossl.tar.gz",'__display__');
}
($stdout,$stderr)=$handle->cmd($sudo."tar xvf $ossl.tar.gz",'__display__');
($stdout,$stderr)=$handle->cwd('~/FullAutoAPI/deps');
# https://www.liberiangeek.net/2015/10/
# how-to-install-self-signed-certificates-on-nginx-webserver/
# https://www.hrupin.com/2017/07/how-to-automatically-restart-nginx
($stdout,$stderr)=$handle->cwd("~/FullAutoAPI/deps/$nginx");
#
# echo-ing/streaming files over ssh can be tricky. Use echo -e
# and replace these characters with thier HEX
# equivalents (use an external editor for quick
# search and replace - and paste back results.
# use copy/paste or cat file and copy/paste results.):
#
# ! - \\x21 ` - \\x60 * - \\x2A
# " - \\x22 \ - \\x5C
# $ - \\x24 % - \\x25
#
# https://www.lisenet.com/2014/ - bash approach to conversion
my $inet_d_script=<<'END';
#\\x21/bin/sh
#
# nginx - this script starts and stops the nginx daemin
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# pidfile: /var/run/nginx.pid
# user: nginx
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ \\x22\\x24NETWORKING\\x22 = \\x22no\\x22 ] && exit 0
nginx=\\x22/usr/sbin/nginx\\x22
prog=\\x24(basename \\x24nginx)
NGINX_CONF_FILE=\\x22/etc/nginx/nginx.conf\\x22
lockfile=/var/run/nginx.lock
start() {
[ -x \\x24nginx ] || exit 5
[ -f \\x24NGINX_CONF_FILE ] || exit 6
echo -n \\x24\\x22Starting \\x24prog: \\x22
daemon \\x24nginx -c \\x24NGINX_CONF_FILE
retval=\\x24?
echo
[ \\x24retval -eq 0 ] && touch \\x24lockfile
return \\x24retval
}
stop() {
echo -n \\x24\\x22Stopping \\x24prog: \\x22
killproc \\x24prog -QUIT
retval=\\x24?
echo
[ \\x24retval -eq 0 ] && rm -f \\x24lockfile
return \\x24retval
}
restart() {
lib/Net/FullAuto/ISets/Local/FullAutoAPI_is.pm view on Meta::CPAN
"sed -i 's/worker_processes 1;/worker_processes 2;/' ".$ngx);
($stdout,$stderr)=$handle->cmd($sudo.
"sed -i '0,/root html/{//d;}' ".$ngx);
($stdout,$stderr)=$handle->cmd($sudo.
"sed -i '0,/index index.html/{//d;}' ".$ngx);
($stdout,$stderr)=$handle->cmd($sudo.
"sed -i \'/koi8-r/a%NL% root ${home_dir}FullAutoAPI/root;\' ".
$ngx);
$handle->cmd_raw($sudo.
"sed -i 's/\\(^root.*;$\\\)/ \\1/' $ngx");
$ad=' include fastcgi_params;%NL%'.
" fastcgi_param SCRIPT_NAME %SQ%%SQ%;%NL%".
' fastcgi_param PATH_INFO $fastcgi_script_name;%NL%'.
' fastcgi_pass unix:/tmp/fullautoapi.socket;';
$ad=<<END;
sed -i '1,/location/ {/location/a\\\
$ad
}' $ngx
END
$handle->cmd_raw($sudo.$ad);
$ad='%NL% location /static {'.
"%NL% root ${home_dir}FullAutoAPI/root;".
'%NL% }%NL%';
($stdout,$stderr)=$handle->cmd($sudo.
"sed -i \'/404/a$ad\' ".$ngx);
($stdout,$stderr)=$handle->cmd($sudo.
"sed -i \'s/%NL%/\'\"`echo \\\\\\n`/g\" ".$ngx);
($stdout,$stderr)=$handle->cmd($sudo.
"sed -i \"s/%SQ%/\'/g\" ".$ngx);
foreach my $port (443,444,445,443) {
$avail_port=
`true &>/dev/null </dev/tcp/127.0.0.1/$port && echo open || echo closed`;
my $status=$avail_port;
$avail_port=$port;
chomp($status);
last if $status eq 'closed';
}
$ad='client_max_body_size 10M;';
($stdout,$stderr)=$handle->cmd($sudo.
"sed -i \'/octet-stream/i$ad\' ".$ngx);
$handle->cmd_raw($sudo.
"sed -i 's/\\(^client_max_body_size 10M;$\\\)/ \\1/' $ngx");
#($stdout,$stderr)=$handle->cmd($sudo.
# "sed -i \'s/^ listen 80/ listen ".
# "\*:$avail_port ssl http2 default_server/\' ".
# $nginx_path."/nginx/nginx.conf");
#($stdout,$stderr)=$handle->cmd($sudo.
# "sed -i 's/SCRIPT_NAME/PATH_INFO/' ".
# $nginx_path."/local/nginx/fastcgi_params");
#$ad='# Catalyst requires setting PATH_INFO (instead of SCRIPT_NAME)'.
# ' to \$fastcgi_script_name';
#($stdout,$stderr)=$handle->cmd($sudo.
# "sed -i \'/PATH_INFO/i$ad\' $nginx_path/nginx/fastcgi_params");
#$ad='fastcgi_param SCRIPT_NAME /;';
#($stdout,$stderr)=$handle->cmd($sudo.
# "sed -i \'/PATH_INFO/a$ad\' $nginx_path/nginx/fastcgi_params");
#($stdout,$stderr)=$handle->cmd($sudo.
# "sed -i \'s/%NL%/\'\"`echo \\\\\\n`/g\" ".
# "$nginx_path/nginx/fastcgi_params");
#
# echo-ing/streaming files over ssh can be tricky. Use echo -e
# and replace these characters with thier HEX
# equivalents (use an external editor for quick
# search and replace - and paste back results.
# use copy/paste or cat file and copy/paste results.):
#
# ! - \\x21 ` - \\x60 * - \\x2A
# " - \\x22 \ - \\x5C
# $ - \\x24 % - \\x25
#
# https://www.lisenet.com/2014/ - bash approach to conversion
my $script=<<END;
use Net::FullAuto;
\\x24Net::FullAuto::FA_Core::debug=1;
my \\x24handle=connect_shell();
\\x24handle->print('$nginx_path/nginx/nginx -g \\x22daemon on;\\x22');
\\x24prompt=\\x24handle->prompt();
my \\x24output='';my \\x24password_not_submitted=1;
while (1) {
eval {
local \\x24SIG{ALRM} = sub { die \\x22alarm\\x5Cn\\x22 };# \\x5Cn required
alarm 10;
my \\x24output=fetch(\\x24handle);
last if \\x24output=~/\\x24prompt/;
print \\x24output;
if ((-1<index \\x24output,'Enter PEM pass phrase:') &&
\\x24password_not_submitted) {
\\x24handle->print(\\x24ARGV[0]);
\\x24password_not_submitted=0;
}
};
if (\\x24\@) {
\\x24handle->print();
next;
}
}
exit 0;
END
if ($^O eq 'cygwin') {
($stdout,$stderr)=$handle->cwd("~/WordPress");
my $vimrc=<<END;
set paste
set mouse-=a
END
($stdout,$stderr)=$handle->cmd("echo -e \"$vimrc\" > ~/.vimrc");
($stdout,$stderr)=$handle->cmd("mkdir -vp script",'__display__');
($stdout,$stderr)=$handle->cmd("touch script/start_nginx.pl");
($stdout,$stderr)=$handle->cmd("chmod -v 755 script/start_nginx.pl",
'__display__');
($stdout,$stderr)=$handle->cmd("chmod o+r $nginx_path/nginx/*",
'__display__');
($stdout,$stderr)=$handle->cmd("chmod -v 755 $nginx_path/nginx/nginx.exe",
'__display__');
($stdout,$stderr)=$handle->cmd("echo -e \"$script\" > ".
"script/start_nginx.pl");
($stdout,$stderr)=$handle->cmd("cygrunsrv -I nginx_first_time ".
"-p /bin/perl -a ".
"\'${home_dir}WordPress/script/start_nginx.pl ".
"\"$service_and_cert_password\"'");
($stdout,$stderr)=$handle->cmd("cygrunsrv --start nginx_first_time",
'__display__');
lib/Net/FullAuto/ISets/Local/FullAutoAPI_is.pm view on Meta::CPAN
}
return 'DONE';
};
alarm(0);
last if $ereturn eq 'DONE' || $trys++>3;
}
$handle->print($sudo.
'openssl x509 -req -days 365 -in '.
"/etc/nginx/ssl.csr/$public_ip.csr -signkey ".
"/etc/nginx/ssl.key/$public_ip.key -out ".
"/etc/nginx/ssl.crt/$public_ip.crt");
while (1) {
my $output=fetch($handle);
last if $output=~/$prompt/;
print $output;
if (-1<index $output,'Enter pass phrase') {
$handle->print($service_and_cert_password);
}
}
($stdout,$stderr)=$handle->cmd($sudo."sed -i 's/1024/64/' ".
"/usr/local/nginx/nginx.conf");
$ad=" include fastcgi_params;%NL%".
" fastcgi_pass localhost:3003;";
$ad=<<END;
sed -i '1,/location/ {/location/a\\\
$ad
}' /usr/local/nginx/nginx.conf
END
$handle->cmd_raw($sudo.$ad);
$ad='%NL% location /static {'.
"%NL% root ${home_dir}FullAutoAPI/root;".
'%NL% }%NL%'.
'%NL% ssl on;'.
"%NL% ssl_certificate /etc/nginx/ssl.crt/$public_ip.crt;".
"%NL% ssl_certificate_key /etc/nginx/ssl.key/$public_ip.key;".
'%NL% ssl_protocols TLSv1 TLSv1.1 TLSv1.2;'.
'%NL% ssl_ciphers '.
'"HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";';
($stdout,$stderr)=$handle->cmd($sudo.
"sed -i \'/404/a$ad\' /usr/local/nginx/nginx.conf");
($stdout,$stderr)=$handle->cmd($sudo.
"sed -i \'s/%NL%/\'\"`echo \\\\\\n`/g\" ".
"/usr/local/nginx/nginx.conf");
($stdout,$stderr)=$handle->cmd($sudo.
"sed -i \'s/^ listen 80/ listen ".
"\*:443 ssl default_server/\' /usr/local/nginx/nginx.conf");
($stdout,$stderr)=$handle->cmd($sudo.
"sed -i 's/SCRIPT_NAME/PATH_INFO/' ".
"/usr/local/nginx/fastcgi_params");
$ad='# Catalyst requires setting PATH_INFO (instead of SCRIPT_NAME)'.
' to \$fastcgi_script_name';
($stdout,$stderr)=$handle->cmd($sudo.
"sed -i \'/PATH_INFO/i$ad\' /usr/local/nginx/fastcgi_params");
$ad='fastcgi_param SCRIPT_NAME /;';
($stdout,$stderr)=$handle->cmd($sudo.
"sed -i \'/PATH_INFO/a$ad\' /usr/local/nginx/fastcgi_params");
($stdout,$stderr)=$handle->cmd($sudo.
"sed -i \'s/%NL%/\'\"`echo \\\\\\n`/g\" ".
"/usr/local/nginx/fastcgi_params");
#
# echo-ing/streaming files over ssh can be tricky. Use echo -e
# and replace these characters with thier HEX
# equivalents (use an external editor for quick
# search and replace - and paste back results.
# use copy/paste or cat file and copy/paste results.):
#
# ! - \\x21 ` - \\x60
# " - \\x22 \ - \\x5C
# $ - \\x24 % - \\x25
#
my $script=<<END;
use Net::FullAuto;
\\x24Net::FullAuto::FA_Core::debug=1;
my \\x24handle=connect_shell();
\\x24handle->print('/usr/local/nginx/nginx -g \\x22daemon on;\\x22');
\\x24prompt=\\x24handle->prompt();
my \\x24output='';my \\x24password_not_submitted=1;
while (1) {
eval {
local \\x24SIG{ALRM} = sub { die \\x22alarm\\x5Cn\\x22 };# \\x5Cn required
alarm 10;
my \\x24output=Net::FullAuto::FA_Core::fetch(\\x24handle);
last if \\x24output=~/\\x24prompt/;
print \\x24output;
if ((-1<index \\x24output,'Enter PEM pass phrase:') &&
\\x24password_not_submitted) {
\\x24handle->print(\\x24ARGV[0]);
\\x24password_not_submitted=0;
}
};
if (\\x24\@) {
\\x24handle->print();
next;
}
}
exit 0;
END
if ($^O eq 'cygwin') {
($stdout,$stderr)=$handle->cwd("~/FullAutoAPI");
my $vimrc=<<END;
set paste
set mouse-=a
END
($stdout,$stderr)=$handle->cmd("echo -e \"$vimrc\" > ~/.vimrc");
($stdout,$stderr)=$handle->cmd("mkdir -vp script",'__display__');
($stdout,$stderr)=$handle->cmd("touch script/start_nginx.pl");
($stdout,$stderr)=$handle->cmd("chmod -v 755 script/start_nginx.pl",
'__display__');
($stdout,$stderr)=$handle->cmd("chmod -v o+r /usr/local/nginx/*",
'__display__');
($stdout,$stderr)=$handle->cmd("chmod -v 755 /usr/local/nginx/nginx.exe",
'__display__');
($stdout,$stderr)=$handle->cmd("echo -e \"$script\" > ".
"script/start_nginx.pl");
($stdout,$stderr)=$handle->cmd("cygrunsrv -I nginx_first_time ".
"-p /bin/perl -a ".
"\'${home_dir}FullAutoAPI/script/start_nginx.pl ".
"\"$service_and_cert_password\"'");
($stdout,$stderr)=$handle->cmd("cygrunsrv --start nginx_first_time",
'__display__');
($stdout,$stderr)=$handle->cmd("touch script/first_time_start.flag");
lib/Net/FullAuto/ISets/Local/FullAutoAPI_is.pm view on Meta::CPAN
($stdout,$stderr)=$handle->cwd('~/FullAutoAPI/deps');
($stdout,$stderr)=$handle->cmd($sudo."wget -qO- http://memcached.org/");
print $stderr if $stderr;
$stdout=~/^.*?Tar.Gz Download.*?href=["](.*?)["].*$/s;
my $mc_rel=$1;
unless ($mc_rel) {
($stdout,$stderr)=$handle->cmd($sudo.
"wget -qO- http://memcached.org/ -S --content-on-error",
'__display__');
($stdout,$stderr)=$handle->cmd($sudo.
"wget --random-wait --progress=dot --no-check-certificate ".
"https://github.com/memcached/memcached/archive/master.zip",
'__display__');
($stdout,$stderr)=$handle->cmd('unzip -o master.zip','__display__');
$mc_rel='memcached-master';
($stdout,$stderr)=$handle->cwd($mc_rel);
($stdout,$stderr)=$handle->cmd('./autogen.sh','__display__');
#&exit_on_error("$stdout\n\n Output from http://memcached.org/");
} else {
($stdout,$stderr)=$handle->cmd($sudo.
"wget --random-wait --progress=dot ".$mc_rel,'__display__');
$mc_rel=~s/^.*\/(.*.tar.gz)$/$1/;
($stdout,$stderr)=$handle->cmd("tar xvf $mc_rel",'__display__');
$stdout=~s/^.*\n(.*)\/.*$/$1/s;
($stdout,$stderr)=$handle->cwd($stdout);
}
($stdout,$stderr)=$handle->cmd('./configure','__display__');
if ($^O eq 'cygwin') {
($stdout,$stderr)=$handle->cmd("sed -i 's/ -Werror//' Makefile");
($stdout,$stderr)=$handle->cmd("sed -i ".
"'s#struct sigaction a#// struct sigaction a#' testapp.c");
($stdout,$stderr)=$handle->cmd("sed -i ".
"'s#sigemptyset#// sigemptyset#' testapp.c");
($stdout,$stderr)=$handle->cmd("sed -i ".
"'s#sigaction(#// sigaction(#' testapp.c");
($stdout,$stderr)=$handle->cmd("sed -i ".
"'s#{ \"cache_redzone#// { \"cache_redzone#' testapp.c");
}
($stdout,$stderr)=$handle->cmd('make','__display__');
($stdout,$stderr)=$handle->cmd($sudo.'make install','__display__');
unless ($^O eq 'cygwin') {
($stdout,$stderr)=$handle->cwd('scripts');
($stdout,$stderr)=$handle->cmd($sudo.
'cp -v memcached.service /etc/systemd/system',
'__display__');
($stdout,$stderr)=$handle->cmd($sudo.
"sed -i \'s#bin#local/bin#\' ".
'/etc/systemd/system/memcached.service');
($stdout,$stderr)=$handle->cmd($sudo.
'systemctl daemon-reload');
($stdout,$stderr)=$handle->cmd($sudo.
'cp -v memcached.sysconfig /etc/sysconfig/memcached',
'__display__');
($stdout,$stderr)=$handle->cmd($sudo.
"sed -i \'s/nobody/$username/\' /etc/sysconfig/memcached");
($stdout,$stderr)=$handle->cmd($sudo.
'chmod -v 777 /var/run','__display__');
}
($stdout,$stderr)=$handle->cwd('~/FullAutoAPI');
#
# echo-ing/streaming files over ssh can be tricky. Use echo -e
# and replace these characters with thier HEX
# equivalents (use an external editor for quick
# search and replace - and paste back results.
# use copy/paste or cat file and copy/paste results.):
#
# ! - \\x21 ` - \\x60
# " - \\x22 \ - \\x5C
# $ - \\x24 % - \\x25
#
$content=<<'END';
#\\x21/usr/bin/env perl
use strict;
use warnings;
use lib 'lib';
BEGIN { \\x24ENV{CATALYST_DEBUG} = 0 }
use FullAutoAPI;
use DateTime;
my \\x24admin = FullAutoAPI->model('DB::Users')->search({ username => 'admin' })
->single;
\\x24admin->update({ password => 'admin', password_expires => DateTime->now });
END
($stdout,$stderr)=$handle->cmd($sudo.'touch script/set_admin_password.pl');
($stdout,$stderr)=$handle->cmd($sudo.
'chmod -v 777 script/set_admin_password.pl',
'__display__');
($stdout,$stderr)=$handle->cmd(
"echo -e \"$content\" > script/set_admin_password.pl");
my $pro_path="./lib/FullAutoAPI/Controller/OAuth2/Provider.pm";
($stdout,$stderr)=$handle->cmd($sudo."sed -i ".
"\"s/Catalyst::Controller/Catalyst::Controller::ActionRole/\" ".
$pro_path);
$ad="%NL%".
"with %SQ%CatalystX::OAuth2::Controller::Role::Provider%SQ%;%NL%".
"%NL%".
"__PACKAGE__->config(%NL%".
" store => {%NL%".
" class => %SQ%DBIC%SQ%,%NL%".
" client_model => %SQ%DB::Client%SQ%%NL%".
" }%NL%".
");%NL%".
"%NL%".
"sub request : Chained(%SQ%/%SQ%) Args(0) ".
"Does(%SQ%OAuth2::RequestAuth%SQ%) {%NL%".
" my ( \$self, \$c ) = \@_;%NL%".
"%NL%".
" my \$oauth2 = \$c->req->oauth2;%NL%".
"%NL%".
" \$oauth2->{enable_client_secret}=0;%NL%".
"}%NL%".
"%NL%".
"sub grant : Chained(%SQ%/%SQ%) Args(0) ".
"Does(%SQ%OAuth2::GrantAuth%SQ%) {%NL%".
" my ( \$self, \$c ) = \@_;%NL%".
"%NL%".
" my \$oauth2 = \$c->req->oauth2;%NL%".
lib/Net/FullAuto/ISets/Local/FullAutoAPI_is.pm view on Meta::CPAN
($stdout,$stderr)=$handle->cmd("echo -e \"$content\" >> fullautoapi.conf");
($stdout,$stderr)=$handle->cmd($sudo.'chmod -v 644 fullautoapi.conf',
'__display__');
($stdout,$stderr)=$handle->cmd(
"./script/fullautoapi_create.pl controller User",'__display__');
($stdout,$stderr)=$handle->cmd($sudo.
'rm -rvf lib/FullAutoAPI/Controller/User.pm',
'__display__');
my $view_path='./lib/FullAutoAPI/View/TT.pm';
($stdout,$stderr)=$handle->cmd(
"./script/fullautoapi_create.pl view TT TT",'__display__');
($stdout,$stderr)=$handle->cmd(
"${sudo}sed -i \'s/\.tt/\.tt2/\' $view_path");
$ad='WRAPPER => %SQ%wrapper.tt2%SQ%,';
($stdout,$stderr)=$handle->cmd(
"${sudo}sed -i \'/render_die/a$ad\' $view_path");
$handle->cmd_raw(
"${sudo}sed -i 's/\\(^WRAPPER =.*\\\)/ \\1/' $view_path");
($stdout,$stderr)=$handle->cmd( # bash shell specific
"${sudo}sed -i \'s/%NL%/\'\"`echo \\\\\\n`/g\" $view_path");
($stdout,$stderr)=$handle->cmd("${sudo}sed -i \"s/%SQ%/\'/g\" $view_path");
($stdout,$stderr)=$handle->cmd($sudo.
'mkdir -vp root/static/jquery','__display__');
($stdout,$stderr)=$handle->cwd('root/static/jquery');
($stdout,$stderr)=$handle->cmd($sudo.
"wget --random-wait --progress=dot ".
"https://code.jquery.com/ui/1.11.3/jquery-ui.js",
'__display__');
($stdout,$stderr)=$handle->cmd($sudo.
"chown -v $username:$username jquery-ui.js",
'__display__')
if $^O ne 'cygwin';
($stdout,$stderr)=$handle->cmd($sudo.
"wget --random-wait --progress=dot ".
"https://code.jquery.com/jquery-1.11.3.js",
'__display__');
($stdout,$stderr)=$handle->cmd($sudo.
"chown -v $username:$username jquery-1.11.3.js",
'__display__')
if $^O ne 'cygwin';
($stdout,$stderr)=$handle->cwd('~/FullAutoAPI/root');
# http://www.sitepoint.com/working-jquery-datatables/
($stdout,$stderr)=$handle->cmd($sudo.
"wget --random-wait --progress=dot ".
"https://github.com/DataTables/DataTables/archive/master.zip",
'__display__');
($stdout,$stderr)=$handle->cmd($sudo.
"chown -v $username:$username master.zip",
'__display__')
if $^O ne 'cygwin';
($stdout,$stderr)=$handle->cmd('unzip -o master.zip','__display__');
($stdout,$stderr)=$handle->cmd($sudo.'rm -rvf master.zip','__display__');
($stdout,$stderr)=$handle->cwd('DataTables-master');
($stdout,$stderr)=$handle->cmd('cp -Rv media ..','__display__');
($stdout,$stderr)=$handle->cwd('examples');
($stdout,$stderr)=$handle->cmd('cp -Rv resources ../..','__display__');
($stdout,$stderr)=$handle->cwd('~/FullAutoAPI');
($stdout,$stderr)=$handle->cmd("./script/fullautoapi_create.pl ".
"view Email::Template Email::Template",'__display__');
#
# echo-ing/streaming files over ssh can be tricky. Use echo -e
# and replace these characters with thier HEX
# equivalents (use an external editor for quick
# search and replace - and paste back results.
# use copy/paste or cat file and copy/paste results.):
#
# ! - \\x21 ` - \\x60
# " - \\x22 \ - \\x5C
# $ - \\x24 % - \\x25
#
$content=<<END;
package FullAutoAPI::Controller::User;
use strict;
use warnings;
use Moose;
use DBI;
use namespace::autoclean;
use ZMQ::LibZMQ4;
use ZMQ::Constants qw(:all);
use JSON::XS;
use YAML;
use Carp::Assert;
use Crypt::PassGen 'passgen';
use FullAutoAPI::Form::AddUser ();
use FullAutoAPI::Form::EditUser ();
use FullAutoAPI::Form::ChangePassword ();
use FullAutoAPI::Form::UserProfile ();
use Math::Random::ISAAC::XS;
use Bytes::Random::Secure;
use constant NBR_WORKERS => 2;
use constant READY => \\x22\\x5C001\\x22;
use constant FRONTEND_URL =>
\\x22ipc://${home_dir}FullAutoAPI/frontend.ipc\\x22;
BEGIN { extends 'Catalyst::Controller::ActionRole' }
with 'CatalystX::OAuth2::Controller::Role::WithStore';
BEGIN { extends 'Catalyst::Controller::REST' }
BEGIN {
if (\\x24^O eq 'cygwin') {
if (-e 'script/first_time_start.flag') {
unlink 'script/first_time_start.flag';
} else {
my \\x24out=\\x60/bin/cygrunsrv -L\\x60;
if (-1<index \\x24out,'nginx_first_time') {
\\x60/bin/cygrunsrv -R nginx_first_time\\x60;
}
}
}
}
__PACKAGE__->config(
store => {
class => 'DBIC',
client_model => 'DB::Client'
}
);
lib/Net/FullAuto/ISets/Local/FullAutoAPI_is.pm view on Meta::CPAN
1;
END
($stdout,$stderr)=$handle->cmd("echo -e \"$content\" > UserProfile.pm");
($stdout,$stderr)=$handle->cmd($sudo."chmod -v 644 UserProfile.pm",
'__display__');
($stdout,$stderr)=$handle->cwd('~/FullAutoAPI/root/static');
($stdout,$stderr)=$handle->cmd($sudo.
"cp -v $builddir/$ls_tmp[0]/api/RestYUI/root/static/json2.js .",
'__display__');
#($stdout,$stderr)=$handle->cmd($sudo.
# "wget --random-wait --progress=dot ".
# "http://dev.catalyst.perl.org/repos/Catalyst/trunk/".
# "examples/RestYUI/root/static/json2.js",
# '__display__');
($stdout,$stderr)=$handle->cmd($sudo.
"chown -v $username:$username json2.js",
'__display__')
if $^O ne 'cygwin';
($stdout,$stderr)=$handle->cmd('mkdir -vp yui','__display__');
($stdout,$stderr)=$handle->cwd('yui');
my @yuifiles=('utilities.js','dom.js','connection.js','event.js',
'yahoo.js');
foreach my $file (@yuifiles) {
($stdout,$stderr)=$handle->cmd($sudo.
"cp -v $builddir/$ls_tmp[0]/api/RestYUI/root/static/yui/$file .",
'__display__');
#($stdout,$stderr)=$handle->cmd($sudo.
# "wget --random-wait --progress=dot ".
# "http://dev.catalyst.perl.org/repos/Catalyst/trunk/".
# "examples/RestYUI/root/static/yui/$file",
# '__display__');
($stdout,$stderr)=$handle->cmd($sudo.
"chown -v $username:$username $file",
'__display__')
if $^O ne 'cygwin';
}
($stdout,$stderr)=$handle->cwd('~/FullAutoAPI/root');
($stdout,$stderr)=$handle->cmd('mkdir -vp user','__display__');
($stdout,$stderr)=$handle->cwd('user');
($stdout,$stderr)=$handle->cmd($sudo.
"cp -v $builddir/$ls_tmp[0]/api/RestYUI/root/user/single_user.tt .",
'__display__');
#($stdout,$stderr)=$handle->cmd($sudo.
# "wget --random-wait --progress=dot ".
# "http://dev.catalyst.perl.org/repos/Catalyst/trunk/".
# "examples/RestYUI/root/user/single_user.tt",
# '__display__');
($stdout,$stderr)=$handle->cmd($sudo.
"chown -v $username:$username single_user.tt",
'__display__')
if $^O ne 'cygwin';
($stdout,$stderr)=$handle->cmd(
"sed -i 's/POSTT/POST/' single_user.tt");
($stdout,$stderr)=$handle->cmd(
"mv single_user.tt single_user.tt2");
($stdout,$stderr)=$handle->cwd('~/FullAutoAPI/root');
($stdout,$stderr)=$handle->cmd($sudo.'rm -rvf rest');
($stdout,$stderr)=$handle->cmd('mkdir -vp rest','__display__');
($stdout,$stderr)=$handle->cwd('rest');
#
# echo-ing/streaming files over ssh can be tricky. Use echo -e
# and replace these characters with thier HEX
# equivalents (use an external editor for quick
# search and replace - and paste back results.
# use copy/paste or cat file and copy/paste results.):
#
# ! - \\x21 ` - \\x60
# " - \\x22 \ - \\x5C
# $ - \\x24 % - \\x25
#
$content=<<END;
<\\x21DOCTYPE html>
<html>
<head>
<meta charset=\\x22utf-8\\x22>
<meta name=\\x22viewport\\x22 content=\\x22initial-scale=1.0, maximum-scale=2.0\\x22>
<title>Catalyst REST Example</title>
<link rel=\\x22stylesheet\\x22 type=\\x22text/css\\x22 href=\\x22https://cdn.datatables.net/1.10.8/css/jquery.dataTables.min.css\\x22>
<link rel=\\x22stylesheet\\x22 type=\\x22text/css\\x22 href=\\x22resources/demo.css\\x22></script>
<script type=\\x22text/javascript\\x22 language=\\x22javascript\\x22 src=\\x22//code.jquery.com/jquery-1.11.3.min.js\\x22></script>
<script type=\\x22text/javascript\\x22 language=\\x22javascript\\x22 src=\\x22https://cdn.datatables.net/1.10.8/js/jquery.dataTables.min.js\\x22></script>
<script type=\\x22text/javascript\\x22 language=\\x22javascript\\x22 class=\\x22init\\x22>
\\x24(document).ready(function() {
\\x24(\\x22#example\\x22).dataTable({
\\x22processing\\x22: true,
\\x22serverSide\\x22: true,
\\x22ajax\\x22: \\x22[%c.uri_for( c.controller('User').action_for('user_list') ) %]?page=1&content-type=application/json\\x22,
\\x22aoColumns\\x22: [{
\\x22mData\\x22:\\x22user_id\\x22,
},{
\\x22mData\\x22: \\x22fullname\\x22,
},{
\\x22mData\\x22: \\x22description\\x22,
}]
});
} );
</script>
</head>
<body class=\\x22dt-example\\x22>
<div class=\\x22container\\x22>
<section>
<h1>Catalyst REST Example <span>Using JQuery DataTable</span></h1>
<div class=\\x22info\\x22>
<p>FullAuto was used to stand up this fully functional Catalyst REST installation.
The following table is full of demo user data. To add or update a user, manually
modify the browser URL like so:
<br><br><code>[%c.uri_for( c.controller('User').action_for('user_list') ) %]/user_id</code></p>
<p>Data can be accessed on the command line:
<br><br><code>curl -X GET -k -H 'Content-Type: application/json'
[%c.uri_for( c.controller('User').action_for('user_list') ) %]</code>
<br><br><code>
curl -X GET -k
\\x22[% c.req.base %]request?client_id=<client_id>&response_type=code&redirect_uri=/cmd\\x22
( run in 0.406 second using v1.01-cache-2.11-cpan-140bd7fdf52 )