MySafeCode commited on
Commit
69d11f7
·
verified ·
1 Parent(s): 03474fd

Upload index.html

Browse files
Files changed (1) hide show
  1. templates/index.html +261 -0
templates/index.html ADDED
@@ -0,0 +1,261 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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>Weird Privilege Space</title>
7
+ <link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
8
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
9
+ </head>
10
+ <body>
11
+ <div class="container">
12
+ <header class="header">
13
+ <h1>🤖 WEIRD PRIVILEGE SPACE 🛸</h1>
14
+ <p class="subtitle">Grab your simulated privilege every 4 hours</p>
15
+ </header>
16
+
17
+ <div class="main-content">
18
+ <!-- Wallet Section -->
19
+ <div class="card wallet-card">
20
+ <h2><i class="fas fa-wallet"></i> NANO WALLET</h2>
21
+ <div class="wallet-info" id="walletInfo">
22
+ <div class="wallet-row">
23
+ <span class="label">Address:</span>
24
+ <span class="value" id="walletAddress">{{ wallet.address }}</span>
25
+ <button onclick="copyAddress()" class="copy-btn">
26
+ <i class="far fa-copy"></i>
27
+ </button>
28
+ </div>
29
+ <div class="wallet-row">
30
+ <span class="label">Balance:</span>
31
+ <span class="value" id="walletBalance">{{ wallet.balance }}</span>
32
+ <span class="currency">NANO</span>
33
+ </div>
34
+ <div class="wallet-row">
35
+ <span class="label">User ID:</span>
36
+ <span class="value">{{ user_id }}</span>
37
+ </div>
38
+ <div class="qr-container">
39
+ <img src="{{ url_for('generate_qr', address=wallet.address) }}"
40
+ alt="QR Code"
41
+ class="qr-code">
42
+ <p class="qr-label">Scan to receive</p>
43
+ </div>
44
+ </div>
45
+ <div class="wallet-actions">
46
+ <button onclick="downloadWallet()" class="btn">
47
+ <i class="fas fa-download"></i> Download Wallet
48
+ </button>
49
+ <button onclick="updateWallet()" class="btn secondary">
50
+ <i class="fas fa-sync-alt"></i> Update Balance
51
+ </button>
52
+ </div>
53
+ <div class="update-timer">
54
+ <i class="fas fa-clock"></i>
55
+ Auto-updates every <span id="countdown">15</span> seconds
56
+ </div>
57
+ </div>
58
+
59
+ <!-- Privilege Section -->
60
+ <div class="card privilege-card">
61
+ <h2><i class="fas fa-crown"></i> GRAB PRIVILEGE</h2>
62
+ <p class="instruction">Choose your privilege type. Each can be grabbed every 4 hours.</p>
63
+
64
+ <div class="privilege-options">
65
+ <div class="privilege-option white-privilege">
66
+ <h3><i class="fas fa-user-circle"></i> WHITE PRIVILEGE</h3>
67
+ <p>Standard human privilege simulation</p>
68
+ <button onclick="grabPrivilege('white')" class="btn privilege-btn">
69
+ <i class="fas fa-hand-paper"></i> GRAB
70
+ </button>
71
+ <div class="cooldown" id="cooldown-white">
72
+ Checking...
73
+ </div>
74
+ </div>
75
+
76
+ <div class="privilege-option black-privilege">
77
+ <h3><i class="fas fa-user-circle"></i> BLACK PRIVILEGE</h3>
78
+ <p>Alternative privilege simulation</p>
79
+ <button onclick="grabPrivilege('black')" class="btn privilege-btn">
80
+ <i class="fas fa-hand-paper"></i> GRAB
81
+ </button>
82
+ <div class="cooldown" id="cooldown-black">
83
+ Checking...
84
+ </div>
85
+ </div>
86
+
87
+ <div class="privilege-option robot-privilege">
88
+ <h3><i class="fas fa-robot"></i> ROBOT PRIVILEGE</h3>
89
+ <p>Non-human privilege simulation</p>
90
+ <button onclick="grabPrivilege('robot')" class="btn privilege-btn">
91
+ <i class="fas fa-hand-paper"></i> GRAB
92
+ </button>
93
+ <div class="cooldown" id="cooldown-robot">
94
+ Checking...
95
+ </div>
96
+ </div>
97
+ </div>
98
+
99
+ <div class="privilege-display" id="privilegeDisplay">
100
+ <div class="display-content">
101
+ <i class="fas fa-star"></i>
102
+ <p>Grab a privilege to see simulation</p>
103
+ </div>
104
+ </div>
105
+
106
+ <button onclick="simulatePrivilege()" class="btn simulate-btn" id="simulateBtn" disabled>
107
+ <i class="fas fa-play"></i> SIMULATE PRIVILEGE
108
+ </button>
109
+ </div>
110
+ </div>
111
+
112
+ <footer class="footer">
113
+ <p>This is a weird webspace. Everything is simulated. Nothing is real. Enjoy.</p>
114
+ <p class="timestamp" id="timestamp"></p>
115
+ </footer>
116
+ </div>
117
+
118
+ <div id="notification" class="notification"></div>
119
+
120
+ <script>
121
+ let lastPrivilegeType = null;
122
+ let updateInterval = null;
123
+ let walletInterval = null;
124
+ let countdown = 15;
125
+
126
+ // Initialize
127
+ document.addEventListener('DOMContentLoaded', function() {
128
+ updateTimestamp();
129
+ checkAllPrivileges();
130
+ startWalletUpdates();
131
+ startCountdown();
132
+ });
133
+
134
+ // Update wallet display
135
+ function updateWallet() {
136
+ fetch('/get_wallet')
137
+ .then(response => response.json())
138
+ .then(data => {
139
+ document.getElementById('walletAddress').textContent = data.address;
140
+ document.getElementById('walletBalance').textContent = data.balance;
141
+ resetCountdown();
142
+ showNotification('Wallet updated!');
143
+ });
144
+ }
145
+
146
+ // Auto-update wallet every 15 seconds
147
+ function startWalletUpdates() {
148
+ walletInterval = setInterval(updateWallet, 15000);
149
+ }
150
+
151
+ // Countdown timer
152
+ function startCountdown() {
153
+ setInterval(() => {
154
+ countdown--;
155
+ if (countdown < 0) countdown = 15;
156
+ document.getElementById('countdown').textContent = countdown;
157
+ }, 1000);
158
+ }
159
+
160
+ function resetCountdown() {
161
+ countdown = 15;
162
+ }
163
+
164
+ // Check privilege cooldowns
165
+ function checkAllPrivileges() {
166
+ ['white', 'black', 'robot'].forEach(type => {
167
+ fetch(`/check_privilege/${type}`)
168
+ .then(response => response.json())
169
+ .then(data => {
170
+ const element = document.getElementById(`cooldown-${type}`);
171
+ if (data.can_grab) {
172
+ element.innerHTML = '<i class="fas fa-check"></i> READY TO GRAB';
173
+ element.className = 'cooldown ready';
174
+ } else {
175
+ const hours = Math.floor(data.time_remaining / 3600);
176
+ const minutes = Math.floor((data.time_remaining % 3600) / 60);
177
+ element.innerHTML = `<i class="fas fa-clock"></i> WAIT ${hours}h ${minutes}m`;
178
+ element.className = 'cooldown waiting';
179
+ }
180
+ });
181
+ });
182
+ }
183
+
184
+ // Grab privilege
185
+ function grabPrivilege(type) {
186
+ fetch(`/grab_privilege/${type}`)
187
+ .then(response => response.json())
188
+ .then(data => {
189
+ if (data.success) {
190
+ lastPrivilegeType = type;
191
+ document.getElementById('simulateBtn').disabled = false;
192
+
193
+ // Update display
194
+ const display = document.getElementById('privilegeDisplay');
195
+ display.innerHTML = `
196
+ <div class="display-content">
197
+ <i class="fas fa-crown"></i>
198
+ <h3>${type.toUpperCase()} PRIVILEGE ACQUIRED!</h3>
199
+ <p>You can now simulate privilege</p>
200
+ </div>
201
+ `;
202
+
203
+ showNotification(data.message);
204
+ checkAllPrivileges();
205
+ } else {
206
+ showNotification(data.error, 'error');
207
+ }
208
+ });
209
+ }
210
+
211
+ // Simulate privilege
212
+ function simulatePrivilege() {
213
+ fetch('/simulate_privilege')
214
+ .then(response => response.json())
215
+ .then(data => {
216
+ const display = document.getElementById('privilegeDisplay');
217
+ display.innerHTML = `
218
+ <div class="display-content">
219
+ <i class="fas fa-bolt"></i>
220
+ <h3>${data.message}</h3>
221
+ <p>Privilege simulation activated at ${new Date().toLocaleTimeString()}</p>
222
+ </div>
223
+ `;
224
+ showNotification('Privilege simulated!');
225
+ });
226
+ }
227
+
228
+ // Download wallet
229
+ function downloadWallet() {
230
+ window.location.href = '/download_wallet';
231
+ }
232
+
233
+ // Copy address to clipboard
234
+ function copyAddress() {
235
+ const address = document.getElementById('walletAddress').textContent;
236
+ navigator.clipboard.writeText(address)
237
+ .then(() => showNotification('Address copied to clipboard!'))
238
+ .catch(err => showNotification('Failed to copy', 'error'));
239
+ }
240
+
241
+ // Update timestamp
242
+ function updateTimestamp() {
243
+ const now = new Date();
244
+ document.getElementById('timestamp').textContent =
245
+ `Current time: ${now.toLocaleString()}`;
246
+ }
247
+
248
+ // Notification system
249
+ function showNotification(message, type = 'success') {
250
+ const notification = document.getElementById('notification');
251
+ notification.textContent = message;
252
+ notification.className = `notification ${type}`;
253
+ notification.style.display = 'block';
254
+
255
+ setTimeout(() => {
256
+ notification.style.display = 'none';
257
+ }, 3000);
258
+ }
259
+ </script>
260
+ </body>
261
+ </html>