[dnsmasq] Reverse lookup mit privaten DNS Servern - Den Mod modden...

Hi,

@derheimi
Kann ich mit der overlay-Methode auch Dateien direkt in /var/tmp/flash kopieren? Da geht es um die openvpn Zertifikate.

Ich müsste die irgendwie zum var.tar hinzufügen, oder?

wengi
 
Moin,

dann greife ich mal hier deine Frage aus dem anderen Thread auf:
wengi schrieb:
Ich denke, ich werde die Dateien dann über die fwmod_custom und eine eigene Anpassung einfügen.
Die Frage ist, wie ich darüber was in /var/tmp/flash bekommen.
Wie ich schon dort geschrieben hatte ist das "größte Problem", dass beim ersten Update der ds-mod ja noch "nicht existiert", sondern erst angelegt wird.
Ansonsten könnte man bei allen weiteren Updates die Dinge über das /var/tmp einmalig auf die Box kopieren und vom install einbauen lassen.
Da du diesen Weg (der ein "zweifaches Update" erfordern würde) nicht willst (das zweite Update könnte auch das Pseudo-Update sein) kannst du die Dateien eigentlich nur permanent im Image ablegen und definiert kopieren lassen. Also die open-vpn Dateien z.B. in das "default.openvpn-lzo" Verzeichnis. Dann kannst du das Startskript (rc.openvpn-lzo) z.B. wie folgt ergänzen:

if [ ! -e /var/tmp/flash/.openvpn-lzo.copied ]; then
cp -a /mod/etc/default.openvpn-lso/box.key /var/tmp/flash
cp -a /mod/etc/default.openvpn-lso/box.cert /var/tmp/flash
usw.
# das soll ja nur einmal passieren, vielleicht möchtest du die Dateien ja mal ändern ;-)
touch /var/tmp/flash/.openvpn-lzo.copied
fi

analog das ganze für deine anderen Dienste und "Voreinstellungen".

Was besseres fiele mir nicht ein...

Jörg

EDIT Zu deinen Nachfragen: Du kannst es natürlich auch "direkt" versuchen (wie schon so ähnlich hier geschrieben ) indem du die Sachen nach ./kernel/var.tar/var/tmp/flash/ bringst, denn das wird einmalig zum Update ausgepackt, macht aber erst Sinn, wenn der mod bereits existiert, oder eben nach ./firmware/var/tmp/flash/ , wo es aber bei jedem Start dorthin käme (alle Änderungen würden damit wohl zunichte gemacht)
 
Zuletzt bearbeitet:
Ich habe im Moment leider recht wenig Zeit.
Es wird etwas dauern, bis ich eine endgültige Statusmeldung abgebe.

Danke für Eure Hilfe
wengi
 
So. Dann will ich meinen eigenen Thread mal hochholen und auch noch ein bischen OT werden. Man verzeihe es mir.

Nachdem ich jetzt einen 701 zum testen habe, auf dem die aktuellsten Änderungen zu OpenVPN laufen , möchte ich den dnsmasqdirekt im ds-mod anpassen. Ich beschäftige mich also zum ersten mal mit der Materie.

Zunächst möchte ich im Webinterface von dnsmasq einen Punkt einfügen, um bogus-priv ein- bzw ausschaltbar zu machen.

Hierzu habe ich bis jetzt folgende Änderungen gemacht:
dnsmasq.cfg:
Code:
export DNSMASQ_DHCP='no'
export DNSMASQ_DHCP_RANGE='192.168.178.20,192.168.178.200,12h'
export DNSMASQ_DNS_PORT='53'
export DNSMASQ_ENABLED='yes'
export DNSMASQ_ETHERS='yes'
export DNSMASQ_OPTIONS=''
[COLOR="DarkRed"]export DNSMASQ_BOGUS='yes'[/COLOR]
dnsmasq_conf:
Code:
#!/bin/sh

cat << EOF
domain-needed
EOF

[COLOR="DarkRed"]if [ "$DNSMASQ_BOGUS" = "yes" ]; then
echo "bogus-priv"
fi[/COLOR]

if [ "$DNSMASQ_DHCP" = "yes" ]; then
        echo "$DNSMASQ_DHCP_RANGE" | grep -v "^#" | while read -r range; do
                [ -n "$range" ] && echo "dhcp-range=$range"
        done
fi
[ "$DNSMASQ_ETHERS" = "yes" ] && echo "read-ethers"
und dnsmasq.cgi (DNS Server Section):
Code:
[COLOR="DarkRed"]bogus_chk=''
if [ "$DNSMASQ_BOGUS" = "yes" ]; then bogus_chk=' checked'; fi[/COLOR]

sec_begin 'DNS Server'

cat << EOF
<h2>Der DNS Server ist gebunden an:</h2>
<p>Port: <input type="text" name="dns_port" size="5" maxlength="5" value="$(httpd -e "$DNSMASQ_DNS_PORT")"></p>
[COLOR="DarkRed"]<input id="b1" type="checkbox" name="bogus" value="yes"$bogus_chk><label for="b1"> rDNS Anfragen f&uuml;r private IP Adressen NICHT weiterleiten (bogus-priv).</label>[/COLOR]
<h2>Zus&auml;tzliche Kommandozeilen-Optionen (f&uuml;r Experten):</h2>
<p>Optionen: <input type="text" name="options" size="20" maxlength="255" value="$(httpd -e "$DNSMASQ_OPTIONS")"></p>
EOF

sec_end
Mein Problem ist: Wie bekomme ich das Ergebnis der Checkbox ($bogus_chk) in die .CFG übernommen?

Ich bitte meine Blödheit zu entschuldigen :D

Wengi

EDIT: Jetzt ist es eine Checkbox :)
 
Zuletzt bearbeitet:
Warum machst du dafür 2 Radiobuttons und nicht eine Checkbox?

MfG Oliver
 
Ich könnte natürlich auch eine Checkbox machen. Ist wohl Geschmackssache.
Allerdings löst das mein (Verständnis-) Problem nicht.

wengi

EDIT: Ich hab mal eine Checkbox draus gemacht...
 
Zuletzt bearbeitet:
Wenn das Ding bogus heißt und im dnsmasq Package ist, dann sollte in der /var/tmp/flash/dnsmasq.diff die Änderung als DNSMASQ_BOGUS gespeichert werden. Tut sich da nicht?

MfG Oliver
 
Und genau da ist wohl mein Verständnisproblem.
Ich bearbeite meine Dateien vor dem kompilieren unter /ds26-15.2/build/modified/filesystem. Und dort habe ich keine .diff!
Ich habe den Eindruck, dass ich den gesamten Mechanismus noch nicht verstanden habe.:(

wengi
 
Du hast den default in der cfg auf "yes" gesetzt, wenn du das Paket in dir Firmware packst, dann sollte der Haken also da sein. Wenn du jetzt den Haken löscht und abspeicherst, dann sollte im .diff "no" gespeichert sein. Dazu musst du nichts weiter machen. Das siehst du natürlich erst auf der Box und nicht beim Imagebau.

MfG Oliver
 
OK. Das ist mir klar.
Allerdings habe ich hiermit noch ein Problem:
Hier kommt die Einstellung "in das Webinterface":
Code:
if [ "$DNSMASQ_BOGUS" = "yes" ]; then bogus_chk=' checked'; fi
Aber wie kommt die Einstellung "vom Webinterface in die .cfg"?
Da müsste doch ein cat, echo oder sonst was in die entsprechende .cfg Datei erfolgen. (über die .diff?)

wengi
 
... an der Stelle habe ich lange "gehangen", dabei ist sie eigentlich trivial/genial ;-):

Oliver hat es schon gesagt, ich versuche es mal noch deutlicher: Alles, was in der "default.cfg" als Variable steht wird aus der Gui aus dem Feld mit dem entsprechenden Namen ausgelesen (und bei Bedarf, also wenn anders als der default) im ".diff" abgespeichert.
Indem du name="bogus" passend zu export DNSMASQ_BOGUS vergeben hast, funktioniert das "automatisch"!
Aus "default" und ".diff" wird dann die Config in /mod/etc/config, auf deren Umgebungsvariablen du dann zugreifst.

Jörg

EDIT Noch was vergessen:
Beim Auswerten wird eine "ungecheckte" Box quasi "überlesen", es wird der "letzte" Wert genommen. Bei dir würde Vermutlich immer "yes" genommen.
Du müsstest deinen Code noch um etwas erweitern, so dass dieses direkt vor deiner checkbox steht:
Code:
<input  type="hidden" name="bogus" value="">
Ist deine Box angehakt, "gewinnt" ihr Wert "yes", ist sie das nicht, bleibt der Wert für bogus auf ""
 
Zuletzt bearbeitet:
*KLÖNNNNNGGGGGG*

Das ist der Groschen, der gerade gefallen ist!

Danke
wengi
 
Ich habe gerade die Änderungen getestet und es funktioniert! :p

Ich werde mich jetzt daran machen das Ganze auf meine OpenVPN-Tunnel Konfig auszuweiten.
D.h. Bogus-priv abschalten und dann forward und reverse dns server eintragen.
Natürlich alles optional.

Danke nochmal für Eure Hilfe

wengi
 
Klugscheiß-Nachtrag: Eine Checkbox anstatt zweier Radiobuttons für einen binären Wert (ja/nein) zu verwenden, ist keine Geschmackssache sondern gemäß jedes Styleguides obligatorisch. Auch - mal andersherum - die häufig gesehenen Arrays von sich gegenseitig ausschließenden Checkboxes anstatt einer Reihe zusammengehöriger Radiobuttons sind ein Verstoß gegen Styleguides. Beides führt Nutzer in die Irre. ;-)
 
@Alexander: Musst du jetzt alle Posts der letzten Woche nachholen ;-);-)?
Im Übrigen gebe ich dir "bedingt" recht: Mich haben z.B. im ds-mod die "obligatorischen" 2 Radios für "automatisch" / "manuell" schon immer irritiert, weil eine Checkbox "automatisch starten" genügte. Bei Dingen, deren "Gegenteil nicht sofort einleuchtend ist" halte ich es manchmal für sinnvoller, beide Optionen aufzuführen, weil das sonst aus meiner Sicht recht "ungewöhnlich" und auch schwieriger zu verstehen wäre:
Beispiel im OpenVPN TCP/UDP: Mit einer Bezeichnung "Nicht UDP sondern TCP" wäre das auch nur eine Checkbox, an der Stelle fände ich sie aber "merkwürdig" (ebenso für Tunnel/Brücke usw).

Jörg
 
Ich habs ja eingesehen :D
Ich bin halt kein Designer. Ich hab ja noch nicht mal Ahnung von cgi!

Aber ich weis was ich will, und deswegen kommt gleich meine nächste Frage:
Im Anhang ist meine aktuelle dnsmasq.cgi.
Ich habe mir die verschiedenen Funktionen aus den diversen cgi Dateien geklaut. Allerdings gibt es mal wieder ein Verständnisproblem:
Wie Blende ich, in Abhängigkeit einer Checkbox, einen ganzen Config-Bereich ein- und aus? Siehe auch Expertenkonfiguration beim neuen OpenVPN Paket (im OpenVPN Thread).

Ich habe mir MaxMusters Datei angesehen aber verstehe den Zusammenhang nicht.

Wenn das jetzt zu weit geht entschuldige ich mich schon im vorraus.... ist ja kein CGI Programmier Forum.

Dennoch würde ich mich über eine Erklärung freuen.

Danke
wengi

PS: Ich glaube ich muss den Threadtitel ändern, wenn ich so weiter mache :)
 

Anhänge

  • dnsmasq.cgi.txt
    3.8 KB · Aufrufe: 10
Da brauchst du zwei Dinge:

1. etwas, was "ausgeblendet werden kann"
2. etwas das sicherstellt, dass die Entscheidung immer aktualisiert wird.

1. Kannst du mit "sections" machen (wie z.B. im OpenVPN für den Config-Part) oder für einen "Bereich":
Code:
sec_begin 'Was auch immer'
 alles das, was als ganze Section komplett optional- ein und asgeblendet werden soll
sec_end

<div id="div_bereich">
   hier kann jetz auch was stehen, Text, Inputs und so weiter
</div>


<input id="id_section_einblenden" type="checkbox"  value=yes" onclick='beim_aendern_aufrufen()' >

<input id="id_div_einblenden" type="checkbox"  value=yes" onclick='beim_aendern_aufrufen()' >



<!-- 
und dann später im script Teil (Die sectionen werden von 0 an durchgezählt,
"block" und "none" sind die Werte für (als eigenständiger Block) "darstellen" oder "nicht anzeigen"
 -->

FIELDSET_CONFIG = 0   

function beim_aendern_aufrufen() {
var fieldsets = document.getElementsByTagName("fieldset");

 if ( document.getElementById("id_section_einblenden").checked ){
        fieldsets[FIELDSET_CONFIG].style.display = "block";
        }
  else {
        fieldsets[FIELDSET_CONFIG].style.display = "none";
  }
 if ( document.getElementById("id_div_einblenden").checked ){
        document.getElementById("div_bereich").style.display = "block";
        }
  else {
        document.getElementById("div_bereich").style.display = "none";
  }

}

Vielleicht hilft es ja, das etwas besser zu verstehen...

Jörg
 
Zuletzt bearbeitet:
MaxMuster schrieb:
Mich haben z.B. im ds-mod die "obligatorischen" 2 Radios für "automatisch" / "manuell" schon immer irritiert, weil eine Checkbox "automatisch starten" genügte. Bei Dingen, deren "Gegenteil nicht sofort einleuchtend ist" halte ich es manchmal für sinnvoller, beide Optionen aufzuführen

Zu 1: Ja, das ist doof und zum Glück nicht auf meinem Mist gewachsen.
Zu 2: Das ist eine Frage des sinnvollen Labels.
 
kriegaex schrieb:
Zu 2: Das ist eine Frage des sinnvollen Labels.
... muss aber im Rahmen bleiben. Fällt dir vielleicht ein "gutes" Label ein für eine solche "Standardsituation", wo das gilt? Sicher nicht ein: "Willkommen beim Menüdienst Müller. Sie können hier zwischen Menü A und Menü B wählen. Wir liefern immer A, es sei denn, Sie machen hier einen Haken?!?" In diesem Fall hielte ich zwei Radios für "akzeptabel", aber vielleicht fehlt mir ja auch nur die Phantasie...

Jörg
 
Die Trennung von automatisch und manuell hat sich zumindest als sinnvoll erwiesen, seit es bei einigen Diensten die Möglichkeit gibt, sie per inetd zu starten.
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
246,159
Beiträge
2,247,074
Mitglieder
373,678
Neuestes Mitglied
brainkennedy
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.