PHP Forensoftware Paketsystem und allerlei

Hallo liebe Community!
Im Moment arbeite ich gerade an einem PHP Projekt.
Wie ihr wahrscheinlich am Titel erkannt habt, geht es um eine eigene Forensoftware.
Ich hab da ein paar Fragen.
Ich fang jetzt mal von hinten an (also beim Endbenutzer). Mein Projekt soll unter die GPLv3. Allerdings tut sich bei mir die Frage auf wie kommerziele Forensoftwaren gesichert wird. Immerhin kosten die meistens über 50€. Und da kann ich es mir zu unserer Zeit nicht ganz vorstellen, das die ihre Software nur mit einer Lizens schützen. Da müsste doch nur einer es kaufen und könnte es gleich per USB Stick an alle seine Verwanten verschenken. Und das die so einen Zendverschlüssler verwenden kann ich auch nicht glauben... Hat jemand ne Idee wie die das machen, oder hat sogar so eine Software und weiß es? Nun rücken wir mal zum Teil ein paar Monate in die Zukunft, wo die zweite Version meiner Forensoftwae rauskommt. Allerdings kriegt das nicht jeder mit und arbeitet weiterhin mit einer veralteten Software, die wahrscheinlich auch noch Sicherheitslücken aufweist. Es währe doch schön, wenn im ACP so ne nette Shoutbox aufgeht die einem Ankündigt, das es eine Version gibt. Und Möglich sein muss es, immerhin macht es Wordpress auch ;-). Was haltet ihr von diesem Ansatz: Als erstes wird beim ersten AUfruf des ACPs durch einen Admin geprüft, ob fsockopen Aktiviert ist (oder gibt es ne bessere Idee verbindung mit einem Server aufzubauen?). Wenn ja, baut PHP mit meiner Seite http://www.entwicklerpages.de/ eine Verbindung auf und lädt sich eine txt runter, in der die Versionsnummer der Aktuellen Version steht. Ist die Nummer größer fügt PHP eine Shoutbox hinzu. Sollte fsockopen deaktieviert sein (á la Freehoster) soll die Abfrage Clientseitig gemacht werden. Wobei da das nächste Problem liegt: soweit ich wieß kommt das XMLHttpRequest Objekt (also Ajax) nicht mit verbindungen zu anderen Servern klar. Aus dem grund könnte ein Script von meinem Server aufgerufen werden (JS) das die Aktuelle Version beinhaltet und in eine Variable schreibt. Dannach prüft JS ob die Software alt ist. Was haltet ihr von diesem Ansatz?
Als nächstes springen wir mal wieder zurück in die Gegenwart und kommen zu dem Teil der auch in dem Titel steht: ein Paketsystem. Meine Forensoftware hat so ne Art statisches Paketsystem für die "Kernel" Klassen. Aber es wäre natürlich nicht schlecht, wenn es noch ein dynamisches gäbe. (Natürlich nicht so komplex wie das von WBBLite 2/WBB3) Allerdings scheitert das schon in der Planung. Denn mir ist keine Methode bekannt, in PHP eine Klasse zu erzeugen, ohne zu wissen, wie diese heißt. Eine Möglichkeit wäre, eine Indexierung eines Plugins/Paketes vorzunemen wenn es installiert wird und den Namen der Klasse in eine Datenbank zu schreiben. Allerdings gibt mir MySQL ja Strings zurück. Und ich kenne auch keine Methode, um eine Klasse mit einem String zu erzeugen/initialisieren. Beim schreiben dieses Textes komme ich allerdings auf eine andere Idee, die ihr mal bewerten könntet. Wobei ich mir garnicht sicher bin ob das funktioniert. In PHP gibt es ja auch so etwas wie Zeiger, z.B wenn ich bei einer Funktion ein Objekt einer Klasse übergebe und direkt mit dem Objekt arbeiten will, nicht mit einer Kopie. Allerdings ist da ja das Probelm, das auch wenn ich die Addresse (Oder was auch immer dann in einem solchen Zeiger steht) in eine DB schreibe, ich ja vorher ein Objekt der Klasse brauche. Besonders doof ist, das das Objekt ja nichtmal erhalten bleibt. Also Funktioniert das so auch nicht. Hat jemand da eine Idee?

Ich bin dankbar für jede Antwort. Besonders wichtig für mich ist die mit der Versionskontrolle.
Das Paketsystem ist eigentlich auch nicht für die erste Majorversion geplant gewesen. Wenn jemand gleich eine Superduper Lösung für mich hat baue ich es vieleicht gleich ein. ANsonsten kann ich immernoch es mit einer Minor/Majorversion Hinzufügen.

Entwicklerpages
 
Zuletzt bearbeitet:
Grüße,

also das mit den Updates habe ich mir auch schon des öfteren überlegt, jedoch noch nie umgesetzt, weshalb ich dir nur meine Idee mitteilen kann (zum Coden bin ich um die Uhrzeit iwie zu faul ;-) ).

Das ganze soll ja bestimmt auch nur eine authorisierte Person zu Gesicht bekommen, weshalb es sinnvoll ist, das Ganze in ein Admin-Panel einzubauen.
Dabei wird, beispielsweise bei der Anmeldung oder dergleichen, eine FTP-Verbindung zu einem Server aufgebaut, auf dem die Updates liegen bzw. die veränderten Dateien.
(Könnte man vllt. auch so machen, dass dort ne .txt mit ner Versionsnummer liegt und die mit der Versionsnummer der Config abgeglichen wird -> sollte ein Unterschied vorliegen, so wird das Update durchgeführt).

In wie weit das sicherheitstechnisch umzusetzen ist, ist jedoch wieder eine andere Frage über die ich mir noch keine Gedanken gemacht habe.
Ist auf jeden Fall erstmal meine Meinung dazu :p
 
Danke für die Antwort.
Das die Funktion sich im aadminpanel befinden soll, gab ich auch geplant gehapt. Und ich hab es oben auch hingeschrieben (ACP). Theoretisch wäre FTP ne Möglichkeit, die jedoch einige Probleme aufwirft. Zum einen hat nicht jeder FTP in php aktiviert. Besonders die Freehoster User hätten Probleme.
Zweites Problem: bei meinem Anbieter kann man nur zwei FTP Accounts erstellen.
Wobei der erste natürlich meiner ist. Ich bräuchte ja einen eigenen für diese Funktion, da der ACC ja keinne schreibrechte haben darf.
Trotzdem danke!
 
Tut mir leid, das Englisch der 7. Klasse auf ner Realschule plus eigene Kenntnisse haben nicht gereicht um dieses Dokument vollständig zu verstehen. Es sah so aus (und es standen gewisse Schlüsselwörter [tar] im Text) das Phar eine Möglichkeit ist (die scheinbar zum Standart gehört) so eine Art Archiv zu erstellen, in der dann eine PHP Anwendung ist. Da ich nicht alles verstanden hat wirft das bei mir ein paar Fragen auf:
Wie erstellt man solche Phar Archive? Ich hab davon was gelesen, das man daraus auch Tars machen kann, aber vorher muss wohl ein .phar da sein. Und vor allem: Ich vermute mal du (Saftmeister) hast mir Phar für meine Frage mit dem Plugin/Paketsystem vorgeschlagen. Das Plugins im gepackt verteilt werden könnten (Wie bei WBB) währe zwar nicht schlecht, allerdings wüsste ich auch da nicht, wie ich weiß wie die Klasse heißt, die icheinbinden soll. Und vorallem weiß ich nicht so ganz, wie ich dieser Klasse die Kontrolle über spezielle Punkte geben soll.
Gibt es irgendeine Möglichkeit einen String in eine Art Platzahlter umzuwandeln, mit dem ich dann ein Objekt einer Klasse erzeugen kann?
 
Danke!
Das half mir schon viel mehr weiter!
Theoretisch könnte man eine Infodatei in ein solches Ph(p)ar(chiv) eine index.php hineinschmeißen, die dannAblauf koiedieniert. Eine möglichkeit ein Objekt zu erstellen, von dem man die Klasse beim Schreiben des Code nicht kennt gibt es nicht, oder? Oder könnte man vielleicht JSON wie in JS Interpretieren, so das gleich ein Objekt entsteht?
 
Du kannst Objekte aus Klassen erzeugen, die der PHP-Applikation durch includes bekannt sind, wenn du den Namen das Klasse als String angibst. Das kann man entweder über die sog. Reflection (professionellere Variante) oder den schnellen Weg erledigen:

PHP:
class EineExistierendeUndBekannteKlasse
{
  private $_eineVariable;

  public function __construct()
  {
    $this->_eineVariable = 'Hat einen Wert';
  }

  public function getVariable()
  {
    return $this->_eineVariable;
  }
}
$meine_klasse_als_string = 'EineExistierendeUndBekannteKlasse';

$objekt = new $meine_klasse_als_string;

echo $objekt->getVariable();

Wie gesagt, ich mach sowas über Reflection, denn genau dafür ist sie da.
 
Zuletzt bearbeitet:
Mit dem Schützen Mite dir doch nen Root Server und lass es dann von den Leuten die es wollen auf deiner Webseite speichern :D xD so bekommt Theoretisch nie jemand die sache vor den Bildschirm :D
 
Zurück