Port-Freigabe auf die Box ist so möglich! Virtual-IP überflüssig?!?

komisch, aber irgendwie finde ich die datei portrule.js nicht :(
Code:
pr=`find /var/html/ -name portrule.js`
-sh: find: not found
bzw
Code:
find /var/html/ -name portrule.js
-sh: find: not found
wo sollte die denn sonst sein? :confused::confused: und warum musste avm den trick mit der virtuellen ip ausstellen :mad:
 
das es die shell nicht gibt?! :-Ö
trotzdem weiß ich noch nicht, in welchem ordner sich die o.g. datei befindet -.-
 
Die Shell gibt es, sonst könntest Du gar keine Kommandos eingeben.
Die Shell gibt die Meldung aus, daß das Programm find nicht gefunden werden konnte. Und da das Programm find nicht vorhanden ist, kannst Du damit auch keine Dateien suchen/finden.

Ansonsten schau mal nach in
Code:
/usr/www/avm/html/de/internet/portrule.js
/usr/www/1und1/html/de/internet/portrule.js
/usr/www/freenet/html/de/internet/portrule.js
 
Die Shell gibt die Meldung aus, daß das Programm find nicht gefunden werden konnte.
So hatte ich es auch verstanden ;)
THX RalfFriedl, ich habs jetzt im ersten Ordner gefunden (FB ohne Branding) :).

Anschließend die "Mini-lösung" genau wie beschrieben angewandt (brauche es nicht später in der Webinterface zu verändern) und die Beiträge mit 0.0.0.0 für den entsprechenden Port 9090 im Webinterface hinzugefügt. Trotzdem hat es offensichtlich nicht funktioniert:
Installation Webtransmission schrieb:
Couldn't bind port 9090: Address already in use
Couldn't open port 9090 to listen for incoming peer connections (errno 125 - Address already in use)

Edit: Ich habe die Schritte direkt mit Telnet auf der Box (ohne Freetz) gemacht. War es evtl so gemeint, das als Patch mit beim bauen des freetz-images einzubinden?
 
Zuletzt bearbeitet:
Hi,

das heißt nur, dass schon was auf Port 9090 läuft. Mach doch mal ein "netstat" (evtl "netstat -an") um zu sehen, was schon so läuft...

Jörg
 
Ok, thx jetzt klappt es. Ich hatte den transmission 2x in einer session installiert ;)
 
Ich weiß nicht, was genau Dein Problem ist (außer, daß die Shift-Taste manchmal klemmt), aber 5ven wußte nicht, wo sich die Dateien portrule.js befinden. Und wo sich diese Dateien befinden, hast Du gerade zitiert, also ist es nicht Dein Problem, daß Du nicht weißt, wo die Dateien sind.
 
... wenn du kein "find" hast, musst du die Datei selbst suchen und trägst den Pfad so ein, dass der "pr" zugewiesen wird:

Code:
# sei /usr/www/avm/html/de/internet/portrule.js die Datei 
pr=/usr/www/avm/html/de/internet/portrule.js
sed  's/return g_mldIpAdr0000/return null/'  $pr > /var/tmp/portrule.js
mount -o bind  /var/tmp/portrule.js  $pr

Jörg
 
Hallo,

irgendwie blicke ich hier nicht mehr durch. Funktionieren die Scripte nur in Zusammenhang mit Freetz (Habe ich nämlich nicht)?

Ich wollte eigentlich nur Port 22 für SSH freigeben. Habe mit NVI dieses

Code:
"tcp 0.0.0.0:22 0.0.0.0:22 0";

in die ar7.cfg eingetragen. Auch der Versuch es über

Code:
"tcp 0.0.0.0:22 192.168.2.1:22 0 # SSH";

schlug fehl! Der Eintrag wird dann in der Weboberfläche zwar angezeigt, lässt sich aber nicht aktivieren.
Was mache ich falsch? Geht keine der beiden Varianten?

Danke für eure Hilfe.



Edit: Komisch jetzt funktioniert der Zugriff. Muss man nicht verstehen oder?
 
Zuletzt bearbeitet:
Funktionieren die Scripte nur in Zusammenhang mit Freetz (Habe ich nämlich nicht)?
Die Tatsache, dass du dich im Freetz-Forum befindest, könnte das nahelegen ;-). Aber es könnte auch ohne freetz (ohne "find") klappen, wenn man die Datei, die geändert wird, von Hand einträgt (siehe Beitrag #110). Wobei ich nicht weiß, ob die Standard-Busybox bei mount den Parameter "-o bind" unterstützt.

...in die ar7.cfg eingetragen. [...] schlug fehl!

Hast du danach auch neu gebootet oder "ar7cfgchanged" ausgeführt? Sonst werden die Änderungen nicht übernommen, weil die Box davon "nichts weiß".

Jörg
 
direkt in die debug.cfg oder in eine "rulesp.sh"?

Au, jetzt bewege ich mich auf Glatteis..., dad gibt Schellte

habe vor die "lange" Version bei jedem Neustart durchlaufen zu lassen. Oder reicht ein einmaliges starten des Scripts. Wie verpacke ich das? Einfach in der debug.cfg reinkopieren oder ne rulesp.sh erstellen und mit der debug.cfg
Code:
/var/media/ftp/$USBDEVICE/rulesp.sh &
aufrufen lassen. Ist vor Aufruf ein slepp erforderlich?

Meine Box ist unge Freetz 't, FW wie Signatur, Branding=AVM
 
Zuletzt bearbeitet:
Ob du das direkt in die debug.cfg packst oder in eine rulesp.sh ist eigentlich eine geschmacks Entscheidnung, beides geht.
Wenn du es auf einen Stick packst, sparrt du dir ein paar byte im flash und kannst es etwas leichter erweitern. Aber du musst auf alle Fälle auf den Stick warten, sonst wird das zu früh aufgerufen.
 
Hallo MaxMuster,

dein 'langes' Script läuft nur, wenn kein Passwort in der Box gesetzt ist. Mit Passwort liefert die Zeile:

rules="`wget -q -O - "http://127.0.0.1/cgi-bin/webcm?getpage=..%2Fhtml%2Fde%2Fmenus%2Fmenu2.html&errorpage=..%2Fhtml%2Fde%2Fmenus%2Fmenu2.html&var%3Alang=de&var%3Apagename=portfw&var%3Amenu=internet&var%3Apagemaster=" | grep -v $EXCLUDE |grep -A 6 $TESTSTRING | grep "uiDoEdit" | sed "s/.*uiDoEdit('\(.*\)').*/\1/"`"

IMMER einen leeren String, weil wget nur die Seite mit der Anmeldung zurück bekommt.
Wie bastele ich das Passwort in die Anfrage hinein? Der String $PWD von weiter oben im Skipt enthält bereits das richtige Passwort.
 
Ich schätze, das wird an dem neuen Sassion-Sachen liegen, die AVM zur Sicherheit eingebaut hat.
 
Da würde ich auch drauf tippen. Welche Box und FW-Version hast du denn?

Jörg
 
Hallo,

Box 7050, FW 14.04.33 freetz 1.1.

Hab's lange Script gerade noch mal laufen lassen. $PWD enthält das richtige Passwort, die 0.0.0.0 werden durch 127.0.0.1 ersetzt, der dsld wird neu gestartet, aber $rules ist leer. Habe die Antwort an 'wget' angehängt, wenn man die Filterung über grep und sed weglässt. Könnt ihr erkennen, warum nur die Anmeldeseite kommt?
 

Anhänge

  • wget_answer.txt
    6 KB · Aufrufe: 6
Jau, Fehler im Skript... Versuche doch bitte mal dieses:

Code:
pr=`find /var/html/ -name portrule.js`
sed  's/return g_mldIpAdr0000/return null/'  $pr > /var/tmp/portrule.js
mount -o bind  /var/tmp/portrule.js  $pr


cat > /var/tmp/unhiderules << 'EOF'
#! /bin/sh

# Die VOIP-Regel "ausblenden"
EXCLUDE="0\.0\.0\.0\:5060"

#PW extrahieren
local PWD=$(/bin/allcfgconv -C ar7 -c -o - | sed -ne '/^webui[[:space:]]*{/,/^}/{
/=/{s/[[:space:]]*=[[:space:]]*/=/;s/^[[:space:]]*//;p}
}' | grep '^password=' | cut -d '"' -f2)
    ret=$?
    if [ $ret != 0 ]; then
      echo "ERROR: Unhide_local_PFWD (exit code $ret)" >&2
      exit $ret
    fi

QUERY=`find /usr/www/ -name query.txt`

# 0.0.0.0:xx 0.0.0.0:yy ersetzen durch 0.0.0.0:xx 127.0.0.1:yy
cat /var/flash/ar7.cfg | sed  "/dslifaces/,/} {/ {/forward/,/}/ {/$EXCLUDE/! s/\(.*0\.0\.0\.0.*\)\(0\.0\.0\.0\)\(.*\)/\1127\.0\.0\.1\3/}}" > /var/tmp/tmpar7.cfg
cat /var/tmp/tmpar7.cfg > /var/flash/ar7.cfg

# Die "neuen" Regeln einlesen lassen, so dass sie per GUI erreichbar sind (die 0.0.0.0-er Regeln sind nicht "ansprechbar":
killall -9 ctlmgr && sleep 1 && /usr/bin/ctlmgr
sleep 5

# ... und nun das Aendern auf 0.0.0.0 per GUI "emulieren"
#
TESTSTRING="127.0.0.1"
NEUEIP="0.0.0.0"


# Erstmal POST_DATA String fuer PW "basteln"  ...
PDATA="getpage=$QUERY&login:command/password=$PWD&id=uiPostForm&name=uiPostForm&var:pagename=home&var:menu=home" 
# ... und PW setzen .
echo -n "$PDATA" | REQUEST_METHOD="POST" REMOTE_ADDR="127.0.0.1" CONTENT_TYPE="application/x-www-form-urlencoded" CONTENT_LENGTH=${#PDATA} /usr/www/html/cgi-bin/webcm  > /dev/null

# Die Rules finden ... 
rules="`wget -q -O - "http://127.0.0.1/cgi-bin/webcm?getpage=..%2Fhtml%2F$Language%2Fmenus%2Fmenu2.html&errorpage=..%2Fhtml%2F$Language%2Fmenus%2Fmenu2.html&var%3Alang=$Language&var%3Apagename=portfw&var%3Amenu=internet&var%3Apagemaster=" | grep -v $EXCLUDE |grep -A 6 $TESTSTRING |grep "uiDoEdit" | sed "s/.*uiDoEdit('\(.*\)').*/\1/"`"



if [ "$rules" != "" ]; then
  # ... POST_DATA String "basteln" 
  PDATA="getpage=$QUERY&login:command/password=$PWD&id=uiPostForm&name=uiPostForm&var:pagename=portrule&var:menu=internet"
  for myrule in `echo "$rules" | tr '\n' ' '`; do
    PDATA="${PDATA}&var:rule=${myrule}&var:isnew=0&var:isexp=0&forwardrules:settings/${myrule}/fwip=$NEUEIP"
  done
  echo -n "$PDATA" | REQUEST_METHOD="POST" REMOTE_ADDR="127.0.0.1" CONTENT_TYPE="application/x-www-form-urlencoded" CONTENT_LENGTH=${#PDATA} /usr/www/html/cgi-bin/webcm > /dev/null
fi
# ... fertig
EOF
sh /var/tmp/unhiderules

Jörg
 
Zuletzt bearbeitet:
Hallo,

danke für die schnelle Korrektur. Jetzt läuft das Script wie erwartet!

Rein interessehalber:
Wie müsste der PDATA String aussehen, wenn man nicht eine vorhandene Weiterleitung ändern, sondern eine ganz neue anlegen möchte?
Ich vermute mal: 'isnew=1', 'rule=rule#' wobei # der nächste freie Eintrag ist, 'fwip' ist klar, aber wie übermittelt man die Felder 'von Port', 'bis Port' und 'an Port'?
 
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.