From 66cf242fc302bb6c63ea8e1f23a4ad39320ea289 Mon Sep 17 00:00:00 2001 From: "CHIEFSOFT\\ameye" Date: Thu, 30 Jan 2025 09:32:05 -0500 Subject: [PATCH] merged haproxy code in --- app/Config/Routes.php | 3 +- app/Controllers/Provision.php | 104 +++++++++++++++++++++++++++++++++- 2 files changed, 105 insertions(+), 2 deletions(-) diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 55fd277..3f2d1fd 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -11,5 +11,6 @@ $routes->get('/provision/prepare', 'Provision::prepareProvision'); $routes->get('/provision/update', 'Provision::updateProvision'); $routes->get('/provision/release', 'Provision::releaseProvision'); $routes->get('/provision/target', 'Provision::directProvision'); -$routes->get('/provision/demo', 'Provision::demo'); +//$routes->get('/provision/demo', 'Provision::demo'); +$routes->get('/provision/haproxy', 'Provision::haproxy'); diff --git a/app/Controllers/Provision.php b/app/Controllers/Provision.php index f222324..5fc4fc9 100644 --- a/app/Controllers/Provision.php +++ b/app/Controllers/Provision.php @@ -313,7 +313,7 @@ class Provision extends BaseController } public function releaseProvision(){ - $rsyncPass = "May12002!x"; + $rsyncPass = "******noNEDD****"; $remote_composer_path = "chiefsoft@10.0.0.32:/home/chiefsoft/MermsProvision/ANSIBLE/parts/"; $partMachineLocal = "/home/chiefsoft/MermsProvision/ANSIBLE/parts/"; $ansibleToken = $this->ansibleLogin(); @@ -503,4 +503,106 @@ class Provision extends BaseController } + + public function haproxy() { + $base_url = 'http://172.16.4.99:5555'; + $username = 'admin'; + $password = 'Hapr0xy001'; + + list($status_code1, $cfgver) = $this->getHaProxyCfgVer($base_url,$username,$password); + $cfgver0 = trim($cfgver); + + // Add backend + /* +# Add backend +# https://www.haproxy.com/documentation/dataplaneapi/community/?v=v3#post-/services/haproxy/configuration/backends +curl -XPOST --user admin:Hapr0xy001 \ +-H 'Content-Type: application/json' -H 'Accept: application/json' \ +-d '{ + "name": "backend'$CFGVER'", + "mode": "http", + "http_connection_mode": "httpclose", + "forwardfor": { + "enabled": "enabled" + }, + "compression": { + "algorithms": ["gzip"], + "types": ["text/html", "text/plain", "text/css", "text/javascript"] + } +}' \ +"http://172.16.4.99:5555/v3/services/haproxy/configuration/backends?version=$CFGVER" > backend.txt + */ + $data = [ + "name" => "backend".$cfgver0, + "mode" => "http", + "http_connection_mode" => "httpclose", + "forwardfor" => [ + "enabled" => "enabled" + ], + "compression" => [ + "algorithms" => ["gzip"], + "types" => ["text/html", "text/plain", "text/css", "text/javascript"] + ] + ]; + $uri = '/v3/services/haproxy/configuration/backends?version=' . $cfgver0; + list($status_code2, $result) = $this->getHaProxyPost($base_url,$username,$password,$uri,$data); + + list($status_code3, $cfgver) = $this->getHaProxyCfgVer($base_url,$username,$password); + $cfgver1 = trim($cfgver); + + return "
CFGVER=$cfgver0\n($status_code2) $result\nCFGVER=$cfgver1
"; + } + + private function getHaproxyPost($base_url,$username,$password,$uri,$data) { + $url = $base_url . $uri; + $payload = json_encode($data); + $headers = array( + 'Content-Type:application/json', + 'Authorization: Basic '. base64_encode("$username:$password") // <--- + ); + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_TIMEOUT, 30); //timeout after 30 seconds + curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); + curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_setopt($ch, CURLOPT_POSTFIELDS, $payload); + curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); + // Debug + //curl_setopt($ch, CURLOPT_VERBOSE, true); + //$streamVerboseHandle = fopen('php://temp', 'w+'); + //curl_setopt($ch, CURLOPT_STDERR, $streamVerboseHandle); + // End Debug + $result = curl_exec ($ch); + $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); //get status code + if ($result === FALSE) { + $result = sprintf("cUrl error (#%d): %s
\n", curl_errno($ch), htmlspecialchars(curl_error($ch))); + } + // Debug + //rewind($streamVerboseHandle); + //$verboseLog = stream_get_contents($streamVerboseHandle); + //$result .= "\ncUrl verbose information:\n
" . htmlspecialchars($verboseLog) . "
\n"; + //$result .= "
$payload
\n"; + // End Debug + curl_close ($ch); + return [$status_code, $result]; + } + + private function getHaproxyGet($base_url,$username,$password,$uri) { + $url = $base_url . $uri; + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL,$url); + curl_setopt($ch, CURLOPT_TIMEOUT, 30); //timeout after 30 seconds + curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); + curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); + $result = curl_exec ($ch); + $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); //get status code + curl_close ($ch); + return [$status_code, $result]; + } + + private function getHaproxyCfgVer($base_url,$username,$password) { + return $this->getHaproxyGet($base_url,$username,$password,'/v3/services/haproxy/configuration/version'); + } + }