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=&lt;client_id&gt;&response_type=code&redirect_uri=/cmd\\x22



( run in 0.406 second using v1.01-cache-2.11-cpan-140bd7fdf52 )