Net-FullAuto

 view release on metacpan or  search on metacpan

lib/Net/FullAuto/ISets/Local/FullAutoAPI_is.pm  view on Meta::CPAN

      if ($srvout=~/nginx_first_time/) {
         ($stdout,$stderr)=$handle->cmd(
            "cygrunsrv --stop nginx_first_time",'__display__');
         ($stdout,$stderr)=$handle->cmd("cygrunsrv -R nginx_first_time");
         ($stdout,$stderr)=$handle->cmd(
            "rm -rvf ${home_dir}FullAutoAPI/deps/nginx*",
            '__display__');
      }
      if ($srvout=~/fullautoapi/) {
         ($stdout,$stderr)=$handle->cmd("cygrunsrv --stop fullautoapi",
            '__display__');
         ($stdout,$stderr)=$handle->cmd("cygrunsrv -R fullautoapi");
         ($stdout,$stderr)=$handle->cmd("rm -rvf ${home_dir}FullAutoAPI/lib",
            '__display__');
         ($stdout,$stderr)=$handle->cmd("rm -rvf ${home_dir}FullAutoAPI/script",
            '__display__');
         ($stdout,$stderr)=$handle->cmd("rm -rvf ${home_dir}FullAutoAPI/root",
            '__display__');
         ($stdout,$stderr)=$handle->cmd("rm -rvf ${home_dir}FullAutoAPI/db*",
            '__display__');
         ($stdout,$stderr)=$handle->cmd("rm -rvf ${home_dir}FullAutoAPI/inc",
            '__display__');
         ($stdout,$stderr)=$handle->cmd("rm -rvf ${home_dir}FullAutoAPI/full*",
            '__display__');
         ($stdout,$stderr)=$handle->cmd("rm -rvf ${home_dir}FullAutoAPI/blib",
            '__display__');
      }
      if ($srvout=~/memcached/) {
         ($stdout,$stderr)=$handle->cmd("cygrunsrv --stop memcached",
            '__display__');
         ($stdout,$stderr)=$handle->cmd("cygrunsrv -R memcached");
         ($stdout,$stderr)=$handle->cmd(
            "rm -rvf ${home_dir}FullAutoAPI/deps/memcached*",
            '__display__');
      }
      if ($uname_all=~/x86_64/) {
         foreach my $package ('libxml2','libxml2-devel','libtool',
               'autoconf','autobuild','automake','pkg-config',
               'libuuid-devel','wget','git','httpd',
               'httpd-mod_ssl','httpd-tools','exim','zip') {
            unless (-1<index $cygcheck, "$package ") {
               $need_packages{$package}='';
            }
         }
      } else {
         foreach my $package ('libxml2','libxml2-devel','libtool',
               'autoconf','autobuild','automake','pkg-config',
               'libuuid-devel','wget','git','httpd','httpd-mod_ssl',
               'httpd-tools','exim','zip') {
            unless (-1<index $cygcheck, "$package ") {
               $need_packages{$package}='';
            }
         }
      }
      # http://www.fjakkarin.com/2015/11/cygwin-cygserver-and-apache-httpd/
      ($stdout,$stderr)=$handle->cmd($sudo.
         "wget --random-wait --progress=dot ".
         "https://github.com/transcode-open/apt-cyg/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("rm -rvf master.zip",'__display__');
      ($stdout,$stderr)=$handle->cmd("mv apt-cyg-master/apt-cyg /usr/bin");
      ($stdout,$stderr)=$handle->cmd($sudo."chmod -v 755 /usr/bin/apt-cyg",
         '__display__');
      ($stdout,$stderr)=$handle->cmd("rm -rvf apt-cyg-master",'__display__');
      my $packs='';$|=1;
      foreach my $pack (sort keys %need_packages) {
         ($stdout,$stderr)=$handle->cmd("apt-cyg install $pack",
            '__display__');
      }
      if ($^O eq 'cygwin') {
         ($stdout,$stderr)=$handle->cwd('~');
         # http://blogostuffivelearnt.blogspot.com/2012/07/
         # smtp-mail-server-with-windows.html
         ($stdout,$stderr)=$handle->cmd(
            "chmod -v 755 /usr/bin/exim*",'__display__');
         $handle->print('/bin/exim-config');
         $prompt=$handle->prompt();
         while (1) {
            my $output=fetch($handle);
            last if $output=~/$prompt/;
            print $output;
            if (-1<index $output,'local postmaster') {
               $handle->print();
            } elsif (-1<index $output,'Is it') {
               $handle->print('yes');
            } elsif (-1<index $output,'change that setting') {
               $handle->print('no');
            } elsif (-1<index $output,'standard values') {
               $handle->print('yes');
            } elsif (-1<index $output,'be links to') {
               $handle->print('yes');
            } elsif (-1<index $output,'some CPAN') {
               $handle->print('no');
            } elsif (-1<index $output,'install the exim') {
               $handle->print('yes');
            } elsif (-1<index $output,'in minutes') {
               $handle->print();
            } elsif (-1<index $output,'CYGWIN for the daemon') {
               $handle->print('default');
            } elsif (-1<index $output,'the cygsla package') {
               $handle->print('yes');
            } elsif (-1<index $output,'another privileged account') {
               $handle->print('no');
            } elsif (-1<index $output,'enter the password') {
               $handle->print($service_and_cert_password);
            } elsif (-1<index $output,'Reenter') {
               $handle->print($service_and_cert_password);
            } elsif (-1<index $output,'start the exim') {
               $handle->print('yes');
            }
            next;
         }
      }
      #if ($packs) {
      #   print "\n\n   Fatal Error!: The following Cygwin",
      #         "\n                 packages are missing from",
      #         "\n                 your installation:",

lib/Net/FullAuto/ISets/Local/FullAutoAPI_is.pm  view on Meta::CPAN

   #while (1) {
   #   my $output.=Net::FullAuto::FA_Core::fetch($handle);
   #   last if $output=~/$prompt/;
   #   print $output;
   #}
   #$handle->print('exit');
   #while (1) {
   #   my $output.=Net::FullAuto::FA_Core::fetch($handle);
   #   last if $output=~/$prompt/;
   #   print $output;
   #}
   #($stdout,$stderr)=$handle->cwd("..");
   #($stdout,$stderr)=$handle->cmd(
   #   "wget --random-wait --progress=dot ".
   #   "https://github.com/rabbitmq/rabbitmq-tutorials/archive/master.zip",
   #   '__display__');
   #($stdout,$stderr)=$handle->cmd("unzip -o master.zip",'__display__');
   #($stdout,$stderr)=$handle->cmd("rm -rvf master.zip",'__display__');
   #($stdout,$stderr)=$handle->cmd("sudo rabbitmq-server -detached",
   #   '__display__');

   # TEST FOR AMAZON EC2 INSTANCE
   #($stdout,$stderr)=$handle->cmd('wget --timeout=5 --tries=1 -qO- '.
   #             'http://169.254.169.254/latest/dynamic/instance-identity/');
   #$public_ip=$stdout if $stdout=~/^\d+\.\d+\.\d+\.\d+\s*/s;

   #my $z=1;
   #while ($z==1) {
   #   ($stdout,$stderr)=$handle->cmd("ps -ef",'__display__');
   #   if ($stdout=~/nginx/) {
   #      my @psinfo=();
   #      foreach my $line (split /\n/, $stdout) {
   #         next unless -1<index $line, 'nginx';
   #         @psinfo=split /\s+/, $line;
   #         ($stdout,$stderr)=$handle->cmd($sudo."kill -9 $psinfo[2]");
   #      } last
   #   } else { last }
   #}
   ($stdout,$stderr)=$handle->cmd($sudo."pkill nginx");
   ($stdout,$stderr)=$handle->cmd($sudo."rm -rvf /usr/local/nginx",'__display__');
   ($stdout,$stderr)=$handle->cmd("wget -qO- https://icanhazip.com");
   $public_ip=$stdout if $stdout=~/^\d+\.\d+\.\d+\.\d+\s*/s;
   unless ($public_ip) {
      require Sys::Hostname;
      import Sys::Hostname;
      require Socket;
      import Socket;
      my($addr)=inet_ntoa((gethostbyname(Sys::Hostname::hostname))[4]);
      $public_ip=$addr if $addr=~/^\d+\.\d+\.\d+\.\d+\s*/s;
   }
   chomp($public_ip);
   $public_ip='127.0.0.1' unless $public_ip;
   
   unless ($^O eq 'cygwin') {
      ($stdout,$stderr)=$handle->cmd($sudo.
         "wget --random-wait --progress=dot ".
         "http://download.fedoraproject.org".
         "/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm",
         '__display__');
      ($stdout,$stderr)=$handle->cmd($sudo.
         "chown -v $username:$username epel-release-6-8.noarch.rpm",
         '__display__') if $^O ne 'cygwin';
      ($stdout,$stderr)=$handle->cmd(
         "sudo rpm -ivh epel-release-6-8.noarch.rpm",
         '__display__');
      ($stdout,$stderr)=$handle->cmd($sudo.
         'rm -rvf epel-release-6-8.noarch.rpm',
         '__display__');
      ($stdout,$stderr)=$handle->cmd($sudo.'yum -y install uuid-devel '.
         'pkgconfig libtool gcc-c++','__display__');
   }
   ($stdout,$stderr)=$handle->cmd('mkdir -vp FullAutoAPI/deps',
      '__display__');
   ($stdout,$stderr)=$handle->cmd(
      'mkdir -vp FullAutoAPI/root/static/images',
      '__display__');
   #($stdout,$stderr)=$handle->cmd("${sudo}perl -e \'use CPAN;".
   #   "CPAN::HandleConfig-\>load;print \$CPAN::Config-\>{build_dir}\'");
   #$builddir=$stdout;
   #my $fa_ver=$Net::FullAuto::VERSION;
   #($stdout,$stderr)=$handle->cmd(
   #   "${sudo}ls -1t $builddir | grep Net-FullAuto-$fa_ver");
   #my @lstmp=split /\n/,$stdout;
   #foreach my $line (@lstmp) {
   #   unshift @ls_tmp, $line if $line!~/\.yml$/;
   #}
   ($stdout,$stderr)=$handle->cmd($sudo.
      "cp -v $builddir/$ls_tmp[0]/api/Docker_is.py ".
      "FullAutoAPI",'__display__');
   ($stdout,$stderr)=$handle->cmd($sudo.
      "cp -v $builddir/$ls_tmp[0]/api/automates_everything.jpg ".
      "FullAutoAPI/root/static/images",'__display__');
   ($stdout,$stderr)=$handle->cmd($sudo.
      "cp -v $builddir/$ls_tmp[0]/api/automationapi.jpg ".
      "FullAutoAPI/root/static/images",'__display__');
   ($stdout,$stderr)=$handle->cmd($sudo.
      "cp -v $builddir/$ls_tmp[0]/api/fullauto_com.jpg ".
      "FullAutoAPI/root/static/images",'__display__');
   ($stdout,$stderr)=$handle->cmd($sudo.
      "cp -v $builddir/$ls_tmp[0]/api/".
      "South-Shore-Food-Market-Ghost-sign_with_FA_1_faded_1024.jpg ".
      "FullAutoAPI/root/static/images",'__display__');
   ($stdout,$stderr)=$handle->cmd($sudo.
      "cp -v $builddir/$ls_tmp[0]/api/zeromq.jpg ".
      "FullAutoAPI/root/static/images",'__display__');
   ($stdout,$stderr)=$handle->cmd($sudo.
      "cp -v $builddir/$ls_tmp[0]/api/nginx.png ".
      "FullAutoAPI/root/static/images",'__display__');
   ($stdout,$stderr)=$handle->cmd($sudo.
      "cp -v $builddir/$ls_tmp[0]/api/wrapper.tt2 ".
      "FullAutoAPI/root",'__display__');
   ($stdout,$stderr)=$handle->cmd($sudo.
      "cp -v $builddir/$ls_tmp[0]/installer/FA.ico ".
      "FullAutoAPI/root/favicon.ico",'__display__');
   ($stdout,$stderr)=$handle->cmd($sudo.
      "chmod -v 755 FullAutoAPI/root/static/images/*",
      '__display__');
   ($stdout,$stderr)=$handle->cwd("FullAutoAPI/deps");
   ($stdout,$stderr)=$handle->cmd($sudo.
      "wget --random-wait --progress=dot ".
      "http://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz",
      '__display__');
   ($stdout,$stderr)=$handle->cmd($sudo.
      "chown -v $username:$username autoconf-latest.tar.gz",'__display__')
      if $^O ne 'cygwin';
   ($stdout,$stderr)=$handle->cmd("tar zxvf autoconf-latest.tar.gz",
      '__display__');
   ($stdout,$stderr)=$handle->cmd($sudo.'rm -rvf autoconf-latest.tar.gz',
      '__display__');
   ($stdout,$stderr)=$handle->cwd("autoconf-*");
   ($stdout,$stderr)=$handle->cmd("./configure",'__display__');
   ($stdout,$stderr)=$handle->cmd("make",'__display__');
   ($stdout,$stderr)=$handle->cmd($sudo."make install",'__display__');
   ($stdout,$stderr)=$handle->cwd("..");
   ($stdout,$stderr)=$handle->cmd($sudo.
      "wget --random-wait --progress=dot ".
      "https://github.com/jedisct1/libsodium/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->cmd($sudo.
      "chown -Rv $username:$username libsodium-master",'3600')
      if $^O ne 'cygwin';
   ($stdout,$stderr)=$handle->cwd('libsodium-master');
   ($stdout,$stderr)=$handle->cmd('./autogen.sh','__display__');
   ($stdout,$stderr)=$handle->cmd('./configure','__display__');
   ($stdout,$stderr)=$handle->cmd('make','__display__');
   ($stdout,$stderr)=$handle->cmd($sudo.'make install','__display__');
   ($stdout,$stderr)=$handle->cwd('~/FullAutoAPI/deps');

$do=1;
if ($do==1) { # INSTALL LATEST VERSION OF PYTHON
   ($stdout,$stderr)=$handle->cmd($sudo.
      'wget -qO- https://www.python.org/downloads/release');
   $stdout=~s/^.*list-row-container menu.*?Python (.*?)[<].*$/$1/s;
   my $version=$stdout;
   ($stdout,$stderr)=$handle->cmd($sudo.
      "if test -f /usr/local/bin/python$version; then echo Exists; fi");
   unless ($stdout=~/Exists/) {
      ($stdout,$stderr)=$handle->cmd($sudo.
         'wget --random-wait --progress=dot '.
         "http://python.org/ftp/python/$version/Python-$version.tar.xz",
         '__display__');
      ($stdout,$stderr)=$handle->cmd($sudo.
         "tar xvf Python-$version.tar.xz",
         '__display__');
      ($stdout,$stderr)=$handle->cwd("Python-$version");
      ($stdout,$stderr)=$handle->cmd($sudo.
         './configure --prefix=/usr/local --exec-prefix=/usr/local '.
         '--enable-shared --enable-optimizations '.
         'LDFLAGS="-Wl,-rpath /usr/local/lib"',
         '__display__');
      ($stdout,$stderr)=$handle->cmd($sudo.
         'make','3600','__display__');
      ($stdout,$stderr)=$handle->cmd($sudo.
         'make altinstall','__display__');
      $version=~s/^(\d+\.\d+).*$/$1/;
      ($stdout,$stderr)=$handle->cmd($sudo.
         "ln -s /usr/local/bin/python$version /usr/local/bin/python");
      ($stdout,$stderr)=$handle->cwd('~/FullAutoAPI/deps');
      ($stdout,$stderr)=$handle->cmd($sudo.
         "/usr/local/bin/python$version -m ensurepip --default-pip",
         '__display__');
      ($stdout,$stderr)=$handle->cmd($sudo.
         "/usr/local/bin/python$version -m pip install ".
         "--upgrade pip setuptools wheel",
         '__display__');
      ($stdout,$stderr)=$handle->cmd($sudo.
         "/usr/local/bin/python$version -m pip install pyasn1",
         '__display__');
      ($stdout,$stderr)=$handle->cmd($sudo.
         "/usr/local/bin/python$version -m pip install pyasn1-modules",
         '__display__');
      ($stdout,$stderr)=$handle->cmd($sudo.
         "/usr/local/bin/python$version -m pip install --upgrade oauth2client",
         '__display__');
      ($stdout,$stderr)=$handle->cwd('~/FullAutoAPI/deps');
      ($stdout,$stderr)=$handle->cmd($sudo.
         "/usr/local/bin/python$version -m pip install oauth2",
         '__display__');
      unless ($^O eq 'cygwin') {
         ($stdout,$stderr)=$handle->cmd('echo /usr/local/lib > '.
            '~/local.conf','__display__');
         ($stdout,$stderr)=$handle->cmd($sudo.'chmod -v 644 ~/local.conf',
            '__display__');
         ($stdout,$stderr)=$handle->cmd($sudo.
            'mv -v ~/local.conf /etc/ld.so.conf.d','__display__');
         ($stdout,$stderr)=$handle->cmd($sudo.'ldconfig');
      } else {
         ($stdout,$stderr)=$handle->cmd(
            "python$version -m pip install awscli",
            '__display__');
      }
      $sudo='sudo env "PATH=$PATH" ';
      ($stdout,$stderr)=$handle->cmd($sudo.
         'python --version','__display__');
   }
}
$do=0;
if ($do==1) {
   ($stdout,$stderr)=$handle->cmd($sudo.
      "wget --random-wait --progress=dot ".
      "https://bootstrap.pypa.io/ez_setup.py",'__display__');
   if ($^O eq 'cygwin') {
      # ez_setup.py uses curl by default which is broken with --location
      # in Cygwin. So using wget instead by forcing return False.
      ($stdout,$stderr)=$handle->cmd(
         "sed -i '/has_curl()/areturn False' ez_setup.py");
      $handle->cmd_raw(
         "sed -i 's/\\(^return False$\\\)/    \\1/' ez_setup.py");
   } else {
      ($stdout,$stderr)=$handle->cmd($sudo.
         "chown -v $username:$username ez_setup.py",'__display__');
   }
   ($stdout,$stderr)=$handle->cmd('python ez_setup.py','__display__');
   ($stdout,$stderr)=$handle->cmd('easy_install pip','__display__');
#   ($stdout,$stderr)=$handle->cmd(
#      'git clone https://github.com/pypa/setuptools.git','__display__');
#   ($stdout,$stderr)=$handle->cmd(
#      'chown -Rv $username:$username setuptools','__display__')
#      if $^O ne 'cygwin';
#   ($stdout,$stderr)=$handle->cwd('~/FullAutoAPI/deps/setuptools');
#print "OK1\n";
#   ($stdout,$stderr)=$handle->cmd($sudo.'python setup.py install',
#      '__display__');
   ($stdout,$stderr)=$handle->cwd('~/FullAutoAPI/deps');
   ($stdout,$stderr)=$handle->cmd(
      'git clone https://github.com/google/oauth2client.git','__display__');
   ($stdout,$stderr)=$handle->cwd('oauth2client');
   ($stdout,$stderr)=$handle->cmd($sudo.'python setup.py install',
      '__display__');
   ($stdout,$stderr)=$handle->cwd('~/FullAutoAPI/deps');
   unless ($^O eq 'cygwin') {
      ($stdout,$stderr)=$handle->cmd($sudo.'pip install httplib2','__display__');
      ($stdout,$stderr)=$handle->cmd($sudo."ls -1 ".
         "/usr/local/lib/python2.7/site-packages",'__display__');
      $stdout=~s/^.*(httplib2.*?egg).*$/$1/s;
      ($stdout,$stderr)=$handle->cmd($sudo."chmod o+r -v -R ".
         "/usr/local/lib/python2.7/site-packages/$stdout",
         '__display__');
   }
   ($stdout,$stderr)=$handle->cmd($sudo.'pip install oauth2','__display__');
   unless ($^O eq 'cygwin') {
      ($stdout,$stderr)=$handle->cmd('echo /usr/local/lib > '.
         'local.conf','__display__');
      ($stdout,$stderr)=$handle->cmd($sudo.'chmod -v 644 local.conf',
         '__display__');
      ($stdout,$stderr)=$handle->cmd(
         $sudo.'mv -v local.conf /etc/ld.so.conf.d','__display__');
      ($stdout,$stderr)=$handle->cmd($sudo.'ldconfig');
   } else {
      ($stdout,$stderr)=$handle->cmd('pip install awscli','__display__');
   }
}
}
$do=1;
if ($do==1) {
   ($stdout,$stderr)=$handle->cmd($sudo.
      'git clone https://github.com/zeromq/zeromq4-x.git',
      '__display__');
   ($stdout,$stderr)=$handle->cwd('zeromq4-x');
   my $zmq_branch='v4.0.1';
   ($stdout,$stderr)=$handle->cmd($sudo.
      "git checkout $zmq_branch",'__display__');
   if ($^O eq 'cygwin') {
      ($stdout,$stderr)=$handle->cmd("./autogen.sh",'__display__');
      $handle->cmd_raw('export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig');
      ($stdout,$stderr)=$handle->cmd('./configure','__display__');
      my $ad="        -no-undefined \\%NL%".
             "        -avoid-version \\";
      ($stdout,$stderr)=$handle->cmd(
         "sed -i \'/^libzmq_la_LDFLAGS = \\/a$ad\' ./Makefile");
      ($stdout,$stderr)=$handle->cmd( # bash shell specific
         "sed -i \'s/%NL%/\'\"`echo \\\\\\n`/g\" ".
         "./Makefile");
   } else {
      # Following cmd shows default pkg-config locations
      # pkg-config --variable pc_path pkg-config
      $handle->cmd_raw('export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig');
      my $e='PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ';

lib/Net/FullAuto/ISets/Local/FullAutoAPI_is.pm  view on Meta::CPAN

      ($stdout,$stderr)=$handle->cmd($sudo.'service nginx start',
         '__display__');
      ($stdout,$stderr)=$handle->cwd("$nginx_path/nginx");
      foreach my $num (1..3) {
         sleep 3;
         ($stdout,$stderr)=clean_filehandle($handle);
         $handle->print($sudo.
            "certbot --nginx -d $domain_url -d www.$domain_url");
         $prompt=$handle->prompt();
         my $output='';
         while (1) {
            $output.=fetch($handle);
            last if $output=~/$prompt/;
            print $output;
            if (-1<index $output,'Attempt to reinstall') {
               $handle->print('1');
               $output='';
            } elsif (-1<index $output,'No redirect') {
               $handle->print('2');
               $output='';
            } elsif (-1<index $output,'Enter email address') {
               $handle->print('brian.kelly@fullauto.com');
               $output='';
            } elsif (-1<index $output,'Terms of Service') {
               $handle->print('A');
               $output='';
            } elsif (-1<index $output,'Would you be willing') {
               $handle->print('Y');
               $output='';
            } elsif ((-1<index $output,'existing certificate')
                  && (-1==index $output,'--duplicate')) {
               $handle->print('C');
               $output='';
            }
         }
         ($stdout,$stderr)=clean_filehandle($handle);
         ($stdout,$stderr)=$handle->cmd($sudo.
            'grep Certbot /etc/nginx/nginx.conf');
         last if $stdout;
      }
      # https://ssldecoder.org
      ($stdout,$stderr)=$handle->cmd($sudo."service nginx restart",
         '__display__');
   }
}
$do=0;
if ($do==1) { # NGINX
print "DOING NGINX\n";
   # https://nealpoole.com/blog/2011/04/setting-up-php-fastcgi-and-nginx
   #    -dont-trust-the-tutorials-check-your-configuration/
   # https://www.digitalocean.com/community/tutorials/
   #    understanding-and-implementing-fastcgi-proxying-in-nginx
   # http://dev.soup.io/post/1622791/I-managed-to-get-nginx-running-on
   # http://search.cpan.org/dist/Catalyst-Manual-5.9002/lib/Catalyst/
   #    Manual/Deployment/nginx/FastCGI.pod
   my $nginx='nginx-1.10.0';
   $nginx='nginx-1.9.13' if $^O eq 'cygwin';
   ($stdout,$stderr)=$handle->cmd($sudo."wget --random-wait --progress=dot ".
      "http://nginx.org/download/$nginx.tar.gz",'__display__');
   ($stdout,$stderr)=$handle->cmd($sudo.
      "chown -v $username:$username $nginx.tar.gz",'__display__')
      if $^O ne 'cygwin';
   ($stdout,$stderr)=$handle->cmd("tar xvf $nginx.tar.gz",'__display__');
   ($stdout,$stderr)=$handle->cwd($nginx);
   ($stdout,$stderr)=$handle->cmd("mkdir -vp objs/lib",'__display__');
   ($stdout,$stderr)=$handle->cwd("objs/lib");
   my $pcre='pcre-8.40';
   my $checksum='';
   ($stdout,$stderr)=$handle->cmd($sudo."wget --random-wait --progress=dot ".
      "ftp://ftp.csx.cam.ac.uk/pub/software/".
      "programming/pcre/$pcre.tar.gz",'__display__');
   ($stdout,$stderr)=$handle->cmd($sudo.
      "chown -v $username:$username $pcre.tar.gz",'__display__')
      if $^O ne 'cygwin';
   ($stdout,$stderr)=$handle->cmd($sudo."tar xvf $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/^.*?tar.gz.*?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";
         &Net::FullAuto::FA_Core::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.0.2h';
   $checksum='577585f5f5d299c44dd3c993d3c0ac7a219e4949';
   ($stdout,$stderr)=$handle->cmd($sudo."wget --random-wait --progress=dot ".
      "https://www.openssl.org/source/$ossl.tar.gz",
      '__display__');
   ($stdout,$stderr)=$handle->cmd($sudo.
      "chown -v $username:$username $ossl.tar.gz",'__display__')
      if $^O ne 'cygwin';
   ($stdout,$stderr)=$handle->cmd("sha1sum -c - <<<\"$checksum *$ossl.tar.gz\"",
      '__display__');
   unless ($stderr) {
      print(qq{ + CHECKSUM Test for $ossl *PASSED* \n});
   } else {
      ($stdout,$stderr)=$handle->cmd("rm -rvf $ossl.tar.gz",'__display__');
      my $dc=1;
      print "FATAL ERROR! : CHECKSUM Test for $ossl.tar.gz *FAILED* ",
            "after $dc attempts\n";
      &Net::FullAuto::FA_Core::cleanup;
   }
   ($stdout,$stderr)=$handle->cmd("tar xvf $ossl.tar.gz",'__display__');
   ($stdout,$stderr)=$handle->cwd("~/FullAutoAPI/deps/$nginx");
   my $make_nginx='./configure --sbin-path=/usr/local/nginx/nginx '.
                  '--conf-path=/usr/local/nginx/nginx.conf '.
                  '--pid-path=/usr/local/nginx/nginx.pid '.
                  "--with-http_ssl_module --with-pcre=objs/lib/$pcre ".
                  "--with-zlib=objs/lib/zlib-$zlib_ver";
   ($stdout,$stderr)=$handle->cmd($make_nginx,'__display__');
   ($stdout,$stderr)=$handle->cmd(
      $sudo."sed -i 's/-Werror //' ./objs/Makefile");
   ($stdout,$stderr)=$handle->cmd($sudo.'make install','__display__');
   # https://www.liberiangeek.net/2015/10/
   # how-to-install-self-signed-certificates-on-nginx-webserver/
   ($stdout,$stderr)=$handle->cmd(
      $sudo.'mkdir -vp /etc/nginx/ssl.key');
   ($stdout,$stderr)=$handle->cmd(
      $sudo.'mkdir -vp /etc/nginx/ssl.crt');
   ($stdout,$stderr)=$handle->cmd(
      $sudo.'mkdir -vp /etc/nginx/ssl.csr');
   $handle->print(
      $sudo.'openssl genrsa -des3 -out '.
      "/etc/nginx/ssl.key/$public_ip.key 2048");
   $prompt=$handle->prompt();
   $prompt=~s/\$$//;
   while (1) {
      my $output.=fetch($handle);
      last if $output=~/$prompt/;
      print $output;
      if (-1<index $output,'pass phrase for') {
         $handle->print($service_and_cert_password);
         $output='';
         next;
      } elsif (-1<index $output,'Verifying - Enter') {
         $handle->print($service_and_cert_password);
         $output='';
         next;
      }
   }
   while (1) {
      my $trys=0;
      my $ereturn=eval {
         local $SIG{ALRM} = sub { die "alarm\n" }; # \n required
         alarm 7;
         $handle->print($sudo.
            "openssl req -new -key /etc/nginx/ssl.key/$public_ip.key ".
            "-out /etc/nginx/ssl.csr/$public_ip.csr");
         my $test='';my $output='';
         while (1) {

lib/Net/FullAuto/ISets/Local/FullAutoAPI_is.pm  view on Meta::CPAN

      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");
   } else {
      $handle->print($sudo."/usr/local/nginx/nginx");
      $prompt=$handle->prompt();
      while (1) {
         my $output=fetch($handle);
         last if $output=~/$prompt/;
         print $output;
         if (-1<index $output,'PEM pass phrase') {
            $handle->print($service_and_cert_password);
         }
      }
   }
}
$do=0;
if ($do==1) {
   ($stdout,$stderr)=$handle->cwd("~/FullAutoAPI/deps");
   my $go=$1;my $gosha1=$2;
   ($stdout,$stderr)=$handle->cmd($sudo."wget -qO- https://golang.org/dl");
   if ($^O eq 'cygwin') {
      $stdout=~
         /^.*?href=["]([^"]+windows-amd64.zip)["].*?[<]tt[>](.*?)[<].*$/s;
      $go=$1;$gosha1=$2;
   } else {
      $stdout=~
         /^.*?href=["]([^"]+linux-amd64.tar.gz)["].*?[<]tt[>](.*?)[<].*$/s;
      $go=$1;$gosha1=$2;
   }
   ($stdout,$stderr)=$handle->cmd($sudo.
      "wget --random-wait --progress=dot ".$go,
      '__display__');
   ($stdout,$stderr)=$handle->cmd($sudo.
      "chown -v $username:$username $go",'__display__')
      if $^O ne 'cygwin';
   $go=~s/^.*\/(.*)$/$1/;
   ($stdout,$stderr)=$handle->cmd("sha1sum -c - <<<\"$gosha1 *$go\"",
      '__display__');
   unless ($stderr) {
      print(qq{ + CHECKSUM Test for $go *PASSED* \n});
   } else {
      ($stdout,$stderr)=$handle->cmd($sudo."rm -rvf $go",'__display__');
      print "FATAL ERROR! : CHECKSUM Test for $go *FAILED* ";
      &Net::FullAuto::FA_Core::cleanup;
   }
   if ($^O eq 'cygwin') {
      ($stdout,$stderr)=$handle->cmd("unzip -o $go",'__display__');
   } else {
      ($stdout,$stderr)=$handle->cmd("tar zxvf $go",'__display__');
   }
   ($stdout,$stderr)=$handle->cmd("rm -rvf $go",'__display__');
}
$do=0;
if ($do==1) {
   ($stdout,$stderr)=$handle->cmd($sudo.'wget -qO- '.
      'https://github.com/membrane/service-proxy/releases/latest');
   $stdout=~s/^.*?href=["]([^"]+zip)["].*$/$1/s;
   my $membrane_zip=$stdout;
   ($stdout,$stderr)=$handle->cmd($sudo.
      "wget --random-wait --progress=dot https://github.com".$membrane_zip,
      '__display__');
   ($stdout,$stderr)=$handle->cmd($sudo.
      "chown -v $username:$username $membrane_zip",'__display__')
      if $^O ne 'cygwin';
   $membrane_zip=~s/^.*\/(.*)$/$1/;
   ($stdout,$stderr)=$handle->cmd("unzip -o $membrane_zip",'__display__');
   ($stdout,$stderr)=$handle->cmd("rm -rvf $membrane_zip",'__display__');
   #($stdout,$stderr)=$handle->cmd('git clone --depth=1 '.
   #   'https://github.com/membrane/service-proxy.git','__display__');
exit;
}
   unless (-e '/usr/bin/cpan') {
      if ($^O eq 'cygwin') {
         $handle->print('cpan');
      } else {
         ($stdout,$stderr)=$handle->cmd($sudo.'yum -y install cpan',
            '__display__');
         $handle->print($sudo.'cpan');
      } 
      $prompt=$handle->prompt();
      while (1) {
         my $output=fetch($handle);
         last if $output=~/$prompt/;
         print 'm'.$output;
         if (-1<index $output,'possible automatically') {
            $handle->print('yes');
         } elsif (-1<index $output,'by bootstrapping') {
            $handle->print('sudo');
         } elsif (-1<index $output,'some CPAN') {
            $handle->print('no');
         } elsif (-1<index $output,'pick from') {
            $handle->print('no');
         } elsif (-1<index $output,'CPAN site') {
            $handle->print('http://www.cpan.org');
         } elsif (-1<index $output,'ENTER to quit') {
            $handle->print();
         } elsif ($output=~/cpan[[]\d+[]][>]/) {
            $handle->print('bye');
         }
      }
   }
   ($stdout,$stderr)=$handle->cmd("export PERL_MM_USE_DEFAULT=1");
   if ($^O eq 'cygwin') {
      my $show=<<END;
########################################

   INSTALLING Starman

########################################
END
      print $show;
      $handle->cmd_raw($sudo.
         'perl -MCPAN -e \'CPAN::Shell->notest('.
         '"install","Starman")\'',
         '__display__');
      $show=<<END;
########################################

   INSTALLING HTTP::Server::Simple

########################################
END
      print $show;

lib/Net/FullAuto/ISets/Local/FullAutoAPI_is.pm  view on Meta::CPAN

      File::ReadBackwards
      Imager
      Astro::MoonPhase
      Date::Manip
      XML::LibXML
      SQL::Translator
      Template::Alloy
      URI::Amazon::APA 
      Catalyst::Runtime
      Proc::ProcessTable
      Parallel::Forker
      UUID::Tiny
      Regexp::Assemble
      Bytes::Random::Secure
      Math::Random::ISAAC::XS
      HTML::FormHandler
      Crypt::PassGen
      Catalyst::Controller::HTML::FormFu
      HTML::FormHandler::Model::DBIC
      HTML::FormHandler::Model::DBIC
      CatalystX::OAuth2
      Task::Catalyst::Tutorial
      YAML::Syck
      Catalyst::Model::Adaptor

   );

      #EXODIST/Test-Simple-1.001014.tar.gz
      #Test::Aggregate
      #Test::Aggregate::Nested

# https://metacpan.org/pod/DBIx::Class::Manual::Cookbook#Predefined-searches
# # http://ajct.info/2015/08/16/oauth-and-catalyst.html
# # http://stackoverflow.com/questions/23652166/how-to-generate-oauth-2-client-id-and-secret
# # https://bshaffer.github.io/oauth2-server-php-docs/grant-types/refresh-token/


   # http://cygwin.1069669.n5.nabble.com/where-is-my-quot-usr-dict-
   # words-quot-or-quot-usr-share-dict-words-on-cygwin-1-7-td59328.html
   ($stdout,$stderr)=$handle->cwd('deps');
   my $mirror='https://dl.fedoraproject.org/pub/fedora/linux/releases/';
   # "http://mirrors.maine.edu/Fedora/releases/";
   ($stdout,$stderr)=$handle->cmd($sudo."wget -qO- $mirror");
   my @num=();
   foreach my $line (split /\n/, $stdout) {
      next unless $line=~/DIR/;
      $line=~/^.*DIR.*href=["](\d+)\/["].*$/;
      my $num=$1;
      next unless $num;
      push @num, $num;
   }
   my $num=(reverse sort {$a<=>$b} @num)[0];
   ($stdout,$stderr)=$handle->cmd($sudo.
      "wget -qO- $mirror$num/Server/x86_64/os/Packages/w/");
   $stdout=~s/^.*(words.*?rpm).*$/$1/s;
   ($stdout,$stderr)=$handle->cmd($sudo.
      "wget --random-wait --progress=dot ".
      "$mirror$num/Server/x86_64/os/Packages/w/$stdout",
      '__display__');
   ($stdout,$stderr)=$handle->cmd($sudo.
      "chown -v $username:$username words*.rpm",
      '__display__')
      if $^O ne 'cygwin';
   ($stdout,$stderr)=$handle->cmd(
      "rpm2cpio words*.rpm | \(cd /; cpio -idmv\)");
   ($stdout,$stderr)=$handle->cmd($sudo.'chmod -v 755 /usr/share/dict/',
      '__display__');
   ($stdout,$stderr)=$handle->cwd("~/FullAutoAPI");
   my $install_fullautoapi=<<'END';


          o o    o .oPYo. ooooo    .oo o     o     o o    o .oPYo.
          8 8b   8 8        8     .P 8 8     8     8 8b   8 8    8
          8 8`b  8 `Yooo.   8    .P  8 8     8     8 8`b  8 8
          8 8 `b 8     `8   8   oPooo8 8     8     8 8 `b 8 8   oo
          8 8  `b8      8   8  .P    8 8     8     8 8  `b8 8    8
          8 8   `8 `YooP'   8 .P     8 8oooo 8oooo 8 8   `8 `YooP8
          ........................................................
          ::::::::::::::::::::::::::::::::::::::::::::::::::::::::
                     _
                   ((_)
                    /
                   /              _        _           _
               \__/_     ___ __ _| |_ __ _| |_   _ ___| |_
               /    \   / __/ _` | __/ _` | | | | / __| __|  Perl MVC
            _- |    |  | (_| (_| | || (_| | | |_| \__ \ |    framework
       _ _-'   \____/   \___\__,_|\__\__,_|_|\__, |___/\__|c
     ((_)       ---\                         |___/
                    \
                     \\_          Web Framework
                      (_)

     (Catalyst Foundation is **NOT** a sponsor of the FullAuto© Project.)
END
   foreach my $module (@cpan_modules) {
      next if $module=~/^\s*[#]/;
      my $show=<<END;
########################################

   INSTALLING $module

########################################
END
      sleep 1;
      print $show;
      if ($module eq 'Catalyst::Runtime') {
         print $install_fullautoapi;
         sleep 10;
      }
      if ($module eq 'Regexp::Assemble' ||
            $module eq 'ZMQ::LibZMQ4' ||
            $module eq 'CatalystX::OAuth2') {
         $handle->print($sudo.
            'perl -MCPAN -e \'CPAN::Shell->force('.
            "\"install\",\"$module\")\'"
         )
      } else {
         $handle->print($sudo."cpan $module 2>&1");
      }
      my $prompt=$handle->prompt();
      my $error=0;my $force=0;my $tries=0;my $allout='';my $save='';

lib/Net/FullAuto/ISets/Local/FullAutoAPI_is.pm  view on Meta::CPAN

<td><label class=\\x22text.label\\x22 for=\\x22[% f.name %]\\x22>[% f.label %]:</label></td>
<td><input class=\\x22text\\x22 type=\\x22text\\x22 size=30 name=\\x22[% f.name %]\\x22 id=\\x22[% f.name %]\\x22 value=\\x22[% f.fif %]\\x22></td>
</tr>
[% END %]
<tr>
[% f = form.field('roles') %]
<td><label for=\\x22[% f.name %]\\x22>Roles:</label></td>
<td>[% f.render %]</td>
</tr>
ENDD
   ($stdout,$stderr)=$handle->cmd(
      "echo -e \"$content\" > root/user/edit_details.tt2");
   ($stdout,$stderr)=$handle->cmd("touch root/user/profile.tt2",
      '__display__');
   $content=<<'ENDD';
[% META title = 'MyApp: User Profile' %]

<div>
<form name=\\x22[% form.name %]\\x22 action=\\x22[% c.req.uri %]\\x22 method=\\x22post\\x22>

[% FOR field IN form.error_fields %]
    [% FOR error IN field.errors %]
        <p><span style=\\x22color: red;\\x22>[% field.label _ ': ' _ error %]</span></p>
    [% END %]
[% END %]

<fieldset style=\\x22border: 0;\\x22>
<table>
[% FOREACH field_name = ['name', 'email_address',
                         'phone_number', 'mail_address'] %]
<tr>
[% f = form.field(field_name) %]
<td><label for=\\x22[% f.name %]\\x22>[% f.label %]:</label></td>
<td><input type=\\x22text\\x22 size=30 name=\\x22[% f.name %]\\x22 id=\\x22[% f.name %]\\x22 value=\\x22[% f.fif %]\\x22></td>
</tr>
[% END %]
<tr><td><input type=\\x22submit\\x22 name=\\x22submit\\x22 id=\\x22submit\\x22 value=\\x22Update\\x22 /></td></tr>
</fieldset>
</table>
</form>
</div>
ENDD
   ($stdout,$stderr)=$handle->cmd(
      "echo -e \"$content\" > root/user/profile.tt2");
   ($stdout,$stderr)=$handle->cmd('mkdir -vp db lib/FullAutoAPI/Schema',
      '__display__');
   ($stdout,$stderr)=$handle->cmd($sudo.'chmod -v 777 db');
   ($stdout,$stderr)=$handle->cwd('db');
   my $have_fadb=1; 
   unless (-e 'fullautoapi.db') {
      $have_fadb=0;
      #($stdout,$stderr)=$handle->cmd($sudo.
      #   "wget --random-wait --progress=dot ".
      #   "http://dev.catalyst.perl.org/repos/Catalyst/trunk/".
      #   "examples/RestYUI/db/adventrest.db",
      #   '__display__');
      ($stdout,$stderr)=$handle->cmd($sudo.
         "cp -v $builddir/$ls_tmp[0]/api/RestYUI/db/adventrest.db .",
         '__display__');
      ($stdout,$stderr)=$handle->cmd($sudo.
         "chown -v $username:$username adventrest.db",
         '__display__')
         if $^O ne 'cygwin';
      ($stdout,$stderr)=$handle->cmd($sudo.'mv adventrest.db fullautoapi.db');
   }
   ($stdout,$stderr)=$handle->cwd('~/FullAutoAPI');
   my $db_sql="db.sql";
   $content=<<'END';
DROP TABLE IF EXISTS users;
DROP TABLE IF EXISTS roles;
DROP TABLE IF EXISTS user_roles;
DROP TABLE IF EXISTS client;
DROP TABLE IF EXISTS owner;
DROP TABLE IF EXISTS access_token_to_refresh_token;
DROP TABLE IF EXISTS refresh_token;
DROP TABLE IF EXISTS refresh_token_to_access_token;
DROP TABLE IF EXISTS code;
DROP TABLE IF EXISTS token;

CREATE TABLE token (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    code_id INTEGER NOT NULL,
    timestamp TEXT,
    FOREIGN KEY (code_id) REFERENCES code(id)
);

CREATE TABLE code (
    client_id INTEGER NOT NULL,
    id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
    is_active INTEGER NOT NULL DEFAULT 1,
    owner_id INTEGER,
    FOREIGN KEY (client_id) REFERENCES client(id),
    FOREIGN KEY (owner_id) REFERENCES owner(id)
);

CREATE TABLE refresh_token_to_access_token (
    access_token_id INTEGER NOT NULL UNIQUE,
    code_id INTEGER NOT NULL,
    refresh_token_id INTEGER NOT NULL UNIQUE,
    PRIMARY KEY (access_token_id, code_id, refresh_token_id),
    FOREIGN KEY (access_token_id) REFERENCES token(id),
    FOREIGN KEY (code_id) REFERENCES code(id),
    FOREIGN KEY (refresh_token_id) REFERENCES refresh_token(id)
);

CREATE TABLE refresh_token (
    id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,
    code_id INTEGER NOT NULL,
    timestamp TEXT,
    FOREIGN KEY (code_id) REFERENCES code(id)
);

CREATE TABLE access_token_to_refresh_token (
    access_token_id INTEGER NOT NULL UNIQUE,
    code_id INTEGER NOT NULL,
    refresh_token_id INTEGER NOT NULL UNIQUE,
    PRIMARY KEY (access_token_id, code_id, refresh_token_id),
    FOREIGN KEY (access_token_id) REFERENCES token(id),
    FOREIGN KEY (code_id) REFERENCES code(id),
    FOREIGN KEY (refresh_token_id) REFERENCES refresh_token(id)
);

lib/Net/FullAuto/ISets/Local/FullAutoAPI_is.pm  view on Meta::CPAN


=pod

=head1 NAME

FUllAutoAPI::Schema::ResultSet::Client

=head1 VERSION

version 0.001004

=head1 AUTHOR

Eden Cardim <edencardim\@gmail.com>

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2015 by Suretec Systems Ltd.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.

=cut
ENDD
   my $resultset_path="./lib/FullAutoAPI/Schema/ResultSet/Client.pm";
   ($stdout,$stderr)=$handle->cmd(
      "mkdir -vp ./lib/FullAutoAPI/Schema/ResultSet",'__display__');
   ($stdout,$stderr)=$handle->cmd("touch $resultset_path");
   ($stdout,$stderr)=$handle->cmd(
      $sudo."chmod -v 777 $resultset_path",'__display__');
   ($stdout,$stderr)=$handle->cmd(
      "echo -e \"$content\" > $resultset_path");
   my $user_path="./lib/FullAutoAPI/Schema/Result/Users.pm";
   $ad="%NL%__PACKAGE__->add_columns(%NL%".
       "    %SQ%+password%SQ% => {%NL%".
       "        passphrase       => %SQ%rfc2307%SQ%,%NL%".
       "        passphrase_class => %SQ%BlowfishCrypt%SQ%,%NL%".
       "        passphrase_args  => {%NL%".
       "            cost        => 14,%NL%".
       "            salt_random => 20,%NL%".
       "        },%NL%".
       "        passphrase_check_method => %SQ%check_password%SQ%,%NL%".
       "    }%NL%".
       ");";
   ($stdout,$stderr)=$handle->cmd(
      "${sudo}sed -i '/DO NOT MODIFY THIS/a$ad' $user_path");
   ($stdout,$stderr)=$handle->cmd( # bash shell specific
      "${sudo}sed -i \'s/%NL%/\'\"`echo \\\\\\n`/g\" $user_path");
   ($stdout,$stderr)=$handle->cmd("${sudo}sed -i \"s/%SQ%/\'/g\" $user_path");
   ($stdout,$stderr)=$handle->cmd("./script/fullautoapi_create.pl ".
      "controller OAuth2::Provider",'__display__');
   ($stdout,$stderr)=$handle->cwd('deps');
   ($stdout,$stderr)=$handle->cmd($sudo."wget -qO- http://libevent.org/");
   $stdout=~/^.*Stable releases.*?href=["](.*?)["].*?href=["](.*?)["].*$/s;
   my $le_rel=$1;my $le_asc=$2;
   ($stdout,$stderr)=$handle->cmd($sudo.
      "wget --random-wait --progress=dot ".$le_rel,'__display__');
   $le_rel=~s/^.*\/(.*)$/$1/;
   $le_asc=~s/^.*\/(.*)$/$1/;
   ($stdout,$stderr)=$handle->cmd($sudo.
      "chown -v $username:$username $le_rel",
      '__display__')
      if $^O ne 'cygwin';
   ($stdout,$stderr)=$handle->cmd($sudo.
      "wget --random-wait --progress=dot ".$le_asc,'__display__');
   ($stdout,$stderr)=$handle->cmd($sudo.
      "chown -v $username:$username $le_asc",
      '__display__')
      if $^O ne 'cygwin';
   $le_rel=~s/^.*\/(.*.tar.gz)$/$1/;
   ($stdout,$stderr)=$handle->cmd("tar xvf $le_rel",'__display__');
   $stdout=~s/^.*\n(.*)\/.*$/$1/s;
   ($stdout,$stderr)=$handle->cwd($stdout);
   ($stdout,$stderr)=$handle->cmd('./autogen.sh','__display__');
   ($stdout,$stderr)=$handle->cmd('./configure',300,'__display__');
   ($stdout,$stderr)=$handle->cmd('make','__display__');
   ($stdout,$stderr)=$handle->cmd($sudo.'make install','__display__');
   ($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');

lib/Net/FullAuto/ISets/Local/FullAutoAPI_is.pm  view on Meta::CPAN

name: FullAutoAPI
Model::DB:
    schema_class: FullAutoAPI::Schema
    connect_info:
        - DBI:SQLite:dbname=__path_to(db/fullautoapi.db)__
        - \\x22\\x22
        - \\x22\\x22
END
   ($stdout,$stderr)=$handle->cmd($sudo."touch fullautoapi.yml");
   ($stdout,$stderr)=$handle->cmd($sudo."chmod -v 777 fullautoapi.yml",
      '__display__');
   ($stdout,$stderr)=$handle->cmd("echo -e \"$content\" > fullautoapi.yml");
   ($stdout,$stderr)=$handle->cmd($sudo."chmod -v 644 fullautoapi.yml",
      '__display__');
   $content=<<'END';
<View::Email::Template>
    <sender>
        mailer Sendmail
    </sender>
    template_prefix email
    <default>
        content_type text/html
        charset utf-8
        view TT
    </default>
</View::Email::Template>
 
default_view TT
END
   ($stdout,$stderr)=$handle->cmd($sudo.'chmod -v 777 fullautoapi.conf',
      '__display__');
   ($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') {

lib/Net/FullAuto/ISets/Local/FullAutoAPI_is.pm  view on Meta::CPAN

__PACKAGE__->meta->make_immutable;

1;
END
   ($stdout,$stderr)=$handle->cmd("echo -e \"$content\" > ChangePassword.pm");
   $content=<<END;
package FullAutoAPI::Form::EditUser;

use HTML::FormHandler::Moose;
extends 'FullAutoAPI::Form::UserProfile';
use namespace::autoclean;

has_field 'roles' => (
    type         => 'Multiple',
    widget       => 'checkbox_group',
    label_column => 'name',
    label        => '',
);

__PACKAGE__->meta->make_immutable;

1;
END
   ($stdout,$stderr)=$handle->cmd("echo -e \"$content\" > EditUser.pm");
   $content=<<END;
package FullAutoAPI::Form::UserProfile;

use HTML::FormHandler::Moose;
extends 'HTML::FormHandler::Model::DBIC';
use namespace::autoclean;

has '+item_class' => (default => 'Users');

has_field 'name'          => ( type => 'Text',  required => 1 );
has_field 'email_address' => ( type => 'Email', required => 1 );
has_field 'phone_number'  => ( type => 'Text' );
has_field 'mail_address'  => ( type => 'Text' );

has_field submit => (
   type  => 'Submit',
   value => 'Update'
);

__PACKAGE__->meta->make_immutable;

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>

lib/Net/FullAuto/ISets/Local/FullAutoAPI_is.pm  view on Meta::CPAN

       "%NL%".
       "                    zmq_msg_send(\$c_addr,\$frontend,ZMQ_SNDMORE);%NL%".
       "                    zmq_msg_send(%SQ%%SQ%,\$frontend,ZMQ_SNDMORE);%NL%".
       "                    zmq_msg_send(\$data,\$frontend);%NL%".
       "%NL%".
       "                } else {%NL%".
       "                    print %SQ%worker checking in: %SQ%.\$w_addr.\"\\n\";%NL%".
       "                }%NL%".
       "            },%NL%".
       "         },%NL%".
       "   ];%NL%".
       "   while(1){%NL%".
       "      zmq_poll(\$items);%NL%".
       "      select undef,undef,undef,0.025;%NL%".
       "      if (getppid==1) {%NL%".
       "         `pgrep -P \$\$ | xargs kill -TERM`;%NL%".
       "          exit;%NL%".
       "      }%NL%".
       "   }%NL%".
       "%NL%".
       "};%NL%".
       "%NL%".
       "my \$Fork = new Parallel::Forker();%NL%".
       "\$Fork->schedule(run_on_start => \$zeromq_broker)->run()%NL%".
       "   if \$Fork->in_parent;%NL%".
       "setpgrp(0,0) unless \$Fork->in_parent;%NL%".
       "%NL%".
       "for (1..NBR_WORKERS()) {%NL%".
       "%NL%".
       "   my \$Fork = new Parallel::Forker();%NL%".
       "   #\$SIG{TERM} = sub { \$Fork->kill_tree_all(%SQ%TERM%SQ%) ".
       "if \$Fork && \$Fork->in_parent; die \"Quitting...\\n\"; };%NL%".
       "   \$Fork->schedule(run_on_start => \$fa_sub)->run()%NL%".
       "      if \$Fork->in_parent;%NL%".
       "   setpgrp(0,0) unless \$Fork->in_parent;%NL%".
       "%NL%".
       "}%NL%";
   ($stdout,$stderr)=$handle->cmd(
      "${sudo}sed -i \'/use Catalyst::ScriptRunner/i$ad\' ".
      "./script/fullautoapi_fastcgi.pl");
   ($stdout,$stderr)=$handle->cmd( # bash shell specific
      "${sudo}sed -i \'s/%NL%/\'\"`echo \\\\\\n`/g\" ".
      "./script/fullautoapi_fastcgi.pl");
   ($stdout,$stderr)=$handle->cmd("${sudo}sed -i \"s/%SQ%/\'/g\" ".
      "./script/fullautoapi_fastcgi.pl");
   ($stdout,$stderr)=$handle->cmd("${sudo}ldconfig");
   ($stdout,$stderr)=$handle->cmd('./script/set_admin_password.pl');
   if ($^O eq 'cygwin') {
      ($stdout,$stderr)=$handle->cmd("cygrunsrv -I memcached ".
         "-p /usr/local/bin/memcached");
      ($stdout,$stderr)=$handle->cmd("cygrunsrv -I fullautoapi ".
         "-y memcached -p /cygdrive/c/cygwin64/bin/bash -a ".
         "'-lc \"/bin/perl /home/$username/FullAutoAPI/script/".
         "fullautoapi_fastcgi.pl -l localhost:3003\"'");
      ($stdout,$stderr)=$handle->cmd("cygrunsrv --start fullautoapi");
      sleep 15;
      print "\n   ACCESS FULLAUTO API MANAGEMENT DASHBOARD AT:\n\n",
            " https://$domain_url  -OR-  https://localhost\n";
   } else {
      ($stdout,$stderr)=$handle->cmd($sudo.
         "chown -Rv $username:$username .",'3600');
      #($stdout,$stderr)=$handle->cmd($sudo.
      #   "cp -v $builddir/$ls_tmp[0]/api/memcached /etc/init.d",
      #   '__display__');
      #($stdout,$stderr)=$handle->cmd($sudo.
      #   'chmod -v 755 /etc/init.d/memcached','__display__');
      ($stdout,$stderr)=$handle->cmd($sudo.
         "cp -v $builddir/$ls_tmp[0]/api/fullautoapi /etc/init.d",
         '__display__');
      ($stdout,$stderr)=$handle->cmd($sudo.
         'chmod -v 755 /etc/init.d/fullautoapi','__display__');
      ($stdout,$stderr)=$handle->cmd($sudo.
         'chmod -v 777 /var/log','__display__');
      ($stdout,$stderr)=$handle->cmd($sudo.
         'chmod -v 777 /var/lock/subsys','__display__');
      print "\n   STARTING FULLAUTO API MANAGEMENT DASHBOARD . . .\n\n",
      ($stdout,$stderr)=$handle->cmd($sudo.
         'service fullautoapi start','__display__');
      sleep 15;
      print "\n   ACCESS FULLAUTO API MANAGEMENT DASHBOARD AT:\n\n",
            " https://$domain_url\n";
   }
   my $thanks=<<'END';

     ______                  _    ,
       / /              /   ' )  /        /
    --/ /_  __.  ____  /_    /  / __ . . /
   (_/ / /_(_/|_/ / <_/ <_  (__/_(_)(_/_'   For Trying
                             //

           _   _      _         _____      _ _    _         _
          | \ | | ___| |_      |  ___|   _| | |  / \  _   _| |_  |
          |  \| |/ _ \ __| o o | |_ | | | | | | / _ \| | | | __/ | \
          | |\  |  __/ |_  o o |  _|| |_| | | |/ ___ \ |_| | ||     |
          |_| \_|\___|\__|     |_|   \__,_|_|_/_/   \_\__,_|\__\___/ (C)


   Copyright (C) 2000-2026  Brian M. Kelly  Brian.Kelly@FullAuto.com

END
   eval {
      local $SIG{ALRM} = sub { die "alarm\n" }; # \n required
      alarm 15;
      print $thanks;
      print "   \n   Press Any Key to EXIT ... ";
      <STDIN>;
   };alarm(0);
   print "\n\n";
   #print "\n\n\n   Please wait at least a minute for the Default Browser\n",
   #      "   to start with your new Catalyst installation!\n\n\n";
   &Net::FullAuto::FA_Core::cleanup;

};

my $standup_fullautoapi=sub {

   my $catalyst="]T[{select_fullautoapi_setup}";
   my $password="]I[{'enter_password',1}";
   my $domain_url="]I[{'domain_url',1}";
   my $cnt=0;
   $configure_fullautoapi->($catalyst,$password,$domain_url);



( run in 0.517 second using v1.01-cache-2.11-cpan-71847e10f99 )