Armed-Assault.de Twitter
 
 
Themen-Optionen Ansicht
Alt 21.06.2009, 11:06   #1 (permalink)
50 Beiträge
 
Registriert seit: 06.06.2009
Beiträge: 50
Standard Server Whitelist

Ich habe es gestern aufgegeben, meinen Server public laufen zu lassen. Es kann sich wohl jeder denken, wieso.

Nun will ich keinen Clan gründen, nur um Passwörter zu verteilen, dafür fehlt mir die Zeit.

Ich hatte an eine Whitelist gedacht, die man über ein Webfrontend füttern kann:

Nach dem Joinen wir einfach geguggt ob eine ID für den joinenden Player in der Whitelist-Datei steht. Wenn ja, wird nichts unternommen, wenn nicht wird er gekickt.

Nun ist das Problem: wie löst man die Whitelist-Datei? Eine SQF im Missionsordner macht wohl keinen Sinn, da die nicht mehr beschreibbar ist, wenn sie durch eine Mission geladen wurde. Wie also kann ich Daten in eine schon laufende Mission bekommen?

Oder hätte jemand eine Alternative zur Whitelist?
Ephraim ist offline  
Alt 21.06.2009, 19:23   #2 (permalink)
500 Beiträge1000 Beiträge
 
Registriert seit: 12.06.2006
Beiträge: 1.252
Standard

getPlayerUID - Bohemia Interactive Community

Könnte was helfen.
.kju ist offline  
Alt 21.06.2009, 19:29   #3 (permalink)
50 Beiträge
 
Registriert seit: 06.06.2009
Beiträge: 50
Standard

Zitat von .kju Beitrag anzeigen

getPlayerUID - Bohemia Interactive Community

Könnte was helfen.

Vielleicht habe ich mich zu kompliziert ausgedrückt.
Das Problem ist, Dateien einer Mission zu ändern, wärend dieso schon läuft.

Ich werde mir auf jeden Fall mal die ArmALib anschauen, eine Verbindung zu einer Datenbank wäre schonmal eine Lösung. Auch wenns nicht gerade ein Microsoft SQL Server sein sollte wie bei ArmALib *hust*.
Ephraim ist offline  
Alt 22.06.2009, 10:31   #4 (permalink)
50 Beiträge
 
Registriert seit: 06.06.2009
Beiträge: 50
Standard

Globale banliste "fast Fertig" !!!

Ich mache erstmal mit bei der Blacklist-Idee.
Ephraim ist offline  
Alt 22.06.2009, 10:58   #5 (permalink)
500 Beiträge1000 Beiträge
 
Registriert seit: 12.06.2006
Beiträge: 1.252
Standard

Evtl könnte ein Script für den Zweck mit einem Server Side Only Addon funktionieren.
.kju ist offline  
Alt 22.06.2009, 11:29   #6 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Tajin
 
Registriert seit: 17.01.2008
Beiträge: 267
Standard

Schau im Biki mal nach server-side scripting. ArmA: Server Side Scripting - Bohemia Interactive Community

Davon abgesehen, du kannst in missionen, scripten, addons usw. auch Dateien direkt aus dem Arma-ordner laden und die kannst du auch wärend der Laufzeit modifizieren. (müssen halt nur regelmässig abgefragt werden oder bei onPlayerConnect)

z.B.:
Code:
nul=[this] execVM "settings.sqf";
Die settings.sqf kann anstatt im missionsorder auch direkt unter "/ArmA2/settings.sqf" liefen



Aber wie schon gesagt, serversidescripting ist für sowas sinnvoller als ein Missionseintrag, schliesslich willst du die whitelist ja für alle Missionen haben.
Probier mal dashier, ist nur auf die schnelle aus dem Kopf geschrieben könnte aber klappen:

In die server.cfg muss diese Zeile:
Code:
onUserConnected = "if ([_this select 0 ] execVM 'whitelist.sqf') then {kick _this select 0}";

Im ArmAverzeichniss erstellst du die Datei hier: whitelist.sqf
In dem Array in der ersten Zeile stehen dann die IDs.
Code:
whitelist=[123123,123130,0213123];
if (whitelist find (_this select 0) > -1) then {
    true;
} else {
    false;
};
Kann auch sein das man die IDs in anführungszeichen schreiben muss in dem Array, das weiß ich grad nicht. Sag Bescheid obs funktioniert !
__________________
Tajin ist offline  
Alt 22.06.2009, 11:36   #7 (permalink)
50 Beiträge
 
Registriert seit: 06.06.2009
Beiträge: 50
Standard

Woah vielen dank Tajin & kju!

Das scheint der richtige Weg dafür zu sein - vorallem einfacher als ich dachte!
Ich werde das mal ein wenig testen die nächsten Tage.
Ephraim ist offline  
Alt 22.06.2009, 12:03   #8 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Tajin
 
Registriert seit: 17.01.2008
Beiträge: 267
Standard

Gern geschehn. Schreib uns deine Erfahrungen aber hier rein, dann haben wir auch was davon.
__________________
Tajin ist offline  
Alt 22.06.2009, 13:24   #9 (permalink)
Newbie
 
Registriert seit: 05.12.2006
Beiträge: 43
Standard

Meines Wissens ist die Menge der Commands vom server side scripting (also in der server.cfg) sehr begrenzt - ich weiß es nicht mehr auswendig, aber ich glaube, dass u.a. execVM usw. nicht dabei sind, des weiteren gibt onUserConnected leider nur die temporäre userID zurück und nicht die PlayerID (nachdem man die jetzt sogar ingame per getPlayerUID bekommt, könnten sie das eigentlich einbauen...).

Mit nem server side only addon - wie .kju vorgeschlagen hat - müsste es aber klappen (völlig unabhängig von der Mission). Dabei ist nur das unschöne, dass dann erst ingame die Überprüfung stattfindet und ingame commands wie kick / ban nicht verfügbar sind - müsste aber trotzdem klappen per endMission oder Trigger (Doolittle hat bei seinem DooACS was ähnliches gemacht).
Master85 ist offline  
Alt 22.06.2009, 13:56   #10 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Tajin
 
Registriert seit: 17.01.2008
Beiträge: 267
Standard

Hmm mir war so als hätte ich execVM bei ArmA1 schonmal für serversidescripting benutzt. Hatte auf dem alten clubnight server ne Wilkommensnachricht eingebaut die nach Missionsstart eingeblendet wurde.


Ich bin mir zimlich sicher das es über serversidescripting machbar ist, nur vielleicht stellt es sich eben als etwas komplexer heraus als wir momentan glauben.
Ich dachte eigendlich Serversides verwenden die UID, aber vielleicht trügt mich da mein Gedächtniss, ist alles schon ein Weilchen her. Notfalls lesen wir die halt per script mit dem neuen Befehl aus.

Vielleicht könnte man in der whitelist.sqf ein temporäres objekt erstellen und mit processinitcommands ein Script beim neu verbundenen Spieler injizieren das sobald möglich seine UID abfragt und die als globale variable an das serverscript zurückmeldet.
Ich glaub das geht.
__________________
Tajin ist offline  
Alt 22.06.2009, 21:38   #11 (permalink)
50 Beiträge
 
Registriert seit: 06.06.2009
Beiträge: 50
Standard

Ich denke Master85 hat recht und ich kann in der onUserConnected-Zeile keinen Befehl ausführen, der nicht unter ArmA: Server Side Scripting - Bohemia Interactive Community steht.

Ich habe es mit execVM und loadFile probiert und es scheint so als ob er an der Stelle aufhört zu interpretieren - es passiert einfach nix.

Denke ich werde es in der Mission weiterbauen, daraus kann man dann später ja ein Addon machen, richtig?

Geändert von Ephraim (22.06.2009 um 21:50 Uhr). Grund: paar dumme fragen entfernt
Ephraim ist offline  
Alt 22.06.2009, 22:02   #12 (permalink)
500 Beiträge1000 Beiträge
 
Registriert seit: 12.06.2006
Beiträge: 1.252
Standard

ja
.kju ist offline  
Alt 22.06.2009, 22:47   #13 (permalink)
50 Beiträge
 
Registriert seit: 06.06.2009
Beiträge: 50
Standard

Bleibt nur noch zu klären, wie kickt man einen Player?

Funktioniert der kick-Befehl nur im Chat und in der server.cfg?
Ephraim ist offline  
Alt 22.06.2009, 23:47   #14 (permalink)
Newbie
 
Registriert seit: 05.12.2006
Beiträge: 43
Standard

Also im Moment funktioniert kick und ban nur im Chat und der server.cfg - k.A. ob sich da was ändert, hab aber erst neulich was von kickUID und banUID gelesen - scheinen aber wohl (noch?) nicht implementiert zu sein.

Ingame kannst du etwas in der Art
Code:
endMission "END6"
machen.
Der Code darf aber nur auf dem Rechner des entsprechenden Spielers ausgeführt werden.

Das unschöne ist halt, dass selbst gesperrte Spieler nen Slot verbrauchen können und Bandbreite kosten (können ja beliebig oft joinen), sobald sie aber ins Spiel starten, sollte die Mission für sie zu Ende sein. (Die Teamkiller und Heli-Crasher kann man so vielleicht draußen halten, aber wer wirklich Quatsch machen will, schafft das auch so - zumindest ohne Signaturen).
Master85 ist offline  
Alt 23.06.2009, 09:39   #15 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Tajin
 
Registriert seit: 17.01.2008
Beiträge: 267
Standard

naja in ArmA1 hatten wir noch
Code:
[] resize -1;
ArmA2 wirkt das nichtmehr, ist auch nicht die feine Art. Aber es gibt sicherlich andere Möglichkeiten mit gleichem Effekt, z.B. manche von den Objekten in den Classnames verursachen z.B. beim spawnen einen crash.


Zitat:

hab aber erst neulich was von kickUID und banUID gelese

Um Himmels willen, das sollen die blos nicht als reguläre scriptbefehle einbauen.
__________________
Tajin ist offline  
Alt 23.06.2009, 12:01   #16 (permalink)
50 Beiträge
 
Registriert seit: 06.06.2009
Beiträge: 50
Standard

Zitat von Master85 Beitrag anzeigen


Das unschöne ist halt, dass selbst gesperrte Spieler nen Slot verbrauchen können und Bandbreite kosten (können ja beliebig oft joinen), sobald sie aber ins Spiel starten, sollte die Mission für sie zu Ende sein. (Die Teamkiller und Heli-Crasher kann man so vielleicht draußen halten, aber wer wirklich Quatsch machen will, schafft das auch so - zumindest ohne Signaturen).

Das mit den Slots sehe ich im Moment noch nicht so wild. Und Signaturen sollte mein Server eigentlich überprüfen. Als Zusatz kann man ja noch die ban.txt verwenden, sprich: wenn ein User aus der Whitelist entfernt wird, landet er automatisch auf der BanList. Zweck des ganzen soll ja auch nur sein, dass die Startbasen nicht gleich nach 5 Minuten in Flammen stehen.

Ich probiere das mit dem Missionsende mal heute Abend aus. Einen Crash beim Client verursachen ist für mich auf jeden Fall ein no-go.

Zitat:

Um Himmels willen, das sollen die blos nicht als reguläre scriptbefehle einbauen.

Wenn es nur auf dem Server ausgeführt einen Effekt hat, wäre es doch praktisch oder nicht?
Ephraim ist offline  
Alt 23.06.2009, 14:05   #17 (permalink)
500 Beiträge1000 Beiträge
 
Registriert seit: 12.06.2006
Beiträge: 1.252
Standard

Es darf nur der Server ausführen. Ohne Remote what-so-ever.
.kju ist offline  
Alt 23.06.2009, 14:05   #18 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Tajin
 
Registriert seit: 17.01.2008
Beiträge: 267
Icon9

Zitat von Ephraim Beitrag anzeigen

Wenn es nur auf dem Server ausgeführt einen Effekt hat, wäre es doch praktisch oder nicht?

Nur wenn der Server auch überprüft wo der Befehl herkommt den er da ausführt und das tut er nicht. Es ist ein Leichtes im multiplayer Scriptbefehle an den Server oder sogar ganz gezielt an einzelne Spieler zu schicken. Wenn solche Befehle eingebaut werden kann das ein böses Ende nehmen.
Wenn es den Befehl gibt kann man in 5-10 minuten ein Script schreiben mit dem man einen beliebigen User vom einem beliebigen Server auf dem man gerade ist bannen kann. Sowas können wir echt nicht gebrauchen.


Das eigentliche serversidescripting ist nicht ohne grund vom regulären scripting ingame abgekapselt.
__________________
Tajin ist offline  
Alt 23.06.2009, 14:06   #19 (permalink)
500 Beiträge1000 Beiträge
 
Registriert seit: 12.06.2006
Beiträge: 1.252
Standard

Generell kannst du Black-Screen / disableUserInput auch in Erwägung ziehen.
.kju ist offline  
Alt 23.06.2009, 15:05   #20 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Tajin
 
Registriert seit: 17.01.2008
Beiträge: 267
Standard

Zitat:

disableUserInput

Ambesten mehrgleisig fahren, nur auf das würd ich mich nicht verlassen. Das lässt sich schliesslich genauso auch wieder abschalten.
__________________
Tajin ist offline  
 


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
frage zur server.cfg (bei hohen ping kicken) / mods auf server verbieten FBM Technische Fragen & Probleme 1 05.05.2009 17:34


Kontakt - HX3.de - Archiv - Nach oben

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias



SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119