Moge-Row commited on
Commit
2fa2f41
Β·
1 Parent(s): b414fa0

UI: clean ranking and remove keys from public view

Browse files
Files changed (1) hide show
  1. internal/handler/index.html +41 -37
internal/handler/index.html CHANGED
@@ -144,43 +144,44 @@ body{background:#0d0d0d;font-family:"Courier New",monospace;color:#c8a84b}
144
  <span class="classified">&#9733; CLASIFICADO &#9733;</span> &mdash; ROW-PROXY v1.0 &mdash; CCCP AI GATEWAY &mdash; HOI4 NO STEP BACK &mdash; <span class="classified">&#9733; CLASIFICADO &#9733;</span>
145
  </div>
146
  <script>
147
- var revealed = false;
148
- var key = "free";
149
- function toggleKey() {
150
- revealed = !revealed;
151
- var el = document.getElementById("keyval");
152
- var btn = document.querySelector(".reveal-btn");
153
- if (revealed) {
154
- el.textContent = key;
155
- btn.textContent = "OCULTAR";
156
- } else {
157
- el.textContent = "β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ";
158
- btn.textContent = "REVELAR";
159
- }
 
 
160
  }
 
 
161
  </script>
162
  <script>
163
- function loadStats() {
164
- fetch('/stats')
165
- .then(r => r.json())
166
- .then(data => {
167
- var keys = Object.values(data.keys || {});
168
- keys.sort(function(a,b){ return b.requests - a.requests; });
169
- var grid = document.getElementById('users-grid');
170
- if (keys.length === 0) {
171
- grid.innerHTML = '<div class="commander-card"><div class="cmd-name">Sin usuarios aun</div><div class="cmd-trait">SE EL PRIMERO EN USAR LA PROXY</div></div>';
172
- return;
173
- }
174
- grid.innerHTML = keys.slice(0,4).map(function(k){
175
- return '<div class="commander-card"><div class="cmd-name">' + k.name + '</div><div class="cmd-trait">SOLICITUDES: ' + k.requests + ' // TOKENS: ' + k.tokens + '</div></div>';
176
- }).join('');
177
- var freeEl = document.getElementById('free-count');
178
- if (freeEl) freeEl.textContent = (data.free_reqs || 0) + '/340';
179
- })
180
- .catch(function(){ });
181
  }
182
- loadStats();
183
- setInterval(loadStats, 30000);
184
  </script>
185
  <script>
186
  async function updateStats() {
@@ -191,12 +192,15 @@ async function updateStats() {
191
  keys.sort((a, b) => b.tokens - a.tokens);
192
  const grid = document.querySelector(".commander-grid");
193
  if (!grid) return;
194
- grid.innerHTML = keys.slice(0, 4).map((u, i) => {
195
- return "<div class="commander-card"><div class="cmd-name">" + (u.name || "Usuario") + " #" + (i+1) + "</div><div class="cmd-trait">REQS: " + u.requests + " // TOKENS: " + u.tokens + "</div></div>";
 
 
 
196
  }).join("");
197
- } catch(e) { console.error("Error stats:", e); }
198
  }
199
- setInterval(updateStats, 30000);
200
  updateStats();
201
  </script></body>
202
  </html>
 
144
  <span class="classified">&#9733; CLASIFICADO &#9733;</span> &mdash; ROW-PROXY v1.0 &mdash; CCCP AI GATEWAY &mdash; HOI4 NO STEP BACK &mdash; <span class="classified">&#9733; CLASIFICADO &#9733;</span>
145
  </div>
146
  <script>
147
+ async function updateStats() {
148
+ try {
149
+ const r = await fetch("/stats");
150
+ const data = await r.json();
151
+ const keys = Object.values(data.keys || {});
152
+ keys.sort((a, b) => b.tokens - a.tokens);
153
+ const grid = document.querySelector(".commander-grid");
154
+ if (!grid) return;
155
+ grid.innerHTML = keys.slice(0, 5).map((u, i) => {
156
+ return "<div class='commander-card'>" +
157
+ "<div class='cmd-name'>" + u.name.toUpperCase() + " #" + (i+1) + "</div>" +
158
+ "<div class='cmd-trait'>REQS: " + u.requests + " // TOKENS: " + u.tokens + "</div>" +
159
+ "</div>";
160
+ }).join("");
161
+ } catch(e) { console.error("Error:", e); }
162
  }
163
+ setInterval(updateStats, 10000);
164
+ updateStats();
165
  </script>
166
  <script>
167
+ async function updateStats() {
168
+ try {
169
+ const r = await fetch("/stats");
170
+ const data = await r.json();
171
+ const keys = Object.values(data.keys || {});
172
+ keys.sort((a, b) => b.tokens - a.tokens);
173
+ const grid = document.querySelector(".commander-grid");
174
+ if (!grid) return;
175
+ grid.innerHTML = keys.slice(0, 5).map((u, i) => {
176
+ return "<div class='commander-card'>" +
177
+ "<div class='cmd-name'>" + u.name.toUpperCase() + " #" + (i+1) + "</div>" +
178
+ "<div class='cmd-trait'>REQS: " + u.requests + " // TOKENS: " + u.tokens + "</div>" +
179
+ "</div>";
180
+ }).join("");
181
+ } catch(e) { console.error("Error:", e); }
 
 
 
182
  }
183
+ setInterval(updateStats, 10000);
184
+ updateStats();
185
  </script>
186
  <script>
187
  async function updateStats() {
 
192
  keys.sort((a, b) => b.tokens - a.tokens);
193
  const grid = document.querySelector(".commander-grid");
194
  if (!grid) return;
195
+ grid.innerHTML = keys.slice(0, 5).map((u, i) => {
196
+ return "<div class='commander-card'>" +
197
+ "<div class='cmd-name'>" + u.name.toUpperCase() + " #" + (i+1) + "</div>" +
198
+ "<div class='cmd-trait'>REQS: " + u.requests + " // TOKENS: " + u.tokens + "</div>" +
199
+ "</div>";
200
  }).join("");
201
+ } catch(e) { console.error("Error:", e); }
202
  }
203
+ setInterval(updateStats, 10000);
204
  updateStats();
205
  </script></body>
206
  </html>