├── .github └── FUNDING.yml ├── overlay ├── php │ ├── var │ │ └── www │ │ │ └── default │ │ │ └── public │ │ │ ├── adminer │ │ │ ├── plugins │ │ │ │ ├── index.html │ │ │ │ ├── plugin_ForeignConvention.php │ │ │ │ ├── plugin_EditForeign.php │ │ │ │ └── plugin_EnumOption.php │ │ │ ├── index.php │ │ │ └── adminer.css │ │ │ └── info.php │ └── etc │ │ └── nginx │ │ └── conf.d │ │ └── http_fastcgi.conf ├── mysql │ ├── root │ │ └── .my.cnf │ └── etc │ │ └── mysql │ │ └── conf.d │ │ └── halBox.cnf ├── composer │ └── etc │ │ └── cron.monthly │ │ └── composer ├── clamav │ ├── var │ │ └── quarantine │ │ │ └── eicar.test │ └── etc │ │ └── cron.daily │ │ └── clamav ├── iptables │ └── etc │ │ ├── network │ │ └── if-pre-up.d │ │ │ └── iptables │ │ └── iptables.rules ├── nginx │ ├── etc │ │ └── nginx │ │ │ ├── conf.d │ │ │ ├── http_fastcgi.conf │ │ │ ├── http_gzip_static.conf │ │ │ ├── http_empty_gif.conf │ │ │ ├── http_autoindex.conf │ │ │ ├── http_limit_req.conf │ │ │ ├── http_charset.conf │ │ │ ├── http_gzip.conf │ │ │ ├── http_ssl.conf │ │ │ └── http.conf │ │ │ ├── nginx.conf │ │ │ ├── fastcgi_params │ │ │ ├── sites-available │ │ │ ├── default │ │ │ └── example.com │ │ │ └── mime.types │ ├── var │ │ └── www │ │ │ └── default │ │ │ ├── public │ │ │ ├── favicon.ico │ │ │ ├── robots.txt │ │ │ └── index.html │ │ │ └── error │ │ │ ├── 403.html │ │ │ ├── 404.html │ │ │ ├── 5xx.html │ │ │ └── 405.html │ └── usr │ │ └── local │ │ └── sbin │ │ ├── ngxdissite │ │ ├── ngxensite │ │ ├── ngxgzip │ │ └── ngxsite ├── php5-yar │ └── etc │ │ └── php5 │ │ └── mods-available │ │ └── yar.ini ├── php5-solr │ └── etc │ │ └── php5 │ │ └── mods-available │ │ └── solr.ini ├── php5-http │ └── etc │ │ └── php5 │ │ └── mods-available │ │ └── http.ini ├── rsync │ └── usr │ │ └── local │ │ └── bin │ │ ├── rsync_rm │ │ ├── rsync_cp │ │ └── rsync_mv ├── ntp │ └── etc │ │ └── ntp.conf ├── letsencrypt │ └── etc │ │ ├── letsencrypt │ │ └── letsencrypt.ini │ │ └── cron.monthly │ │ └── letsencrypt ├── postgresql │ └── main │ │ └── pg_hba.conf ├── zsh │ └── root │ │ └── .zshrc ├── php5 │ └── etc │ │ └── php5 │ │ └── mods-available │ │ ├── halBox-dev.ini │ │ └── halBox-prod.ini └── php7 │ └── etc │ └── php │ └── mods-available │ ├── halBox-dev.ini │ └── halBox-prod.ini ├── packages └── ubuntu │ ├── trusty │ ├── go │ │ ├── godep.sh │ │ ├── goxc.sh │ │ ├── glide.sh │ │ ├── godef.sh │ │ ├── godoc.sh │ │ ├── jsonf.sh │ │ ├── devd.sh │ │ ├── errcheck.sh │ │ ├── oracle.sh │ │ ├── penv.sh │ │ ├── godepgraph.sh │ │ ├── goimports.sh │ │ ├── interfacer.sh │ │ ├── gox.sh │ │ └── gometalinter.sh │ ├── virtualbox.sh │ ├── php5 │ │ ├── php5-phpunit.sh │ │ ├── php5-xhprof.sh │ │ ├── php5-composer.sh │ │ ├── php5-librdf.sh │ │ ├── php5-mssql.sh │ │ ├── php5-odbc.sh │ │ ├── php5-pgsql.sh │ │ ├── php5-sqlite.sh │ │ ├── php5-ev.sh │ │ ├── php5-eio.sh │ │ ├── php5-lzf.sh │ │ ├── php5-mysql.sh │ │ ├── php5-rar.sh │ │ ├── php5-yaf.sh │ │ ├── php5-stem.sh │ │ ├── php5-svm.sh │ │ ├── php5-jsmin.sh │ │ ├── php5-stats.sh │ │ ├── php5-uuid.sh │ │ ├── php5-amqp.sh │ │ ├── php5-bitset.sh │ │ ├── php5-chdb.sh │ │ ├── php5-fann.sh │ │ ├── php5-gender.sh │ │ ├── php5-judy.sh │ │ ├── php5-radius.sh │ │ ├── php5-scream.sh │ │ ├── php5-scrypt.sh │ │ ├── php5-ssh2.sh │ │ ├── php5-swoole.sh │ │ ├── php5-yaml.sh │ │ ├── php5-inotify.sh │ │ ├── php5-opcache.sh │ │ ├── php5-sundown.sh │ │ ├── php5-ssdeep.sh │ │ ├── php5-discount.sh │ │ ├── php5-igbinary.sh │ │ ├── php5-sphinx.sh │ │ ├── php5-mailparse.sh │ │ ├── php5-quickhash.sh │ │ ├── php5-libevent.sh │ │ ├── php5-varnish.sh │ │ ├── php5-timezonedb.sh │ │ ├── php5-yar.sh │ │ ├── php5-mogilefs.sh │ │ ├── php5-spidermonkey.sh │ │ ├── php5-doublemetaphone.sh │ │ ├── php5-protocolbuffers.sh │ │ ├── php5-solr.sh │ │ ├── php5-http.sh │ │ ├── php5-tokyo_tyrant.sh │ │ ├── php5-phalcon.sh │ │ └── php5-leveldb.sh │ ├── php7 │ │ ├── php7-phpunit.sh │ │ ├── php7-curl.sh │ │ ├── php7-gd.sh │ │ ├── php7-imap.sh │ │ ├── php7-intl.sh │ │ ├── php7-json.sh │ │ ├── php7-ldap.sh │ │ ├── php7-tidy.sh │ │ ├── php7-pspell.sh │ │ ├── php7-recode.sh │ │ ├── php7-xmlrpc.sh │ │ ├── php7-interbase.sh │ │ ├── php7-memcached.sh │ │ ├── php7-opcache.sh │ │ ├── php7-readline.sh │ │ ├── php7-composer.sh │ │ ├── php7-odbc.sh │ │ ├── php7-pgsql.sh │ │ ├── php7-mysql.sh │ │ ├── php7-sqlite.sh │ │ ├── php7-redis.sh │ │ └── php7-timezonedb.sh │ ├── ps_mem.sh │ ├── mycli.sh │ ├── nginx │ │ └── ngxtop.sh │ ├── mysql │ │ ├── mycli.sh │ │ ├── mysqltuner.sh │ │ ├── tuning-primer.sh │ │ └── innotop.sh │ ├── direnv.sh │ ├── postgresql │ │ └── pgcli.sh │ ├── r.sh │ ├── rkhunter.sh │ ├── imagemagick.sh │ ├── libav-tools.sh │ ├── yui-compressor.sh │ ├── rust.sh │ ├── vmtouch.sh │ ├── rsync.sh │ ├── ruby.sh │ ├── ngrok.sh │ ├── maldet.sh │ ├── iptables.sh │ ├── redis.sh │ ├── dexec.sh │ ├── git.sh │ ├── scout_realtime.sh │ ├── clamav.sh │ ├── exim4.sh │ ├── ntp.sh │ ├── caddy.sh │ ├── sqlite.sh │ ├── zsh.sh │ ├── letsencrypt.sh │ ├── nodejs.sh │ ├── docker.sh │ ├── go.sh │ ├── php5.sh │ ├── postgresql.sh │ ├── php7.sh │ ├── mysql.sh │ ├── mariadb.sh │ └── nginx.sh │ └── trusty.sh ├── .editorconfig ├── LICENSE ├── bin └── mysql_secure_installation.sh ├── README.md └── halBox.sh /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | custom: https://paypal.me/alixaxel 2 | -------------------------------------------------------------------------------- /overlay/php/var/www/default/public/adminer/plugins/index.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /overlay/php/var/www/default/public/info.php: -------------------------------------------------------------------------------- 1 | /dev/null 2>&1 4 | -------------------------------------------------------------------------------- /overlay/iptables/etc/network/if-pre-up.d/iptables: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | iptables-restore < /etc/iptables.rules && exit 0 4 | -------------------------------------------------------------------------------- /overlay/nginx/etc/nginx/conf.d/http_fastcgi.conf: -------------------------------------------------------------------------------- 1 | # //nginx.org/en/docs/http/ngx_http_fastcgi_module.html 2 | 3 | deny all; 4 | -------------------------------------------------------------------------------- /overlay/php5-yar/etc/php5/mods-available/yar.ini: -------------------------------------------------------------------------------- 1 | ; configuration for php Yar module 2 | ; priority=30 3 | 4 | extension="yar.so" 5 | -------------------------------------------------------------------------------- /overlay/php5-solr/etc/php5/mods-available/solr.ini: -------------------------------------------------------------------------------- 1 | ; configuration for php Solr module 2 | ; priority=30 3 | 4 | extension="solr.so" 5 | -------------------------------------------------------------------------------- /overlay/nginx/etc/nginx/conf.d/http_gzip_static.conf: -------------------------------------------------------------------------------- 1 | # //nginx.org/en/docs/http/ngx_http_gzip_static_module.html 2 | 3 | gzip_static on; 4 | -------------------------------------------------------------------------------- /overlay/nginx/var/www/default/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alixaxel/halBox/HEAD/overlay/nginx/var/www/default/public/favicon.ico -------------------------------------------------------------------------------- /packages/ubuntu/trusty/virtualbox.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | DEBIAN_FRONTEND=noninteractive apt-get -qq install virtualbox-guest-dkms > /dev/null 4 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/go/gometalinter.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | go get github.com/alecthomas/gometalinter && gometalinter --install --update > /dev/null 4 | -------------------------------------------------------------------------------- /overlay/clamav/etc/cron.daily/clamav: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | freshclam && clamscan -ir /var/www/ --log=/var/log/clamscan.log --move=/var/quarantine/ --scan-mail=no 4 | -------------------------------------------------------------------------------- /overlay/nginx/var/www/default/public/robots.txt: -------------------------------------------------------------------------------- 1 | User-Agent: * 2 | Allow: / 3 | 4 | User-Agent: Baiduspider 5 | Disallow: / 6 | 7 | User-Agent: Yahoo Pipes 1.0 8 | Disallow: / 9 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-phpunit.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | wget -q https://phar.phpunit.de/phpunit.phar -O /usr/local/bin/phpunit && chmod +x /usr/local/bin/phpunit 4 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php7/php7-phpunit.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | wget -q https://phar.phpunit.de/phpunit.phar -O /usr/local/bin/phpunit && chmod +x /usr/local/bin/phpunit 4 | -------------------------------------------------------------------------------- /overlay/php5-http/etc/php5/mods-available/http.ini: -------------------------------------------------------------------------------- 1 | ; configuration for php HTTP module 2 | ; priority=30 3 | 4 | extension="propro.so" 5 | extension="raphf.so" 6 | extension="http.so" 7 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/ps_mem.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | wget -q https://raw.github.com/pixelb/ps_mem/master/ps_mem.py -O /usr/local/sbin/ps_mem && chmod +x /usr/local/sbin/ps_mem 4 | -------------------------------------------------------------------------------- /overlay/nginx/etc/nginx/conf.d/http_empty_gif.conf: -------------------------------------------------------------------------------- 1 | # //nginx.org/en/docs/http/ngx_http_empty_gif_module.html 2 | 3 | location = /_.gif { 4 | empty_gif; 5 | expires max; 6 | } 7 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/mycli.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install python-dev python-pip > /dev/null && pip -q install -U setuptools pip > /dev/null && pip -q install mycli > /dev/null 4 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/nginx/ngxtop.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [[ ! $(type -P pip) ]]; then 4 | apt-get -qq install python-pip > /dev/null 5 | fi 6 | 7 | pip -q install ngxtop > /dev/null 8 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/mysql/mycli.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install python-dev python-pip > /dev/null && pip -q install -U setuptools pip > /dev/null && pip -q install mycli > /dev/null 2>&1 4 | -------------------------------------------------------------------------------- /overlay/nginx/etc/nginx/conf.d/http_autoindex.conf: -------------------------------------------------------------------------------- 1 | # //nginx.org/en/docs/http/ngx_http_autoindex_module.html 2 | 3 | autoindex on; 4 | autoindex_exact_size off; 5 | autoindex_localtime off; 6 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/direnv.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | wget -q https://github.com/direnv/direnv/releases/download/v2.6.0/direnv.linux-$halBox_Arch -O /usr/local/bin/direnv && chmod +x /usr/local/bin/direnv 4 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/postgresql/pgcli.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install python-dev python-pip > /dev/null && pip -q install -U setuptools pip > /dev/null && pip -q install pgcli > /dev/null 2>&1 4 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/mysql/mysqltuner.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | wget -q https://raw.github.com/rackerhacker/MySQLTuner-perl/master/mysqltuner.pl -O /usr/local/bin/mysqltuner && chmod +x /usr/local/bin/mysqltuner 4 | -------------------------------------------------------------------------------- /overlay/rsync/usr/local/bin/rsync_rm: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [[ $# -eq 1 && -d $1 ]]; then 4 | rsync -av --delete `mktemp -d`/ $1 && rmdir $1 5 | else 6 | echo "Usage: $0 DIRECTORY/" 1>&2 && exit 1 7 | fi 8 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/r.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install r-base > /dev/null 2>&1 4 | 5 | if [[ $? != 0 ]]; then 6 | echo -e "\e[1;31mSomething went wrong installing '$halBox_package'.\e[0m" 7 | fi 8 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | end_of_line = lf 7 | indent_size = 4 8 | indent_style = space 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | -------------------------------------------------------------------------------- /overlay/rsync/usr/local/bin/rsync_cp: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [[ $# -eq 2 && -d $1 && -d $2 ]]; then 4 | rsync -av --ignore-existing $1 $2 5 | else 6 | echo "Usage: $0 SOURCE/ DESTINATION/" 1>&2 && exit 1 7 | fi 8 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/rkhunter.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install rkhunter > /dev/null 2>&1 4 | 5 | if [[ $? != 0 ]]; then 6 | echo -e "\e[1;31mSomething went wrong installing '$halBox_package'.\e[0m" 7 | fi 8 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/imagemagick.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install imagemagick > /dev/null 2>&1 4 | 5 | if [[ $? != 0 ]]; then 6 | echo -e "\e[1;31mSomething went wrong installing '$halBox_package'.\e[0m" 7 | fi 8 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/libav-tools.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install libav-tools > /dev/null 2>&1 4 | 5 | if [[ $? != 0 ]]; then 6 | echo -e "\e[1;31mSomething went wrong installing '$halBox_package'.\e[0m" 7 | fi 8 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/mysql/tuning-primer.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | wget -q https://launchpad.net/mysql-tuning-primer/trunk/1.6-r1/+download/tuning-primer.sh -O /usr/local/bin/tuning-primer && chmod +x /usr/local/bin/tuning-primer 4 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php7/php7-curl.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php7.0-curl > /dev/null 2>&1 4 | 5 | if [[ $? != 0 ]]; then 6 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP7_package'.\e[0m" 7 | fi 8 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php7/php7-gd.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php7.0-gd > /dev/null 2>&1 4 | 5 | if [[ $? != 0 ]]; then 6 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP7_package'.\e[0m" 7 | fi 8 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php7/php7-imap.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php7.0-imap > /dev/null 2>&1 4 | 5 | if [[ $? != 0 ]]; then 6 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP7_package'.\e[0m" 7 | fi 8 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php7/php7-intl.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php7.0-intl > /dev/null 2>&1 4 | 5 | if [[ $? != 0 ]]; then 6 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP7_package'.\e[0m" 7 | fi 8 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php7/php7-json.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php7.0-json > /dev/null 2>&1 4 | 5 | if [[ $? != 0 ]]; then 6 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP7_package'.\e[0m" 7 | fi 8 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php7/php7-ldap.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php7.0-ldap > /dev/null 2>&1 4 | 5 | if [[ $? != 0 ]]; then 6 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP7_package'.\e[0m" 7 | fi 8 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php7/php7-tidy.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php7.0-tidy > /dev/null 2>&1 4 | 5 | if [[ $? != 0 ]]; then 6 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP7_package'.\e[0m" 7 | fi 8 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/yui-compressor.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install yui-compressor > /dev/null 2>&1 4 | 5 | if [[ $? != 0 ]]; then 6 | echo -e "\e[1;31mSomething went wrong installing '$halBox_package'.\e[0m" 7 | fi 8 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php7/php7-pspell.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php7.0-pspell > /dev/null 2>&1 4 | 5 | if [[ $? != 0 ]]; then 6 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP7_package'.\e[0m" 7 | fi 8 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php7/php7-recode.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php7.0-recode > /dev/null 2>&1 4 | 5 | if [[ $? != 0 ]]; then 6 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP7_package'.\e[0m" 7 | fi 8 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php7/php7-xmlrpc.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php7.0-xmlrpc > /dev/null 2>&1 4 | 5 | if [[ $? != 0 ]]; then 6 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP7_package'.\e[0m" 7 | fi 8 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php7/php7-interbase.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php7.0-interbase > /dev/null 2>&1 4 | 5 | if [[ $? != 0 ]]; then 6 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP7_package'.\e[0m" 7 | fi 8 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php7/php7-memcached.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-memcached > /dev/null 2>&1 4 | 5 | if [[ $? != 0 ]]; then 6 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP7_package'.\e[0m" 7 | fi 8 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php7/php7-opcache.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php7.0-opcache > /dev/null 2>&1 4 | 5 | if [[ $? != 0 ]]; then 6 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP7_package'.\e[0m" 7 | fi 8 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php7/php7-readline.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php7.0-readline > /dev/null 2>&1 4 | 5 | if [[ $? != 0 ]]; then 6 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP7_package'.\e[0m" 7 | fi 8 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/rust.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | wget -q https://static.rust-lang.org/rustup.sh -O /tmp/rustup.sh 4 | 5 | if [[ $? == 0 ]]; then 6 | chmod +x /tmp/rustup.sh && /tmp/rustup.sh -y > /dev/null 2>&1 7 | fi 8 | 9 | rm -rf /tmp/rustup.sh 10 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/vmtouch.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | wget -q https://raw.github.com/hoytech/vmtouch/master/vmtouch.c -O /tmp/vmtouch.c 4 | 5 | if [[ $? == 0 ]]; then 6 | gcc -Wall -O3 -o /usr/local/sbin/vmtouch /tmp/vmtouch.c 7 | fi 8 | 9 | rm -rf /tmp/vmtouch.c 10 | -------------------------------------------------------------------------------- /overlay/rsync/usr/local/bin/rsync_mv: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [[ $# -eq 2 && -d $1 && -d $2 ]]; then 4 | rsync -av --ignore-existing --remove-source-files $1 $2 && rsync -av --delete `mktemp -d`/ $1 && rmdir $1 5 | else 6 | echo "Usage: $0 SOURCE/ DESTINATION/" 1>&2 && exit 1 7 | fi 8 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-xhprof.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php5-xhprof > /dev/null 2>&1 4 | 5 | if [[ $? == 0 && -f /etc/php5/mods-available/xhprof.ini ]]; then 6 | php5enmod xhprof 7 | else 8 | echo -e "\e[1;31mSomething went wrong installing 'php5-xhprof'.\e[0m" 9 | fi 10 | -------------------------------------------------------------------------------- /overlay/ntp/etc/ntp.conf: -------------------------------------------------------------------------------- 1 | # /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help 2 | 3 | driftfile /var/lib/ntp/ntp.drift 4 | 5 | restrict ::1 6 | restrict 127.0.0.1 7 | 8 | server 0.pool.ntp.org 9 | server 1.pool.ntp.org 10 | server 2.pool.ntp.org 11 | server 3.pool.ntp.org 12 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-composer.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | wget -q http://getcomposer.org/composer.phar -O /usr/local/bin/composer && chmod +x /usr/local/bin/composer && cp -r $halBox_Base/overlay/composer/. / 4 | 5 | if [[ -f /etc/cron.monthly/composer ]]; then 6 | chmod +x /etc/cron.monthly/composer 7 | fi 8 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-librdf.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php5-librdf > /dev/null 2>&1 4 | 5 | if [[ $? == 0 && -f /etc/php5/mods-available/redland.ini ]]; then 6 | php5enmod redland 7 | else 8 | echo -e "\e[1;31mSomething went wrong installing 'php5-librdf'.\e[0m" 9 | fi 10 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php7/php7-composer.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | wget -q http://getcomposer.org/composer.phar -O /usr/local/bin/composer && chmod +x /usr/local/bin/composer && cp -r $halBox_Base/overlay/composer/. / 4 | 5 | if [[ -f /etc/cron.monthly/composer ]]; then 6 | chmod +x /etc/cron.monthly/composer 7 | fi 8 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/rsync.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install rsync > /dev/null 2>&1 4 | 5 | if [[ $? == 0 ]]; then 6 | cp -r $halBox_Base/overlay/rsync/. / && chmod +x /usr/local/bin/{rsync_cp,rsync_mv,rsync_rm} 7 | else 8 | echo -e "\e[1;31mSomething went wrong installing '$halBox_package'.\e[0m" 9 | fi 10 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/ruby.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install ruby > /dev/null 4 | 5 | if [[ $? == 0 ]]; then 6 | echo -e "\e[1;32mDave, I'm also installing 'rake'.\e[0m" && apt-get -qq install rake > /dev/null 7 | else 8 | echo -e "\e[1;31mSomething went wrong installing '$halBox_package'.\e[0m" 9 | fi 10 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/ngrok.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | wget -q https://dl.ngrok.com/ngrok_2.0.19_linux_$halBox_Arch.zip -O /tmp/ngrok.zip 4 | 5 | if [[ $? == 0 ]]; then 6 | cd /tmp/ && unzip ngrok.zip > /dev/null && mv /tmp/ngrok /usr/local/sbin/ngrok && chmod +x /usr/local/sbin/ngrok 7 | fi 8 | 9 | cd ~ && rm -rf /tmp/ngrok* 10 | -------------------------------------------------------------------------------- /overlay/letsencrypt/etc/letsencrypt/letsencrypt.ini: -------------------------------------------------------------------------------- 1 | agree-tos = True 2 | email = 3 | expand = True 4 | renew-by-default = True 5 | rsa-key-size = 2048 6 | text = True 7 | # register-unsafely-without-email 8 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/maldet.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | wget -q http://www.rfxn.com/downloads/maldetect-current.tar.gz -O /tmp/maldet.tar.gz 4 | 5 | if [[ $? == 0 ]]; then 6 | cd /tmp/ && tar -xf /tmp/maldet.tar.gz && cd /tmp/maldetect-*/ && chmod +x ./install.sh && ./install.sh > /dev/null 2>&1 7 | fi 8 | 9 | cd ~ && rm -rf /tmp/maldet* 10 | -------------------------------------------------------------------------------- /overlay/postgresql/main/pg_hba.conf: -------------------------------------------------------------------------------- 1 | # PostgreSQL Client Authentication Configuration File 2 | # =================================================== 3 | 4 | # TYPE DATABASE USER ADDRESS METHOD 5 | local all postgres peer 6 | host all root 0.0.0.0/0 md5 7 | host all root ::0/0 md5 8 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/iptables.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install iptables > /dev/null 4 | 5 | if [[ $? == 0 ]]; then 6 | cp -r $halBox_Base/overlay/iptables/. / && chmod +x /etc/network/if-pre-up.d/iptables && iptables-restore < /etc/iptables.rules 7 | else 8 | echo -e "\e[1;31mSomething went wrong installing '$halBox_package'.\e[0m" 9 | fi 10 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/redis.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | add-apt-repository -y ppa:chris-lea/redis-server > /dev/null 2>&1 4 | 5 | if [[ $? == 0 ]]; then 6 | apt-get -qq update > /dev/null 7 | fi 8 | 9 | apt-get -qq install redis-server > /dev/null 10 | 11 | if [[ $? != 0 ]]; then 12 | echo -e "\e[1;31mSomething went wrong installing '$halBox_package'.\e[0m" 13 | fi 14 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/dexec.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | wget -q https://bintray.com/artifact/download/dexec/release/dexec_1.0.3_linux_$halBox_Arch.tar.gz -O /tmp/dexec.tar.gz 4 | 5 | if [[ $? == 0 ]]; then 6 | cd /tmp/ && mkdir -p /tmp/dexec/ && tar -xf /tmp/dexec.tar.gz -C /tmp/dexec/ && mv /tmp/dexec/*/dexec /usr/local/sbin/dexec && chmod +x /usr/local/sbin/dexec 7 | fi 8 | 9 | cd ~ && rm -rf /tmp/dexec* 10 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/git.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install git > /dev/null 4 | 5 | if [[ $? == 0 ]]; then 6 | echo -e "\e[1;32mDave, I'm also installing 'hub'.\e[0m" && apt-get -qq install ruby > /dev/null && wget -q http://hub.github.com/standalone -O /usr/local/bin/hub && chmod +x /usr/local/bin/hub 7 | else 8 | echo -e "\e[1;31mSomething went wrong installing '$halBox_package'.\e[0m" 9 | fi 10 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/scout_realtime.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [[ ! $(type -P gem) ]]; then 4 | apt-get -qq install ruby > /dev/null 5 | fi 6 | 7 | gem install scout_realtime > /dev/null 8 | 9 | if [[ $? == 0 ]]; then 10 | if [[ -f /etc/iptables.rules ]]; then 11 | sed -i -r "s~(--dport 5555) -j DROP~\1 -j ACCEPT~" /etc/iptables.rules && iptables-restore < /etc/iptables.rules 12 | fi 13 | fi 14 | 15 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-mssql.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install freetds-bin freetds-dev tdsodbc unixodbc unixodbc-dev php5-mssql > /dev/null 2>&1 4 | 5 | if [[ $? == 0 ]]; then 6 | if [[ -f /etc/php5/mods-available/mssql.ini ]]; then 7 | echo -e "\e[1;32mDave, I'm disabling the non-PDO 'mssql' extension, you can re-enable it with:\n php5enmod mssql\n\e[0m" && php5dismod mssql 8 | fi 9 | fi 10 | -------------------------------------------------------------------------------- /overlay/nginx/etc/nginx/conf.d/http_limit_req.conf: -------------------------------------------------------------------------------- 1 | # //nginx.org/en/docs/http/ngx_http_limit_req_module.html 2 | 3 | limit_req_zone $binary_remote_addr zone=bot:4M rate=128r/m; 4 | limit_req_zone $binary_remote_addr zone=flood:4M rate=16r/s; 5 | limit_req_status 429; 6 | limit_req_log_level error; 7 | 8 | limit_req zone=bot burst=64 nodelay; 9 | limit_req zone=flood burst=16 nodelay; 10 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-odbc.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php5-odbc > /dev/null 2>&1 4 | 5 | if [[ $? == 0 ]]; then 6 | if [[ -f /etc/php5/mods-available/odbc.ini ]]; then 7 | echo -e "\e[1;32mDave, I'm disabling the non-PDO 'odbc' extension, you can re-enable it with:\n php5enmod odbc\n\e[0m" && php5dismod odbc 8 | fi 9 | else 10 | echo -e "\e[1;31mSomething went wrong installing 'php5-odbc'.\e[0m" 11 | fi 12 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-pgsql.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php5-pgsql > /dev/null 2>&1 4 | 5 | if [[ $? == 0 ]]; then 6 | if [[ -f /etc/php5/mods-available/pgsql.ini ]]; then 7 | echo -e "\e[1;32mDave, I'm disabling the non-PDO 'pgsql' extension, you can re-enable it with:\n php5enmod pgsql\n\e[0m" && php5dismod pgsql 8 | fi 9 | else 10 | echo -e "\e[1;31mSomething went wrong installing 'php5-pgsql'.\e[0m" 11 | fi 12 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-sqlite.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php5-sqlite > /dev/null 2>&1 4 | 5 | if [[ $? == 0 ]]; then 6 | if [[ -f /etc/php5/mods-available/sqlite3.ini ]]; then 7 | echo -e "\e[1;32mDave, I'm disabling the non-PDO 'sqlite3' extension, you can re-enable it with:\n php5enmod sqlite3\n\e[0m" && php5dismod sqlite3 8 | fi 9 | else 10 | echo -e "\e[1;31mSomething went wrong installing 'php5-sqlite'.\e[0m" 11 | fi 12 | -------------------------------------------------------------------------------- /overlay/nginx/usr/local/sbin/ngxdissite: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [[ $# -ne 1 ]]; then 4 | echo "Usage: $0 FILE" && exit 1 5 | fi 6 | 7 | if [[ -h /etc/nginx/sites-enabled/$1 ]]; then 8 | rm /etc/nginx/sites-enabled/$1 9 | 10 | if [[ $? == 0 ]]; then 11 | echo -e "Site $1 disabled.\nTo activate the new configuration, you need to run:\n service nginx reload" && exit 0 12 | fi 13 | else 14 | echo "ERROR: Site $1 does not exist!" && exit 1 15 | fi 16 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php7/php7-odbc.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php7.0-odbc > /dev/null 2>&1 4 | 5 | if [[ $? == 0 ]]; then 6 | if [[ -f /etc/php/mods-available/odbc.ini ]]; then 7 | echo -e "\e[1;32mDave, I'm disabling the non-PDO 'odbc' extension, you can re-enable it with:\n phpenmod -v ALL odbc\n\e[0m" && phpdismod -v ALL odbc 8 | fi 9 | else 10 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP7_package'.\e[0m" 11 | fi 12 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php7/php7-pgsql.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php7.0-pgsql > /dev/null 2>&1 4 | 5 | if [[ $? == 0 ]]; then 6 | if [[ -f /etc/php/mods-available/pgsql.ini ]]; then 7 | echo -e "\e[1;32mDave, I'm disabling the non-PDO 'pgsql' extension, you can re-enable it with:\n phpenmod -v ALL pgsql\n\e[0m" && phpdismod -v ALL pgsql 8 | fi 9 | else 10 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP7_package'.\e[0m" 11 | fi 12 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php7/php7-mysql.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php7.0-mysql > /dev/null 2>&1 4 | 5 | if [[ $? == 0 ]]; then 6 | if [[ -f /etc/php/mods-available/mysqli.ini ]]; then 7 | echo -e "\e[1;32mDave, I'm disabling the non-PDO 'mysqli' extension, you can re-enable it with:\n phpenmod -v ALL mysqli\n\e[0m" && phpdismod -v ALL mysqli 8 | fi 9 | else 10 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP7_package'.\e[0m" 11 | fi 12 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php7/php7-sqlite.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php7.0-sqlite > /dev/null 2>&1 4 | 5 | if [[ $? == 0 ]]; then 6 | if [[ -f /etc/php/mods-available/sqlite3.ini ]]; then 7 | echo -e "\e[1;32mDave, I'm disabling the non-PDO 'sqlite3' extension, you can re-enable it with:\n phpenmod -v ALL sqlite3\n\e[0m" && phpdismod -v ALL sqlite3 8 | fi 9 | else 10 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP7_package'.\e[0m" 11 | fi 12 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/clamav.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install clamav clamav-freshclam > /dev/null 2>&1 4 | 5 | if [[ $? == 0 ]]; then 6 | cp -r $halBox_Base/overlay/clamav/. / 7 | 8 | if [[ -f /etc/cron.daily/clamav ]]; then 9 | chmod +x /etc/cron.daily/clamav 10 | fi 11 | 12 | if [[ -d /var/quarantine/ ]]; then 13 | chmod -R 0600 /var/quarantine/ 14 | fi 15 | else 16 | echo -e "\e[1;31mSomething went wrong installing '$halBox_package'.\e[0m" 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/exim4.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install exim4 > /dev/null 2>&1 4 | 5 | if [[ $? == 0 ]]; then 6 | if [[ -f /etc/exim4/update-exim4.conf.conf ]]; then 7 | sed -i "s~dc_eximconfig_configtype='local'~dc_eximconfig_configtype='internet'~" /etc/exim4/update-exim4.conf.conf 8 | fi 9 | else 10 | echo -e "\e[1;31mSomething went wrong installing '$halBox_package'.\e[0m" 11 | fi 12 | 13 | if [[ -f /etc/init.d/exim4 ]]; then 14 | echo -e "\e[1;32mDave, I'm restarting the 'exim4' service.\e[0m" && service exim4 restart > /dev/null 15 | fi 16 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/ntp.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install ntp > /dev/null 4 | 5 | if [[ $? == 0 ]]; then 6 | cp -r $halBox_Base/overlay/ntp/. / 7 | 8 | if [[ -f /etc/iptables.rules ]]; then 9 | sed -i -r "s~(--dport 123) -j DROP~\1 -j ACCEPT~" /etc/iptables.rules && iptables-restore < /etc/iptables.rules 10 | fi 11 | else 12 | echo -e "\e[1;31mSomething went wrong installing '$halBox_package'.\e[0m" 13 | fi 14 | 15 | if [[ -f /etc/init.d/ntp ]]; then 16 | echo -e "\e[1;32mDave, I'm restarting the 'ntp' service.\e[0m" && service ntp restart > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/caddy.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | wget -q "https://caddyserver.com/download/build?os=linux&arch=$halBox_Arch&features=cors,git,ipfilter,jsonp" -O /tmp/caddy.tar.gz 4 | 5 | if [[ $? == 0 ]]; then 6 | cd /tmp/ && mkdir -p /tmp/caddy/ && tar -xf /tmp/caddy.tar.gz -C /tmp/caddy/ && mv /tmp/caddy/caddy /usr/local/sbin/caddy && chmod +x /usr/local/sbin/caddy 7 | 8 | if [[ -f /etc/iptables.rules ]]; then 9 | sed -i -r "s~(--dport 2015) -j DROP~\1 -j ACCEPT~" /etc/iptables.rules && iptables-restore < /etc/iptables.rules 10 | fi 11 | fi 12 | 13 | cd ~ && rm -rf /tmp/caddy* 14 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/mysql/innotop.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | wget -q http://innotop.googlecode.com/files/innotop-1.9.0.tar.gz -O /tmp/innotop.tar.gz 4 | 5 | if [[ $? == 0 ]]; then 6 | apt-get -qq install libdbd-mysql-perl libdbi-perl libterm-readkey-perl > /dev/null 7 | 8 | if [[ $? == 0 ]]; then 9 | cd /tmp/ && tar -xf /tmp/innotop.tar.gz && cd /tmp/innotop-*/ && perl ./Makefile.PL > /dev/null && make install > /dev/null 10 | 11 | if [[ -f /usr/local/bin/innotop ]]; then 12 | chmod +x /usr/local/bin/innotop 13 | fi 14 | fi 15 | fi 16 | 17 | cd ~ && rm -rf /tmp/innotop* 18 | -------------------------------------------------------------------------------- /overlay/nginx/usr/local/sbin/ngxensite: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [[ $# -ne 1 ]]; then 4 | echo "Usage: $0 FILE" && exit 1 5 | fi 6 | 7 | if [[ -r /etc/nginx/sites-available/$1 ]]; then 8 | if [[ -h /etc/nginx/sites-enabled/$1 ]]; then 9 | echo "Site $1 already enabled." && exit 0 10 | else 11 | ln -s /etc/nginx/sites-available/$1 /etc/nginx/sites-enabled/$1 12 | 13 | if [[ $? == 0 ]]; then 14 | echo -e "Enabling site $1.\nTo activate the new configuration, you need to run:\n service nginx reload" && exit 0 15 | fi 16 | fi 17 | else 18 | echo "ERROR: Site $1 does not exist!" && exit 1 19 | fi 20 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-ev.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/ev.ini ]]; then 6 | echo "" > /etc/php5/mods-available/ev.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/ev.ini > /dev/null && yes "" | pecl -q install -f ev > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/ev.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/ev.ini 12 | else 13 | php5enmod ev 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /overlay/php/var/www/default/public/adminer/index.php: -------------------------------------------------------------------------------- 1 | /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/eio.ini ]]; then 6 | echo "" > /etc/php5/mods-available/eio.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/eio.ini > /dev/null && yes "" | pecl -q install -f eio > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/eio.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/eio.ini 12 | else 13 | php5enmod eio 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-lzf.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/lzf.ini ]]; then 6 | echo "" > /etc/php5/mods-available/lzf.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/lzf.ini > /dev/null && yes "" | pecl -q install -f lzf > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/lzf.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/lzf.ini 12 | else 13 | php5enmod lzf 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-mysql.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php5-mysql > /dev/null 2>&1 4 | 5 | if [[ $? == 0 ]]; then 6 | if [[ -f /etc/php5/mods-available/mysql.ini ]]; then 7 | echo -e "\e[1;32mDave, I'm disabling the non-PDO 'mysql' extension, you can re-enable it with:\n php5enmod mysql\n\e[0m" && php5dismod mysql 8 | fi 9 | 10 | if [[ -f /etc/php5/mods-available/mysqli.ini ]]; then 11 | echo -e "\e[1;32mDave, I'm disabling the non-PDO 'mysqli' extension, you can re-enable it with:\n php5enmod mysqli\n\e[0m" && php5dismod mysqli 12 | fi 13 | else 14 | echo -e "\e[1;31mSomething went wrong installing 'php5-mysql'.\e[0m" 15 | fi 16 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-rar.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/rar.ini ]]; then 6 | echo "" > /etc/php5/mods-available/rar.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/rar.ini > /dev/null && yes "" | pecl -q install -f rar > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/rar.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/rar.ini 12 | else 13 | php5enmod rar 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-yaf.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/yaf.ini ]]; then 6 | echo "" > /etc/php5/mods-available/yaf.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/yaf.ini > /dev/null && yes "" | pecl -q install -f yaf > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/yaf.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/yaf.ini 12 | else 13 | php5enmod yaf 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-stem.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/stem.ini ]]; then 6 | echo "" > /etc/php5/mods-available/stem.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/stem.ini > /dev/null && yes "" | pecl -q install -f stem > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/stem.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/stem.ini 12 | else 13 | php5enmod stem 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-svm.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev libsvm-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/svm.ini ]]; then 6 | echo "" > /etc/php5/mods-available/svm.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/svm.ini > /dev/null && yes "" | pecl -q install -f svm > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/svm.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/svm.ini 12 | else 13 | php5enmod svm 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-jsmin.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/jsmin.ini ]]; then 6 | echo "" > /etc/php5/mods-available/jsmin.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/jsmin.ini > /dev/null && yes "" | pecl -q install -f jsmin > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/jsmin.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/jsmin.ini 12 | else 13 | php5enmod jsmin 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-stats.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/stats.ini ]]; then 6 | echo "" > /etc/php5/mods-available/stats.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/stats.ini > /dev/null && yes "" | pecl -q install -f stats > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/stats.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/stats.ini 12 | else 13 | php5enmod stats 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-uuid.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev uuid-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/uuid.ini ]]; then 6 | echo "" > /etc/php5/mods-available/uuid.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/uuid.ini > /dev/null && yes "" | pecl -q install -f uuid > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/uuid.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/uuid.ini 12 | else 13 | php5enmod uuid 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-amqp.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev librabbitmq-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/amqp.ini ]]; then 6 | echo "" > /etc/php5/mods-available/amqp.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/amqp.ini > /dev/null && yes "" | pecl -q install -f amqp > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/amqp.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/amqp.ini 12 | else 13 | php5enmod amqp 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-bitset.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/bitset.ini ]]; then 6 | echo "" > /etc/php5/mods-available/bitset.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/bitset.ini > /dev/null && yes "" | pecl -q install -f bitset > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/bitset.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/bitset.ini 12 | else 13 | php5enmod bitset 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-chdb.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev libcmph-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/chdb.ini ]]; then 6 | echo "" > /etc/php5/mods-available/chdb.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/chdb.ini > /dev/null && yes "" | pecl -q install -f chdb > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/chdb.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/chdb.ini 12 | else 13 | php5enmod chdb 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-fann.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev libfann-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/fann.ini ]]; then 6 | echo "" > /etc/php5/mods-available/fann.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/fann.ini > /dev/null && yes "" | pecl -q install -f fann > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/fann.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/fann.ini 12 | else 13 | php5enmod fann 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-gender.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/gender.ini ]]; then 6 | echo "" > /etc/php5/mods-available/gender.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/gender.ini > /dev/null && yes "" | pecl -q install -f gender > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/gender.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/gender.ini 12 | else 13 | php5enmod gender 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-judy.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev libjudy-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/judy.ini ]]; then 6 | echo "" > /etc/php5/mods-available/judy.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/judy.ini > /dev/null && yes "" | pecl -q install -f judy > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/judy.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/judy.ini 12 | else 13 | php5enmod judy 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-radius.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/radius.ini ]]; then 6 | echo "" > /etc/php5/mods-available/radius.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/radius.ini > /dev/null && yes "" | pecl -q install -f radius > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/radius.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/radius.ini 12 | else 13 | php5enmod radius 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-scream.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/scream.ini ]]; then 6 | echo "" > /etc/php5/mods-available/scream.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/scream.ini > /dev/null && yes "" | pecl -q install -f scream > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/scream.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/scream.ini 12 | else 13 | php5enmod scream 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-scrypt.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/scrypt.ini ]]; then 6 | echo "" > /etc/php5/mods-available/scrypt.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/scrypt.ini > /dev/null && yes "" | pecl -q install -f scrypt > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/scrypt.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/scrypt.ini 12 | else 13 | php5enmod scrypt 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-ssh2.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev libssh2-1-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/ssh2.ini ]]; then 6 | echo "" > /etc/php5/mods-available/ssh2.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/ssh2.ini > /dev/null && yes "" | pecl -q install -f ssh2 > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/ssh2.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/ssh2.ini 12 | else 13 | php5enmod ssh2 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-swoole.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/swoole.ini ]]; then 6 | echo "" > /etc/php5/mods-available/swoole.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/swoole.ini > /dev/null && yes "" | pecl -q install -f swoole > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/swoole.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/swoole.ini 12 | else 13 | php5enmod swoole 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-yaml.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev libyaml-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/yaml.ini ]]; then 6 | echo "" > /etc/php5/mods-available/yaml.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/yaml.ini > /dev/null && yes "" | pecl -q install -f yaml > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/yaml.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/yaml.ini 12 | else 13 | php5enmod yaml 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /overlay/php/var/www/default/public/adminer/plugins/plugin_ForeignConvention.php: -------------------------------------------------------------------------------- 1 | preg_replace('~^(?:id|by)_|_(?:id|by)$~', '', $field), 14 | 'source' => [$field], 15 | 'target' => ['id'], 16 | ]; 17 | } 18 | 19 | return $result; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-inotify.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/inotify.ini ]]; then 6 | echo "" > /etc/php5/mods-available/inotify.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/inotify.ini > /dev/null && yes "" | pecl -q install -f inotify > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/inotify.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/inotify.ini 12 | else 13 | php5enmod inotify 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-opcache.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/opcache.ini ]]; then 6 | echo "" > /etc/php5/mods-available/opcache.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/opcache.ini > /dev/null && yes "" | pecl -q install -f opcache > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/opcache.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/opcache.ini 12 | else 13 | php5enmod opcache 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-sundown.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/sundown.ini ]]; then 6 | echo "" > /etc/php5/mods-available/sundown.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/sundown.ini > /dev/null && yes "" | pecl -q install -f sundown > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/sundown.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/sundown.ini 12 | else 13 | php5enmod sundown 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-ssdeep.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev libfuzzy-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/ssdeep.ini ]]; then 6 | echo "" > /etc/php5/mods-available/ssdeep.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/ssdeep.ini > /dev/null && yes "" | pecl -q install -f ssdeep > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/ssdeep.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/ssdeep.ini 12 | else 13 | php5enmod ssdeep 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-discount.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/discount.ini ]]; then 6 | echo "" > /etc/php5/mods-available/discount.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/discount.ini > /dev/null && yes "" | pecl -q install -f markdown > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/discount.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/discount.ini 12 | else 13 | php5enmod discount 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-igbinary.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/igbinary.ini ]]; then 6 | echo "" > /etc/php5/mods-available/igbinary.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/igbinary.ini > /dev/null && yes "" | pecl -q install -f igbinary > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/igbinary.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/igbinary.ini 12 | else 13 | php5enmod igbinary 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-sphinx.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev libsphinxclient-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/sphinx.ini ]]; then 6 | echo "" > /etc/php5/mods-available/sphinx.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/sphinx.ini > /dev/null && yes "" | pecl -q install -f sphinx > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/sphinx.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/sphinx.ini 12 | else 13 | php5enmod sphinx 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-mailparse.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/mailparse.ini ]]; then 6 | echo "" > /etc/php5/mods-available/mailparse.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/mailparse.ini > /dev/null && yes "" | pecl -q install -f mailparse > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/mailparse.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/mailparse.ini 12 | else 13 | php5enmod mailparse 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-quickhash.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/quickhash.ini ]]; then 6 | echo "" > /etc/php5/mods-available/quickhash.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/quickhash.ini > /dev/null && yes "" | pecl -q install -f quickhash > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/quickhash.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/quickhash.ini 12 | else 13 | php5enmod quickhash 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /overlay/nginx/etc/nginx/conf.d/http_charset.conf: -------------------------------------------------------------------------------- 1 | # //nginx.org/en/docs/http/ngx_http_charset_module.html 2 | 3 | charset utf-8; 4 | charset_types application/atom+xml 5 | application/javascript 6 | application/json 7 | application/owl+xml 8 | application/rdf+xml 9 | application/rss+xml 10 | application/x-web-app-manifest+json 11 | application/xhtml+xml 12 | application/xml 13 | text/css 14 | text/csv 15 | text/mathml 16 | text/plain 17 | text/vtt; 18 | override_charset off; 19 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-libevent.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev libevent-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/libevent.ini ]]; then 6 | echo "" > /etc/php5/mods-available/libevent.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/libevent.ini > /dev/null && yes "" | pecl -q install -f libevent > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/libevent.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/libevent.ini 12 | else 13 | php5enmod libevent 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-varnish.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev libvarnishapi-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/varnish.ini ]]; then 6 | echo "" > /etc/php5/mods-available/varnish.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/varnish.ini > /dev/null && yes "" | pecl -q install -f varnish > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/varnish.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/varnish.ini 12 | else 13 | php5enmod varnish 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-timezonedb.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/timezonedb.ini ]]; then 6 | echo "" > /etc/php5/mods-available/timezonedb.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/timezonedb.ini > /dev/null && yes "" | pecl -q install -f timezonedb > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/timezonedb.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/timezonedb.ini 12 | else 13 | php5enmod timezonedb 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-yar.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev libcurl4-openssl-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/yar.ini ]]; then 6 | echo "" > /etc/php5/mods-available/yar.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/yar.ini > /dev/null && yes "" | pecl -q install -f yar > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/yar.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/yar.ini 12 | else 13 | cp -r $halBox_Base/overlay/php5-yar/. / && php5enmod yar 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-mogilefs.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev libxml2-dev libneon27-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/mogilefs.ini ]]; then 6 | echo "" > /etc/php5/mods-available/mogilefs.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/mogilefs.ini > /dev/null && yes "" | pecl -q install -f mogilefs > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/mogilefs.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/mogilefs.ini 12 | else 13 | php5enmod mogilefs 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-spidermonkey.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev libmozjs185-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/spidermonkey.ini ]]; then 6 | echo "" > /etc/php5/mods-available/spidermonkey.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/spidermonkey.ini > /dev/null && yes "" | pecl -q install -f spidermonkey > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/spidermonkey.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/spidermonkey.ini 12 | else 13 | php5enmod spidermonkey 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-doublemetaphone.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/doublemetaphone.ini ]]; then 6 | echo "" > /etc/php5/mods-available/doublemetaphone.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/doublemetaphone.ini > /dev/null && yes "" | pecl -q install -f doublemetaphone > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/doublemetaphone.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/doublemetaphone.ini 12 | else 13 | php5enmod doublemetaphone 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-protocolbuffers.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/protocolbuffers.ini ]]; then 6 | echo "" > /etc/php5/mods-available/protocolbuffers.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/protocolbuffers.ini > /dev/null && yes "" | pecl -q install -f protocolbuffers > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/protocolbuffers.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/protocolbuffers.ini 12 | else 13 | php5enmod protocolbuffers 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-solr.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev php5-curl libxml2-dev libcurl4-openssl-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/solr.ini ]]; then 6 | echo "" > /etc/php5/mods-available/solr.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/solr.ini > /dev/null && yes "" | pecl -q install -f solr > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/solr.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/solr.ini 12 | else 13 | cp -r $halBox_Base/overlay/php5-solr/. / && php5enmod solr 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-http.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev libcurl4-openssl-dev libevent-dev libmagic-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/http.ini ]]; then 6 | echo "" > /etc/php5/mods-available/http.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/http.ini > /dev/null && yes "" | pecl -q install -f pecl_http > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/http.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/http.ini 12 | else 13 | cp -r $halBox_Base/overlay/php5-http/. / && php5enmod http 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-tokyo_tyrant.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev pkg-config libtokyotyrant-dev > /dev/null 4 | 5 | if [[ ! -f /etc/php5/mods-available/tokyo_tyrant.ini ]]; then 6 | echo "" > /etc/php5/mods-available/tokyo_tyrant.ini 7 | 8 | pear config-set php_ini /etc/php5/mods-available/tokyo_tyrant.ini > /dev/null && yes "" | pecl -q install -f tokyo_tyrant > /dev/null 9 | 10 | if [[ $(cat /etc/php5/mods-available/tokyo_tyrant.ini | wc -c) -le 1 ]]; then 11 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/tokyo_tyrant.ini 12 | else 13 | php5enmod tokyo_tyrant 14 | fi 15 | 16 | pear config-set php_ini "" > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/sqlite.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | wget -q http://www.sqlite.org/2016/sqlite-autoconf-3100200.tar.gz -O /tmp/sqlite-autoconf-3100200.tar.gz 4 | 5 | if [[ $? == 0 ]]; then 6 | cd /tmp/ && tar -xf /tmp/sqlite-autoconf-3100200.tar.gz && cd /tmp/sqlite-autoconf-3100200 && ./configure --enable-fts5 --enable-json1 > /dev/null && make > /dev/null && make install > /dev/null 7 | fi 8 | 9 | cd ~ && rm -rf /tmp/sqlite-autoconf-3100200* 10 | 11 | if [[ -f /etc/init.d/php5-fpm ]]; then 12 | echo -e "\e[1;32mDave, I'm restarting the 'php5-fpm' service.\e[0m" && service php5-fpm restart > /dev/null 13 | fi 14 | 15 | if [[ -f /etc/init.d/php7.0-fpm ]]; then 16 | echo -e "\e[1;32mDave, I'm restarting the 'php7.0-fpm' service.\e[0m" && service php7.0-fpm restart > /dev/null 17 | fi 18 | -------------------------------------------------------------------------------- /overlay/php/etc/nginx/conf.d/http_fastcgi.conf: -------------------------------------------------------------------------------- 1 | # //nginx.org/en/docs/http/ngx_http_fastcgi_module.html 2 | 3 | fastcgi_buffer_size 16K; 4 | fastcgi_buffers 128 16K; 5 | fastcgi_busy_buffers_size 32K; 6 | fastcgi_connect_timeout 30s; 7 | fastcgi_ignore_client_abort off; 8 | fastcgi_index index.php; 9 | fastcgi_intercept_errors on; 10 | fastcgi_keep_conn on; 11 | fastcgi_max_temp_file_size 0; 12 | fastcgi_pass 127.0.0.1:9000; 13 | fastcgi_pass_request_body on; 14 | fastcgi_pass_request_headers on; 15 | fastcgi_read_timeout 60s; 16 | fastcgi_send_timeout 60s; 17 | fastcgi_split_path_info ^(.+[.]php)(/.*)$; 18 | 19 | include /etc/nginx/fastcgi_params; 20 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/zsh.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install zsh > /dev/null 2>&1 4 | 5 | if [[ ! $(type -P git) ]]; then 6 | apt-get -qq install git > /dev/null 7 | fi 8 | 9 | if [[ $? == 0 ]]; then 10 | echo -e "\e[1;32mDave, I'm also installing 'oh-my-zsh'.\e[0m" && git clone -q git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh/ 11 | 12 | if [[ $? == 0 ]]; then 13 | cp -r halBox-master/overlay/zsh/root/. ~/ 14 | 15 | if [[ -n $SUDO_USER ]]; then 16 | chsh -s /bin/zsh "$SUDO_USER" 17 | else 18 | chsh -s /bin/zsh root 19 | fi 20 | 21 | echo -e "\e[1;31mDave, your default sheel is now ZSH - I suggest a reboot.\e[0m" 22 | fi 23 | else 24 | echo -e "\e[1;31mSomething went wrong installing '$halBox_package'.\e[0m" 25 | fi 26 | -------------------------------------------------------------------------------- /overlay/zsh/root/.zshrc: -------------------------------------------------------------------------------- 1 | export ZSH=/root/.oh-my-zsh 2 | export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" 3 | export UPDATE_ZSH_DAYS=30 4 | 5 | ZSH_THEME="ys" 6 | CASE_SENSITIVE="true" 7 | ENABLE_CORRECTION="false" 8 | HYPHEN_INSENSITIVE="false" 9 | COMPLETION_WAITING_DOTS="true" 10 | DISABLE_LS_COLORS="false" 11 | DISABLE_AUTO_TITLE="false" 12 | DISABLE_AUTO_UPDATE="false" 13 | DISABLE_UNTRACKED_FILES_DIRTY="false" 14 | 15 | plugins=(composer docker extract git git-extras history last-working-dir vagrant) 16 | 17 | source $ZSH/oh-my-zsh.sh 18 | 19 | [[ -f /usr/local/bin/direnv ]] && eval "$(direnv hook zsh)" 20 | [[ -f ~/.gvm/scripts/gvm ]] && source ~/.gvm/scripts/gvm 21 | [[ -f /etc/profile.d/go.sh ]] && source /etc/profile.d/go.sh 22 | [[ -f /etc/profile.d/nodejs.sh ]] && source /etc/profile.d/nodejs.sh 23 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-phalcon.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev > /dev/null 4 | 5 | if [[ ! $(type -P git) ]]; then 6 | apt-get -qq install git > /dev/null 7 | fi 8 | 9 | git clone -q --depth=1 git://github.com/phalcon/cphalcon.git /tmp/php-phalcon/ 10 | 11 | if [[ $? == 0 ]]; then 12 | cd /tmp/php-phalcon/build && ./install > /dev/null 2>&1 13 | 14 | if [[ $? == 0 ]]; then 15 | echo "extension=phalcon.so" > /etc/php5/mods-available/phalcon.ini 16 | fi 17 | fi 18 | 19 | if [[ $(cat /etc/php5/mods-available/phalcon.ini | wc -c) -le 1 ]]; then 20 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/phalcon.ini 21 | else 22 | php5enmod phalcon 23 | fi 24 | 25 | cd ~ && rm -rf /tmp/php-phalcon/ 26 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/letsencrypt.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [[ ! $(type -P git) ]]; then 4 | apt-get -qq install git > /dev/null 5 | fi 6 | 7 | git clone -q https://github.com/letsencrypt/letsencrypt ~/.letsencrypt/ 8 | 9 | if [[ $? == 0 ]]; then 10 | cp -r $halBox_Base/overlay/letsencrypt/. / 11 | 12 | if [[ -f /etc/letsencrypt/letsencrypt.ini ]]; then 13 | if [[ $halBox_LetsEncrypt_email == *"@"* ]]; then 14 | sed -i -r "s~^email([[:blank:]]*)=$~email\1= $halBox_LetsEncrypt_email~" /etc/letsencrypt/letsencrypt.ini 15 | else 16 | sed -i -r "s~^# register-unsafely-without-email$~register-unsafely-without-email~" /etc/letsencrypt/letsencrypt.ini 17 | fi 18 | fi 19 | 20 | if [[ -f /etc/cron.monthly/letsencrypt ]]; then 21 | chmod +x /etc/cron.monthly/letsencrypt 22 | fi 23 | fi 24 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php7/php7-redis.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php7.0-dev re2c > /dev/null 2>&1 4 | 5 | if [[ ! $(type -P git) ]]; then 6 | apt-get -qq install git > /dev/null 7 | fi 8 | 9 | git clone -q https://github.com/phpredis/phpredis.git /tmp/php-redis/ 10 | 11 | if [[ $? == 0 ]]; then 12 | cd /tmp/php-redis/ && git checkout -q php7 && phpize > /dev/null && ./configure > /dev/null && make > /dev/null && make install > /dev/null 13 | 14 | if [[ $? == 0 ]]; then 15 | echo "extension=redis.so" > /etc/php/mods-available/redis.ini 16 | fi 17 | fi 18 | 19 | if [[ $(cat /etc/php/mods-available/redis.ini | wc -c) -le 1 ]]; then 20 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP7_package'.\e[0m" && rm -f /etc/php/mods-available/redis.ini 21 | else 22 | phpenmod -v ALL redis 23 | fi 24 | 25 | cd ~ && rm -rf /tmp/php-redis/ 26 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php7/php7-timezonedb.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php7.0-dev re2c > /dev/null 2>&1 4 | wget -q https://pecl.php.net/get/timezonedb -O /tmp/timezonedb.tar.gz 5 | 6 | if [[ $? == 0 ]]; then 7 | cd /tmp/ && mkdir -p /tmp/timezonedb/ && tar -xf /tmp/timezonedb.tar.gz -C /tmp/timezonedb/ && cd /tmp/timezonedb/timezonedb-*/ && phpize > /dev/null && ./configure > /dev/null && make > /dev/null 2>&1 && make install > /dev/null 8 | 9 | if [[ $? == 0 ]]; then 10 | echo "extension=timezonedb.so" > /etc/php/mods-available/timezonedb.ini 11 | fi 12 | fi 13 | 14 | if [[ $(cat /etc/php/mods-available/timezonedb.ini | wc -c) -le 1 ]]; then 15 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP7_package'.\e[0m" && rm -f /etc/php/mods-available/timezonedb.ini 16 | else 17 | phpenmod -v ALL timezonedb 18 | fi 19 | 20 | cd ~ && rm -rf /tmp/timezonedb* 21 | -------------------------------------------------------------------------------- /overlay/letsencrypt/etc/cron.monthly/letsencrypt: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | halBox_LetsEncrypt_domains=$(ls /etc/letsencrypt/live) 4 | 5 | if [[ ${#halBox_LetsEncrypt_domains[@]} -gt 0 ]]; then 6 | for halBox_LetsEncrypt_domain in $halBox_LetsEncrypt_domains; do 7 | ~/.letsencrypt/letsencrypt-auto certonly -a webroot --config /etc/letsencrypt/letsencrypt.ini --domain $halBox_LetsEncrypt_domain --webroot-path /var/www/$halBox_LetsEncrypt_domain/ > /dev/null 2>&1 8 | 9 | if [[ $? != 0 ]]; then 10 | echo "Unable to renew the SSL certificate for '$halBox_LetsEncrypt_domain'." >> /var/log/cron.letsencrypt.log 11 | else 12 | echo "SSL certificate for '$halBox_LetsEncrypt_domain' renewed successfully." >> /var/log/cron.letsencrypt.log 13 | fi 14 | 15 | rm -rf /var/www/$halBox_LetsEncrypt_domain/.well-known/ 16 | done 17 | 18 | if [[ -f /etc/init.d/nginx ]]; then 19 | service nginx reload > /dev/null 20 | fi 21 | fi 22 | -------------------------------------------------------------------------------- /overlay/nginx/etc/nginx/nginx.conf: -------------------------------------------------------------------------------- 1 | # //calomel.org/nginx.html 2 | 3 | pid /var/run/nginx.pid; 4 | user www-data www-data; 5 | error_log /var/log/nginx/error.log warn; 6 | worker_processes 2; 7 | worker_rlimit_nofile 8192; 8 | 9 | events { 10 | accept_mutex on; 11 | accept_mutex_delay 50ms; 12 | multi_accept off; 13 | worker_connections 2048; 14 | } 15 | 16 | http { 17 | access_log /var/log/nginx/access.log combined buffer=4K flush=1m; 18 | server_names_hash_max_size 64; 19 | 20 | map $http_upgrade $connection_upgrade { 21 | default upgrade; 22 | '' close; 23 | } 24 | 25 | include /etc/nginx/mime.types; 26 | include /etc/nginx/conf.d/http.conf; 27 | include /etc/nginx/sites-enabled/*; 28 | } 29 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/nodejs.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | wget -q https://deb.nodesource.com/gpgkey/nodesource.gpg.key -O - | apt-key add - > /dev/null 4 | 5 | if [[ $? == 0 ]]; then 6 | if [[ ! -f /etc/apt/sources.list.d/nodejs.list ]]; then 7 | echo "deb https://deb.nodesource.com/node_5.x $halBox_OS_Codename main" > /etc/apt/sources.list.d/nodejs.list 8 | fi 9 | 10 | apt-get -qq update > /dev/null 11 | fi 12 | 13 | apt-get -qq install nodejs > /dev/null 2>&1 14 | 15 | if [[ $? == 0 ]]; then 16 | echo -e 'export NODE_PATH=/usr/lib/nodejs:/usr/lib/node_modules\n' > /etc/profile.d/nodejs.sh && source /etc/profile.d/nodejs.sh 17 | 18 | for halBox_NodeJS_package in bower browserify coffee-script express forever grunt grunt-cli gulp nixar pm2 yo; do 19 | echo -e "\e[1;32mDave, I'm also installing '$halBox_NodeJS_package'.\e[0m" && npm install --global $halBox_NodeJS_package > /dev/null 2>&1 20 | done 21 | else 22 | echo -e "\e[1;31mSomething went wrong installing '$halBox_package'.\e[0m" 23 | fi 24 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5/php5-leveldb.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php-pear php5-dev re2c libpcre3-dev > /dev/null 4 | 5 | if [[ ! $(type -P git) ]]; then 6 | apt-get -qq install git > /dev/null 7 | fi 8 | 9 | apt-get -qq install libleveldb-dev > /dev/null 10 | 11 | if [[ $(find /usr/lib/ -name libleveldb.so | wc -l) -eq 1 ]]; then 12 | git clone -q https://github.com/reeze/php-leveldb.git /tmp/php-leveldb/ 13 | 14 | if [[ $? == 0 ]]; then 15 | cd /tmp/php-leveldb/ && phpize > /dev/null && ./configure --with-leveldb=$(dirname $(find /usr/lib/ -name libleveldb.so)) > /dev/null && make > /dev/null && make install > /dev/null 16 | 17 | if [[ $? == 0 ]]; then 18 | echo "extension=leveldb.so" > /etc/php5/mods-available/leveldb.ini 19 | fi 20 | fi 21 | fi 22 | 23 | if [[ $(cat /etc/php5/mods-available/leveldb.ini | wc -c) -le 1 ]]; then 24 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" && rm -f /etc/php5/mods-available/leveldb.ini 25 | else 26 | php5enmod leveldb 27 | fi 28 | 29 | cd ~ && rm -rf /tmp/php-leveldb/ 30 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright (c) 2012 Alix Axel 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to 7 | deal in the Software without restriction, including without limitation the 8 | rights to use, copy, modify, merge, publish, distribute, sublicense, 9 | and/or sell copies of the Software, and to permit persons to whom the 10 | Software is furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18 | THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 21 | DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /overlay/nginx/etc/nginx/fastcgi_params: -------------------------------------------------------------------------------- 1 | fastcgi_param CONTENT_LENGTH $content_length; 2 | fastcgi_param CONTENT_TYPE $content_type; 3 | fastcgi_param DOCUMENT_ROOT $document_root; 4 | fastcgi_param DOCUMENT_URI $document_uri; 5 | fastcgi_param GATEWAY_INTERFACE CGI/1.1; 6 | fastcgi_param HTTPS $https if_not_empty; 7 | fastcgi_param PATH_INFO $fastcgi_path_info; 8 | fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; 9 | fastcgi_param QUERY_STRING $query_string; 10 | fastcgi_param REDIRECT_STATUS 200; 11 | fastcgi_param REMOTE_ADDR $remote_addr; 12 | fastcgi_param REMOTE_PORT $remote_port; 13 | fastcgi_param REQUEST_METHOD $request_method; 14 | fastcgi_param REQUEST_URI $request_uri; 15 | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 16 | fastcgi_param SCRIPT_NAME $fastcgi_script_name; 17 | fastcgi_param SERVER_ADDR $server_addr; 18 | fastcgi_param SERVER_NAME $server_name; 19 | fastcgi_param SERVER_PORT $server_port; 20 | fastcgi_param SERVER_PROTOCOL $server_protocol; 21 | fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; 22 | -------------------------------------------------------------------------------- /overlay/iptables/etc/iptables.rules: -------------------------------------------------------------------------------- 1 | # //help.ubuntu.com/community/IptablesHowTo 2 | 3 | *filter 4 | :INPUT DROP [0:0] 5 | :FORWARD ACCEPT [0:0] 6 | :OUTPUT ACCEPT [0:0] 7 | 8 | -A INPUT -i lo -j ACCEPT 9 | -A INPUT -m state --state INVALID -j DROP 10 | -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 11 | 12 | # Pings 13 | -A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 1/second -j ACCEPT 14 | -A INPUT -p icmp -m icmp --icmp-type 11 -m limit --limit 1/second -j ACCEPT 15 | 16 | # NTP 17 | -A INPUT -p udp -m udp --dport 123 -j DROP 18 | 19 | # SSH 20 | -A INPUT -p tcp -m tcp --dport 22 -m limit --limit 30/hour --limit-burst 60 -j ACCEPT 21 | 22 | # HTTP/HTTPS 23 | -A INPUT -p tcp -m tcp -m multiport --dports 80,443 -j DROP 24 | 25 | # Caddy 26 | -A INPUT -p tcp -m tcp --dport 2015 -j DROP 27 | 28 | # MySQL 29 | -A INPUT -p tcp -m tcp --dport 3306 -j DROP 30 | 31 | # PostgreSQL 32 | -A INPUT -p tcp -m tcp --dport 5432 -j DROP 33 | 34 | # Scout Realtime 35 | -A INPUT -p tcp -m tcp --dport 5555 -j DROP 36 | 37 | # Redis 38 | -A INPUT -p tcp -m tcp --dport 6379 -j DROP 39 | 40 | # Memcached 41 | -A INPUT -p tcp -m tcp --dport 11211 -j DROP 42 | 43 | # Beanstalk 44 | -A INPUT -p tcp -m tcp --dport 11300 -j DROP 45 | COMMIT 46 | -------------------------------------------------------------------------------- /overlay/mysql/etc/mysql/conf.d/halBox.cnf: -------------------------------------------------------------------------------- 1 | [mysqld] 2 | bind-address = 0.0.0.0 3 | bulk_insert_buffer_size = 4M 4 | character-set-server = utf8 5 | collation-server = utf8_general_ci 6 | concurrent_insert = 2 7 | default_storage_engine = MyISAM 8 | join_buffer_size = 128K 9 | key_buffer_size = 8M 10 | low-priority-updates = 1 11 | lower_case_table_names = 0 12 | max_allowed_packet = 4M 13 | max_connections = 128 14 | max_heap_table_size = 4M 15 | myisam_sort_buffer_size = 8M 16 | net_buffer_length = 1K 17 | preload_buffer_size = 32K 18 | query_cache_limit = 512K 19 | query_cache_min_res_unit = 1K 20 | query_cache_size = 4M 21 | query_cache_type = 1 22 | read_buffer_size = 128K 23 | read_rnd_buffer_size = 128K 24 | skip-external-locking 25 | skip-innodb 26 | skip-name-resolve 27 | skip-networking 28 | sort_buffer_size = 256K 29 | sql_mode = ANSI 30 | table_definition_cache = 512 31 | table_open_cache = 256 32 | thread_cache_size = 2 33 | thread_stack = 128K 34 | tmp_table_size = 4M 35 | -------------------------------------------------------------------------------- /overlay/php/var/www/default/public/adminer/plugins/plugin_EditForeign.php: -------------------------------------------------------------------------------- 1 | "") + get_vals("SELECT " . idf_escape($id) . " FROM " . table($target) . " ORDER BY 1"); 27 | } 28 | 29 | return "" . optionlist($options, $value) . ""; 30 | } 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/docker.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [[ $halBox_Bits -eq 64 ]]; then 4 | apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D > /dev/null 2>&1 5 | 6 | if [[ $? == 0 ]]; then 7 | if [[ ! -f /etc/apt/sources.list.d/docker.list ]]; then 8 | echo "deb https://apt.dockerproject.org/repo ubuntu-$halBox_OS_Codename main" > /etc/apt/sources.list.d/docker.list 9 | fi 10 | 11 | apt-get -qq update > /dev/null 12 | fi 13 | 14 | if [[ $(dpkg --compare-versions $halBox_OS_Kernel lt 3.10) ]]; then 15 | echo -e "\e[1;31mDave, I'm upgrading the kernel.\e[0m" && apt-get -qq install linux-image-extra-$halBox_OS_Kernel > /dev/null 16 | fi 17 | 18 | apt-get -qq install docker-engine > /dev/null 19 | 20 | if [[ $? == 0 ]]; then 21 | if [[ -f /etc/default/docker ]]; then 22 | sed -i "s~#DOCKER_OPTS=~DOCKER_OPTS=~" /etc/default/docker 23 | fi 24 | else 25 | echo -e "\e[1;31mSomething went wrong installing '$halBox_package'.\e[0m" 26 | fi 27 | else 28 | echo -e "\e[1;31mDave, '$halBox_package' requires a 64-bit installation.\e[0m" 29 | fi 30 | 31 | if [[ -f /etc/init.d/docker ]]; then 32 | echo -e "\e[1;32mDave, I'm restarting the 'docker' service.\e[0m" && service docker restart > /dev/null 33 | fi 34 | -------------------------------------------------------------------------------- /overlay/nginx/etc/nginx/conf.d/http_gzip.conf: -------------------------------------------------------------------------------- 1 | # //nginx.org/en/docs/http/ngx_http_gzip_module.html 2 | 3 | gzip on; 4 | gzip_buffers 128 4K; 5 | gzip_comp_level 4; 6 | gzip_disable "msie6"; 7 | gzip_http_version 1.0; 8 | gzip_min_length 256; 9 | gzip_proxied any; 10 | gzip_types application/atom+xml 11 | application/javascript 12 | application/json 13 | application/owl+xml 14 | application/rdf+xml 15 | application/rss+xml 16 | application/vnd.ms-fontobject 17 | application/x-bittorrent 18 | application/x-font-otf 19 | application/x-font-ttf 20 | application/x-web-app-manifest+json 21 | application/xhtml+xml 22 | application/xml 23 | application/xml-dtd 24 | image/svg+xml 25 | image/x-icon 26 | text/cache-manifest 27 | text/css 28 | text/csv 29 | text/mathml 30 | text/plain 31 | text/vcard 32 | text/vtt 33 | text/x-component 34 | text/x-markdown; 35 | gzip_vary on; 36 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/go.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install binutils bison gcc git make mercurial > /dev/null 2>&1 4 | wget -q https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer -O - | bash > /dev/null 5 | 6 | if [[ -f ~/.gvm/scripts/gvm ]]; then 7 | source ~/.gvm/scripts/gvm && gvm install go1.4 > /dev/null && gvm use go1.4 > /dev/null && gvm install go1.5.3 > /dev/null && gvm use go1.5.3 --default > /dev/null && gvm uninstall go1.4 > /dev/null 8 | 9 | if [[ $? == 0 ]]; then 10 | mkdir -p ~/Go/{bin/,pkg/,src/} 11 | 12 | if [[ ! -f /etc/profile.d/go.sh ]]; then 13 | echo -e 'export GO15VENDOREXPERIMENT=1\nexport GOROOT_BOOTSTRAP=$GOROOT\nexport GOPATH=$HOME/Go\nexport PATH=$PATH:$GOPATH/bin\n' > /etc/profile.d/go.sh && source /etc/profile.d/go.sh 14 | fi 15 | 16 | for halBox_Go_package in devd errcheck glide godef godep godepgraph godoc goimports gometalinter gox goxc interfacer jsonf oracle penv; do 17 | if [[ -f $halBox_Base/packages/$halBox_OS/$halBox_OS_Codename/go/$halBox_Go_package.sh ]]; then 18 | echo -e "\e[1;32mDave, I'm also installing '$halBox_Go_package'.\e[0m" && source $halBox_Base/packages/$halBox_OS/$halBox_OS_Codename/go/$halBox_Go_package.sh 19 | fi 20 | done 21 | fi 22 | fi 23 | 24 | if [[ ! -d ~/Go/ ]]; then 25 | echo -e "\e[1;31mSomething went wrong installing '$halBox_package'.\e[0m" 26 | fi 27 | -------------------------------------------------------------------------------- /bin/mysql_secure_installation.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/expect -f 2 | 3 | log_user 0 4 | set timeout 3 5 | set password [lindex $argv 0] 6 | 7 | spawn mysql_secure_installation 8 | 9 | expect "Enter current password for root (enter for none):" { send -- "\r"; 10 | expect "OK, successfully used password, moving on..." { 11 | expect "Set root password" { send -- "y\r"; 12 | expect "New password:" { send -- "$password\r"; 13 | expect "Re-enter new password:" { send -- "$password\n"; 14 | expect "Remove anonymous users" { send -- "y\r"; 15 | expect "Disallow root login remotely" { send -- "y\r"; 16 | expect "Remove test database and access to it" { send -- "y\r"; 17 | expect "Reload privilege tables now" { send -- "y\r"; 18 | expect "Thanks for using MySQL!" { 19 | exit 0; 20 | } 21 | } 22 | } 23 | } 24 | } 25 | } 26 | } 27 | } 28 | } 29 | } 30 | 31 | exit 1; 32 | -------------------------------------------------------------------------------- /overlay/php/var/www/default/public/adminer/plugins/plugin_EnumOption.php: -------------------------------------------------------------------------------- 1 | for enum edit instead of 4 | * @link http://www.adminer.org/plugins/#use 5 | * @author Jakub Vrana, http://www.vrana.cz/ 6 | * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0 7 | * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other) 8 | */ 9 | class AdminerEnumOption { 10 | function editInput($table, $field, $attrs, $value) { 11 | if ($field["type"] == "enum") { 12 | $options = array("" => array()); 13 | $selected = $value; 14 | 15 | if (isset($_GET["select"])) { 16 | $options[""][-1] = lang('original'); 17 | } 18 | 19 | if ($field["null"]) { 20 | $options[""][""] = "NULL"; 21 | if ($value === null && !isset($_GET["select"])) { 22 | $selected = ""; 23 | } 24 | } 25 | 26 | $options[""][0] = lang('empty'); 27 | preg_match_all("~'((?:[^']|'')*)'~", $field["length"], $matches); 28 | 29 | foreach ($matches[1] as $i => $val) { 30 | $val = stripcslashes(str_replace("''", "'", $val)); 31 | $options[$i + 1] = $val; 32 | if ($value === $val) { 33 | $selected = $i + 1; 34 | } 35 | } 36 | 37 | return "" . optionlist($options, (string) $selected, 1) . ""; // 1 - use keys 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /overlay/nginx/usr/local/sbin/ngxgzip: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | shopt -s globstar 4 | 5 | path=$(pwd) 6 | verbose=1 7 | recursive=0 8 | 9 | while getopts 'qr' flag; do 10 | case "${flag}" in 11 | q) verbose=0 ;; 12 | r) recursive=1 ;; 13 | *) echo "Usage: $0 [-qr] PATH"; exit 1 ;; 14 | esac 15 | done 16 | 17 | if [[ $# -gt 0 ]]; then 18 | if [[ -d ${!#} ]]; then 19 | path=${!#} 20 | elif [[ -f ${!#} ]]; then 21 | path=${!#} 22 | fi 23 | fi 24 | 25 | function compress() 26 | { 27 | if [[ -f $1 ]]; then 28 | bytes=$(wc -c "$1" | cut -f 1 -d ' '); level=0 29 | 30 | for i in {1..9}; do 31 | if [[ $(gzip -cf -$i "$1" | wc -c) -lt $bytes ]]; then 32 | bytes=$(gzip -cf -$i "$1" | wc -c); level=$i 33 | fi 34 | done 35 | 36 | if [[ $level -gt 0 ]]; then 37 | if [[ $verbose -gt 0 ]]; then 38 | echo "Gzipping $1 with compression level $level." 39 | fi 40 | 41 | $(gzip -cf -$level "$1" > "$1".gz && touch -r "$1" "$1.gz") 42 | elif [[ $verbose -gt 0 ]]; then 43 | echo "Skipping $1." 44 | fi 45 | fi 46 | } 47 | 48 | if [ -d "$path" ]; then 49 | for file in "$path"/*.{css,cur,eot,htc,html,ico,js,json,otf,svg,ttc,ttf,xml}; do 50 | compress "$file" 51 | done 52 | 53 | if [[ $recursive -gt 0 ]]; then 54 | for file in "$path"/**/*.{css,cur,eot,htc,html,ico,js,json,otf,svg,ttc,ttf,xml}; do 55 | compress "$file" 56 | done 57 | fi 58 | elif [[ -f "$path" ]]; then 59 | compress "$path" 60 | fi 61 | -------------------------------------------------------------------------------- /overlay/nginx/etc/nginx/conf.d/http_ssl.conf: -------------------------------------------------------------------------------- 1 | # //nginx.org/en/docs/http/ngx_http_ssl_module.html 2 | # //mozilla.github.io/server-side-tls/ssl-config-generator/ 3 | # //raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html 4 | 5 | add_header Content-Security-Policy "upgrade-insecure-requests"; 6 | add_header Strict-Transport-Security "max-age=15768000; includeSubdomains"; 7 | add_header X-Frame-Options "SAMEORIGIN"; 8 | resolver 8.8.8.8 8.8.4.4 valid=300s; 9 | resolver_timeout 5s; 10 | ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA; 11 | ssl_dhparam /etc/ssl/dhparam.pem; 12 | ssl_prefer_server_ciphers on; 13 | ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 14 | ssl_session_cache shared:SSL:16M; 15 | ssl_session_tickets off; 16 | ssl_session_timeout 1d; 17 | ssl_stapling on; 18 | ssl_stapling_verify on; 19 | -------------------------------------------------------------------------------- /overlay/nginx/usr/local/sbin/ngxsite: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [[ $# -ne 1 ]]; then 4 | echo "Usage: $0 DOMAIN" && exit 1 5 | fi 6 | 7 | if [[ -r /etc/nginx/sites-available/$1 ]]; then 8 | echo "Domain $1 already exists." && exit 1 9 | else 10 | if [[ -d /var/www/default/ ]]; then 11 | cp -rp /var/www/default/ /var/www/$1/ 12 | else 13 | mkdir -p /var/www/$1/{error/,public/} && touch /var/www/$1/public/index.html 14 | fi 15 | 16 | chown -R www-data:www-data /var/www/ 17 | 18 | if [[ -f /etc/nginx/sites-available/example.com ]]; then 19 | cp /etc/nginx/sites-available/example.com /etc/nginx/sites-available/$1 && sed -i "s~example.com~$1~g" /etc/nginx/sites-available/$1 20 | 21 | if [[ ! -f /etc/ssl/dhparam.pem ]]; then 22 | echo "Generating Diffie-Hellman Parameters, this may take a while..." && openssl dhparam -out /etc/ssl/dhparam.pem 2048 > /dev/null 2>&1 23 | fi 24 | 25 | service nginx stop > /dev/null 26 | 27 | if [[ -f ~/.letsencrypt/letsencrypt-auto ]]; then 28 | echo "Obtaining SSL certificate..." && ~/.letsencrypt/letsencrypt-auto certonly --config /etc/letsencrypt/letsencrypt.ini --domain $1 --domain cdn.$1 --domain www.$1 > /dev/null 2>&1 29 | 30 | if [[ ! -d /etc/letsencrypt/live/$1/ ]]; then 31 | echo "Unable to obtain the SSL certificate for '$1'." 32 | fi 33 | fi 34 | 35 | service nginx start > /dev/null 36 | 37 | if ! grep -q $1 /etc/hosts; then 38 | echo -e "127.0.0.1\t$1 cdn.$1 www.$1" >> /etc/hosts 39 | fi 40 | 41 | if [[ -d /etc/letsencrypt/live/$1/ ]]; then 42 | ngxensite $1 43 | fi 44 | fi 45 | fi 46 | -------------------------------------------------------------------------------- /overlay/nginx/var/www/default/error/403.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Forbidden 6 | 7 | 8 | 9 | 10 | 11 | 0 strings genetically engineered. 12 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /overlay/nginx/var/www/default/error/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Not Found 6 | 7 | 8 | 9 | 10 | 11 | 0 strings genetically engineered. 12 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /overlay/nginx/var/www/default/error/5xx.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Server Error 6 | 7 | 8 | 9 | 10 | 11 | 0 strings genetically engineered. 12 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /overlay/nginx/var/www/default/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Hello, Dave 6 | 7 | 8 | 9 | 10 | 11 | 0 strings genetically engineered. 12 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /overlay/nginx/var/www/default/error/405.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Method Not Allowed 6 | 7 | 8 | 9 | 10 | 11 | 0 strings genetically engineered. 12 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /overlay/php5/etc/php5/mods-available/halBox-dev.ini: -------------------------------------------------------------------------------- 1 | allow_call_time_pass_reference = 0 2 | asp_tags = 0 3 | cgi.fix_pathinfo = 1 4 | date.timezone = UTC 5 | default_socket_timeout = 30 6 | detect_unicode = 0 7 | disable_classes = 8 | disable_functions = 9 | display_errors = 1 10 | display_startup_errors = 1 11 | error_log = 12 | error_reporting = E_ALL 13 | expose_php = 0 14 | file_uploads = 1 15 | html_errors = 0 16 | log_errors = 1 17 | memory_limit = 32M 18 | post_max_size = 32M 19 | precision = 16 20 | realpath_cache_size = 16K 21 | realpath_cache_ttl = 120 22 | request_order = GP 23 | session.auto_start = 0 24 | session.cookie_httponly = 1 25 | session.cookie_lifetime = 86400 26 | session.entropy_file = /dev/urandom 27 | session.entropy_length = 128 28 | session.gc_divisor = 100 29 | session.gc_maxlifetime = 86400 30 | session.gc_probability = 1 31 | session.hash_bits_per_character = 5 32 | session.hash_function = sha256 33 | session.save_handler = files 34 | session.save_path = /tmp 35 | session.use_cookies = 1 36 | session.use_only_cookies = 1 37 | session.use_strict_mode = 1 38 | session.use_trans_sid = 0 39 | short_open_tag = 1 40 | track_errors = 1 41 | upload_max_filesize = 32M 42 | -------------------------------------------------------------------------------- /overlay/php7/etc/php/mods-available/halBox-dev.ini: -------------------------------------------------------------------------------- 1 | allow_call_time_pass_reference = 0 2 | asp_tags = 0 3 | cgi.fix_pathinfo = 1 4 | date.timezone = UTC 5 | default_socket_timeout = 30 6 | detect_unicode = 0 7 | disable_classes = 8 | disable_functions = 9 | display_errors = 1 10 | display_startup_errors = 1 11 | error_log = 12 | error_reporting = E_ALL 13 | expose_php = 0 14 | file_uploads = 1 15 | html_errors = 0 16 | log_errors = 1 17 | memory_limit = 32M 18 | post_max_size = 32M 19 | precision = 16 20 | realpath_cache_size = 16K 21 | realpath_cache_ttl = 120 22 | request_order = GP 23 | session.auto_start = 0 24 | session.cookie_httponly = 1 25 | session.cookie_lifetime = 86400 26 | session.entropy_file = /dev/urandom 27 | session.entropy_length = 128 28 | session.gc_divisor = 100 29 | session.gc_maxlifetime = 86400 30 | session.gc_probability = 1 31 | session.hash_bits_per_character = 5 32 | session.hash_function = sha256 33 | session.save_handler = files 34 | session.save_path = /tmp 35 | session.use_cookies = 1 36 | session.use_only_cookies = 1 37 | session.use_strict_mode = 1 38 | session.use_trans_sid = 0 39 | short_open_tag = 1 40 | track_errors = 1 41 | upload_max_filesize = 32M 42 | -------------------------------------------------------------------------------- /overlay/php7/etc/php/mods-available/halBox-prod.ini: -------------------------------------------------------------------------------- 1 | allow_call_time_pass_reference = 0 2 | asp_tags = 0 3 | cgi.fix_pathinfo = 1 4 | date.timezone = UTC 5 | default_socket_timeout = 30 6 | detect_unicode = 0 7 | disable_classes = 8 | disable_functions = 9 | display_errors = 0 10 | display_startup_errors = 0 11 | error_log = 12 | error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT 13 | expose_php = 0 14 | file_uploads = 1 15 | html_errors = 0 16 | log_errors = 1 17 | memory_limit = 32M 18 | post_max_size = 32M 19 | precision = 16 20 | realpath_cache_size = 16K 21 | realpath_cache_ttl = 120 22 | request_order = GP 23 | session.auto_start = 0 24 | session.cookie_httponly = 1 25 | session.cookie_lifetime = 86400 26 | session.entropy_file = /dev/urandom 27 | session.entropy_length = 128 28 | session.gc_divisor = 100 29 | session.gc_maxlifetime = 86400 30 | session.gc_probability = 1 31 | session.hash_bits_per_character = 5 32 | session.hash_function = sha256 33 | session.save_handler = files 34 | session.save_path = /tmp 35 | session.use_cookies = 1 36 | session.use_only_cookies = 1 37 | session.use_strict_mode = 1 38 | session.use_trans_sid = 0 39 | short_open_tag = 1 40 | track_errors = 0 41 | upload_max_filesize = 32M 42 | -------------------------------------------------------------------------------- /overlay/php5/etc/php5/mods-available/halBox-prod.ini: -------------------------------------------------------------------------------- 1 | allow_call_time_pass_reference = 0 2 | asp_tags = 0 3 | cgi.fix_pathinfo = 1 4 | date.timezone = UTC 5 | default_socket_timeout = 30 6 | detect_unicode = 0 7 | disable_classes = 8 | disable_functions = 9 | display_errors = 0 10 | display_startup_errors = 0 11 | error_log = 12 | error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT 13 | expose_php = 0 14 | file_uploads = 1 15 | html_errors = 0 16 | log_errors = 1 17 | memory_limit = 32M 18 | post_max_size = 32M 19 | precision = 16 20 | realpath_cache_size = 16K 21 | realpath_cache_ttl = 120 22 | request_order = GP 23 | session.auto_start = 0 24 | session.cookie_httponly = 1 25 | session.cookie_lifetime = 86400 26 | session.entropy_file = /dev/urandom 27 | session.entropy_length = 128 28 | session.gc_divisor = 100 29 | session.gc_maxlifetime = 86400 30 | session.gc_probability = 1 31 | session.hash_bits_per_character = 5 32 | session.hash_function = sha256 33 | session.save_handler = files 34 | session.save_path = /tmp 35 | session.use_cookies = 1 36 | session.use_only_cookies = 1 37 | session.use_strict_mode = 1 38 | session.use_trans_sid = 0 39 | short_open_tag = 1 40 | track_errors = 0 41 | upload_max_filesize = 32M 42 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | echo -e "\e[1;32mDave, I'm updating the package list...\e[0m" && apt-get -qq update > /dev/null && apt-get -qq install apt-transport-https whiptail locales > /dev/null 4 | 5 | if ! grep -q "LC_ALL" /etc/default/locale; then 6 | echo -e "\e[1;32mDave, I'm defaulting to the 'en_US.UTF-8' locale.\e[0m" && echo 'LC_ALL="en_US.UTF-8"' >> /etc/default/locale && locale-gen "en_US.UTF-8" > /dev/null && export LC_ALL=en_US.UTF-8 7 | fi 8 | 9 | for halBox_package in ack-grep bc bcrypt build-essential cloc curl dialog dstat glances host htop httpie iftop ioping iotop jpegoptim nano ncdu optipng pydf scrypt ssdeep strace tmux units unzip vim virt-what zip; do 10 | echo -e "\e[1;32mDave, I'm installing '$halBox_package'.\e[0m" && apt-get -qq install $halBox_package > /dev/null 2>&1 11 | done 12 | 13 | if [[ $(virt-what) == "virtualbox" && -f $halBox_Base/packages/$halBox_OS/$halBox_OS_Codename/virtualbox.sh ]]; then 14 | echo -e "\e[1;32mDave, I'm installing VirtualBox Guest Additions...\e[0m" && source $halBox_Base/packages/$halBox_OS/$halBox_OS_Codename/virtualbox.sh 15 | fi 16 | 17 | echo -e "\e[1;32mDave, I'm defaulting to the UTC timezone.\e[0m" && echo "UTC" > /etc/timezone && dpkg-reconfigure -f noninteractive tzdata > /dev/null 2>&1 18 | 19 | if [[ $(ulimit -n) -le 65536 ]]; then 20 | echo -e "\e[1;32mDave, I'm increasing the maximum number of open files to 65536.\e[0m" 21 | 22 | if [[ ! -f /etc/sysctl.d/60-file-max.conf ]]; then 23 | echo 'fs.file-max = 65536' >> /etc/sysctl.d/60-file-max.conf 24 | fi 25 | 26 | if [[ ! -f /etc/security/limits.d/60-nofile-limit.conf ]]; then 27 | echo "* soft nofile 65536" >> /etc/security/limits.d/60-nofile-limit.conf 28 | echo "* hard nofile 65536" >> /etc/security/limits.d/60-nofile-limit.conf 29 | echo "root soft nofile 65536" >> /etc/security/limits.d/60-nofile-limit.conf 30 | echo "root hard nofile 65536" >> /etc/security/limits.d/60-nofile-limit.conf 31 | fi 32 | 33 | ulimit -n 65536 34 | fi 35 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php5.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get -qq install php5-cli php5-fpm > /dev/null 2>&1 4 | 5 | if [[ $? == 0 ]]; then 6 | cp -r $halBox_Base/overlay/php/. / && cp -r $halBox_Base/overlay/php5/. / 7 | 8 | if [[ -f /etc/php5/mods-available/halBox-dev.ini ]]; then 9 | php5enmod halBox-dev 10 | fi 11 | 12 | if [[ -f /etc/php5/fpm/pool.d/www.conf ]]; then 13 | sed -i "s~listen =.*~listen = 127.0.0.1:9000~" /etc/php5/fpm/pool.d/www.conf 14 | sed -i "s~;listen.allowed_clients~listen.allowed_clients~" /etc/php5/fpm/pool.d/www.conf 15 | fi 16 | 17 | for halBox_PHP5_package in $halBox_PHP5_packages; do 18 | echo -e "\e[1;32mDave, I'm installing '$halBox_PHP5_package'.\e[0m" 19 | 20 | if [[ -f $halBox_Base/packages/$halBox_OS/$halBox_OS_Codename/php5/$halBox_PHP5_package.sh ]]; then 21 | source $halBox_Base/packages/$halBox_OS/$halBox_OS_Codename/php5/$halBox_PHP5_package.sh 22 | else 23 | apt-get -qq install $halBox_PHP5_package > /dev/null 2>&1 24 | 25 | if [[ $? != 0 ]]; then 26 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP5_package'.\e[0m" 27 | elif [[ -f /etc/php5/mods-available/${halBox_PHP5_package:5}.ini ]]; then 28 | sed -i "s~^#~;~" /etc/php5/mods-available/${halBox_PHP5_package:5}.ini && php5enmod ${halBox_PHP5_package:5} 29 | fi 30 | fi 31 | done 32 | 33 | if [[ -f /etc/init.d/nginx ]]; then 34 | echo -e "\e[1;32mDave, I'm also installing 'adminer'.\e[0m" && wget -q https://www.adminer.org/latest.php -O /var/www/default/public/adminer/adminer.php && wget -q https://raw.githubusercontent.com/vrana/adminer/master/plugins/plugin.php -O /var/www/default/public/adminer/plugins/plugin.php 35 | fi 36 | else 37 | echo -e "\e[1;31mSomething went wrong installing '$halBox_package'.\e[0m" 38 | fi 39 | 40 | if [[ -f /etc/init.d/php5-fpm ]]; then 41 | echo -e "\e[1;32mDave, I'm restarting the 'php5-fpm' service.\e[0m" && service php5-fpm restart > /dev/null 42 | 43 | if [[ -f /etc/init.d/nginx ]]; then 44 | echo -e "\e[1;32mDave, I'm restarting the 'nginx' service.\e[0m" && service nginx restart > /dev/null 45 | fi 46 | fi 47 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/postgresql.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | apt-key add - > /dev/null 4 | 5 | if [[ $? == 0 ]]; then 6 | if [[ ! -f /etc/apt/sources.list.d/postgresql.list ]]; then 7 | echo "deb http://apt.postgresql.org/pub/repos/apt/ $halBox_OS_Codename-pgdg main" > /etc/apt/sources.list.d/postgresql.list 8 | fi 9 | 10 | apt-get -qq update > /dev/null 11 | fi 12 | 13 | apt-get -qq install postgresql-9.5 postgresql-server-dev-9.5 > /dev/null 2>&1 14 | 15 | if [[ $? == 0 ]]; then 16 | cp -r $halBox_Base/overlay/postgresql/. /etc/postgresql/[0..9]*/ 17 | 18 | su - postgres <<-EOF 19 | psql -c "CREATE ROLE root WITH SUPERUSER LOGIN ENCRYPTED PASSWORD '$halBox_PostgreSQL_password';" > /dev/null 20 | EOF 21 | 22 | echo -e "\e[1;31mDave, your PostgreSQL root password is now '$halBox_PostgreSQL_password'.\e[0m" 23 | 24 | if [[ $halBox_PostgreSQL_networking == "1" ]]; then 25 | sed -i "s~#listen_addresses = 'localhost'~listen_addresses = '*'~" /etc/postgresql/[0..9]*/main/postgresql.conf && echo -e "\e[1;31mDave, remote PostgreSQL access is now enabled.\e[0m" 26 | else 27 | sed -i "s~#listen_addresses = 'localhost'~listen_addresses = 'localhost'~" /etc/postgresql/[0..9]*/main/postgresql.conf 28 | fi 29 | 30 | for halBox_PostgreSQL_package in pgcli pgloader pgtop pgtune; do 31 | echo -e "\e[1;32mDave, I'm also installing '$halBox_PostgreSQL_package'.\e[0m" 32 | 33 | if [[ -f $halBox_Base/packages/$halBox_OS/$halBox_OS_Codename/postgresql/$halBox_PostgreSQL_package.sh ]]; then 34 | source $halBox_Base/packages/$halBox_OS/$halBox_OS_Codename/postgresql/$halBox_PostgreSQL_package.sh 35 | else 36 | apt-get -qq install $halBox_PostgreSQL_package > /dev/null 37 | fi 38 | done 39 | 40 | if [[ -f /etc/iptables.rules ]]; then 41 | sed -i -r "s~(--dport 5432) -j DROP~\1 -j ACCEPT~" /etc/iptables.rules && iptables-restore < /etc/iptables.rules 42 | fi 43 | else 44 | echo -e "\e[1;31mSomething went wrong installing '$halBox_package'.\e[0m" 45 | fi 46 | 47 | if [[ -f /etc/init.d/postgresql ]]; then 48 | echo -e "\e[1;32mDave, I'm restarting the 'postgresql' service.\e[0m" && service postgresql restart > /dev/null 49 | fi 50 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/php7.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | add-apt-repository -y ppa:ondrej/php-7.0 > /dev/null 2>&1 4 | 5 | if [[ $? == 0 ]]; then 6 | apt-get -qq update > /dev/null 7 | fi 8 | 9 | apt-get -qq install php7.0-cli php7.0-fpm > /dev/null 2>&1 10 | 11 | if [[ $? == 0 ]]; then 12 | cp -r $halBox_Base/overlay/php/. / && cp -r $halBox_Base/overlay/php7/. / 13 | 14 | if [[ -f /etc/php/mods-available/halBox-dev.ini ]]; then 15 | phpenmod -v ALL halBox-dev 16 | fi 17 | 18 | if [[ -f /etc/php/7.0/fpm/pool.d/www.conf ]]; then 19 | sed -i "s~listen =.*~listen = 127.0.0.1:9000~" /etc/php/7.0/fpm/pool.d/www.conf 20 | sed -i "s~;listen.allowed_clients~listen.allowed_clients~" /etc/php/7.0/fpm/pool.d/www.conf 21 | fi 22 | 23 | for halBox_PHP7_package in $halBox_PHP7_packages; do 24 | echo -e "\e[1;32mDave, I'm installing '$halBox_PHP7_package'.\e[0m" 25 | 26 | if [[ -f $halBox_Base/packages/$halBox_OS/$halBox_OS_Codename/php7/$halBox_PHP7_package.sh ]]; then 27 | source $halBox_Base/packages/$halBox_OS/$halBox_OS_Codename/php7/$halBox_PHP7_package.sh 28 | else 29 | apt-get -qq install $halBox_PHP7_package > /dev/null 2>&1 30 | 31 | if [[ $? != 0 ]]; then 32 | echo -e "\e[1;31mSomething went wrong installing '$halBox_PHP7_package'.\e[0m" 33 | elif [[ -f /etc/php/mods-available/${halBox_PHP7_package:5}.ini ]]; then 34 | sed -i "s~^#~;~" /etc/php/mods-available/${halBox_PHP7_package:5}.ini && phpenmod -v ALL ${halBox_PHP7_package:5} 35 | fi 36 | fi 37 | done 38 | 39 | if [[ -f /etc/init.d/nginx ]]; then 40 | echo -e "\e[1;32mDave, I'm also installing 'adminer'.\e[0m" && wget -q https://www.adminer.org/latest.php -O /var/www/default/public/adminer/adminer.php && wget -q https://raw.githubusercontent.com/vrana/adminer/master/plugins/plugin.php -O /var/www/default/public/adminer/plugins/plugin.php 41 | fi 42 | else 43 | echo -e "\e[1;31mSomething went wrong installing '$halBox_package'.\e[0m" 44 | fi 45 | 46 | if [[ -f /etc/init.d/php7.0-fpm ]]; then 47 | echo -e "\e[1;32mDave, I'm restarting the 'php7.0-fpm' service.\e[0m" && service php7.0-fpm restart > /dev/null 48 | 49 | if [[ -f /etc/init.d/nginx ]]; then 50 | echo -e "\e[1;32mDave, I'm restarting the 'nginx' service.\e[0m" && service nginx restart > /dev/null 51 | fi 52 | fi 53 | -------------------------------------------------------------------------------- /overlay/nginx/etc/nginx/sites-available/default: -------------------------------------------------------------------------------- 1 | server { 2 | listen 80 default_server; 3 | server_name default; 4 | 5 | index index.html index.php; 6 | root /var/www/$server_name/public; 7 | 8 | include /etc/nginx/conf.d/http_charset.conf; 9 | include /etc/nginx/conf.d/http_gzip.conf; 10 | include /etc/nginx/conf.d/http_gzip_static.conf; 11 | 12 | location / { 13 | try_files $uri $uri/ /index.php$is_args$args; # $uri $uri/ @php @proxy 14 | } 15 | 16 | location @php { 17 | rewrite ^/(.*)/?$ /index.php/$1 last; 18 | } 19 | 20 | location @proxy { 21 | proxy_pass http://localhost:3000; 22 | proxy_buffering off; 23 | proxy_cache off; 24 | proxy_http_version 1.1; 25 | proxy_redirect off; 26 | proxy_set_header Host $host; 27 | proxy_set_header Upgrade $http_upgrade; 28 | proxy_set_header Connection $connection_upgrade; 29 | proxy_set_header X-Real-IP $remote_addr; 30 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 31 | proxy_set_header X-Forwarded-Proto $scheme; 32 | } 33 | 34 | location ~* /(?:[.]|.*[.](?:bak|[a-z]?db|fla|in[ci]|log|phar|psd|sh|sql|sw[op])|(?:file|upload)s?/.*[.](?:php)) { 35 | deny all; 36 | } 37 | 38 | location ~* [.](?:php) { 39 | include /etc/nginx/conf.d/http_fastcgi.conf; 40 | } 41 | 42 | location ~* [.](?:atom|jsonp?|ow[lx]|rdf|rss|xml)$ { 43 | add_header Cache-Control "public"; 44 | expires 1h; 45 | } 46 | 47 | location ~* [.](?:(?:css|js|less)|(?:eot|otf|tt[cf]|woff)|(?:cur|flv|gif|htc|ico|jpe?g|mp[34]|og[agv]|png|svgz?|swf|tiff?|web[mp]))$ { 48 | add_header Cache-Control "public"; 49 | expires 1y; 50 | } 51 | 52 | location /favicon.ico { 53 | add_header Cache-Control "public"; 54 | expires 1w; 55 | log_not_found off; 56 | } 57 | 58 | error_page 403 /error/403.html; 59 | error_page 404 /error/404.html; 60 | error_page 405 /error/405.html; 61 | error_page 500 501 502 503 504 /error/5xx.html; 62 | 63 | location ^~ /error/ { 64 | internal; 65 | root /var/www/$server_name; 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/mysql.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys 5072E1F5 > /dev/null 2>&1 4 | 5 | if [[ $? == 0 ]]; then 6 | if [[ ! -f /etc/apt/sources.list.d/mysql.list ]]; then 7 | echo "deb http://repo.mysql.com/apt/ubuntu $halBox_OS_Codename mysql-5.7" > /etc/apt/sources.list.d/mysql.list 8 | fi 9 | 10 | apt-get -qq update > /dev/null 11 | fi 12 | 13 | cp -r $halBox_Base/overlay/mysql/. / && DEBIAN_FRONTEND=noninteractive apt-get -qq install expect mysql-server mysql-client > /dev/null 2>&1 14 | 15 | if [[ $? == 0 ]]; then 16 | chmod +x $halBox_Base/bin/mysql_secure_installation.sh && expect -f $halBox_Base/bin/mysql_secure_installation.sh $halBox_MySQL_password > /dev/null 17 | 18 | if [[ -f ~/.my.cnf ]]; then 19 | sed -i -r "s~^password([[:blank:]]*)=$;~password\1= $halBox_MySQL_password;~" ~/.my.cnf && chmod 0600 ~/.my.cnf 20 | fi 21 | 22 | echo -e "\e[1;31mDave, your MySQL root password is now '$halBox_MySQL_password'.\e[0m" 23 | 24 | if [[ $halBox_MySQL_networking == "1" ]]; then 25 | mysql --user="root" --password="$( printf "%q" "$halBox_MySQL_password")" -e "GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY '$(printf "%q" "$halBox_MySQL_password")' WITH GRANT OPTION; FLUSH PRIVILEGES;" 26 | 27 | if [[ $? == 0 ]]; then 28 | sed -i "s~skip-networking~#skip-networking~" /etc/mysql/conf.d/halBox.cnf && echo -e "\e[1;31mDave, remote MySQL access is now enabled.\e[0m" 29 | fi 30 | fi 31 | 32 | if [[ $halBox_RAM -ge 512 ]]; then 33 | sed -i "s~skip-innodb~#skip-innodb~" /etc/mysql/conf.d/halBox.cnf && echo -e "\e[1;31mDave, MySQL InnoDB storage engine is now enabled.\e[0m" 34 | fi 35 | 36 | for halBox_MySQL_package in innotop mycli mysqltuner tuning-primer; do 37 | echo -e "\e[1;32mDave, I'm also installing '$halBox_MySQL_package'.\e[0m" 38 | 39 | if [[ -f $halBox_Base/packages/$halBox_OS/$halBox_OS_Codename/mysql/$halBox_MySQL_package.sh ]]; then 40 | source $halBox_Base/packages/$halBox_OS/$halBox_OS_Codename/mysql/$halBox_MySQL_package.sh 41 | else 42 | apt-get -qq install $halBox_MySQL_package > /dev/null 43 | fi 44 | done 45 | 46 | if [[ -f /etc/iptables.rules ]]; then 47 | sed -i -r "s~(--dport 3306) -j DROP~\1 -j ACCEPT~" /etc/iptables.rules && iptables-restore < /etc/iptables.rules 48 | fi 49 | else 50 | echo -e "\e[1;31mSomething went wrong installing '$halBox_package'.\e[0m" 51 | fi 52 | 53 | if [[ -f /etc/init.d/mysql ]]; then 54 | echo -e "\e[1;32mDave, I'm restarting the 'mysql' service.\e[0m" && service mysql restart > /dev/null 55 | fi 56 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/mariadb.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xcbcb082a1bb943db > /dev/null 2>&1 4 | 5 | if [[ $? == 0 ]]; then 6 | if [[ ! -f /etc/apt/sources.list.d/mariadb.list ]]; then 7 | echo "deb http://nyc2.mirrors.digitalocean.com/mariadb/repo/10.1/ubuntu $halBox_OS_Codename main" > /etc/apt/sources.list.d/mariadb.list 8 | fi 9 | 10 | apt-get -qq update > /dev/null 11 | fi 12 | 13 | cp -r $halBox_Base/overlay/mysql/. / && DEBIAN_FRONTEND=noninteractive apt-get -qq install expect mariadb-server mariadb-client > /dev/null 2>&1 14 | 15 | if [[ $? == 0 ]]; then 16 | chmod +x $halBox_Base/bin/mysql_secure_installation.sh && expect -f $halBox_Base/bin/mysql_secure_installation.sh $halBox_MySQL_password > /dev/null 17 | 18 | if [[ -f ~/.my.cnf ]]; then 19 | sed -i -r "s~^password([[:blank:]]*)=$;~password\1= $halBox_MySQL_password;~" ~/.my.cnf && chmod 0600 ~/.my.cnf 20 | fi 21 | 22 | echo -e "\e[1;31mDave, your MariaDB root password is now '$halBox_MySQL_password'.\e[0m" 23 | 24 | if [[ $halBox_MySQL_networking == "1" ]]; then 25 | mysql --user="root" --password="$( printf "%q" "$halBox_MySQL_password")" -e "GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY '$(printf "%q" "$halBox_MySQL_password")' WITH GRANT OPTION; FLUSH PRIVILEGES;" 26 | 27 | if [[ $? == 0 ]]; then 28 | sed -i "s~skip-networking~#skip-networking~" /etc/mysql/conf.d/halBox.cnf && echo -e "\e[1;31mDave, remote MariaDB access is now enabled.\e[0m" 29 | fi 30 | fi 31 | 32 | if [[ $halBox_RAM -ge 512 ]]; then 33 | sed -i "s~skip-innodb~#skip-innodb~" /etc/mysql/conf.d/halBox.cnf && echo -e "\e[1;31mDave, MariaDB InnoDB storage engine is now enabled.\e[0m" 34 | fi 35 | 36 | for halBox_MySQL_package in innotop mycli mysqltuner tuning-primer; do 37 | echo -e "\e[1;32mDave, I'm also installing '$halBox_MySQL_package'.\e[0m" 38 | 39 | if [[ -f $halBox_Base/packages/$halBox_OS/$halBox_OS_Codename/mysql/$halBox_MySQL_package.sh ]]; then 40 | source $halBox_Base/packages/$halBox_OS/$halBox_OS_Codename/mysql/$halBox_MySQL_package.sh 41 | else 42 | apt-get -qq install $halBox_MySQL_package > /dev/null 43 | fi 44 | done 45 | 46 | if [[ -f /etc/iptables.rules ]]; then 47 | sed -i -r "s~(--dport 3306) -j DROP~\1 -j ACCEPT~" /etc/iptables.rules && iptables-restore < /etc/iptables.rules 48 | fi 49 | else 50 | echo -e "\e[1;31mSomething went wrong installing '$halBox_package'.\e[0m" 51 | fi 52 | 53 | if [[ -f /etc/init.d/mysql ]]; then 54 | echo -e "\e[1;32mDave, I'm restarting the 'mysql' service.\e[0m" && service mysql restart > /dev/null 55 | fi 56 | -------------------------------------------------------------------------------- /packages/ubuntu/trusty/nginx.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [[ $halBox_Arch != "arm" ]]; then 4 | wget -q http://nginx.org/packages/keys/nginx_signing.key -O - | apt-key add - > /dev/null 5 | 6 | if [[ $? == 0 ]]; then 7 | if [[ ! -f /etc/apt/sources.list.d/nginx.list ]]; then 8 | echo "deb http://nginx.org/packages/mainline/ubuntu/ $halBox_OS_Codename nginx" > /etc/apt/sources.list.d/nginx.list 9 | fi 10 | 11 | apt-get -qq update > /dev/null 12 | fi 13 | fi 14 | 15 | if [[ -f /etc/init.d/apache2 ]]; then 16 | echo -e "\e[1;32mDave, I'm uninstalling 'apache2'.\e[0m" && service apache2 stop && apt-get -qq remove --purge apache2 > /dev/null && rm -rf /var/www/html/ 17 | fi 18 | 19 | apt-get -qq install nginx > /dev/null 20 | 21 | if [[ $? == 0 ]]; then 22 | cp -r $halBox_Base/overlay/nginx/. / 23 | 24 | if [[ -f /etc/nginx/nginx.conf ]]; then 25 | if [[ $halBox_CPU_Cores -gt 2 ]]; then 26 | sed -i -r "s~worker_processes([[:blank:]]*)[0-9]*;~worker_processes\1$halBox_CPU_Cores;~" /etc/nginx/nginx.conf 27 | fi 28 | fi 29 | 30 | for halBox_nginx_package in apache2-utils httperf letsencrypt ngxtop siege; do 31 | if [[ ($halBox_nginx_package == "letsencrypt") && ( -d ~/.letsencrypt ) ]]; then 32 | continue 33 | fi 34 | 35 | echo -e "\e[1;32mDave, I'm also installing '$halBox_nginx_package'.\e[0m" 36 | 37 | if [[ -f $halBox_Base/packages/$halBox_OS/$halBox_OS_Codename/nginx/$halBox_nginx_package.sh ]]; then 38 | source $halBox_Base/packages/$halBox_OS/$halBox_OS_Codename/nginx/$halBox_nginx_package.sh 39 | elif [[ -f $halBox_Base/packages/$halBox_OS/$halBox_OS_Codename/$halBox_nginx_package.sh ]]; then 40 | source $halBox_Base/packages/$halBox_OS/$halBox_OS_Codename/$halBox_nginx_package.sh 41 | else 42 | apt-get -qq install $halBox_nginx_package > /dev/null 43 | fi 44 | done 45 | 46 | chown -R www-data /var/www/ && chmod +x /usr/local/sbin/{ngxdissite,ngxensite,ngxgzip,ngxsite} 47 | 48 | if [[ -n $SUDO_USER ]]; then 49 | usermod -a -G www-data "$SUDO_USER" 50 | fi 51 | 52 | chgrp -R www-data /var/www/ && chmod -R ug+rwXs /var/www/ 53 | 54 | if [[ ! -d /etc/nginx/sites-enabled/ ]]; then 55 | mkdir -p /etc/nginx/sites-enabled/ && ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default 56 | fi 57 | 58 | if [[ -f /etc/iptables.rules ]]; then 59 | sed -i -r "s~(--dports 80,443) -j DROP~\1 -j ACCEPT~" /etc/iptables.rules && iptables-restore < /etc/iptables.rules 60 | fi 61 | else 62 | echo -e "\e[1;31mSomething went wrong installing '$halBox_package'.\e[0m" 63 | fi 64 | 65 | if [[ -f /etc/init.d/nginx ]]; then 66 | echo -e "\e[1;32mDave, I'm restarting the 'nginx' service.\e[0m" && service nginx restart > /dev/null 67 | fi 68 | -------------------------------------------------------------------------------- /overlay/nginx/etc/nginx/mime.types: -------------------------------------------------------------------------------- 1 | types_hash_max_size 1024; 2 | 3 | types { 4 | application/atom+xml atom; 5 | application/dart dart; 6 | application/gzip gz; 7 | application/java-archive jar war ear; 8 | application/javascript js jsonp; 9 | application/json json; 10 | application/owl+xml owl owx; 11 | application/pdf pdf; 12 | application/postscript ai eps ps; 13 | application/rdf+xml rdf; 14 | application/rss+xml rss; 15 | application/rtf rtf; 16 | application/vnd.ms-fontobject eot; 17 | application/x-7z-compressed 7z; 18 | application/x-bittorrent torrent; 19 | application/x-chrome-extension crx; 20 | application/x-font-otf otf; 21 | application/x-font-ttf ttc ttf; 22 | application/x-font-woff woff; 23 | application/x-opera-extension oex; 24 | application/x-rar-compressed rar; 25 | application/x-shockwave-flash swf; 26 | application/x-web-app-manifest+json webapp; 27 | application/x-x509-ca-cert crt der pem; 28 | application/x-xpinstall xpi; 29 | application/xhtml+xml xhtml; 30 | application/xml xml; 31 | application/xml-dtd dtd; 32 | application/zip zip; 33 | audio/midi kar mid midi; 34 | audio/mp4 aac f4a f4b m4a; 35 | audio/mpeg mp3; 36 | audio/ogg oga ogg; 37 | audio/vnd.wave wav; 38 | audio/x-flac flac; 39 | audio/x-realaudio ra; 40 | image/bmp bmp; 41 | image/gif gif; 42 | image/jpeg jpe jpeg jpg; 43 | image/png png; 44 | image/svg+xml svg svgz; 45 | image/tiff tif tiff; 46 | image/webp webp; 47 | image/x-icon cur ico; 48 | text/cache-manifest appcache manifest; 49 | text/css css less; 50 | text/csv csv; 51 | text/html htm html shtml; 52 | text/mathml mml; 53 | text/plain txt; 54 | text/vcard vcf; 55 | text/vtt vtt; 56 | text/x-component htc; 57 | text/x-markdown md; 58 | video/3gpp 3gp 3gpp; 59 | video/avi avi; 60 | video/mp4 f4p f4v m4v mp4; 61 | video/mpeg mpeg mpg; 62 | video/ogg ogv; 63 | video/quicktime mov; 64 | video/webm webm; 65 | video/x-flv flv; 66 | video/x-matroska mkv; 67 | video/x-ms-wmv wmv; 68 | } 69 | -------------------------------------------------------------------------------- /overlay/nginx/etc/nginx/conf.d/http.conf: -------------------------------------------------------------------------------- 1 | # //nginx.org/en/docs/http/ngx_http_core_module.html 2 | 3 | chunked_transfer_encoding on; # on 4 | client_body_buffer_size 8K; # 8K|16K 5 | client_body_timeout 4s; # 60s 6 | client_header_buffer_size 1K; # 1K 7 | client_header_timeout 4s; # 60s 8 | client_max_body_size 32M; # 1M 9 | connection_pool_size 256; # 256 10 | default_type application/octet-stream; # text/plain 11 | disable_symlinks off; # off 12 | etag off; # on 13 | if_modified_since before; # exact 14 | ignore_invalid_headers on; # on 15 | keepalive_disable msie6; # msie6 16 | keepalive_requests 32; # 100 17 | keepalive_timeout 300s 300s; # 75s 18 | large_client_header_buffers 1 4K; # 4 8K 19 | lingering_close on; # on 20 | lingering_time 30s; # 30s 21 | lingering_timeout 4s; # 5s 22 | log_not_found on; # on 23 | log_subrequest on; # off 24 | max_ranges 1; # -1 25 | merge_slashes on; # on 26 | msie_padding on; # on 27 | msie_refresh off; # off 28 | open_file_cache max=512 inactive=60s; # off 29 | open_file_cache_errors on; # off 30 | open_file_cache_min_uses 3; # 1 31 | open_file_cache_valid 60s; # 60s 32 | open_log_file_cache max=32 inactive=600s min_uses=3 valid=600s; # off 33 | output_buffers 1 512K; # 1 32K 34 | port_in_redirect on; # on 35 | postpone_output 1460; # 1460 36 | recursive_error_pages off; # off 37 | request_pool_size 4K; # 4K 38 | reset_timedout_connection on; # off 39 | satisfy all; # all 40 | send_timeout 4s; # 60s 41 | sendfile on; # off 42 | sendfile_max_chunk 512K; # 0 43 | server_name_in_redirect off; # off 44 | server_tokens off; # on 45 | tcp_nodelay on; # on 46 | tcp_nopush on; # off 47 | underscores_in_headers off; # off 48 | -------------------------------------------------------------------------------- /overlay/nginx/etc/nginx/sites-available/example.com: -------------------------------------------------------------------------------- 1 | server { 2 | listen 443 ssl http2; 3 | server_name cdn.example.com www.example.com; 4 | 5 | index index.html index.php; 6 | root /var/www/example.com/public; 7 | 8 | include /etc/nginx/conf.d/http_charset.conf; 9 | include /etc/nginx/conf.d/http_gzip.conf; 10 | include /etc/nginx/conf.d/http_gzip_static.conf; 11 | include /etc/nginx/conf.d/http_ssl.conf; 12 | 13 | ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; 14 | ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; 15 | ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; 16 | 17 | location / { 18 | try_files $uri $uri/ /index.php$is_args$args; # $uri $uri/ @php @proxy 19 | } 20 | 21 | location @php { 22 | rewrite ^/(.*)/?$ /index.php/$1 last; 23 | } 24 | 25 | location @proxy { 26 | proxy_pass http://localhost:3000; 27 | proxy_buffering off; 28 | proxy_cache off; 29 | proxy_http_version 1.1; 30 | proxy_redirect off; 31 | proxy_set_header Host $host; 32 | proxy_set_header Upgrade $http_upgrade; 33 | proxy_set_header Connection $connection_upgrade; 34 | proxy_set_header X-Real-IP $remote_addr; 35 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 36 | proxy_set_header X-Forwarded-Proto $scheme; 37 | } 38 | 39 | location ~* /(?:[.]|.*[.](?:bak|[a-z]?db|fla|in[ci]|log|phar|psd|sh|sql|sw[op])|(?:file|upload)s?/.*[.](?:php)) { 40 | deny all; 41 | } 42 | 43 | location ~* [.](?:php) { 44 | include /etc/nginx/conf.d/http_fastcgi.conf; 45 | } 46 | 47 | location ~* [.](?:atom|jsonp?|ow[lx]|rdf|rss|xml)$ { 48 | add_header Cache-Control "public"; 49 | expires 1d; 50 | } 51 | 52 | location ~* [.](?:(?:css|js|less)|(?:eot|otf|tt[cf]|woff)|(?:cur|flv|gif|htc|ico|jpe?g|mp[34]|og[agv]|png|svgz?|swf|tiff?|web[mp]))$ { 53 | add_header Cache-Control "public"; 54 | expires 1y; 55 | } 56 | 57 | location /favicon.ico { 58 | add_header Cache-Control "public"; 59 | expires 1w; 60 | log_not_found off; 61 | } 62 | 63 | error_page 403 /error/403.html; 64 | error_page 404 /error/404.html; 65 | error_page 405 /error/405.html; 66 | error_page 500 501 502 503 504 /error/5xx.html; 67 | 68 | location ^~ /error/ { 69 | internal; 70 | root /var/www/example.com; 71 | } 72 | 73 | location ^~ /.well-known/acme-challenge/ { 74 | root /var/www/example.com; 75 | } 76 | } 77 | 78 | server { 79 | listen 443 ssl http2; 80 | server_name example.com; 81 | 82 | include /etc/nginx/conf.d/http_ssl.conf; 83 | 84 | ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; 85 | ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; 86 | ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; 87 | 88 | return 301 https://www.example.com$request_uri; 89 | } 90 | 91 | server { 92 | listen 80; 93 | server_name example.com www.example.com; 94 | 95 | return 301 https://www.example.com$request_uri; 96 | } 97 | 98 | server { 99 | listen 80; 100 | server_name cdn.example.com; 101 | 102 | return 301 https://cdn.example.com$request_uri; 103 | } 104 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | halBox 2 | ====== 3 | 4 | Bash script with a bit of unicornian magic dust to set up and tweak your Ubuntu servers. 5 | 6 | ***Nota bene:*** halBox ships with the harmless [EICAR test virus file](http://en.wikipedia.org/wiki/EICAR_test_file) to assess ClamAV. 7 | 8 | As of version 0.40.0, halBox compatibility is reduced to Ubuntu 14.04 LTS only. 9 | 10 | Setup 11 | ===== 12 | 13 | As *root*, copy+paste the following on your command-line: 14 | 15 | ```shell 16 | export LC_ALL=en_US.UTF-8 && \ 17 | cd ~ && \ 18 | wget -q https://github.com/alixaxel/halBox/archive/master.tar.gz -O ~/halBox.tar.gz && \ 19 | tar -xzvf ~/halBox.tar.gz && \ 20 | chmod +x ~/halBox-master/halBox.sh && \ 21 | ~/halBox-master/halBox.sh 22 | ``` 23 | 24 | A default install should take less than 5 minutes to complete. 25 | 26 | Memory Usage 27 | ============ 28 | 29 | halBox is VPS-oriented, it has been crafted to consume as little memory as possible. 30 | 31 | Here's what a default install looks like after a fresh *reboot* (under Ubuntu 14.04 LTS): 32 | 33 | root@trusty:~# ps_mem 34 | Private + Shared = RAM Program 35 | 36 | 96.0 KiB + 35.0 KiB = 131.0 KiB lockfile-touch 37 | 104.0 KiB + 35.0 KiB = 139.0 KiB lockfile-create 38 | 188.0 KiB + 25.0 KiB = 213.0 KiB ureadahead 39 | 184.0 KiB + 31.5 KiB = 215.5 KiB atd 40 | 172.0 KiB + 65.5 KiB = 237.5 KiB acpid 41 | 192.0 KiB + 50.5 KiB = 242.5 KiB ondemand 42 | 180.0 KiB + 84.0 KiB = 264.0 KiB sleep (2) 43 | 284.0 KiB + 100.0 KiB = 384.0 KiB cron 44 | 288.0 KiB + 142.5 KiB = 430.5 KiB ping (2) 45 | 380.0 KiB + 60.5 KiB = 440.5 KiB upstart-socket-bridge 46 | 364.0 KiB + 97.0 KiB = 461.0 KiB upstart-udev-bridge 47 | 412.0 KiB + 60.0 KiB = 472.0 KiB upstart-file-bridge 48 | 568.0 KiB + 179.5 KiB = 747.5 KiB systemd-logind 49 | 728.0 KiB + 66.0 KiB = 794.0 KiB dbus-daemon 50 | 588.0 KiB + 230.5 KiB = 818.5 KiB ntpdate (3) 51 | 860.0 KiB + 92.5 KiB = 952.5 KiB systemd-udevd 52 | 1.0 MiB + 79.0 KiB = 1.1 MiB rsyslogd 53 | 952.0 KiB + 339.0 KiB = 1.3 MiB getty (6) 54 | 1.6 MiB + 146.5 KiB = 1.7 MiB init 55 | 2.6 MiB + 110.0 KiB = 2.7 MiB bash 56 | 2.0 MiB + 834.0 KiB = 2.8 MiB nginx (3) 57 | 2.1 MiB + 1.4 MiB = 3.5 MiB sshd (2) 58 | 9.3 MiB + 324.5 KiB = 9.6 MiB mysqld 59 | 12.1 MiB + 7.4 MiB = 19.5 MiB php5-fpm (3) 60 | --------------------------------- 61 | 48.9 MiB 62 | ================================= 63 | 64 | Of course, some features and configurations had to be sacrificed, most notably: 65 | 66 | * InnoDB engine is disabled if your server has less than 512MB of RAM 67 | * MyISAM [`key_buffer_size` directive](http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_key_buffer_size) is set to 8MB 68 | * *non*-PDO database drivers are disabled by default (this includes `mysql` and `mysqli`) 69 | 70 | As of version 0.31.0, halBox also ships with custom rsync LIFO directory utilities: 71 | 72 | * [`rsync_cp`](https://github.com/alixaxel/halBox/blob/master/overlay/rsync/usr/local/bin/rsync_cp) 73 | * [`rsync_mv`](https://github.com/alixaxel/halBox/blob/master/overlay/rsync/usr/local/bin/rsync_mv) 74 | * [`rsync_rm`](https://github.com/alixaxel/halBox/blob/master/overlay/rsync/usr/local/bin/rsync_rm) 75 | 76 | As of version 0.40.0, halBox comes with three helper scripts for nginx: 77 | 78 | * [`ngxensite`](https://github.com/alixaxel/halBox/blob/master/overlay/nginx/usr/local/sbin/ngxensite) (mimics Apache [`a2ensite`](http://manpages.ubuntu.com/manpages/precise/man8/a2ensite.8.html)) 79 | * [`ngxdissite`](https://github.com/alixaxel/halBox/blob/master/overlay/nginx/usr/local/sbin/ngxdissite) (mimics Apache [`a2dissite`](http://manpages.ubuntu.com/manpages/precise/man8/a2dissite.8.html)) 80 | * [`ngxgzip`](https://github.com/alixaxel/halBox/blob/master/overlay/nginx/usr/local/sbin/ngxgzip) (optimal asset pre-compressor for [`gzip_static`](http://nginx.org/en/docs/http/ngx_http_gzip_static_module.html)) 81 | 82 | As of version 0.50.0, halBox ships with [Let's Encrypt](https://letsencrypt.org/) and: 83 | 84 | * [`ngxsite`](https://github.com/alixaxel/halBox/blob/master/overlay/nginx/usr/local/sbin/ngxsite) (deploys a new nginx virtual host with SSL and *non-www to www* redirection) 85 | 86 | Screens *(Ubuntu)* 87 | ================== 88 | 89 | *These may not (and probably do not) reflect the current version of the script / packages.* 90 | 91 |  92 | 93 | Software 94 | ======== 95 | 96 | ``` 97 | ack-grep 98 | apache2-utils 99 | bc 100 | bcrypt 101 | beanstalkd 102 | build-essential 103 | caddy 104 | chkrootkit 105 | clamav 106 | cloc 107 | curl 108 | devd 109 | dexec 110 | dialog 111 | direnv 112 | docker 113 | dstat 114 | errcheck 115 | exim4 116 | git 117 | glances 118 | go 119 | godef 120 | godep 121 | godepgraph 122 | godoc 123 | goimports 124 | gometalinter 125 | gox 126 | goxc 127 | host 128 | htop 129 | httperf 130 | httpie 131 | hub 132 | iftop 133 | imagemagick 134 | innotop 135 | interfacer 136 | ioping 137 | iotop 138 | iptables 139 | jpegoptim 140 | jq 141 | jsonf 142 | julia 143 | lets-encrypt 144 | letsencrypt 145 | libav-tools 146 | maldet 147 | mariadb 148 | mc 149 | memcached 150 | mongodb 151 | mycli 152 | mysql 153 | mysqltuner 154 | nano 155 | ncdu 156 | nginx 157 | ngrok 158 | ngxdissite 159 | ngxensite 160 | ngxgzip 161 | ngxtop 162 | nodejs 163 | ntp 164 | oh-my-zsh 165 | optipng 166 | oracle 167 | pandoc 168 | penv 169 | pgcli 170 | pgloader 171 | pgtop 172 | pgtune 173 | php5 174 | php5-adminer 175 | php5-amqp 176 | php5-apcu 177 | php5-bitset 178 | php5-chdb 179 | php5-composer 180 | php5-curl 181 | php5-discount 182 | php5-doublemetaphone 183 | php5-eio 184 | php5-enchant 185 | php5-ev 186 | php5-fann 187 | php5-gd 188 | php5-gearman 189 | php5-gender 190 | php5-geoip 191 | php5-gmp 192 | php5-gnupg 193 | php5-http 194 | php5-igbinary 195 | php5-imagick 196 | php5-imap 197 | php5-inotify 198 | php5-interbase 199 | php5-intl 200 | php5-jsmin 201 | php5-json 202 | php5-judy 203 | php5-lasso 204 | php5-ldap 205 | php5-leveldb 206 | php5-libevent 207 | php5-librdf 208 | php5-lzf 209 | php5-mailparse 210 | php5-mapscript 211 | php5-mcrypt 212 | php5-memcache 213 | php5-memcached 214 | php5-mogilefs 215 | php5-mongo 216 | php5-msgpack 217 | php5-mssql 218 | php5-mysql 219 | php5-mysqlnd 220 | php5-oauth 221 | php5-odbc 222 | php5-opcache 223 | php5-pgsql 224 | php5-phalcon 225 | php5-phpunit 226 | php5-pinba 227 | php5-protocolbuffers 228 | php5-ps 229 | php5-pspell 230 | php5-quickhash 231 | php5-radius 232 | php5-rar 233 | php5-readline 234 | php5-recode 235 | php5-redis 236 | php5-scream 237 | php5-scrypt 238 | php5-solr 239 | php5-sphinx 240 | php5-spidermonkey 241 | php5-sqlite 242 | php5-ssdeep 243 | php5-ssh2 244 | php5-stats 245 | php5-stem 246 | php5-stomp 247 | php5-sundown 248 | php5-svm 249 | php5-svn 250 | php5-swoole 251 | php5-tidy 252 | php5-timezonedb 253 | php5-tokyo_tyrant 254 | php5-uuid 255 | php5-varnish 256 | php5-xcache 257 | php5-xdebug 258 | php5-xhprof 259 | php5-xmlrpc 260 | php5-xsl 261 | php5-yaf 262 | php5-yaml 263 | php5-yar 264 | php7 265 | php7-composer 266 | php7-curl 267 | php7-gd 268 | php7-imap 269 | php7-interbase 270 | php7-intl 271 | php7-json 272 | php7-ldap 273 | php7-mcrypt 274 | php7-memcached 275 | php7-mysql 276 | php7-odbc 277 | php7-opcache 278 | php7-pgsql 279 | php7-phpunit 280 | php7-pspell 281 | php7-readline 282 | php7-recode 283 | php7-redis 284 | php7-sqlite 285 | php7-tidy 286 | php7-timezonedb 287 | php7-xmlrpc 288 | postgresql 289 | ps_mem 290 | pydf 291 | r 292 | rake 293 | redis-server 294 | rkhunter 295 | rsync 296 | rsync_cp 297 | rsync_mv 298 | rsync_rm 299 | rtorrent 300 | ruby 301 | rust 302 | scout_realtime 303 | scrypt 304 | siege 305 | ssdeep 306 | strace 307 | supervisor 308 | tesseract-ocr 309 | tmux 310 | tuning-primer 311 | units 312 | unzip 313 | vim 314 | virt-what 315 | vmtouch 316 | wkhtmltopdf 317 | yui-compressor 318 | zip 319 | zsh 320 | ``` 321 | 322 | Credits 323 | ======= 324 | 325 | This Bash script is inspired by: 326 | 327 | * [fideloper/Vaprobash](https://github.com/fideloper/Vaprobash) 328 | * [kr41/bash-booster](https://bitbucket.org/kr41/bash-booster) 329 | * [Linode StackScripts](http://www.linode.com/stackscripts/) 330 | * [lowendbox/lowendscript](https://github.com/lowendbox/lowendscript) 331 | * [perusio/nginx_ensite](https://github.com/perusio/nginx_ensite) 332 | * [TigersWay/VPS](https://github.com/TigersWay/VPS) 333 | * [Xeoncross/lowendscript](https://github.com/Xeoncross/lowendscript) 334 | 335 | License 336 | ======= 337 | 338 | MIT 339 | -------------------------------------------------------------------------------- /halBox.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # The MIT License 4 | # http://creativecommons.org/licenses/MIT/ 5 | # 6 | # halBox 0.53.0 (github.com/alixaxel/halBox/) 7 | # Copyright (c) 2012 Alix Axel 8 | 9 | clear && echo -e "\e[1;31mhalBox 0.53.0\e[0m\n" 10 | 11 | if [[ $(whoami) != "root" ]]; then 12 | echo -e "\e[1;31mDave, is that you?\e[0m" && exit 1 13 | fi 14 | 15 | if [[ ! -f /etc/debian_version ]]; then 16 | echo -e "\e[1;31mI think you know what the problem is just as well as I do.\e[0m" && exit 1 17 | else 18 | halBox_Base=${0%/*} 19 | halBox_Arch=$(uname -m) 20 | halBox_Bits=$(file /usr/bin/env | awk '{ print int($3) }') 21 | halBox_CPU=$(grep -P "^(physical id|Processor)" /proc/cpuinfo | sort -u | wc -l) 22 | halBox_CPU_Cores=$(grep -P "^(processor)" /proc/cpuinfo | sort -u | wc -l) 23 | halBox_CPU_Cache=$(grep -P "^(cache size)" /proc/cpuinfo | sort -u | awk '{ print int($4 / 1024) }') # in MB 24 | halBox_RAM=$(grep -P "^(MemTotal)" /proc/meminfo | awk '{ print int($2 / 1024) }') # in MB 25 | halBox_OS=$(lsb_release -si | awk '{ print tolower($0) }') 26 | halBox_OS_Codename=$(lsb_release -sc | awk '{ print tolower($0) }') 27 | halBox_OS_Kernel=$(uname -r) 28 | 29 | case $halBox_Arch in 30 | arm*) 31 | halBox_Arch="arm" 32 | ;; 33 | i*86) 34 | halBox_Arch="386" 35 | ;; 36 | x86_64) 37 | halBox_Arch="amd64" 38 | ;; 39 | esac 40 | fi 41 | 42 | if [[ -f $halBox_Base/packages/$halBox_OS/$halBox_OS_Codename.sh ]]; then 43 | source $halBox_Base/packages/$halBox_OS/$halBox_OS_Codename.sh 44 | else 45 | echo -e "\e[1;31mI'm sorry, Dave. I'm afraid my circuits do not function properly on this system.\e[0m" && exit 1 46 | fi 47 | 48 | if [[ ! $(type -P dialog) ]]; then 49 | echo -e "\e[1;31mI'm sorry, Dave. I'm afraid we need 'dialog' to do that.\e[0m" && exit 1 50 | else 51 | sleep 3 52 | fi 53 | 54 | exec 3>&1 55 | 56 | halBox_packages=$(dialog \ 57 | --cancel-label "Nevermind HAL" \ 58 | --ok-label "Okay" \ 59 | --separate-output \ 60 | --title "halBox" \ 61 | --checklist "Dave, select the packages to install." 0 0 0 \ 62 | beanstalkd "in-memory workqueue service" off \ 63 | caddy "HTTP/2 web server with automatic HTTPS" off \ 64 | chkrootkit "rootkit detector" off \ 65 | clamav "anti-virus utility" off \ 66 | dexec "polyglot code execution within Docker" off \ 67 | direnv "environment switcher for the shell" off \ 68 | docker "lightweight software containers" on \ 69 | exim4 "mail transport agent" off \ 70 | fail2ban "log-based intrusion prevention tool" off \ 71 | git "distributed revision control system" on \ 72 | go "Go programming language" off \ 73 | imagemagick "image manipulation programs" off \ 74 | iptables "tools for packet filtering and NAT" on \ 75 | jq "command-line JSON processor" off \ 76 | julia "programming language for technical computing" off \ 77 | letsencrypt "official Let's Encrypt client" on \ 78 | libav-tools "fast audio and video transcoder" off \ 79 | maldet "linux malware scanner" off \ 80 | mariadb "MariaDB 10 (drop-in replacement for MySQL)" off \ 81 | mc "powerful file manager" off \ 82 | memcached "high-performance memory object caching system" off \ 83 | mongodb "object/document-oriented database" off \ 84 | mysql "MySQL database server and client" off \ 85 | nginx "small, powerful & scalable web/proxy server" on \ 86 | ngrok "introspected, secure tunnels to localhost" off \ 87 | nodejs "event-based server-side JavaScript engine" off \ 88 | ntp "network time protocol deamon" off \ 89 | pandoc "general markup converter" off \ 90 | php5 "server-side scripting language" off \ 91 | php7 "server-side scripting language" on \ 92 | postgresql "object-relational SQL database" off \ 93 | ps_mem "lists processes by memory usage" on \ 94 | r "language for statistical computing and graphics" off \ 95 | redis "persistent key-value database" off \ 96 | rkhunter "rootkit, backdoor, sniffer and exploit scanner" off \ 97 | rsync "file-copying tool & LIFO utilities" on \ 98 | rtorrent "ncurses BitTorrent client" off \ 99 | ruby "Ruby scripting language" off \ 100 | rust "Rust programming language" off \ 101 | scout_realtime "modern top for the browser" off \ 102 | sqlite "command line interface for SQLite 3" on \ 103 | supervisor "process control system" off \ 104 | tesseract-ocr "open source OCR engine" off \ 105 | vmtouch "file system cache diagnostics and control" off \ 106 | wkhtmltopdf "HTML to PDF converter" off \ 107 | yui-compressor "JavaScript/CSS minifier & obfuscator" off \ 108 | zsh "shell with lots of features" off \ 109 | 2>&1 1>&3) 110 | 111 | if [[ $halBox_packages == *"php5"* ]]; then 112 | halBox_PHP5_packages=$(dialog \ 113 | --no-cancel \ 114 | --ok-label "Okay" \ 115 | --separate-output \ 116 | --title "halBox" \ 117 | --checklist "Dave, select the PHP packages to install." 0 0 0 \ 118 | php5-amqp "AMQP PECL Module" off \ 119 | php5-apcu "APC User Cache Module" off \ 120 | php5-bitset "Bitset PECL Module" off \ 121 | php5-chdb "Constant Hash Database PECL Module" off \ 122 | php5-composer "Composer Module" on \ 123 | php5-curl "cURL Module" on \ 124 | php5-discount "Discount (Markdown) PECL Module" off \ 125 | php5-doublemetaphone "Double Metaphone PECL Module" off \ 126 | php5-eio "libeio PECL Module" off \ 127 | php5-enchant "Enchant Module" off \ 128 | php5-ev "livev PECL Module" off \ 129 | php5-fann "Fast Artificial Neural Network PECL Module" off \ 130 | php5-gd "GD Module" on \ 131 | php5-gearman "Gearman Module" off \ 132 | php5-gender "Gender PECL Module" off \ 133 | php5-geoip "MaxMind GeoIP Module" off \ 134 | php5-gmp "GNU Multiple Precision Module" on \ 135 | php5-gnupg "GNU Privacy Guard Module" off \ 136 | php5-http "HTTP PECL Module" off \ 137 | php5-igbinary "igbinary PECL Module" off \ 138 | php5-imagick "ImageMagick Module" on \ 139 | php5-imap "IMAP Module" off \ 140 | php5-inotify "inotify PECL Module" off \ 141 | php5-interbase "Firebird / InterBase Module" off \ 142 | php5-intl "Internationalization Module" on \ 143 | php5-jsmin "JSMin PECL Module" off \ 144 | php5-json "JSON Module" on \ 145 | php5-judy "Judy Arrays PECL Module" off \ 146 | php5-lasso "Lasso Module" off \ 147 | php5-ldap "LDAP Module" off \ 148 | php5-leveldb "LevelDB Module" off \ 149 | php5-libevent "libevent PECL Module" off \ 150 | php5-librdf "Redland RDF Module" off \ 151 | php5-lzf "lzf PECL Module" off \ 152 | php5-mailparse "Mailparse PECL Module" off \ 153 | php5-mapscript "MapServer Module" off \ 154 | php5-mcrypt "Mcrypt Module" on \ 155 | php5-memcache "Memcache Module" off \ 156 | php5-memcached "Memcached Module" on \ 157 | php5-mogilefs "MogileFS PECL Module" off \ 158 | php5-mongo "MongoDB Module" off \ 159 | php5-msgpack "MessagePack PECL Module" off \ 160 | php5-mssql "Sybase / MsSQL Module" off \ 161 | php5-mysql "MySQL Module" on \ 162 | php5-mysqlnd "MySQL Native Module" off \ 163 | php5-oauth "OAuth 1.0 PECL Module" off \ 164 | php5-odbc "ODBC Module" off \ 165 | php5-opcache "Zend OPcache PECL Module" on \ 166 | php5-pgsql "PostgreSQL Module" on \ 167 | php5-phalcon "phalcon Module" off \ 168 | php5-phpunit "PHPUnit Module" on \ 169 | php5-pinba "Pinba Module" off \ 170 | php5-protocolbuffers "Protocol Buffers PECL Module" off \ 171 | php5-ps "PostScript Module" off \ 172 | php5-pspell "GNU Aspell Module" off \ 173 | php5-quickhash "QuickHash PECL Module" off \ 174 | php5-radius "Radius PECL Module" off \ 175 | php5-rar "RAR PECL Module" off \ 176 | php5-readline "GNU Readline Module" on \ 177 | php5-recode "GNU Recode Module" off \ 178 | php5-redis "Redis Module" off \ 179 | php5-scream "Scream PECL Module" off \ 180 | php5-scrypt "Scrypt PECL Module" off \ 181 | php5-solr "Apache Solr PECL Module" off \ 182 | php5-sphinx "Sphinx PECL Module" off \ 183 | php5-spidermonkey "Spidermonkey PECL Module" off \ 184 | php5-sqlite "SQLite Module" on \ 185 | php5-ssdeep "ssdeep PECL Module" off \ 186 | php5-ssh2 "SSH2 PECL Module" off \ 187 | php5-stats "Statistics PECL Module" off \ 188 | php5-stem "Stem PECL Module" off \ 189 | php5-stomp "STOMP Module" off \ 190 | php5-sundown "Sundown (Markdown) PECL Module" off \ 191 | php5-svm "Support Vector Machine PECL Module" off \ 192 | php5-svn "SVN Module" off \ 193 | php5-swoole "Swoole PECL Module" off \ 194 | php5-tidy "Tidy Module" off \ 195 | php5-timezonedb "Olson Timezone Database PECL Module" on \ 196 | php5-tokyo_tyrant "Tokyo Tyrant PECL Module" off \ 197 | php5-uuid "uuid PECL Module" off \ 198 | php5-varnish "Varnish Cache PECL Module" off \ 199 | php5-xcache "XCache Opcode Cacher Module" off \ 200 | php5-xdebug "Xdebug Module" off \ 201 | php5-xhprof "XHProf Module" off \ 202 | php5-xmlrpc "XML-RPC Module" off \ 203 | php5-xsl "XSL Module" off \ 204 | php5-yaf "yaf PECL Module" off \ 205 | php5-yaml "YAML 1.1 PECL Module" off \ 206 | php5-yar "Yar PECL Module" off \ 207 | 2>&1 1>&3) 208 | fi 209 | 210 | if [[ $halBox_packages == *"php7"* ]]; then 211 | halBox_PHP7_packages=$(dialog \ 212 | --no-cancel \ 213 | --ok-label "Okay" \ 214 | --separate-output \ 215 | --title "halBox" \ 216 | --checklist "Dave, select the PHP packages to install." 0 0 0 \ 217 | php7-composer "Composer Module" on \ 218 | php7-curl "cURL Module" on \ 219 | php7-gd "GD Module" on \ 220 | php7-imap "IMAP Module" off \ 221 | php7-interbase "Firebird / InterBase Module" off \ 222 | php7-intl "Internationalization Module" on \ 223 | php7-json "JSON Module" on \ 224 | php7-ldap "LDAP Module" off \ 225 | php7-memcached "Memcached Module" on \ 226 | php7-mysql "MySQL Module" on \ 227 | php7-odbc "ODBC Module" off \ 228 | php7-opcache "Zend OPcache Module" on \ 229 | php7-pgsql "PostgreSQL Module" on \ 230 | php7-phpunit "PHPUnit Module" on \ 231 | php7-pspell "GNU Aspell Module" off \ 232 | php7-readline "GNU Readline Module" on \ 233 | php7-recode "GNU Recode Module" off \ 234 | php7-redis "Redis Module" off \ 235 | php7-sqlite "SQLite Module" on \ 236 | php7-tidy "Tidy Module" off \ 237 | php7-timezonedb "Olson Timezone Database PECL Module" on \ 238 | php7-xmlrpc "XML-RPC Module" off \ 239 | 2>&1 1>&3) 240 | fi 241 | 242 | if [[ ($halBox_packages == *"mariadb"*) || ($halBox_packages == *"mysql"*) ]]; then 243 | halBox_MySQL_password=$(dialog \ 244 | --insecure \ 245 | --no-cancel \ 246 | --ok-label "Okay" \ 247 | --title "halBox" \ 248 | --passwordbox "Dave, I also need a root password for MySQL." 0 80 \ 249 | 2>&1 1>&3) 250 | 251 | halBox_MySQL_networking=$(dialog \ 252 | --no-cancel \ 253 | --ok-label "Okay" \ 254 | --title "halBox" \ 255 | --radiolist "Dave, do you want to allow remote access to MySQL?" 0 80 0 \ 256 | 0 "No" on \ 257 | 1 "Yes" off \ 258 | 2>&1 1>&3) 259 | fi 260 | 261 | if [[ $halBox_packages == *"postgresql"* ]]; then 262 | halBox_PostgreSQL_password=$(dialog \ 263 | --insecure \ 264 | --no-cancel \ 265 | --ok-label "Okay" \ 266 | --title "halBox" \ 267 | --passwordbox "Dave, I also need a root password for PostgreSQL." 0 80 \ 268 | 2>&1 1>&3) 269 | 270 | halBox_PostgreSQL_networking=$(dialog \ 271 | --no-cancel \ 272 | --ok-label "Okay" \ 273 | --title "halBox" \ 274 | --radiolist "Dave, do you want to allow remote access to PostgreSQL?" 0 80 0 \ 275 | 0 "No" on \ 276 | 1 "Yes" off \ 277 | 2>&1 1>&3) 278 | fi 279 | 280 | if [[ $halBox_packages == *"letsencrypt"* ]]; then 281 | halBox_LetsEncrypt_email=$(dialog \ 282 | --no-cancel \ 283 | --ok-label "Okay" \ 284 | --title "halBox" \ 285 | --inputbox "Dave, I also need an email for Let's Encrypt." 0 80 \ 286 | 2>&1 1>&3) 287 | fi 288 | 289 | exec 3>&- 290 | 291 | clear && echo -e "\e[1;31mI'm completely operational, and all my circuits are functioning perfectly.\e[0m\n" 292 | 293 | for halBox_package in $halBox_packages; do 294 | echo -e "\e[1;32mDave, I'm installing '$halBox_package'.\e[0m" 295 | 296 | if [[ -f $halBox_Base/packages/$halBox_OS/$halBox_OS_Codename/$halBox_package.sh ]]; then 297 | source $halBox_Base/packages/$halBox_OS/$halBox_OS_Codename/$halBox_package.sh 298 | else 299 | apt-get -qq install $halBox_package > /dev/null 300 | 301 | if [[ $? != 0 ]]; then 302 | echo -e "\e[1;31mSomething went wrong installing '$halBox_package'.\e[0m" 303 | fi 304 | fi 305 | done 306 | 307 | echo -e "\e[1;32mDave, I'm cleaning up the leftovers.\e[0m" && apt-get -qq autoclean > /dev/null && apt-get -qq autoremove > /dev/null 308 | 309 | if [[ -f ~/halBox.tar.gz ]]; then 310 | rm ~/halBox.tar.gz 311 | fi 312 | 313 | echo -e "\e[1;31mAffirmative, Dave. I read you.\e[0m" && exit 0 314 | -------------------------------------------------------------------------------- /overlay/php/var/www/default/public/adminer/adminer.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Alternative style for Adminer. 3 | * Created by Miroslav Pokorný [http://fuch.cz]. 4 | * Icons by Yusuke Kamiyamane [http://p.yusukekamiyamane.com/] (some of them were modified). 5 | * Slightly inspired by themes created by Martin Hořínek and Klemens Häckel. 6 | */ 7 | 8 | /*** Fonts ***/ 9 | @import url(http://fonts.googleapis.com/css?family=Ubuntu:300&subset=latin,latin-ext); 10 | @import url(http://fonts.googleapis.com/css?family=Ubuntu+Mono&subset=latin,latin-ext); 11 | * { 12 | font-family: 'Ubuntu', sans-serif 13 | } 14 | textarea, pre, code, samp, kbd, var { 15 | font-family: 'Ubuntu Mono', Consolas, 'Courier New', monospace 16 | } 17 | /*** Icons ***/ 18 | /* Error message */ 19 | html>/**/body .error { 20 | background: #FFEEEE url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAlpJREFUeNqkU8tu2lAQHT8wtlEQcUKUIjVVgaiCVkhIlSq1isSKTdRNuu5P8AX5Alb9g+6zqZR8QNWmC3ZRa1UJIm0hAWpeNthg/OiMechl00UtHXvuvXPOnbn3mPF9H/7n4en1nmGAwy+BAUghTjB8iThY5v1EfMatzhB3Lg4Ib3FzfkPwdUSSKulCIZs6PFSkeFykCi1dL95dXx81rq7e2JZVxbwPf1WwIkuJxOmL4+Ocz/PSzHHgvtEIFhRFkfdzOTmZTu/ULi5OJ6MRrERYemFZKU4UK8VyOTcyTWk4HEKr1YLC+XkAimluPJ1Kz0qlHBuNVoizFsB+Tg7y+ezAMKQRqhuGAaZprkujmOZ0XQcDRfYymay7OKdFCw7Aq61kUtH6/TVpPB5Dp9MJSLfYiue6i555Hna3txXi4PDdSuChx7Kig3278zkYgwGYkwk0m02IRCLA4jy3Usb1qWmKxAlXAA4u2FQ6VuHjbhGcI3IsFgNh47Q5zHXCtzAH+GV0u0Vf02QpZCy1VAq+8Y27ntv2lDjrQ0S1T912u7eF/ck4lheGgpKqQrleD2I5BN2y+sQJC5zd9np1YFlLRldSUhQhCEKwYzRE9jzPas9mN8RZC3hoz4nrVi81TcUFS0KRJM5/yWQCUCwhbCTXxmPV9LwqcYjLkFUZJDzCwXN042OWreQEIftEEJQEx4mUNHTd6Xfb7qu2fdNAcg1d+IMMSNylAB3mDmIX7bWfBzjaA3iKV/dgabT7LsDXbwAfcVsM4TdCQ66zEmBDbfL/+IPJURMyKHK9PwIMAA7iHkoee771AAAAAElFTkSuQmCC") no-repeat 0.8em center; 21 | padding-left: 38px; 22 | } 23 | /* Ok message */ 24 | html>/**/body .message, html>/**/body #menu p.message { 25 | background: #EEFFEE url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAnZJREFUeNqkk01PE0EYx/+zu/TNanTbGCjWhrCmlp6MGl94kUQ9eOCC8chHMDG9mHjiE/QjePGOJsR4QQ8Q0UOJHqgVA6kiKQXa0th97+4OM1tq25MHJ/lvdmae3z/PzDMPoZTif4bEP+RVHBAJE5+QBAjm2d9dpsuncbtM66BYAqUVuGzmUtCFWsegb8yFpEAuPZpWUvGkHA1GQzw/zVSv/aztTm9Vfjy22laeLS0PZNCFzwXPLs5mZzISpLBjO1BttbsXGZfHIkn5Umy1uLbYMvx130TwtykSQSGQm746mbE0K6yqKkzTHFC1WoXe1MK3lVuZABnKcaZn4NL5K8PjiqmaYV3XYRjGgOr1OtZn3mJh5Akcox1OxZIKZ3oGDp2MR+Nyq9VCs9mEZVloqS0cHB6gXC7jdfol9vb28GhoFpvFTXiGJ3OmdwcOTQoQQpqmYePhCpQ3N6HbOii76Y17K36IKIqYeDfpV8q0zRBn+jOA67p4rjzFzs4Ovtz/ACp2YEmSfGXfTwFRFhtm4ZLjMz2DNv1d047MZ6UX/vT4+Bgbd/rgVQZf4LXoyCaWyZn+DD5Wj/Yboixi6vvcX9CHPzH4Yg/mMv/oDc70Gyw1d+vbAohBRgmubz7owAUGjw7CnucaVlXf5kzPwKMVV3Py9c/7Jep4BkkRZL8yONU5c1ee7RhqoVHydC/PGb8NeDMRwvogxa73hjAnjIm5QOaMEkhHZPG8FPKfSdMx7S29YZe0ba/s5lHwlvHLhc+eGvByxpjiSJBhTJBpdu4sK9lI56FhH4co4htdQ4UespUjphpjna6B0HdS6R8dzHtRY9IZ650IMACI9kBqNfbjbgAAAABJRU5ErkJggg==") no-repeat scroll 0.8em center; padding-left:38px; 26 | } 27 | /* Sql */ 28 | html>/**/body a[href$="sql="] { 29 | background: transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARpJREFUeNrE0z9LQlEYx/Fr/gXdJILegSQJEk13yrUxxDFwUhqagyAEF8E34BsIFKlozpqao8K9WVrCJSWu30d+F44SOjj4wId77nPOeTjn3HMjQRB4m8SOt2Fsv0CE8HleYoRdnGEPF8jhB4+4xw0ONLc7R4E7VJBX23JNtJBFSflD9YXjrT3fQhxpfKqqRQEf+MaLxuTVF3e3bo02yjjBrTMojD+9R52+sO3F8KxC13YmeELCHbT0vtBnE6ua1EfDGZRQO7qiQNEK1LiNRzynSKpjCJ+8fY1T5d/VZ+2Y5nQs8YVXPW01+zjGg3JvuFK+q1yoZ3tOaVnJpcOzqOtwzzF28rbaX0zWXbQMBvqc/r83cet/40yAAQCHjz1eQkhXqAAAAABJRU5ErkJggg==") no-repeat 2px bottom; 30 | padding-left: 22px; 31 | } 32 | /* Dump */ 33 | html>/**/body #dump { 34 | background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAjpJREFUeNqMU8+LElEc/8w4qeM4urvsCgqpEO7VYu/9YAmkNqiDRNdOQtC5k3QIL127BF78G+rQqegQlBRRhz24S0jWuumOrs74c2be9H2jkuJi+4XPvMe87/f73ufzPk/IZrOYxh1CFOeLOuEVn0izP6PRKFosFl/2ej0MBgNYlo1m06A5g98vQ1VVhEIhhMMh5HL3H3k8Hiw04GFZFjqdDjRNcxs0GjqGIwZFUWHZFkSPiIAiLxxFXHlQAXBocAQ2ASY4fwNKnxQ602LbxXzMU/hSKBRep9PpPcYY+v3+lIpFGvgRDAaJfxiVSuUN5X4+q8FOPp/fmxexcdJFbziG1+dFUFUQJhFv3r6XeZx7yG+g/F8R/5x00BuPIZNwJltD9WAffUNHq9VyeM5Sg2UR/3Fngo3uaRuZBxm6xhzX7grh60oRGbPAzCH6py38qlRgmia0Yw2H2uELWr7OaQszJ5KRduLx+NN5EU3bxPrWOhKXEohejCKgBhY2SG2mnkg8ebIbWxLx5+9jNNtNHOz/wLdP3zEaDLF7dxeRWATbW9t5QRDei7VaDbquwzAMZyZivV4nHKHV0WBYA1zYUJC4nMKYBJ0WP6M93xI+iuVyGdVqlSsvrTQTQVkLovi8iGQy2ZZl+YNt2+4tyGQONRaLBSRJcs3i9XpdCh6fjMCwC9EnQAnKuHrrmuuFUqkk0IkjVKuT27FBiFHHG47jbPKuNE5fAoimwD8QRZGPDp/TepN0ekfrR38FGAASfDL3E+dZ1QAAAABJRU5ErkJggg==") no-repeat 2px bottom; 35 | padding-left: 22px; 36 | } 37 | /* Modified adminer logo */ 38 | html>/**/body h1 { 39 | background: #eee url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpFMEMzMjFEREIzNENFMTExOTE4QkYwQjc5MjcxNEMzNyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxOUM1RjA3QTRENkIxMUUxODFCNkVBNEZGMDk2NUJEMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxOUM1RjA3OTRENkIxMUUxODFCNkVBNEZGMDk2NUJEMSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpFM0MzMjFEREIzNENFMTExOTE4QkYwQjc5MjcxNEMzNyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFMEMzMjFEREIzNENFMTExOTE4QkYwQjc5MjcxNEMzNyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Ph6vyIoAAAJsSURBVHjalFNNaxNRFD3z0Uxm2iRtGhVdBOxOcFkESQ2GNoXgwk1X/Q9uxB+QRf6CP6HQbQs1UFqisREhG4MYJVlEiyR2IM4kZjL5mJnnfZOMpAsFH5y5dz7OefeeuU8AECIs5XK5p6Io3nFdV2aMiRyHh4fPMF+CIPDA+GV/f/95sVg8onTK78OEWDabfaHrOmu1WqxerzPbHrHBYMjY5iZF248c06nHDMP4wTkEVaQLh+R5nuQ4Dnq9HpLJJBxniuXHaRin5+DPB6Uy7HIF8sMHoOqEVCrFNxY4mdcm8ZIXSsVKJgPz7NzPi6cXflTTKUzfvffzSqXiLQoIXNVvkvlt0o4lrO5s+23ndrf8aJdnQnt7ey8DnhiYRKV/yufzpWq1ioODA4zHY+gnJ1jb3cFkYtO9TRVsod83h9TS54AnB0ksFrtfKBQylmXBtm202x1sbGzgV+k1VGqL/hBGFxVEJUmTZfkeUd5cE+ArMLHb7VLu4sPHL7DpmaIqiK+tIrG+jhuJxCIFIv61BAbXc6h7F55AYLP8PwTIOsGbgYvMsbikYBLj8bjSaDRuUX6Xt9But/H921eYug7LMGH9NDGg+Oro+G2z2TzudDqXfBL/eBCJRK6ZyD3QidSzLciKiOUVFdFoBOkn249qtdoZUS4WTWTD4dC7bqKDK8NAb2JB0UJYZVGIMoOmKXwDNzgX4jxhRPyLH2zBhxlM0xQCnjw/THESCNH/5fOAUCjktyApKrRRH6Ii+C1omgpJFrnAEucQulzpNiEZDoczNMY36ThL8zENxtw/HzRIjKJHcOm7q9FoVKJXl78FGAAi7FBT6eTVegAAAABJRU5ErkJggg==") no-repeat 14px center; 40 | box-shadow: 0px 0px 3px rgba(0,0,0,0.30) !important; 41 | font-size: 1em; 42 | padding: 6px 6px 5px 35px; 43 | } 44 | /* Logout */ 45 | html>/**/body input[name="logout"], #logout { 46 | background: transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAkVJREFUeNqMU01rE1EUPZkMaGI+JEMkXyaNiKINzSJLBSEEaRbRVf6Ai1Jw68K9O3dCN3ZR/AUxC0UCwW4k4KKoGKVioGATg4kNY2aSTDqZifdOmmmKFr1weG/e3HPeue++59i4BTgceAogg3/H6+kUm+YUDdMEaIRICyBkvPeeZVwul5XlIEVBEGyMXz7C8vJ1HHz/ttT49C4/UPqvKG2T0BANcybNZEmSTpCdTqeFPcqp1Wr8X1q5eVtSep3w14/v8yoJCSwwF/kbmedsN5lMotlsol6vo6eMpBurd1OmgawwMQDGnCzLMkajkU3mkTeYUp2hUAjRaBStVgu6rmNC6yKTOex6x2MLPA8EAhBF0RIwyQaL8Oj1emEYBoF4X4SLIOwwiS3yj2KxiG63i06nYzngTRYFZmWZMwcfxgE2sLNRKNi9GgwGKNB3uVxGIpGwHbC4oihQVdWas7AY1/aZkymVSrZALpdDtVpFPB7/w8H+Txnp+1uYvHkyK+EqeiBkgsEgUqmUpVypVBCLxRCJRGaHuCDAF+fFwzvHDvSjQ+REPjCPx2PdBxbgNe7O5KgEjnjkAiT/udkZsMBYPxZgsIv5nMkM6pjVWo65EDvgzYXnbUBWcKLvi2SO/hDw+/3QNM3CXECldfHHIc7vKdh9vJo97QEJ7rP4PD1wp69cuxT2+XxSu922nPQHJEAJ2lsdDzjx1Dd4iNG6PJS2t+trZ1zu/Ep6KUxuJZWqcuA/Yz0O/KIdlSEuazrWqIIsNWT3twADAMZTN2W0KIqPAAAAAElFTkSuQmCC") no-repeat 2px bottom; 47 | border: none; 48 | cursor: pointer; 49 | height: 18px; 50 | line-height: 18px; 51 | overflow: hidden; 52 | padding: 0; 53 | position: absolute; 54 | right: 8px; 55 | text-indent: 18px; 56 | top: 5px; 57 | width: 18px; 58 | } 59 | /* Alter table */ 60 | html>/**/body a[href*="&create="] { 61 | background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAl1JREFUeNqck19IU1Ecx7/3drfrXVpJf6BEx53bjK02UaLIJdQsiOrJJvVaL/UePgS52LvPKdRe68GCQOohg4gYmGTZnEzndNPWXpqbNPfH3T+dc3BrDp888OP8zv2d7+/3+f24h/P5/bcAnMT+VlrQNO3URCAwth/17ZGRB4KmqpxODte+Abqu14wkZqbTvf68E//qPQKq5VVV5ekFuq52cmwfsPz3vcT3ynrte9WnGqoVVEXhVJaAw4e4DotQIp0VWOUBiVRMa+BInPpazSdi/RCoVlAUZReB9quIR45Wdp5ZWsI5u535oUgEF51O5n+emyMEHaDaOgIwAq8IfF9ZYf0ebGrCdDTKem6WJHwJh5lPF9VQLU+zqORy/QzOmM1wyTK2SiX02GzoJRT5YhHnHQ5cIBQiocn5fDi7uGhnLTQSzCeTjEASRczGYqyqidIsLCC3sYHc6io83d3oGR29ziuVSq2FKsHp9nY4CEWxXIarsxNuqxUFQmM/+gfq5ibuDg/j2fY2ptzuqV1DrBJE19cZgWg04mc8zgiMlXn8CI3hZr8HjwMzGBwaQjCRWKYEfCOBra0NXYSiTKo4ySzMLWlk4+PwEvHkuxA8fTIsZC5UK5RLpQONBLFUihHQFQ5PIJ98gSuX+vDq9Ue0Wu+h+UQv+5GoVshmMqLBYECwK7/zh4u1t1XIxPB7+SUTvyWV3Zf9OGbuZzGqoVpOkuWHvMnUsddjueNMeZ4Hpz1Pn7jW3oePhyLpw4n6uFYorNGmJWItxIQ9cqTu3+Ams1sYf/NJn22IKcT+/hNgALjZYbRNSSf5AAAAAElFTkSuQmCC") no-repeat 2px bottom; 62 | padding-left: 22px; 63 | } 64 | /* Create table */ 65 | html>/**/body a[href$="&create="] { 66 | background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAi9JREFUeNqck8trE1EUxr+ZTjKZ+kB31UwtSUiVRFykRsGFKGkEF7qqe5e6FARdtVBc+B+0brTg1pU7dSGIWm2sMebRkDQNTVMSoUWC2qZmHp57kkzTuFB64HK/MzPfub9z517pxtTUNQDHsL+oKZZlHX82PT27H/fE5OQtxTJNyabkyiJg27YzqDAPW8y9eef9QuwIhFc2TVMWH4iIBySex/27OkY65rOd510tPMKrmIYhmVxAwquSDb/SpM62eOVxjVasWZDovdCWo8lsH4bwKoZh7CGwqtu4GzrKeaJQQHR0lPX7bBYXwmHWb1IpIjgB4e0hABPEVCC5ssL9HvB48DGf554PahreptOsRQiPQ2DSx7sEwOmREc6/lEqIBINtGip0PhRiPZ/JQHiYgAv0EWRWV5lAU1V8LhZ51UFBk8vtIWgXaLWcFroEp4aHOc+UyzgTCLBO0n483ZlDspGGbul4EnoE4ZV7N1EQiMivrSFHFKrbja/URmp5GR6ieVddwNnoGAq/ivwbuwRyP0HQ6+V8iYqEfT7cSdzDfP0TBqlIw2wALQvxF1dRCX+bUHaazQGrbw+K6+u8ByKy1MaHSgLeeLvohrEB76XOAuUlXfm+uam6XC48Pvmzc8LVv+7WuWoUqZfJ9gm8LEN+TQdKorniriuNWq3uj0Qe/s/l2b5evTl0UR+q56t17bk+J2+5KuLAazQO0VD+WeG2+wH9vzEMSIuY+X2fnvz4I8AAYtpfN5Cu7WwAAAAASUVORK5CYII=") no-repeat 2px bottom; 67 | padding-left: 22px; 68 | } 69 | /* Create new database */ 70 | html>/**/body #content a[href*="&database="] { 71 | background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAjpJREFUeNqUkr+LE1EQx7/7g93sJptERPFSbCGSJkUKK20CinB4d8UVQWytAqIiWEoKi4CVlYJwWNwfoMVZCIJWFhcuTQiCORFDJN5tNtns5TY/Nm93fW8TNcHTOwdmZ1hm5s18Zrh8Po+ZrFFdwsnkO9Ut5og//4zH46WNjY3njuNgOByCEA/t9iH1fUQiCjRNQzweRyIRR6Fw47YgCFgowIQQAtu20el0wgKG0cdo7CMa1UA8Al7goUaVhVb4fzbKAQE1AedPFVM9eQEaPk0MZsleqPMyP0KlVCq9zmazq77vYzAYzEYhlEEEsViMzp9AvV5/Q2N3jipwsVgsrs5DNMwDOCMXkiwhpkWRoBCvrawv3y3cYhsoHwtx37ThuC4UCm7iJylEQFHl/4H4e3af845lcPQWfm3Aw2PjCb7sNWDl2jdPm/FnxCcQMplMGOt5HqrVaoraNBuh1WrhW+MreoYBx+rB6fawxb1F7moOH5rbg70znafmqR5ERpwJtX9CpEn20MGL4SZ2x7tQeQW2Z0MccCqRgx3aVkVsNptIJpNwXTdYhEiwb1mwXQe1UQ3n1y6ED5nExKX1yzp19fcv30Esl8tIp9OQZVn82zHpQQqNV58hiiKk5Sg+bdaak4hnUEYVlqTQ49BSqZTKAtixSJIUjiDICtTRAe7LdxCNKbi3/QBdrwv/kHB42L9Oc/thAapnLctydV1/xGAGQTDbATgq7AOe5zG54q/4ZZzj2sFHlsNO54cAAwDujTg3Gh40tQAAAABJRU5ErkJggg==") no-repeat 2px bottom; 72 | padding-left: 22px; 73 | } 74 | /* Privileges */ 75 | html>/**/body #content a[href*="&privileges="] { 76 | background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAlNJREFUeNp8U11Ik1EYfr795kynaBBLglbtqiyRSMiMunCCF0FgBP14U5d1JdHFJAKD8rKrEAIjqMlGF/0hTHKLSpi15ZoMjdZgbi23ydzn3PZ93/b1nuFkK7cXHs457/s8z/ee853DybKMckxbVNAowSkUOELLXoJhqxQlfCwW4RcKkAfGpG2NCtXBSUUMtuw1DR3qGeqVtXqjkOUh55LBlW/TPalY0EactwR5R4O8KHe27Tt86fjgyOWvTmvg15LbUShKMHTs7zh5+sI173ubcu13KEzUhbJGUWmQE3Cus/+G2ee2BoMRhx369WFla2Y4lg7Y/QuvgkdPDZgZp1JT1cGmgANNzXvao8n5sEoHM6XM5dqfjdB6d4PKyDi1DfIynxdyOXP/eFdBkpBKxZHhk9BpJOzWyhAEMcc4lZrqLYj47PnkWCySOJ9OYy0WRTwSBJ8IoyDl4fniW2Scmh3QIc7MvrEbE6ur+WMn+kxaXWN7g6SHCCnhdLqXAz6/leMwU7MD5lEo4rF37oNl8tGYq7GlFSq1Bi+fT7m+e/0WVmOcegYsRMIsQc0WSnVpUG/lxH/JVVsQpf9rticT72gYLSfpNqJmB+xWV4BjuSs3b5+l+QOWY+KfsToG9+zAcgTIZkso/a6Jh+OvaX4nswk8dQGTrjoGLF7MAUsrQJpHjq1v3R29yPMY+UHGofgOJ8ZeYxnsMRE0hKar3bBGPfdlGqf6DuI85fSEXeyjlRqu8jlzHMc60hGauww4Y2rD9UAcz3wxzFOObSlN2CDN9nH/FWAAi5Yew8BvpusAAAAASUVORK5CYII=") no-repeat 2px bottom; 77 | padding-left: 22px; 78 | } 79 | /* Process list */ 80 | html>/**/body #content a[href*="&processlist="] { 81 | background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAj5JREFUeNp0k8FrE0EUxr/ZrNvEWlqITdKqTS/ai6AWTyIWFHsTETx4KF49KR68+Q8IHqwgQr2pBasVBEUFL6KtejBLQRDEoiKShBpzWGya3ZnsjG92Z9co6cCPN/Ptm5n33r5huD8MM3acP3LOqbfWWC6Xw93lewFpVf2BnfmFzYaFUMFQ7nQ6E5zzCW1pPa51triR+B4mFo0dM/NRG0IlDnuFECPtdls5jgPS66S9gUy/XyROEw+NZVr85wAuxG7f91U2m2Wkr0ZqmEbLelkbXCYOewTn+4IgAEUC0q34gPSC68Qj4hpRjtIHijaC1GF7KGUpDENQDUB6VEB1zAF76uvpa0MyTsVF1BEYlIyjkfKvxp75yYZDxGMznzLzKRu/KUknTosLDs/z4hQCk1ohvfF7V/6XiBPEExs+OQrSMwyNnw00m83YxY9/rxphYLso3R+SmbzRbS0ozJFjBQ3ekRk6rI/2ZSgqWke6/r4zunjcbNT2KvFcW8Yu9LnTZ09OSqVQ9Wqoe3WUBooobBumFpBYWnjhkuNBdkP07MQMDlgbX9xP5dzk4Gg9oN7JAuushdCRWLm97EJilr2XH1BTR8l/LmlvGg+IlzqFeQg5+/HmOzdfzAODwFBhCKu3XFfrqKp5VKKCXiamjf0WXZ4WtUT2uDWDGatS/rxfaRutS6w72qUedkyfsgXr9Di+qhb60fJW1vJ0/gJeqbek90fdGlMj7hBXCMc0kstMKAPE1v/qo18BN3Q2e85/BBgADNADzS2n40UAAAAASUVORK5CYII=") no-repeat 2px bottom; 82 | padding-left: 22px; 83 | } 84 | /* Variables */ 85 | html>/**/body #content a[href*="&variables="] { 86 | background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAi5JREFUeNqMU0FoE0EUfTvZlArmFpR4L0jT3HvoKR6EQG6eC5bQeuwhIAhpYREUDz2IYKG0SEvoxbOtBIVC793oRTCQQyOlFGNNUrK72Z3x/8nOpkUQP/z9uzv/vX3vz6z1aG0NHJZllank8O/4LKVsySiCUgrfjo9h8w0H1Xu76+ubAS2OOKVERGtm3XVd7DYaT/hblN/53f2FBQhmi9OSDBqNdAaeh+HVFQaDAfr9vq7vHWeT+h4QdsZIsiMCx2ExtaBrOpWaiA5DhETc7Xbxpl5HcXb27et6vUYrzzWBnBAIBgtNg79IisWitpPJZPDRdX8loJAI4qQ5jgnarRb2trbQabfhk/QP+/vwyI4Vk3OvwYmI2ONMLDQODvB4ZQWfDg+RzWbh+z7SQsCmZBLuNTibLzcsUBMD+P56nSJLU7aN1JhATCzwkMYpjIJSuYwXjoOHpRJ+XlzAox0Z9HqYTqf1bLjX4OxwokDPgLNQKCA/NwfeVkmDe1qr6cqZIoWEsRIFZt8pEwVfm01UV1e1nebJCZ5Vq/hCB4nXtAXqNbibFlgBn+dcLvH/bnsbrzY2sLezo58tvasTC+L32ZkhSHaBIwgCbYcrK9E13mbuZQxjRevoCN1Oh4+tHQ8CndNTjEjeD3pfWV7G0uIiliqVRAH3MoaxHLco79ydn3fUtaCBqUhKRcdY0c+l6CdTXhgqn565lzGMtQ1B7/z88nY+/xL/EXI4vIwJwj8CDAAVoIrz1xox8QAAAABJRU5ErkJggg==") no-repeat 2px bottom; 87 | padding-left: 22px; 88 | } 89 | /* Status */ 90 | html>/**/body #content a[href*="&status="] { 91 | background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAftJREFUeNqkU7+LE0EU/mZ2d3bD7pqckhQqB4YDuQRsTj2t1ULESkgnWKloYRMQizQ2dhZXxkq8fyCFjdrYCAqCCIIgLCgWIkQ0m+Q2+9P3ZnMrNsJ5Ax/zivd973vvzYiiKLCfY/Z6vTbdmwR/j9yQ8NrMsuxsv9+/12q1ulmWIk0zQoIk4ThFnucoTRoQwtQwTYXxePxhOHz4wKSEA7PZrBsEgU5mkKjGv2JCdzQauaZlWflgMECz2dS+eCZl1aKKGUmSIIpiSMkOTO1Sz4BsCiZ3Op2qCltfnFpD9vK9Jk4mIWGOet3X9hnz+aQSkFyJSbtgUnH0EFWMiDil5BiW5RBKMrmmnOiPgBACcRxr4i6c1RbCcIbFIoNt15ZEtXRgUTzVApKSJdvmaumZ4/pm8CEdeJ02jmzdROPSaS1k2w6UsrWIdkCVjdqFk0g3T2Dx6Su8+9eqRXvrx9C4dRE/7j6Bf/083HNXcLi2go2VNh5fvVMJSPHiLSbvPush/nz6Su/dXV/DwduXEQ6fwXUbyLbfIC1yBAIIiMhtVw4cx9F98wC5HaU8qG8LTB89h/M9gUG9S2n89Qx3dsoZmPSILKVUtffyWDTAMYyPvxARUUqxrCgqgSgKaa11T/i+f8MwjNX/+Ujk9gtL1pYfydwjP+UPJfb7nX8LMAC+uy+OK4sAWgAAAABJRU5ErkJggg==") no-repeat 2px bottom; 92 | padding-left: 22px; 93 | } 94 | /* Alter database */ 95 | html>/**/body #content a[href*="&database="][href*="&db="] { 96 | background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAltJREFUeNqMks1rE1EUxc98kMlkMkkqbaXRhaEStCAhaDeuKii2JBWFtiqCYFcBof+BKW6yU3FpyUJxU1Eo2IKtXdRFV7EiFMG0pVAsxnRmYpPWSTLT+fDNpGpCwfbC4T1m7rvvnt991PDwMPZjkKgLR4sfRNPOhv3zRdO0rmw2+0xVVdRqNRiGCVn+RfYWvF4eoigiEAggGAwglbp5n2EYtBRwwjAMVCoVlEolt4Ak7aKuWRAEEYZpgGZo+AS+pRX6v41SgE0Wm7IaQkNHL0DSGwft/cOmq+ZotvApk8nMxGKxpGVZqFar+1YMwsALv99P/Aexuro6S3KXTisKhhYXWwqcT6fTyWaIkrIDta7Dw3ngFwUECcQriRv9Y6nR6f58PncoxC2lAlXXwRNwe1aIQAR4H4ceWY5EFGWqCDw9BOI/7xbV8C/JRewwzJnI+Ph1GXjIHjqFvxMwsacuYX2Dw6P5+eTV7u4nt2179sgQ620S9rhF3LmWQDwen5Dq9ecjwDLrJDtB1oMQf5ZRqang6RWYpfe43JfA1NsPuHBOqC6vnFzOt7eD3dzcRCgUgq7rditEA1vb29C1zzCNOQwODGDyzRy6e8fw/dWLfEcHjYVyGWwul0M0GgXHcQd4UHoRgvYOg8kEXk7OoLPnHtpO9JILHjNOl2tra+4YefI4xHA47GNZ1n0sHo/HtVBan8Stu6+RnRjB8bOj6Dx1EQxLQ1EUvlAodJKzu4QzjhGFeZ6/ZNt2u2mScdm22wCx8WCoj/76ZYP5uFFkvlEUZRM5/2XSwQLJKfwWYAAtt0zt3hIutwAAAABJRU5ErkJggg==") no-repeat 2px bottom; 97 | padding-left: 22px; 98 | } 99 | /* Database schema */ 100 | html>/**/body #content a[href*="&schema="] { 101 | background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAcZJREFUeNqkU7tOAkEUvfuABIgsyksTAkgBtISS0kIbYk/sTKgt7PgF/QEK/QMaSDREjQmFNhu0oLEglISHbniEAAE8l8AG2O2Y5OTOnT1z7rk7M8JisaB9hkh7DjmXyx2KoniGuRvozufz19ls9lev13VSJBIhSZJMeVI8Hr/MZDLXwI3T6VQqlUq/2+3W8FEXGA6HNJ1ODbzRaFSTG43GMUTOmcQR+ZOiKNlNm+PxmFqtlm2Xx9/gTIp5PB4lEAiclkqlt2Kx+Gmz2R5kWVYnk0kSnHy/31exwcDTNO1bgB0P7KZB9AEtCBbRayeRSHABdpKvVquEnk15MhY76O9x07LX66XBYKDnbrebms2mgQcBks2OxmKxEGzrOaxTNBpdblgPOCL+0QYBq9VKvV5vay0YDBIu3BE2XbAe0EH+jPhLDoeD/+RWdZzCGlm73U4+n49SqdRVuVx+QdUFR84BEkyvJ/cmL82lUemEJ+Fw+EBV1bs1J5lM3iLcS2YC/D64P1j+wVxdIeb3+12hUChcKBTecYwf7Xb7a9MBz1mQS1u5m1VcAq5cAN8LF6BBXAXquwLC6oFJJhA3wLwp33Jh3+f8L8AAZ3ntkRsbeCkAAAAASUVORK5CYII=") no-repeat 2px bottom; 102 | padding-left: 22px; 103 | } 104 | /* Refresh */ 105 | html>/**/body #content a[href*="&refresh="] { 106 | background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAt9JREFUeNqkU0tPE1EUPtOZQh9QSVsKtAgB5A3RWDRaU+PCR4RUDSZGSTeuiDvjD3DRhJ1xYeI/MJi4wMRHosTEuJCNEqJBQQtFaAuhb0amnee9nlsLNW5cOMk3c+fc8333nO/McJRS+J9LYLfjD1ZBMJtBEAQw8byX47hxDAcQPZW874g5PGyGELLJ83wY34Nvb3omhb8EQwJPI4cO2tytjRanwybYWFAs6v2JtByMrktXCaVzhq5f2COY9qmUhqy1MHXltOdIm9PSyulgK5UMUBSCZXK2dpeldeyk+4yO5PCY14/PaguUEC/PkchYoGk4tVmCkqrLK1tSMpEuFth+h8/ecKzf1ZVNy3D9vM+/k1dBU9VqBbqqjnf5rO6tuAjZ/K785kPiy3qycBeFRzRZHonGcq+mX0bnPS1WWI/mQNd00BWlKqAqyim3w+zcyRfhayybRPX7aNi0JIpsL4w4cSs86BfzJWhwWcBiFVi82gKe0s1znE2SNUhuFwo4iWlD0wAdZ94E2ajvPZyb/9NtnNT8vgBTkxQdJIOU18QwwDB0qLVY2XgnmRDrGUn+kcPt9c1NdfT568X1aguyHN0uyEXJJIDjgLUBPZlQSzLkUinIZzKwg8Aqj9bV1ZzDnKF4erdRUxTzvgC+vF+LZ3KiUAstvW0+PO0Olj1R2cMu6CjGrnn72lswh9tIZFWM71YFVHVmbflHhtitkODtlqHRwKCnrTGCU/iIeIfr20MXAwNJcz1lORvRuIScbNkLZpAj/Jj1HeLttinX5dHhkk7BbubAUVPWF0WVJCWNxqwCt5J9+mLBKMmzaPSW+OjGbwE0B0yePjD1XgqZfMMRc0+3m+vscBKni33KoimXjdHV2JIWjX4mycUn5NuzGEktQ5lbEWDTcCHcnGegmes8GwRn9yDw5k6MSaDLC5BZ+kRXZpdpfu0nxtKIDHL1PQFWq60C4R9/sFEWBSgil/wSYABg+JOXZhLaRAAAAABJRU5ErkJggg==") no-repeat 2px bottom; 107 | padding-left: 22px; 108 | } 109 | /* Show structure */ 110 | html>/**/body .tabs a[href*="&table="] { 111 | background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAoJJREFUeNqkU01oE1EQnk02iTFQE7QihUKRkKTF1iU9+FdQCoWYgAcPegkIeiiIWiHgwUvpQXs1Ggo99OYlFwUhWAhYhZJWUmhMxJbYYk1LFDcmJraSv911vjQbevPgg9kZ5vu+eW9n3hM0TaP/WSI+gUCADAYDmUwmEgSBUNRoNJ5jaKjNSyuKsqRjjUaDVFWlWCy2X0BfDJ5nd5r9KxZI0Wh0BuRgMHibcznGrrD/wD6hawwHxBdcLte12dnZGYfDcYOFhkJBpnL5F3Y0IAcMHHB1nYAj+Xw+xHeZ8FSWf1BPTw+trqY2JElyAkilUhsej8dZKhWpu/s4jY+P3+P0s/n5+f0TVCoVqlarL0Oh0KTZbCZZlmlgoN+pqgrBEO/u/iZg4IALTecX+BQX6/X69Xw+v8e7bYqiSMvLy+t+f2AGhhg5YOCAC43+7+T1eh+srCS1hYU32tJSQkun09rg4NA0TwLTIMTIAQMHXGigbU2hVqsZq9UaNZsKKYrKoxRZKDYwKizEyAEDB1xoOk3kzo6xP4PExMT9WyMjl/q2t7+npqYevkBucvLx1d7eE9Li4tutcPjJXEsoCO+z2WxcP0GcC3zmDt8ZHj7bVyyWyO32SLHYOwl4ufyTdna+ELCuriN2nlSEC2x1mshdRZGbkchcSJaLfCOtFI+//prLbRIMMXLAwAEXmk4T+ZLALo+Ojj1PJtc1t7s/bLfbHyUSGQ2GGDlg4IALTesd6Y8JY7JarX6bzTZtsVhOwq+tfdMymZx2MAcOuPrmrSYKaDHRUbZjbIcA8sM6xQ9sADFP4xNf54/t21tnk9kKrG3qBdCLw20T//GCFbY9tj+sVf8KMAACOoVxz9PPRwAAAABJRU5ErkJggg==") no-repeat 2px bottom; 112 | padding-left: 22px; 113 | } 114 | /* Edit row */ 115 | html>/**/body table a[href*="&edit="][href*="&where"] { 116 | background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2lpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wUmlnaHRzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvcmlnaHRzLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcFJpZ2h0czpNYXJrZWQ9IkZhbHNlIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjcwNEVCNDY0MDM4NzExRTFBREUyQ0JDMzAwQUI1NjI2IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjcwNEVCNDYzMDM4NzExRTFBREUyQ0JDMzAwQUI1NjI2IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzMgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ1dWlkOkFDMUYyRTgzMzI0QURGMTFBQUI4QzUzOTBEODVCNUIzIiBzdFJlZjpkb2N1bWVudElEPSJ1dWlkOkM5RDM0OTY2NEEzQ0REMTFCMDhBQkJCQ0ZGMTcyMTU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+MT7FiQAAAiZJREFUeNqMk1FIU1EYx/9nO3e+NranKIw2ErM9SQQXxCKMRdFDCWEaNIuIetseQiIKG/jQQ4H0kkQxdLRaYiijtdWwljjKjQlNRQPHEhWUjca9eb3bPd2tFTdrrgMf53x8/98533e+cwhqDFsDQccpILHYXvbv+f1NBcD5DfB8BcZpLfDAvp9+YrE81c+azc6jLlf3RE/PLgWgtBaoGVZZltv4dLpbcjph6+w8Fhgc3CD/AQIMhzOr5osOV7orlUrBaDTC29gY2L25eZPurwfOtAIHW6rUosKyjOtXr7ns4bEW7G1+Bp7n3Tv1eq+V42bojfMAIdvDpzv67MWiDIvFguFHTS8FgfrnCJmZ4zhUvUQtLEkiVlYWEJ98MW7dg35F0SV/yWgtWBByyGaXEH379L16oFtPyRutlG4H53KrEIQsXo0ORQ0c7qg9C2+V02rw2loakvQdwz7PhMGAXkYR0krVlpaN/gteXp6HohQw9MQzqcK3GSO/Yd8YgyiKf2bAGBrEPC6fdfTZM5nPqq/g8YA3pqZ9S42V4ZEww0iI/VUxFSUYCkW0nbsSOT415YbJZMbDB76PtARTvA5GgWBUqdosmhdJs413tBOdbofR1CXev+uI19Ux94ckCb77xGr9NdD1PE4eOnKhdfR5/3Qk5I99WUIgkkBcLcykxhWNFbf4pd2V0htkl06QgdkMYskFTOdFtlERF0qXXZm1a7kSL9sPAQYA2Q4Ie25SbgYAAAAASUVORK5CYII=") no-repeat 5px bottom; 117 | display: block; 118 | float: left; 119 | height: 16px; 120 | overflow: hidden; 121 | padding-left: 24px; 122 | } 123 | /* Select data */ 124 | html>/**/body #menu p a[href*="&select="], html>/**/body .tabs a[href*="&select="] { 125 | background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAdVJREFUeNqck8tO21AQhn8bB8ehRe0SUEBOlIsSVFGqqlK3oey6K+9A96wTKU/RFU/AG7CrKhAg7gmKiJKIplFWqItWIQEfuzOT2LmsSo408j+2/5lvjo+1rULhM4AFTLfahuu6i3vF4rdp3F/y+W3DVUrzKNk8BTzPC4IKS3h8Hc0Hz49zr8BeXSml8wu8PsU1uW7EhjpHOmd7wX1fs4e9hnIcTUkBDfs1DzGjS5N1pPOGRR3bLjR6ztoNNJm9ebDXcBxnjMD99YCdzGvJT25v8T6ZFH1QLuNjNiv6++UlESyDvSMEEIKcCZzX6zLvXDiMo0pFZn5hWfhxfS2aF3sCAkUvDwmA1ZUVyS9qNawnEn0aKvQhkxF9WCqBPUIgBSYISnd3QmCZJs6qVekaYZqbmzGCfoGnp2AEnyAdjUpeajTwJh4XfU778S6d7tNQISlA3rFN9AkqzaYQmLOzuKIxuGuYaE4H++F/RvbqVEVXE+cgsbSEFFH0Hh+RtW2sxmLo9npYoy/yNpUajkBeo9ftzkwSVFstIeBVpjH8rhc0xigBe43f9/dmKBTCburv4ISb//VvsYe9mmXbX/VIZHman8ntdH7y0BbFSwrjmX6H4s8/AQYAQChL+KIinhAAAAAASUVORK5CYII=") no-repeat left bottom 126 | } 127 | html>/**/body #menu p a[href*="&select="] { 128 | clear: left; 129 | display: block; 130 | float: left; 131 | height: 18px; 132 | margin-right: 5px; 133 | overflow: hidden; 134 | padding-left: 16px; 135 | text-decoration: none; 136 | width: 0; 137 | } 138 | html>/**/body .tabs a[href*="&select="] { 139 | background-position: 2px bottom; 140 | padding-left: 22px; 141 | } 142 | /* Edit Sql */ 143 | html>/**/body #content a[href*="&sql="] { 144 | background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkY1Mjg3MUE5NEQwOTExRTFBMTlFQjAzMEMzRTgwNzJGIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkY1Mjg3MUFBNEQwOTExRTFBMTlFQjAzMEMzRTgwNzJGIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RjUyODcxQTc0RDA5MTFFMUExOUVCMDMwQzNFODA3MkYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RjUyODcxQTg0RDA5MTFFMUExOUVCMDMwQzNFODA3MkYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz67SGPfAAABvElEQVR42sTTSyhEURgH8O94jRqTJg1lo6YsptGIpEzKa2FhRGhY2chCWZDSbHATmkgkC81CInklpCxGmlGy8QqTopnFJEXyiGsadDv+p87UbKwsfPXr3PP67nncyzjn9JdIoD/G/ydgiFKUXfAIJmiCLOgEC7zBNmyCAlabwZAx9f6uTybqFRk2oAXy5LNoG4ZRyIAq2W7bXWBkNBq9DRbLClcUvsXYvtgCEpEeArAqV5YPl8v9/AmlX47Jw4WVmUym7MXTU2e1xzPxzPmwSDAOTqiEJZkgObZH7zxpot7iIGvkg3rP/Y1Ws9m8fhyNzqHDm4ROnzzMPnEmsAcpkBhLUlJAmeXF5Kiuc9mUAfdrmi4xFInoL2K30CYnrcOgnJMi0ecXVTgqKKe1zWWbnXH7dvx0FwxrN5qmUTtjhSJBB77GIpTfoJMJrqD0IED2+wca6+5xGacn3SeqykcCQYqiL0lVVTHHIwaH4VCWYjXZUAxbtXb2ytVrrnSyUH0VNctDDsdZE3tOlcvVxR8eIhPOakrY0+0jDV0E+RHqX2JX8AGq9GukQS4cwAvUQLq88lT5sgT273/jjwADAGLJkFFBwODaAAAAAElFTkSuQmCC") no-repeat 2px bottom; 145 | margin-left: 10px; 146 | padding-left: 22px; 147 | } 148 | /* Inline plus */ 149 | html>/**/body #content input[src*="file=plus.gif"] { 150 | background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAelJREFUeNqkU81qFEEQ/tr50UncrI4iwq6oRJCIIV6zxFxE9iCIbxHwXXwA32CPXgRFEZFgPGgiIcfNn0hgYU1mnV070zPTbXXP7Mwke4hgNzVT3f3VV9VV1Uwphf8ZDJ2r9GUXSVuhdZvEP8PmkOQtFF5CqaFttpRauXN99vmDmwtNz7ngVtGnI+QxF9/3Nme3ezt6+cJGavbbCzfmm+JP5ApEBXgwGJh/vV6vcrj3G/ea2wc77ZzAePAtWG54HBaoMAzxefm10VufnqBWqxVnnue5ZGeuaiPJQoyiCJzzAiSEOKFXzxhjGNsVBBpUJdF6v9836/0f+5BSZga2Dd/3JwniOMZoNMK3x+/R6/UwHA4NgeM4+PronTHUMvemhTAKJwnSNAVPOLrdrsm8BmvjseFYQDVKnKRCEGfKkThC4AR4uPU0uyhhNpY+GKP5j8samY0ZcsaodPGpCAIrgJoifWpccJReL+vUl3WUNCciENQBOIcqqiQ4j5JYNxfNMoLIZPcwllQGD2UXkse59VamN072suSSSiZ1S8PCLt3nFq5Jnt61G+40m2aWua+dvwo/13MhnDj+MviZHkQddMQaM5AZdhtL7BmuYJHWl854TAF+YQ2r6hV+q12Wp6eGMs//OhLd8X8FGACYiuElnjs9iAAAAABJRU5ErkJggg==") no-repeat left center; 151 | height: 16px; 152 | overflow: hidden; 153 | padding-left: 16px; 154 | width: 0; 155 | } 156 | /* Inline up */ 157 | html>/**/body #content input[src*="file=up.gif"] { 158 | background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAi1JREFUeNqkUz2IE0EYfZOZ3WySi9FAPLU4fwjEw8IUhyjXxUYrK8FOG8FWQQst7OxEUE7wOq200qv0GguR4+BEMIpwGDxNBE8vcMZcsv87fjPJrkl1iB885s238958M/Mtk1Lif0KI6iINLAfGzhOpEXZto9kkvISUDwHZE4OcvFA9svfS7LH9ZSttWOPrJeIi1Wg7vrO08rVS//idUWpOIArVt9qJmaly51ff6oxIO53BrFAojDpaM0f3lesfvtUGBlIbFFNMWo7jjO399HZFj+eufxnLm2bGIl1R8ZSugOB5LmzbTvD41oFEoPjoN9t2EOuEDAO1hjmOB9d1teDF/arm3W5XC6Iowr3LOZy8+AZccJRKRSogYMMKyCAKmO/7CMMQC3em0Ww28Wyxjna7TZV5eLfaBeccrx/N0pUK9Pu+1ihtbIAgCGG7ARqNBpberuPm/AYMw6B3Frh2t4n3n3qaCzMLyUzEOoHhEbb6EXoex9kb6+D0kkZmx0BAUPzq3AZCvwUzUwDjVP3wCEI7kYEdmjDSeQ0VvttLDISRpXxuvD2i2CD0tQFSalH6b/tQ1yQGZjYxTiL0hwaBp9vT86UrrInEgThOX/mseb50aEzr9Xsu6VRLg8Ndpf0PTwaOU9m5ZypnWBMixQ0oZPK7NeK5gu/Y7trKq9bWz9YT/H6wrMooghUPgp86AzZ5nNy2+ZnkJuSPZYTPF4iuKYOMqlIf599C3X73jwADAG6CADM79TwjAAAAAElFTkSuQmCC") no-repeat left center; 159 | height: 16px; 160 | overflow: hidden; 161 | padding-left: 16px; 162 | width: 0; 163 | } 164 | /* Inline down */ 165 | html>/**/body #content input[src*="file=down.gif"] { 166 | background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAjVJREFUeNqkU01oE1EQ/l72vWTTZps22B+ltCiBRItYsYhSBIkXxUMv9qzgQaH04kEFe/WsIh486s1jDyJePIhIoRepogjRYipoNRBjmuz/Pue9dJf0VKQDHzP7Zr5vZ97sMikl9mKcT78kx/rB2GUKKoShXTgNwitI+QSQbd49k1emp/Zfnz05WTQzwtxZLxE3qbzt+M7b1W+ltY8/GB094ohClaucnpkoNv90zGYPtdnsPuXz+V5Fc+bYgeLah++VroDUAoUUk6bjOElVq9XC84dHdXxx8T0sy0py6XTWJF5B38F2B/A8F7ZtJ0We5+2Ie3NCUPfbPC7DQHnmOB5c102KFKFer2tfq9UQRd2LMLiB4eECNRCoO0AKEQlEAfN9H2EYYvneYSxeMvG73tAC6u0SBh7cnsKbp7MUc3Q6vuYoLtcCZEEQwnYDVKtVTI5I3F0Yp1YF7Znj/s0SThwZ1DFP90EygZiXghqB2tnqRGh7Bubv/NSFx8sDXQIhJp+5+g7CtMBEVnMUNxnBDtMQGQu5oXHML9UTcoyz1z7pXJoEDJFLRqAOaJ7QZ0j1aQGFgX2HMHdrMyGfW/iiz+K8guYQlyPQ62p4vnS5mcvEW8iPlXHhxtck7jWv03aJ19BbgfuZllgeDRynNDg20S/MHE8ZAgpZa0QjflbwHdtdX329sfVr4xn+Pl5RuyyAFQ7COD8HNnqK1Hb5mWQDcnMF4YtlCteVAF0pLP1V/p+pPbb+CTAAmwfytdL1/44AAAAASUVORK5CYII=") no-repeat left center; 167 | height: 16px; 168 | overflow: hidden; 169 | padding-left: 16px; 170 | width: 0; 171 | } 172 | /* Inline cross */ 173 | html>/**/body #content input[src*="file=cross.gif"] { 174 | background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAe5JREFUeNqkk89KG1EUxr+ZubnUjJaipgtNtTZKxE1AVIi4yM5tF30Hoe/iA3TnQkTBRbZFKApCAl1142CJqLR0ZUNJJpPJZP70nJvcEK0SpAPfzD3n5vedM2dujCRJ8D+XODIMGMA4aYfibdLkCKZO+kxlP5FcwRla7MytrHxcLhazMp2WT5HcbeB5gVOp5H44Dqd2RdTb217a2Mi6vi/h+6O6lu9WV7M3jsPd7ppsQJqMTVO6rgtWdn8fev1YrpskkhlmzZBuLJ8qN5tNLJfLqgw/OX4sxyaaE2G/L8/z0Gq1cLy4iA+1mjKcOzhQ+RrFpmniy9oaUqkUMpkMNDcwCIIAYRhiwraxNz2NwskJLMtSgJQSZwSr6Xa7aDca/xowHFB7Xr0OO47vwazx4W9PJpozu2xK6hCY3N1hLIqQPz29BwshULq8RJp+x5JUTHODIRpkkKbv/GYI/ra+jq+FgjJgbV5dKYMX1KHmBh1ImgFv3pZKCr4geJZiVjWfV+2e53K9LqiQ5kSnfzwjmuIY+cxT8J3g+aF35nWVYJ1rx3HQ6R1pWNd0ewu8bkdRfkYI2zYMi/8M4oF0juGq7//8FUWHh0DF4L2XwMIW8H4KKFL8asRR/vObwHOg3ACu2YA6x0S/wHMunmHzrwADAPb07huzEp/RAAAAAElFTkSuQmCC") no-repeat left center; 175 | height: 16px; 176 | overflow: hidden; 177 | padding-left: 16px; 178 | width: 0; 179 | } 180 | /* Delete */ 181 | html>/**/body input[name="delete"], html>/**/body input[name="drop"] { 182 | background: transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjE0RDRCQjlFNENFRDExRTFCRkZGOUEzNzI5RTFCODEwIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjE0RDRCQjlGNENFRDExRTFCRkZGOUEzNzI5RTFCODEwIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MTRENEJCOUM0Q0VEMTFFMUJGRkY5QTM3MjlFMUI4MTAiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MTRENEJCOUQ0Q0VEMTFFMUJGRkY5QTM3MjlFMUI4MTAiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5zX5oGAAAB3klEQVR42qRSvU7CUBS+LQXaBgIpgSiJEpIuxMlVwgMwuOAb8Ah9AgZnJmfeABYegMHoGxiW6qAJJg3UEJAWaIvfKW1TjamDJ/l6b+893/n57uEOhwP7jwn0GQwGjOM4H7Aq0AGugPPA7xV4BEbAjJISut3uMUDMrgVB0CqViqrAstmsSI673e7SNM2WYRg3juP04Tf+VkFIBqGnqmoDlUie5zHLssI7GfHkYrFY0nW9t91uWRiEDxyqqVRKq9frDWSTiEhOcdAZ3dVqtQbP81rQ6rEClNkpl8uqbdsSSkwUDYkkVKLO53PS6S4M0JQkSdlsNpGj67qU0QftCUEAJsuyQpx4gDMsIjm12222XC4ZqvFfJZPJMGjjE8mGwyHb7/diwIla8DPggkFpf0+En2RfNP4oWzg/fgAo/obyLxFAnkwmf2lA/jZx4hU8rNfrJjLKwTAlGpKZxImeET8j9P0MsoVBYkmA4UUtnTjxADOaMPQ/xd6iPn8DtLEWi8UUa584UQuYLiaK4rhQKNCzafl8XgWUdDot0j20sVerlQnoKL+Pasf0SvFRFnBQAl6g+m0ul2tBjwucnwb37wj8BJ3uMZUG/k+AOeCEATzgk7qBwwcwTdDQDXyJw74EGAC1PioqQ6UN2AAAAABJRU5ErkJggg==") no-repeat left center; 183 | border: 0; 184 | cursor: pointer; 185 | font-size: .9em; 186 | padding: 1px 5px 1px 18px; 187 | } 188 | html>/**/body input[name="delete"]:hover, html>/**/body input[name="drop"]:hover { 189 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAjFJREFUeNqkU0tPE1EUPvPoOHdaSSkUsYkY2xLTmpCQmJBAumBNZIFLoz+CX8Av6MpfoHHLhgXsTTWE7ohtDRhEkrGpQy0M7e3ceXnO2Db1BQtv8s3cx/m+87pXCsMQ/meo9HktSaDgnyABZBAbOF1GzA3sviDeoatthOnjgvAcnau/CT6JMbaZXVjIZ+bnU2xiQqcI+eXlonl0VDo5PHwqOC+j3c4vEQzJLJncWlpbK4SqyhzPA+fiYnhmzBYKRjqbnaru7m51f+5HIhJ5eCVJmVu6/mZ5fX2Juy4LguCv+UqYqhqG/GBvb184zrMXYWhGEWA+G3PFYv67bTPHca4tWiwWYzO5XP60VqM6vYwEPICV2+l0ymq3R4au60Kv240ghAAPU4pyVlWYnpxMEWdc4F4gyzoZlSoVME0TOp0OKIoC8XgcEokEaJoWCezkctDv9XTijIpI2h56FLYNjUYj8oah/kGmwajdaOuNd8EFOLNbrcXQsozG6uq1NUiQvRB94oxHUGk1myt3VNUwUP2mccZ5mzg0lwcC25/Pzz+BLHMDW2VQ4/8BbDFvOs4xcUYC2HWz6/vl95ZVxwPOUIQN8h2HQHL16qreC4IycUYXiS7IfVw8xtv4QJY3C5qWf6hpqaSi6GTU8f3+RyHadSGOT5BcxWac4n7EHQhQLaYQ0xmA2SJAaQbgET6uu4OL9rUF8KEG8Bbd4hS+ISzkekMBeSxN9YYa0kPsInrIDX4IMADJaAE/Me2jPAAAAABJRU5ErkJggg=="); 190 | color: red; 191 | } 192 | /* New item */ 193 | html>/**/body #content p a[href*="&edit="] { 194 | background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAetJREFUeNqUU01LG1EUPW/yQsigUmOISZSkYxdVwW2lm4KkFrpwV6F/QGj3Lrpy4a9oN/0FBcFNQYWIuFHoIsRSWxzFkjZCsKaZNElN5r3eOzMOtEg1F87MvTPvnHfu+xDPVlYghFgAkEH/UZVaaxCy71ZXX/fLpslfSOW6nAtNjycfgEAQSqkQ19X7hTsgrpCuL2AozRIC8/cENo6091aKQL83bKBgsYiPrWOAxxPXkG6v5zlwA4FNW2NCdqC//4Lm2QiP40Q8UxDKB9euHgJxhez5AoED+DNX2lieToS97h0eYnZyMqx3SiVykANxDfnz4QkGd3Pf2MFisgs0NKxhidNaLVwPK5PBcbUa1plkEjzec3A53NQXD+w5l6y9+fz01jtQTL/3HbQc5xSmU2RFyjH1aOZG8qedsufAE2icn+cHOqk5+lCkHHtr27dy4Al0u0IatbgY+mg9V0sarwoHoC4xEWnDku2w53/BoQIHRrI0zUmeFdfrcbQTJsoOkE0kMDYygnFasEaziVwqhfzoKO6m0/hRr185MOTvTocFI1fbyOegEAO+VCrhyeMo2/ZfNY8nbkReUN8UsWg0irf3m0GHpIDsf9eAxxM3JmJkyzDNl4Rcv5dJtVpfRZCbhEFupQ8+XyLnjwADAJgWSEmnMNKYAAAAAElFTkSuQmCC") no-repeat scroll 2px bottom; padding-left:22px; 195 | } 196 | /* Create view */ 197 | html>/**/body #content a[href*="&view="] { 198 | background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAkVJREFUeNqkU89rE1EQns1udhOCrk2KlxIhaaGHFPfQBFJYxFbc+gtvkQq5+uPoQfAPEHJQemnFIAFFzCFYycGLGEgVElgMRhG7OTRiKiaVKCkYSTTbbF5nYuJBDxYy8LFv3sw384b5lmOMwShmgxFt5AIcWv8wGOUg4jhCQ/gR7kHeDuIjIoN4iWgOecMCHBY4L0nSJU3TpqLR6GHDMFz5fF6koKqqZiAQaCWTya+ZTOZDp9NJIO8p9aURHIhroVDoRi6XU9Pp9LRlWWNer1dstdpAQJJIdxSjHMolTp/L8/wp7Lper9c77XabEbLZLCNLJO4zVZ1nmnaO4avYME65xCGugFWWwuGwG58vmqbZnysWi2FnC1ZX431/cnIGqtUSDOOUSxxstEQFHhYKhbFmszntQKMEn88H2awOc3Mn+wSHQwK73fenwC805HwiLm+z2b5UKpWerutWMBgcl2X5AM4LhvEe/H4FZNmN3Q1YWDgG8e4juLm5vLvyPP7ZePD2Dm2Fx1EtPGzUarXtVCr1vVwuNxRF4Z1Ou1gqvRIbjS1QlMAPj8ezdbt6Vzhz+qwrV9W/Iedq77qrSzvkEYcQHlyNG180gd8j6MuDDYF12bnIpvhxEDgzcjHiX3uyZgDPdVGGBW6gRkp0Imjv3D9yW5GfzUdOHP37+kV6/Q33X60uSqhL6R4wmCV35oIyu/H4XfG3DKEo7EvwDK5AF6W+y17vWKjqnz0AOxfEkUDY919TxxV2WXH71iYgsUhkmJBgT4ABAOtC+bduhTyuAAAAAElFTkSuQmCC") no-repeat scroll 2px bottom; padding-left:22px; 199 | } 200 | /*** Messages ***/ 201 | .error { 202 | border: red 1px solid 203 | } 204 | .message { 205 | border: green 1px solid 206 | } 207 | .error, .message { 208 | margin: 1em 0 0 0 209 | } 210 | /*** Content ***/ 211 | #breadcrumb { 212 | background: #fbfbfb; 213 | border-radius: 2px !important; 214 | box-shadow: 0px 0px 3px rgba(0,0,0,0.30) !important; 215 | margin-left: 0em; 216 | } 217 | h2 { 218 | display: none 219 | } 220 | #content { 221 | margin: 2em 0 0 21em 222 | } 223 | .tabs { 224 | margin: 12px auto 10px auto 225 | } 226 | #form + p { 227 | margin: 20px 0 228 | } 229 | /*** Tables ***/ 230 | html>/**/body table tbody input[name*="check"] { 231 | display: block; 232 | float: left; 233 | } 234 | table { 235 | border-radius: 2px !important; 236 | box-shadow: 0px 0px 3px rgba(0,0,0,0.30) !important; 237 | } 238 | thead td, thead th { 239 | background: #eee 240 | } 241 | table tbody td:first-child { 242 | white-space: normal 243 | } 244 | td, th { 245 | border-color: #bbb; 246 | border-width: 0 1px 1px 0; 247 | } 248 | #tables a { 249 | height: 18px; 250 | line-height: 18px; 251 | } 252 | /*** Links ***/ 253 | a:hover { 254 | color: #3b82ca 255 | } 256 | a, a:visited { 257 | color: #385a75 258 | } 259 | /*** Sidebar ***/ 260 | #h1 { 261 | color: #222; 262 | font-style: normal; 263 | } 264 | #menu { 265 | background-color: #fafafa; 266 | box-shadow: 0px 0px 3px rgba(0,0,0,0.30) !important; 267 | margin: 0; 268 | padding-bottom: 0; 269 | top: 0; 270 | } 271 | /*** Forms ***/ 272 | fieldset { 273 | border-radius: 1px !important 274 | } 275 | /*** Others ***/ 276 | #lang { 277 | font-size: 0.8em; 278 | left: auto; 279 | right: 6px; 280 | } 281 | .sqlarea { 282 | width: 99% 283 | } 284 | .jush-sql { 285 | padding: 1px 2px 286 | } 287 | p { 288 | margin: 0.8em 0 0 0 289 | } 290 | --------------------------------------------------------------------------------