def get(self): instance = LoadBalancer.find(TailboneCustomInstance) if not instance: raise AppError('Instance not found, try again later.') return { "ip": instance.address }
def get_or_create_room(request, name=None): if not name: name, room, address = unique_name() else: room = room_hash(name) address = memcache.get(room) if not address: if _config.ENABLE_WEBSOCKET: if DEBUG: class DebugInstance(object): if _config.DEBUG_WEBSOCKET_ADDRESS: address = _config.DEBUG_WEBSOCKET_ADDRESS elif str(request.remote_addr) == "::1": address = "localhost" else: address = request.remote_addr instance = DebugInstance() else: instance = LoadBalancer.find(TailboneWebsocketInstance) if not instance: raise AppError('Instance not yet ready, try again later.') address = "ws://{}:{}/{}".format(instance.address, _config.PORT, name) else: address = "/api/channel/{}".format(name) if not memcache.add(room, address, time=_config.ROOM_EXPIRATION): return get_or_create_room(request, name) return name, address
def get(self): username = self.request.get("username") if not username: raise AppError("Must provide username.") instance = LoadBalancer.find(TailboneTurnInstance, self.request) if not instance: raise AppError('Instance not found, try again later.') username, password = credentials(username, instance.secret) return { "username": username, "password": password, "turn": instance.address }
def get(self, name): room, address = get_or_create_room(self.request, name) resp = {"name": room} if _config.ENABLE_WEBSOCKET: resp["ws"] = address else: resp["channel"] = address if _config.ENABLE_TURN and not DEBUG: ts = LoadBalancer.find(turn.TailboneTurnInstance) if ts: username = self.request.get("username", generate_word()) username, password = turn.credentials(username, ts.secret) resp.update({ "turn": ts, "username": username, "password": password, }) return resp
def get(self, name): room, address = get_or_create_room(self.request, name) resp = {"name": room} if _config.ENABLE_WEBSOCKET: resp["ws"] = address else: resp["channel"] = address if _config.ENABLE_TURN: ts = LoadBalancer.find(turn.TailboneTurnInstance) if ts: username = self.request.get("username", generate_word()) username, password = turn.credentials(username, ts.secret) resp.update({ "turn": ts, "username": username, "password": password, }) return resp
def get(self): username = self.request.get("username") if not username: raise AppError("Must provide username.") instance = LoadBalancer.find(TailboneTurnInstance) if not instance: raise AppError('Instance not found, try again later.') username, password = credentials(username, instance.secret) return { "username": username, "password": password, "uris": [ "turn:{}:3478?transport=udp".format(instance.address), "turn:{}:3478?transport=tcp".format(instance.address), ], }
def get(self): if _config.RESTRICTED_DOMAINS: if self.request.host_url not in _config.RESTRICTED_DOMAINS: raise AppError("Invalid host.") username = self.request.get("username") if not username: raise AppError("Must provide username.") instance = LoadBalancer.find(TailboneTurnInstance) if not instance: raise AppError('Instance not found, try again later.') username, password = credentials(username, instance.secret) return { "username": username, "password": password, "uris": [ "turn:{}:3478?transport=udp".format(instance.address), "turn:{}:3478?transport=tcp".format(instance.address) ], }