miniupnpc upnp client für die fritzbox für knockd und avm firewall

loredrum

Neuer User
Mitglied seit
5 Sep 2010
Beiträge
16
Punkte für Reaktionen
0
Punkte
1
Hallo

miniupnpc - upnp client für Einträge der firewall forward Regeln in Fritzbox

Kann mir jemand helfen eine statische binary von upnpc-static zu kompilieren ??
Ich weiss nicht mehr weiter , kanns nicht

Zweck ist ich will per knockd die firewall ports per upnp client local auf der box hinzufügen , wann die von avm schon an ner schnittstelle knausern benutz ich halt die Upnp Schnittstelle um die firewall zu konfigurieren :-) und es gibt auch keine dsl neustarts bei dieser methode

aber mir fehlt noch der kompilierte client für die fritzbox

C# windowstool das die knockd.conf um Aktionen mit firwall regeln(AVM) aktualisiert und auch gleich per upnp die forwards einträgt ist in arbeit (funktionalitäten stehen schon, nur die forms noch nicht)

hab keine Lust die posst offen stehen zu lassen um sie mit iptables zu schliessen und anschliessend per knockd wieder zu öffnen
also für mich reicht es die avm firewall mit upnp zu öffnen und zu schliessen wanns zeit ist.


Help me , i wont a static upnp client for fritz box (7170 alias 7140)


gruss loredrum
 
Zuletzt bearbeitet:
Kann mir da niemand helfen ?, krieg das Makefile für Freetz linux mipsel-linux-gcc nicht auf die Reihe.

Wann so weida geht, legt man sich bald die Karten :-(

Erbarmen
 
Ich weiss nicht mehr weiter , kanns nicht
Das ist nicht das Statement auf das man hilfreiche antworten bekommt. Es fehlt der Link zu den Sourcen und dein Makefile das nicht klappt kannst du auch anhängen...

MfG Oliver
 
ich hab grad im Wiki gelesen daß ich SOAP actions auch über Curl absetzen kann, daß muss ich gleich mal checken
denke ich hab Curl in make menuconfig von freetz gesehen

oh mann schon wieder ne alternative ;-)

Link: http://miniupnp.free.fr/files/download.php?file=miniupnpc-1.4.20100609.tar.gz

aber ich häng trotzdem mal alles an aber bitte net schimpfen über mein grausiges makefile:

#########

# $Id: Makefile.mingw,v 1.13 2010/04/17 22:07:59 nanard Exp $
# Miniupnp project.
# http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
# (c) 2005-2008 Thomas Bernard
# This Makefile is made for MinGW
#
SHELL=/bin/bash
prefix=/var
ARCH=mipsel-linux
LDLIBS = -lm
bindir=/var/tmp
localedir=$(prefix)/tmp
CC=
CFLAGS= -Os -pipe -march=4kc -Wa,--trap -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Wall -g -
DLOCALEDIR=\"$(localedir)\"
LIBS=
EXE=.
GETOPT=
MEMDBG=
OBJS=miniwget.o minixml.o igd_desc_parse.o minisoap.o \
miniupnpc.o upnpreplyparse.o upnpcommands.o upnperrors.o \
connecthostport.o
default: upnpc-static
all: upnpc-static


libminiupnpc.a: $(OBJS)
$(AR) cr $@ $?

pythonmodule: libminiupnpc.a
$(PYTHON) setupmingw32.py build --compiler=mingw32
$(PYTHON) setupmingw32.py install --skip-build

miniupnpc.lib: miniupnpc.dll
echo $@ generated with $<

dll/upnpc.o: upnpc.o
echo $@ generated with $<

.c.o:
$(CC) $(CFLAGS) -DSTATICLIB -c -o $@ $<
$(CC) $(CFLAGS) -DMINIUPNP_EXPORTS -c -o dll/$@ $<

upnpc.o:
$(CC) $(CFLAGS) -DSTATICLIB -c -o $@ $<
$(CC) $(CFLAGS) -c -o dll/$@ $<

upnpc-static: upnpc.o libminiupnpc.a
$(CC) -o $@ $^ $(LDLIBS)

upnpc-shared: dll/upnpc.o miniupnpc.lib
$(CC) -o $@ $^ $(LDLIBS)

wingenminiupnpcstrings: wingenminiupnpcstrings.o

wingenminiupnpcstrings.o: wingenminiupnpcstrings.c

miniupnpcstrings.h: miniupnpcstrings.h.in wingenminiupnpcstrings
wingenminiupnpcstrings $< $@

minixml.o: minixml.c minixml.h miniupnpcstrings.h

upnpc.o: upnpc.c miniwget.h minisoap.h miniupnpc.h igd_desc_parse.h upnpreplyparse.h upnpcommands.h

miniwget.o: miniwget.c miniwget.h miniupnpcstrings.h

minisoap.o: minisoap.c minisoap.h

miniupnpc.o: miniupnpc.c miniupnpc.h minisoap.h miniwget.h minixml.h

igd_desc_parse.o: igd_desc_parse.c igd_desc_parse.h

testminixml: minixml.o igd_desc_parse.o testminixml.c

upnpreplyparse.o: upnpreplyparse.c upnpreplyparse.h minixml.h

upnpcommands.o: upnpcommands.c upnpcommands.h upnpreplyparse.h miniupnpc.h



#########
 
Benutz bitte code tags für den Code...

Code:
$(call PKG_INIT_BIN, 0.3)
$(PKG)_SOURCE:=modcgi-$($(PKG)_VERSION).tar.bz2
$(PKG)_SOURCE_MD5:=5323ce1a98492bd78d2fbe097268fe83
$(PKG)_SITE:=http://freetz.magenbrot.net
$(PKG)_BINARY:=$($(PKG)_DIR)/$(pkg)
$(PKG)_TARGET_BINARY:=$($(PKG)_DEST_DIR)/usr/bin/modcgi

$(PKG_SOURCE_DOWNLOAD)
$(PKG_UNPACKED)
$(PKG_CONFIGURED_NOP)

$($(PKG)_BINARY): $($(PKG)_DIR)/.configured
	$(SUBMAKE) -C $(MODCGI_DIR) \
		CROSS="$(TARGET_MAKE_PATH)/$(TARGET_CROSS)" \
		CFLAGS="$(TARGET_CFLAGS)"

$($(PKG)_TARGET_BINARY): $($(PKG)_BINARY)
	$(INSTALL_BINARY_STRIP)

$(pkg)-precompiled: $($(PKG)_TARGET_BINARY)

$(pkg)-clean:
	-$(SUBMAKE) -C $(MODCGI_DIR) clean

$(pkg)-uninstall:
	$(RM) $(MODCGI_TARGET_BINARY)

$(PKG_FINISH)
Als Beispiel das Makefile für modcgi. Ich würde vorschlagen, dass du erstmal ein miniupnpc.mk für freetz schreibst, dann sehen wir weiter...

MfG Oliver
 
oooh , du willst mich also quälen :-(

seufz, erst versuch ich die variante mit curl, hab grad n kernel gebaut incl. curl
der string is auch klar , erst test ich mal was enfaches wie ForceTermination :-)

ansonsten , werde ich deinen Rat befolgen und erst mal makefile schreiben lernen!

gruss loredrum
 
:p;):D:spocht:

Es funzt :-)

aber irgendwann hab i dann doch noch den ergeiz für das makefile


xxx = ersetzen bzw. die ganze ip

//neu reconnecten

curl "http://192.168.1.xxx:49000/upnp/control/WANIPConn1" -H 'Content-Type: text/xml; charset="utf-8"' -H 'SoapAction: urn:schemas-upnp-org:service:WANIPConnection:1#ForceTermination' -d '<?xml version="1.0" encoding="utf-8"?> <s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <u:ForceTermination xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1" /> </s:Body> </s:Envelope>'


//Die Wan IP holen

curl "http://192.168.1.xxx:49000/upnp/control/WANIPConn1" -H 'Content-Type: text/xml; charset="utf-8"' -H 'SoapAction: urn:schemas-upnp-org:service:WANIPConnection:1#GetExternalIPAddress' -d '<?xml version="1.0" encoding="utf-8"?><s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><u:GetExternalIPAddress xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1" /></s:Body></s:Envelope>' >ip.log

Die wichtigsten 2 :

//Portforward ins lokale netz

curl "http://192.168.1.xxx:49000/upnp/control/WANIPConn1" -H 'Content-Type: text/xml; charset="utf-8"' -H 'SoapAction: urn:schemas-upnp-org:service:WANIPConnection:1#AddPortMapping' -d '<?xml version="1.0" encoding="utf-8"?> <s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body><u:AddPortMapping xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1"><NewRemoteHost /><NewExternalPort>44</NewExternalPort><NewProtocol>TCP</NewProtocol><NewInternalPort>55</NewInternalPort><NewInternalClient>192.168.1.55</NewInternalClient><NewEnabled>1</NewEnabled><NewPortMappingDescription /><NewLeaseDuration>0</NewLeaseDuration></u:AddPortMapping></s:Body> </s:Envelope>'


//Portforward wieder löschen

curl "http://192.168.1.xxx:49000/upnp/control/WANIPConn1" -H 'Content-Type: text/xml; charset="utf-8"' -H 'SoapAction: urn:schemas-upnp-org:service:WANIPConnection:1#DeletePortMapping' -d '<?xml version="1.0" encoding="utf-8"?> <s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body><u:DeletePortMapping xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1"><NewRemoteHost></NewRemoteHost><NewExternalPort>44</NewExternalPort><NewProtocol>TCP</NewProtocol></u:DeletePortMapping></s:Body> </s:Envelope>'




und so weiter ... ;-)

da mach i mir nun ne batch und die häng ich in knockd.conf als aktion an
von aussen ist mein upnp nat weiterhin nicht erreichbar!
und lokal im netz bin ja sowieso nur ich :-)
ansonsten kommt ma halt um iptables auch nicht rum , evtl um für die ports von upnp im lokalen Netzwerk eine regel einzupflegen die nur einen client im netz zuzulassen für die upnp steuerung

aber wann bei mir im netz ohne mein zutun rumregelt, kriegt a sowieso eine geklatscht!

gruss loredrum
 
Zuletzt bearbeitet:
bash script für Curl um portforwardings in der fritzbox local zu machen

so funzt curl als lokaler upnp client

Beispiel für add(nicht aktiv) :
./upnpc add 192.168.1.100 66 TCP 77 192.168.1.5 0 testvoncurl

Beispiel für add(aktiv) :
./upnpc add 192.168.1.100 66 TCP 77 192.168.1.5 1 testvoncurl

Beispiel für del :
./upnpc del 192.168.1.100 66 TCP

Code:
# loredrum 
#
# $1  kann add oder del sein
# $2  muss die IP des Routers mit der AVM Firewall sein 
#
# add = AddForward alias upnp AddPortMapping #
#####   # $3 ExternalPort, # $4 Protokoll TCP o. UDP, # $5 InternalPort, # $6 InternalClientIP, # $7 ForwardActivate 1 o. 0, # $8 Beschreibung
#
# del = DeleteForward alias upnp DeletePortMapping #
#####   # $3 ExternalPort, # $4 Protokoll TCP o. UDP
#
#
#
# Beispiel für add(nicht aktiv) :
# ./upnpc add 192.168.1.100 66 TCP 77 192.168.1.5 0 testvoncurl
#
# Beispiel für add(aktiv) :
# ./upnpc add 192.168.1.100 66 TCP 77 192.168.1.5 1 testvoncurl
#
# Beispiel für del :
# ./upnpc del 192.168.1.100 66 TCP


case "$1" in
        add)
                echo "AddPortMapping"
		#//addportforward
		curl "http://$2:49000/upnp/control/WANIPConn1" -H 'Content-Type: text/xml; charset="utf-8"' -H 'SoapAction: urn:schemas-upnp-org:service:WANIPConnection:1#AddPortMapping' -d '<?xml version="1.0" encoding="utf-8"?> <s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body><u:AddPortMapping xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1"><NewRemoteHost /><NewExternalPort>'$3'</NewExternalPort><NewProtocol>'$4'</NewProtocol><NewInternalPort>'$5'</NewInternalPort><NewInternalClient>'$6'</NewInternalClient><NewEnabled>'$7'</NewEnabled><NewPortMappingDescription>'$8'</NewPortMappingDescription><NewLeaseDuration>0</NewLeaseDuration></u:AddPortMapping></s:Body> </s:Envelope>' >/dev/null
	        exit 0
                ;;
        del)
                echo "DeletePortMapping"
		#//deleteportfoward
		curl "http://$2:49000/upnp/control/WANIPConn1" -H 'Content-Type: text/xml; charset="utf-8"' -H 'SoapAction: urn:schemas-upnp-org:service:WANIPConnection:1#DeletePortMapping' -d '<?xml version="1.0" encoding="utf-8"?> <s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body><u:DeletePortMapping xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1"><NewRemoteHost></NewRemoteHost><NewExternalPort>'$3'</NewExternalPort><NewProtocol>'$4'</NewProtocol></u:DeletePortMapping></s:Body> </s:Envelope>' >/dev/null
		exit 0
                ;;
        *)
                echo "Usage: $0 [add|del]" 1>&2
		echo "# loredrum 
#
# $1  kann add oder del sein
# $2  muss die IP des Routers mit der AVM Firewall sein 
#
# add = AddForward alias upnp AddPortMapping #
#####   # $3 ExternalPort, # $4 Protokoll TCP o. UDP, # $5 InternalPort, # $6 InternalClientIP, # $7 ForwardActivate 1 o. 0, # $8 Beschreibung
#
# del = DeleteForward alias upnp DeletePortMapping #
#####   # $3 ExternalPort, # $4 Protokoll TCP o. UDP
#
#"
                exit 1
                ;;
esac

exit 0
 
Zuletzt bearbeitet:
.... und noch ein "Bonbon" zu deiner "ursprünglichen" Frage...
Code:
/var/tmp # ./upnpc
upnpc : miniupnpc library test client. (c) 2006-2009 Thomas Bernard
Go to http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
for more information.
Usage : ./upnpc [options] -a ip port external_port protocol
                Add port redirection
        ./upnpc [options] -d external_port protocol [port2 protocol2]*[...]
                Delete port redirection
        ./upnpc [options] -s
                Get Connection status
        ./upnpc [options] -l
                List redirections
        ./upnpc [options] -r port1 protocol1 [port2 protocol2] [...]
                Add all redirections to the current host

protocol is UDP or TCP
Options:
  -u url : bypass discovery process by providing the XML root description url.
  -m address : provide ip address of the interface to use for sending SSDP multicast packets.
  -p path : use this path for MiniSSDPd socket.
/var/tmp #

Jörg
 

Anhänge

Zuletzt bearbeitet:
mei *gfrei :-)

schnell mal entpack...
so muss also das config script aussehen , aha *am Kopf kratz , bleich werd
da derf i mi nu aufn hosenboden setzen , des woasst scho

Danke
 
Zuletzt bearbeitet:
Wenn ich das Makefile mit dem oben von mir geposteten Beispiel vergleiche, dann frag ich mich wo das Problem war? ;-)

MfG Oliver
 
Hat wer gesagt, dass es problematisch war :rolleyes:??
 
Hat wer gesagt, dass es problematisch war :rolleyes:??

I kann nu ned sagen, gut gmacht, wei...

Hmm , etzad werst gleich die hände übern kopf zamhau, abär:

Ich hab keine Ahnung wie das nun zusammen spielt ob die patches automatisch verwendet werden oder was ich tun muss um es zu komilieren.

also ich hab das mal ins miniupnpc dir kopiert und rum probiert
bei /bin/sh miniupnp.mk tut sich was

heisst wohl ich muss irgendwo was übergeben??

kannst du mir den shellstring zeigen wie der komplett aussehen muss um es zu komilieren ?
muss aber nicht sein , irgendwann komm ich schon drauf , hab dann hald n paar graue haare mehr :-(
 
Ah, jetzt weiß ich wo das Problem war/ist. Halte dich bitte an die Rechtschreibregeln, sonst gibts eine Verwarnung.

Du musst den Inhalt des Archivs ins freetz-Verzeichnis kopieren und dann "make miniupnpc-precompiled" aufrufen.

MfG Oliver
 
was meinst du mit rechtschreibregeln ?
boarisch schreim derf ma ned ?

übrigends dei Kompilat mag kein Upnp Device finden :-(

habs aufm stick, dort müsste es ja eigentlich auch laufen, oder ?

ich versuch jetzt gleich mal deinen make befehl

danke schön

Ps.: hmm, der mag mich ned der precompiler: keine regel um miniupnpc-precomiled zu erstellen...

naja macht a nix , bei der soap methode mit curl kann ich direkt die adresse des routers angeben
bei miniupnpc dürfen dann nicht mehr als ein router im netz mit eingeschaltetem upnp sein , denke ich mal

wie ich darauf komme? naja man hat halt keine option wo man den router angibt , also wird miniupnpc wohl den ersten Router nehmen den er findet
und die forwardings dort versuchen
 
Zuletzt bearbeitet:
Also...

Das ganze gehört (im Freetz-Ordner) nach make/miniupnpc.

Ohne die Datei make/Config.in händisch so verändern, dass das "Config.in" des Paketes ausgeführt wird, erscheint es aber nicht im "menuconfig" von freetz, du kannst es aber mit "make miniupnpc-precompiled" übersetzen lassen, dat jeht alles automatisch...


Ich hänge noch einen diff gegen den aktuellen Trunk an, der alles enthält, so dass das Paket im menuconfig unter "testing" erscheint.

Jörg

EDIT 1. Oliver war mal wieder schneller und hat's schon vor mir erklärt
2. Was das Ding kann, weiß ich nicht, ich hab's nur übersetzt :D
3. Ich geb es zu, es war schon schwer zu lesen, "Hochdeutsch" (oder so eine Art ;-)) verstehe ich (und vermutlich die meisten hier) besser
 

Anhänge

Zuletzt bearbeitet:
du machst mi fertig :-)

i hirnakrobat hab de dateien im freetz überschrieben also ohne make verzeichnis direkt reinkopiert :-)
bööööse und hab kei sicherheitskopie :-)
hmm werd dann gleich mal ein neues freetz image bauen
danach deine patches reinkopieren

aber wie gesagt der upnpc client von dir findet keine devices


... uuuhund jaaa ich weiss mich hat Gott gestraft

gruss loredrum
 
du machst mi fertig :-)
Mach ich garnicht...
Aber ich denke, dass ganze kannst du wohl vergessen, das Programm kann scheinbar nicht wirklich so viel (aber ich habs ja nicht ausgesucht :-Ö).

Jörg
EDIT: Schau doch mal hier, die -u Option könnte was für dich sein:
Code:
I had trouble getting the program to auto-detect my routers gateway and XML descriptor URI, so you may have to specify it.  For a Linksys WRT54G/GL (and other models), use:
[I][root@OpenWrt: ~]# upnpc -u http://192.168.1.1:2869/IGatewayDeviceDescDoc -l[/I]
das sollte doch analog auch mit der FB klappen...
 
Zuletzt bearbeitet:
oh ja danke :-) wer lesen kann ist ...
hab i zu früh schimpft

Bei der Fritzbox klappt es mit :

http://192.168.1.200:49000/igddesc.xml



/var/tmp # ./upnpc2 -u http://192.168.1.200:49000/igddesc.xml -a 192.168.1.5 33 44 TCP
upnpc : miniupnpc library test client. (c) 2006-2009 Thomas Bernard
Go to http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
for more information.
Found valid IGD : http://192.168.1.200:49000/upnp/control/WANIPConn1
Local LAN ip address : 192.168.1.200
ExternalIPAddress = xxx.xxx.xxx.xxx
InternalIP:Port = 192.168.1.5:33
external xxx.xxx.xxx.xxx:44 TCP is redirected to internal 192.168.1.5:33



:-) jetzt hab i 2 clients :-)

bei meinem kann ma aber die beschreibung übergeben und nicht aktive forwards setzen :-)


Und danke nochmal für deine Hilfe mit den Patches und Makefile
Konnte das alles schon mal liegt aber schon ~ 10Jahre zurück :-(

mal schau vielleicht wirds ja wieder

gruss loredrum
 
Zuletzt bearbeitet:
Also...

Das ganze gehört (im Freetz-Ordner) nach make/miniupnpc.

Ohne die Datei make/Config.in händisch so verändern, dass das "Config.in" des Paketes ausgeführt wird, erscheint es aber nicht im "menuconfig" von freetz, du kannst es aber mit "make miniupnpc-precompiled" übersetzen lassen, dat jeht alles automatisch...


Ich hänge noch einen diff gegen den aktuellen Trunk an, der alles enthält, so dass das Paket im menuconfig unter "testing" erscheint.

Jörg

EDIT 1. Oliver war mal wieder schneller und hat's schon vor mir erklärt
2. Was das Ding kann, weiß ich nicht, ich hab's nur übersetzt :D
3. Ich geb es zu, es war schon schwer zu lesen, "Hochdeutsch" (oder so eine Art ;-)) verstehe ich (und vermutlich die meisten hier) besser
habs jetzt erst überrissen don(dann) ist des ja im image mit drin :-)
 
Kostenlos!

Statistik des Forums

Themen
248,914
Beiträge
2,304,906
Mitglieder
378,625
Neuestes Mitglied
markus14