mirror of
https://github.com/serverok/squid-proxy-installer.git
synced 2026-04-02 18:49:50 +00:00
132 lines
3.3 KiB
PHP
Executable File
132 lines
3.3 KiB
PHP
Executable File
#!/usr/bin/php
|
|
<?php
|
|
|
|
# Squid Installer
|
|
# Author: admin@hostonnet.com
|
|
# Blog: https://blog.hostonnet.com
|
|
|
|
require "./config.php";
|
|
$servers = file("servers.txt");
|
|
|
|
#$logDir = __DIR__ . "/logs/";
|
|
$logDir = __DIR__ ;
|
|
|
|
if (! is_dir($logDir)) {
|
|
mkdir($logDir);
|
|
}
|
|
|
|
$runDate = date('YmdHis');
|
|
|
|
$logFIle = $logDir . '/' . $runDate . '-install.txt';
|
|
$logFailed = $logDir . '/' . $runDate . '-error.txt';
|
|
$logDebug = $logDir . '/' . $runDate . '-debug.txt';
|
|
|
|
newLine();
|
|
printLine();
|
|
echo "Proxy Installer (c) admin@hostonnet.com\n";
|
|
printLine();
|
|
newLine();
|
|
echo "This can take serveral minutes depedning on number of servers.\n";
|
|
echo "\033[32m";
|
|
echo "NOW IS THE TIME TO GO GET ANOTHER CUP OF COFFEE.\n\n";
|
|
echo "\033[0m";
|
|
|
|
foreach ($servers as $serverLine) {
|
|
$serverLine = trim($serverLine);
|
|
if (empty($serverLine)) continue;
|
|
$serverInfo = explode(",",$serverLine);
|
|
if (count($serverInfo) != 3) {
|
|
echo "Error processing servers.txt\n";
|
|
echo "\"$serverLine\"\n\n";
|
|
error_log("$serverLine\n", 3, $logFailed);
|
|
continue;
|
|
}
|
|
$server_ip = trim($serverInfo[0]);
|
|
$server_user = trim($serverInfo[1]);
|
|
$server_password = trim($serverInfo[2]);
|
|
$sshValid = verifySSH($server_ip, $server_user, $server_password);
|
|
if ($sshValid) {
|
|
$cmd = "/usr/local/bin/fab squid:$squid_username,$squid_password -H $server_ip -u $server_user -p \"$server_password\"";
|
|
#$cmd = $cmd . " >/dev/null 2>&1";
|
|
error_log("$cmd\n", 3, $logDebug);;
|
|
echo "Installing Squid on server - $server_ip ";
|
|
@exec($cmd, $exeResults);
|
|
foreach ($exeResults as $line) {
|
|
error_log("$line\n", 3, $logDebug);;
|
|
}
|
|
echo "[Done]\n";
|
|
error_log("$server_ip:3128:$squid_username:$squid_password\n", 3, $logFIle);;
|
|
} else {
|
|
echo "[ERROR]: login failed - $server_ip\n";
|
|
error_log("$server_ip,$server_user,$server_password\n", 3, $logFailed);
|
|
}
|
|
}
|
|
|
|
newLine(2);
|
|
echo "Installation completed.";
|
|
newLine(2);
|
|
|
|
if (file_exists($logFIle)) {
|
|
printLine();
|
|
newLine(2);
|
|
$logFileContents = file($logFIle);
|
|
foreach ($logFileContents as $tmp) {
|
|
echo $tmp;
|
|
}
|
|
newLine(2);
|
|
printLine();
|
|
newLine(2);
|
|
}
|
|
|
|
if (file_exists($logFailed)) {
|
|
newLine(2);
|
|
echo "\033[31m";
|
|
echo "Some servers failed to install. Please check ip, username and password are correct.\n";
|
|
echo "List of failed servers available at $logFailed";
|
|
echo "\033[0m";
|
|
newLine(2);
|
|
}
|
|
|
|
if (file_exists($logFIle)) {
|
|
echo "$logFIle\n";
|
|
}
|
|
|
|
if (file_exists($logFailed)) {
|
|
echo "$logFailed\n";
|
|
}
|
|
|
|
newLine();
|
|
|
|
function verifySSH($serverIP, $username, $password) {
|
|
$con = @ssh2_connect($serverIP, 22);
|
|
|
|
if (!$con) {
|
|
#echo "Error: unable to connect to ssh server\n";
|
|
return false;
|
|
}
|
|
|
|
$auth = @ssh2_auth_password($con, $username, $password);
|
|
|
|
if (!$auth) {
|
|
#echo "fail: unable to authenticate\n";
|
|
return false;
|
|
}
|
|
|
|
$stream = ssh2_exec($con, 'mkdir /root/.ssh');
|
|
$stream = ssh2_scp_send($con, 'id_rsa.pub', '/root/.ssh/authorized_keys2', 0600);
|
|
$stream = ssh2_exec($con, 'chmod -R 600 /root/.ssh');
|
|
|
|
return true;
|
|
}
|
|
|
|
function printLine() {
|
|
echo "===================================================================";
|
|
echo "\n";
|
|
}
|
|
|
|
function newLine($num = 1) {
|
|
for ($i=0;$i<$num;$i++) {
|
|
echo "\n";
|
|
}
|
|
}
|