Separate BridgeDB databases from distributors
What was originally called "BridgeDB" is essentially two very different systems, which should be kept separate, and should be runnable on separate machines:
-
BridgeDB descriptor parsers, databases, and hashrings.
This part of BridgeDB's system takes the bridge descriptor files received from the BridgeAuthority (Tonga), parses them, shoves them into databases, and assigns them to the hashrings of the various bridge distributors.
-
BridgeDB distributors.
This part of BridgeDB's system distributes the bridges to clients, using various mechanisms. This would currently be the
bridgedb.Dist.EmailDistributor
which replies to email requests for bridges, and thebridgedb.Dist.IPBasedDistributor
which runs the [https://bridges.torproject.org web interface]. Each distributor listens for clients' requests and responds with bridges from that distributor's hashring, as appropriate.