Sponsor-Board.de
Vorstellung DNS-CP

+- Sponsor-Board.de (https://www.sponsor-board.de)
+-- Forum: Webmaster (/forumdisplay.php?fid=44)
+--- Forum: Projekt vorstellen (/forumdisplay.php?fid=36)
+--- Thema: Vorstellung DNS-CP (/showthread.php?tid=42838)


Vorstellung DNS-CP - Stricted - 11.10.2013 11:52

Guten tag

ich möchte hiermit das projekt DNS-ControlPanel vorstellen
das projekt ist opensource und auf github einsehbar

das ziel dieses projektes ist es ein dns interface zu bauen das mehrere systeme unterstützt

geplant ist bisher mydns, powerdns und bind9

umgesetzt ist bisher nur mydns

hier mal ein screenshot


hier eine demo [Link: Registrierung erforderlich] (ohne dns server anbindung)

und zu guterletzt der link zum source [Link: Registrierung erforderlich]

ich freue mich üner feedbacks jeglicher art

MfG
Stricted/Terrax2
(sry für die schlechte rechtschreibung/satzstellung und kleinschreibung bin grade etwas in eile und legastheniker)


RE: Vorstellung DNS-Webinterface - Sysix - 11.10.2013 12:09

Dein Login ist zu 0% sicher.

Code:
    public static function isLoggedIn () {
if(isset($_SESSION['login']) && $_SESSION['login'] == 1){
return true;
} else {
return false;
}
}


einfach eine fake Session machen Wink schon bin ich eingeloggt.

Code:
    public static function isAdmin () {
global $conf;
$res = DB::query("SELECT * FROM ".$conf["users"]." WHERE id = :id", array(":id" => $_SESSION["userid"])) or die(DB::error());
$row = DB::fetch_array($res);
if(isset($row['admin']) && $row['admin'] == 1){
return true;
} else {
return false;
}
}


Die UserID mit der Nummer 1 ist meist Admin, also stell ich mir eine Session ein, wo ich $_SESSION['login'] = 1 UND $_SESSion['userid'] = 1 einstell.

Schon hab ich kompletten zugriff drauf Wink


RE: Vorstellung DNS-Webinterface - Stricted - 11.10.2013 12:13

dann würde ich gerne mal wissen wie ich diese variablen im browser ändern kann sind ja schließlich keine cookies die im browser landen
du als user bekommst ja eigentlich nur die sessionid

aber gut ich lasse mir da was einfallen


RE: Vorstellung DNS-Webinterface - netCiX - 11.10.2013 12:36

Die Werte lassen sich auch nicht vom Client ändern.
Der Client besitzt lediglich die Session-ID und unter dieser werden dann auf dem Webserver die Variablen abgelegt.

Die Variablen sind also nicht ohne weiteres vom Client manipulierbar.


RE: Vorstellung DNS-Webinterface - Mr-Trust - 11.10.2013 13:16

Sysix schrieb:
Dein Login ist zu 0% sicher.

Code:
    public static function isLoggedIn () {
if(isset($_SESSION['login']) && $_SESSION['login'] == 1){
return true;
} else {
return false;
}
}


einfach eine fake Session machen Wink schon bin ich eingeloggt.

Code:
    public static function isAdmin () {
global $conf;
$res = DB::query("SELECT * FROM ".$conf["users"]." WHERE id = :id", array(":id" => $_SESSION["userid"])) or die(DB::error());
$row = DB::fetch_array($res);
if(isset($row['admin']) && $row['admin'] == 1){
return true;
} else {
return false;
}
}


Die UserID mit der Nummer 1 ist meist Admin, also stell ich mir eine Session ein, wo ich $_SESSION['login'] = 1 UND $_SESSion['userid'] = 1 einstell.

Schon hab ich kompletten zugriff drauf Wink


Ich glaub du verwechselst da Cookies und Sessions Wink.
Cookies werden beim Client gespeichert und lassen sich einfach verändern.
Sessions hingegen liegen auf dem Webserver und lassen sich durch den User nicht manipulieren.
Solange er die Sessions immer erneuert und session.use_only_cookies auf 1 setzt, ist es fast unmöglich die Daten einer Session auszulesen, bzw. zu ändern.

MfG


RE: Vorstellung DNS-Webinterface - Sysix - 11.10.2013 13:36

Ja da war ich etwas zu vereilig Biggrin
Ich hatte nämlich bei mir das Problem, dass ich ein Falsch konfigurierten Server hatte und er Session automatisch als Cookie gespeichert hat.


RE: Vorstellung DNS-Webinterface - Mr-Trust - 11.10.2013 15:59

Auch das wage ich zu bezweifeln, dass das geht ^^.
Die Session Werte können nicht beim Client gespeichert werden, diese Möglichkeit bietet die PHP Konfiguration gar nicht Wink.
Bei dir wird lediglich die sogenannte Session ID gespeichert, mit der dann die zugehörigen Session Inhalte auf dem Webserver verwendet werden können.
Das einzige Problem, das dabei besteht, ist, dass jemand die Session ID eines anderen herausfindet und diese dann bei sich als Session ID abspeichert. Somit wird dieser dann als anderer Benutzer erkannt (Session-Hijacking).

MfG


RE: Vorstellung DNS-Webinterface - k1ngk0ng - 11.10.2013 16:14

Hallo,

dachte schon, super, spielt mir genau in die Hände Biggrin

Aber dann sah ich, kein powerDns-Support und die Api wohl auch noch nicht funktionsbereit.

Weist du, wann man hier damit rechnen kann? Kann man das vll. mit paar Euros supporten/beschleunigen? ^^


RE: Vorstellung DNS-Webinterface - Stricted - 11.10.2013 16:22

k1ngk0ng schrieb:
Hallo,

dachte schon, super, spielt mir genau in die Hände Biggrin

Aber dann sah ich, kein powerDns-Support und die Api wohl auch noch nicht funktionsbereit.

Weist du, wann man hier damit rechnen kann? Kann man das vll. mit paar Euros supporten/beschleunigen? ^^


also wegen powerDns muss ich mal schauen die klassen sind ja soweit vorbereitet muss halt alles anpassen/umschreiben

und die api ist noch imbau

und zum letzten punkt -> pm me


RE: Vorstellung DNS-Webinterface - KoKsPfLaNzE - 11.10.2013 18:56

Hiho,

ich hab mir mal bissel den Code angeguckt und find einige Stellen doch einwenig komisch. Zum einen solltest du PHPCode und HTMLCode von einander trennen, mit sowas fährt man nie gut.

Zum anderen solltest du dir die "DatenbankClients" nochmal überarbeiten, es ist schön un gut das du mehrere Db´s unterstützt jedoch ist es nicht so gut dies via Case um zu setzen, wenn das mit einem Interface machst und einer Factory die das ganze steuert, könntest viel mehr DBs supporten, da vermutlich MSSQL un Oracel net gehen würd(nur code überflogen), weil einfach die Syntax an machen stellen nicht gleich ist und es feine unterschiede gibt.

Zur DB noch kurz man sollte die Querys die man baut in ein Model verschieben un net mit anderen sachen mixen, somit ist der code bissel sauberer, ich finds persönlich am besten wenn pro Tabelle es eine Klasse gibt, damit man die querys an mehrern stellen nutzen kann und man bei DB änderungen gleich alles findet ohne hunderte Files durch zu gucken.

Auch solltest dir überlegen ob dies wirklich so sinnvoll ist
...
public static function connect($host, $user, $pw, $db, $driver, $port = Null) {
...
Diese Methode kann och allein auf die Config zugreifen um die ConnectDaten zu erhalten, ohne das man den spaß immer rein geben muss.

Die Template Engine die du dir da gebaut hast, ist ja schön und gut jedoch gibt es um einiges bessere umsetzungen die viel mehr sachen dir bieten wie zum beispiel Twig oder Smarty.

BTW wieso schreibst in viele dateien immer "if(!defined("IN_PAGE")) { die("no direct access allowed!"); }", mach dir doch einfach einen public ordner wo styles un eine index liegt. Auf diesen Ordner geht dann das DocRoot vom vhost, und in der Index includest dann einfach die anderen benötigten Files, am besten mit so einem Autoloader oder sowas in der Richtung.

Grüße
KoKsPfLaNzE


RE: Vorstellung DNS-Webinterface - Stricted - 11.10.2013 19:29

KoKsPfLaNzE schrieb:
ich hab mir mal bissel den Code angeguckt und find einige Stellen doch einwenig komisch. Zum einen solltest du PHPCode und HTMLCode von einander trennen, mit sowas fährt man nie gut.

wird noch geändert werde warscheinlich auf die smarty engine umsteigen

KoKsPfLaNzE schrieb:
Zum anderen solltest du dir die "DatenbankClients" nochmal überarbeiten, es ist schön un gut das du mehrere Db´s unterstützt jedoch ist es nicht so gut dies via Case um zu setzen, wenn das mit einem Interface machst und einer Factory die das ganze steuert, könntest viel mehr DBs supporten, da vermutlich MSSQL un Oracel net gehen würd(nur code überflogen), weil einfach die Syntax an machen stellen nicht gleich ist und es feine unterschiede gibt.
Zur DB noch kurz man sollte die Querys die man baut in ein Model verschieben un net mit anderen sachen mixen, somit ist der code bissel sauberer, ich finds persönlich am besten wenn pro Tabelle es eine Klasse gibt, damit man die querys an mehrern stellen nutzen kann und man bei DB änderungen gleich alles findet ohne hunderte Files durch zu gucken.

hab alles getestet bisher hat alles funktioniert
kann aber gerne für jeden datenbank typ ne eigene class machen
und zu den querys das wird noch geändert da ich ja auch powerdns unterstützen will muss das sowieso geändert werden siehe lib/server/ ordner dort liegen schon die klassen bereit dort werden dann auch die querys stehen

KoKsPfLaNzE schrieb:
Auch solltest dir überlegen ob dies wirklich so sinnvoll ist
...
public static function connect($host, $user, $pw, $db, $driver, $port = Null) {
...
Diese Methode kann och allein auf die Config zugreifen um die ConnectDaten zu erhalten, ohne das man den spaß immer rein geben muss.

war ursprünglich so geplant das man verbindung zu mehreren datenbanken aufbauen kann
aber ja da hast du recht werde es ändern

KoKsPfLaNzE schrieb:
Die Template Engine die du dir da gebaut hast, ist ja schön und gut jedoch gibt es um einiges bessere umsetzungen die viel mehr sachen dir bieten wie zum beispiel Twig oder Smarty.

wie oben gesagt werde ich warscheinlich auf smarty umsteigen

KoKsPfLaNzE schrieb:
BTW wieso schreibst in viele dateien immer "if(!defined("IN_PAGE")) { die("no direct access allowed!"); }", mach dir doch einfach einen public ordner wo styles un eine index liegt. Auf diesen Ordner geht dann das DocRoot vom vhost, und in der Index includest dann einfach die anderen benötigten Files, am besten mit so einem Autoloader oder sowas in der Richtung.


das war ich nicht bzw. war nicht meine idee wie du in den commits siehst hat zwischenzeitlich ein freund bissi mit dran gebastelt und hat das eingeführt
da muss ich dir recht geben wird geändert


danke für dein feedback


RE: Vorstellung DNS-Webinterface - KoKsPfLaNzE - 11.10.2013 19:52

hast ja nun noch net viele SQl sachen drin deswegen werden verschiedene DBs gehen, aber zum Beispiel bei Mssql gibt es kein Limit da läuft das via Top und Oracle machst das och noch bissel anders.

Wenn mehrere DBs hast kannst das via Factory steuern dann holt vielleicht die Factory oder so die COnfig und man hätte da kein problem. Aber gibt tausend möglichkeiten das umzusetzen.


RE: Vorstellung DNS-Webinterface - Stricted - 11.10.2013 20:20

@KoKsPfLaNzE sicher

das interface war anfangs nur für den privat gebrauch bestimmt
und dort wie viele sicher von sich kennen macht man sich über sowas erstmal keine gedanken

aber da eh nur zu einer datenbank verbunden wird kann man die daten auch direkt in der function laden lassen

dadurch das ich per pm mit k1ngk0ng über die api geschrieben habe wird eine mehrfach sql verbindung unnötig habe mit k1ngk0ng eine super lösung gefunden lasst euch diesbezüglich überraschen


RE: Vorstellung DNS-Webinterface - KoKsPfLaNzE - 11.10.2013 20:36

Den Code musst ja net weg werfen, beim nächsten Projekt brauchst wieder sowas.

Man muss ja nie das rad neu erfinden, sondern sollte schon vorhandene sachen nutzen, da man diese net noch mal so intensive nutzen muss.


RE: Vorstellung DNS-Webinterface - Stricted - 11.10.2013 20:37

mach ich sowieso nicht nutze diese datenbank klasse auch für ein paar andere projekte
passe sie halt nur immer individuell an


pushsubject - push - 13.10.2013 17:03

pushmessage


RE: Vorstellung DNS-CP - Stricted - 15.10.2013 11:25

soeben habe ich die unterstützung für powerdns fertiggestellt

neueste änderungen:
- multiserver api -> keine sql replikationen nötig kann alles per api an die anderen server gesendet werden
- multiserver support -> nun wird mydns und powerdns unterstützt und das ganze kann per serverklassen erweitert werden

die mysqlquerys für die zonen und records sind nun alle in die server klassen ausgelagert
lediglich die user querys sind verblieben wird sich aber auchnoch ändern

source: siehe first post

viel spaß damit

MfG


RE: Vorstellung DNS-CP - k1ngk0ng - 16.10.2013 00:02

Hey Terrax2,

das Projekt geht echt gut voran, endlich mal ein vernünftiges und solides Vorhaben Smile

Freue mich auf das Endprodukt


RE: Vorstellung DNS-CP - Stricted - 17.10.2013 12:49

so bind9 wird nun auch supportet
habe ein php script dazu gepackt das per cronjob ausgeführt werden kann
dieses erstellt dann die zonefiles

und danke k1ngk0ng zur idee mit der api

MfG


RE: Vorstellung DNS-CP - Stricted - 18.10.2013 14:03

kleines update
bin grade dabei alles auf eine modifizierte smarty template engine umzubauen
hier die template engine: [Link: Registrierung erforderlich]
und den aktuellen fortschritt kann man hier sehen: [Link: Registrierung erforderlich] (wird alle 5 minuten mit github synchronisiert)

MfG


pushsubject - push - 04.11.2013 22:51

pushmessage


pushsubject - push - 22.11.2013 19:17

pushmessage