403Webshell
Server IP : 202.61.199.114  /  Your IP : 216.73.217.139
Web Server : nginx/1.22.1
System : Linux de.arni-solutions.de 6.1.0-49-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64
User : web20 ( 1018)
PHP Version : 8.4.23
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /proc/3951572/root/tmp/rrpkg/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /proc/3951572/root/tmp/rrpkg/votetest.mjs
// Replikat der Logik aus slf.js
let R = { players: [] };
function downVoters(s, cat, id) {
  const v = (s.votes || {})[cat + '|' + id] || {};
  return Object.keys(v).filter((k) => v[k] && Number(k) !== id).map(Number);
}
function rejected(s, cat, id) {
  const down = downVoters(s, cat, id);
  const remove = down.length;
  if (remove === 0) return false;
  const keep = R.players.length - remove;
  if (remove > keep) return true;
  if (remove === keep) return down.includes(0);
  return false;
}
const P = (n) => { R.players = Array.from({length:n},(_,i)=>({id:i})); };
const votes = (obj) => ({ votes: { 'Stadt|1': obj } }); // Antwort von Spieler 1
let pass=0, fail=0;
function t(desc, got, exp){ const ok=got===exp; (ok?pass++:fail++); console.log((ok?'✓':'✗')+' '+desc+'  => '+got+(ok?'':' (erwartet '+exp+')')); }

// 4 Spieler (0=Host/Autor? nein, Autor ist id1). Spieler 0 ist Host.
P(4);
t('4P, 0 downvotes -> bleibt', rejected(votes({}),'Stadt',1), false);
t('4P, 1 downvote -> bleibt (kein Überzahl)', rejected(votes({2:1}),'Stadt',1), false);
t('4P, 2 downvotes (2 vs 2, Host NICHT dabei) -> 50/50 Host=keep -> bleibt', rejected(votes({2:1,3:1}),'Stadt',1), false);
t('4P, 2 downvotes inkl. Host(0) -> 50/50 Host=remove -> raus', rejected(votes({0:1,2:1}),'Stadt',1), true);
t('4P, 3 downvotes -> Überzahl -> raus', rejected(votes({0:1,2:1,3:1}),'Stadt',1), true);

// Autor-Stimme wird ignoriert
t('4P, Autor(1) stimmt gegen sich + 1 anderer -> nur 1 zählt -> bleibt', rejected({votes:{'Stadt|1':{1:1,2:1}}},'Stadt',1), false);

// 3 Spieler (ungerade, kein 50/50 möglich)
P(3);
t('3P, 1 downvote -> bleibt', rejected(votes({2:1}),'Stadt',1), false);
t('3P, 2 downvotes (beide anderen) -> raus', rejected(votes({0:1,2:1}),'Stadt',1), true);

// 2 Spieler: Autor 1, Host 0
P(2);
t('2P, Host(0) zweifelt Gast(1) an -> 1 vs 1 -> Host entscheidet -> raus', rejected(votes({0:1}),'Stadt',1), true);
// Gast(1) zweifelt Host(0)-Antwort an: Antwort von id0, downvoter id1
t('2P, Gast(1) zweifelt Host(0) an -> 1 vs 1 -> Host(0) ist keep -> bleibt', rejected({votes:{'Stadt|0':{1:1}}},'Stadt',0), false);

console.log('\n'+pass+' bestanden, '+fail+' fehlgeschlagen');
process.exit(fail?1:0);

Youez - 2016 - github.com/yon3zu
LinuXploit