white-inc-bomber
Version:
White revenge to fucking, stupid bitards from Necrasovka.
146 lines (129 loc) • 10.5 kB
HTML
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>WhiteBomb</title>
<link rel="stylesheet" href="./style/index.css">
</head>
<body>
<div class="White-Revenge">
<form id="form" class="form" method="post" action="http://localhost:8080/revenge/">
<svg version="1.1" id="logo" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
x="0px" y="0px" viewBox="0 0 500 150" xml:space="preserve">
<defs>
<linearGradient id="gradient" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" style="stop-color:#ffffff;stop-opacity:1" />
<stop offset="100%" style="stop-color:#cccccc;stop-opacity:1" />
</linearGradient>
<filter id="dropshadow" height="130%">
<feGaussianBlur in="SourceAlpha" stdDeviation="3" />
<feOffset dx="2" dy="2" result="offsetblur" />
<feMerge>
<feMergeNode />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
</defs>
<text x="50%" y="50%" font-family="Helvetica, Arial, sans-serif" font-size="48" fill="url(#gradient)"
text-anchor="middle" alignment-baseline="middle" filter="url(#dropshadow)">
<tspan x="50%" dy="0em">White Inc.</tspan>
</text>
<g xmlns="http://www.w3.org/2000/svg" data-name="Layer 3" fill="white">
<path d="M54,18a12.12181,12.12181,0,0,1,2,.17731V16a9,9,0,0,0-18,0v2Z" />
<path
d="M67.36426,6.63574a8.98769,8.98769,0,0,0-12.7804.064q.46756.38269.90149.81494A11.9217,11.9217,0,0,1,59,16v3.099a11.95167,11.95167,0,0,1,5.831,16.033A9.0025,9.0025,0,0,0,70,27V13A8.94353,8.94353,0,0,0,67.36426,6.63574Z" />
<path
d="M75,7a8.93967,8.93967,0,0,0-3.27637.62634A11.93849,11.93849,0,0,1,73,13V27a12.04083,12.04083,0,0,1-4.43195,9.28314A8.99169,8.99169,0,0,0,84,30V16A9.00984,9.00984,0,0,0,75,7Z" />
<path
d="M89,10a8.94069,8.94069,0,0,0-3.28418.62921A11.90954,11.90954,0,0,1,87,16V30a11.979,11.979,0,0,1-4.42175,9.29431A8.99218,8.99218,0,0,0,98,33V19A9.00984,9.00984,0,0,0,89,10Z" />
<path
d="M38.53174,73.92871A1.9971,1.9971,0,0,1,40.09131,74.957c1.25049,2.27832,3.34863,7.57617,3.34863,17.45313,0,.46289,0,.92676-.00977,1.40918a113.91779,113.91779,0,0,1-3.2301,23.21515c.34113.09583.6723.19373,1.02649.2868A91.65428,91.65428,0,0,0,64,120a91.69981,91.69981,0,0,0,22.71-2.66113c.5741-.14972,1.12384-.30469,1.66388-.46161a79.40732,79.40732,0,0,1-4.15411-23.30695C84.15625,80.00977,89.373,74.457,89.41406,74.41406a1.98635,1.98635,0,0,0,.14844-.165A38.52081,38.52081,0,0,0,98,50.19043V39.30475a10.9662,10.9662,0,0,1-17.73724.3512,10.96436,10.96436,0,0,1-14-3,10.93078,10.93078,0,0,1-3.15814,1.13983A11.96939,11.96939,0,0,1,54,42H47a2.00229,2.00229,0,0,0-2,2v2.666A18.97865,18.97865,0,0,1,59,65a2,2,0,0,1-4,0A14.98293,14.98293,0,0,0,42.64795,50.2334,2.00031,2.00031,0,0,1,41,48.26465V44a6.00656,6.00656,0,0,1,6-6h7a8,8,0,1,0,0-16H33a8.00917,8.00917,0,0,0-8,8V59A14.93922,14.93922,0,0,0,38.53174,73.92871Z" />
<path
d="M86.24176,92.37708c-.00787.39374-.02393.77423-.022,1.18347a77.51457,77.51457,0,0,0,4.06055,22.71l.62109,1.95313-1.96875.57324c-.55762.16309-1.126.32324-1.71875.47754A93.70918,93.70918,0,0,1,64,122a93.67365,93.67365,0,0,1-23.27979-2.74414c-.25879-.06738-.50537-.1377-.752-.208l-2.15039-.60547.43457-1.8623A112.0932,112.0932,0,0,0,41.43066,93.7793c.009-.45618.009-.89508.009-1.3324C27.96008,95.619,20,101.34595,20,108c0,6.32129,7.18115,11.835,19.70361,15.125A97.70075,97.70075,0,0,0,64,126a97.81586,97.81586,0,0,0,24.22461-2.85449C100.792,119.86719,108,114.34668,108,108,108,101.2417,99.93408,95.52124,86.24176,92.37708Z" />
</g>
<g xmlns="http://www.w3.org/2000/svg" data-name="Layer 3" fill="white"
transform="translate(500, 0) scale(-1, 1)">
<path d="M54,18a12.12181,12.12181,0,0,1,2,.17731V16a9,9,0,0,0-18,0v2Z" />
<path
d="M67.36426,6.63574a8.98769,8.98769,0,0,0-12.7804.064q.46756.38269.90149.81494A11.9217,11.9217,0,0,1,59,16v3.099a11.95167,11.95167,0,0,1,5.831,16.033A9.0025,9.0025,0,0,0,70,27V13A8.94353,8.94353,0,0,0,67.36426,6.63574Z" />
<path
d="M75,7a8.93967,8.93967,0,0,0-3.27637.62634A11.93849,11.93849,0,0,1,73,13V27a12.04083,12.04083,0,0,1-4.43195,9.28314A8.99169,8.99169,0,0,0,84,30V16A9.00984,9.00984,0,0,0,75,7Z" />
<path
d="M89,10a8.94069,8.94069,0,0,0-3.28418.62921A11.90954,11.90954,0,0,1,87,16V30a11.979,11.979,0,0,1-4.42175,9.29431A8.99218,8.99218,0,0,0,98,33V19A9.00984,9.00984,0,0,0,89,10Z" />
<path
d="M38.53174,73.92871A1.9971,1.9971,0,0,1,40.09131,74.957c1.25049,2.27832,3.34863,7.57617,3.34863,17.45313,0,.46289,0,.92676-.00977,1.40918a113.91779,113.91779,0,0,1-3.2301,23.21515c.34113.09583.6723.19373,1.02649.2868A91.65428,91.65428,0,0,0,64,120a91.69981,91.69981,0,0,0,22.71-2.66113c.5741-.14972,1.12384-.30469,1.66388-.46161a79.40732,79.40732,0,0,1-4.15411-23.30695C84.15625,80.00977,89.373,74.457,89.41406,74.41406a1.98635,1.98635,0,0,0,.14844-.165A38.52081,38.52081,0,0,0,98,50.19043V39.30475a10.9662,10.9662,0,0,1-17.73724.3512,10.96436,10.96436,0,0,1-14-3,10.93078,10.93078,0,0,1-3.15814,1.13983A11.96939,11.96939,0,0,1,54,42H47a2.00229,2.00229,0,0,0-2,2v2.666A18.97865,18.97865,0,0,1,59,65a2,2,0,0,1-4,0A14.98293,14.98293,0,0,0,42.64795,50.2334,2.00031,2.00031,0,0,1,41,48.26465V44a6.00656,6.00656,0,0,1,6-6h7a8,8,0,1,0,0-16H33a8.00917,8.00917,0,0,0-8,8V59A14.93922,14.93922,0,0,0,38.53174,73.92871Z" />
<path
d="M86.24176,92.37708c-.00787.39374-.02393.77423-.022,1.18347a77.51457,77.51457,0,0,0,4.06055,22.71l.62109,1.95313-1.96875.57324c-.55762.16309-1.126.32324-1.71875.47754A93.70918,93.70918,0,0,1,64,122a93.67365,93.67365,0,0,1-23.27979-2.74414c-.25879-.06738-.50537-.1377-.752-.208l-2.15039-.60547.43457-1.8623A112.0932,112.0932,0,0,0,41.43066,93.7793c.009-.45618.009-.89508.009-1.3324C27.96008,95.619,20,101.34595,20,108c0,6.32129,7.18115,11.835,19.70361,15.125A97.70075,97.70075,0,0,0,64,126a97.81586,97.81586,0,0,0,24.22461-2.85449C100.792,119.86719,108,114.34668,108,108,108,101.2417,99.93408,95.52124,86.24176,92.37708Z" />
</g>
</svg>
<input id="phone" type="phone" required placeholder="Номер: +7(999)-999-99-99"
title="Введите номер в формате +7(999)-999-99-99" maxlength="12" />/>
<input id="streams" type="text" required placeholder="Потоки (повторения): 1 - 2 символа"
title="Введите количество потоков" maxlength="2" />/>
<button type="submit">Отправить</button>
<div class="results">
<pre id="results" title="Копировать">Тут, будут отображаться результаты исполнения бомбера.</pre>
</div>
</form>
</div>
<script>
const phoneInput = document.querySelector('#phone');
phoneInput.addEventListener('input', function () {
let value = this.value;
if (!value) {
this.value = '+';
return;
}
if (value.charAt(0) !== '+') {
value = '+' + value.replace(/\+/g, '');
} else {
value = '+' + value.slice(1).replace(/\+/g, '');
}
value = '+' + value.slice(1).replace(/\D/g, '');
this.value = value;
});
const form = document.querySelector('#form');
const resultsWindow = document.querySelector('#results');
form.addEventListener('submit', async function (event) {
event.preventDefault();
const phoneValue = phoneInput.value;
const streams = document.body.querySelector('#streams').value;
const data = { phone: phoneValue, streams: streams, };
try {
const response = await fetch(form.action, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(data)
});
if (!response.ok) {
throw new Error(`Ошибка: ${response.status} ${response.statusText}`);
}
const results = await response.json();
console.log('Ответ от сервера:', results);
resultsWindow.innerHTML = results.results.map((result, index) => {
result.name = result.name.replace(/[.,]/g, '');
const margin = index < (results.results.length - 1) ? '\n\n<hr>\n' : '';
const status = result.status === 'rejected' ? `<span style="color: red;">${result.status}</span>` : `<span style="color: green;">${result.status}</span>`;
return 'Сервис: ' + result.name + '\n' + 'Статус: ' + status + '\n' + 'Причина: ' + (result.reason || 'Слишком славно у вас всё идёт, молодой человек.') + margin;
}).join('');
} catch (error) {
console.error('Ошибка при отправке запроса:', error);
}
});
resultsWindow.addEventListener('click', async () => {
try {
await navigator.clipboard.writeText(resultsWindow.textContent);
resultsWindow.classList.add('hovered');
setTimeout(() => {
resultsWindow.classList.remove('hovered');
}, 1000);
} catch (err) {
console.error('Ошибка при копировании текста: ', err);
}
});
</script>
</body>
</html>