Hallo,
es ist zwar kein spezifischen OpenSuSE-Problem (verwende 13.2.), aber
vielleicht hat ja jemand einen Tip für mich.
Angelehnt an die Beispiele zur Authentifizierung in der AVM-Doku
(https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/AVM_TR-06...;
Abschnitt 10.7) habe ich versucht, ein Skript zum Setzen eines PortMappings
zu setzen, was aber leider nicht funktioniert:
#!/bin/sh
new_remote_host=""
new_external_port="80"
new_protocol="TCP"
new_internal_port="80"
new_internal_client="192.168.1.3"
new_enabled="1"
new_port_mapping_description="http forward for letsencrypt"
new_lease_duration=""
FBIP='192.168.178.1'
FBPORT='49000'
user=dslf-config
password=<password> # muss passend eingesetzt werden
# Passwort der Weboberfläche
# die sed Zeilen sind hier umbrochen, gehören in eine Zeile
control_url="`curl -m 5 -s "http://${FBIP}:${FBPORT}/igddesc.xml" | \
sed -e '/WANIPConn1<\/controlURL\>/!d' -e 's/^<controlURL>//' -e
's/<\/controlURL>.*$//'`"
urn="`curl -m 5 -s "http://${FBIP}:${FBPORT}/igddesc.xml" | \
sed -e '/WANIPConnection:1<\/serviceType\>/!d' -e 's/^<serviceType>//' -e
's/<\/serviceType>.*
# Achtung: auch hier Umbrüche enthalten
curl -m 5 -k --digest -u ${user}:$password} "http://${FBIP}
${FBPORT}${control_url}" \
-H "Content-Type: text/xml; charset='utf-8'" \
-H "SoapAction:${urn}#AddPortMapping" \
-d "<?xml version='1.0' encoding='utf-8'?>
http://schemas.xmlsoap.org/soap/encoding/'
xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'>
<UserID>${user}</UserID>
<NewPortMappingDescription>${new_port_mapping_description}</NewPortMappingDescription>
<NewLeaseDuration>${new_lease_duration}</NewLeaseDuration>
<NewInternalClient>${new_internal_client}</NewInternalClient>
<NewEnabled>${new_enabled}</NewEnabled>
<NewExternalPort>${new_external_port}</NewExternalPort>
<NewRemoteHost>${new_remote_host}</NewRemoteHost>
<NewProtocol>${new_protocol}</NewProtocol>
<NewInternalPort>${new_internal_port}</NewInternalPort>
" \
-s
Antwort:
<?xml version="1.0"?>
http://schemas.xmlsoap.org/soap/envelope/"
s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<faultcode>s:Client</faultcode>
<faultstring>UPnPError</faultstring>
<detail>
<UPnPError xmlns="urn:schemas-upnp-org:control-1-0">
<errorCode>502</errorCode>
<errorDescription>XML error</errorDescription>
</UPnPError>
</detail>
0
Laut AVM-Doku erwarte ich zwar einen Fehler, aber dabei auch die Übergabe
einer Nonce, um die Anfrage authentifiziert wiederholen zu können, z. B.
sowas:
Request:
<?xml version="1.0" encoding="utf-8"?>
http://schemas.xmlsoap.org/soap/encoding/"
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" >
http://soap-authentication.org/digest/2001/10/"
s:mustUnderstand="1">
<UserID>admin</UserID>
Response:
<?xml version="1.0" encoding="utf-8"?>
http://schemas.xmlsoap.org/soap/encoding/"
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" >
http://soap-authentication.org/digest/2001/10/"
s:mustUnderstand="1">
<Status>Unauthenticated</Status>
<Nonce>F758BE72FB999CEA</Nonce>
<Realm>F!Box SOAP-Auth</Realm>
<sFault>
<errorCode>503</errorCode>
<errorDescription>Auth. failed</errorDescription>
Mit der Nonce kann man dann fortsetzen.
Setze ich in der Fritzbox-Oberfläche unter Internet|Freigaben|Portfreigaben
die Option "Alle Geräte im Heimnetz dürfen Portfreigaben selbstständig
verändern", können unter weglassen des InitChallenge-Headers Portfreigaben
ohne Authentifizierung gesetzt werden, was aber nicht gewünscht ist.
Wo liegt der (Denk-)Fehler?
--
Gruß Marcus
Marcus Röckrath -- Vikarsbusch 8 -- D-48308 Senden -- Germany
Phone: +49-2536-9944 -- Fax: +49-2536-9943
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+unsubscribe@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+owner@opensuse.org