Correction de bugs + Gestion clef SSH + Pétage de câbles

This commit is contained in:
Michel Roux 2014-01-23 21:56:14 +01:00
parent 6d243a0f5c
commit 85b3c5f58c
3 changed files with 72 additions and 6 deletions

View File

@ -4,6 +4,7 @@ ini_set('display_errors', true);
require_once 'config.php'; require_once 'config.php';
require_once 'utils.php'; require_once 'utils.php';
require_once 'Net/SSH2.php'; require_once 'Net/SSH2.php';
require_once 'Crypt/RSA.php';
global $servers; global $servers;
$gitstatus = 'git fetch && git status'; $gitstatus = 'git fetch && git status';
@ -18,14 +19,43 @@ if (!empty($_POST['section'])) {
if (!empty($_POST['action'])) { if (!empty($_POST['action'])) {
$session = new Net_SSH2($config['host'], $config['port']); $session = new Net_SSH2($config['host'], $config['port']);
if ($session->login($config['user'], $config['pass'])) {
if (!empty($config['key'])) {
$key = new Crypt_RSA();
if (!empty($config['keypass'])) {
$key->setPassword($config['keypass']);
}
$keypass = $config['key'];
if (file_exists($config['key'])) {
$keypass = file_get_contents($config['key']);
}
if ($key->loadKey($keypass)) {
$session->login($config['user'], $key);
}
}
if (!$session->isConnected()) {
$session->login($config['user'], $config['pass']);
}
if ($session->isConnected()) {
if ($_POST['action'] == 'status') { if ($_POST['action'] == 'status') {
echo ansi2html($session->exec('bash -c \'cd ' . $config['path'] . ' && ' . $gitstatus . "'")); echo ansi2html($session->exec('bash -c \'cd ' . $config['path'] . ' && ' . $gitstatus . "'"));
exit;
} else if ($_POST['action'] == 'push') { } else if ($_POST['action'] == 'push') {
$message = empty($_POST['message']) ? 'FTP' : str_replace(array('"', "'"), ' ', stripslashes($_POST['message'])); $message = empty($_POST['message']) ? 'FTP' : str_replace(array('"', "'"), ' ', stripslashes($_POST['message']));
echo ansi2html($session->exec('bash -c \'cd ' . $config['path'] . ' && git add -A && git commit -m "' . $message . '" && git push && ' . $gitstatus . "'")); echo ansi2html($session->exec('bash -c \'cd ' . $config['path'] . ' && git add -A && git commit -m "' . $message . '" && git push && ' . $gitstatus . "'"));
exit;
} else if ($_POST['action'] == 'pull') { } else if ($_POST['action'] == 'pull') {
echo ansi2html($session->exec('bash -c \'cd ' . $config['path'] . ' && git pull && ' . $gitstatus . "'")); echo ansi2html($session->exec('bash -c \'cd ' . $config['path'] . ' && git pull && ' . $gitstatus . "'"));
exit;
} else {
echo 'Unknown command ' . $_POST['action'];
exit;
} }
} else {
echo 'Permission denied, please try again.';
exit;
} }
} }
echo 'error';

View File

@ -5,6 +5,14 @@
// TRUE : Sécurité si vous executez Git Center sur un serveur GitLab // TRUE : Sécurité si vous executez Git Center sur un serveur GitLab
define('ONGITLAB', false); define('ONGITLAB', false);
/*
* Dans le cas d'une connexion avec une clef RSA (clef privée) :
* -- Le mot de passe SSH (pass) est facultatif et sera utilisé en car de refus de connexion avec la clef
* -- Le keypass est le mot de passe de la clef (laissez vide ou omettez pas le champ si vous n'avez pas mis de keypass)
* -- Le key est votre clef privée qui peut être soit un chemin (absolu ou relatif) vers le fichier id_rsa soit LA FUCKING CLEF PRIVÉE EN DUR !!!
* ^ OUI ÇA FONCTIONNE OMGWTFBBQ11
*/
// Définition de la forêt de serveurs // Définition de la forêt de serveurs
$servers = array( $servers = array(
'Groupe de serveur 1' => array( 'Groupe de serveur 1' => array(
@ -29,17 +37,19 @@ $servers = array(
'host' => '192.168.1.30', 'host' => '192.168.1.30',
'port' => 22, 'port' => 22,
'user' => 'root', 'user' => 'root',
'pass' => 'root', 'pass' => 'partoutatiss',
'path' => '/home/user/root' 'path' => '/home/user/root'
) )
), ),
'Groupe de serveur 2' => array( 'Groupe de serveur 2 conf RSA' => array(
'prod3' => array( 'prod3' => array(
'title' => 'Production de la mort', 'title' => 'Production de la mort',
'host' => '192.168.1.40', 'host' => '192.168.1.40',
'port' => 22, 'port' => 22,
'user' => 'root', 'user' => 'root',
'pass' => 'root', 'pass' => 'root',
'key' => '/Users/tamere/.ssh/id_rsa',
'keypass' => 'rootdelaclefrsa',
'path' => '/home/user/root' 'path' => '/home/user/root'
), ),
'test3' => array( 'test3' => array(
@ -47,7 +57,33 @@ $servers = array(
'host' => '192.168.1.40', 'host' => '192.168.1.40',
'port' => 22, 'port' => 22,
'user' => 'user', 'user' => 'user',
'pass' => 'blbl', 'key' => '-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAw/scCsz9rtp+2VzUwpkdqNHPy6vqS72qvy3dt04U0rHj6NVv
/L+zF3M0EfULpNAB6D5XY35D854IKZ/Dwcp1/2xjPkLJ+XaLl38TUStLfMQA8EgR
EVzW5QrAte8xZOF35lyfoi5HBQay8R3d3SqIoRFzINEpWHtwlIHbf6CACQ1Rgx2J
gQo1/i8gu2xzp7T04cGSWguCEKbQsDqLTHNGYTDl2fTJki9b3NE6Fm+0/qp87pPq
YVNqapwPYlVDpmql4kcomPKnBzo3/ThFXeq5iwJMKwTgqnVUIttKTKJ1/HB83VPM
n/+FR+hwkcqtgSiPLI9ddtsRikO1auG8h1aB3wIDAQABAoIBAHgkSFyWri2y5HB7
6DIji3sipDBHg6pK65GnnHPy+fDv/LePoMdg/XkytokLn8e5fHHTRd9IWH/QMVDT
ED6Mzyl2WKCicQ7tDUYiMMVhtTUXMzwZ8dyi/VoL7Xea2rztO4OM5I+XrxH1uVz2
4jvjBz82Y02K673CbpGbyePDkLn6yzlmRpEOFEwH+169a44i/gV4HcC3Vo7ULX74
SP/yOGcvBD7e9t1BgELmcLn+Y5EhOVQT6O3hRW20CSnA4yQ+fe2KhCM2EJRlZ88S
uuXK2GSEMLmv0+W+GCQHskUEBQRtCfteYHYXZmJwhLgYuUZXUy2SYHuNNO01x3lG
reGvTgECgYEA/xpW5fUjb1KAYAr+/ETzsYk3/v72akQSuYVV5cpre0+wg+RJNa3E
adhpIqKz8l4BhXB5d93cxMNr7x3q+hVFeCsgRcMVLSf3fFPx3uw6stCxt2c6lvQm
/RP6KsE7OG4Vse47tKE1Jop4JIHlbNkIWdrxbUDsRM/OHDsfR/pFBvECgYEAxKuL
Z8GZqqvpBZDEQ2s55WUJz1lRGJNQuVopabZCkOVpRNCkM15MYDLaj1gcOMrWXtZp
LEHyFtNf5cLfcwdL6AGFysoTYltMIwLs0sOetMNO6p8ViyEjbphpsq5vOw4wSgOI
eIPJeZesMu1ZrB6W68fYXm7wOVeZqMqImmx2Nc8CgYEAo0lbyBPSG6aGT3OaZSVJ
iyEW+5x9Y+WwyplDMzQO+j428SVFixtv9oQ0P5w/bGqptJ0a0xPrBPNFeif/SRYm
glWwcZb+TgogCq+8yQESTXTx3EAyK3+aGTIZVhabbnJgZqTkCKmLWOEXJ98RWEvP
YZyYHmOJGD6fYkihrDPQzTECgYBMaXY9dtv0ktxznB6VLzkMZqhcFpDKopoPmfdT
KkxMrcWrxgC2MKIuEjQW054Ldsu5h0bPukOMGM4+n+tfbutQFh9cfgzv/xbi14Ua
EoU8KFImGG8vYk2476DJmrp+0HF0oFDKujFye7qdAtj/ZdcvfrMTZbkSHnYGPcK7
dP6swwKBgQDT95rsxbXPtpA03H46GpVeBYJ5ARepPpObrilYxkt5LymncAJykAvr
KW6dcEHI6KsqCFJz+jqUeuKEM9yHn23UtvxiUDEtdbRJ6yKIhJzwG/c/ZOxWlIVR
PLBLwUI2uDV8cMCdDfEYMxkBbMHP4L2IDKjEIznGRIw386Cq2LsOmg==
-----END RSA PRIVATE KEY-----',
'path' => '/home/user/test' 'path' => '/home/user/test'
), ),
'prod4' => array( 'prod4' => array(
@ -55,7 +91,7 @@ $servers = array(
'host' => '192.168.1.50', 'host' => '192.168.1.50',
'port' => 22, 'port' => 22,
'user' => 'root', 'user' => 'root',
'pass' => 'root', 'pass' => 'blbl',
'path' => '/home/user/root' 'path' => '/home/user/root'
) )
) )

View File

@ -32,7 +32,7 @@ function callRequest(action, section, message) {
var splitLabel = xhr.responseText.split("\n").reverse(); var splitLabel = xhr.responseText.split("\n").reverse();
label.classList.remove('label-warning'); label.classList.remove('label-warning');
if (!splitLabel[1].match(/nothing to commit/) || xhr.responseText.match(/by [0-9]* commit/)) { if ((typeof splitLabel[1] !== 'undefined' && !splitLabel[1].match(/nothing to commit/)) || xhr.responseText.match(/by [0-9]* commit/)) {
label.classList.add('label-important'); label.classList.add('label-important');
label.innerHTML = 'Update needed'; label.innerHTML = 'Update needed';
} else { } else {