Update index.html
Browse files- index.html +486 -680
index.html
CHANGED
@@ -1,837 +1,643 @@
|
|
1 |
<!DOCTYPE html>
|
2 |
-
<html lang="en"
|
3 |
<head>
|
4 |
<meta charset="UTF-8">
|
5 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6 |
-
<title>
|
7 |
-
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
8 |
<style>
|
9 |
:root {
|
10 |
-
|
11 |
-
--
|
12 |
-
--
|
13 |
-
--
|
14 |
-
--
|
15 |
-
--
|
16 |
-
--dark: #2d3748;
|
17 |
-
--light: #f8f9fa;
|
18 |
-
--bg-color: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
|
19 |
-
--card-bg: rgba(255, 255, 255, 0.95);
|
20 |
-
--text-color: #2d3748;
|
21 |
-
--text-muted: #718096;
|
22 |
-
--input-bg: #f8fafc;
|
23 |
-
--input-border: #e2e8f0;
|
24 |
-
--response-bg: #f8fafc;
|
25 |
-
--card-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
|
26 |
-
--transition: all 0.3s ease;
|
27 |
-
}
|
28 |
-
|
29 |
-
[data-theme="dark"] {
|
30 |
-
/* Dark theme variables */
|
31 |
-
--primary: #4361ee;
|
32 |
-
--primary-dark: #3a56d4;
|
33 |
-
--secondary: #7209b7;
|
34 |
-
--success: #2ecc71;
|
35 |
-
--danger: #e74c3c;
|
36 |
-
--dark: #f8f9fa;
|
37 |
-
--light: #2d3748;
|
38 |
-
--bg-color: linear-gradient(135deg, #1a202c 0%, #2d3748 100%);
|
39 |
-
--card-bg: rgba(26, 32, 44, 0.95);
|
40 |
-
--text-color: #f8f9fa;
|
41 |
-
--text-muted: #a0aec0;
|
42 |
-
--input-bg: #2d3748;
|
43 |
-
--input-border: #4a5568;
|
44 |
-
--response-bg: #2d3748;
|
45 |
-
--card-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
|
46 |
}
|
47 |
|
48 |
* {
|
49 |
margin: 0;
|
50 |
padding: 0;
|
51 |
box-sizing: border-box;
|
|
|
52 |
}
|
53 |
|
54 |
body {
|
55 |
-
|
56 |
-
|
|
|
|
|
|
|
|
|
|
|
57 |
min-height: 100vh;
|
58 |
display: flex;
|
59 |
-
|
60 |
-
|
61 |
-
padding: 20px;
|
62 |
-
color: var(--text-color);
|
63 |
-
line-height: 1.6;
|
64 |
-
transition: background 0.3s ease;
|
65 |
}
|
66 |
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
padding:
|
72 |
-
|
73 |
-
box-shadow: var(--card-shadow);
|
74 |
-
position: relative;
|
75 |
-
overflow: hidden;
|
76 |
-
z-index: 1;
|
77 |
-
transition: background 0.3s ease, box-shadow 0.3s ease;
|
78 |
}
|
79 |
|
80 |
-
.
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
width: 200px;
|
86 |
-
height: 200px;
|
87 |
-
background: linear-gradient(135deg, var(--primary) 0%, var(--secondary) 100%);
|
88 |
-
border-radius: 50%;
|
89 |
-
opacity: 0.1;
|
90 |
-
z-index: -1;
|
91 |
}
|
92 |
|
93 |
-
.
|
94 |
-
|
95 |
-
|
96 |
-
bottom:
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
border-radius: 50%;
|
102 |
-
opacity: 0.1;
|
103 |
-
z-index: -1;
|
104 |
}
|
105 |
|
106 |
-
.
|
107 |
-
text-align: center;
|
108 |
-
margin-bottom: 30px;
|
109 |
display: flex;
|
110 |
align-items: center;
|
111 |
-
justify-content: center;
|
112 |
}
|
113 |
|
114 |
-
.
|
115 |
-
|
116 |
-
|
117 |
-
-
|
118 |
-
-
|
119 |
-
margin-right:
|
120 |
-
|
121 |
-
|
122 |
-
h1 {
|
123 |
-
font-size: 28px;
|
124 |
-
font-weight: 700;
|
125 |
-
background: linear-gradient(135deg, var(--primary) 0%, var(--secondary) 100%);
|
126 |
-
-webkit-background-clip: text;
|
127 |
-
-webkit-text-fill-color: transparent;
|
128 |
-
margin-bottom: 5px;
|
129 |
-
}
|
130 |
-
|
131 |
-
.subtitle {
|
132 |
-
text-align: center;
|
133 |
-
font-size: 14px;
|
134 |
-
color: var(--text-muted);
|
135 |
-
margin-bottom: 30px;
|
136 |
}
|
137 |
|
138 |
-
.
|
139 |
-
|
140 |
-
|
|
|
|
|
|
|
|
|
141 |
}
|
142 |
|
143 |
-
|
144 |
-
display:
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
transition: color 0.3s ease;
|
150 |
}
|
151 |
|
152 |
-
|
153 |
-
|
154 |
-
width: 100%;
|
155 |
-
padding: 14px 16px 14px 45px;
|
156 |
-
border: 1px solid var(--input-border);
|
157 |
-
border-radius: 8px;
|
158 |
-
font-size: 15px;
|
159 |
-
background-color: var(--input-bg);
|
160 |
-
color: var(--text-color);
|
161 |
-
transition: var(--transition);
|
162 |
}
|
163 |
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
border-color: var(--primary);
|
168 |
-
box-shadow: 0 0 0 3px rgba(67, 97, 238, 0.15);
|
169 |
}
|
170 |
|
171 |
-
.
|
172 |
-
|
173 |
-
left: 16px;
|
174 |
-
top: 40px;
|
175 |
-
color: var(--text-muted);
|
176 |
-
transition: color 0.3s ease;
|
177 |
}
|
178 |
|
179 |
-
|
180 |
-
display: block;
|
181 |
width: 100%;
|
182 |
-
|
183 |
-
background: linear-gradient(135deg, var(--primary) 0%, var(--secondary) 100%);
|
184 |
-
color: #fff;
|
185 |
-
border: none;
|
186 |
-
border-radius: 8px;
|
187 |
-
cursor: pointer;
|
188 |
-
font-size: 16px;
|
189 |
-
font-weight: 600;
|
190 |
-
transition: var(--transition);
|
191 |
-
position: relative;
|
192 |
overflow: hidden;
|
193 |
-
|
194 |
-
}
|
195 |
-
|
196 |
-
button:hover {
|
197 |
-
transform: translateY(-2px);
|
198 |
-
box-shadow: 0 7px 14px rgba(50, 50, 93, 0.1), 0 3px 6px rgba(0, 0, 0, 0.08);
|
199 |
}
|
200 |
|
201 |
-
|
202 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
203 |
}
|
204 |
|
205 |
-
|
206 |
-
content: '';
|
207 |
position: absolute;
|
208 |
top: 0;
|
209 |
left: 0;
|
210 |
width: 100%;
|
211 |
height: 100%;
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
|
|
216 |
}
|
217 |
|
218 |
-
|
219 |
-
|
|
|
|
|
|
|
220 |
}
|
221 |
|
222 |
-
.
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
white-space: pre-wrap;
|
229 |
-
word-wrap: break-word;
|
230 |
-
font-family: 'Roboto Mono', monospace;
|
231 |
-
font-size: 14px;
|
232 |
-
line-height: 1.7;
|
233 |
-
max-height: 300px;
|
234 |
-
overflow-y: auto;
|
235 |
-
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.05);
|
236 |
-
color: var(--text-color);
|
237 |
-
transition: background-color 0.3s ease, color 0.3s ease;
|
238 |
-
}
|
239 |
-
|
240 |
-
.confirmation-form {
|
241 |
-
margin-top: 30px;
|
242 |
-
display: none;
|
243 |
-
animation: fadeIn 0.5s ease-in-out;
|
244 |
-
}
|
245 |
-
|
246 |
-
.loading {
|
247 |
-
text-align: center;
|
248 |
-
margin: 20px 0;
|
249 |
-
display: none;
|
250 |
-
font-weight: 600;
|
251 |
-
color: var(--primary);
|
252 |
}
|
253 |
|
254 |
-
.
|
255 |
-
|
256 |
-
|
257 |
-
height: 20px;
|
258 |
-
border: 3px solid rgba(67, 97, 238, 0.3);
|
259 |
-
border-radius: 50%;
|
260 |
-
border-top-color: var(--primary);
|
261 |
-
animation: spin 1s ease-in-out infinite;
|
262 |
-
margin-right: 10px;
|
263 |
-
vertical-align: middle;
|
264 |
}
|
265 |
|
266 |
-
|
267 |
-
|
|
|
|
|
|
|
|
|
268 |
}
|
269 |
|
270 |
-
|
271 |
-
|
272 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
273 |
}
|
274 |
|
275 |
-
.
|
276 |
-
|
277 |
-
justify-content: center;
|
278 |
-
margin-bottom: 30px;
|
279 |
}
|
280 |
|
281 |
-
.
|
282 |
-
|
283 |
-
|
284 |
-
align-items: center;
|
285 |
-
width: 100px;
|
286 |
position: relative;
|
287 |
}
|
288 |
|
289 |
-
.
|
|
|
290 |
content: '';
|
291 |
position: absolute;
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
|
|
|
|
299 |
}
|
300 |
|
301 |
-
.
|
302 |
-
|
|
|
|
|
|
|
303 |
}
|
304 |
|
305 |
-
.
|
306 |
-
width: 30px;
|
307 |
-
height: 30px;
|
308 |
-
border-radius: 50%;
|
309 |
-
background-color: var(--input-border);
|
310 |
display: flex;
|
311 |
align-items: center;
|
312 |
-
|
313 |
-
color: var(--text-muted);
|
314 |
-
font-weight: 600;
|
315 |
-
margin-bottom: 8px;
|
316 |
-
position: relative;
|
317 |
-
z-index: 1;
|
318 |
-
transition: var(--transition);
|
319 |
}
|
320 |
|
321 |
-
.
|
322 |
-
|
323 |
-
color:
|
324 |
-
|
|
|
|
|
325 |
}
|
326 |
|
327 |
-
.
|
328 |
-
|
329 |
-
|
330 |
-
font-weight: 500;
|
331 |
-
transition: color 0.3s ease;
|
332 |
}
|
333 |
|
334 |
-
.
|
335 |
-
|
336 |
-
|
337 |
}
|
338 |
|
339 |
-
.
|
340 |
-
|
341 |
-
|
342 |
-
animation: fadeIn 0.5s ease-in-out;
|
343 |
}
|
344 |
|
345 |
-
.
|
346 |
-
|
347 |
-
|
348 |
-
margin-bottom: 20px;
|
349 |
}
|
350 |
|
351 |
-
.
|
352 |
-
|
353 |
-
|
354 |
-
color: var(--text-color);
|
355 |
-
margin-bottom: 10px;
|
356 |
-
transition: color 0.3s ease;
|
357 |
}
|
358 |
|
359 |
-
.
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
}
|
364 |
|
365 |
-
/*
|
366 |
-
.
|
367 |
-
position:
|
368 |
-
top:
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
color:
|
373 |
-
|
374 |
-
cursor: pointer;
|
375 |
-
width: auto;
|
376 |
-
padding: 5px;
|
377 |
display: flex;
|
378 |
-
|
379 |
justify-content: center;
|
380 |
-
|
381 |
-
transition:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
382 |
}
|
383 |
|
384 |
-
.
|
385 |
-
|
386 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
387 |
}
|
388 |
|
389 |
-
|
390 |
-
|
|
|
391 |
}
|
392 |
|
393 |
-
|
394 |
-
|
|
|
395 |
}
|
396 |
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
gap: 10px;
|
401 |
-
justify-content: center;
|
402 |
-
margin-top: 10px;
|
403 |
}
|
404 |
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
text-align: center;
|
409 |
-
font-size: 24px;
|
410 |
-
font-weight: 600;
|
411 |
-
border: 1px solid var(--input-border);
|
412 |
-
border-radius: 8px;
|
413 |
-
background-color: var(--input-bg);
|
414 |
-
color: var(--text-color);
|
415 |
-
transition: var(--transition);
|
416 |
-
padding: 0;
|
417 |
}
|
418 |
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
|
|
|
|
|
|
|
|
423 |
}
|
424 |
|
425 |
/* Responsive adjustments */
|
426 |
-
@media (max-width:
|
427 |
-
.
|
428 |
-
|
429 |
}
|
430 |
|
431 |
-
.
|
432 |
-
|
433 |
}
|
434 |
|
435 |
-
.
|
436 |
-
|
|
|
437 |
}
|
438 |
|
439 |
-
.
|
440 |
-
font-size:
|
441 |
}
|
442 |
|
443 |
-
.
|
444 |
-
|
445 |
-
|
|
|
446 |
}
|
447 |
|
448 |
-
|
449 |
-
|
|
|
450 |
}
|
451 |
|
452 |
-
.
|
453 |
-
|
454 |
}
|
455 |
|
456 |
-
.
|
457 |
-
width:
|
458 |
-
height: 50px;
|
459 |
-
font-size: 20px;
|
460 |
}
|
461 |
}
|
462 |
</style>
|
|
|
|
|
463 |
</head>
|
464 |
<body>
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
<h1>Auto Account System</h1>
|
473 |
-
</div>
|
474 |
-
<p class="subtitle">Securely create and verify an account in seconds</p>
|
475 |
-
|
476 |
-
<div class="step-indicator">
|
477 |
-
<div class="step active" id="step1">
|
478 |
-
<div class="step-circle">1</div>
|
479 |
-
<div class="step-title">Create Account</div>
|
480 |
-
</div>
|
481 |
-
<div class="step" id="step2">
|
482 |
-
<div class="step-circle">2</div>
|
483 |
-
<div class="step-title">Verify Email</div>
|
484 |
</div>
|
485 |
-
<div
|
486 |
-
|
487 |
-
|
488 |
</div>
|
489 |
</div>
|
|
|
490 |
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
<div class="
|
504 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
505 |
|
506 |
-
<div class="confirmation-form" id="confirmationForm">
|
507 |
-
<div class="form-group">
|
508 |
-
<label for="confirmationCode">Confirmation Code</label>
|
509 |
-
<div class="code-input-container">
|
510 |
-
<input type="text" class="code-input" maxlength="1" data-index="0">
|
511 |
-
<input type="text" class="code-input" maxlength="1" data-index="1">
|
512 |
-
<input type="text" class="code-input" maxlength="1" data-index="2">
|
513 |
-
<input type="text" class="code-input" maxlength="1" data-index="3">
|
514 |
-
<input type="text" class="code-input" maxlength="1" data-index="4">
|
515 |
-
<input type="text" class="code-input" maxlength="1" data-index="5">
|
516 |
-
</div>
|
517 |
-
<input type="hidden" id="confirmationCode" name="confirmationCode">
|
518 |
-
</div>
|
519 |
-
<button type="button" id="confirmButton">
|
520 |
-
Verify Email <i class="fas fa-check" style="margin-left: 8px;"></i>
|
521 |
-
</button>
|
522 |
-
</div>
|
523 |
|
524 |
-
|
525 |
-
|
526 |
-
<
|
527 |
-
<
|
528 |
-
<button type="button" id="newRequestBtn">
|
529 |
-
Start New Request <i class="fas fa-redo" style="margin-left: 8px;"></i>
|
530 |
-
</button>
|
531 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
532 |
|
533 |
-
|
534 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
535 |
</div>
|
536 |
</div>
|
537 |
|
538 |
-
<
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
const toggleIcon = themeToggle.querySelector('i');
|
543 |
-
|
544 |
-
// Check for saved theme preference or use preferred color scheme
|
545 |
-
const savedTheme = localStorage.getItem('theme');
|
546 |
-
if (savedTheme) {
|
547 |
-
htmlElement.setAttribute('data-theme', savedTheme);
|
548 |
-
updateThemeToggleIcon(savedTheme);
|
549 |
-
} else {
|
550 |
-
// Check if user prefers dark mode
|
551 |
-
const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
552 |
-
if (prefersDark) {
|
553 |
-
htmlElement.setAttribute('data-theme', 'dark');
|
554 |
-
updateThemeToggleIcon('dark');
|
555 |
-
}
|
556 |
-
}
|
557 |
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
toggleIcon.classList.remove('fa-sun');
|
564 |
-
toggleIcon.classList.add('fa-moon');
|
565 |
-
}
|
566 |
-
}
|
567 |
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
|
572 |
-
|
573 |
-
|
574 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
575 |
});
|
576 |
-
|
577 |
-
//
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
}
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
});
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
for (let i = 0; i < numericData.length && i + index < codeInputs.length; i++) {
|
613 |
-
codeInputs[i + index].value = numericData[i];
|
614 |
-
}
|
615 |
-
|
616 |
-
// Focus the next empty input or the last one
|
617 |
-
let nextEmptyIndex = index + numericData.length;
|
618 |
-
if (nextEmptyIndex >= codeInputs.length) {
|
619 |
-
nextEmptyIndex = codeInputs.length - 1;
|
620 |
-
}
|
621 |
-
codeInputs[nextEmptyIndex].focus();
|
622 |
-
|
623 |
-
updateHiddenInput();
|
624 |
-
});
|
625 |
});
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
// Function to generate a random username (7-15 letters and numbers)
|
632 |
-
function generateUsername() {
|
633 |
-
const length = Math.floor(Math.random() * (15 - 7 + 1)) + 7;
|
634 |
-
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
635 |
-
let username = '';
|
636 |
-
for (let i = 0; i < length; i++) {
|
637 |
-
username += characters.charAt(Math.floor(Math.random() * characters.length));
|
638 |
}
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
const char = characters.charAt(Math.floor(Math.random() * characters.length));
|
653 |
-
password += char;
|
654 |
-
|
655 |
-
if (/[A-Z]/.test(char)) hasUpper = true;
|
656 |
-
if (/[a-z]/.test(char)) hasLower = true;
|
657 |
-
if (/[0-9]/.test(char)) hasDigit = true;
|
658 |
-
if (/[\!\@\#\$\%\^\&\*\(\)]/.test(char)) hasSpecial = true;
|
659 |
-
}
|
660 |
}
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
const password = generatePassword();
|
683 |
-
accountPassword = password; // Store for later use
|
684 |
-
|
685 |
-
responseBox.textContent += `📝 Generated Credentials:\n`;
|
686 |
-
responseBox.textContent += `Username: ${username}\n`;
|
687 |
-
responseBox.textContent += `Password: ${password}\n\n`;
|
688 |
-
responseBox.textContent += `🔄 Processing request...\n`;
|
689 |
-
|
690 |
-
// Step 2: Sign up API call
|
691 |
-
const signupUrl = "https://api.puter.com/signup";
|
692 |
-
const signupHeaders = {
|
693 |
-
"Accept-Language": "en-US,en;q=0.9",
|
694 |
-
"X-Requested-With": "XMLHttpRequest",
|
695 |
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36",
|
696 |
-
"Accept": "*/*",
|
697 |
-
"Content-Type": "application/json",
|
698 |
-
"Origin": "https://puter.com",
|
699 |
-
"Referer": "https://puter.com/",
|
700 |
-
"Connection": "keep-alive"
|
701 |
-
};
|
702 |
-
const signupData = {
|
703 |
-
username,
|
704 |
-
email,
|
705 |
-
password,
|
706 |
-
send_confirmation_code: true,
|
707 |
-
p102xyzname: ""
|
708 |
-
};
|
709 |
-
|
710 |
-
const signupResponse = await fetch(signupUrl, {
|
711 |
-
method: 'POST',
|
712 |
-
headers: signupHeaders,
|
713 |
-
body: JSON.stringify(signupData)
|
714 |
});
|
715 |
-
|
716 |
-
if (!signupResponse.ok) {
|
717 |
-
throw new Error(`Signup failed with status: ${signupResponse.status}`);
|
718 |
-
}
|
719 |
-
|
720 |
-
const signupDataJson = await signupResponse.json();
|
721 |
-
accountToken = signupDataJson.token;
|
722 |
-
responseBox.textContent += `✅ Account created successfully!\n\n`;
|
723 |
-
responseBox.textContent += `📧 Verification code sent to ${email}\n`;
|
724 |
-
responseBox.textContent += `Please check your email and enter the code below.\n`;
|
725 |
-
|
726 |
-
// Show confirmation form and update step indicator
|
727 |
-
document.getElementById('confirmationForm').style.display = 'block';
|
728 |
-
document.getElementById('step1').classList.remove('active');
|
729 |
-
document.getElementById('step2').classList.add('active');
|
730 |
-
|
731 |
-
// Focus the first code input
|
732 |
-
codeInputs[0].focus();
|
733 |
-
|
734 |
-
loadingIndicator.style.display = 'none';
|
735 |
-
} catch (error) {
|
736 |
-
responseBox.textContent += `❌ Error: ${error.message}`;
|
737 |
-
loadingIndicator.style.display = 'none';
|
738 |
-
document.getElementById('accountForm').style.display = 'block';
|
739 |
}
|
740 |
});
|
741 |
-
|
742 |
-
//
|
743 |
-
|
744 |
-
|
745 |
-
|
746 |
-
|
747 |
-
|
748 |
-
|
749 |
-
|
750 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
751 |
}
|
752 |
-
|
753 |
-
|
754 |
-
|
755 |
-
|
756 |
-
|
757 |
-
|
758 |
-
|
759 |
-
|
760 |
-
|
761 |
-
|
762 |
-
|
763 |
-
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
|
768 |
-
|
769 |
-
|
770 |
-
|
771 |
-
|
772 |
-
|
773 |
-
|
774 |
-
|
775 |
-
|
776 |
-
|
777 |
-
|
778 |
-
|
779 |
-
|
780 |
-
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
if (
|
785 |
-
|
786 |
}
|
787 |
-
|
788 |
-
responseBox.textContent += `✅ Email confirmed successfully.\n\n`;
|
789 |
-
responseBox.textContent += `🔄 Finalizing process...\n`;
|
790 |
-
|
791 |
-
// Step 4: Delete account
|
792 |
-
const deleteAccountUrl = "https://api.puter.com/delete-own-user";
|
793 |
-
const deleteAccountData = { password: accountPassword };
|
794 |
-
|
795 |
-
const deleteAccountResponse = await fetch(deleteAccountUrl, {
|
796 |
-
method: 'POST',
|
797 |
-
headers: headers,
|
798 |
-
body: JSON.stringify(deleteAccountData)
|
799 |
-
});
|
800 |
-
|
801 |
-
if (!deleteAccountResponse.ok) {
|
802 |
-
throw new Error(`Account deletion failed with status: ${deleteAccountResponse.status}`);
|
803 |
-
}
|
804 |
-
|
805 |
-
const deleteAccountDataJson = await deleteAccountResponse.json();
|
806 |
-
responseBox.textContent += `✅ Process completed successfully.`;
|
807 |
-
|
808 |
-
// Update step indicator and show success message
|
809 |
-
document.getElementById('step2').classList.remove('active');
|
810 |
-
document.getElementById('step3').classList.add('active');
|
811 |
-
document.getElementById('successMessage').style.display = 'block';
|
812 |
-
|
813 |
-
} catch (error) {
|
814 |
-
responseBox.textContent += `❌ Error: ${error.message}`;
|
815 |
-
document.getElementById('confirmationForm').style.display = 'block';
|
816 |
-
} finally {
|
817 |
-
loadingIndicator.style.display = 'none';
|
818 |
}
|
819 |
-
});
|
820 |
-
|
821 |
-
// Reset form for new request
|
822 |
-
document.getElementById('newRequestBtn').addEventListener('click', function() {
|
823 |
-
document.getElementById('email').value = '';
|
824 |
-
document.getElementById('confirmationCode').value = '';
|
825 |
-
codeInputs.forEach(input => input.value = '');
|
826 |
-
document.getElementById('responseBox').textContent = '';
|
827 |
-
|
828 |
-
document.getElementById('successMessage').style.display = 'none';
|
829 |
-
document.getElementById('accountForm').style.display = 'block';
|
830 |
-
|
831 |
-
document.getElementById('step3').classList.remove('active');
|
832 |
-
document.getElementById('step2').classList.remove('active');
|
833 |
-
document.getElementById('step1').classList.add('active');
|
834 |
-
});
|
835 |
</script>
|
|
|
836 |
</body>
|
837 |
</html>
|
|
|
1 |
<!DOCTYPE html>
|
2 |
+
<html lang="en">
|
3 |
<head>
|
4 |
<meta charset="UTF-8">
|
5 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6 |
+
<title>TERMINAL_ACCESS: Western Wall Surveillance</title>
|
|
|
7 |
<style>
|
8 |
:root {
|
9 |
+
--neon-green: #0f0;
|
10 |
+
--dark-bg: #000;
|
11 |
+
--terminal-bg: rgba(0, 10, 2, 0.9);
|
12 |
+
--grid-color: rgba(0, 255, 0, 0.05);
|
13 |
+
--text-glow: 0 0 5px rgba(0, 255, 0, 0.7);
|
14 |
+
--border-glow: 0 0 10px rgba(0, 255, 0, 0.5);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
}
|
16 |
|
17 |
* {
|
18 |
margin: 0;
|
19 |
padding: 0;
|
20 |
box-sizing: border-box;
|
21 |
+
font-family: 'Courier New', monospace;
|
22 |
}
|
23 |
|
24 |
body {
|
25 |
+
background-color: var(--dark-bg);
|
26 |
+
color: var(--neon-green);
|
27 |
+
background-image:
|
28 |
+
linear-gradient(var(--grid-color) 1px, transparent 1px),
|
29 |
+
linear-gradient(90deg, var(--grid-color) 1px, transparent 1px);
|
30 |
+
background-size: 20px 20px;
|
31 |
+
padding: 20px;
|
32 |
min-height: 100vh;
|
33 |
display: flex;
|
34 |
+
flex-direction: column;
|
35 |
+
overflow-x: hidden;
|
|
|
|
|
|
|
|
|
36 |
}
|
37 |
|
38 |
+
header {
|
39 |
+
text-align: center;
|
40 |
+
margin-bottom: 20px;
|
41 |
+
border-bottom: 1px solid var(--neon-green);
|
42 |
+
padding-bottom: 15px;
|
43 |
+
text-shadow: var(--text-glow);
|
|
|
|
|
|
|
|
|
|
|
44 |
}
|
45 |
|
46 |
+
.glitch-text {
|
47 |
+
font-size: 2rem;
|
48 |
+
font-weight: bold;
|
49 |
+
letter-spacing: 2px;
|
50 |
+
animation: glitch 3s infinite alternate;
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
}
|
52 |
|
53 |
+
.status-bar {
|
54 |
+
display: flex;
|
55 |
+
justify-content: space-between;
|
56 |
+
margin-bottom: 10px;
|
57 |
+
font-size: 0.8rem;
|
58 |
+
padding: 5px;
|
59 |
+
border: 1px solid var(--neon-green);
|
60 |
+
box-shadow: var(--border-glow);
|
|
|
|
|
|
|
61 |
}
|
62 |
|
63 |
+
.status-item {
|
|
|
|
|
64 |
display: flex;
|
65 |
align-items: center;
|
|
|
66 |
}
|
67 |
|
68 |
+
.status-indicator {
|
69 |
+
width: 10px;
|
70 |
+
height: 10px;
|
71 |
+
border-radius: 50%;
|
72 |
+
background-color: var(--neon-green);
|
73 |
+
margin-right: 5px;
|
74 |
+
animation: blink 1.5s infinite;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
75 |
}
|
76 |
|
77 |
+
.terminal-window {
|
78 |
+
background-color: var(--terminal-bg);
|
79 |
+
border: 1px solid var(--neon-green);
|
80 |
+
border-radius: 5px;
|
81 |
+
padding: 15px;
|
82 |
+
margin-bottom: 20px;
|
83 |
+
box-shadow: var(--border-glow);
|
84 |
}
|
85 |
|
86 |
+
.terminal-header {
|
87 |
+
display: flex;
|
88 |
+
justify-content: space-between;
|
89 |
+
margin-bottom: 10px;
|
90 |
+
border-bottom: 1px dashed var(--neon-green);
|
91 |
+
padding-bottom: 5px;
|
|
|
92 |
}
|
93 |
|
94 |
+
.terminal-title {
|
95 |
+
font-weight: bold;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
96 |
}
|
97 |
|
98 |
+
.terminal-content {
|
99 |
+
font-size: 0.9rem;
|
100 |
+
margin-bottom: 10px;
|
|
|
|
|
101 |
}
|
102 |
|
103 |
+
.terminal-prompt::before {
|
104 |
+
content: "root@surveillance:~$ ";
|
|
|
|
|
|
|
|
|
105 |
}
|
106 |
|
107 |
+
.terminal-prompt {
|
108 |
+
display: inline-block;
|
109 |
width: 100%;
|
110 |
+
white-space: nowrap;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
overflow: hidden;
|
112 |
+
animation: typing 3s steps(60, end);
|
|
|
|
|
|
|
|
|
|
|
113 |
}
|
114 |
|
115 |
+
.webcam-container {
|
116 |
+
position: relative;
|
117 |
+
width: 100%;
|
118 |
+
padding-top: 10px;
|
119 |
+
overflow: hidden;
|
120 |
+
border: 1px solid var(--neon-green);
|
121 |
+
border-radius: 5px;
|
122 |
+
box-shadow: var(--border-glow);
|
123 |
}
|
124 |
|
125 |
+
.webcam-overlay {
|
|
|
126 |
position: absolute;
|
127 |
top: 0;
|
128 |
left: 0;
|
129 |
width: 100%;
|
130 |
height: 100%;
|
131 |
+
pointer-events: none;
|
132 |
+
background:
|
133 |
+
linear-gradient(rgba(0, 255, 0, 0.1), rgba(0, 255, 0, 0.1)),
|
134 |
+
repeating-linear-gradient(transparent, transparent 2px, rgba(0, 0, 0, 0.1) 3px, rgba(0, 0, 0, 0.1) 3px);
|
135 |
+
z-index: 10;
|
136 |
}
|
137 |
|
138 |
+
.webcam-frame {
|
139 |
+
width: 100%;
|
140 |
+
height: 70vh;
|
141 |
+
border: none;
|
142 |
+
display: block;
|
143 |
}
|
144 |
|
145 |
+
.data-stream {
|
146 |
+
height: 80px;
|
147 |
+
overflow: hidden;
|
148 |
+
margin-top: 20px;
|
149 |
+
font-size: 0.7rem;
|
150 |
+
opacity: 0.8;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
151 |
}
|
152 |
|
153 |
+
.data-line {
|
154 |
+
white-space: nowrap;
|
155 |
+
animation: scrollLeft 20s linear infinite;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
156 |
}
|
157 |
|
158 |
+
footer {
|
159 |
+
margin-top: auto;
|
160 |
+
text-align: center;
|
161 |
+
font-size: 0.8rem;
|
162 |
+
padding: 10px;
|
163 |
+
border-top: 1px solid var(--neon-green);
|
164 |
}
|
165 |
|
166 |
+
/* Audio control button */
|
167 |
+
.audio-control {
|
168 |
+
position: fixed;
|
169 |
+
top: 20px;
|
170 |
+
right: 20px;
|
171 |
+
z-index: 100;
|
172 |
+
display: flex;
|
173 |
+
align-items: center;
|
174 |
+
gap: 10px;
|
175 |
+
background-color: var(--terminal-bg);
|
176 |
+
border: 1px solid var(--neon-green);
|
177 |
+
border-radius: 5px;
|
178 |
+
padding: 8px 12px;
|
179 |
+
box-shadow: var(--border-glow);
|
180 |
+
cursor: pointer;
|
181 |
+
transition: all 0.3s ease;
|
182 |
}
|
183 |
|
184 |
+
.audio-control:hover {
|
185 |
+
background-color: rgba(0, 20, 5, 0.9);
|
|
|
|
|
186 |
}
|
187 |
|
188 |
+
.audio-icon {
|
189 |
+
width: 20px;
|
190 |
+
height: 20px;
|
|
|
|
|
191 |
position: relative;
|
192 |
}
|
193 |
|
194 |
+
.audio-icon::before,
|
195 |
+
.audio-icon::after {
|
196 |
content: '';
|
197 |
position: absolute;
|
198 |
+
background-color: var(--neon-green);
|
199 |
+
}
|
200 |
+
|
201 |
+
.audio-icon::before {
|
202 |
+
width: 8px;
|
203 |
+
height: 8px;
|
204 |
+
border-radius: 0 8px 8px 0;
|
205 |
+
left: 0;
|
206 |
+
top: 6px;
|
207 |
}
|
208 |
|
209 |
+
.audio-icon::after {
|
210 |
+
width: 2px;
|
211 |
+
height: 12px;
|
212 |
+
left: 0;
|
213 |
+
top: 4px;
|
214 |
}
|
215 |
|
216 |
+
.audio-waves {
|
|
|
|
|
|
|
|
|
217 |
display: flex;
|
218 |
align-items: center;
|
219 |
+
height: 16px;
|
|
|
|
|
|
|
|
|
|
|
|
|
220 |
}
|
221 |
|
222 |
+
.audio-wave {
|
223 |
+
width: 2px;
|
224 |
+
background-color: var(--neon-green);
|
225 |
+
margin-right: 2px;
|
226 |
+
border-radius: 1px;
|
227 |
+
animation: soundWave 1s infinite alternate;
|
228 |
}
|
229 |
|
230 |
+
.audio-wave:nth-child(1) {
|
231 |
+
height: 8px;
|
232 |
+
animation-delay: 0.1s;
|
|
|
|
|
233 |
}
|
234 |
|
235 |
+
.audio-wave:nth-child(2) {
|
236 |
+
height: 12px;
|
237 |
+
animation-delay: 0.2s;
|
238 |
}
|
239 |
|
240 |
+
.audio-wave:nth-child(3) {
|
241 |
+
height: 16px;
|
242 |
+
animation-delay: 0.3s;
|
|
|
243 |
}
|
244 |
|
245 |
+
.audio-wave:nth-child(4) {
|
246 |
+
height: 10px;
|
247 |
+
animation-delay: 0.4s;
|
|
|
248 |
}
|
249 |
|
250 |
+
.audio-control.muted .audio-wave {
|
251 |
+
animation: none;
|
252 |
+
height: 2px;
|
|
|
|
|
|
|
253 |
}
|
254 |
|
255 |
+
.audio-label {
|
256 |
+
font-size: 0.8rem;
|
257 |
+
text-transform: uppercase;
|
258 |
+
letter-spacing: 1px;
|
259 |
}
|
260 |
|
261 |
+
/* Loading screen */
|
262 |
+
.loading-screen {
|
263 |
+
position: fixed;
|
264 |
+
top: 0;
|
265 |
+
left: 0;
|
266 |
+
width: 100%;
|
267 |
+
height: 100%;
|
268 |
+
background-color: #000;
|
269 |
+
z-index: 9999;
|
|
|
|
|
|
|
270 |
display: flex;
|
271 |
+
flex-direction: column;
|
272 |
justify-content: center;
|
273 |
+
align-items: center;
|
274 |
+
transition: opacity 1s ease-out;
|
275 |
+
}
|
276 |
+
|
277 |
+
.loading-content {
|
278 |
+
text-align: center;
|
279 |
+
color: var(--neon-green);
|
280 |
+
}
|
281 |
+
|
282 |
+
.loading-image {
|
283 |
+
width: 200px;
|
284 |
+
height: 200px;
|
285 |
+
border-radius: 50%;
|
286 |
+
border: 3px solid var(--neon-green);
|
287 |
+
margin-bottom: 20px;
|
288 |
+
box-shadow: 0 0 20px rgba(0, 255, 0, 0.7);
|
289 |
+
object-fit: cover;
|
290 |
}
|
291 |
|
292 |
+
.loading-text {
|
293 |
+
font-family: 'Amiri', 'Arial', sans-serif;
|
294 |
+
font-size: 2rem;
|
295 |
+
margin-bottom: 30px;
|
296 |
+
text-shadow: var(--text-glow);
|
297 |
+
direction: rtl;
|
298 |
+
}
|
299 |
+
|
300 |
+
.loading-progress-container {
|
301 |
+
width: 300px;
|
302 |
+
height: 10px;
|
303 |
+
background-color: rgba(0, 255, 0, 0.2);
|
304 |
+
border-radius: 5px;
|
305 |
+
overflow: hidden;
|
306 |
+
margin-bottom: 10px;
|
307 |
+
margin-left: auto; /* Add this line */
|
308 |
+
margin-right: auto; /* Add this line */
|
309 |
+
}
|
310 |
+
|
311 |
+
.loading-progress-bar {
|
312 |
+
height: 100%;
|
313 |
+
width: 0%;
|
314 |
+
background-color: var(--neon-green);
|
315 |
+
transition: width 0.5s;
|
316 |
+
}
|
317 |
+
|
318 |
+
.loading-percentage {
|
319 |
+
font-size: 1rem;
|
320 |
+
letter-spacing: 2px;
|
321 |
+
text-align: center; /* Add this line */
|
322 |
+
width: 100%; /* Add this line */
|
323 |
+
}
|
324 |
+
|
325 |
+
.loading-message {
|
326 |
+
margin-top: 20px;
|
327 |
+
font-size: 0.9rem;
|
328 |
+
opacity: 0.8;
|
329 |
+
max-width: 80%;
|
330 |
+
text-align: center;
|
331 |
}
|
332 |
|
333 |
+
@keyframes soundWave {
|
334 |
+
0% { height: 4px; }
|
335 |
+
100% { height: 16px; }
|
336 |
}
|
337 |
|
338 |
+
@keyframes blink {
|
339 |
+
0%, 100% { opacity: 1; }
|
340 |
+
50% { opacity: 0.3; }
|
341 |
}
|
342 |
|
343 |
+
@keyframes typing {
|
344 |
+
from { width: 0; }
|
345 |
+
to { width: 100%; }
|
|
|
|
|
|
|
346 |
}
|
347 |
|
348 |
+
@keyframes scrollLeft {
|
349 |
+
0% { transform: translateX(100%); }
|
350 |
+
100% { transform: translateX(-100%); }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
351 |
}
|
352 |
|
353 |
+
@keyframes glitch {
|
354 |
+
0% { text-shadow: 0.05em 0 0 rgba(255, 0, 0, 0.75), -0.05em -0.025em 0 rgba(0, 255, 0, 0.75), -0.025em 0.05em 0 rgba(0, 0, 255, 0.75); }
|
355 |
+
14% { text-shadow: 0.05em 0 0 rgba(255, 0, 0, 0.75), -0.05em -0.025em 0 rgba(0, 255, 0, 0.75), -0.025em 0.05em 0 rgba(0, 0, 255, 0.75); }
|
356 |
+
15% { text-shadow: -0.05em -0.025em 0 rgba(255, 0, 0, 0.75), 0.025em 0.025em 0 rgba(0, 255, 0, 0.75), -0.05em -0.05em 0 rgba(0, 0, 255, 0.75); }
|
357 |
+
49% { text-shadow: -0.05em -0.025em 0 rgba(255, 0, 0, 0.75), 0.025em 0.025em 0 rgba(0, 255, 0, 0.75), -0.05em -0.05em 0 rgba(0, 0, 255, 0.75); }
|
358 |
+
50% { text-shadow: 0.025em 0.05em 0 rgba(255, 0, 0, 0.75), 0.05em 0 0 rgba(0, 255, 0, 0.75), 0 -0.05em 0 rgba(0, 0, 255, 0.75); }
|
359 |
+
99% { text-shadow: 0.025em 0.05em 0 rgba(255, 0, 0, 0.75), 0.05em 0 0 rgba(0, 255, 0, 0.75), 0 -0.05em 0 rgba(0, 0, 255, 0.75); }
|
360 |
+
100% { text-shadow: -0.025em 0 0 rgba(255, 0, 0, 0.75), -0.025em -0.025em 0 rgba(0, 255, 0, 0.75), -0.025em -0.05em 0 rgba(0, 0, 255, 0.75); }
|
361 |
}
|
362 |
|
363 |
/* Responsive adjustments */
|
364 |
+
@media (max-width: 768px) {
|
365 |
+
.glitch-text {
|
366 |
+
font-size: 1.5rem;
|
367 |
}
|
368 |
|
369 |
+
.webcam-frame {
|
370 |
+
height: 50vh;
|
371 |
}
|
372 |
|
373 |
+
.status-bar {
|
374 |
+
flex-direction: column;
|
375 |
+
gap: 5px;
|
376 |
}
|
377 |
|
378 |
+
.terminal-content {
|
379 |
+
font-size: 0.8rem;
|
380 |
}
|
381 |
|
382 |
+
.audio-control {
|
383 |
+
top: 10px;
|
384 |
+
right: 10px;
|
385 |
+
padding: 5px 8px;
|
386 |
}
|
387 |
|
388 |
+
.loading-image {
|
389 |
+
width: 150px;
|
390 |
+
height: 150px;
|
391 |
}
|
392 |
|
393 |
+
.loading-text {
|
394 |
+
font-size: 1.5rem;
|
395 |
}
|
396 |
|
397 |
+
.loading-progress-container {
|
398 |
+
width: 250px;
|
|
|
|
|
399 |
}
|
400 |
}
|
401 |
</style>
|
402 |
+
<!-- Add Amiri font for Arabic text -->
|
403 |
+
<link href="https://fonts.googleapis.com/css2?family=Amiri:wght@400;700&display=swap" rel="stylesheet">
|
404 |
</head>
|
405 |
<body>
|
406 |
+
<!-- Loading Screen -->
|
407 |
+
<div id="loadingScreen" class="loading-screen">
|
408 |
+
<div class="loading-content">
|
409 |
+
<img src="abu_aubida.png" alt="Abu Aubida" class="loading-image">
|
410 |
+
<div class="loading-text">جاري تحميل نظام المراقبة</div>
|
411 |
+
<div class="loading-progress-container">
|
412 |
+
<div id="loadingProgressBar" class="loading-progress-bar"></div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
413 |
</div>
|
414 |
+
<div id="loadingPercentage" class="loading-percentage">0%</div>
|
415 |
+
<div class="loading-message">
|
416 |
+
تحميل وحدات المراقبة... إنشاء اتصال آمن... تجاوز بروتوكولات الأمان...
|
417 |
</div>
|
418 |
</div>
|
419 |
+
</div>
|
420 |
|
421 |
+
<header>
|
422 |
+
<h1 class="glitch-text">SURVEILLANCE SYSTEM</h1>
|
423 |
+
<p>ACCESS LEVEL: CLASSIFIED</p>
|
424 |
+
</header>
|
425 |
+
|
426 |
+
<!-- Audio Control Button -->
|
427 |
+
<div id="audioControl" class="audio-control">
|
428 |
+
<div class="audio-icon"></div>
|
429 |
+
<div class="audio-waves">
|
430 |
+
<div class="audio-wave"></div>
|
431 |
+
<div class="audio-wave"></div>
|
432 |
+
<div class="audio-wave"></div>
|
433 |
+
<div class="audio-wave"></div>
|
434 |
</div>
|
435 |
+
<span class="audio-label">AUDIO</span>
|
436 |
+
</div>
|
437 |
+
|
438 |
+
<!-- Background Audio -->
|
439 |
+
<audio id="bgAudio" autoplay loop>
|
440 |
+
<source src="torabora__1727352333.m4a" type="audio/mp4">
|
441 |
+
Your browser does not support the audio element.
|
442 |
+
</audio>
|
443 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
444 |
|
445 |
+
<div class="status-bar">
|
446 |
+
<div class="status-item">
|
447 |
+
<div class="status-indicator"></div>
|
448 |
+
<span>LIVE FEED</span>
|
|
|
|
|
|
|
449 |
</div>
|
450 |
+
<div class="status-item">
|
451 |
+
<span id="current-time">--:--:--</span>
|
452 |
+
</div>
|
453 |
+
<div class="status-item">
|
454 |
+
<span>ENCRYPTION: ACTIVE</span>
|
455 |
+
</div>
|
456 |
+
</div>
|
457 |
|
458 |
+
<div class="terminal-window">
|
459 |
+
<div class="terminal-header">
|
460 |
+
<div class="terminal-title">TERMINAL ACCESS</div>
|
461 |
+
<div class="terminal-controls">SESSION: #7F3D2A9B</div>
|
462 |
+
</div>
|
463 |
+
<div class="terminal-content">
|
464 |
+
<p class="terminal-prompt">initializing surveillance module...</p>
|
465 |
+
<p class="terminal-prompt">establishing secure connection to target location...</p>
|
466 |
+
<p class="terminal-prompt">bypassing security protocols...</p>
|
467 |
+
<p class="terminal-prompt">accessing Western Wall live feed...</p>
|
468 |
+
<p class="terminal-prompt">connection established. rendering visual data...</p>
|
469 |
</div>
|
470 |
</div>
|
471 |
|
472 |
+
<div class="webcam-container">
|
473 |
+
<div class="webcam-overlay"></div>
|
474 |
+
<iframe class="webcam-frame" src="https://share.earthcam.net/tJ90CoLmq7TzrY396Yd88FszUBQXSsaa2UfVVJUL4rU!.tJ90CoLmq7TzrY396Yd88Oz5cQ2aIzlk7JZQa_rfG-I!/aish_hatorah_western_wall_webcam/western_wall_cam/live" allowfullscreen></iframe>
|
475 |
+
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
476 |
|
477 |
+
<div class="data-stream">
|
478 |
+
<div class="data-line">
|
479 |
+
01001001 01101110 01110100 01100101 01110010 01100011 01100101 01110000 01110100 01101001 01101110 01100111 00100000 01100100 01100001 01110100 01100001 00100000 01110011 01110100 01110010 01100101 01100001 01101101 00100000 01100110 01110010 01101111 01101101 00100000 01110100 01100001 01110010 01100111 01100101 01110100 00100000 01101100 01101111 01100011 01100001 01110100 01101001 01101111 01101110 00101110 00100000 01000001 01101110 01100001 01101100 01111001 01111010 01101001 01101110 01100111 00100000 01110000 01100001 01110100 01110100 01100101 01110010 01101110 01110011 00101110 00100000 01010011 01100101 01100011 01110101 01110010 01101001 01110100 01111001 00100000 01101100 01100101 01110110 01100101 01101100 00111010 00100000 01000001 01101100 01110000 01101000 01100001 00101110
|
480 |
+
</div>
|
481 |
+
</div>
|
|
|
|
|
|
|
|
|
482 |
|
483 |
+
<footer>
|
484 |
+
<p>SECURE CONNECTION ESTABLISHED | LOCATION: 31.7767° N, 35.2345° E | SYSTEM v3.1.4</p>
|
485 |
+
</footer>
|
486 |
|
487 |
+
<script>
|
488 |
+
const loadingScreen = document.getElementById('loadingScreen');
|
489 |
+
const progressBar = document.getElementById('loadingProgressBar');
|
490 |
+
const percentageText = document.getElementById('loadingPercentage');
|
491 |
+
const audioControl = document.getElementById('audioControl');
|
492 |
+
const bgAudio = document.getElementById('bgAudio');
|
493 |
+
const terminalContent = document.querySelector('.terminal-content');
|
494 |
+
|
495 |
+
let audioPlaying = false;
|
496 |
+
|
497 |
+
// Set initial volume and force autoplay muted
|
498 |
+
bgAudio.volume = 0.6;
|
499 |
+
bgAudio.muted = true;
|
500 |
+
bgAudio.play().catch(e => {
|
501 |
+
console.log("Muted autoplay might be blocked in some browsers:", e);
|
502 |
});
|
503 |
+
|
504 |
+
// Function to unmute and play audio on first user interaction
|
505 |
+
function unmuteAudioOnInteraction() {
|
506 |
+
if (!audioPlaying) {
|
507 |
+
bgAudio.muted = false;
|
508 |
+
bgAudio.volume = 0.6;
|
509 |
+
bgAudio.play().then(() => {
|
510 |
+
audioPlaying = true;
|
511 |
+
audioControl.classList.remove('muted');
|
512 |
+
if (!loadingScreen || loadingScreen.style.display === 'none') {
|
513 |
+
addAudioMessage('on');
|
514 |
+
}
|
515 |
+
}).catch(e => {
|
516 |
+
console.log("Auto-play prevented after unmute:", e);
|
517 |
+
});
|
518 |
+
}
|
519 |
+
|
520 |
+
// Remove all user interaction listeners after first interaction
|
521 |
+
document.body.removeEventListener('mousemove', unmuteAudioOnInteraction);
|
522 |
+
document.body.removeEventListener('touchstart', unmuteAudioOnInteraction);
|
523 |
+
document.body.removeEventListener('keydown', unmuteAudioOnInteraction);
|
524 |
+
document.body.removeEventListener('click', unmuteAudioOnInteraction);
|
525 |
+
}
|
526 |
+
|
527 |
+
// Run when page is ready
|
528 |
+
document.addEventListener('DOMContentLoaded', function () {
|
529 |
+
// Set up unmute triggers
|
530 |
+
document.body.addEventListener('mousemove', unmuteAudioOnInteraction, { once: true });
|
531 |
+
document.body.addEventListener('touchstart', unmuteAudioOnInteraction, { once: true });
|
532 |
+
document.body.addEventListener('keydown', unmuteAudioOnInteraction, { once: true });
|
533 |
+
document.body.addEventListener('click', unmuteAudioOnInteraction, { once: true });
|
534 |
+
|
535 |
+
// Try unmuting shortly after load (some browsers may allow it)
|
536 |
+
setTimeout(() => {
|
537 |
+
unmuteAudioOnInteraction();
|
538 |
+
}, 500);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
539 |
});
|
540 |
+
|
541 |
+
// Force audio to play on iOS when user taps screen
|
542 |
+
window.addEventListener('touchend', function () {
|
543 |
+
if (!audioPlaying) {
|
544 |
+
unmuteAudioOnInteraction();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
545 |
}
|
546 |
+
}, { once: true });
|
547 |
+
|
548 |
+
// Add terminal message about audio status
|
549 |
+
function addAudioMessage(status) {
|
550 |
+
const p = document.createElement('p');
|
551 |
+
p.className = 'terminal-prompt';
|
552 |
+
p.textContent = status === 'on'
|
553 |
+
? "ambient audio module activated..."
|
554 |
+
: "ambient audio module deactivated...";
|
555 |
+
terminalContent.appendChild(p);
|
556 |
+
|
557 |
+
if (terminalContent.children.length > 10) {
|
558 |
+
terminalContent.removeChild(terminalContent.children[0]);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
559 |
}
|
560 |
+
}
|
561 |
+
|
562 |
+
// Toggle audio on control button click
|
563 |
+
audioControl.addEventListener('click', function () {
|
564 |
+
if (audioPlaying) {
|
565 |
+
bgAudio.pause();
|
566 |
+
audioControl.classList.add('muted');
|
567 |
+
addAudioMessage('off');
|
568 |
+
audioPlaying = false;
|
569 |
+
} else {
|
570 |
+
bgAudio.play().then(() => {
|
571 |
+
bgAudio.muted = false;
|
572 |
+
audioControl.classList.remove('muted');
|
573 |
+
addAudioMessage('on');
|
574 |
+
audioPlaying = true;
|
575 |
+
}).catch(e => {
|
576 |
+
console.log("Audio playback failed:", e);
|
577 |
+
const p = document.createElement('p');
|
578 |
+
p.className = 'terminal-prompt';
|
579 |
+
p.textContent = "audio module requires user interaction to activate...";
|
580 |
+
terminalContent.appendChild(p);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
581 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
582 |
}
|
583 |
});
|
584 |
+
|
585 |
+
// Loading screen progress simulation
|
586 |
+
let progress = 0;
|
587 |
+
const loadingInterval = setInterval(() => {
|
588 |
+
progress += Math.random() * 5;
|
589 |
+
if (progress >= 100) {
|
590 |
+
progress = 100;
|
591 |
+
clearInterval(loadingInterval);
|
592 |
+
|
593 |
+
setTimeout(() => {
|
594 |
+
loadingScreen.style.opacity = '0';
|
595 |
+
setTimeout(() => {
|
596 |
+
loadingScreen.style.display = 'none';
|
597 |
+
if (audioPlaying) {
|
598 |
+
addAudioMessage('on');
|
599 |
+
}
|
600 |
+
}, 1000);
|
601 |
+
}, 500);
|
602 |
}
|
603 |
+
|
604 |
+
progressBar.style.width = `${progress}%`;
|
605 |
+
percentageText.textContent = `${Math.floor(progress)}%`;
|
606 |
+
}, 200);
|
607 |
+
|
608 |
+
// Clock update
|
609 |
+
function updateTime() {
|
610 |
+
const now = new Date();
|
611 |
+
const timeElement = document.getElementById('current-time');
|
612 |
+
timeElement.textContent = now.toTimeString().split(' ')[0];
|
613 |
+
}
|
614 |
+
setInterval(updateTime, 1000);
|
615 |
+
updateTime();
|
616 |
+
|
617 |
+
// Random terminal messages
|
618 |
+
const messages = [
|
619 |
+
"analyzing crowd patterns...",
|
620 |
+
"facial recognition active...",
|
621 |
+
"monitoring movement at coordinates 31.7767° N, 35.2345° E...",
|
622 |
+
"satellite uplink stable...",
|
623 |
+
"processing visual data...",
|
624 |
+
"enhancing image quality...",
|
625 |
+
"tracking target area...",
|
626 |
+
"maintaining secure connection..."
|
627 |
+
];
|
628 |
+
|
629 |
+
setInterval(() => {
|
630 |
+
if (Math.random() > 0.7) {
|
631 |
+
const p = document.createElement('p');
|
632 |
+
p.className = 'terminal-prompt';
|
633 |
+
p.textContent = messages[Math.floor(Math.random() * messages.length)];
|
634 |
+
terminalContent.appendChild(p);
|
635 |
+
if (terminalContent.children.length > 10) {
|
636 |
+
terminalContent.removeChild(terminalContent.children[0]);
|
637 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
638 |
}
|
639 |
+
}, 3000);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
640 |
</script>
|
641 |
+
|
642 |
</body>
|
643 |
</html>
|