merged haproxy code in

This commit is contained in:
CHIEFSOFT\ameye
2025-01-30 09:32:05 -05:00
parent a3daebcf51
commit 66cf242fc3
2 changed files with 105 additions and 2 deletions
+2 -1
View File
@@ -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');
+103 -1
View File
@@ -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 "<pre>CFGVER=$cfgver0\n($status_code2) $result\nCFGVER=$cfgver1</pre>";
}
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<br>\n", curl_errno($ch), htmlspecialchars(curl_error($ch)));
}
// Debug
//rewind($streamVerboseHandle);
//$verboseLog = stream_get_contents($streamVerboseHandle);
//$result .= "\ncUrl verbose information:\n<pre>" . htmlspecialchars($verboseLog) . "</pre>\n";
//$result .= "<pre>$payload</pre>\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');
}
}