/// /// import rtc_to_net = require('../rtc-to-net/rtc-to-net'); import socks_to_rtc = require('../socks-to-rtc/socks-to-rtc'); import net = require('../net/net.types'); import logging = require('../../../third_party/uproxy-lib/logging/logging'); import loggingTypes = require('../../../third_party/uproxy-lib/loggingprovider/loggingprovider.types'); export var moduleName = 'simple-socks'; export var log :logging.Log = new logging.Log(moduleName); // Set each module to info, warn, error, or debug depending on which module // you're debugging. Since the proxy outputs quite a lot of messages, show only // warnings by default from the rest of the system. Note that the proxy is // extremely slow in debug mode. export var loggingController = freedom['loggingcontroller'](); // Example to show how to manuall configure console filtering. loggingController.setDefaultFilter(loggingTypes.Destination.console, loggingTypes.Level.info); loggingController.setFilters(loggingTypes.Destination.console, { 'simple-socks': loggingTypes.Level.debug, 'SocksToRtc': loggingTypes.Level.info, 'RtcToNet': loggingTypes.Level.info }); //----------------------------------------------------------------------------- var localhostEndpoint:net.Endpoint = { address: '127.0.0.1', port:9999 }; //----------------------------------------------------------------------------- var pcConfig :freedom_RTCPeerConnection.RTCConfiguration = { iceServers: [{urls: ['stun:stun.l.google.com:19302']}, {urls: ['stun:stun1.l.google.com:19302']}] }; export var rtcNet = new rtc_to_net.RtcToNet(); rtcNet.startFromConfig({ allowNonUnicast: true }, pcConfig, false); // obfuscate //----------------------------------------------------------------------------- export var socksRtc = new socks_to_rtc.SocksToRtc(); socksRtc.on('signalForPeer', rtcNet.handleSignalFromPeer); socksRtc.startFromConfig( localhostEndpoint, pcConfig, false) // obfuscate .then((endpoint:net.Endpoint) => { log.info('SocksToRtc listening on: ' + JSON.stringify(endpoint)); log.info('curl -x socks5h://' + endpoint.address + ':' + endpoint.port + ' www.example.com') }, (e:Error) => { log.error('failed to start SocksToRtc: ' + e.message); }); //----------------------------------------------------------------------------- var getterBytesReceived :number = 0; var getterBytesSent :number = 0; var giverBytesReceived :number = 0; var giverBytesSent :number = 0; rtcNet.signalsForPeer.setSyncHandler(socksRtc.handleSignalFromPeer); // TODO: Re-enable received/sent messages when per-component logging is fixed: // https://github.com/uProxy/uproxy/issues/906 socksRtc.on('bytesReceivedFromPeer', (numBytes:number) => { getterBytesReceived += numBytes; // log.debug('Getter received ' + numBytes + ' bytes. (Total received: ' // + getterBytesReceived + ' bytes)'); }); socksRtc.on('bytesSentToPeer', (numBytes:number) => { getterBytesSent += numBytes; // log.debug('Getter sent ' + numBytes + ' bytes. (Total sent: ' // + getterBytesSent + ' bytes)'); }); rtcNet.bytesReceivedFromPeer.setSyncHandler((numBytes:number) => { giverBytesReceived += numBytes; // log.debug('Giver received ' + numBytes + ' bytes. (Total received: ' // + giverBytesReceived + ' bytes)'); }); rtcNet.bytesSentToPeer.setSyncHandler((numBytes:number) => { giverBytesSent += numBytes; // log.debug('Giver sent ' + numBytes + ' bytes. (Total sent: ' // + giverBytesSent + ' bytes)'); }); rtcNet.onceReady .then(() => { log.info('RtcToNet ready'); }, (e:Error) => { log.error('failed to start RtcToNet: ' + e.message); });