Demo

Probiere ClanSphere aus und teste daran herum. Demo


Antworten: 248
Seite < 1 2 3 [4] 5 6 ... 11 12 13 >
BigBoss85
Thread-Ersteller


King for a day




Beiträge: 389
# Antwort: 61 - 30.12.2009 um 11:29 Uhr
@Fr33z3m4n lad dir doch die paar Zeilen mal runter^^ oder ich poste Sie einfach hier XD

mehr... +-
<?php

include 'ts_config.php';

function rep($var){
$search[] = chr(194);
$replace[] = '';
$search[] = '\/';
$replace[] = '/';
$search[] = '\s';
$replace[] = ' ';
$search[] = '\p';
$replace[] = '|';

return str_replace($search, $replace, $var);
}

function tree($id,$platzhalter,$info){
foreach ($info['channel'] as $key => $var) {
if($var['pid'] == $id){
echo '<table><tr>'.$platzhalter.'<td><img src="tsimages/channel.png" alt="channel" /></td><td>'.rep($var['name']).'</td>< /tr></table>';
if(isset($info['user'])){
foreach($info['user'] as $u_key => $u_var){
if($u_var['channel'] == $var['id']){
$p_img = 'player.png';
if($u_var['mic'] == '1'){
$p_img = 'mic.png';
}
if($u_var['head'] == '1'){
$p_img = 'head.png';
}
if($u_var['away'] == '1'){
$p_img = 'away.png';
}
$g_img = '';
foreach($u_var['sg'] as $sg_key => $sg_var){
if(isset($info['sgroup'][$sg_var]['n'])){
$g_img .= '<td><img src="tsimages/'.$info['sgroup'][$sg_var]['p'].' " alt="'.$info['sgroup'][$sg_var]['n'].'" /></td>';
}
}
if(isset($info['cgroup'][$u_var['cg']]['n'])){
$g_img .= '<td><img src="tsimages/'.$info['cgroup'][$u_var['cg']][' p'].'" alt="'.$info['cgroup'][$u_var['cg']]['n' ].'" /></td>';
}
echo '<table><tr>'.$platzhalter.'<td width="16px"></td><td><img src="tsimages/'.$p_img.'" alt="Player" /></td><td>'.rep($u_var['name']).'</td> '.$g_img.'</tr></table>';
}
}
}
tree($var['id'],$platzhalter.'<td width="16px"></td>',$info);
}

}
}


@$connection = fsockopen ($ip, $t_port, &$errno, &$errstr, 1);
if(!$connection){
$serverinfo = 'Server offline';
}else{

$connection = fsockopen ($ip, $t_port, &$errno, &$errstr, 1);
$temp = '';
$cmd = "use sid=".$sid." \nserverinfo \nchannellist \nclientlist \nquit\n";
$execute = fputs($connection,$cmd, strlen($cmd));
while($channeldata = fgets($connection, 4096)){
$temp .= $channeldata;
}
fclose($connection);
$temp = explode('error id=0 msg=ok', $temp);
$temp1 = explode(' ', $temp[1]);
$info['server']['name'] = str_replace('virtualserver_name=', '', $temp1[1]);
$info['server']['maxclients'] = str_replace('virtualserver_maxclients=', '', $temp1[5]);
$info['server']['clientsonline'] = (str_replace('virtualserver_clientsonline=', '', $temp1[7]))-(str_replace('virtualserver_queryclientsonline=', '', $temp1[38]));
$info['server']['channels'] = (str_replace('virtualserver_channelsonline=', '', $temp1[8]));
if(strpos($temp1[20], '=') !== FALSE){
$info['server']['banner'] = (str_replace('virtualserver_hostbanner_gfx_url=', '', $temp1[21]));
}else{
$info['server']['banner'] = '';
}
$temp2 = explode('cid=', $temp[2]);
$i = 0;
foreach ($temp2 as $var) {
$buffer = explode(' ', $var);
if(isset($buffer[5])){

$info['channel'][$i]['id'] = $buffer[0];
$info['channel'][$i]['pid'] = str_replace('pid=', '', $buffer[1]);
$info['channel'][$i]['name'] = str_replace('channel_name=', '', $buffer[3]);
$i++;
}
}
$temp3 = explode('clid=', $temp[3]);
foreach ($temp3 as $var) {
$buffer = explode(' ', $var);
if(isset($buffer[4])){
$buffer[4] = str_replace('|', '', $buffer[4]);
if(strpos($buffer[4], 'client_type=0') !== FALSE){
$info['user'][$buffer[0]]['name'] = str_replace('client_nickname=', '', $buffer[3]);
$info['user'][$buffer[0]]['channel'] = str_replace('cid=', '', $buffer[1]);
}
}
}
$u_cmd = '';
if(isset($info['user'])){
foreach ($info['user'] as $u_key => $u_var) {
$u_cmd .= "clientinfo clid=".$u_key." \n";
}
$connection = fsockopen ($ip, $t_port, &$errno, &$errstr, 1);
$cmd = "use sid=".$sid." \n".$u_cmd."quit \n";
$execute = fputs($connection,$cmd, strlen($cmd));
$temp_a = '';
while($channeldata = fgets($connection, 4096)){
$temp_a .= $channeldata;
}
fclose($connection);
$temp_b = explode('msg=ok', $temp_a);
$i=1;
foreach ($info['user'] as $u_key => $u_var) {
$temp_a = explode(' ', $temp_b[$i]);
foreach ($temp_a as $tu_key => $tu_var) {
if(strpos($tu_var, 'client_channel_group_id') !== FALSE){
$info['user'][$u_key]['cg'] = str_replace('client_channel_group_id=', '', $tu_var);
}
if(strpos($tu_var, 'client_away') !== FALSE){
$info['user'][$u_key]['away'] = str_replace('client_away=', '', $tu_var);
}
if(strpos($tu_var, 'client_input_muted') !== FALSE){
$info['user'][$u_key]['mic'] = str_replace('client_input_muted=', '', $tu_var);
}
if(strpos($tu_var, 'client_output_muted') !== FALSE){
$info['user'][$u_key]['head'] = str_replace('client_output_muted=', '', $tu_var);
}
if(strpos($tu_var, 'client_servergroups') !== FALSE){
$temp_g = str_replace('client_servergroups=', '', $tu_var);
if(strpos($temp_g, ',')!== FALSE){
$info['user'][$u_key]['sg'] = explode(',', $temp_g);
}else{
$info['user'][$u_key]['sg'][0] = $temp_g;
}
}
}
$i++;
}
}
}

?>


Inaktiv
|
Mindcrime


Geekboy





Beiträge: 1155
# Antwort: 62 - 30.12.2009 um 16:43 Uhr
Es dauert noch ein wenig bis es fertig ist:

Status: 80% fertig
Todo: anzeige channel/users flags beim view, client kick

Extra Funktionen (in vergleich zu alten TS2Panel):
- Support fuer TS3 server
- Option: Connection Timeout (in sekunden)
- Einheitlicher anruf von TS2/TS3 durch ein gemeinsamen "tss" class
- Bei jeder zugefuegten server kann man einzeln list/view zugriff rechte verleihen
- Bei jeder zugefuegten server kann man einzeln registrierungs zugriff rechte verleihen
- Netzwerkverkehr (Ein-/Aus-gehend) im manage uebersicht

Derzeitige Beschraenkungen (demnaechst vielleicht aber moeglich):
- Nur fuer TS2 server ist es derzeit moeglich ein benutzer zu registrieren/loesschen

Moeglich in zukunft/demnaechst:
- Die "tss" class kompatibel machen mit die server classes von servers modul.


Inaktiv
|
beastmaster


Wannabe poster




Beiträge: 29
# Antwort: 63 - 01.01.2010 um 18:57 Uhr
jo gut hab aber auch nen php script gefunden mit dem alle server versionen funktionieren ohne fehler "sollen" xD

naja wer es haben will kann sich ja melden...


www.pro-team.de.vu


Zuletzt editiert von beastmaster am 01.01.2010 um 18:59 Uhr (1x Editiert)
Inaktiv
|
Mindcrime


Geekboy





Beiträge: 1155
# Antwort: 64 - 07.01.2010 um 14:57 Uhr
Status: 95% fertig

Extra Funktionen (in vergleich zu alten TS2Panel):
- Support fuer TS3 server
- Option: Connection Timeout (in sekunden)
- Einheitlicher anruf von TS2/TS3 durch ein gemeinsamen "tss" class
- Bei jeder zugefuegten server kann man einzeln list/view zugriff rechte verleihen
- Bei jeder zugefuegten server kann man einzeln registrierungs zugriff rechte verleihen
- Netzwerkverkehr (Ein-/Aus-gehend) im manage uebersicht

Probleme zur zeit wegen TS3:
Man kann ein token bekommen, den man benutzen kann in TS3 um benutzer rechte zu kriegen.
Da TS3 derzeit aber keine benutzer identifizierung hat, kann ich zwar benutzer accounts loesschen (ich kann suchen auf TS3 client_nickname das der gleich ist wie CS users_nick, aber das kann misbraucht werden, weil TS3 client_nickname geaendert werden kann), aber ich kann keine benutzer (wie TS2 client_login_name) login name vergeben und die benutzer zurueck finden wenn ich seine CS users_nick habe.

Es gibt in die TS3 foren schon threads ueber diese probleme (wo ich mich auch beteilige), aber die entwickler sehen irgendwie im moment noch nicht ein, das sie ein grossen design fehler haben gemacht...
Thread dazu: How to use TS3 auth system in a preexisting user base

Es ist immo also ungewiss, wie es enden wird...


Inaktiv
|
Dobi


Rock the board



Herkunft: Erde
Beiträge: 59
# Antwort: 65 - 07.01.2010 um 15:49 Uhr
War das nicht so (bei TS2), dass ein User mit bestimmten Rechten in CS sich selbst einen Benutzeraccount machen konnte auf dem TS-Server?

Wenn ja vielleich ne Idee meinerseits für TS3:

Der CS-Admin kann bestimmen, ab welchem Zugriff man sich selbst "Benutzerrechte" auf dem TS3-Server geben kann. Im Panel kann der User dann diese Rechte anfordern.

Um diesem User den Token zu generieren wird er aufgefordert, auf dem TS-Server einzuloggen und seinen TS-Nickname auf einen vom Script zufällig vergebeben Nickname zu ändern.

Wenn er das gemacht hat klickt er OK und erhält seinen Token.

Folgendes passiert im Hintergrund:

Du kannst die UID nutzen um die Benutzer auf dem TS-Server zu finden.

Wenn du über den serverquery "clientdblist" schickst, erhältst du pro bekanntem Client auch einen "client_unique_identifier".

Diese ID ist eindeutig einer Idendität eines Clients zugeordnet.

Du suchst also in der Serverdatenbank nach dem Nickname, den du dem User vorher vorgegeben hast (die DB speichert immer den aktuellen Namen ab) und holst dir den entsprechenden "client_unique_identifier". Diesen speicherst du zur CS-UID ab und generierst dem User den Token.

Sollen später für einen CS-User die Rechte gelöscht werden, kann man entweder in der TS-DB den Client anhand des unique_identifier finden und löschen, oder ihm per clientdbedit einfach die Benutzergruppe entziehen.


Inaktiv
|
Mindcrime


Geekboy





Beiträge: 1155
# Antwort: 66 - 07.01.2010 um 16:02 Uhr
Ja, das war so bei TS2 und das geht noch immer...

Und deine loesung ist nicht eindeutig und sicher genug, ich will ein feld das NUR server admins aendern koennen (sowie in TS2 der login name), weil nickname ist zu einfach zu aendern und zu faken... Das ist ja das problem wieso sich jeder bei die TS3 leute beschwert... Es GIBT einfach keine gute loesung zur zeit...


Zuletzt editiert von Mindcrime am 07.01.2010 um 16:02 Uhr (1x Editiert)
Inaktiv
|
Dobi


Rock the board



Herkunft: Erde
Beiträge: 59
# Antwort: 67 - 07.01.2010 um 16:08 Uhr
Sie ist denke ich sicher genug.

DU gibst im Script den Nickname (random) vor (z.B. erste 2 stellen des CS-Nicks und Zahlen "Do12345")

Der User muss bei der Erstellung des Tokens auf dem TS-Server sein mit genau diesem Nicknamen um den Token zu bekommen. Und ein Nickname kann zur gleichen Zeit nur 1 mal auf dem Server sein. Später kann er seinen Nick dann wieder ändern.

Ein anderer User kennt diesen Namen nicht, weil nur der User, der gerade Rechte anfordert diesen Namen angezeigt bekommt.

Als Goodie erhälst du seine UniqueID, mit der Du später die Rechte wieder wegnehmen kannst.


Zuletzt editiert von Dobi am 07.01.2010 um 16:09 Uhr (2x Editiert)
Inaktiv
|
Mindcrime


Geekboy





Beiträge: 1155
# Antwort: 68 - 07.01.2010 um 16:14 Uhr
Das ist zu kompliziert fuer den benutzer (benutzer sind dumm) und es heisst das ich fuer jeden benutzer ein UniqueID in datenbank speichern muss, was man eigentlich nicht machen sollte...

Abgesehen davon... Wann soll ich dan den TS3 server query machen? Ich muss auch noch beibehalten welche von diese zeitliche nicks ich rausgegeben habe... Und der benutzer kann nicht sein nickname aendern solange ich noch nicht den server gequeried hab...

Das heisst alles, das der benutzer viel zu viele schritte machen muss und das TeamSpeak modul muss viel zu viele daten speichern und beibehalten und wann man genau eine verbinding finden kann zwisschen den user in CS und der uniqueID in TS3 ist auch ungewiss...

Es sollte moeglich sein um einfach auf zeitpunkt X ein account zu erstellen und viel spaeter an irgendein zeitpunkt Y das erste mal zu connecten zu TS3...


Zuletzt editiert von Mindcrime am 07.01.2010 um 16:19 Uhr (3x Editiert)
Inaktiv
|
Dobi


Rock the board



Herkunft: Erde
Beiträge: 59
# Antwort: 69 - 07.01.2010 um 17:23 Uhr
Zu deinen Fragen: (Wenns nervt einfach was sagen )

User ruft Modul auf und klickt auf "Benutzerrechte erteilen" oder wie auch immer man den Link nennen mag.

Modul generiert temp. Nickname und zeigt diesen dem User an mit der Bitte, unter diesem Nickname auf dem TS-Server zu sein. User soll das dann mit OK bestätigen.

Der Nickname ist nur so lange gültig, wie die Homepage aufgerufen bleibt (Formularübergabe).

User geht auf den TS Server und ändert seinen Nickname auf den temporären. Anschliessend klickt er auf der Homepage OK.

Modul führt Serverquery aus:
"clientdblist"
Modul sucht im Ergebnis nach dem temp. Nickname und merkt sich dann die passende Unique_ID oder eben die Client-Database-ID "cldbid" des Users. Die ID kann in der DB gespeichert werden in Verbindung mit der CS-UID.
Modul erstellt per Serverquery den TOKEN und zeigt diesen dem User an mit Anleitung, was er damit machen muss (ist ja nicht wirklich schwer...)


User benutzt den Token auf dem Server und ändert seinen Nickname wieder auf seinen eigenen.

Fertig.

Wo du definitiv Recht hast, man kann auf diese Weise nicht einfach so die Rechte generieren und diese später (2-3 Tage) nutzen.


Mir fällt aber noch was anderes ein:

Man könnte auch folgendermaßen vorgehen:

Vorgabe:
Clanmember sollen auf dem TS-Server in Servergruppe 7 sein.
Diese Information sollte Clansphere per Option wissen.

CS-Admin kann in der Verwaltung auf "Rechtetoken erstellen" gehen und wählt z.B. Anzahl = 5.

Das Modul generiert über den Serverquery nun 5x einen Token:
'tokenadd tokentype=0 tokenid1=7 tokenid2=0'
Der TS-Server führt automatisch eine Liste dieser Tokens! (Wobei geklärt werden muss, ob diese zeitlich ablaufen können.) Brauchst sie also nicht in CS zu speichern...

Berechtigte User können nun wie beim ersten Beispiel Rechte anfordern. Das Modul führt einen Serverquery 'tokenlist' aus und zeigt dem User einen der Token an. Sollte allerdings auch nach Tokenid1 und 2 gesucht werden... sicherheitshalber.

Damit hättest Du die Möglichkeit, Tokens zu erstellen und diese später auf Anforderung zu verteilen.

ABER du kommst auf diese Weise nicht an die Client-ID um später die Rechte wieder zu entziehen. Das müsste der Admin dann über den TS-Client direkt machen...


Inaktiv
|
Mindcrime


Geekboy





Beiträge: 1155
# Antwort: 70 - 08.01.2010 um 12:20 Uhr
Ersten glaub ich das die leute von TS3 schon an eine loesung arbeiten (siehe auch den obengenannten thread), wie die genau aussehen wird ist im moment noch ungewiss, aber hoffentlich kommt das mit beta13 raus. Daneben hab ich wenig bock nur fuer TS3 extra tabellen zu machen und sicherlich im moment gar nicht so lange TS3 noch so in entwicklung ist

Zweitens, die servergruppen Admin, Normal und Guest sind nicht festgelegte gruppen mit festgelegte ID's und koennen (leider) geloescht werden und haben ein andern ID fuer jeden individuellen virtual server. Ich hab schon etwas was die automatisch findet, aber leider ist das nicht zu 100% wasserdicht, aber so lange der server admin des TS3 servers nicht zuviel mit die standard gruppen hat rundgefummelt, sollte er automatisch die ID's der server gruppen finden.

Drittens, ein token erstell ich schon, um ein benutzer von die CS seite die moeglichkeit zu geben sich anzumelden in der "Normal" server gruppe. Nur haette ich gerne das ich beim erstellen von ein token gleich in TS3 extra info's (login_name zb) an diesen token festlegen kann und das er diese daten beim benutzen von token in die eigenschaften des benutzeraccounts speichert.



Inaktiv
|
beastmaster


Wannabe poster




Beiträge: 29
# Antwort: 71 - 08.01.2010 um 13:04 Uhr
Hmm mal ne frage könnte man das ganze über ein selbst indizierten bd user und id system wenigstens teilweise verwalten lassen über variablen wenn du verstehst was ich meine ich hätte sehr gerne mal die beta deiner version zum testen also am besten die 95
% version...

beasty-net (at) arcor (dot) de



Inaktiv
|
Mindcrime


Geekboy





Beiträge: 1155
# Antwort: 72 - 11.01.2010 um 14:14 Uhr
Weil das modul noch nicht komplett fertig ist, werde ich es noch nicht an die modul datenbank zufuegen.

Es ist aber fertig genug damit die leute, die nur den TS3 als viewer benutzen moechtten (oder das risiko von das erstellen/loesschen von TS3 accounts, wenn eingeschaltet, akzeptieren) es antesten/benutzen koennen.

Auch ist die mods/teamspeak/classes/tss.class.php kompatibel mit das servers modul und koennte so in mods/servers/classes/phgstats.class.php zugefuegt werden:

case 'ts3': // Teamspeak 3
include_once('mods/teamspeak/classes/tss.class.php');
$query = new tss(tss::VERSION_TS3, 'UTF-8');
return $query;
break;


Natuerlich dan noch in create.php und edit.php von mods/servers:

array('name' => 'TeamSpeak 3', 'servers_class' => 'ts3'),


Hier die erste beta version. Wie immer, ohne gewaehr:
Dateianhänge:
zip teamspeak_beta_2010-01-11.zip (109.1 KiB - 129 mal heruntergeladen )


Inaktiv
|
BigBoss85
Thread-Ersteller


King for a day




Beiträge: 389
# Antwort: 73 - 11.01.2010 um 15:10 Uhr
Hi ich steh grad aufm schlaub wo kann ich den meinen server eintragen? hat das was mit der tss.class.php zu tun? weil wenn man auf servers klcikt kommt nen fehler:

Parse error: syntax error, unexpected T_CONST, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home/www/kunden/bigboss85.de/clanpage/mods/teamspeak/classes/tss.class.php on line 8


Inaktiv
|
Mindcrime


Geekboy





Beiträge: 1155
# Antwort: 74 - 11.01.2010 um 15:19 Uhr
Hast du PHP5? Und wo sollte servers stehen?


Zuletzt editiert von Mindcrime am 11.01.2010 um 15:20 Uhr (1x Editiert)
Inaktiv
|
BigBoss85
Thread-Ersteller


King for a day




Beiträge: 389
# Antwort: 75 - 11.01.2010 um 15:22 Uhr
php 4.4.4 steht da.

ich meine wenn man unter verwaltung/teamspeak/servers anklickt kommt dieser fehler.

Wo richte ich meinen Server ein? DAs ich den sehen kann?


Inaktiv
|
Mindcrime


Geekboy





Beiträge: 1155
# Antwort: 76 - 11.01.2010 um 15:31 Uhr
ClanSphere 2009.x.x braucht minimal PHP5 (und am besten PHP5.2.x)


Zuletzt editiert von Mindcrime am 11.01.2010 um 15:31 Uhr (1x Editiert)
Inaktiv
|
BigBoss85
Thread-Ersteller


King for a day




Beiträge: 389
# Antwort: 77 - 11.01.2010 um 15:34 Uhr
das heißt jetzt übersetzt php 4 kennt einen befehl der in php5 neu ist nicht? rofl


Inaktiv
|
TeQu!La ClanSphere Team


Specialist




Herkunft: Grevenbroich
Beiträge: 2142
# Antwort: 78 - 11.01.2010 um 15:41 Uhr
Wo ist das denn das Problem? PHP Version updaten sollte doch kein problem sein


------------------

ClanSphere - professional clan care starts here


Inaktiv
|
BigBoss85
Thread-Ersteller


King for a day




Beiträge: 389
# Antwort: 79 - 11.01.2010 um 15:48 Uhr
hm wenns nicht mein server ist? XD


Inaktiv
|
Mindcrime


Geekboy





Beiträge: 1155
# Antwort: 80 - 11.01.2010 um 15:49 Uhr
Das heisst, das TeamSpeak modul funktioniert nicht in PHP 4.x weil es fuer PHP 5.x geschrieben wurde...

@Tequila, nicht ganz... Kenn da noch einige anbieter (all-inkl.de z.b.) wo das wechseln nicht soooo einfach ist...


Inaktiv
|
Antworten: 248
Seite < 1 2 3 [4] 5 6 ... 11 12 13 >


Sie müssen sich registrieren, um zu antworten.