Opened 6 years ago

Last modified 3 months ago

#7903 new task

Research ways of adding Extended ORPort support to pyptlib

Reported by: asn Owned by:
Priority: Medium Milestone:
Component: Circumvention/Pluggable transport Version:
Severity: Normal Keywords:
Cc: dcf, arma, nickm, zwol Actual Points:
Parent ID: Points:
Reviewer: Sponsor:

Description

A server-side pluggable transport, before proxying the deobfuscated data to the ORPort, it must do the Extended ORPort dance (during which it sends to Tor the IP address of its client, the name of the pluggable transport used, etc.).

It would be nice if developers that write pluggable transports (like flashproxy, stegotorus, etc.) didn't have to care about the Extended ORPort protocol, but still enjoy its benefits. Since these pluggable transports are supposed to be using pyptlib for their managed-proxy needs, it would make sense for pyptlib to also handle the Extended ORPort part.

We should research ways of implementing the Extended ORPort logic to pyptlib without dictating a certain way of thinking and programming to the pluggable transports developer. For example, pyptlib should not use twisted to do the Extended ORPort dance, since that would pretty-much force the developer to use twisted for his transport too.

Child Tickets

Change History (6)

comment:1 Changed 6 years ago by dcf

tor-dev thread: https://lists.torproject.org/pipermail/tor-dev/2013-January/004373.html

Check #7620 for my independent implementation of extended OR support in Go. Unfortunately it maybe doesn't help you much because there's really only one way to implement it that makes sense in Go: as blocking network operations on a plain socket, with the expectation that you will be called inside an independent goroutine (thread).

Source code: https://gitweb.torproject.org/user/dcf/flashproxy.git/tree/refs/heads/extor:/websocket-transport
The main abstraction is the function PtConnectOr. It takes that PtServerInfo struct that results for PT env parsing, and connects to the regular OR port or the extended OR port as appropriate. When it connects to the extended OR port, it does the authentication and USERADDR things just like pyobfsproxy does.

comment:2 Changed 6 years ago by asn

Short note from FOSDEM: Seems like http://www.python.org/dev/peps/pep-3156/ will be a Python stdlib asynchronous networking library.

comment:3 Changed 5 years ago by asn

#11354 is related.

comment:4 Changed 18 months ago by teor

Severity: Normal

Set all open tickets without a severity to "Normal"

comment:5 Changed 4 months ago by teor

Owner: asn deleted
Status: newassigned

asn does not need to own any obfuscation tickets any more. Default owners are trouble.

comment:6 Changed 3 months ago by cohosh

Status: assignednew

tickets were assigned to asn, setting them as unassigned (new) again.

Note: See TracTickets for help on using tickets.