mirror of https://github.com/4xmen/xshop.git
WIP: add xshop installer steps [packacges, env, database, reweite]
parent
44e5bd3f6e
commit
099b150992
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,405 @@
|
||||
<?php @require_once __DIR__ . '/sections/header.php'; ?>
|
||||
<?php
|
||||
|
||||
function curlGet($url) {
|
||||
$curl = curl_init();
|
||||
|
||||
// Set the cURL options
|
||||
curl_setopt($curl, CURLOPT_URL, $url);
|
||||
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 0);
|
||||
curl_setopt($curl, CURLOPT_TIMEOUT, 5); //timeout in seconds
|
||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt ($curl, CURLOPT_FOLLOWLOCATION, 1);
|
||||
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
|
||||
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
|
||||
|
||||
// Execute the cURL request
|
||||
$result = curl_exec($curl);
|
||||
|
||||
// Close cURL session
|
||||
curl_close($curl);
|
||||
|
||||
if(curl_error($curl)) {
|
||||
echo 'Curl error: ' . curl_error($curl);
|
||||
}
|
||||
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
function parseEnv($file){
|
||||
// parse env file
|
||||
$envData = file_get_contents($file);
|
||||
$envData = explode(PHP_EOL, $envData);
|
||||
$envVars = [];
|
||||
foreach ($envData as $line) {
|
||||
$l = explode('=', $line);
|
||||
if (count($l) > 1 && $line[0] != '#') {
|
||||
$envVars[trim($l[0])] = trim($l[1], '" ');
|
||||
}
|
||||
}
|
||||
|
||||
return $envVars;
|
||||
}
|
||||
|
||||
function makeEnv($file,$data)
|
||||
{
|
||||
$env = '';
|
||||
$lkey = 'A';
|
||||
foreach ($data as $k => $item){
|
||||
if ($k[0] !== $lkey){
|
||||
$env.= PHP_EOL.PHP_EOL;
|
||||
$lkey = $k[0];
|
||||
}
|
||||
$env .= $k .'="'.$item.'"'.PHP_EOL;
|
||||
}
|
||||
return file_put_contents($file,$env);
|
||||
}
|
||||
$hasPackage = is_dir(__DIR__ . '/../vendor') && is_dir(__DIR__ . '/../vendor/xmen/starter-kit/');
|
||||
if (isset($_GET['download']) && !$hasPackage) {
|
||||
/**
|
||||
* Initialize the cURL session
|
||||
*/
|
||||
$ch = curl_init();
|
||||
/**
|
||||
* Set the URL of the page or file to download.
|
||||
*/
|
||||
curl_setopt($ch, CURLOPT_URL,
|
||||
'https://github.com/A1Gard/xshop-installer-assets/raw/master/vendor.zip');
|
||||
/**
|
||||
* Create a new file
|
||||
*/
|
||||
$fp = fopen(__DIR__ . '/../file.zip', 'w');
|
||||
/**
|
||||
* Ask cURL to write the contents to a file
|
||||
*/
|
||||
curl_setopt($ch, CURLOPT_FILE, $fp);
|
||||
/**
|
||||
* Execute the cURL session
|
||||
*/
|
||||
curl_exec($ch);
|
||||
/**
|
||||
* Close cURL session and file
|
||||
*/
|
||||
curl_close($ch);
|
||||
fclose($fp);
|
||||
|
||||
$zip = new ZipArchive;
|
||||
$res = $zip->open(__DIR__ . '/../file.zip');
|
||||
if ($res === TRUE) {
|
||||
$zip->extractTo(__DIR__ . '/..');
|
||||
$zip->close();
|
||||
$hasPackage = true;
|
||||
} else {
|
||||
die('unzip error!');
|
||||
}
|
||||
|
||||
unlink(__DIR__ . '/../file.zip');
|
||||
}
|
||||
|
||||
if (isset($_POST['dbname'])){
|
||||
$env = parseEnv(__DIR__ . '/../.env.example');
|
||||
$env['DB_HOST'] = $_POST['host'];
|
||||
$env['DB_DATABASE'] = $_POST['dbname'];
|
||||
$env['DB_USERNAME'] = $_POST['user'];
|
||||
$env['DB_PASSWORD'] = $_POST['passwd'];
|
||||
|
||||
makeEnv(__DIR__ . '/../.env',$env);
|
||||
|
||||
}
|
||||
?>
|
||||
<h2>
|
||||
Requrirment check
|
||||
</h2>
|
||||
<?php if (PHP_MAJOR_VERSION >= 8 && PHP_MINOR_VERSION > 0): ?>
|
||||
<div class="msg success">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path
|
||||
d="M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20ZM11.0026 16L6.75999 11.7574L8.17421 10.3431L11.0026 13.1716L16.6595 7.51472L18.0737 8.92893L11.0026 16Z"></path>
|
||||
</svg>
|
||||
<span>
|
||||
PHP Version check <b>8.1 or Above</b>
|
||||
</span>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<div class="msg error">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path
|
||||
d="M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20ZM12 10.5858L14.8284 7.75736L16.2426 9.17157L13.4142 12L16.2426 14.8284L14.8284 16.2426L12 13.4142L9.17157 16.2426L7.75736 14.8284L10.5858 12L7.75736 9.17157L9.17157 7.75736L12 10.5858Z"></path>
|
||||
</svg>
|
||||
<span>
|
||||
PHP version check <b>8.1 or Above</b>
|
||||
<br>
|
||||
Your php version is <b><?php echo PHP_VERSION; ?></b>
|
||||
</span>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php
|
||||
$exts = get_loaded_extensions();
|
||||
$ourRequriedExts = ['pdo_mysql', 'sqlite3', 'soap', 'zip', 'gd', 'mbstring', 'xml', 'curl', 'json', 'fileinfo', 'bcmath'];
|
||||
|
||||
// print_r($exts);
|
||||
$have = [];
|
||||
$haveNot = [];
|
||||
|
||||
foreach ($ourRequriedExts as $ext) {
|
||||
if (in_array($ext, $exts)) {
|
||||
$have[] = $ext;
|
||||
} else {
|
||||
$haveNot[] = $ext;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<?php if (count($have) > 0): ?>
|
||||
<div class="msg success">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path
|
||||
d="M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20ZM11.0026 16L6.75999 11.7574L8.17421 10.3431L11.0026 13.1716L16.6595 7.51472L18.0737 8.92893L11.0026 16Z"></path>
|
||||
</svg>
|
||||
<span>
|
||||
PHP extentions not installed:
|
||||
<b>
|
||||
<?php foreach ($have as $item) {
|
||||
echo $item . ', ';
|
||||
} ?>
|
||||
</b>
|
||||
</span>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<?php if (count($haveNot) > 0): ?>
|
||||
<div class="msg error">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path
|
||||
d="M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20ZM12 10.5858L14.8284 7.75736L16.2426 9.17157L13.4142 12L16.2426 14.8284L14.8284 16.2426L12 13.4142L9.17157 16.2426L7.75736 14.8284L10.5858 12L7.75736 9.17157L9.17157 7.75736L12 10.5858Z"></path>
|
||||
</svg>
|
||||
<span>
|
||||
PHP extentions not installed:
|
||||
<b>
|
||||
<?php foreach ($haveNot as $item) {
|
||||
echo $item . ', ';
|
||||
} ?>
|
||||
</b>
|
||||
</span>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<?php
|
||||
const TMPDIR = __DIR__ . '/../tempCheck';
|
||||
echo is_dir(TMPDIR) ? rmdir(TMPDIR) : '';
|
||||
$writeAcess = mkdir(TMPDIR);
|
||||
rmdir(TMPDIR);
|
||||
|
||||
if ($writeAcess):
|
||||
?>
|
||||
<div class="msg success">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path
|
||||
d="M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20ZM11.0026 16L6.75999 11.7574L8.17421 10.3431L11.0026 13.1716L16.6595 7.51472L18.0737 8.92893L11.0026 16Z"></path>
|
||||
</svg>
|
||||
<span>
|
||||
Write permission!
|
||||
</span>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<div class="msg error">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path
|
||||
d="M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20ZM12 10.5858L14.8284 7.75736L16.2426 9.17157L13.4142 12L16.2426 14.8284L14.8284 16.2426L12 13.4142L9.17157 16.2426L7.75736 14.8284L10.5858 12L7.75736 9.17157L9.17157 7.75736L12 10.5858Z"></path>
|
||||
</svg>
|
||||
<span>
|
||||
Write permission problem:
|
||||
<b>
|
||||
<?php echo substr(__DIR__, 0, -10); ?>
|
||||
</b>
|
||||
</span>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<?php if ($hasPackage): ?>
|
||||
<div class="msg success">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path
|
||||
d="M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20ZM11.0026 16L6.75999 11.7574L8.17421 10.3431L11.0026 13.1716L16.6595 7.51472L18.0737 8.92893L11.0026 16Z"></path>
|
||||
</svg>
|
||||
<span>
|
||||
Packages already installed
|
||||
</span>
|
||||
</div>
|
||||
<script>
|
||||
window.addEventListener('load', function () {
|
||||
let p = 25;
|
||||
document.querySelector('#percent').innerText = p;
|
||||
document.querySelector('#bar').style.width = p + '%';
|
||||
});
|
||||
</script>
|
||||
<?php else: ?>
|
||||
<a class="btn btn-next" href="?download">
|
||||
install packages
|
||||
</a>
|
||||
<?php endif; ?>
|
||||
<?php
|
||||
$envInvalid = false;
|
||||
if (file_exists(__DIR__ . '/../.env')) {
|
||||
|
||||
|
||||
$envVars = parseEnv(__DIR__ . '/../.env');
|
||||
|
||||
try {
|
||||
//...
|
||||
$dbh = new PDO('mysql:host=' . $envVars['DB_HOST'] . ';dbname=' . $envVars['DB_DATABASE'], $envVars['DB_USERNAME'],
|
||||
$envVars['DB_PASSWORD']);
|
||||
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
// var_dump($dbh);
|
||||
} catch (PDOException $e) {
|
||||
// Display a message and log the exception.
|
||||
// exit();
|
||||
$envInvalid = true;
|
||||
}
|
||||
}else{
|
||||
$envVars = parseEnv(__DIR__ . '/../.env.example');
|
||||
$envInvalid = true;
|
||||
}
|
||||
|
||||
if($envInvalid):
|
||||
?>
|
||||
<div class="msg error">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path
|
||||
d="M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20ZM12 10.5858L14.8284 7.75736L16.2426 9.17157L13.4142 12L16.2426 14.8284L14.8284 16.2426L12 13.4142L9.17157 16.2426L7.75736 14.8284L10.5858 12L7.75736 9.17157L9.17157 7.75736L12 10.5858Z"></path>
|
||||
</svg>
|
||||
<span>
|
||||
You need modify database connection
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<form action="" method="post">
|
||||
<label>
|
||||
Host:
|
||||
<br>
|
||||
<input type="text" name="host" value="<?php echo $envVars['DB_HOST']; ?>" >
|
||||
</label>
|
||||
<label>
|
||||
Database name:
|
||||
<br>
|
||||
<input type="text" name="dbname" value="<?php echo $envVars['DB_DATABASE']; ?>" >
|
||||
</label>
|
||||
<label>
|
||||
Database user:
|
||||
<br>
|
||||
<input type="text" name="user" value="<?php echo $envVars['DB_USERNAME']; ?>" >
|
||||
</label>
|
||||
<label>
|
||||
Database password:
|
||||
<br>
|
||||
<input type="password" name="passwd" value="<?php echo $envVars['DB_PASSWORD']; ?>" >
|
||||
</label>
|
||||
<button class="btn">
|
||||
Save
|
||||
</button>
|
||||
</form>
|
||||
<?php else: ?>
|
||||
<div class="msg success">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path
|
||||
d="M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20ZM11.0026 16L6.75999 11.7574L8.17421 10.3431L11.0026 13.1716L16.6595 7.51472L18.0737 8.92893L11.0026 16Z"></path>
|
||||
</svg>
|
||||
<span>
|
||||
Database connection is OK!
|
||||
</span>
|
||||
</div>
|
||||
<script>
|
||||
window.addEventListener('load', function () {
|
||||
let p = 37;
|
||||
document.querySelector('#percent').innerText = p;
|
||||
document.querySelector('#bar').style.width = p + '%';
|
||||
});
|
||||
</script>
|
||||
<!--<pre>-->
|
||||
<?php
|
||||
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') {
|
||||
$url = "https://";
|
||||
} else {
|
||||
$url = "http://";
|
||||
}
|
||||
$url .= $_SERVER['HTTP_HOST']. substr($_SERVER['REQUEST_URI'],0,-13).'work';
|
||||
// echo $url;
|
||||
// $response = curlGet( $url );
|
||||
// print_r($_SERVER);
|
||||
// echo $response;
|
||||
?>
|
||||
<input type="hidden" id="url" value="<?php echo $url;?>">
|
||||
<div id="config">
|
||||
<div class="msg error">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path
|
||||
d="M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20ZM12 10.5858L14.8284 7.75736L16.2426 9.17157L13.4142 12L16.2426 14.8284L14.8284 16.2426L12 13.4142L9.17157 16.2426L7.75736 14.8284L10.5858 12L7.75736 9.17157L9.17157 7.75736L12 10.5858Z"></path>
|
||||
</svg>
|
||||
<span>
|
||||
Rewrite error:
|
||||
</span>
|
||||
</div>
|
||||
|
||||
Your server is : <?php echo $_SERVER['SERVER_SOFTWARE']; ?>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
If you use `PHP`, restart laravel
|
||||
</li>
|
||||
<li>
|
||||
If you use `Apache`, your public_html has problem
|
||||
</li>
|
||||
<li>
|
||||
If you use `NGINX`, active this rewrite on domain config, then restart server:
|
||||
<code>
|
||||
rewrite ^/(.*)$ /index.php/$1 last;
|
||||
</code>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<a href="?" class="btn" >
|
||||
Re-check
|
||||
</a>
|
||||
|
||||
</div>
|
||||
<a href="<?php echo substr($url,0,-7);?>" class="btn" id="continue">
|
||||
Continue
|
||||
</a>
|
||||
<script>
|
||||
url = document.querySelector('#url').value;
|
||||
async function getURL(url) {
|
||||
try {
|
||||
const response = await fetch(url);
|
||||
|
||||
if(!response.ok) {
|
||||
throw new Error(response.statusText);
|
||||
}
|
||||
|
||||
return response.text();
|
||||
} catch(error) {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
// Usage:
|
||||
getURL(url)
|
||||
.then(response => {
|
||||
// Do something with response
|
||||
if (response.trim() === 'work!'){
|
||||
document.querySelector('#config').remove();
|
||||
window.addEventListener('load', function () {
|
||||
let p = 50;
|
||||
document.querySelector('#percent').innerText = p;
|
||||
document.querySelector('#bar').style.width = p + '%';
|
||||
});
|
||||
}else{
|
||||
document.querySelector('#continue').remove();
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
console.error(error);
|
||||
document.querySelector('#continue').remove();
|
||||
});
|
||||
</script>
|
||||
<?php endif; ?>
|
||||
<!--</pre>-->
|
||||
<?php @require_once __DIR__ . '/sections/footer.php'; ?>
|
File diff suppressed because one or more lines are too long
@ -0,0 +1,175 @@
|
||||
<?php
|
||||
ini_set('display_errors', '1');
|
||||
ini_set('display_startup_errors', '1');
|
||||
error_reporting(E_ALL);
|
||||
?><!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport"
|
||||
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title>xShop installer</title>
|
||||
<link href="https://cdn.jsdelivr.net/gh/rastikerdar/vazirmatn@v33.003/Vazirmatn-font-face.css" rel="stylesheet"
|
||||
type="text/css"/>
|
||||
<style>
|
||||
* {
|
||||
font-family: Vazirmatn, sans-serif;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
body {
|
||||
background: #282c34;
|
||||
color: white;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4 {
|
||||
font-weight: 200;
|
||||
}
|
||||
|
||||
svg {
|
||||
width: 75%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
h2 {
|
||||
color: red;
|
||||
padding: .5rem;
|
||||
border-bottom: 1px solid darkred;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
b {
|
||||
color: yellow;
|
||||
}
|
||||
|
||||
form{
|
||||
padding: .5rem 1.5rem;
|
||||
}
|
||||
|
||||
ul{
|
||||
padding: 2rem;
|
||||
}
|
||||
|
||||
li{
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
code{
|
||||
background: #111;
|
||||
padding: 1rem;
|
||||
display: block;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
input{
|
||||
border: 0;
|
||||
border-bottom: 1px solid white;
|
||||
background: #ffffff77;
|
||||
display: block;
|
||||
padding: 2px;
|
||||
width: 100%;
|
||||
margin-bottom: 7px;
|
||||
}
|
||||
|
||||
#installer {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
#installer > div {
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
#installer > div:first-child {
|
||||
background: #1b2739;
|
||||
}
|
||||
|
||||
#installer > div:last-child {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#progress {
|
||||
width: 95%;
|
||||
border: 1px solid darkred;
|
||||
border-radius: 5px;
|
||||
padding: 2px;
|
||||
box-shadow: 0 0 7px darkred;
|
||||
}
|
||||
|
||||
#bar {
|
||||
width: 10%;
|
||||
font-size: 17px;
|
||||
margin: 0;
|
||||
background: red;
|
||||
border-radius: 5px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#percent {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-self: center;
|
||||
padding-top: 3px;
|
||||
color: white;
|
||||
}
|
||||
|
||||
#percent:after {
|
||||
content: "%";
|
||||
/*mix-blend-mode: difference;*/
|
||||
color: white;
|
||||
}
|
||||
|
||||
#config{
|
||||
background: #00000022;
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
.success {
|
||||
background: rgba(0, 255, 0, 0.3);
|
||||
|
||||
}
|
||||
|
||||
.error {
|
||||
background: rgba(255, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
.msg {
|
||||
padding: .5rem 1rem;
|
||||
border-radius: 5px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-self: start;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.msg svg {
|
||||
fill: white;
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
margin-right: 2rem;
|
||||
}
|
||||
|
||||
.btn{
|
||||
padding: 7px;
|
||||
display: block;
|
||||
background: transparent;
|
||||
margin: 1rem auto;
|
||||
width: 50%;
|
||||
text-align: center;
|
||||
border: 1px solid white;
|
||||
border-radius: 5px;
|
||||
cursor: pointer;
|
||||
color: #FFFFFF;
|
||||
text-decoration: none;
|
||||
|
||||
}
|
||||
|
||||
.btn:hover{
|
||||
background: #ffffff33;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="installer">
|
||||
<div id="content">
|
@ -0,0 +1,3 @@
|
||||
<?php
|
||||
require_once './../../installer/installer.php';
|
||||
|
@ -0,0 +1 @@
|
||||
work!
|
Loading…
Reference in New Issue