Beiträge von Sebbo

    Hallo,
    welchen Router hast du denn? Meistens gibt es eine Einstellung, wo man definieren kann, ob man lieber mehr Performance oder Stabilität haben möchte. Spiele mit diesen Einstellungen einfach mal rum und prüfe, ob es was verbessert.


    In einer FRITZ!Box findest du dies normalerweise wie folgt:

    • http://fritz.box/ aufrufen und einloggen
    • Menüpunkt "Internet"
    • Menüpunkt "DSL-Informationen"
    • Tab "Störsicherheit"

    Bei mir sieht das z.B. so aus:


    Die Priorisierungen (QoS) können ebenfalls eine Rolle spielen. Ich persönlich stelle hier VoIP (= Internettelefonie) immer an Erster Stelle.


    In einer FRITZ!Box findest du dies normalerweise wie folgt:

    • http://fritz.box/ aufrufen und einloggen
    • Menüpunkt "Internet"
    • Menüpunkt "Filter"
    • Tab "Priorisierungen"

    Hallo,


    das ist kein Problem vom TS3 Framework. Das ist ein Problem von deinem Webseiten Code. ;)


    Eine typsiche 0815-Webseite, die auf schlichten HTML, CSS und PHP basiert, führt den PHP-Code nur einmal serverseitig aus, sobald dieser angefragt wird. Wie in deinem Fall: Wenn die Seite besucht wird. Ändern sich während des Besuchs der Seite ein paar Werte, muss die Seite neu geladen werden, damit der PHP-Code neu ausgeführt wird.


    Um die aktuellen Werte zu erhalten, ohne die Seite dauernd neuladen zu müssen, musst etwas wie AngularJS oder VueJS verwenden.

    TCP 8765
    UDP 8766


    Welche Ports sollen das denn sein? Noch nie gesehen oder gehört.


    Ja, wie @monster010 bereits geschrieben hat: Das Problem tritt normalerweise auf, wenn einer Servergruppe beispielsweise ein Icon zugeordnet ist, was es allerdings nicht mehr auf dem Server gibt. Die Zuordnung zwischen Icon und Servergruppe besteht weiterhin. Fordert der Client aber das Icon an, meldet ihm der Server zurück, dass es das Icon nicht mehr gibt.


    Die Lösung des Problems ist dementsprechend wie folgt: Icon neu hochladen und in der jeweiligen Servergruppe neu setzen (da es eine andere, neue ID erhalten wird).

    Also die Lags können etwas mit den verwendeten Sprach-Codecs und deiner Internetverbindung zu tun haben.


    Hast du sie schon mal deinstalliert und neu installiert? Hat sich da was verbessert / geändert? Falls nicht, muss man mal den App Entwickler kontaktieren und um Hilfe beten.

    Extrem teuer? Es gibt einen Anbieter, der verlangt für 10 Slots 10 € im Monat und da hast du kaum Rechte. Das ist extrem teuer. :D


    @Dyroxplays sagte zu den Preisen bereits etwas:

    Ich kann dir soviel sagen, dass der günstigste 0,11€/Slot seien, kann, da sonst das Unternehmen keinen Profit macht. Weil diese kaufen bei TS eine Lizenz, welche max. 0,10€/Slot kostet.
    0,15-0,22€/Slot ist schon okay, aber es kommt halt auch drauf an, was diese bieten. Wie zB Sebbo sagt: Einige wollen extra Geld für einen individuellen Banner, DDoS-Protection etc.


    Du hast bei deinem Anbieter aktuell 0,14 € pro Slot, somit macht dieser Anbieter 0,03 € Gewinn pro Slot. Wovon er aber auch noch andere Kosten (Server, DDoS Protection, Mitarbeiter,...) abziehen muss. Da benötigt man sehr viele Kunden, um alles bezahlen zu können. ;)


    Es scheint vielleicht, dass wir teuer sind, aber wenn du uns mit anderen Anbietern vergleichst, wirst du feststellen, dass wir Rechte / Services im Preis inkludiert haben, die andere für zusätzliche Kosten anbieten. Beispielsweise kompetenter und schneller Support, Traffic / Speicherplatz, Sprachverschlüsselung, Banner ändern, Codecs und TSDNS.


    Wir sind übrigens ein reiner Prepaid Anbieter. Bei uns kannst du heute Geld aufladen, einen TS3 Server mieten und 13 Tage später z.B. sagen, dass du ihn nicht mehr brauchst. Dann stoppst du ihn entweder einfach nur, um ihn zu einem späteren Zeitpunkt wieder 1:1 so wieder nutzen zu können oder du löschst ihn. In beiden Fällen wird jedoch kein Geld mehr abgebucht. Somit gibt es bei uns keine solche Bindung wie "Buche das Produkt für 3 Monate zum Preis von X.". :)

    Hallo,
    wie in der facebook Gruppe, gilt hier das selbe:

    Zitat

    Um dir helfen zu können, müsstest du vielleicht noch ein paar Eckdaten liefern: Mittels welcher Software / Lösung wird das auf deinen TS dort reingedoktort? Hast du es selber programmiert oder ist es eine bekannte Lösung?


    Ich vermute aufgrund deiner Aussage jedoch, dass es ein einfaches Rechte-Problem ist. Welches genau, kann man erst sagen, wenn wir mehr Infos zur Lösung haben.

    Wenn ich die neue Logitech Software installiere, werden dann meine Makros usw. von der alten Konfiguration übernommen?


    Das kann ich dir leider nicht sagen, da ich kein Logitech bisher hatte. Ich gehe aber davon aus.


    Normalerweise sollte da eine entsprechende Warnung stehen, wenn es alles zurücksetzen sollte.

    Hallo,
    hast du die aktuellsten Treiber von deinem Headset installiert? Einfach mal auf der Herstellerseite nachschauen, ob es einen neueren gibt. Der aktuellste ist vom 21. August: G35 Surround Sound Headset- Logitech Support


    Hast du in den Windows Sound-Einstellungen auch eingestellt, dass nichts passieren soll, wenn eine andere Anwendung etwas macht?

    • Rechtsklick auf das Lautstärke-Symbol rechts unten in deiner Taskleiste
    • "Wiedergabegeräte" auswählen
    • Tab "Kommunikation" öffnen
    • "Nichts unternehmen" auswählen
    • Mittels "Übernehmen" und dann "OK" speichern

    Deine Skripte sehen in Ordnung und sauber aus. :)


    Ich persönlich nutze dafür nur ein Skript, weil man sonst beim anderen meist was vergisst, zu konfigurieren, wenn man was ändert. So hat man ein Skript und führt alle Regeln für IPv4 und IPv6 aus. :)

    Bash
    #!/bin/bashiptables_commands=(iptables ip6tables)for iptables_command in ${iptables_commands[@]}; do	${iptables_command} -A INPUT -p tcp --dport 80 -j ACCEPT # HTTP	...	${iptables_command} -A INPUT -p tcp --dport 25847 -j ACCEPT # SSHdone/etc/init.d/netfilter-persistent save


    Und wenn man IPv4/-v6 spezifische Regeln hat, wie z.B. ICMP, dann kann man das so lösen:

    Bash
    #!/bin/bash
    if [[ "${iptables_commands}" == "iptables" ]]; then
    	${iptables_commands} -A INPUT -p icmp -m comment --comment "Erlaube: ICMP" -j ACCEPT
    else
    	${iptables_commands} -A INPUT -p icmpv6 -m comment --comment "Erlaube: ICMP" -j ACCEPT
    fi

    Sorry, ich war am Wochenende leider auf einer Feierlichkeit, daher konnte ich die letzten Tag nichts schreiben.


    Es haben einige Feedback zu deinem "Projekt" gegeben. Siehe auch oben, den Verlauf.


    Leider ist der Aufwand für dein Projekt viel höher als der Nutzen, daher scheint hier keiner Interesse daran zu haben, etwas entsprechendes zu programmieren. Die komplette Lösung, wie wo was zu machen wäre, habe ich bereits HIER verfasst. Ausführlicher geht es nicht, sonst würde es den Rahmen sprengen und zu spezifisch werden. Meine Lösung könnte man auch als "Anleitung" ansehen. Jetzt musst du nur noch jemanden finden, der eine Programmiersprache beherrscht, mit der es umsetzbar ist oder du lernst es dir selbst an. Programmieren ist aber leider kein 1x1 oder das Alphabet. Man kann hier vieles falsch machen, wenn man es nicht versteht. Das erkennt man am Ende an unsauberen Code, den keiner versteht, langsamer Code, der einfach nur ineffizient ist oder angreifbarer Code, weil jemand einfach nur eine "schnelle funktionierende" Lösung haben wollte.


    Beachte bitte auch, dass die Software Lösung in Zukunft unter Umständen auch gewartet werden muss. Windows bringt z.B. Updates raus, wodurch sich eine API-Schnittstelle ändert und dann funktioniert dadurch deine App nicht mehr. Oder Windows ändert die Richtlinien, wie der Quellcode von Apps auszusehen hat - dann muss die App u.U. auch angepasst werden. Irgendwer muss die App später also auch weiterentwickeln bzw. warten können. Das ist auch der Grund, warum so viele der Meinung sind, dass es sich nicht lohnt.


    Eine komplette Anleitung, wie du was im Code zu schreiben hast, wird dir keiner geben, denn dann würde man dir quasi direkt die Lösung programmieren.


    @SquareRoot hat dir wohl angeboten, das für mehrere Plattformen (Serveranwendung, Windows 10 App, Windows Phone App, Android App) zu entwickeln, wenn du ihm seine Dienstleistung als Entwickler vergütest. Normalerweise kostet dich ein Entwickler aus Deutschland um die 50 - 150 € pro Stunde. 10 - 20 € zahlst du normalerweise nur an Entwickler im Ausland (z.B. Indien, Asien und Co..).


    Du musst wissen, wie viel dir die Lösung Wert ist. Je nachdem, bezahlst du dann einen Entwickler, wenn es niemand kostenlos anbietet oder du erlernst dir Programmieren und baust es dir dann selbst. So oder so kostet beides Zeit und wie du bestimmt weist, ist Zeit gleich Geld. :)

    Während beim Framework die Fehler anständig über ne Exception geworfen werden, werden die bei der ts3admin.class nur in ein Array geschrieben


    Die ts3admin.class kann auch Fehlermeldungen ausgeben:

    PHP
    <?php
    /**
     * This code retuns all errors from the debugLog
     */
    if(count($tsAdmin->getDebugLog()) > 0) {
     foreach($tsAdmin->getDebugLog() as $logEntry) {
     echo '<script>alert("'.$logEntry.'");</script>';
     }
    }

    Hallo,
    nachdem du dich verbunden hast, musst du dich einloggen, also authentifizieren, sonst wirst du keine Informationen vom Server erhalten.


    Dir fehlt also zwischen der Zeile 6 und 7 der login():

    PHP
    <?php$ts3_user='serveradmin'$ts3_pass='passwort'...if($tsAdmin->getElement('success', $tsAdmin->connect())){$tsAdmin->login($ts3_user, $ts3_pass);$tsAdmin->selectServer($ts3_port);...


    Hier ein vollständiges Beispiel:

    @Tbas: Höre bitte auf, die exakt selbe Frage mehrfach im Forum zu stellen. Einmal reicht. Danke!


    Wie bereits von @master_d und @Data179 erwähnt wurde, kannst du die Offline Nachrichten nicht ohne weiteres einfach auf der Webseite anzeigen lassen und als "gelesen" markieren.


    Offline Nachrichten sind dazu gemacht, dass diese privat sind und nur von den einzelnen Clients selbst gelesen werden können. Eine API bietet dir hier also keine Lösung für dein Ziel.


    Die einzige Möglichkeit, die Nachrichten aller Clients auf einer Webseite zu erhalten, wäre es, diese direkt aus der Datenbank zu ziehen und entsprechend zu bearbeiten (z.B. als gelesen zu markieren).


    Die Tabelle messages beinhaltet alle Offline Nachrichten (Beispiel stammt von einer SQLite DB. MySQL / MariaDB sieht höchst wahrscheinlich nicht (viel) anders aus):

    Code
    CREATE TABLE messages ( message_id integer PRIMARY KEY AUTOINCREMENT NOT NULL, server_id integer unsigned, message_from_client_id integer unsigned, message_from_client_uid varchar(40), message_to_client_id integer unsigned, message_subject varchar(255), message_msg text, message_timestamp integer unsigned, message_flag_read integer default 0);


    SQL
    INSERT INTO "messages" VALUES(1,21,35,'A1vqlVfj55RN5UbESxZ7n+c4DUs=',42,'Bist du morgen online?','Hallo Max,bist du morgen online?Du müsstest mir in PUBG mal etwas zeigen... :)Viele Grüße,Sebbo',1506243933,0);


    Getrennt durch Kommas, haben wir nun folgenden Inhalt in diesem einen Datensatz:

    • message_id (integer: 1)
    • server_id (integer: 21)
    • message_from_client_id (integer: 35)
    • message_from_client_uid (varchar: A1vqlVfj55RN5UbESxZ7n+c4DUs=)
    • message_to_client_id (integer: 42)
    • message_subject (varchar: Bist du morgen online?)
    • message_msg (text: Hallo Max, bist du morgen online? Du müsstest mir in PUBG mal etwas eigen... :) Viele Grüße, Sebbo)
    • message_timestamp (integer: 1506243933)
    • message_flag_read (integer: 0)

    Je nachdem, mit was du deine Webseite gebaut hast oder bauen wirst, kannst du dann die entsprechenden Informationen mittels SQL-Befehlen verwerten. Ich zeige einfach mal kurz ein paar Beispiele anhand von simplen SQL-Befehlen:
    Alle Nachrichten auslesen

    SQL
    SELECT * FROM messages;


    Alle Nachrichten von dem virtuellen Server mit der ID 21 auslesen:

    SQL
    SELECT * FROM messages WHERE server_id="21";


    Alle Nachrichten von dem virtuellen Server mit der ID 21 für den Empfänger mit der Client ID 42 auslesen:

    SQL
    SELECT * FROM messages WHERE server_id="21" AND message_to_client_id="42";


    Je nachdem, welche Daten du alles brauchst, kannst du den Stern (*) in der SQL-Abfrage auch gegen die entsprechenden Datenbankfelder tauschen. Beispiel:

    SQL
    SELECT message_id,message_from_client_uid,message_subject,message_msg,message_timestamp,message_flag_read FROM messages WHERE server_id="21" AND message_to_client_id="42";


    So, nachdem man die Informationen, also Datensätze hat, zeigt man diese später entsprechend auf der Webseite an. Wie das geht, hängt wieder von deinem Webseiten-Code ab. Angenommen, du hast kein MVC, sondern einfach nur HTML und PHP-Code, dann sieht das z.B. so aus:
    ACHTUNG: Nicht getesteter Pseudocode! Dient nur zur Hilfestellung.

    PHP
    <?php		[...]	$sql = new SQL();	OFFLINE_MESSAGES = $sql->query("SELECT * FROM messages WHERE server_id='21' AND message_to_client_id='42'");	foreach($OFFLINE_MESSAGES as $OFFLINE_MESSAGE) {		echo "Absender: " . $OFFLINE_MESSAGE['message_from_client_uid'] . "\n";		echo "Erhalten am: " . date("d.m.Y H:i", $OFFLINE_MESSAGE['message_timestamp']) . "\n";		echo "Status: "; if($OFFLINE_MESSAGE['message_flag_read'] == 1) { echo "Gelesen\n"; } else { echo "Ungelesen\n"; }		echo "Betreff: " . $OFFLINE_MESSAGE['message_subject'] . "\n";		echo "Nachricht: " . $OFFLINE_MESSAGE['message_msg'] . "\n";	}


    So und angenommen jemand öffnet eine Nachricht und hat sie entsprechend gelesen, kann deine Webseite diese dann noch in der Datenbank als "gelesen" markieren:

    SQL
    UPDATE messages SET message_flag_read VALUES (1) WHERE message_id="1";


    Wer welche Nachrichten zu Gesicht bekommen darf oder soll, entscheidest du mit dem Code auf deiner Webseite. Wenn sich Benutzer auf deiner Webseite einloggen können, wäre es vermutlich sinnvoll, dass sie ihre Client Identität mit deren Profil auf deiner Webseite verknüpfen. Dann kannst du nämlich User-basiert die Nachrichten anzeigen lassen. Aufgrund von Datenschutz, würde ich nämlich NIE jedem alle Nachrichten anzeigen. Das könnte sehr schnell, sehr viel Ärger geben.