Page 1 of 1

Web interface via IPv4 en IPv6

Posted: August 8th, 2011, 10:23 am
by Brambo123
Is het ook mogelijk om SABnzbd te laten luisteren naar IPv4 en IPv6 tegelijk?
Bij IPv4 laat ik hem luisteren naar "0.0.0.0" en bij IPv6 naar "::", maar hoe doe je beide tegelijk ;D
Komt er dus eigenlijk op neer dat die naar 2 ip adressen moet luisteren.

Re: Web interface via IPv4 en IPv6

Posted: August 8th, 2011, 11:22 am
by sander
Ik heb :: ingevuld, en dan luistert ie naar IPv4 en IPv6. Heb je dat geprobeerd?

Maar: Ik zit op Ubuntu Linux. Op welk OS draait jouw SAB? Misschien maakt het uit ...

Re: Web interface via IPv4 en IPv6

Posted: August 8th, 2011, 11:46 am
by Brambo123
Ik draai op Windows Server 2008 R2.
Maar :: is puur voor IPv6 en 0.0.0.0 is puur IPv4 dus zou ook helemaal niet mogen werken.

Re: Web interface via IPv4 en IPv6

Posted: August 8th, 2011, 12:00 pm
by sander
Brambo123 wrote:Ik draai op Windows Server 2008 R2.
Maar :: is puur voor IPv6 en 0.0.0.0 is puur IPv4 dus zou ook helemaal niet mogen werken.
Heb je het getest met :: ? Kan je dan nog via http://localhost:8080/ erbij?

Re: Web interface via IPv4 en IPv6

Posted: August 8th, 2011, 3:17 pm
by Brambo123
Ik heb uiteraard getest, en natuurlijk kan ik er met localhost naar toe.
Hij gaat dan eerst ::1 proberen (localhost in IPv6), werkt dat niet, dan gaat die naar 127.0.0.1 (localhost in IPv4).
Maar daar heb ik dus helemaal niets aan.
Als je wilt testen moet je naar:
http://127.0.0.1:8080/ voor IPv4
http://[::1]:8080/ voor IPv6

Re: Web interface via IPv4 en IPv6

Posted: August 8th, 2011, 3:45 pm
by sander
Even gecheckt op Ubuntu Linux, en daar resolvet localhost inderdaad ook naar 127.0.0.1 en ::1. Zie regel 1 en regel 3:

Code: Select all

sander@netbook:~$ cat /etc/hosts | grep localhost
127.0.0.1	localhost.localdomain	localhost
::1	netbook	localhost6.localdomain6	localhost6
::1     localhost ip6-localhost ip6-loopback
sander@netbook:~$ 
Maar met '::' reageert SABnzbd bij mij dus zowel op IPv4 als IPv6:

Code: Select all

sander@netbook:~$ grep :: .sabnzbd/sabnzbd.ini 
host = ::
sander@netbook:~$ 

sander@netbook:~$ wget -4 localhost:8080 -O /dev/null
--2011-08-08 22:38:33--  http://localhost:8080/
Resolving localhost... 127.0.0.1, 127.0.0.1
Connecting to localhost|127.0.0.1|:8080... connected.
HTTP request sent, awaiting response... 200 OK
<snip>

sander@netbook:~$ wget -6 localhost:8080 -O /dev/null
--2011-08-08 22:38:37--  http://localhost:8080/
Resolving localhost... ::1
Connecting to localhost|::1|:8080... connected.
HTTP request sent, awaiting response... 200 OK
<snip>

sander@netbook:~$ 

Re: Web interface via IPv4 en IPv6

Posted: August 8th, 2011, 11:49 pm
by Brambo123
Maar i.p.v. met wget, werkt http://127.0.0.1:8080/ en http://[::1]:8080/ wel gewoon bij jou (in web browser)?
Onder Windows werkt dat in ieder geval niet, anders had ik dit topic niet begonnen.

Re: Web interface via IPv4 en IPv6

Posted: August 9th, 2011, 12:15 am
by sander
Brambo123 wrote:Maar i.p.v. met wget, werkt http://127.0.0.1:8080/ en http://[::1]:8080/ wel gewoon bij jou (in web browser)?
Onder Windows werkt dat in ieder geval niet, anders had ik dit topic niet begonnen.
Ja, ook in mijn webbrowser (Chrome) werken beide URLs.

Re: Web interface via IPv4 en IPv6

Posted: August 9th, 2011, 2:07 am
by sander
Ik heb een Windows-machine gevonden, en gespeeld met "SABnzbd Host". Ik zie hetzelfde als de OP: op Windows 7 luistert SABnzbd / cherrypy ofwel naar IPv4 ofwel naar IPv6. Niet allebei zoals op Ubuntu Linux

Dit zegt de cherry-documentatie:
socket_host
The hostname or IP address on which to listen for connections.

Host values may be any IPv4 or IPv6 address, or any valid hostname. The string ‘localhost’ is a synonym for ‘127.0.0.1’ (or ‘::1’, if your hosts file prefers IPv6). The string ‘0.0.0.0’ is a special IPv4 entry meaning “any active interface” (INADDR_ANY), and ‘::’ is the similar IN6ADDR_ANY for IPv6. The empty string or None are not allowed.
Oh, ik heb 3 jaar geleden dezelfde vraag gesteld: http://forums.sabnzbd.org/viewtopic.php?f=4&t=265 . Dus probleem voor Linux blijkbaar opgelost, waarschijnlijk in cherrypy (of misschien python), niet in SABnzbd denk ik. En nog meer: http://forums.sabnzbd.org/viewtopic.php?t=1701.

Ik denk dat je in cherrypy twee servers kan definieren, dus 0.0.0.0 en :: (zie http://www.zacwitte.com/running-cherryp ... ts-example ), zodat hij ook op Windows luistert naar IPv4 en IPv6, maar da's vast veel werk in SABnzbd.

Restultaat van "SABnzbd Host", resp: <leeg>, ::, 0.0.0.0 en localhost

Code: Select all

C:\Users\Sander>netstat -aon | find /i "listen" | find /i 8080
FIND: Parameter format not correct

C:\Users\Sander>netstat -aon | find /i "listen" | find /i "8080"
  TCP    192.168.1.53:8080      0.0.0.0:0              LISTENING       3788

C:\Users\Sander>netstat -aon | find /i "listen" | find /i "8080"
  TCP    [::]:8080              [::]:0                 LISTENING       3920

C:\Users\Sander>netstat -aon | find /i "listen" | find /i "8080"
  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       2776

C:\Users\Sander>netstat -aon | find /i "listen" | find /i "8080"
  TCP    [::1]:8080             [::]:0                 LISTENING       3776

C:\Users\Sander>

Re: Web interface via IPv4 en IPv6

Posted: August 9th, 2011, 2:52 am
by sander
EDIT:

I did some coding, and I'm now to able run SABnzbd on an additional host:port. So that could be a solution for SABnzbd on Windows to listen to both IPv4 and IPv6: start SAB on both 0.0.0.0 and ::

I still don't understand (or: did not yet try) how to run SABnzbd from source on Windows, so I can't test it for real on Windows.


EDIT/PS: FWIW, I do think SABnzbd should be able to handle IPv4 and IPv6 at the same time (dual stack).

Code: Select all


--- SABnzbd.py.org	2011-08-09 10:40:11.409183471 +0200
+++ SABnzbd.py	2011-08-09 11:06:30.869183767 +0200
@@ -1261,6 +1261,19 @@
             except:
                 pass
 
+
+    '''
+    SJ: as a test, let's do an addiotional server on a specific host and port
+    Goal: if SABnzbd should listen on both IPv4 and IPv6, and '::' does not take care of that (as on Win7), run SABnzbd on both 0.0.0.0 and ::
+    Maybe some checking before: if host == '::' : start also on 0.0.0.0, and just pass an exception if port is already used (better check if it's SAB itself)
+    '''
+    http_server = _cpwsgi_server.CPWSGIServer()
+    http_server.bind_addr = ('0.0.0.0', 9999)
+    adapter = _cpserver.ServerAdapter(cherrypy.engine, http_server, http_server.bind_addr)
+    adapter.subscribe()
+
+
+
     https_cert = sabnzbd.cfg.https_cert.get_path()
     https_key = sabnzbd.cfg.https_key.get_path()
     if enable_https: