Seite 6 von 53 ErsteErste ... 234567891016 ... LetzteLetzte
Ergebnis 76 bis 90 von 784

Thema: Mod für PB-Spiele: PB Mod_v1

  1. #76
    schläft Avatar von Frozen
    Registriert seit
    10.10.09
    Beiträge
    18.397
    Wirklich top was ihr euch da für eine Arbeit macht

    Ich lese gespannt diese Partnerstory mit

    Wird Ram mithilfe Zulans es schaffen den bösen Server sich untertan zu machen?

    Das erfahren wir hoffentlich in den nächsten Wochen
    Freedom's just another word for nothing left to lose

  2. #77
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.015

  3. #78
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Wochen dauert es hoffentlich nicht
    Habe mich jetzt eingelesen, wie man den Traffic mitschneiden kann, was auch schon klappt. Nur in Pycap noch nicht, da erhalte ich die Meldung
    [quote] pycap.capture.error: libpcap was compiled without pf support[quote]
    wenn ich auf dem Interface 'lo' lauschen will. (Für die Mitleser: Es gibt eine "virtuelle Netzwerkkarte" die benutzt wird um Daten innerhalb eines Rechners auszutauschen. Die gehen dann nicht über den Router.)
    Ok, am Ende brauch ich das lo-Interface gar nicht, aber das würde das Testen nat. stark erleichtern.
    Heute Nacht gehts weiter

  4. #79
    Say My Name Avatar von Zulan
    Registriert seit
    13.03.08
    Beiträge
    8.901
    Sagmal Ram, das GUI im PB ist komplett in Python implementiert, oder? Was haelst du davon das komplett zu entfernen, so dass man auch keine Handstaende mehr machen muss um Pitboss auf Grafikkartenlosen Remote-Servern laufen zu lassen. Die wichtigste Funktionalitaet ist ja schon im Webinterface, was muesste da noch rein um auf das GUI komplett zu verzichten?

  5. #80
    Say My Name Avatar von Zulan
    Registriert seit
    13.03.08
    Beiträge
    8.901
    Also bei mir tut das soweit:

    Code:
    #!/usr/bin/python2
    
    import pycap.capture
    import pycap.protocol
    import time
    import pprint
    
    server_ip = "192.168.122.17"
    server_port = 2056
    device = "virbr0"
    timeout = 500
    
    filter = "(udp src port {port} and src host {host}) or (udp dst port {port} and dst host {host})".format(
      host = server_ip, port = server_port)
    
    pcap = pycap.capture.capture(device, timeout = timeout)
    pcap.filter(filter);
    
    print("starting to read")
    
    clients = []
    
    while True:
      try:
        packet = pcap.next()
      except pycap.capture.error:
        print("error?")
        continue
      print("received ", packet)
      if packet is None:
        continue
      
      ip = packet[1]
      assert isinstance(ip, pycap.protocol.ip)
      assert ip.source != ip.destination, "cannot have the server and client on the same ip, it confuses me too much"
      udp = packet[2]
      assert isinstance(udp, pycap.protocol.udp)
      payload = packet[3]
      
      if (ip.source == server_ip):
        client = ip.destination
        print('packet from server->client [{}]'.format(client))
      else:
        assert ip.destination == server_ip
        client = ip.source
        print('packet from client->server [{}]'.format(client))

  6. #81
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Zitat Zitat von Zulan Beitrag anzeigen
    Sagmal Ram, das GUI im PB ist komplett in Python implementiert, oder? Was haelst du davon das komplett zu entfernen, so dass man auch keine Handstaende mehr machen muss um Pitboss auf Grafikkartenlosen Remote-Servern laufen zu lassen. Die wichtigste Funktionalitaet ist ja schon im Webinterface, was muesste da noch rein um auf das GUI komplett zu verzichten?
    Ja, das wäre möglich. Wenn wir voraussetzen, dass der fensterlose Zustand nur beim Laden von Spielständen funktionieren muss (D.h. die Funktionen des Wizzards zum Erstellen neuer Spiele (PbWizzard.py) nicht über das Webinterface nachgebildet werden), ist es wahrscheinlich auch nicht viel Arbeit.
    Am besten wird in die pbSettings.json eine Variable ergänzt mit der man die Fenstererzeugung unterdrücken kann.

    Gibt es schon Neuigkeiten von der Php/Sql-Front? Ich würde Pucc gerne die Möglichkeit einräumen fürs PB73er ein Testspiel zu starten ohne dass er einen Webserver einrichten muss.

  7. #82
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Zitat Zitat von Zulan Beitrag anzeigen
    Also bei mir tut das soweit:
    Das probiere ich gleich mal aus Wahrscheinlich muss ich aber trotzdem vorher das Paket neu kompilieren, bei dem auf meinem System ein mangelndes Feature beklagt wurde.

  8. #83
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Habe das Programm mal zu folgendem erweitert. Es fehlt jetzt noch das Senden der Fake-Pakete.

    Code:
    Achtung Spoiler:
    #!/usr/bin/python2 import pycap.capture import pycap.protocol import time import pprint server_ip = "192.168.0.22" server_port = 2056 device = "virbr0" device = "lo" timeout = 500 #filter = "(udp src port {port} and src host {host}) or (udp dst port {port} and dst host {host})".format( filter = "(udp src port {port} and src host {host} )".format( host = server_ip, port = server_port) pcap = pycap.capture.capture(device, timeout = timeout) pcap.filter(filter); print("starting to read") clients = {} while True: try: packet = pcap.next() except pycap.capture.error: print("error?") continue #print("received ", packet) if packet is None: continue ip = packet[1] assert isinstance(ip, pycap.protocol.ip) # Outcommened by me because both running on one system in my setup #assert ip.source != ip.destination, "cannot have the server and client on the same ip, it confuses me too much" udp = packet[2] assert isinstance(udp, pycap.protocol.udp) payload = packet[3] if (ip.source == server_ip): client = ip.destination #print('packet from server->client [{}]'.format(client)) # Anlayse content if payload is at least 20 chars long pl = len(payload) if pl >= 20 and ord(payload[0]) == 254 and ord(payload[1]) == 254: # Structure of searched payload: # 254 254 00 # [2 bytes number: A] # [2 bytes number: B] # [11 bytes: content] # [7 bytes: not analysed] clist = clients.get(client,[]) clist.append( payload ) clients[client] = clist #print len(clist) N = len(clist) if N > 10: #Check if B + content is always the same -> upload bug detected bugFound = True for n in xrange(N-10,N): if clist[N-1][5:18] != clist[n][5:18] : bugFound = False break # Flush list clients[client] = [] print ("Bug found?! ", bugFound ) if bugFound: # Send fake packet(s) to stop upload # Structure of content: # 254 254 64 (A+1) (5 bytes) # 254 254 06 B (A+1) (7 bytes) A = clist[N-1][3:5] # String! B = clist[N-1][5:7] a1 = ord(A[0])*255 + ord(A[1])+1 A1 = chr(a1/255) + chr(a1%255) print (a1,A1) else: assert ip.destination == server_ip client = ip.source print('packet from client->server [{}]'.format(client))

  9. #84
    Say My Name Avatar von Zulan
    Registriert seit
    13.03.08
    Beiträge
    8.901
    Zitat Zitat von Ramkhamhaeng Beitrag anzeigen
    Gibt es schon Neuigkeiten von der Php/Sql-Front? Ich würde Pucc gerne die Möglichkeit einräumen fürs PB73er ein Testspiel zu starten ohne dass er einen Webserver einrichten muss.
    Habs jetzt Laufen unter http://civ.zulan.net/pb , kannst dich Anmelden dann mach ich dich admin.

    Ich habe sehr lange fuer das Portieren auf PDO gebraucht, einfach weil die Struktur so verzweigt ist - allein der ganze kopierte code um die DB queries drum rum . Ich sehe so gut wie keinen Vorteil von der dbClass so wie es gerade implementiert ist. Ich wuerde da schon gern etwas aufraeumen - drum mal die Frage: Brauchen wir wirklich Downloads/Kategeorien? Ich mein wenn es so umfangreich sein soll, haetten wir auf auf Drupal aufbauen koennen oder sowas.

    Ich habe das DB Zeugs versucht einigermassen Portabel ueber die PDO zu gestalten - da natuerlich nicht mehr mit einer eigenen db/tabelle pro Spiel. Ich hab nicht getestet obs noch mit SQLite funktioniert (weiss nicht ob die CREATE TABLE syntax so stimmt).

    Ansonsten sind meine Aenderungen unter: https://github.com/Zulan/PBStats

  10. #85
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Die Downloads-Klasse existiert allein aus dem Grund, weil ich sie aus einem alten Projekt mit übernehmen konnte. Ich habe sie portiert, da es sich später als praktisch erweisen könnte, wenn die User, oder sogar die PB-Server, Speicherstände hochladen können. Außerdem wollte ich so neue Versionen der Mod unabhängig von Github anbieten können.

    Zweck der dbClass war die Vereinheitlichung der Formularerzeugung. (Deswegen sehen die Formulare auch etwas steril aus.) Ich habe aber schon befürchtet, dass sie zu chaotisch ist, um von anderen benutzt zu werden :-( Hast du vor weitere Tabellen einzuführen, die über die Weboberfläche verändert werden können? Bevor du die dbClass herausschmeißt, gib mir eine Chance sie zu retten indem du mir die Syntax deiner Tabelle gibst und ich dann die neue Eingabemaske erstelle.

    Aber nat. kannst du da auch aufräumen. Es läuft am Ende auf deinem Server und soll dann auch deinen Ansprüchen genügen. Ich gebe das Heft bei der Webkomponente auch gerne komplett aus der Hand und konzentriere mich auf andere Punkte (helfe aber beim Programmieren da trotzdem gerne weiter.)
    Wenn du die Klassen-Dateien für Downloads/Kategorien nicht löschst sondern nur in globalVars.php und index.php auskommentierst, sind die ja erst mal auf Eis gelegt aber für einen späteren Bedarf noch vorhanden.
    Eine andere Sache, die noch entfernt werden kann, sind die Ajax-Methoden zum dynamischen Nachladen von Content.
    Das ist nur Schnick-Schnack Bin mir nicht mal sicher, ob die derzeit überhaupt funktioniert/genutzt wird. Die Funktionsweise war so: Alle Links, welche
    die Eigenschaft 'dyn' besitzen werden per Javascript abgefangen und es wird Quellcode per Javascript angefordert, der dann einen Teil der Seite dynamisch ersetzt.

    Was noch fehlt ist eine Tabelle, die speichert welche Accounts an welchen Spielen teilnehmen. Zumindest braucht man dass, wenn man alle Features von Civstats übernehmen will. Ich habe diese Funktion aber beispielsweise nie auf Civstats benutzt.
    Was fehlt deiner Meinung nach noch an der Weboberfläche?

    Habe auf deinem Server jetzt einen Account erstellt, was ohne Probleme ging. Ich schreib Pucc mal eine PM, damit er die Anmeldung und Erstellung einen Spiels auch probieren kann.
    Er bekommt nat. keine Admin-Rechte (Zu Debugging-Zwecken )

  11. #86
    Say My Name Avatar von Zulan
    Registriert seit
    13.03.08
    Beiträge
    8.901
    Zitat Zitat von Ramkhamhaeng Beitrag anzeigen
    Die Downloads-Klasse existiert allein aus dem Grund, weil ich sie aus einem alten Projekt mit übernehmen konnte. Ich habe sie portiert, da es sich später als praktisch erweisen könnte, wenn die User, oder sogar die PB-Server, Speicherstände hochladen können. Außerdem wollte ich so neue Versionen der Mod unabhängig von Github anbieten können.

    Zweck der dbClass war die Vereinheitlichung der Formularerzeugung. (Deswegen sehen die Formulare auch etwas steril aus.) Ich habe aber schon befürchtet, dass sie zu chaotisch ist, um von anderen benutzt zu werden :-( Hast du vor weitere Tabellen einzuführen, die über die Weboberfläche verändert werden können? Bevor du die dbClass herausschmeißt, gib mir eine Chance sie zu retten indem du mir die Syntax deiner Tabelle gibst und ich dann die neue Eingabemaske erstelle.
    Ich hab keine konkreten Plaene, ich denke aber durchaus, dass wir mit der Zeit sicher noch Ideen und Wuensche bekommen werden.

    Zitat Zitat von Ramkhamhaeng Beitrag anzeigen
    Aber nat. kannst du da auch aufräumen. Es läuft am Ende auf deinem Server und soll dann auch deinen Ansprüchen genügen. Ich gebe das Heft bei der Webkomponente auch gerne komplett aus der Hand und konzentriere mich auf andere Punkte (helfe aber beim Programmieren da trotzdem gerne weiter.)
    Koennen wir gern so machen. Aber jetzt laeuft es ja erstmal, werd ich sicher nicht morgen kommplett neu programmieren .

    Zitat Zitat von Ramkhamhaeng Beitrag anzeigen
    Wenn du die Klassen-Dateien für Downloads/Kategorien nicht löschst sondern nur in globalVars.php und index.php auskommentierst, sind die ja erst mal auf Eis gelegt aber für einen späteren Bedarf noch vorhanden.
    Eine andere Sache, die noch entfernt werden kann, sind die Ajax-Methoden zum dynamischen Nachladen von Content.
    Das ist nur Schnick-Schnack Bin mir nicht mal sicher, ob die derzeit überhaupt funktioniert/genutzt wird. Die Funktionsweise war so: Alle Links, welche
    die Eigenschaft 'dyn' besitzen werden per Javascript abgefangen und es wird Quellcode per Javascript angefordert, der dann einen Teil der Seite dynamisch ersetzt.

    Was noch fehlt ist eine Tabelle, die speichert welche Accounts an welchen Spielen teilnehmen. Zumindest braucht man dass, wenn man alle Features von Civstats übernehmen will. Ich habe diese Funktion aber beispielsweise nie auf Civstats benutzt.
    Was fehlt deiner Meinung nach noch an der Weboberfläche?
    Das mit den Erinnerungen Mails koennte durchaus interessant sein. Evtl auch ne notification, wenn eine bestimmte Menge an Kriegsgegnern fertig gezogen haben. Was ich mir cool vorstellen koennte waere ein Zeitstrahl mit Ereignissen, login oder so. Hatte ich nicht gerade geschrieben, dass ich erstmal keine Ideen habe .

    Ich konne leider noch nicht die Verbindung Web <-> PB testen, weil das mit dem PB GUI so ein Krampf ist auf headless servern... Naja haette ich bei der Einrichtung von meiner libvirt Machine nicht extra auf serielle Konsole gestellt waere es jetzt wohl etwas einfacher. Aber so toll ist das auch nicht, da muss man ja dann auch noch einen window manager installieren, aufm Server . Die ganzen Alternativen sind halt auch frickelig.

    Also ne console-ui fuer pitboss waere wirklich nett

    Zitat Zitat von Ramkhamhaeng Beitrag anzeigen
    Habe auf deinem Server jetzt einen Account erstellt, was ohne Probleme ging. Ich schreib Pucc mal eine PM, damit er die Anmeldung und Erstellung einen Spiels auch probieren kann.
    Er bekommt nat. keine Admin-Rechte (Zu Debugging-Zwecken )
    Du hast die Admin Rechte .

  12. #87
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Problem gefunden
    Laut deinem Github-Code gibt es die Seite update.php nicht mehr. Das ist die Seite die der PB-Server probiert zu erreichen, wenn er seinen Status melden will. Hast du das verschoben oder versehentlich gelöscht?

    Mein Spiel wird trotz des Fehler jetzt angezeigt. Daten werden aber nur geholt, wenn jmd. auf der Seite surft. Passwort zum Administrieren ist 'pw'
    Edit: Seit ein paar Minuten ist die Seite "Spiel bearbeiten" leer. Vorhin ging es noch, denn ich habe die Funktion schon genutzt.

    Zitat Zitat von Zulan Beitrag anzeigen
    Ich konne leider noch nicht die Verbindung Web <-> PB testen, weil das mit dem PB GUI so ein Krampf ist auf headless servern... Naja haette ich bei der Einrichtung von meiner libvirt Machine nicht extra auf serielle Konsole gestellt waere es jetzt wohl etwas einfacher. Aber so toll ist das auch nicht, da muss man ja dann auch noch einen window manager installieren, aufm Server . Die ganzen Alternativen sind halt auch frickelig.
    Ja, daran denkt man bei der Installation eines Server nicht. Extra X-Umgebung für ein Wine-Programm
    Geändert von Ramkhamhaeng (17. August 2014 um 23:52 Uhr)

  13. #88
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Update zum Upload-Problem: Ich kann den Server schon zum Beenden der Verbindung bewegen, aber das Senden der Fake-Pakete klappt noch nicht so ganz. Pycap hat ja leider keine richtige Hilfe :-( Wahrscheinlich liegt mein Fehler darin, dass ich bisher keine UDP-Checksumme berechnet habe.

  14. #89
    Say My Name Avatar von Zulan
    Registriert seit
    13.03.08
    Beiträge
    8.901
    Zitat Zitat von Ramkhamhaeng Beitrag anzeigen
    Problem gefunden
    Laut deinem Github-Code gibt es die Seite update.php nicht mehr. Das ist die Seite die der PB-Server probiert zu erreichen, wenn er seinen Status melden will. Hast du das verschoben oder versehentlich gelöscht?
    Oehm, wo ist sie denn in deinem Github?

  15. #90
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Git add vergessen. Werds, als letzte Aktion für heute, ändern. Wie die Zusammenarbeit bei Forks in Github am besten läuft muss ich auch erst noch heraus finden.

Seite 6 von 53 ErsteErste ... 234567891016 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •