public void Stop()
        {
            if (stopped)
            {
                return;
            }
            stopped = true;

            if (_port_map_listener != null)
            {
                foreach (var l in _port_map_listener)
                {
                    l.Stop();
                }
                _port_map_listener = null;
            }

            _listener?.Stop();
            privoxyRunner?.Stop();
            if (_config.sysProxyMode != (int)ProxyMode.NoModify && _config.sysProxyMode != (int)ProxyMode.Direct)
            {
                SystemProxy.Update(_config, true, null);
            }
            ServerTransferTotal.Save(_transfer);
        }
        public void Stop()
        {
            if (stopped)
            {
                return;
            }
            stopped = true;

            if (_port_map_listener != null)
            {
                foreach (Listener l in _port_map_listener)
                {
                    l.Stop();
                }
                _port_map_listener = null;
            }
            if (_listener != null)
            {
                _listener.Stop();
            }
#if !_CONSOLE
            if (polipoRunner != null)
            {
                polipoRunner.Stop();
            }
            if (_config.sysProxyMode != (int)ProxyMode.NoModify && _config.sysProxyMode != (int)ProxyMode.Direct)
            {
                SystemProxy.Update(_config, true);
            }
#endif
            ServerTransferTotal.Save(_transfer);
        }
        public MainController()
        {
            _transfer = ServerTransferTotal.Load();

            foreach (var server in Global.GuiConfig.Configs)
            {
                if (_transfer.Servers.TryGetValue(server.Id, out var st))
                {
                    var log = new ServerSpeedLog(st.TotalUploadBytes, st.TotalDownloadBytes);
                    server.SpeedLog = log;
                }
            }
        }
        public ShadowsocksController()
        {
            _config   = Configuration.Load();
            _transfer = ServerTransferTotal.Load();

            foreach (Server server in _config.configs)
            {
                if (_transfer.servers.ContainsKey(server.server))
                {
                    ServerSpeedLog log = new ServerSpeedLog(((ServerTrans)_transfer.servers[server.server]).totalUploadBytes, ((ServerTrans)_transfer.servers[server.server]).totalDownloadBytes);
                    server.SetServerSpeedLog(log);
                }
            }
        }
예제 #5
0
        private void Dispose()
        {
            _transfer = null;
            _IPRange  = null;

            _firstPacket   = null;
            _connection    = null;
            _connectionUDP = null;

            _connetionRecvBuffer    = null;
            _remoteHeaderSendBuffer = null;

            httpProxyState = null;
        }
        public void Stop()
        {
            if (_stopped)
            {
                return;
            }
            _stopped = true;

            StopPortMap();

            _listener?.Stop();
            _privoxyRunner?.Stop();
            SystemProxy.Restore();
            ServerTransferTotal.Save(_transfer, Global.GuiConfig.Configs);
        }
        public ShadowsocksController()
        {
            _config   = Configuration.Load();
            _transfer = ServerTransferTotal.Load();

            foreach (var server in _config.configs)
            {
                if (_transfer.servers.TryGetValue(server.server, out var st))
                {
                    var log = new ServerSpeedLog(st.totalUploadBytes, st.totalDownloadBytes);
                    server.SetServerSpeedLog(log);
                }
            }

            StartReleasingMemory();
        }
예제 #8
0
        public void Stop()
        {
            if (_stopped)
            {
                return;
            }
            _stopped = true;

            StopPortMap();

            _listener?.Stop();
            _privoxyRunner?.Stop();
            if (Global.GuiConfig.SysProxyMode != ProxyMode.NoModify && Global.GuiConfig.SysProxyMode != ProxyMode.Direct)
            {
                SystemProxy.SystemProxy.Update(Global.GuiConfig, true, null);
            }
            ServerTransferTotal.Save(_transfer, Global.GuiConfig.Configs);
        }
예제 #9
0
        public ProxyAuthHandler(Configuration config, ServerTransferTotal transfer, byte[] firstPacket, int length, Socket socket)
        {
            int local_port = ((IPEndPoint)socket.LocalEndPoint).Port;

            _config            = config;
            _transfer          = transfer;
            _firstPacket       = firstPacket;
            _firstPacketLength = length;
            _connection        = socket;
            socket.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.NoDelay, true);

            if (_config.GetPortMapCache().ContainsKey(local_port))
            {
                Connect();
            }
            else
            {
                HandshakeReceive();
            }
        }
예제 #10
0
        public ProxyAuthHandler(Configuration config, ServerTransferTotal transfer, IPRangeSet IPRange, byte[] firstPacket, int length, Socket socket)
        {
            var local_port = ((IPEndPoint)socket.LocalEndPoint).Port;

            _config            = config;
            _transfer          = transfer;
            _IPRange           = IPRange;
            _firstPacket       = firstPacket;
            _firstPacketLength = length;
            _connection        = socket;
            socket.NoDelay     = true;

            if (_config.PortMapCache.ContainsKey(local_port) && _config.PortMapCache[local_port].type == PortMapType.Forward)
            {
                Connect();
            }
            else
            {
                HandshakeReceive();
            }
        }
 public Local(Configuration config, ServerTransferTotal transfer, IPRangeSet IPRange)
 {
     _config   = config;
     _transfer = transfer;
     _ipRange  = IPRange;
 }