This commit is contained in:
Flatlogic Bot 2026-01-18 18:23:20 +00:00
parent d0dc547680
commit 06be8925e8
4 changed files with 122 additions and 32 deletions

View File

@ -37,3 +37,15 @@ body {
background-color: #007acc;
border-color: #007acc;
}
@media (max-width: 991.98px) {
.split-container {
flex-direction: column;
height: auto;
}
.editor-container, .output-container {
height: 50vh; /* Adjust as needed */
margin-bottom: 1rem;
}
}

View File

@ -8,6 +8,8 @@ document.addEventListener('DOMContentLoaded', () => {
const saveBtn = document.getElementById('save-btn');
const loadBtn = document.getElementById('load-btn');
const clearOutputBtn = document.getElementById('clear-output-btn');
const runBtn = document.getElementById('run-btn');
const runOutput = document.getElementById('run-output');
const obfuscatedOutput = document.getElementById('obfuscated-output');
const loader = document.getElementById('loader');
const versionSpan = document.getElementById('luau-version');
@ -248,12 +250,62 @@ document.addEventListener('DOMContentLoaded', () => {
});
// --- Split View ---
Split(['#split-0', '#split-1'], {
sizes: [50, 50],
minSize: 200,
gutterSize: 8,
onDrag: function() {
editor.resize();
let split;
function setupSplit() {
if (window.innerWidth < 992) {
if (split) {
split.destroy();
split = null;
}
} else {
if (!split) {
split = Split(['#split-0', '#split-1'], {
sizes: [50, 50],
minSize: 200,
gutterSize: 8,
onDrag: function() {
editor.resize();
}
});
}
}
}
window.addEventListener('resize', setupSplit);
setupSplit(); // Initial call
runBtn.addEventListener('click', async () => {
const code = editor.getValue();
runOutput.textContent = '';
loader.style.display = 'block';
runBtn.disabled = true;
// Give the UI a moment to update
await new Promise(resolve => setTimeout(resolve, 50));
try {
const formData = new FormData();
formData.append('code', code);
const response = await fetch('run.php', {
method: 'POST',
body: formData
});
if (response.ok) {
const result = await response.text();
runOutput.textContent = result;
} else {
runOutput.textContent = `Error: ${response.statusText}`;
}
} catch (err) {
runOutput.textContent = `Error: ${err.message}`;
console.error(err);
} finally {
loader.style.display = 'none';
runBtn.disabled = false;
}
});
});

View File

@ -37,37 +37,46 @@
<div class="container-fluid">
<a class="navbar-brand" href="#">Luau Obfuscator</a>
<div class="ms-auto d-flex align-items-center">
<span id="luau-version" class="navbar-text me-3">Loading Luau...</span>
<span id="save-status" class="navbar-text me-3"></span>
<span id="luau-version" class="navbar-text me-3 d-none d-lg-inline">Loading Luau...</span>
<div class="btn-group me-2" role="group">
<button class="btn btn-primary" id="obfuscate-btn">Obfuscate</button>
<button class="btn btn-success" id="run-btn">Run</button>
</div>
<div class="btn-group me-2" role="group">
<button class="btn btn-outline-secondary" id="save-btn">Save</button>
<button class="btn btn-outline-secondary" id="load-btn">Restore</button>
</div>
<div class="dropdown me-2">
<button class="btn btn-secondary dropdown-toggle" type="button" id="examples-dropdown" data-bs-toggle="dropdown" aria-expanded="false">
Load Example
</button>
<ul class="dropdown-menu dropdown-menu-dark" aria-labelledby="examples-dropdown" id="examples-menu">
<!-- Examples will be populated by JS -->
</ul>
</div>
<button class="btn btn-outline-light" id="clear-output-btn">Clear Obfuscated</button>
<button class="btn btn-info ms-2" id="share-btn" data-bs-toggle="modal" data-bs-target="#share-modal">
<i class="bi bi-share-fill"></i> Share
</button>
<button class="btn btn-outline-light ms-2" id="settings-btn" data-bs-toggle="modal" data-bs-target="#settings-modal">
<i class="bi bi-gear-fill"></i>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
</div>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
<li class="nav-item d-lg-none"><span id="luau-version-mobile" class="navbar-text">Loading Luau...</span></li>
<li class="nav-item"><span id="save-status" class="navbar-text"></span></li>
<li class="nav-item btn-group" role="group">
<button class="btn btn-outline-secondary" id="save-btn">Save</button>
<button class="btn btn-outline-secondary" id="load-btn">Restore</button>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="examples-dropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Load Example
</a>
<ul class="dropdown-menu dropdown-menu-dark" aria-labelledby="examples-dropdown" id="examples-menu">
<!-- Examples will be populated by JS -->
</ul>
</li>
<li class="nav-item">
<button class="btn btn-outline-light" id="clear-output-btn">Clear Obfuscated</button>
</li>
<li class="nav-item">
<button class="btn btn-info ms-2" id="share-btn" data-bs-toggle="modal" data-bs-target="#share-modal">
<i class="bi bi-share-fill"></i> Share
</button>
</li>
<li class="nav-item">
<button class="btn btn-outline-light ms-2" id="settings-btn" data-bs-toggle="modal" data-bs-target="#settings-modal">
<i class="bi bi-gear-fill"></i>
</button>
</li>
</ul>
</div>
</div>
</header>
@ -82,6 +91,8 @@ print("Current time: " .. os.date())</div>
<span class="visually-hidden">Loading...</span>
</div>
<pre id="obfuscated-output"></pre>
<h5 class="text-light">Run Output</h5>
<pre id="run-output"></pre>
</div>
</div>
</main>

15
run.php Executable file
View File

@ -0,0 +1,15 @@
<?php
if (isset($_POST['code'])) {
$code = $_POST['code'];
$tmp_dir = '/home/ubuntu/.gemini/tmp/ec2c6b8cb2ac3d6ef62b888a61e62d5ab1e71e46b3c4963f2a040a3c33c7038b/';
$file = tempnam($tmp_dir, 'luau_');
file_put_contents($file, $code);
$output = shell_exec("luau " . escapeshellarg($file) . " 2>&1");
unlink($file);
echo $output;
} else {
echo "No code provided.";
}
?>