Ergebnis 1 bis 1 von 1
  1. #1
    VIP Avatar von SpaceRat
    Registriert seit
    12.08.2012
    Ort
    Midgard
    Beiträge
    416
    Thanks
    49
    Thanked 165 Times in 97 Posts

    Python mit IPv6-Support

    Hallo liebe Entwickler!

    Dieser Patch
    Code:
    diff --git a/tdt/cvs/cdk/make/contrib-libs.mk b/tdt/cvs/cdk/make/contrib-libs.mk
    index c3d0475..8bc166f 100644
    --- a/tdt/cvs/cdk/make/contrib-libs.mk
    +++ b/tdt/cvs/cdk/make/contrib-libs.mk
    @@ -1280,7 +1280,7 @@ $(DEPDIR)/python: bootstrap host_python openssl-dev sqlite libreadline bzip2 @DE
                            --prefix=/usr \
                            --sysconfdir=/etc \
                            --enable-shared \
    -                       --disable-ipv6 \
    +                       --enable-ipv6 \
                            --without-cxx-main \
                            --with-threads \
                            --with-pymalloc \
    gegen max-tdt branch enigma2
    baut Python mit IPv6-Support.

    Was spricht dafür:
    - Plugin-Entwickler können ihre Plugins IPv6-tauglich machen (OpenWebif ist es schon)

    Was spricht dagegen:
    - Nichts, denn die Python-Scripte müssen zusätzlich noch gezielt umgeschrieben werden, um Dual Stack Sockets zu erzeugen. Noch nicht IPv6-taugliche Plugins merken also gar nichts davon.

    How-to Plugin IPv6-tauglich machen:

    Beispiel OpenWebif:
    Aus
    Code:
    listener.append(reactor.listenTCP(port,site))

    (Impliziert "Alle IPv4-Interfaces - Standard, wenn keines angegeben)
    mache
    Code:
    listener.append(reactor.listenTCP(port,site,interface='::'))
    (Impliziert "Alle Interfaces, IPv6 und IPv4")

    Da nicht jedes Image IPv6-tauglich ist (Damit ein Plugin IPv6-tauglich gemacht werden kann, müssen es zuerst der Linux-Kernel, dann Python und schlußendlich auch Twisted sein), sollte man einen Fallback einbauen:
    Code:
    ...
    from socket import gethostname, has_ipv6
    ...
    if has_ipv6 and fileExists('/proc/net/if_inet6') and twisted.version.major >= 12:
                                    # use ipv6
                                    listener.append( reactor.listenTCP(port, site, interface='::') )
                            else:
                                    # ipv4 only
                                    listener.append( reactor.listenTCP(port, site) )
    Wenn fileExists('/proc/net/if_inet6') wahr ist, hat der Linux-Kernel IPv6
    socket.has_ipv6 wird wahr, wenn Python mit IPv6-Support gebaut wurde
    und
    twisted.version.major >= 12
    testet auf Twisted 12.x oder höher, wobei Twisted 12.0 die erste Version mit IPv6-Support war.
    Geändert von SpaceRat (16.12.2013 um 17:19 Uhr)


Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •