XploitSPY/server/assets/views/builder.ejs
2020-04-23 13:14:46 +05:30

104 lines
3.2 KiB
Plaintext

<!DOCTYPE html>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<html>
<% include partials/head.ejs %>
<body>
<div class="ui container">
<% include partials/header.ejs %> <% include partials/disclaimer.ejs %>
<div class="ui segment">
<div id="dimmer" class="ui dimmer">
<div class="ui indeterminate text loader" id="loadingText">Submitting</div>
</div>
<h1 class="ui" style="text-align: center;">APK Builder</h1>
<div class="ui form" id="form">
<div class="inline fields">
<div class="six wide field">
<div class="ui labeled input">
<div class="ui label">
http://
</div>
<input
type="text"
id="uriInput"
placeholder="IP / Public URL"
title="This is the public url of your server (domain.com)"
/>
</div>
</div>
<!-- <div class="two wide field">
<label>:</label>
<input type="number" id="portInput" placeholder="PORT" min="2048" max="25565" title="This is the `control_port` set in the consts" value="<%= myPort %>">
</div> -->
</div>
<div class="inline fields">
<div class="eight wide field">
<button id="gobuild" class="positive ui fluid button"><i class="wrench icon"></i>Build</button>
</div>
</div>
</div>
<div class="ui form" id="download" style="display: none;">
<div class="inline fields">
<div class="eight wide field">
<a class="blue ui fluid button" download="XploitSPY.apk" href="/build-aligned-signed.apk"
><i class="download icon"></i>Download</a
>
</div>
</div>
</div>
</div>
</div>
<style>
.inline.fields {
justify-content: center;
}
</style>
<script>
var loadingTexts = [
'Decompiling APK',
'Patching Server Information',
'Compiling APK',
'Signing APK',
'Verifying Build',
'Finalizing',
];
document.getElementById('uriInput').value = window.location.hostname;
var loadingIndex = 0;
var isDone = false;
$('#gobuild').click((e) => {
$('#dimmer').addClass('active');
build($('#uriInput').val(), '80');
setTimeout(loaderText, 500);
});
function loaderText() {
var nextTimeout = Math.floor(Math.random() * 1500) + 700;
if (loadingIndex < loadingTexts.length) $('#loadingText').text(loadingTexts[loadingIndex++]);
if (loadingIndex !== loadingTexts.length) setTimeout(loaderText, nextTimeout);
else if (loadingIndex === loadingTexts.length && !isDone) setTimeout(loaderText, 300);
else
while (isDone) {
isDone = false;
$('#dimmer').fadeOut(500, () => {
$('#download').removeClass('active');
});
$('#form').fadeOut(500, () => {
$('#download').fadeIn(200);
});
}
}
const build = async (URI, PORT) => {
let data = await $.post('/builder?uri=' + URI + '&port=' + PORT);
if (!data.error) isDone = true;
else showNotification('#f03434', data.error);
};
</script>
<% include partials/footer.ejs %>
</body>
</html>