This is an automated email from the ASF dual-hosted git repository.
bcall pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/trafficserver-ci.git
The following commit(s) were added to refs/heads/main by this push:
new e4814fd scripts for ci
e4814fd is described below
commit e4814fd74457b56c2ca8c36e3d185100b7d9a3ce
Author: Bryan Call <[email protected]>
AuthorDate: Thu Feb 25 15:53:16 2021 -0800
scripts for ci
---
bin/RTD.sh | 8 +++
bin/alpine38.sh | 3 +
bin/ats_conf.pl | 103 +++++++++++++++++++++++++++++++
bin/backtrace.sh | 13 ++++
bin/btrfs-snap | 118 ++++++++++++++++++++++++++++++++++++
bin/build_master.sh | 13 ++++
bin/centos6.sh | 3 +
bin/centos7.sh | 3 +
bin/centos8.sh | 3 +
bin/clean | 158 ++++++++++++++++++++++++++++++++++++++++++++++++
bin/clean-autest.sh | 17 ++++++
bin/clean-clang.sh | 27 +++++++++
bin/clean-github.sh | 6 ++
bin/cleanup.sh | 6 ++
bin/coad-6_1_x.pl | 41 +++++++++++++
bin/compare-yum.sh | 21 +++++++
bin/cov-submit.sh | 13 ++++
bin/dbash | 3 +
bin/debian7.sh | 3 +
bin/debian8.sh | 3 +
bin/debian9.sh | 3 +
bin/docker | 5 ++
bin/docker-all.sh | 25 ++++++++
bin/docker-clean.sh | 4 ++
bin/fedora30.sh | 3 +
bin/fedora31.sh | 3 +
bin/fedora32.sh | 3 +
bin/fedora33.sh | 3 +
bin/freebsd.sh | 32 ++++++++++
bin/gd-sync.sh | 11 ++++
bin/gh-mirror.sh | 62 +++++++++++++++++++
bin/invoker_wrap.sh | 2 +
bin/iptables.sh | 11 ++++
bin/make-machines.sh | 28 +++++++++
bin/master-sync.sh | 9 +++
bin/on-all.sh | 7 +++
bin/on-docker.sh | 60 ++++++++++++++++++
bin/on-gd.sh | 60 ++++++++++++++++++
bin/pull-all.sh | 16 +++++
bin/purge.sh | 6 ++
bin/push-all.sh | 16 +++++
bin/quic.sh | 3 +
bin/rate_limit.sh | 3 +
bin/rax.sh | 36 +++++++++++
bin/rsync.sh | 7 +++
bin/scp-all.sh | 9 +++
bin/site_sync.sh | 5 ++
bin/src_watcher.sh | 7 +++
bin/start-ats.sh | 18 ++++++
bin/start-registry.sh | 9 +++
bin/ubuntu1404.sh | 3 +
bin/ubuntu1604.sh | 3 +
bin/ubuntu1710.sh | 3 +
bin/ubuntu1804.sh | 3 +
bin/ubuntu1810.sh | 3 +
bin/ubuntu1904.sh | 3 +
bin/ubuntu1910.sh | 3 +
bin/ubuntu2004.sh | 3 +
bin/ubuntu2010.sh | 3 +
bin/update-rpm-links.sh | 13 ++++
bin/update.sh | 16 +++++
bin/version-all.sh | 25 ++++++++
62 files changed, 1112 insertions(+)
diff --git a/bin/RTD.sh b/bin/RTD.sh
new file mode 100755
index 0000000..59ff33f
--- /dev/null
+++ b/bin/RTD.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+cd /home/jenkins/RTD
+
+wget -O MathJax.js
'http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'
+
+wget -O extensions/MathMenu.js
'http://cdn.mathjax.org/mathjax/latest/extensions/MathMenu.js?config=TeX-AMS-MML_HTMLorMML'
+wget -O extensions/MathZoom.js
'http://cdn.mathjax.org/mathjax/latest/extensions/MathZoom.js?config=TeX-AMS-MML_HTMLorMML'
diff --git a/bin/alpine38.sh b/bin/alpine38.sh
new file mode 100755
index 0000000..ba7f466
--- /dev/null
+++ b/bin/alpine38.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t
docker.io/alpine:3.8 /bin/sh
diff --git a/bin/ats_conf.pl b/bin/ats_conf.pl
new file mode 100755
index 0000000..38c7309
--- /dev/null
+++ b/bin/ats_conf.pl
@@ -0,0 +1,103 @@
+#!/usr/bin/perl
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+use lib '/opt/ats/share/perl5';
+use Apache::TS::Config::Records;
+use File::Copy;
+
+#chdir("/usr/local");
+chdir("/opt/ats");
+
+my $recedit = new Apache::TS::Config::Records(file =>
"etc/trafficserver/records.config.default");
+
+$recedit->append(line => "");
+$recedit->append(line => "# My local stuff");
+$recedit->append(line => "CONFIG proxy.config.proxy_binary_opts STRING -M
--disable_freelist");
+#$recedit->append(line => "CONFIG proxy.config.crash_log_helper STRING
/home/admin/bin/invoker_wrap.sh");
+
+# Port setup
+$recedit->set(conf => "proxy.config.http.server_ports", val => "80 80:ipv6
443:ssl 443:ipv6:ssl");
+
+# Threads
+$recedit->set(conf => "proxy.config.exec_thread.autoconfig", val => "0");
+$recedit->set(conf => "proxy.config.exec_thread.limit", val => "8");
+$recedit->set(conf => "proxy.config.cache.threads_per_disk", val => "8");
+$recedit->set(conf => "proxy.config.accept_threads", val => "0");
+$recedit->set(conf => "proxy.config.exec_thread.affinity", val => "1");
+
+# TLS
+$recedit->set(conf => "proxy.config.ssl.hsts_max_age", val => "17280000");
+#$recedit->set(conf => "proxy.config.ssl.max_record_size", val => "-1");
+$recedit->set(conf => "proxy.config.ssl.session_cache", val => "2");
+$recedit->set(conf => "proxy.config.ssl.ocsp.enabled", val => "1");
+$recedit->set(conf => "proxy.config.http2.stream_priority_enabled", val =>
"1");
+$recedit->set(conf => "proxy.config.ssl.max_record_size", val => "-1");
+$recedit->set(conf => "proxy.config.ssl.server.max_early_data", val =>
"16384");
+
+# Cache setup
+$recedit->set(conf => "proxy.config.cache.ram_cache.size", val => "1536M");
+$recedit->set(conf => "proxy.config.cache.ram_cache_cutoff", val => "4M");
+$recedit->set(conf => "proxy.config.cache.limits.http.max_alts", val => "4");
+$recedit->set(conf => "proxy.config.cache.dir.sync_frequency", val => "600");
# 10 minutes intervals
+$recedit->set(conf => "proxy.config.http.cache.ignore_client_cc_max_age", val
=> "1");
+$recedit->set(conf => "proxy.config.allocator.hugepages", val => "1");
+
+# HTTP caching related stuff
+$recedit->set(conf => "proxy.config.http.normalize_ae", val => "2");
+$recedit->set(conf => "proxy.config.http.cache.required_headers", val => "1");
+$recedit->set(conf => "proxy.config.http.insert_request_via_str", val => "1");
+$recedit->set(conf => "proxy.config.http.insert_response_via_str", val => "2");
+$recedit->set(conf => "proxy.config.http.negative_caching_enabled", val =>
"1");
+$recedit->set(conf => "proxy.config.http.negative_caching_lifetime", val =>
"60");
+$recedit->set(conf => "proxy.config.http.chunking.size", val => "64k");
+$recedit->set(conf => "proxy.config.url_remap.pristine_host_hdr", val => "1");
+$recedit->set(conf => "proxy.config.http.cache.open_write_fail_action", val =>
"2");
+
+# Timeouts
+$recedit->set(conf => "proxy.config.http.keep_alive_no_activity_timeout_in",
val => "300");
+$recedit->set(conf => "proxy.config.http.keep_alive_no_activity_timeout_out",
val => "300");
+$recedit->set(conf => "proxy.config.http.transaction_no_activity_timeout_out",
val => "180");
+$recedit->set(conf => "proxy.config.http.transaction_no_activity_timeout_in",
val => "180");
+$recedit->set(conf => "proxy.config.http.transaction_active_timeout_in", val
=> "180");
+$recedit->set(conf => "proxy.config.http.transaction_active_timeout_out", val
=> "180");
+$recedit->set(conf => "proxy.config.http.accept_no_activity_timeout", val =>
"30");
+
+# DNS / HostDB
+$recedit->set(conf => "proxy.config.cache.hostdb.sync_frequency", val => "0");
+
+# Logging
+$recedit->set(conf => "proxy.config.log.logging_enabled", val => "3");
+$recedit->set(conf => "proxy.config.log.max_space_mb_for_logs", val =>
"4096");
+$recedit->set(conf => "proxy.config.log.max_space_mb_headroom", val => "64");
+
+# Network
+$recedit->set(conf => "proxy.config.net.connections_throttle", val => "10000");
+#$recedit->set(conf => "proxy.config.net.sock_send_buffer_size_in", val =>
"2M");
+#$recedit->set(conf => "proxy.config.net.sock_recv_buffer_size_out", val =>
"2M");
+$recedit->set(conf => "proxy.config.net.poll_timeout", val => "30");
+
+# Local additions (typically not found in the records.config.default)
+$recedit->set(conf => "proxy.config.dns.dedicated_thread", val => "0");
+$recedit->set(conf => "proxy.config.http_ui_enabled", val => "3");
+$recedit->set(conf => "proxy.config.http.server_max_connections", val =>"250");
+$recedit->set(conf => "proxy.config.http.allow_multi_range", val =>"0");
+
+#$recedit->set(conf => "proxy.config.mlock_enabled", val => "2");
+
+# Write it all out
+$recedit->write(file => "etc/trafficserver/records.config");
diff --git a/bin/backtrace.sh b/bin/backtrace.sh
new file mode 100755
index 0000000..7cf60c7
--- /dev/null
+++ b/bin/backtrace.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+DM=/var/backtrace/ats
+CF=/usr/local/etc/coroner.cf
+PATH=/opt/backtrace/bin:/usr/bin:/bin:$PATH
+
+TAG=$(/opt/ats/bin/traffic_ctl metric get proxy.node.version.manager.short|cut
-d ' ' -f 2)
+
+mkdir -p ${DM}/
+ptrace --kv="tag:${TAG}" $1 -O ${DM}/ats
+if test "$?" == "0"; then
+ coroner -c $CF put -u ats ats ${DM}/*.btt
+fi
diff --git a/bin/btrfs-snap b/bin/btrfs-snap
new file mode 100755
index 0000000..1f9ab0e
--- /dev/null
+++ b/bin/btrfs-snap
@@ -0,0 +1,118 @@
+#!/bin/bash
+#
+# btrfs-snap - make periodic snapshots of btrfs filesystem
+#
+# Copyright (C) 2010 Birger Monsen [email protected]
+#
+# This program is distributed under the GNU General Public License
+# http://www.gnu.org/licenses/gpl.txt
+#
+
+LOG_FACILITY=local0
+VERSION="1.0"
+prog=${0##*/}
+
+USAGE="Usage: ${prog} -h for usage help
+ ${prog} -V for version
+ ${prog} <mountpoint> <prefix> <count>"
+SYNOPSIS="${prog} <mountpoint> <prefix> <count>
+<mountpoint> is the mountpoint of the btrfs file system to make a
+ snapshot of
+<prefix> is the prefix to be used in the name of the snapshot.
+ E.g. hourly, daily, weekly...
+<count> The number of snapshots with the given prefix to keep.
+
+btrfs-snap / hourly 24
+would make a snapshot in /.snapshot called hourly_<date>_<time>
+where <date> is on the form YYYY-MM-DD and <time> is on the form
+HH:MM:SS. This format makes shure snapshot names sort correctly in
+cronological order even when sorted alphabetically. The 24 newest
+snapshots matching the prefix are kept around. The rest are deleted.
+
+Snapshots are always created in a directory called .snapshot at the
+top level of the given mount point.
+
+Example usage for a system with 2 btrfs file systems mounted as
+/ and /home (remember to make these scripts executable):
+
+/etc/cron.hourly/btrfs-snap
+
+#!/bin/bash
+${0} / hourly 24
+${0} /home hourly 24
+
+/etc/cron.daily/btrfs-snap
+
+#!/bin/bash
+${0} / daily 7
+${0} /home daily 7
+
+/etc/cron.weekly/btrfs-snap
+
+#!/bin/bash
+${0} /home weekly 4
+
+Remember that at the moment snapshots cannot be made read-only, but you
+should not modify the snapshots created by this script, as they will
+get deleted without any notice. To restore a file, just copy it back from
+a snapshot to the main branch."
+
+while getopts "hV" arg; do
+ case "${arg}" in
+ h )
+ echo "$SYNOPSIS"
+ exit 0
+ ;;
+ V )
+ echo "${prog} Version ${VERSION}"
+ exit 0
+ ;;
+ * )
+ echo "$USAGE"
+ exit 1
+ ;;
+ esac
+done
+
+
+if [ $# -ne 3 ] ; then
+ echo "$USAGE"
+ exit 1
+fi
+
+if [ -f /etc/sysconfig/btrfs-snap ] ; then
+ . /etc/sysconfig/btrfs-snap
+fi
+
+mp=$1
+pf=$2
+cnt=$(( $3+1 ))
+
+mount -t btrfs | cut -d " " -f 3 | grep "^${mp}$" > /dev/null
+if [ $? -ne 0 ] ; then
+ echo "Error: ${mp} is not a btrfs mountpoint"
+ exit 1
+fi
+
+if [ ! -d "${mp}/.snapshot" ]; then
+ logger -p ${LOG_FACILITY}.info -t ${prog} "Creating ${mp}/.snapshot"
+ mkdir "${mp}/.snapshot"
+fi
+
+dt=`date +'%Y-%m-%d_%H:%M:%S'`
+out=`/sbin/btrfs subvol snapshot ${mp} ${mp}/.snapshot/${pf}_${dt} 2>&1`
+if [ $? -eq 0 ] ; then
+ logger -p ${LOG_FACILITY}.info -t ${prog} "${out}"
+else
+ logger -p ${LOG_FACILITY}.err -t ${prog} "${out}"
+fi
+
+ls -dr ${mp}/.snapshot/${pf}_* | tail -n +${cnt} | while read snap ; do
+ out=`/sbin/btrfs subvolume delete ${snap} 2>&1`
+if [ $? -eq 0 ] ; then
+ logger -p ${LOG_FACILITY}.info -t ${prog} "${out}"
+else
+ logger -p ${LOG_FACILITY}.err -t ${prog} "${out}"
+fi
+done
+
diff --git a/bin/build_master.sh b/bin/build_master.sh
new file mode 100755
index 0000000..d7578c1
--- /dev/null
+++ b/bin/build_master.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+ulimit -c unlimited
+cd /usr/local/src/trafficserver
+git stash
+git pull --rebase
+git stash pop
+
+gmake -j4
+[ $? -ne 0 ] && exit
+
+/usr/local/bin/trafficserver stop && mv /var/log/trafficserver/traffic.out
/var/log/trafficserver/traffic.out.$(date '+%s')
+/usr/local/bin/trafficserver start
diff --git a/bin/centos6.sh b/bin/centos6.sh
new file mode 100755
index 0000000..22f2d46
--- /dev/null
+++ b/bin/centos6.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp/ccache:/var/tmp/ccache -i -t
ci.trafficserver.apache.org/ats/centos:6 /bin/bash
diff --git a/bin/centos7.sh b/bin/centos7.sh
new file mode 100755
index 0000000..ef072d7
--- /dev/null
+++ b/bin/centos7.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp/ccache:/var/tmp/ccache -i -t
ci.trafficserver.apache.org/ats/centos:7 /bin/bash
diff --git a/bin/centos8.sh b/bin/centos8.sh
new file mode 100755
index 0000000..b49f8a6
--- /dev/null
+++ b/bin/centos8.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp/ccache:/var/tmp/ccache -i -t
ci.trafficserver.apache.org/ats/centos:8 /bin/bash
diff --git a/bin/clean b/bin/clean
new file mode 100755
index 0000000..80ec690
--- /dev/null
+++ b/bin/clean
@@ -0,0 +1,158 @@
+#!/usr/bin/perl
+######################################################################
+# @(#)clean.pl 1.5.4 ([email protected]) 05/20/96
+#
+# AUTHOR: Leif Hedstrom <[email protected]>
+#
+# SYNOPSIS:
+# clean [ -adefmnpruvFT] [-i [yn]] [-s string] [names ...]
+#
+# HISTORY:
+# 21-Jul-1991 Leif Initial version
+# 23-Mar-1992 Leif Bugs, makeregexp, framemaker, -b option, ver 1.1
+# 5-Apr-1992 Leif Added -a and -n option, ver 1.2
+# 26-Sep-1993 Leif Added -u and cleaned man page, ver 1.3
+# 25-Jan-1994 Leif Fixed NFS mount points traversal, fixed a bug in
+# answer, added -T, cleaned up, ver 1.4
+# 5-Feb-1994 Leif Added -m for deleted MH files, performance boost,
+# ignore symbolic links, ver. 1.5
+# 22-Oct-1994 Leif Fixed %-bug, ver. 1.5.1
+# 16-Jan-1995 Leif Works with Perl ver. 5.000 now.
+# 22-Jan-1995 Leif Added `-c' option, and changed `%' matching.
+# 20-May-1996 Leif Added `-e' switch, to remove emacs .save files. I
+# also moved the other emacs regexp's to $emexp.
+# 14-Mar-2012 Leif Wow, I've used this tool for 21 years... It finally
+# broke, sort of, with the deprecation of getopts.pl.
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+use Getopt::Std;
+
+
+#
+# Global variables.
+#
+$USAGE = "clean [ -acdefmnprtvuFT] [-i [yn]] [-s string] [names ...]";
+$stdexp = '[^%]*\%$|^core$';
+$emexp = '^\.saves-[0-9]+|.*\~$|^\#.*\#$';
+$texexp = '.*\.(cp|fn|ky|pg|tp|vr|aux|log|toc|fns)$';
+$sysexp = '^\.nfs.*';
+$framexp = '.*\.backup$|.*\.lck';
+$mhexp = '^[,#][0-9]+$';
+%anslist = ('^[yY]([eE][sS])?$', 1, '^[Nn]([oO])?$', 0);
+
+
+#
+# Subroutines.
+#
+sub answer { # answer(STR prompt, STR default)
+ local($regexp); # STR: Holds a reg. exp.
+ local($retval); # INT: Return value of reg. exp.
+ local($value) = -1; # INT: Calculated return value
+
+ print $_[0];
+ chop($_ = <>);
+ $_ = $_[1] if /^$/o; # Default choice
+ while(($regexp, $retval) = each %anslist){
+ $value = $retval if $_ =~ /$regexp/ ;
+ }
+ return $value;
+}
+
+
+sub makeregexp { # makeregexp(STR regexp)
+ $_ = "^core$|" if $opt_c;
+ $_ = "$stdexp|" if $opt_d || $opt_a;
+ $_ .= "$texexp|" if $opt_t || $opt_a;
+ $_ .= "$framexp|" if $opt_f || $opt_a;
+ $_ .= "$sysexp|" if $opt_u || $opt_a;
+ $_ .= "$mhexp|" if $opt_m || $opt_a;
+ $_ .= "$emexp|" if $opt_e || $opt_a;
+ $_ .= $_[0] if $_[0];
+ chop if !$_[0];
+
+ $_ = $stdexp if $_ eq "";
+ s/ //g; # Don't allow space in filenames
+ $stdexp = $_;
+ print "Searchstring is: $stdexp\n" if $opt_v;
+}
+
+
+sub handledir { # handledir(STR directory)
+ local(@files); # ARR[STR]: Files in directory
+
+ if (opendir(thedir, $_[0]) == 0) {
+ print STDERR "WARNING:can't access directory $_[0]\n";
+ return 0;
+ }
+ print "Now processing directory \'$_[0]\'\n" if $opt_v;
+ @files = readdir(thedir); # No close, will be done on next open!
+ grep(substr($_, 0, 0) = "$_[0]/", @files);
+ foreach (@files) {
+ next if /\/\.$/ || /\/\.\.$/;
+ if (-d) {
+ next if (-l && !$opt_F);
+ next if (!$opt_T && ($org_dev != (stat(_))[0]));
+ &handledir($_) if $opt_r;
+ } else {
+ &handlefile($_);
+ }
+ }
+}
+
+
+sub handlefile { # handlefile(STR file)
+ $file = substr($_[0], rindex($_[0], "/") + 1);
+ if ($file =~ /$stdexp/o) {
+ print "$_[0]\n" if (!$opt_i && ($opt_p || $opt_v || $opt_n));
+ return if $opt_n;
+ if ($opt_i) { # Interactive mode
+ $key = -1;
+ $key = &answer("Delete $_[0] [$opt_i]? ", "$opt_i") while $key < 0;
+ return if ($key != 1); # Don't remove anything!
+ }
+ unlink $_[0] || print STDERR "Could not delete $_[0]\n";
+ }
+}
+
+
+#
+# Here starts the main program.
+#
+unshift (@ARGV, split(/ /, $ENV{"CLEAN_OPTIONS"})); # Env. options
+
+&getopts('acdefmnprtuvFTi:s:') || die "Usage: $USAGE\n";
+$opt_i = 'n' if (defined ($opt_i) && $opt_i eq "");
+
+&makeregexp($opt_s);
+
+if ($#ARGV < $[) {
+ ($org_dev) = stat(".");
+ &handledir(".");
+} else {
+ foreach (@ARGV) {
+ if (-f) {
+ ($org_dev) = stat(".");
+ &handlefile($_);
+ } elsif (-d) { # Recursive
+ ($org_dev) = stat(_);
+ &handledir($_);
+ } else {
+ print STDERR "$_: file not found!\n";
+ }
+ }
+}
diff --git a/bin/clean-autest.sh b/bin/clean-autest.sh
new file mode 100755
index 0000000..27481d8
--- /dev/null
+++ b/bin/clean-autest.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+cd /tmp
+cd /CA/autest || exit
+
+# Nuke all core files
+find . -name core.\* -exec rm {} \;
+
+touch .
+find . -maxdepth 1 -mtime +14 -exec rm -rf {} \;
+for autest in autest-github autest-master autest-9.0.x; do
+ cd /tmp
+ if [ -d /var/jenkins/workspace/$autest ]; then
+ cd /var/jenkins/workspace/$autest || exit
+ find . -maxdepth 1 -mtime +16 -exec rm -rf {} \;
+ fi
+done
diff --git a/bin/clean-clang.sh b/bin/clean-clang.sh
new file mode 100755
index 0000000..f8bb929
--- /dev/null
+++ b/bin/clean-clang.sh
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+cd /CA/clang-analyzer || exit
+
+# Cleanup some empty dirs
+rmdir github/*/* 2> /dev/null
+
+for dir in *; do
+ if [ -d $dir ]; then
+ cd ${dir} || exit # Shouldn't exit here, but safe ...
+ for old in $(/usr/bin/ls -1t | egrep '^[0-9\-]+$' | tail -n +21); do
+ rm -rf $old
+ done
+
+ # Setup the symlink to the latest report
+ latest=$(/usr/bin/ls -1t | egrep '^[0-9\-]+$' | head -1)
+ if [ "$latest" != "" -a ! "$(readlink latest)" -ef "$latest" ]; then
+ rm -f latest
+ ln -s $latest latest
+ [ ! -f latest/index.html ] && touch latest/No\ Errors\ Reported
+
+ # Purge the cached URL
+ curl -o /dev/null -s -X PURGE
https://ci.trafficserver.apache.org/files/clang-analyzer/${dir}/latest/
+ fi
+ cd ..
+ fi
+done
diff --git a/bin/clean-github.sh b/bin/clean-github.sh
new file mode 100755
index 0000000..3325944
--- /dev/null
+++ b/bin/clean-github.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+ssh github1-int rm -rf /var/jenkins/workspace/Github*/src
+ssh github2-int rm -rf /var/jenkins/workspace/Github*/src
+ssh github3-int rm -rf /var/jenkins/workspace/Github*/src
+ssh github4-int rm -rf /var/jenkins/workspace/Github*/src
diff --git a/bin/cleanup.sh b/bin/cleanup.sh
new file mode 100755
index 0000000..cad4a29
--- /dev/null
+++ b/bin/cleanup.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+cd /var/jenkins/workspace || exit 1
+
+rm -rf in_tree-*/src
+rm -rf out_of_tree-*/src
diff --git a/bin/coad-6_1_x.pl b/bin/coad-6_1_x.pl
new file mode 100755
index 0000000..24696e7
--- /dev/null
+++ b/bin/coad-6_1_x.pl
@@ -0,0 +1,41 @@
+#!/bin/env perl
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+use lib '/opt/ats-6.1.x/share/perl5';
+
+use Apache::TS::Config::Records;
+use File::Copy;
+
+chdir("/opt/ats-6.1.x");
+
+my $recedit = new Apache::TS::Config::Records(file =>
"etc/trafficserver/records.config");
+
+$recedit->set(conf => "proxy.config.exec_thread.autoconfig", val => "0");
+$recedit->set(conf => "proxy.config.exec_thread.limit", val => "4");
+$recedit->set(conf => "proxy.config.cache.ram_cache.size", val => "256M");
+$recedit->set(conf => "proxy.config.cache.ram_cache_cutoff", val => "32M");
+$recedit->set(conf => "proxy.config.url_remap.remap_required", val => "0");
+#$recedit->set(conf => "proxy.config.url_remap.pristine_host_hdr", val =>
"0");
+$recedit->set(conf => "proxy.config.http.insert_response_via_str", val =>
"1");
+$recedit->set(conf => "proxy.config.http.insert_request_via_str", val => "1");
+$recedit->set(conf => "proxy.config.http.cache.ignore_client_cc_max_age", val
=> "0");
+$recedit->set(conf => "proxy.config.http.normalize_ae_gzip", val => "0");
+$recedit->set(conf => "proxy.config.dns.search_default_domains", val => "0");
+$recedit->set(conf => "proxy.config.http.response_server_enabled", val =>
"2");
+
+$recedit->write(file => "etc/trafficserver/records.config");
diff --git a/bin/compare-yum.sh b/bin/compare-yum.sh
new file mode 100755
index 0000000..b4598e3
--- /dev/null
+++ b/bin/compare-yum.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+HOSTS=$(/usr/bin/mktemp --suffix .on-gd)
+PSSH="/usr/bin/pssh -i -h $HOSTS"
+trap "rm -f $HOSTS" 0 1 2 5 15
+
+/usr/sbin/fping -q -a -f /admin/etc/gd-hosts.txt 2>&1 | cut -d: -f 1 > $HOSTS
+$PSSH "rpm -qa | sort > /tmp/yum.txt"
+
+for h in $(cat $HOSTS); do
+ scp $h:/tmp/yum.txt /tmp/yum-${h}.txt
+done
+
+for h in $(cat $HOSTS); do
+ echo "Diffing $h"
+ for h2 in $(cat $HOSTS); do
+ diff /tmp/yum-${h}.txt /tmp/yum-${h2}.txt | grep -v gpg
+ done
+ echo "Done"; echo; echo
+done
+
diff --git a/bin/cov-submit.sh b/bin/cov-submit.sh
new file mode 100755
index 0000000..4ab5a29
--- /dev/null
+++ b/bin/cov-submit.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+#
+# NOTE NOTE: Do not commit this script into any source repository!!!
+#
+
+curl --form project=Apache+Traffic+Server \
+ --form token=rXAv468n \
+ --form [email protected] \
+ --form file=@${1} \
+ --form version=${2} \
+ --form description="ATS master branch" \
+ https://scan.coverity.com/builds?project=Apache+Traffic+Server
diff --git a/bin/dbash b/bin/dbash
new file mode 100755
index 0000000..f9a2bee
--- /dev/null
+++ b/bin/dbash
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -i -t $* /bin/bash
diff --git a/bin/debian7.sh b/bin/debian7.sh
new file mode 100755
index 0000000..38b2940
--- /dev/null
+++ b/bin/debian7.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t
ci.trafficserver.apache.org/ats/debian:7 /bin/bash
diff --git a/bin/debian8.sh b/bin/debian8.sh
new file mode 100755
index 0000000..b12cc7b
--- /dev/null
+++ b/bin/debian8.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t
ci.trafficserver.apache.org/ats/debian:8 /bin/bash
diff --git a/bin/debian9.sh b/bin/debian9.sh
new file mode 100755
index 0000000..2f972e9
--- /dev/null
+++ b/bin/debian9.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t
ci.trafficserver.apache.org/ats/debian:9 /bin/bash
diff --git a/bin/docker b/bin/docker
new file mode 100755
index 0000000..da83e89
--- /dev/null
+++ b/bin/docker
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+export HOSTALIASES=/etc/hosts.docker
+
+/usr/bin/docker $@
diff --git a/bin/docker-all.sh b/bin/docker-all.sh
new file mode 100755
index 0000000..56a46e1
--- /dev/null
+++ b/bin/docker-all.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+# Fedora
+for x in 27 28 29 30; do
+ echo -n "Fedora${x}: "
+ docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t
ci.trafficserver.apache.org/ats/fedora:${x} "$@"
+done
+
+# CentOs
+for x in 6 7; do
+ echo -n "CentOS${x}: "
+ docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t
ci.trafficserver.apache.org/ats/centos:${x} "$@"
+done
+
+# Debian
+for x in 7 8 9; do
+ echo -n "Debian${x}: "
+ docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t
ci.trafficserver.apache.org/ats/debian:${x} "$@"
+done
+
+# Ubuntu
+for x in 14.04 16.04 17.04 17.10 18.04 18.10 19.04; do
+ echo -n "Ubuntu${x}: "
+ docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t
ci.trafficserver.apache.org/ats/ubuntu:${x} "$@"
+done
diff --git a/bin/docker-clean.sh b/bin/docker-clean.sh
new file mode 100755
index 0000000..250484d
--- /dev/null
+++ b/bin/docker-clean.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+docker rm $(docker ps -q -f status=exited)
+docker rmi $(docker images | awk '/<none>/ {print $3}')
diff --git a/bin/fedora30.sh b/bin/fedora30.sh
new file mode 100755
index 0000000..04d2235
--- /dev/null
+++ b/bin/fedora30.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t
ci.trafficserver.apache.org/ats/fedora:30 /bin/bash
diff --git a/bin/fedora31.sh b/bin/fedora31.sh
new file mode 100755
index 0000000..49666fc
--- /dev/null
+++ b/bin/fedora31.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t
ci.trafficserver.apache.org/ats/fedora:31 /bin/bash
diff --git a/bin/fedora32.sh b/bin/fedora32.sh
new file mode 100755
index 0000000..1930318
--- /dev/null
+++ b/bin/fedora32.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t
ci.trafficserver.apache.org/ats/fedora:32 /bin/bash
diff --git a/bin/fedora33.sh b/bin/fedora33.sh
new file mode 100755
index 0000000..aa44262
--- /dev/null
+++ b/bin/fedora33.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t
ci.trafficserver.apache.org/ats/fedora:33 /bin/bash
diff --git a/bin/freebsd.sh b/bin/freebsd.sh
new file mode 100755
index 0000000..783b27e
--- /dev/null
+++ b/bin/freebsd.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+pkg update
+pkg upgrade -y
+pkg install -y emacs-nox11 py27-fail2ban gcc gcc49 openjdk bzip2 gmake ccache
openssl tcl86 expat pcre p5-ExtUtils-MakeMaker hwloc autoconf automake libtool
bison flex git bash
+
+ln -s /usr/local/bin/git /usr/bin
+ln -s /usr/local/bin/bash /bin
+
+echo "mount -t fdescfs fdesc /dev/fd" >> /etc/fstab
+echo "mount -t procfs proc /proc" >> /etc/fstab
+
+
+pw groupadd jenkins -g 665
+pw useradd jenkins -g jenkins -u 665,665
+
+mkdir /var/jenkins && chown jenkins /var/jenkins && chgrp jenkins /var/jenkins
+mkdir -p /home/jenkins/.ssh
+chmod -R 700 /home/jenkins
+
+echo 'from="23.253.81.82,192.168.3.*",no-X11-forwarding ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAACAQCnOsr+q3xlFQZ3Z2cH8fpZynAWCmOZkbjBXH19c6C3KzA9cUPe8v7YnBq3tmfKtnMJYv42ZYz4n0ddHfbU91qqEwr6It7xN0kQeqtW0oGzLPWHun90YabKGeLVONFzlWzQG9Wv2R2se3W1qX8PKpAEyaocyujP94dc2tFQUkQ9tIj3fjVBj8SzrggnkC76MXojMHcPSZEYB4jZWxVlgWkX2vN2Te4qVJy6MlCEDOkYQW62TkfowZclNOu+OJvD7/kxOPLggWM9id9SWYvyMfJF8qd+xY1o9XY/kcnuGCCxnkGrNaOVeHsdKq87rhe2nGltZOnfucYN+S3pThYVUAJsB7bmmCwY/h4N2OXjUv/Rhg+NUERvU2Lc3I0z99aMvbBCK9EgKKIWxUAl
[...]
+
+chmod 600 /home/jenkins/.ssh/authorized_keys
+chown -R jenkins /home/jenkins
+chgrp -R jenkins /home/jenkins
+
+sudo -u jenkins ccache -M 10G -F 0
+
+echo 'ntpd_enable="YES"' >> /etc/rc.conf
+echo 'firewall_enable="YES"' >> /etc/rc.conf
+echo 'firewall_type="client"'>> /etc/rc.conf
+echo 'fail2ban_enable="YES"' >> /etc/rc.conf
diff --git a/bin/gd-sync.sh b/bin/gd-sync.sh
new file mode 100755
index 0000000..1ea02b4
--- /dev/null
+++ b/bin/gd-sync.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+GD_HOSTS="gd-1 gd-2 gd-3 gd-4 gd-5 gd-6 gd-7 gd-8 gd-9"
+HOME_DIRS="/home/jenkins /home/trafficserver /home/admin"
+CA_DIRS="/CA/autest /CA/clang-analyzer /CA/RAT"
+
+if [ "fetch" == "$1" ]; then
+ parallel 'rsync --exclude="core.*" -av {2}:{1} /CA' ::: $CA_DIRS :::
$GD_HOSTS
+else
+ parallel 'rsync --exclude=.ccache --delete -av {1} {2}:/home' :::
$HOME_DIRS ::: $GD_HOSTS
+fi
diff --git a/bin/gh-mirror.sh b/bin/gh-mirror.sh
new file mode 100755
index 0000000..caeadd0
--- /dev/null
+++ b/bin/gh-mirror.sh
@@ -0,0 +1,62 @@
+#!/bin/sh
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+GIT=${GIT:-/usr/bin/git}
+GREP=${GREP:-/usr/bin/grep}
+
+# This should probably be configurable ...
+cd /home/mirror/trafficserver.git || exit
+
+# Check that we got a token for Jenkins access
+if [ "" == "$1" ]; then
+ echo "Must provide the auth token for Jenkins"
+ exit 1
+fi
+
+# Prep the URLs
+URL="https://ci.trafficserver.apache.org/view/master/job"
+TOKEN="build?token=$1"
+
+# Save away previous ref-specs
+REF_4_2=$(${GIT} show-ref -s refs/heads/4.2.x)
+REF_5_3=$(${GIT} show-ref -s refs/heads/5.3.x)
+REF_6_2=$(${GIT} show-ref -s refs/heads/6.2.x)
+REF_master=$(${GIT} show-ref -s refs/heads/master)
+
+${GIT} remote update > /dev/null 2>&1
+${GIT} update-server-info
+
+# Now find the changes
+DIFF_4_2=$(${GIT} log --name-only --pretty=format:
${REF_4_2}..refs/heads/4.2.x| ${GREP} -v '^$')
+DIFF_5_3=$(${GIT} log --name-only --pretty=format:
${REF_5_3}..refs/heads/5.3.x | ${GREP} -v '^$')
+DIFF_6_2=$(${GIT} log --name-only --pretty=format:
${REF_6_2}..refs/heads/6.2.x | ${GREP} -v '^$')
+DIFF_master=$(${GIT} log --name-only --pretty=format:
${REF_master}..refs/heads/master | ${GREP} -v '^$')
+
+# Check master, we have to diff twice, because some commits could trigger both
+echo -n "$DIFF_master" | ${GREP} -F -e doc/ > /dev/null
+if [ 0 == $? ]; then
+ echo "Triggerd Docs build for master"
+ curl -o /dev/null -s ${URL}/docs-master/${TOKEN}
+fi
+
+echo -n "$DIFF_master" | ${GREP} -F -v -e doc/ > /dev/null
+if [ 0 == $? ]; then
+ echo "Triggered main build for master"
+ curl -o /dev/null -s ${URL}/in_tree-master/${TOKEN}
+ curl -o /dev/null -s ${URL}/out_of_tree-master/${TOKEN}
+fi
diff --git a/bin/invoker_wrap.sh b/bin/invoker_wrap.sh
new file mode 100755
index 0000000..58cd55f
--- /dev/null
+++ b/bin/invoker_wrap.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec /opt/backtrace/bin/invoker $@ -t "/admin/bin/backtrace.sh %p"
diff --git a/bin/iptables.sh b/bin/iptables.sh
new file mode 100755
index 0000000..a4972f9
--- /dev/null
+++ b/bin/iptables.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# Allow Apple buildbot
+iptables -I INPUT -i eth0 -s 17.244.0.0/14 -p tcp -m tcp --dport 40649 -j
ACCEPT
+
+# Restrict SSH
+iptables -I INPUT -p tcp -m tcp -s 24.9.49.85/32 --dport 22 -j ACCEPT
+iptables -I INPUT -p tcp -m tcp -s 24.56.188.103/32 --dport 22 -j ACCEPT
+iptables -I INPUT -p tcp -m tcp --dport 22 -m state --state new -m limit
--limit 20/hour --limit-burst 6 -j ACCEPT
+iptables -I INPUT -m tcp -p tcp --dport 22 -j LOG --log-prefix "IPTABLES
SSH-LIMIT: "
+iptables -I INPUT -m tcp -p tcp --dport 22 -j DROP
diff --git a/bin/make-machines.sh b/bin/make-machines.sh
new file mode 100755
index 0000000..0fb43e4
--- /dev/null
+++ b/bin/make-machines.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+cd /home/jenkins/BuildMachines
+
+# FreeBSD
+for h in FreeBSD11; do
+ curl -s -X PURGE
https://ci.trafficserver.apache.org/files/BuildMachines/${h}
+ ssh ${h}-int freebsd-version > ${h}
+ echo >> ${h}
+ ssh ${h}-int pkg info | sort >> ${h}
+done
+exit
+
+# CentOS / Fedora based systems
+for h in CentOS6 CentOS7 Fedora24 Fedora25 Fedora26 Fedora27; do
+ curl -s -X PURGE
https://ci.trafficserver.apache.org/files/BuildMachines/${h}
+ ssh ${h}-int cat /etc/redhat-release > ${h}
+ echo >> ${h}
+ ssh ${h}-int rpm -qa | sort >> ${h}
+done
+
+# Debian/Ubuntu systems
+for h in Ubuntu1204 Ubuntu1404 Ubuntu1604 Ubuntu1704 Debian7 Debian8; do
+ curl -s -X PURGE
https://ci.trafficserver.apache.org/files/BuildMachines/${h}
+ ssh ${h}-int cat /etc/debian_version > ${h}
+ echo >> ${h}
+ ssh ${h}-int dpkg -l >> ${h}
+done
diff --git a/bin/master-sync.sh b/bin/master-sync.sh
new file mode 100755
index 0000000..e33e1e2
--- /dev/null
+++ b/bin/master-sync.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+rsync --delete -av /var/jenkins/jobs jenkins:/var/jenkins
+rsync --delete --exclude '.snapshot' -av /var/lib/jenkins jenkins:/var/lib
+rsync --delete --exclude '.snapshot' -av /home jenkins:/
+rsync --delete -av /admin jenkins:/
+
+echo "Only run this once"
+echo "rsync -av /etc/httpd jenkins:/etc"
diff --git a/bin/on-all.sh b/bin/on-all.sh
new file mode 100755
index 0000000..1f9226e
--- /dev/null
+++ b/bin/on-all.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+for host in $(awk '/\-int/ {print $2}' /etc/hosts); do
+ echo "${host}:"
+ ssh $host "$*"
+ echo
+done
diff --git a/bin/on-docker.sh b/bin/on-docker.sh
new file mode 100755
index 0000000..13261b0
--- /dev/null
+++ b/bin/on-docker.sh
@@ -0,0 +1,60 @@
+#!/bin/sh
+
+#!/bin/bash
+
+HOSTS=$(/usr/bin/mktemp --suffix .on-docker)
+PSSH="/usr/bin/pssh -i -h $HOSTS"
+trap "rm -f $HOSTS" 0 1 2 5 15
+
+/usr/sbin/fping -q -a -f /admin/etc/docker-hosts.txt 2>&1 | cut -d: -f 1 >
$HOSTS
+
+NUM_ARGS=$(($#-1))
+
+case "$1" in
+ #
+ # DNF (yum) commands
+ #
+ install)
+ ;&
+ debuginfo-install)
+ ;&
+ remove)
+ ;&
+ update)
+ ;&
+ clean)
+ ;&
+ upgrade)
+ $PSSH "yum -y $*"
+ ;;
+ #
+ # systemd (systemctl) comamands
+ #
+ enable)
+ ;&
+ disable)
+ ;&
+ status)
+ ;&
+ stop)
+ ;&
+ start)
+ ;&
+ restart)
+ $PSSH "systemctl $*"
+ ;;
+ #
+ # scp
+ #
+ scp)
+ dest=${@: -1}
+ files=${@:2:$NUM_ARGS-1}
+ pscp.pssh -h ${HOSTS} "$files" "${dest}"
+ ;;
+ #
+ # Everything else
+ #
+ *)
+ $PSSH -X "-x" "$*"
+ ;;
+esac
diff --git a/bin/on-gd.sh b/bin/on-gd.sh
new file mode 100755
index 0000000..c5d4350
--- /dev/null
+++ b/bin/on-gd.sh
@@ -0,0 +1,60 @@
+#!/bin/sh
+
+#!/bin/bash
+
+HOSTS=$(/usr/bin/mktemp --suffix .on-gd)
+PSSH="/usr/bin/pssh -i -h $HOSTS"
+trap "rm -f $HOSTS" 0 1 2 5 15
+
+/usr/sbin/fping -q -a -f /admin/etc/gd-hosts.txt 2>&1 | cut -d: -f 1 > $HOSTS
+
+NUM_ARGS=$(($#-1))
+
+case "$1" in
+ #
+ # DNF (yum) commands
+ #
+ install)
+ ;&
+ debuginfo-install)
+ ;&
+ remove)
+ ;&
+ update)
+ ;&
+ clean)
+ ;&
+ upgrade)
+ $PSSH "yum -y $*"
+ ;;
+ #
+ # systemd (systemctl) comamands
+ #
+ enable)
+ ;&
+ disable)
+ ;&
+ status)
+ ;&
+ stop)
+ ;&
+ start)
+ ;&
+ restart)
+ $PSSH "systemctl $*"
+ ;;
+ #
+ # scp
+ #
+ scp)
+ dest=${@: -1}
+ files=${@:2:$NUM_ARGS-1}
+ pscp.pssh -h ${HOSTS} "$files" "${dest}"
+ ;;
+ #
+ # Everything else
+ #
+ *)
+ $PSSH -X "-x" "$*"
+ ;;
+esac
diff --git a/bin/pull-all.sh b/bin/pull-all.sh
new file mode 100755
index 0000000..9188cd4
--- /dev/null
+++ b/bin/pull-all.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+docker pull ci.trafficserver.apache.org/ats/fedora:33
+docker pull ci.trafficserver.apache.org/ats/fedora:32
+docker pull ci.trafficserver.apache.org/ats/fedora:31
+docker pull ci.trafficserver.apache.org/ats/ubuntu:20.10
+docker pull ci.trafficserver.apache.org/ats/ubuntu:20.04
+docker pull ci.trafficserver.apache.org/ats/ubuntu:19.04
+docker pull ci.trafficserver.apache.org/ats/ubuntu:18.04
+docker pull ci.trafficserver.apache.org/ats/ubuntu:16.04
+docker pull ci.trafficserver.apache.org/ats/ubuntu:14.04
+docker pull ci.trafficserver.apache.org/ats/centos:8
+docker pull ci.trafficserver.apache.org/ats/centos:7
+docker pull ci.trafficserver.apache.org/ats/centos:6
+docker pull ci.trafficserver.apache.org/ats/debian:9
+docker pull ci.trafficserver.apache.org/ats/debian:8
diff --git a/bin/purge.sh b/bin/purge.sh
new file mode 100755
index 0000000..25f2399
--- /dev/null
+++ b/bin/purge.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+for u in $*; do
+ echo "Purging $u..."
+ curl --resolve ci.trafficserver.apache.org:443:192.168.3.14 -X PURGE "$u"
+done
diff --git a/bin/push-all.sh b/bin/push-all.sh
new file mode 100755
index 0000000..c6bdec7
--- /dev/null
+++ b/bin/push-all.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+docker push ci.trafficserver.apache.org/ats/fedora:33
+docker push ci.trafficserver.apache.org/ats/fedora:32
+docker push ci.trafficserver.apache.org/ats/fedora:31
+docker push ci.trafficserver.apache.org/ats/ubuntu:20.10
+docker push ci.trafficserver.apache.org/ats/ubuntu:20.04
+docker push ci.trafficserver.apache.org/ats/ubuntu:19.04
+docker push ci.trafficserver.apache.org/ats/ubuntu:18.04
+docker push ci.trafficserver.apache.org/ats/ubuntu:16.04
+docker push ci.trafficserver.apache.org/ats/ubuntu:14.04
+docker push ci.trafficserver.apache.org/ats/centos:8
+docker push ci.trafficserver.apache.org/ats/centos:7
+docker push ci.trafficserver.apache.org/ats/centos:6
+docker push ci.trafficserver.apache.org/ats/debian:9
+docker push ci.trafficserver.apache.org/ats/debian:8
diff --git a/bin/quic.sh b/bin/quic.sh
new file mode 100755
index 0000000..f9f6411
--- /dev/null
+++ b/bin/quic.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t
ci.trafficserver.apache.org/ats/quic /bin/bash
diff --git a/bin/rate_limit.sh b/bin/rate_limit.sh
new file mode 100755
index 0000000..fe33225
--- /dev/null
+++ b/bin/rate_limit.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+curl -s -u psudaemon:7ba4b68c2dcbf525dd0db1f3cda09dd50a51ca22
https://api.github.com/rate_limit
diff --git a/bin/rax.sh b/bin/rax.sh
new file mode 100755
index 0000000..d5d301c
--- /dev/null
+++ b/bin/rax.sh
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# Packages
+yum -y install emacs-nox fail2ban nfs-utils java bzip2 btrfs-progs deltarpm
yum-cron yum-plugin-fastestmirror ccache make pkgconfig gcc-c++ openssl-devel
tcl-devel expat-devel pcre-devel perl-ExtUtils-MakeMaker libcap libcap-devel
hwloc hwloc-devel autoconf automake libtool bison flex git ntp clang rsyslog
+
+groupadd -g 665 jenkins
+useradd -g jenkins -u 989 -s /bin/bash -M -d /home/jenkins -c "Jenkins
Continuous Build server" jenkins
+mkdir /var/jenkins
+chown jenkins.jenkins /var/jenkins
+
+echo "ZONE=public" >> /etc/sysconfig/network-scripts/ifcfg-eth0
+echo "ZONE=public" >> /etc/sysconfig/network-scripts/ifcfg-eth1
+echo "ZONE=internal" >> /etc/sysconfig/network-scripts/ifcfg-eth2
+
+firewall-cmd --permanent --zone=internal --add-service=rpc-bind
+firewall-cmd --permanent --zone=internal --add-service=nfs
+firewall-cmd --permanent --zone=internal --remove-service=samba-client
+firewall-cmd --complete-reload
+
+echo "[sshd]" > /etc/fail2ban/jail.local
+echo "enabled = true" >> /etc/fail2ban/jail.local
+
+mount | grep /home > /dev/null || echo "192.168.3.1:/home /home nfs
rw,noatime,intr 0 0" >> /etc/fstab
+mount /home
+
+# ccache
+mkdir -p /var/tmp/ccache && chown jenkins.jenkins /var/tmp/ccache
+sudo -u jenkins ccache -M 8G -F 0
+
+
+# For systemctl
+#systemctl enable ntpd
+#systemctl restart ntpd
+
+systemctl enable fail2ban
+systemctl restart fail2ban
diff --git a/bin/rsync.sh b/bin/rsync.sh
new file mode 100755
index 0000000..3a7f51b
--- /dev/null
+++ b/bin/rsync.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+cd /home
+
+# This is for QA2 and QA3
+rsync -av jenkins admin 104.130.229.236:/home
+rsync -av jenkins admin 119.9.104.189:/home
diff --git a/bin/scp-all.sh b/bin/scp-all.sh
new file mode 100755
index 0000000..e461cb5
--- /dev/null
+++ b/bin/scp-all.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+SRC=$1
+DEST=$2
+
+for host in $(awk '/\-int/ {print $2}' /etc/hosts); do
+ echo "${host}:"
+ scp $SRC ${host}:$DEST
+done
diff --git a/bin/site_sync.sh b/bin/site_sync.sh
new file mode 100755
index 0000000..c763c2d
--- /dev/null
+++ b/bin/site_sync.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+cd /opt
+rsync -av openssl qa1-int:/opt
+rsync -av openssl qa2-int:/opt
diff --git a/bin/src_watcher.sh b/bin/src_watcher.sh
new file mode 100755
index 0000000..dd8c091
--- /dev/null
+++ b/bin/src_watcher.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+while [ 1 ]; do
+ inotifywait /CA/src > /dev/null 2>&1
+ sleep 1
+ rsync -av --delete /CA/src docker-gd-1:/CA > /dev/null 2>&1
+done
diff --git a/bin/start-ats.sh b/bin/start-ats.sh
new file mode 100755
index 0000000..36df54a
--- /dev/null
+++ b/bin/start-ats.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+: ${DIALOG=dialog}
+DIAGFILE=/tmp/transient-ats.txt
+
+# Don't use this, it gets removed in the pass "exec" from ATS startup
+#trap "rm -f $DIAGFILE" 0 1 2 5 15
+
+# Make sure it's empty
+rm -f $DIAGFILE
+cp /dev/null $DIAGFILE
+chmod og= $DIAGFILE
+chown nobody.nobody $DIAGFILE
+
+$DIALOG --title "Apache Traffic Server" --clear --passwordbox "Enter password
(transient)" 10 50 2> $DIAGFILE
+
+/usr/local/bin/trafficserver stop
+/usr/local/bin/trafficserver start
diff --git a/bin/start-registry.sh b/bin/start-registry.sh
new file mode 100755
index 0000000..b8047a8
--- /dev/null
+++ b/bin/start-registry.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+fail()
+{
+ echo $1
+ exit 1
+}
+[ "$EUID" -eq 0 ] || fail "This must be run as root."
+docker-compose -f /admin/etc/docker-compose.yml up -d
diff --git a/bin/ubuntu1404.sh b/bin/ubuntu1404.sh
new file mode 100755
index 0000000..75ea60f
--- /dev/null
+++ b/bin/ubuntu1404.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t
ci.trafficserver.apache.org/ats/ubuntu:14.04 /bin/bash
diff --git a/bin/ubuntu1604.sh b/bin/ubuntu1604.sh
new file mode 100755
index 0000000..f240ab4
--- /dev/null
+++ b/bin/ubuntu1604.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t
ci.trafficserver.apache.org/ats/ubuntu:16.04 /bin/bash
diff --git a/bin/ubuntu1710.sh b/bin/ubuntu1710.sh
new file mode 100755
index 0000000..749865e
--- /dev/null
+++ b/bin/ubuntu1710.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t
ci.trafficserver.apache.org/ats/ubuntu:17.10 /bin/bash
diff --git a/bin/ubuntu1804.sh b/bin/ubuntu1804.sh
new file mode 100755
index 0000000..ee47d50
--- /dev/null
+++ b/bin/ubuntu1804.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t
ci.trafficserver.apache.org/ats/ubuntu:18.04 /bin/bash
diff --git a/bin/ubuntu1810.sh b/bin/ubuntu1810.sh
new file mode 100755
index 0000000..84e8cd5
--- /dev/null
+++ b/bin/ubuntu1810.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t
ci.trafficserver.apache.org/ats/ubuntu:18.10 /bin/bash
diff --git a/bin/ubuntu1904.sh b/bin/ubuntu1904.sh
new file mode 100755
index 0000000..3e68260
--- /dev/null
+++ b/bin/ubuntu1904.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t
ci.trafficserver.apache.org/ats/ubuntu:19.04 /bin/bash
diff --git a/bin/ubuntu1910.sh b/bin/ubuntu1910.sh
new file mode 100755
index 0000000..fe24dde
--- /dev/null
+++ b/bin/ubuntu1910.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t
ci.trafficserver.apache.org/ats/ubuntu:19.10 /bin/bash
diff --git a/bin/ubuntu2004.sh b/bin/ubuntu2004.sh
new file mode 100755
index 0000000..7f410d0
--- /dev/null
+++ b/bin/ubuntu2004.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t
ci.trafficserver.apache.org/ats/ubuntu:20.04 /bin/bash
diff --git a/bin/ubuntu2010.sh b/bin/ubuntu2010.sh
new file mode 100755
index 0000000..1492cf2
--- /dev/null
+++ b/bin/ubuntu2010.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t
ci.trafficserver.apache.org/ats/ubuntu:20.10 /bin/bash
diff --git a/bin/update-rpm-links.sh b/bin/update-rpm-links.sh
new file mode 100755
index 0000000..47bced3
--- /dev/null
+++ b/bin/update-rpm-links.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+cd /home/jenkins/RPMS || exit
+
+rm -f CentOS6/*
+rm -f CentOS7/*
+rm -f F26/*
+rm -f F27/*
+
+cd CentOS6 && ln -s ../v7.1.2/*.el6.* . && cd ..
+cd CentOS7 && ln -s ../v7.1.2/*.el7.* . && cd ..
+cd F26 && ln -s ../v7.1.2/*.fc26.* . && cd ..
+cd F27 && ln -s ../v7.1.2/*.fc27.* . && cd ..
diff --git a/bin/update.sh b/bin/update.sh
new file mode 100755
index 0000000..8b28bca
--- /dev/null
+++ b/bin/update.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+# 192.168.3.12freebsd10-int
+
+YUM="fedora22-int fedora-latest-int centos5-int centos6-int devel-int znc qa1
qa2"
+APT="debian7-int debian8-int ubuntu1204-int ubuntu1404-int ubuntu1505-int
ubuntu-latest-int"
+
+for h in $YUM; do
+ echo "Doing $h..."
+ ssh $h "yum update -y; yum clean all"
+done
+
+for h in $APT; do
+ echo "Doing $h..."
+ ssh $h "apt-get update; apt-get -y dist-upgrade; apt-get -y autoremove"
+done
diff --git a/bin/version-all.sh b/bin/version-all.sh
new file mode 100755
index 0000000..24e0fde
--- /dev/null
+++ b/bin/version-all.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+# Fedora
+for x in 31 32; do
+ echo -n "Fedora${x}: "
+ docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t
ci.trafficserver.apache.org/ats/fedora:${x} cat /etc/redhat-release
+done
+
+# CentOs
+for x in 6 7 8; do
+ echo -n "CentOS${x}: "
+ docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t
ci.trafficserver.apache.org/ats/centos:${x} cat /etc/redhat-release
+done
+
+# Debian
+for x in 8 9; do
+ echo -n "Debian${x}: "
+ docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t
ci.trafficserver.apache.org/ats/debian:${x} cat /etc/debian_version
+done
+
+# Ubuntu
+for x in 14.04 16.04 18.04 19.04 20.04 20.10; do
+ echo -n "Ubuntu${x}: "
+ docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t
ci.trafficserver.apache.org/ats/ubuntu:${x} grep DISTRIB_RELEASE
/etc/lsb-release
+done