Skip to content

Commit

Permalink
Merge pull request #42 from logicnow/2.3
Browse files Browse the repository at this point in the history
2.3
  • Loading branch information
sphen13 authored Aug 28, 2018
2 parents 21b53e6 + 73addbb commit 1393716
Show file tree
Hide file tree
Showing 11 changed files with 68 additions and 58 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@

.DS_Store
Client/ssh
18 changes: 9 additions & 9 deletions Client/bluesky.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
# Set this to a different location if you'd prefer it live somewhere else
ourHome="/var/bluesky"

bVer="2.2"
bVer="2.3"

# planting a debug flag runs bash in -x so you get all the output
if [ -e "$ourHome/.debug" ]; then
Expand Down Expand Up @@ -130,7 +130,7 @@ function startMeUp {
-c $prefCipher -m $msgAuth \
$kexAlg \
-o HostKeyAlgorithms=$keyAlg \
-nNT -R $sshport:localhost:$altPort -R $vncport:localhost:5900 -p 3122 \
-nNT -R $sshport:127.0.0.1:$altPort -R $vncport:127.0.0.1:5900 -p 3122 \
$noRoam \
-i "$ourHome/.ssh/bluesky_client" bluesky@$blueskyServer
#echo "$!" > "$ourHome/autossh.pid"
Expand Down Expand Up @@ -207,7 +207,7 @@ function reKey {
fi

# upload info to get registered
uploadResult=`curl $curlProxy -s -S -m 60 -1 --retry 4 --cacert "$ourHome/cacert.pem" -X POST -d "serialNum=$serialNum&actionStep=register&hostName=$hostName" https://$blueskyServer/cgi-bin/collector.php`
uploadResult=`curl $curlProxy -s -S -m 60 -1 --retry 4 --cacert "$ourHome/cacert.pem" -X POST --data-urlencode "serialNum=$serialNum" -d actionStep=register --data-urlencode "hostName=$hostName" https://$blueskyServer/cgi-bin/collector.php`
curlExit=$?
if [ "$uploadResult" != "Registered" ] || [ $curlExit -ne 0 ]; then
logMe "ERROR - registration with server failed. Exiting."
Expand Down Expand Up @@ -334,7 +334,7 @@ fi
serialMonster

# Attempt to get our port
port=`curl $curlProxy -s -S -m 60 -1 --retry 4 --cacert "$ourHome/cacert.pem" -X POST -d "serialNum=$serialNum&actionStep=port" https://$blueskyServer/cgi-bin/collector.php`
port=`curl $curlProxy -s -S -m 60 -1 --retry 4 --cacert "$ourHome/cacert.pem" -X POST --data-urlencode "serialNum=$serialNum" -d actionStep=port https://$blueskyServer/cgi-bin/collector.php`
curlExit=$?

# Is the server up?
Expand All @@ -359,7 +359,7 @@ if [ "$port" == "" ]; then
#no cached copy either, try rekey
reKey
sleep 5
port=`curl $curlProxy -s -S -m 60 -1 --retry 4 --cacert "$ourHome/cacert.pem" -X POST -d "serialNum=$serialNum&actionStep=port" https://$blueskyServer/cgi-bin/collector.php`
port=`curl $curlProxy -s -S -m 60 -1 --retry 4 --cacert "$ourHome/cacert.pem" -X POST --data-urlencode "serialNum=$serialNum" -d actionStep=port https://$blueskyServer/cgi-bin/collector.php`
curlExit=$?
if [ "$port" == "" ] || [ $curlExit -ne 0 ]; then
logMe "ERROR - cant reach server and have no port. Exiting."
Expand Down Expand Up @@ -417,14 +417,14 @@ if [ "$autoPid" == "" ]; then
fi

# ask server for the default username so we can pass on to Watchman
defaultUser=`curl $curlProxy -s -S -m 60 -1 --retry 4 --cacert "$ourHome/cacert.pem" -X POST -d "serialNum=$serialNum&actionStep=user" https://$blueskyServer/cgi-bin/collector.php`
defaultUser=`curl $curlProxy -s -S -m 60 -1 --retry 4 --cacert "$ourHome/cacert.pem" -X POST --data-urlencode "serialNum=$serialNum" -d actionStep=user https://$blueskyServer/cgi-bin/collector.php`
if [ "$defaultUser" != "" ]; then
/usr/libexec/PlistBuddy -c "Add :defaultuser string $defaultUser" "$ourHome/settings.plist" 2> /dev/null
/usr/libexec/PlistBuddy -c "Set :defaultuser $defaultUser" "$ourHome/settings.plist"
fi

#autossh is running - check against server
connStat=`curl $curlProxy -s -S -m 60 -1 --retry 4 --cacert "$ourHome/cacert.pem" -X POST -d "serialNum=$serialNum&actionStep=status" https://$blueskyServer/cgi-bin/collector.php`
connStat=`curl $curlProxy -s -S -m 60 -1 --retry 4 --cacert "$ourHome/cacert.pem" -X POST --data-urlencode "serialNum=$serialNum" -d actionStep=status https://$blueskyServer/cgi-bin/collector.php`
if [ "$connStat" != "OK" ]; then
if [ "$connStat" == "selfdestruct" ]; then
killShells
Expand All @@ -434,14 +434,14 @@ if [ "$connStat" != "OK" ]; then
logMe "server says we are down. restarting tunnels. Server said $connStat"
restartConnection
sleep 5
connStatRetry=`curl $curlProxy -s -S -m 60 -1 --retry 4 --cacert "$ourHome/cacert.pem" -X POST -d "serialNum=$serialNum&actionStep=status" https://$blueskyServer/cgi-bin/collector.php`
connStatRetry=`curl $curlProxy -s -S -m 60 -1 --retry 4 --cacert "$ourHome/cacert.pem" -X POST --data-urlencode "serialNum=$serialNum" -d actionStep=status https://$blueskyServer/cgi-bin/collector.php`
if [ "$connStatRetry" != "OK" ]; then
logMe "server still says we are down. trying reKey. Server said $connStat"
reKey
sleep 5
restartConnection
sleep 5
connStatLastTry=`curl $curlProxy -s -S -m 60 -1 --retry 4 --cacert "$ourHome/cacert.pem" -X POST -d "serialNum=$serialNum&actionStep=status" https://$blueskyServer/cgi-bin/collector.php`
connStatLastTry=`curl $curlProxy -s -S -m 60 -1 --retry 4 --cacert "$ourHome/cacert.pem" -X POST --data-urlencode "serialNum=$serialNum" -d actionStep=status https://$blueskyServer/cgi-bin/collector.php`
if [ "$connStatLastTry" != "OK" ]; then
logMe "ERROR - server still says we are down. needs manual intervention. Server said $connStat"
exit 1
Expand Down
5 changes: 4 additions & 1 deletion Client/helper.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
# helper script performs privileged tasks for BlueSky, does initial client setup

ourHome="/var/bluesky"
bVer="2.2"
bVer="2.3"

if [ -e "$ourHome/.debug" ]; then
set -x
Expand Down Expand Up @@ -172,6 +172,9 @@ setCheck=`/usr/libexec/PlistBuddy -c "Print :version" "$ourHome/settings.plist"`
if [ "$setCheck" == "" ]; then
logMe "Adding version to the settings plist"
/usr/libexec/PlistBuddy -c "Add :version string $bVer" "$ourHome/settings.plist"
elif [ "$setCheck" != "$bVer" ]; then
logMe "Setting version in the settings plist"
/usr/libexec/PlistBuddy -c "Set :version $bVer" "$ourHome/settings.plist"
fi

#make sure we stay executable - helps with initial install if someone isn't packaging
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ ENV IN_DOCKER=1 \
EMAILALERT=root@localhost \
LANG=C.UTF-8 \
LC_ALL=C.UTF-8 \
BLUESKY_VERSION=2.2
BLUESKY_VERSION=2.3

RUN apt-get update && \
apt-get install --no-install-recommends -y apache2 \
Expand Down
6 changes: 3 additions & 3 deletions Server/html/admin/incFunctions.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
#########################################################
if(!function_exists('getTableList')){
function getTableList($skip_authentication = false){
$arrTables = array(
$arrTables = array(
'computers' => 'BlueSky Admin',
'global' => 'Global Settings',
'connections' => 'Connection Log'
Expand Down Expand Up @@ -350,7 +350,7 @@ function htmlSQLSelect($name, $sql, $selectedValue, $class="", $selectedClass=""
}
########################################################################
function isEmail($email){
if(preg_match('/^([*+!.&#$¦\'\\%\/0-9a-z^_`{}=?~:-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,4})$/i', $email)){
if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
return $email;
}else{
return FALSE;
Expand Down Expand Up @@ -386,7 +386,7 @@ function setupMembership(){
'membership_users' => "CREATE TABLE IF NOT EXISTS membership_users (memberID varchar(20) NOT NULL, passMD5 varchar(40), email varchar(100), signupDate date, groupID int unsigned, isBanned tinyint, isApproved tinyint, custom1 text, custom2 text, custom3 text, custom4 text, comments text, PRIMARY KEY (memberID))",
'membership_grouppermissions' => "CREATE TABLE IF NOT EXISTS membership_grouppermissions (permissionID int unsigned NOT NULL auto_increment, groupID int, tableName varchar(100), allowInsert tinyint, allowView tinyint NOT NULL DEFAULT '0', allowEdit tinyint NOT NULL DEFAULT '0', allowDelete tinyint NOT NULL DEFAULT '0', PRIMARY KEY (permissionID))",
'membership_userrecords' => "CREATE TABLE IF NOT EXISTS membership_userrecords (recID bigint unsigned NOT NULL auto_increment, tableName varchar(100), pkValue varchar(255), memberID varchar(20), dateAdded bigint unsigned, dateUpdated bigint unsigned, groupID int, PRIMARY KEY (recID))",
'membership_userpermissions' => "CREATE TABLE IF NOT EXISTS membership_userpermissions (permissionID int unsigned NOT NULL auto_increment, memberID varchar(20) NOT NULL, tableName varchar(100), allowInsert tinyint, allowView tinyint NOT NULL DEFAULT '0', allowEdit tinyint NOT NULL DEFAULT '0', allowDelete tinyint NOT NULL DEFAULT '0', PRIMARY KEY (permissionID))"
'membership_userpermissions' => "CREATE TABLE IF NOT EXISTS membership_userpermissions (permissionID int unsigned NOT NULL auto_increment, memberID varchar(20) NOT NULL, tableName varchar(100), allowInsert tinyint, allowView tinyint NOT NULL DEFAULT '0', allowEdit tinyint NOT NULL DEFAULT '0', allowDelete tinyint NOT NULL DEFAULT '0', PRIMARY KEY (permissionID))"
);

// get db tables
Expand Down
22 changes: 11 additions & 11 deletions Server/html/incCommon.php
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@
#########################################################
function getTableList($skip_authentication = false){
$arrAccessTables = array();
$arrTables = array(
$arrTables = array(
'computers' => array('BlueSky Admin', '', 'table.gif'),
'global' => array('Global Settings', 'Set global options for all BlueSky installs or the server.', 'table.gif'),
'connections' => array('Connection Log', 'Tracks admin connection activity', 'table.gif')
Expand Down Expand Up @@ -186,7 +186,7 @@ function getTablePermissions($tn){

#########################################################
function get_sql_fields($table_name){
$sql_fields = array(
$sql_fields = array(
'computers' => "`computers`.`id` as 'id', `computers`.`blueskyid` as 'blueskyid', `computers`.`serialnum` as 'serialnum', `computers`.`hostname` as 'hostname', `computers`.`sshlink` as 'sshlink', `computers`.`vnclink` as 'vnclink', `computers`.`scplink` as 'scplink', `computers`.`username` as 'username', `computers`.`sharingname` as 'sharingname', `computers`.`gruntwork` as 'gruntwork', `computers`.`datetime` as 'datetime', `computers`.`status` as 'status', `computers`.`registered` as 'registered', `computers`.`notify` as 'notify', `computers`.`alert` as 'alert', `computers`.`email` as 'email', `computers`.`notes` as 'notes', `computers`.`selfdestruct` as 'selfdestruct', `computers`.`downup` as 'downup', `computers`.`timestamp` as 'timestamp'",
'global' => "`global`.`id` as 'id', `global`.`defaultemail` as 'defaultemail', `global`.`adminkeys` as 'adminkeys', `global`.`clickhere` as 'clickhere', `global`.`updateNames` as 'updateNames'",
'connections' => "`connections`.`id` as 'id', `connections`.`timestamp` as 'timestamp', `connections`.`sourceIP` as 'sourceIP', `connections`.`adminkey` as 'adminkey', `connections`.`targetPort` as 'targetPort', `connections`.`exitStatus` as 'exitStatus', `connections`.`startTime` as 'startTime', `connections`.`endTime` as 'endTime', `connections`.`notes` as 'notes'"
Expand All @@ -200,13 +200,13 @@ function get_sql_fields($table_name){
}
#########################################################
function get_sql_from($table_name, $skip_permissions = false){
$sql_from = array(
$sql_from = array(
'computers' => "`computers` ",
'global' => "`global` ",
'connections' => "`connections` "
);

$pkey = array(
$pkey = array(
'computers' => 'id',
'global' => 'id',
'connections' => 'id'
Expand Down Expand Up @@ -351,6 +351,7 @@ function htmlUserBar(){
<a href="admin/pageHome.php" class="btn btn-danger navbar-btn visible-sm visible-md visible-lg"><i class="glyphicon glyphicon-cog"></i> <?php echo $Translation['admin area']; ?></a>
<a href="admin/pageHome.php" class="visible-xs btn btn-danger navbar-btn btn-lg"><i class="glyphicon glyphicon-cog"></i> <?php echo $Translation['admin area']; ?></a>
</ul>
<?php if(is_file(dirname(__FILE__) . '/hooks/agent-links.php')){ include(dirname(__FILE__).'/hooks/agent-links.php'); } ?>
<?php } ?>

<?php if(!$_GET['signIn'] && !$_GET['loginFailed']){ ?>
Expand Down Expand Up @@ -542,9 +543,9 @@ function getMemberInfo($memberID = ''){
'admin' => ($adminConfig['adminUsername'] == $memberID ? true : false),
'email' => $row['email'],
'custom' => array(
$row['custom1'],
$row['custom2'],
$row['custom3'],
$row['custom1'],
$row['custom2'],
$row['custom3'],
$row['custom4']
),
'banned' => ($row['isBanned'] ? true : false),
Expand Down Expand Up @@ -574,8 +575,8 @@ function str_ireplace($search, $replace, $subject){
}

return $ret;
}
}
}
}
#########################################################
/**
* Loads a given view from the templates folder, passing the given data to it
Expand Down Expand Up @@ -652,7 +653,7 @@ function filterDropdownBy($filterable, $filterers, $parentFilterers, $parentPKFi
$jsonFilterableData .= "\"{$row[0]}\":\"{$row[1]}\",";
}
$jsonFilterableData .= '}';
$jsonFilterableData = '{'.str_replace(',}', '}', $jsonFilterableData);
$jsonFilterableData = '{'.str_replace(',}', '}', $jsonFilterableData);
$filterJS = "\nvar {$filterable}_data = $jsonFilterableData;";

foreach($filterersArray as $filterer){
Expand Down Expand Up @@ -969,4 +970,3 @@ function check_record_permission($table, $id, $perm = 'view'){

return false;
}

7 changes: 3 additions & 4 deletions Server/html/setup.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
5. to show final success message, $_GET['finish']
below here, we determine which scenario is being called
*/
$submit = $test = $form = $finish = false;
$submit = $test = $form = $finish = false;
(isset($_POST['submit']) ? $submit = true :
(isset($_POST['test']) ? $test = true :
(isset($_GET['show-form']) ? $form = true :
Expand All @@ -32,7 +32,7 @@ function undo_magic_quotes($str){
}

function isEmail($email){
if(preg_match('/^([*+!.&#$¦\'\\%\/0-9a-z^_`{}=?~:-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,4})$/i', $email)){
if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
return $email;
}else{
return FALSE;
Expand Down Expand Up @@ -242,7 +242,7 @@ function setup_allowed_username($username){
?>
<div class="alert alert-warning alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>

</div>
<?php
}
Expand Down Expand Up @@ -594,4 +594,3 @@ function db_test(){
</style>

<?php include_once("$curr_dir/footer.php"); ?>

28 changes: 19 additions & 9 deletions Server/processor.sh
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,11 @@ if [ "$compRec" == "" ]; then
#fetch unique ID
myQry="SELECT MIN(t1.blueskyid + 1) AS nextID FROM computers t1 LEFT JOIN computers t2 ON t1.blueskyid + 1 = t2.blueskyid WHERE t2.blueskyid IS NULL"
bluId=`$myCmd "$myQry"`

if [ "$bluId" == "NULL" ] || [ "$bluId" == "" ]; then
bluId=1
fi

#safety check
if [ ${bluId:-0} -gt 1949 ]; then
echo "ERROR: maximum limit reached"
Expand Down Expand Up @@ -137,7 +137,7 @@ fi
myQry="select blueskyid from computers where serialnum='$serialNum'"
myPort=`$myCmd "$myQry"`
sshPort=$((22000 + myPort))
testConn=`ssh -p $sshPort -o StrictHostKeyChecking=no -l bluesky -i /usr/local/bin/BlueSky/Server/blueskyd localhost "/usr/bin/defaults read /var/bluesky/settings serial"`
testConn=`ssh -p $sshPort -o StrictHostKeyChecking=no -o ConnectTimeout=10 -l bluesky -o BatchMode=yes -i /usr/local/bin/BlueSky/Server/blueskyd localhost "/usr/bin/defaults read /var/bluesky/settings serial"`
testExit=$?
if [ $testExit -eq 0 ]; then
if [ "$testConn" == "$serialNum" ]; then
Expand All @@ -146,17 +146,27 @@ if [ $testExit -eq 0 ]; then
snMismatch
fi
else #either down or defaults is messed up, try using PlistBuddy
testConn2=`ssh -p $sshPort -o StrictHostKeyChecking=no -l bluesky -i /usr/local/bin/BlueSky/Server/blueskyd localhost "/usr/libexec/PlistBuddy -c 'Print serial' /var/bluesky/settings.plist"`
testConn2=`ssh -p $sshPort -o StrictHostKeyChecking=no -o ConnectTimeout=10 -o BatchMode=yes -l bluesky -i /usr/local/bin/BlueSky/Server/blueskyd localhost "/usr/libexec/PlistBuddy -c 'Print serial' /var/bluesky/settings.plist" 2>&1`
testExit2=$?
if [ $testExit2 -eq 0 ]; then
if [ "$testConn2" == "$serialNum" ]; then
allGood
else
snMismatch
fi
else #it's down
echo "Cannot connect."
myQry="update computers set status='ERROR: no tunnel established',datetime='$timeStamp' where serialnum='$serialNum'"
else #it's down - lets find out why
if [[ $testConn2 = *"ssh_exchange_identification"* ]]; then
# PKI exchange issue for bluesky user - lets return OK to keep tunnel up.
echo "OK"
myQry="update computers set status='ERROR: tunnel issue TO client',datetime='$timeStamp' where serialnum='$serialNum'"
elif [[ $testConn2 = *"Permission denied"* ]]; then
# Most likely prompting for password auth - key issue - lets return OK to keep tunnel up.
echo "OK"
myQry="update computers set status='ERROR: cannot verify serial number',datetime='$timeStamp' where serialnum='$serialNum'"
else
echo "Cannot connect."
myQry="update computers set status='ERROR: no tunnel established',datetime='$timeStamp' where serialnum='$serialNum'"
fi
$myCmd "$myQry"
fi
fi
Expand Down Expand Up @@ -186,7 +196,7 @@ SSH bluesky://com.solarwindsmsp.bluesky.admin?blueSkyID=$myPort&user=$myUser&act
VNC bluesky://com.solarwindsmsp.bluesky.admin?blueSkyID=$myPort&user=$myUser&action=vnc
SCP bluesky://com.solarwindsmsp.bluesky.admin?blueSkyID=$myPort&user=$myUser&action=scp"
fi

myQry="update computers set notify=0 where serialnum='$serialNum'"
$myCmd "$myQry"
fi
Expand All @@ -195,4 +205,4 @@ fi

esac

exit 0
exit 0
14 changes: 5 additions & 9 deletions docker/build_admin_pkg.sh
Original file line number Diff line number Diff line change
Expand Up @@ -62,13 +62,9 @@ echo "osx package has been built: ${PKG_LOCATION}"
RANDOM_DIR=`cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w ${1:-32} | head -n 1`
mkdir /var/www/html/"${RANDOM_DIR}"
ln -s "${PKG_LOCATION}" /var/www/html/"${RANDOM_DIR}"/
cat <<EOF >> /var/www/html/hooks/header-extras.php
<button onClick="window.location='${RANDOM_DIR}/${APPNAME}-${BLUESKY_VERSION}.pkg';" class="btn btn-default"><i class="glyphicon glyphicon-download-alt"></i> Download BlueSky Admin Tools</button>
</div>
<div class="clearfix">
</div>
<p>
</p>
</div>
<?php } ?>
cat <<EOF >> /var/www/html/hooks/agent-links.php
<ul class="nav navbar-nav">
<a href="${RANDOM_DIR}/${APPNAME}-${BLUESKY_VERSION}.pkg" class="btn btn-default navbar-btn visible-sm visible-md visible-lg"><i class="glyphicon glyphicon-download-alt"></i> Download BlueSky Admin Tools</a>
<a href="${RANDOM_DIR}/${APPNAME}-${BLUESKY_VERSION}.pkg" class="visible-xs btn btn-default navbar-btn btn-lg"><i class="glyphicon glyphicon-download-alt"></i> Download BlueSky Admin Tools</a>
</ul>
EOF
13 changes: 5 additions & 8 deletions docker/build_pkg.sh
Original file line number Diff line number Diff line change
Expand Up @@ -74,12 +74,9 @@ echo "osx package has been built: ${PKG_LOCATION}"
RANDOM_DIR=`cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w ${1:-32} | head -n 1`
mkdir /var/www/html/"${RANDOM_DIR}"
ln -s "${PKG_LOCATION}" /var/www/html/"${RANDOM_DIR}"/
cat <<EOF > /var/www/html/hooks/header-extras.php
<?php
\$mi = getMemberInfo();
if(in_array(\$mi['group'], array('Admins', 'Data entry'))){
?>
<div id="top_buttons" class="hidden-print">
<div class="btn-group btn-group-lg visible-md visible-lg all_records pull-left">
<button onClick="window.location='${RANDOM_DIR}/${APPNAME}-${BLUESKY_VERSION}.pkg';" class="btn btn-default"><i class="glyphicon glyphicon-download-alt"></i> Download BlueSky Agent</button>
cat <<EOF > /var/www/html/hooks/agent-links.php
<ul class="nav navbar-nav">
<a href="${RANDOM_DIR}/${APPNAME}-${BLUESKY_VERSION}.pkg" class="btn btn-default navbar-btn visible-sm visible-md visible-lg"><i class="glyphicon glyphicon-download-alt"></i> Download BlueSky Agent</a>
<a href="${RANDOM_DIR}/${APPNAME}-${BLUESKY_VERSION}.pkg" class="visible-xs btn btn-default navbar-btn btn-lg"><i class="glyphicon glyphicon-download-alt"></i> Download BlueSky Agent</a>
</ul>
EOF
9 changes: 7 additions & 2 deletions docker/supervisord.conf
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
[supervisord]
nodaemon=true
loglevel=warn

[program:rsyslogd]
command=/usr/sbin/rsyslogd -n

[program:sshd]
command=/usr/sbin/sshd -D
command=/usr/sbin/sshd -D -e
autorestart=true
redirect_stderr=true

[program:apache2]
command=/bin/bash -c "source /etc/apache2/envvars && exec /usr/sbin/apache2 -DFOREGROUND"
redirect_stderr=true

[program:fail2ban]
command = /usr/local/bin/fail2ban-supervisor.sh
command=/usr/local/bin/fail2ban-supervisor.sh
redirect_stderr=true

0 comments on commit 1393716

Please sign in to comment.