From 903ed5413cf139ef8069ee0f077c886b2b2c28d0 Mon Sep 17 00:00:00 2001 From: jfontaine35 <76435797+jfontaine35@users.noreply.github.com> Date: Fri, 11 Mar 2022 17:48:36 +0100 Subject: [PATCH] Add files via upload --- DB.php | 26 ++++ H3campus-dev.php | 273 +++++++++++++++++++++++++++++++++ H3campus.php | 356 +++++++++++++++++++++++++++++++++++++++++++ H3campus2.php | 242 +++++++++++++++++++++++++++++ PS_Paris.php | 169 +++++++++++++++++++++ PS_Poissy.php | 168 +++++++++++++++++++++ WPC.php | 57 +++++++ WP_Paris.php | 175 +++++++++++++++++++++ WP_Poissy.php | 175 +++++++++++++++++++++ WP_Poissy2.php | 200 ++++++++++++++++++++++++ accueil.php | 19 +++ fonction.php | 60 ++++++++ index.html | 368 +++++++++++++++++++++++++++++++++++++++++++++ loader.gif | Bin 0 -> 7247 bytes menu.php | 333 ++++++++++++++++++++++++++++++++++++++++ ports.php | 11 ++ progress.js | 40 +++++ progress_style.css | 53 +++++++ readme.md | 7 + security.jpeg | Bin 0 -> 43077 bytes sql.php | 20 +++ webtools.php | 4 + 22 files changed, 2756 insertions(+) create mode 100644 DB.php create mode 100644 H3campus-dev.php create mode 100644 H3campus.php create mode 100644 H3campus2.php create mode 100644 PS_Paris.php create mode 100644 PS_Poissy.php create mode 100644 WPC.php create mode 100644 WP_Paris.php create mode 100644 WP_Poissy.php create mode 100644 WP_Poissy2.php create mode 100644 accueil.php create mode 100644 fonction.php create mode 100644 index.html create mode 100644 loader.gif create mode 100644 menu.php create mode 100644 ports.php create mode 100644 progress.js create mode 100644 progress_style.css create mode 100644 readme.md create mode 100644 security.jpeg create mode 100644 sql.php create mode 100644 webtools.php diff --git a/DB.php b/DB.php new file mode 100644 index 0000000..eab85c4 --- /dev/null +++ b/DB.php @@ -0,0 +1,26 @@ + + + + Cours PHP / MySQL + + + + +

Bases de données MySQL

+ connect_error){ + die('Erreur : ' .$conn->connect_error); + } + echo 'Connexion réussie'; + ?> + + diff --git a/H3campus-dev.php b/H3campus-dev.php new file mode 100644 index 0000000..1268ec8 --- /dev/null +++ b/H3campus-dev.php @@ -0,0 +1,273 @@ + + + + + Serveurs BTS NDRC + + + + + + + + +
+

Service Informatique H3 Campus



+ + + if(array_key_exists('Reset', $_POST)) { FnReset($host); } + if(array_key_exists('NameWP', $_POST)) { FnCreateWP($host); } + if(array_key_exists('WP_X', $_POST)) { FnDeleteWP($host); } + if(array_key_exists('NamePresta', $_POST)) { FnCreatePresta($host); } + if(array_key_exists('Presta_X', $_POST)) { FnDeletePresta($host); } + + /**************************************** WORDPRESS function PHP **************************************** */ + function FnCreateWP($hostaddr) { + if ($_POST['NameWP']==="cancel") {exit;} + /* Variables */ + $port=8000; //port de départ... + $dockerlxc="/root/WP/".$_POST["NameWP"].".yml"; //Nom fichier compose + $sqlfile ="/root/WP/sql.sql"; + + //recherche du premier port disponible + $connection = @fsockopen($hostaddr, $port); + while (is_resource($connection)) { $port++; fclose($connection);$connection = @fsockopen('192.168.150.233', $port,$errno,$errstr,10); } + + + /* Création des fichiers compose et db */ + $Result=ssh_command($hostaddr,"cp /root/WP/wp.yml.save ".$dockerlxc); + $Result=ssh_command($hostaddr,"sed -i 's/wordpress1/".$_POST["NameWP"]."/g' ".$dockerlxc); + $Result=ssh_command($hostaddr,"sed -i 's/8001/$port/g' ".$dockerlxc); + $Result=ssh_command($hostaddr,"echo 'CREATE DATABASE IF NOT EXISTS ".$_POST["NameWP"].";'> $sqlfile" ); + $Result=ssh_command($hostaddr,"echo 'GRANT ALL PRIVILEGES ON ".$_POST["NameWP"].".* TO 'wp_user'@'localhost';'>> $sqlfile"); + + /* Création de la table correspondante dans la base de donnée */ + $Result=ssh_command($hostaddr,"docker-compose -f /root/WP/db.yml exec -T db mysql -uroot -plinux wordpress < $sqlfile"); + sleep(15); + //création du conteneur docker... + $Result=ssh_command($hostaddr, "export COMPOSE_HTTP_TIMEOUT=120 && docker-compose -f $dockerlxc up -d &"); + sleep(20); + + // Vide l'instruction de créer une machine et puis refresh + unset($_POST["NameWP"]); + header("Refresh:0"); + } + + function FnDeleteWP($host) { + $dockerName=$_POST['WP_X']; + if ($dockerName==="cancel") {exit;} + $Result=ssh_command($host, "docker stop $dockerName"); + $Result=ssh_command($host, "docker rm $dockerName"); + header("Refresh:0"); + } + /**************************************** PRESTASHOP function PHP **************************************** */ + function FnCreatePresta($hostaddr) { + $dockerName=$_POST['NamePresta']; + if ($dockerName==="cancel") {exit;} + /* Variables */ + $port=7000; //port de départ... + $dockerlxc="/root/PS/$dockerName.yml"; //Nom fichier compose + $sqlfile ="/root/PS/sql.sql"; + + //recherche du premier port disponible + $connection = @fsockopen($hostaddr, $port); + while (is_resource($connection)) { $port++; fclose($connection);$connection = @fsockopen($hostaddr, $port,$errno,$errstr,10); } + + + /* Création des fichiers compose et db */ + $Result=ssh_command($hostaddr,"cp /root/PS/ps.yml.save ".$dockerlxc); + $Result=ssh_command($hostaddr,"sed -i 's/prestashop1/$dockerName/g' ".$dockerlxc); + $Result=ssh_command($hostaddr,"sed -i 's/8001/$port/g' ".$dockerlxc); + + //création du conteneur docker... + $Result=ssh_command($hostaddr, "export DOCKER_CLIENT_TIMEOUT=120 && export DOCKER_HTTP_TIMEOUT=120"); + $Result=ssh_command($hostaddr, "export COMPOSE_HTTP_TIMEOUT=120 && docker-compose -f $dockerlxc up -d &"); + sleep(20); + + // Vide l'instruction de créer une machine et puis refresh + unset($_POST["NamePresta"]); + header("Refresh:0"); + } + + function FnDeletePresta($host) { + $dockerName=$_POST['Presta_X']; + $dockerlxc="/root/PS/$dockerName.yml"; //Nom fichier compose + if ($dockerName==="cancel") {exit;} + $Result=ssh_command($host, "docker stop $dockerName"); + $Result=ssh_command($host, "docker rm $dockerName"); + header("Refresh:0"); + } + ?> + + +

+ + + + +
+
+
+ + + +
+
+ +

Wordpress - Prestashop

+ + + +NULL) and ($Result2<>NULL)) +{ + echo << + Serveurs de bases de données + Bases de données Wordpress & Prestashop fonctionnelles + + + TABLEAU; +} +else echo "Attention les bases de données ne sont pas lancés correctement !

"; +?> + + + + + + + +
"; + } + } + } + ?> +
Serveurs Wordpress +
+ + + + +
+
".$value ." Accéder à $value
+ + + + + + +
"; + } + } + } + ?> +
Serveurs Prestashop +
+ + + + +
+
".$value ." Accéder à $value
+ +
+ + + + +




+

+

+ +
+

+ + + + +HTML; +?> + + + diff --git a/H3campus.php b/H3campus.php new file mode 100644 index 0000000..2350fec --- /dev/null +++ b/H3campus.php @@ -0,0 +1,356 @@ + + + + + Serveurs BTS NDRC + + + + + + + + +
+

Service Informatique H3 Campus



+ + + if(array_key_exists('Reset', $_POST)) { FnReset($host); } + //Paris + if(array_key_exists('NameWP', $_POST)) { FnCreateWP($host); } + if(array_key_exists('WP_X', $_POST)) { FnDeleteWP($host); } + if(array_key_exists('NamePresta', $_POST)) { FnCreatePresta($host); } + if(array_key_exists('Presta_X', $_POST)) { FnDeletePresta($host); } + //Poissy + if(array_key_exists('NameWP_POI', $_POST)) { FnCreateWP($host_poi); } + if(array_key_exists('WP_X_POI', $_POST)) { FnDeleteWP($host_poi); } + if(array_key_exists('NamePresta_POI', $_POST)) { FnCreatePresta($host_poi); } + if(array_key_exists('Presta_X_POI', $_POST)) { FnDeletePresta($host_poi); } + + /**************************************** WORDPRESS function PHP POISSY **************************************** */ + function FnCreateWP_POI($hostaddr) { + if ($_POST['NameWP_POI']==="cancel") {exit;} + /* Variables */ + $port=8000; //port de départ... + $dockerName= $_POST["NameWP_POI"]; + $dockerlxc="/root/WP/$dockerName.yml"; //Nom fichier compose + $sqlfile ="/root/WP/sql/$dockerName-sql.sql"; + + + //recherche du premier port disponible + $connection = @fsockopen($hostaddr, $port); + while (is_resource($connection)) { $port++; fclose($connection);$connection = @fsockopen($hostaddr, $port,$errno,$errstr,10); } + + + /* Création des fichiers compose et db */ + $Result=ssh_command($hostaddr,"cp /root/WP/wp.yml.save ".$dockerlxc); + $Result=ssh_command($hostaddr,"sed -i 's/wordpress1/$dockerName/g' ".$dockerlxc); + $Result=ssh_command($hostaddr,"sed -i 's/8001/$port/g' ".$dockerlxc); + $Result=ssh_command($hostaddr,"echo 'CREATE DATABASE IF NOT EXISTS $dockerName;'> $sqlfile" ); + $Result=ssh_command($hostaddr,"echo 'GRANT ALL PRIVILEGES ON $dockerName.* TO 'wp_user'@'localhost';'>> $sqlfile >$sqlfile.log"); + + /* Création de la table correspondante dans la base de donnée */ + $Result=ssh_command($hostaddr,"docker-compose -f /root/WP/db.yml exec -T db mysql -uroot -plinux wordpress < $sqlfile"); + sleep(10); + //création du conteneur docker... + $Result=ssh_command($hostaddr, "export COMPOSE_HTTP_TIMEOUT=240 && docker-compose -f $dockerlxc up -d >$dockerlxc.log"); + + + // Vide l'instruction de créer une machine et puis refresh + unset($_POST["NameWP_POI"]); + header("Refresh:0"); + } + + function FnDeleteWP_POI($host) { + $dockerName=$_POST['WP_X_POI']; + if ($dockerName==="cancel") {exit;} + $Result=ssh_command($host, "docker stop $dockerName"); + $Result=ssh_command($host, "docker rm $dockerName"); + header("Refresh:0"); + } + /**************************************************************************************************************** */ + + /**************************************** PRESTASHOP function PHP POISSY **************************************** */ + function FnCreatePresta_POI($hostaddr) { + $dockerName=$_POST['NamePresta_POI']; + if ($dockerName==="cancel") {exit;} + /* Variables */ + $port=7000; //port de départ... + $dockerlxc="/root/PS/$dockerName.yml"; //Nom fichier compose + $sqlfile ="/root/PS/sql.log"; + + //recherche du premiephp refresh page port disponible + $connection = @fsockopen($hostaddr, $port); + while (is_resource($connection)) { $port++; fclose($connection);$connection = @fsockopen($hostaddr, $port,$errno,$errstr,10); } + + + /* Création des fichiers compose et db */ + $Result=ssh_command($hostaddr,"cp /root/PS/ps.yml.save ".$dockerlxc); + $Result=ssh_command($hostaddr,"sed -i 's/prestashop1/$dockerName/g' ".$dockerlxc); + $Result=ssh_command($hostaddr,"sed -i 's/8001/$port/g' ".$dockerlxc); + + //création du conteneur docker... + $Result=ssh_command($hostaddr, "export DOCKER_CLIENT_TIMEOUT=120 && export DOCKER_HTTP_TIMEOUT=120"); + $Result=ssh_command($hostaddr, "export COMPOSE_HTTP_TIMEOUT=120 && docker-compose -f $dockerlxc up -d &"); + sleep(20); + + // Vide l'instruction de créer une machine et puis refresh + unset($_POST["NamePresta_POI"]); + header("Refresh:0"); + } + + function FnDeletePresta_POI($host) { + $dockerName=$_POST['Presta_X_POI']; + $dockerlxc="/root/PS/$dockerName.yml"; //Nom fichier compose + if ($dockerName==="cancel") {exit;} + $Result=ssh_command($host, "docker stop $dockerName"); + $Result=ssh_command($host, "docker rm $dockerName"); + header("Refresh:0"); + } + + /************************************************************************************************************** */ + + /**************************************** WORDPRESS function PHP PARIS **************************************** */ + function FnCreateWP($hostaddr) { + $dockerName=$_POST['NameWP']; + if ($dockerName==="cancel") {exit;} + /* Variables */ + $port=8000; //port de départ... + $dockerlxc="/root/WP/$dockerName.yml"; //Nom fichier compose + $sqlfile ="/root/WP/sql/$dockerName-sql.log"; + + //recherche du premier port disponible + $connection = @fsockopen($hostaddr, $port); + while (is_resource($connection)) { $port++; fclose($connection);$connection = @fsockopen($hostaddr, $port,$errno,$errstr,10); } + + + /* Création des fichiers compose et db */ + $Result=ssh_command($hostaddr,"cp /root/WP/wp.yml.save ".$dockerlxc); + $Result=ssh_command($hostaddr,"sed -i 's/wordpress1/$dockerName/g' ".$dockerlxc); + $Result=ssh_command($hostaddr,"sed -i 's/8001/$port/g' ".$dockerlxc); + $Result=ssh_command($hostaddr,"echo 'CREATE DATABASE IF NOT EXISTS $dockerName;'> $sqlfile" ); + $Result=ssh_command($hostaddr,"echo 'GRANT ALL PRIVILEGES ON $dockerName.* TO 'wp_user'@'localhost';'>> $sqlfile"); + + /* Création de la table correspondante dans la base de donnée */ + $Result=ssh_command($hostaddr,"docker-compose -f /root/WP/db.yml exec -T db mysql -uroot -plinux wordpress < $sqlfile >$sqlfile.log"); + sleep(10); + //création du conteneur docker... + $Result=ssh_command($hostaddr, "export COMPOSE_HTTP_TIMEOUT=240 && docker-compose -f $dockerlxc up -d >$dockerlxc.log"); + + // Vide l'instruction de créer une machine et puis refresh + unset($_POST["NameWP"]); + header("Refresh:0"); + } + + function FnDeleteWP($host) { + $dockerName=$_POST['WP_X']; + if ($dockerName==="cancel") {exit;} + $Result=ssh_command($host, "docker stop $dockerName"); + $Result=ssh_command($host, "docker rm $dockerName"); + header("Refresh:0"); + } +/*************************************************************************************************************** */ + +/**************************************** PRESTASHOP function PHP PARIS **************************************** */ +function FnCreatePresta($hostaddr) { + $dockerName=$_POST['NamePresta']; + if ($dockerName==="cancel") {exit;} + /* Variables */ + $port=7000; //port de départ... + $dockerlxc="/root/PS/$dockerName.yml"; //Nom fichier compose + $sqlfile ="/root/PS/sql.sql"; + + //recherche du premier port disponible + $connection = @fsockopen($hostaddr, $port); + while (is_resource($connection)) { $port++; fclose($connection);$connection = @fsockopen($hostaddr, $port,$errno,$errstr,10); } + + + /* Création des fichiers compose et db */ + $Result=ssh_command($hostaddr,"cp /root/PS/ps.yml.save ".$dockerlxc); + $Result=ssh_command($hostaddr,"sed -i 's/prestashop1/$dockerName/g' ".$dockerlxc); + $Result=ssh_command($hostaddr,"sed -i 's/8001/$port/g' ".$dockerlxc); + + //création du conteneur docker... + $Result=ssh_command($hostaddr, "export DOCKER_CLIENT_TIMEOUT=120 && export DOCKER_HTTP_TIMEOUT=120"); + $Result=ssh_command($hostaddr, "export COMPOSE_HTTP_TIMEOUT=120 && docker-compose -f $dockerlxc up -d &"); + sleep(20); + + // Vide l'instruction de créer une machine et puis refresh + unset($_POST["NamePresta"]); + header("Refresh:0"); + } + +function FnDeletePresta($host) { + $dockerName=$_POST['Presta_X']; + $dockerlxc="/root/PS/$dockerName.yml"; //Nom fichier compose + if ($dockerName==="cancel") {exit;} + $Result=ssh_command($host, "docker stop $dockerName"); + $Result=ssh_command($host, "docker rm $dockerName"); + header("Refresh:0"); + } + +// ******************************************************************************************************************* + +?> + + +

+ +

Wordpress - Prestashop

+ + + +NULL) and ($Result2<>NULL)) +{ + echo << + Serveurs de bases de données + Bases de données Wordpress & Prestashop fonctionnelles + + + TABLEAU; +} +else echo "Attention les bases de données ne sont pas lancés correctement !

"; +?> +

+ + + + + + + +
+ + + + + + + + "; + echo ""; + echo ""; + } + } + } + ?> +
PARIS
Nom du Wordpress +
+ + + + +
+
".$value ." Accéder à $value
+
+ + + + + + + + "; + echo ""; + echo ""; + } + } + } + ?> +
POISSY
Nom du Wordpress +
+ + + + +
+
".$value ." Accéder à $value
+ +
+ +
+ + + + +




+ + + + + +HTML; +?> + + + diff --git a/H3campus2.php b/H3campus2.php new file mode 100644 index 0000000..2367fd9 --- /dev/null +++ b/H3campus2.php @@ -0,0 +1,242 @@ + + + + + Serveurs BTS NDRC + + + + + + + + +
+

Service Informatique H3 Campus



+ + + if(array_key_exists('Reset', $_POST)) { FnReset($host); } + if(array_key_exists('NameWP', $_POST)) { FnCreateWP($host); } + if(array_key_exists('WP_X', $_POST)) { FnDeleteWP($host); } + if(array_key_exists('NamePresta', $_POST)) { FnCreatePresta($host); } + if(array_key_exists('Presta_X', $_POST)) { FnDeletePresta($host); } + + /**************************************** WORDPRESS function PHP **************************************** */ + function FnCreateWP($hostaddr) { + if ($_POST['NameWP']==="cancel") {exit;} + /* Variables */ + $port=8000; //port de départ... + $dockerlxc="/root/WP/".$_POST["NameWP"].".yml"; //Nom fichier compose + $sqlfile ="/root/WP/sql.sql"; + + //recherche du premier port disponible + $connection = @fsockopen($hostaddr, $port); + while (is_resource($connection)) { $port++; fclose($connection);$connection = @fsockopen('192.168.150.233', $port,$errno,$errstr,10); } + + + /* Création des fichiers compose et db */ + $Result=ssh_command($hostaddr,"cp /root/WP/wp.yml.save ".$dockerlxc); + $Result=ssh_command($hostaddr,"sed -i 's/wordpress1/".$_POST["NameWP"]."/g' ".$dockerlxc); + $Result=ssh_command($hostaddr,"sed -i 's/8001/$port/g' ".$dockerlxc); + $Result=ssh_command($hostaddr,"echo 'CREATE DATABASE IF NOT EXISTS ".$_POST["NameWP"].";'> $sqlfile" ); + $Result=ssh_command($hostaddr,"echo 'GRANT ALL PRIVILEGES ON ".$_POST["NameWP"].".* TO 'wp_user'@'localhost';'>> $sqlfile"); + + /* Création de la table correspondante dans la base de donnée */ + $Result=ssh_command($hostaddr,"docker-compose -f /root/WP/db.yml exec -T db mysql -uroot -plinux wordpress < $sqlfile"); + sleep(15); + //création du conteneur docker... + $Result=ssh_command($hostaddr, "export COMPOSE_HTTP_TIMEOUT=120 && docker-compose -f $dockerlxc up -d &"); + sleep(20); + + // Vide l'instruction de créer une machine et puis refresh + unset($_POST["NameWP"]); + header("Refresh:0"); + } + + function FnDeleteWP($host) { + $dockerName=$_POST['WP_X']; + if ($dockerName==="cancel") {exit;} + $Result=ssh_command($host, "docker stop $dockerName"); + $Result=ssh_command($host, "docker rm $dockerName"); + header("Refresh:0"); + } + /**************************************** PRESTASHOP function PHP **************************************** */ + function FnCreatePresta($hostaddr) { + $dockerName=$_POST['NamePresta']; + if ($dockerName==="cancel") {exit;} + /* Variables */ + $port=7000; //port de départ... + $dockerlxc="/root/PS/$dockerName.yml"; //Nom fichier compose + $sqlfile ="/root/PS/sql.sql"; + + //recherche du premier port disponible + $connection = @fsockopen($hostaddr, $port); + while (is_resource($connection)) { $port++; fclose($connection);$connection = @fsockopen($hostaddr, $port,$errno,$errstr,10); } + + + /* Création des fichiers compose et db */ + $Result=ssh_command($hostaddr,"cp /root/PS/ps.yml.save ".$dockerlxc); + $Result=ssh_command($hostaddr,"sed -i 's/prestashop1/$dockerName/g' ".$dockerlxc); + $Result=ssh_command($hostaddr,"sed -i 's/8001/$port/g' ".$dockerlxc); + + //création du conteneur docker... + $Result=ssh_command($hostaddr, "export DOCKER_CLIENT_TIMEOUT=120 && export DOCKER_HTTP_TIMEOUT=120"); + $Result=ssh_command($hostaddr, "export COMPOSE_HTTP_TIMEOUT=120 && docker-compose -f $dockerlxc up -d &"); + sleep(20); + + // Vide l'instruction de créer une machine et puis refresh + unset($_POST["NamePresta"]); + header("Refresh:0"); + } + + function FnDeletePresta($host) { + $dockerName=$_POST['Presta_X']; + $dockerlxc="/root/PS/$dockerName.yml"; //Nom fichier compose + if ($dockerName==="cancel") {exit;} + $Result=ssh_command($host, "docker stop $dockerName"); + $Result=ssh_command($host, "docker rm $dockerName"); + header("Refresh:0"); + } + ?> + + +

+ + + + +
+
+
+ + + +
+
+ +

Wordpress - Prestashop

+ + + +NULL) and ($Result2<>NULL)) +{ + echo << + Serveurs de bases de données + Bases de données Wordpress & Prestashop fonctionnelles + + + TABLEAU; +} +else echo "Attention les bases de données ne sont pas lancés correctement !

"; +?> + + + + + + + +
"; + } + } + } + ?> +
Serveurs Wordpress +
+ + + + +
+
".$value ." Accéder à $value
+ + + +
+ + + + +




+ + + + + +HTML; +?> + + + diff --git a/PS_Paris.php b/PS_Paris.php new file mode 100644 index 0000000..8341b30 --- /dev/null +++ b/PS_Paris.php @@ -0,0 +1,169 @@ + + + + + Serveurs BTS NDRC + + + + + + + + +
+

Service Informatique H3 Campus

+ + + if(array_key_exists('Reset', $_POST)) { FnReset($host); } + if(array_key_exists('NamePresta', $_POST)) { FnCreatePresta($host); } + if(array_key_exists('Presta_X', $_POST)) { FnDeletePresta($host); } + +/**************************************** PRESTASHOP function PHP **************************************** */ +function FnCreatePresta($hostaddr) { + $dockerName=$_POST['NamePresta']; + if ($dockerName==="cancel") {exit;} + /* Variables */ + $port=7000; //port de départ... + $dockerlxc="/root/PS/$dockerName.yml"; //Nom fichier compose + + + //recherche du premier port disponible + $connection = @fsockopen($hostaddr, $port); + while (is_resource($connection)) { $port++; fclose($connection);$connection = @fsockopen($hostaddr, $port,$errno,$errstr,10); } + + + /* Création des fichiers compose et db */ + $Result=ssh_command($hostaddr,"cp /root/PS/ps.yml.save ".$dockerlxc); + $Result=ssh_command($hostaddr,"sed -i 's/prestashop1/$dockerName/g' ".$dockerlxc); + $Result=ssh_command($hostaddr,"sed -i 's/8001/$port/g' ".$dockerlxc); + + //création du conteneur docker... + $Result=ssh_command($hostaddr, "export DOCKER_CLIENT_TIMEOUT=240 && export DOCKER_HTTP_TIMEOUT=240 && export COMPOSE_HTTP_TIMEOUT=240 && docker-compose -f $dockerlxc up -d >PS_$dockerName.log"); + sleep(20); + + // Vide l'instruction de créer une machine et puis refresh + unset($_POST["NamePresta"]); + header("Refresh:0"); + } + +function FnDeletePresta($host) { + $dockerName=$_POST['Presta_X']; + $dockerlxc="/root/PS/$dockerName.yml"; //Nom fichier compose + if ($dockerName==="cancel") {exit;} + $Result=ssh_command($host, "docker stop $dockerName >>PS_$dockerName.log"); + $Result=ssh_command($host, "docker rm $dockerName >>PS_$dockerName.log"); + header("Refresh:0"); + } + ?> + + + +

Prestashop PARIS

+ + + +NULL) +{ + echo << + Serveurs de bases de données + Bases de données Prestashop fonctionnelles + + + TABLEAU; +} +else echo "Attention les bases de données ne sont pas lancées correctement !

"; +?> +
+ + + + + + "; + echo ""; + echo ""; + } + } + } + ?> +
Serveurs Prestashop +
+ + + + +
+
$value Accéder à $value
+ +
+ + + + +




+ +s + + + + +HTML; +?> + + + diff --git a/PS_Poissy.php b/PS_Poissy.php new file mode 100644 index 0000000..e1e08a7 --- /dev/null +++ b/PS_Poissy.php @@ -0,0 +1,168 @@ + + + + + Serveurs BTS NDRC + + + + + + + + +
+

Service Informatique H3 Campus

+ + + if(array_key_exists('Reset', $_POST)) { FnReset($host); } + if(array_key_exists('NamePresta', $_POST)) { FnCreatePresta($host); } + if(array_key_exists('Presta_X', $_POST)) { FnDeletePresta($host); } + +/**************************************** PRESTASHOP function PHP **************************************** */ +function FnCreatePresta($hostaddr) { + $dockerName=$_POST['NamePresta']; + if ($dockerName==="cancel") {exit;} + /* Variables */ + $port=7000; //port de départ... + $dockerlxc="/root/PS/$dockerName.yml"; //Nom fichier compose + + //recherche du premier port disponible + $connection = @fsockopen($hostaddr, $port); + while (is_resource($connection)) { $port++; fclose($connection);$connection = @fsockopen($hostaddr, $port,$errno,$errstr,10); } + + + /* Création des fichiers compose et db */ + $Result=ssh_command($hostaddr,"cp /root/PS/ps.yml.save ".$dockerlxc); + $Result=ssh_command($hostaddr,"sed -i 's/prestashop1/$dockerName/g' ".$dockerlxc); + $Result=ssh_command($hostaddr,"sed -i 's/8001/$port/g' ".$dockerlxc); + + //création du conteneur docker... + $Result=ssh_command($hostaddr, "export DOCKER_CLIENT_TIMEOUT=240 && export DOCKER_HTTP_TIMEOUT=240 && export COMPOSE_HTTP_TIMEOUT=240 && docker-compose -f $dockerlxc up -d >PS_$dockerName.log"); + sleep(20); + + // Vide l'instruction de créer une machine et puis refresh + unset($_POST["NamePresta"]); + header("Refresh:0"); + } + +function FnDeletePresta($host) { + $dockerName=$_POST['Presta_X']; + $dockerlxc="/root/PS/$dockerName.yml"; //Nom fichier compose + if ($dockerName==="cancel") {exit;} + $Result=ssh_command($host, "docker stop $dockerName >>PS_$dockerName.log"); + $Result=ssh_command($host, "docker rm $dockerName >>PS_$dockerName.log"); + header("Refresh:0"); + } + ?> + + + +

Prestashop POISSY

+ + + +NULL) +{ + echo << + Serveurs de bases de données + Bases de données Prestashop fonctionnelles + + + TABLEAU; +} +else echo "Attention les bases de données ne sont pas lancées correctement !

"; +?> +
+ + + + + + + "; + echo ""; + echo ""; + } + } + } + ?> +
Serveurs Prestashop +
+ + + + +
+
$value Accéder à $value
+ +
+ + + + +




+ + + + + +HTML; +?> + + + diff --git a/WPC.php b/WPC.php new file mode 100644 index 0000000..2caf8c4 --- /dev/null +++ b/WPC.php @@ -0,0 +1,57 @@ + + if(array_key_exists('Reset', $_POST)) { FnReset($host); } + //Paris + if(array_key_exists('NameWP', $_POST)) { FnCreateWP($host); } + if(array_key_exists('WP_X', $_POST)) { FnDeleteWP($host); } + +/************************************************************************************************************** */ + +/**************************************** WORDPRESS function PHP PARIS **************************************** */ +function FnCreateWP($hostaddr) { + $dockerName=$_POST['NameWP']; + if ($dockerName==="cancel") {exit;} + /* Variables */ + $port=8000; //port de départ... + $dockerlxc="/root/WP/$dockerName.yml"; //Nom fichier compose + $sqlfile ="/root/WP/sql/$dockerName-sql"; + + //recherche du premier port disponible + $connection = @fsockopen($hostaddr, $port); + while (is_resource($connection)) { $port++; fclose($connection);$connection = @fsockopen($hostaddr, $port,$errno,$errstr,10); } + + + /* Création des fichiers compose et db */ + $Result=ssh_command($hostaddr,"cp /root/WP/wp.yml.save ".$dockerlxc); + $Result=ssh_command($hostaddr,"sed -i 's/wordpress1/$dockerName/g' ".$dockerlxc); + $Result=ssh_command($hostaddr,"sed -i 's/8001/$port/g' ".$dockerlxc); + $Result=ssh_command($hostaddr,"echo 'CREATE DATABASE IF NOT EXISTS $dockerName;'> $sqlfile" ); + $Result=ssh_command($hostaddr,"echo 'GRANT ALL PRIVILEGES ON $dockerName.* TO 'wp_user'@'localhost';'>> $sqlfile"); + + /* Création de la table correspondante dans la base de donnée */ + $Result=ssh_command($hostaddr,"docker-compose -f /root/WP/db.yml exec -T db mysql -uroot -plinux wordpress < $sqlfile >$sqlfile.log"); + sleep(10); + //création du conteneur docker... + $Result=ssh_command($hostaddr, "export COMPOSE_HTTP_TIMEOUT=240 && docker-compose -f $dockerlxc up -d >$dockerlxc.log"); + + // Vide l'instruction de créer une machine et puis refresh + unset($_POST["NameWP"]); + header("Refresh:0"); +} + +function FnDeleteWP($host) { + $dockerName=$_POST['WP_X']; + if ($dockerName==="cancel") {exit;} + $Result=ssh_command($host, "docker stop $dockerName"); + $Result=ssh_command($host, "docker rm $dockerName"); + header("Refresh:0"); +} + +/*************************************************************************************************************** */ +?> \ No newline at end of file diff --git a/WP_Paris.php b/WP_Paris.php new file mode 100644 index 0000000..624342f --- /dev/null +++ b/WP_Paris.php @@ -0,0 +1,175 @@ + + + + + Serveurs BTS NDRC + + + + + + + + +
+

Service Informatique H3 Campus



+ + + if(array_key_exists('Reset', $_POST)) { FnReset($host); } + //Paris + if(array_key_exists('NameWP', $_POST)) { FnCreateWP($host); } + if(array_key_exists('WP_X', $_POST)) { FnDeleteWP($host); } + +/************************************************************************************************************** */ + +/**************************************** WORDPRESS function PHP PARIS **************************************** */ +function FnCreateWP($hostaddr) { + $dockerName=$_POST['NameWP']; + if ($dockerName==="cancel") {exit;} + /* Variables */ + $port=8000; //port de départ... + $dockerlxc="/root/WP/$dockerName.yml"; //Nom fichier compose + $sqlfile ="/root/WP/sql/$dockerName-sql"; + + //recherche du premier port disponible + $connection = @fsockopen($hostaddr, $port); + while (is_resource($connection)) { $port++; fclose($connection);$connection = @fsockopen($hostaddr, $port,$errno,$errstr,10); } + + + /* Création des fichiers compose et db */ + $Result=ssh_command($hostaddr,"cp /root/WP/wp.yml.save ".$dockerlxc); + $Result=ssh_command($hostaddr,"sed -i 's/wordpress1/$dockerName/g' ".$dockerlxc); + $Result=ssh_command($hostaddr,"sed -i 's/8001/$port/g' ".$dockerlxc); + $Result=ssh_command($hostaddr,"echo 'CREATE DATABASE IF NOT EXISTS $dockerName;'> $sqlfile" ); + $Result=ssh_command($hostaddr,"echo 'GRANT ALL PRIVILEGES ON $dockerName.* TO 'wp_user'@'localhost';'>> $sqlfile"); + + /* Création de la table correspondante dans la base de donnée */ + $Result=ssh_command($hostaddr,"docker-compose -f /root/WP/db.yml exec -T db mysql -uroot -plinux wordpress < $sqlfile >$sqlfile.log"); + sleep(10); + //création du conteneur docker... + $Result=ssh_command($hostaddr, "export COMPOSE_HTTP_TIMEOUT=240 && docker-compose -f $dockerlxc up -d >$dockerlxc.log"); + + // Vide l'instruction de créer une machine et puis refresh + unset($_POST["NameWP"]); + header("Refresh:0"); +} + +function FnDeleteWP($host) { + $dockerName=$_POST['WP_X']; + if ($dockerName==="cancel") {exit;} + $Result=ssh_command($host, "docker stop $dockerName"); + $Result=ssh_command($host, "docker rm $dockerName"); + header("Refresh:0"); +} + +/*************************************************************************************************************** */ +?> + +

Wordpress Paris

+ + + +NULL) +{ + echo << + Serveurs de bases de données + Bases de données Wordpress fonctionnelles + + + TABLEAU; +} +else echo "Attention les bases de données ne sont pas lancées correctement !

"; +?> + +

+ + + + + + + + + + + "; + echo ""; + echo ""; + } + } + } + ?> +
PARIS
Nom du Wordpress +
+ + + + +
+
$value Accéder à $value
+ + +
+ + + + +




+ + + + + +HTML; +?> + + + diff --git a/WP_Poissy.php b/WP_Poissy.php new file mode 100644 index 0000000..ee953b5 --- /dev/null +++ b/WP_Poissy.php @@ -0,0 +1,175 @@ + + + + + Serveurs BTS NDRC + + + + + + + + +
+

Service Informatique H3 Campus



+ + + if(array_key_exists('Reset', $_POST)) { FnReset($host); } + //Poissy + if(array_key_exists('NameWP', $_POST)) { FnCreateWP($host); } + if(array_key_exists('WP_X', $_POST)) { FnDeleteWP($host); } + +/************************************************************************************************************** */ + +/**************************************** WORDPRESS function PHP PARIS **************************************** */ +function FnCreateWP($hostaddr) { + $dockerName=$_POST['NameWP']; + if ($dockerName==="cancel") {exit;} + /* Variables */ + $port=8000; //port de départ... + $dockerlxc="/root/WP/$dockerName.yml"; //Nom fichier compose + $sqlfile ="/root/WP/sql/$dockerName-sql"; + + //recherche du premier port disponible + $connection = @fsockopen($hostaddr, $port); + while (is_resource($connection)) { $port++; fclose($connection);$connection = @fsockopen($hostaddr, $port,$errno,$errstr,10); } + + + /* Création des fichiers compose et db */ + $Result=ssh_command($hostaddr,"cp /root/WP/wp.yml.save ".$dockerlxc); + $Result=ssh_command($hostaddr,"sed -i 's/wordpress1/$dockerName/g' ".$dockerlxc); + $Result=ssh_command($hostaddr,"sed -i 's/8001/$port/g' ".$dockerlxc); + $Result=ssh_command($hostaddr,"echo 'CREATE DATABASE IF NOT EXISTS $dockerName;'> $sqlfile" ); + $Result=ssh_command($hostaddr,"echo 'GRANT ALL PRIVILEGES ON $dockerName.* TO 'wp_user'@'localhost';'>> $sqlfile"); + + /* Création de la table correspondante dans la base de donnée */ + $Result=ssh_command($hostaddr,"docker-compose -f /root/WP/db.yml exec -T db mysql -uroot -plinux wordpress < $sqlfile >$sqlfile.log"); + sleep(10); + //création du conteneur docker... + $Result=ssh_command($hostaddr, "export COMPOSE_HTTP_TIMEOUT=240 && docker-compose -f $dockerlxc up -d >$dockerlxc.log"); + + // Vide l'instruction de créer une machine et puis refresh + unset($_POST["NameWP"]); + header("Refresh:0"); +} + +function FnDeleteWP($host) { + $dockerName=$_POST['WP_X']; + if ($dockerName==="cancel") {exit;} + $Result=ssh_command($host, "docker stop $dockerName"); + $Result=ssh_command($host, "docker rm $dockerName"); + header("Refresh:0"); +} + +/*************************************************************************************************************** */ +?> + +

Wordpress Poissy

+ + + +NULL) +{ + echo << + Serveurs de bases de données + Bases de données Wordpress fonctionnelles + + + TABLEAU; +} +else echo "Attention les bases de données ne sont pas lancées correctement !

"; +?> + +

+ + + + + + + + + + + "; + echo ""; + echo ""; + } + } + } + ?> +
POISSY
Nom du Wordpress +
+ + + + +
+
$value Accéder à $value
+ + +
+ + + + +




+ + + + + +HTML; +?> + + + diff --git a/WP_Poissy2.php b/WP_Poissy2.php new file mode 100644 index 0000000..b2c56f4 --- /dev/null +++ b/WP_Poissy2.php @@ -0,0 +1,200 @@ + + + + + Serveurs BTS NDRC + + + + + + + + + + + + + + +
+ +

Service Informatique H3 Campus



+ + + + + if(array_key_exists('Reset', $_POST)) { FnReset($host); } + //Paris + if(array_key_exists('NameWP', $_POST)) { FnCreateWP($host); } + if(array_key_exists('WP_X', $_POST)) { FnDeleteWP($host); } + +/************************************************************************************************************** */ + +/**************************************** WORDPRESS function PHP PARIS **************************************** */ +function FnCreateWP($hostaddr) { + $dockerName=$_POST['NameWP']; + if ($dockerName==="cancel") {exit;} + /* Variables */ + $port=8000; //port de départ... + $dockerlxc="/root/WP/$dockerName.yml"; //Nom fichier compose + $sqlfile ="/root/WP/sql/$dockerName-sql"; + + + //recherche du premier port disponible + $connection = @fsockopen($hostaddr, $port); + while (is_resource($connection)) { $port++; fclose($connection);$connection = @fsockopen($hostaddr, $port,$errno,$errstr,10); } + + + /* Création des fichiers compose et db */ + $Result=ssh_command($hostaddr,"cp /root/WP/wp.yml.save ".$dockerlxc); + $Result=ssh_command($hostaddr,"sed -i 's/wordpress1/$dockerName/g' ".$dockerlxc); + $Result=ssh_command($hostaddr,"sed -i 's/8001/$port/g' ".$dockerlxc); + $Result=ssh_command($hostaddr,"echo 'CREATE DATABASE IF NOT EXISTS $dockerName;'> $sqlfile" ); + $Result=ssh_command($hostaddr,"echo 'GRANT ALL PRIVILEGES ON $dockerName.* TO 'wp_user'@'localhost';'>> $sqlfile"); + + /* Création de la table correspondante dans la base de donnée */ + $Result=ssh_command($hostaddr,"docker-compose -f /root/WP/db.yml exec -T db mysql -uroot -plinux wordpress < $sqlfile >$sqlfile.log"); + sleep(10); + //création du conteneur docker... + $Result=ssh_command($hostaddr, "export COMPOSE_HTTP_TIMEOUT=240 && docker-compose -f $dockerlxc up -d >$dockerlxc.log"); + + // Vide l'instruction de créer une machine et puis refresh + unset($_POST["NameWP"]); + header("Refresh:0"); +} + +function FnDeleteWP($host) { + $dockerName=$_POST['WP_X']; + if ($dockerName==="cancel") {exit;} + $Result=ssh_command($host, "docker stop $dockerName"); + $Result=ssh_command($host, "docker rm $dockerName"); + header("Refresh:0"); +} + +/*************************************************************************************************************** */ +?> + + + +
+
+ + Chargement en cours... +
+ +
+ +
+

Wordpress Poissy

+ + + +NULL) +{ + echo << + Serveurs de bases de données + Bases de données Wordpress fonctionnelles + + + TABLEAU; +} +else echo "Attention les bases de données ne sont pas lancés correctement !

"; +?> + +

+ + + + + + + + + + + "; + echo ""; + echo ""; + } + } + } + ?> +
POISSY
Nom du Wordpress +
+ + + + +
+
$value Accéder à $value
+ + +
+ + + +




+ + + + + +HTML; +?> + + + + diff --git a/accueil.php b/accueil.php new file mode 100644 index 0000000..ed0b6e9 --- /dev/null +++ b/accueil.php @@ -0,0 +1,19 @@ + + + + + + + + + + +



+ +
+ +
+ + + + \ No newline at end of file diff --git a/fonction.php b/fonction.php new file mode 100644 index 0000000..efa0658 --- /dev/null +++ b/fonction.php @@ -0,0 +1,60 @@ + "ssh-rsa")); + if(!$connection) + { + return false; + } + + /* le fingerprint n'est pas teste, c'est voulu, il est juste affiche */ + $fingerprint=@ssh2_fingerprint($connection, + SSH2_FINGERPRINT_MD5 | SSH2_FINGERPRINT_HEX); + + /* Utilisation de public/private key */ + if(@ssh2_auth_pubkey_file($connection, "user", + "public_key", "private_key", "passphrase")) + { + return array($connection,$fingerprint); + } else { + return false; + } + } + + + /* Executer une commande, retour les flux stderr et stdout de la commande */ + function ssh_command($connection, $cmd) + { + /* Exec commande */ + $stdout_stream=@ssh2_exec($connection, $cmd); + if(!$stdout_stream) + { + return false; + } + + /* Extrait le flux stderr, a l'origine mixe dans stdout */ + $stderr_stream=@ssh2_fetch_stream($stdout_stream, + SSH2_STREAM_STDERR); + if(!$stderr_stream) + { + return false; + } + + /* Les flux sont bloquant pour lire le contenu ensuite l'afficher */ + if(!@stream_set_blocking($stdout_stream, true)) + { + return false; + } + if(!@stream_set_blocking($stderr_stream, true)) + { + return; + } + return array($stdout_stream, $stderr_stream); + } + +?> \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..766401d --- /dev/null +++ b/index.html @@ -0,0 +1,368 @@ + + + + + + Apache2 Debian Default Page: It works + + + +
+ + +
+ + +
+
+ It works! +
+
+

+ This is the default welcome page used to test the correct + operation of the Apache2 server after installation on Debian systems. + If you can read this page, it means that the Apache HTTP server installed at + this site is working properly. You should replace this file (located at + /var/www/html/index.html) before continuing to operate your HTTP server. +

+ + +

+ If you are a normal user of this web site and don't know what this page is + about, this probably means that the site is currently unavailable due to + maintenance. + If the problem persists, please contact the site's administrator. +

+ +
+
+
+ Configuration Overview +
+
+

+ Debian's Apache2 default configuration is different from the + upstream default configuration, and split into several files optimized for + interaction with Debian tools. The configuration system is + fully documented in + /usr/share/doc/apache2/README.Debian.gz. Refer to this for the full + documentation. Documentation for the web server itself can be + found by accessing the manual if the apache2-doc + package was installed on this server. + +

+

+ The configuration layout for an Apache2 web server installation on Debian systems is as follows: +

+
+/etc/apache2/
+|-- apache2.conf
+|       `--  ports.conf
+|-- mods-enabled
+|       |-- *.load
+|       `-- *.conf
+|-- conf-enabled
+|       `-- *.conf
+|-- sites-enabled
+|       `-- *.conf
+          
+
    +
  • + apache2.conf is the main configuration + file. It puts the pieces together by including all remaining configuration + files when starting up the web server. +
  • + +
  • + ports.conf is always included from the + main configuration file. It is used to determine the listening ports for + incoming connections, and this file can be customized anytime. +
  • + +
  • + Configuration files in the mods-enabled/, + conf-enabled/ and sites-enabled/ directories contain + particular configuration snippets which manage modules, global configuration + fragments, or virtual host configurations, respectively. +
  • + +
  • + They are activated by symlinking available + configuration files from their respective + *-available/ counterparts. These should be managed + by using our helpers + + a2enmod, + a2dismod, + + + a2ensite, + a2dissite, + + and + + a2enconf, + a2disconf + . See their respective man pages for detailed information. +
  • + +
  • + The binary is called apache2. Due to the use of + environment variables, in the default configuration, apache2 needs to be + started/stopped with /etc/init.d/apache2 or apache2ctl. + Calling /usr/bin/apache2 directly will not work with the + default configuration. +
  • +
+
+ +
+
+ Document Roots +
+ +
+

+ By default, Debian does not allow access through the web browser to + any file apart of those located in /var/www, + public_html + directories (when enabled) and /usr/share (for web + applications). If your site is using a web document root + located elsewhere (such as in /srv) you may need to whitelist your + document root directory in /etc/apache2/apache2.conf. +

+

+ The default Debian document root is /var/www/html. You + can make your own virtual hosts under /var/www. This is different + to previous releases which provides better security out of the box. +

+
+ +
+
+ Reporting Problems +
+
+

+ Please use the reportbug tool to report bugs in the + Apache2 package with Debian. However, check existing bug reports before reporting a new bug. +

+

+ Please report bugs specific to modules (such as PHP and others) + to respective packages, not to the web server itself. +

+
+ + + + +
+
+
+
+ + + diff --git a/loader.gif b/loader.gif new file mode 100644 index 0000000000000000000000000000000000000000..3596a61f3af951db38aeb149eecb37e7142d5c46 GIT binary patch literal 7247 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 literal 0 HcmV?d00001 diff --git a/menu.php b/menu.php new file mode 100644 index 0000000..01bbc14 --- /dev/null +++ b/menu.php @@ -0,0 +1,333 @@ + + + + \ No newline at end of file diff --git a/ports.php b/ports.php new file mode 100644 index 0000000..9cbdba3 --- /dev/null +++ b/ports.php @@ -0,0 +1,11 @@ +Port disponible : $port "; + +?> \ No newline at end of file diff --git a/progress.js b/progress.js new file mode 100644 index 0000000..e8d207d --- /dev/null +++ b/progress.js @@ -0,0 +1,40 @@ +document.onreadystatechange = function(e) +{ + if(document.readyState=="interactive") + { + var all = document.getElementsByTagName("*"); + for (var i=0, max=all.length; i < max; i++) + { + set_ele(all[i]); + } + } +} + +function check_element(ele) +{ + var all = document.getElementsByTagName("*"); + var totalele=all.length; + var per_inc=100/all.length; + + if($(ele).on()) + { + var prog_width=per_inc+Number(document.getElementById("progress_width").value); + document.getElementById("progress_width").value=prog_width; + $("#bar1").animate({width:prog_width+"%"},10,function(){ + if(document.getElementById("bar1").style.width=="100%") + { + $(".progress").fadeOut("slow"); + } + }); + } + + else + { + set_ele(ele); + } +} + +function set_ele(set_element) +{ + check_element(set_element); +} \ No newline at end of file diff --git a/progress_style.css b/progress_style.css new file mode 100644 index 0000000..df364ca --- /dev/null +++ b/progress_style.css @@ -0,0 +1,53 @@ +body +{ +margin:0px; auto; +padding:0px; +font-family:helvetica; +} +.progress +{ + position: fixed; + left: 0px; + top: 0px; + width: 100%; + height: 100%; + z-index: 9999; + background-color: #F2F2F2; +} +.bar +{ + background-color: #819FF7; + width:0%; + height:5px; + border-radius: 3px; +} +.percent +{ + position:absolute; + display:inline-block; + top:3px; + left:48%; +} +#wrapper +{ + width:995px; + padding:0px; + margin:0px auto; + font-family:helvetica; + text-align:center; +} +h1 +{ + text-align:center; + font-size:35px; + margin-top:60px; + color:#A9BCF5; +} +h1 p +{ + text-align:center; + margin:0px; + font-size:18px; + text-decoration:underline; + color:grey; +} \ No newline at end of file diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..a611de3 --- /dev/null +++ b/readme.md @@ -0,0 +1,7 @@ + +# Gestion des conteneurs dockers +--- + +## Wordpress + +## Prestashop diff --git a/security.jpeg b/security.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..4510cf90e6c4943774c0f12a1bc8d5766aeab486 GIT binary patch literal 43077 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 Bc|8CC literal 0 HcmV?d00001 diff --git a/sql.php b/sql.php new file mode 100644 index 0000000..1ab55c9 --- /dev/null +++ b/sql.php @@ -0,0 +1,20 @@ + + + + + + + diff --git a/webtools.php b/webtools.php new file mode 100644 index 0000000..d0e83c1 --- /dev/null +++ b/webtools.php @@ -0,0 +1,4 @@ +$output"; +?> \ No newline at end of file