DNS Konfiguration über SQL

stefanr

Member
Hallo,

ich müsste viele DNS Einstellungen für alle Domains umstellen zB "Zonentransfer zu diesen IPs erlauben (mit Beistrich getrennte Liste)"

von 123.123.123.123,321.321.321.321 auf 456.456.456.456,654.654.654.654

jetzt ist die Frage kann ich das über einen SQL Befehl auf dem Server direkt ändern und werden die Einstellungen übernommen? Es müsste dann auch noch die Serial geändert werden, die Frage ist technisch machbar worauf muss ich noch achten?

vielen Dank für alle Antworten

Stefan
 

Till

Administrator
Du musst die ispconfig mysql Klasse verwenden und daraus die Funktionen datalogInsert und datalogUpdate um die Änderungen in der DB durchruführen. Sonst werden die Änderungen von ispconfig ignoriert da sie nur durchgeführt werden wenn sie auch im Trnsaktionslog stehen.

Die Serial ist nur eine Zahl die hochgezählt werden muss.
 

stefanr

Member
Hallo Till,

danke für die Info, könntest du mir dazu noch einen Hinweis geben? Das Thema ist wieder einmal aktuell.

vielen Dank für deine Mühe

Gruß

STEFAN
 

Till

Administrator
Lade Dir mal die aktuelle SVN Version runter und schau Dir die Datei interface/web/tools/dns_resync.php an.
 

stefanr

Member
Hallo Till,

vielen Dank für die schnelle Antwort. Da ich nur ein Produktiv System habe
und dort ja die SVN Version nicht eingesetzt werden sollte meine Frage wie
ich am besten an die beschriebene Datei komme?

Gruß

STEFAN
 

Till

Administrator
apt-get install subversion
cd /tmp
svn export svn://svn.ispconfig.org/ispconfig3/trunk

Datei suchen und irgendwohin kopieren, dann:

rm -rf /tmp/trunk
 

stefanr

Member
Hi,

das hat super geklappt hätte ich ja auch mal selbst drauf kommen können.
Die dns_resync.php ruft eine templates/dns_resync.htm leider kann ich die
nicht finden und somit bleibt beim Aufruf der dns_resync.php die Seite leer.

Habe ich noch einen Denkfehler oder gibt es noch einen Hinweis. Denn so
wie ich das verstanden habe, kann ich dann meine Änderungen mit mysql
machen und sollte danach die dns_resync.php aufrufen um die Änderungen
zu überprüfen und eine neue serial generieren zu lassen.

Gruß

STEFAN
 

Till

Administrator
das hat super geklappt hätte ich ja auch mal selbst drauf kommen können.
Die dns_resync.php ruft eine templates/dns_resync.htm leider kann ich die
nicht finden und somit bleibt beim Aufruf der dns_resync.php die Seite leer.

Die template Datei ist im template Unterverzeichnis. Es war ja auch so gemeint dass du Dir die Datei mal als Beispiel für Deine eigenen Scripte ansehen solltest.

Habe ich noch einen Denkfehler oder gibt es noch einen Hinweis. Denn so
wie ich das verstanden habe, kann ich dann meine Änderungen mit mysql
machen und sollte danach die dns_resync.php aufrufen um die Änderungen
zu überprüfen und eine neue serial generieren zu lassen.

Das kannst Du natürlich auch machen. dann brauchst Du aber noch das template sowie die menu und lng Datei aus den entsprechenden Unterverzeichnissen des tools Verzeichnisses.
 

stefanr

Member
Hallo Till,

danke für den Hinweis, da ich nicht der aller beste Programmierer bin wollte ich mich kurz
versichern das ich auf dem richtigen Weg bin.

PHP:
// Resyncing dns zones
if(isset($_POST['resync']) && $_POST['resync'] == 1) {
        $zones = $app->db->queryAllRecords("SELECT id,origin,serial FROM dns_soa WHERE active = 'Y'");
        if(is_array($zones)) {
                foreach($zones as $zone) {
                        $records = $app->db->queryAllRecords("SELECT id,serial FROM dns_rr WHERE zone = ".$zone['id']." AND active = 'Y'");
                        if(is_array($records)) {
                                foreach($records as $rec) {
                                        $new_serial = $app->validate_dns->increase_serial($rec["serial"]);
                                        $app->db->datalogUpdate('dns_rr', "serial = '".$new_serial."'", 'id', $rec['id']);

                                }
                        }
                        $new_serial = $app->validate_dns->increase_serial($zone["serial"]);
                        $app->db->datalogUpdate('dns_soa', "serial = '".$new_serial."'", 'id', $zone['id']);
                        $msg .= "Resynced: ".$zone['origin'].'<br />';
                }
        }

}

in der FETT markierten Zeile müsste ich doch noch meine xfer eintragen so dass diese angepasst wird oder? Also etwa so

$app->db->datalogUpdate('dns_rr', "serial = '".$new_serial."'", 'id', $rec['id']); ->
$app->db->datalogUpdate('dns_rr', 'xfer= 123.123.123.123,321.321.321.312', "serial = '".$new_serial."'", 'id', $rec['id']);

Bin ich damit auf dem richtigen Wege oder komplett falsch?

Gruß

STEFAN
 

Werbung

Top