2
2
using System . Collections . Concurrent ;
3
3
using System . Collections . Generic ;
4
4
using System . IO ;
5
+ using System . Linq ;
5
6
using System . Net ;
6
7
using System . Net . Sockets ;
7
8
using System . Text ;
8
9
using System . Threading ;
9
10
using System . Web ;
10
11
using System . Windows . Forms ;
11
- using Newtonsoft . Json ;
12
12
13
+ using Shadowsocks . Controller . Service ;
13
14
using Shadowsocks . Controller . Strategy ;
14
15
using Shadowsocks . Model ;
15
- using Shadowsocks . Properties ;
16
16
using Shadowsocks . Util ;
17
- using System . Linq ;
18
- using Shadowsocks . Controller . Service ;
19
- using Shadowsocks . Proxy ;
20
17
21
18
namespace Shadowsocks . Controller
22
19
{
@@ -100,10 +97,7 @@ public void Start(bool regHotkeys = true)
100
97
101
98
protected void ReportError ( Exception e )
102
99
{
103
- if ( Errored != null )
104
- {
105
- Errored ( this , new ErrorEventArgs ( e ) ) ;
106
- }
100
+ Errored ? . Invoke ( this , new ErrorEventArgs ( e ) ) ;
107
101
}
108
102
109
103
public Server GetCurrentServer ( )
@@ -132,7 +126,7 @@ public IStrategy GetCurrentStrategy()
132
126
{
133
127
foreach ( var strategy in _strategyManager . GetStrategies ( ) )
134
128
{
135
- if ( strategy . ID == this . _config . strategy )
129
+ if ( strategy . ID == _config . strategy )
136
130
{
137
131
return strategy ;
138
132
}
@@ -197,9 +191,13 @@ public bool AddServerBySSURL(string ssURL)
197
191
{
198
192
try
199
193
{
200
- if ( ssURL . IsNullOrEmpty ( ) || ssURL . IsWhiteSpace ( ) ) return false ;
194
+ if ( ssURL . IsNullOrEmpty ( ) || ssURL . IsWhiteSpace ( ) )
195
+ return false ;
196
+
201
197
var servers = Server . GetServers ( ssURL ) ;
202
- if ( servers == null || servers . Count == 0 ) return false ;
198
+ if ( servers == null || servers . Count == 0 )
199
+ return false ;
200
+
203
201
foreach ( var server in servers )
204
202
{
205
203
_config . configs . Add ( server ) ;
@@ -219,30 +217,24 @@ public void ToggleEnable(bool enabled)
219
217
{
220
218
_config . enabled = enabled ;
221
219
SaveConfig ( _config ) ;
222
- if ( EnableStatusChanged != null )
223
- {
224
- EnableStatusChanged ( this , new EventArgs ( ) ) ;
225
- }
220
+
221
+ EnableStatusChanged ? . Invoke ( this , new EventArgs ( ) ) ;
226
222
}
227
223
228
224
public void ToggleGlobal ( bool global )
229
225
{
230
226
_config . global = global ;
231
227
SaveConfig ( _config ) ;
232
- if ( EnableGlobalChanged != null )
233
- {
234
- EnableGlobalChanged ( this , new EventArgs ( ) ) ;
235
- }
228
+
229
+ EnableGlobalChanged ? . Invoke ( this , new EventArgs ( ) ) ;
236
230
}
237
231
238
232
public void ToggleShareOverLAN ( bool enabled )
239
233
{
240
234
_config . shareOverLan = enabled ;
241
235
SaveConfig ( _config ) ;
242
- if ( ShareOverLANStatusChanged != null )
243
- {
244
- ShareOverLANStatusChanged ( this , new EventArgs ( ) ) ;
245
- }
236
+
237
+ ShareOverLANStatusChanged ? . Invoke ( this , new EventArgs ( ) ) ;
246
238
}
247
239
248
240
public void SaveProxy ( ProxyConfig proxyConfig )
@@ -255,10 +247,8 @@ public void ToggleVerboseLogging(bool enabled)
255
247
{
256
248
_config . isVerboseLogging = enabled ;
257
249
SaveConfig ( _config ) ;
258
- if ( VerboseLoggingStatusChanged != null )
259
- {
260
- VerboseLoggingStatusChanged ( this , new EventArgs ( ) ) ;
261
- }
250
+
251
+ VerboseLoggingStatusChanged ? . Invoke ( this , new EventArgs ( ) ) ;
262
252
}
263
253
264
254
public void SelectServerIndex ( int index )
@@ -310,19 +300,15 @@ private void StopPlugins()
310
300
public void TouchPACFile ( )
311
301
{
312
302
string pacFilename = _pacServer . TouchPACFile ( ) ;
313
- if ( PACFileReadyToOpen != null )
314
- {
315
- PACFileReadyToOpen ( this , new PathEventArgs ( ) { Path = pacFilename } ) ;
316
- }
303
+
304
+ PACFileReadyToOpen ? . Invoke ( this , new PathEventArgs ( ) { Path = pacFilename } ) ;
317
305
}
318
306
319
307
public void TouchUserRuleFile ( )
320
308
{
321
309
string userRuleFilename = _pacServer . TouchUserRuleFile ( ) ;
322
- if ( UserRuleFileReadyToOpen != null )
323
- {
324
- UserRuleFileReadyToOpen ( this , new PathEventArgs ( ) { Path = userRuleFilename } ) ;
325
- }
310
+
311
+ UserRuleFileReadyToOpen ? . Invoke ( this , new PathEventArgs ( ) { Path = userRuleFilename } ) ;
326
312
}
327
313
328
314
public string GetServerURLForCurrentServer ( )
@@ -381,81 +367,68 @@ public void UpdatePACFromGFWList()
381
367
382
368
public void UpdateStatisticsConfiguration ( bool enabled )
383
369
{
384
- if ( availabilityStatistics == null ) return ;
385
- availabilityStatistics . UpdateConfiguration ( this ) ;
386
- _config . availabilityStatistics = enabled ;
387
- SaveConfig ( _config ) ;
370
+ if ( availabilityStatistics != null )
371
+ {
372
+ availabilityStatistics . UpdateConfiguration ( this ) ;
373
+ _config . availabilityStatistics = enabled ;
374
+ SaveConfig ( _config ) ;
375
+ }
388
376
}
389
377
390
378
public void SavePACUrl ( string pacUrl )
391
379
{
392
380
_config . pacUrl = pacUrl ;
393
381
SaveConfig ( _config ) ;
394
- if ( ConfigChanged != null )
395
- {
396
- ConfigChanged ( this , new EventArgs ( ) ) ;
397
- }
382
+
383
+ ConfigChanged ? . Invoke ( this , new EventArgs ( ) ) ;
398
384
}
399
385
400
386
public void UseOnlinePAC ( bool useOnlinePac )
401
387
{
402
388
_config . useOnlinePac = useOnlinePac ;
403
389
SaveConfig ( _config ) ;
404
- if ( ConfigChanged != null )
405
- {
406
- ConfigChanged ( this , new EventArgs ( ) ) ;
407
- }
390
+
391
+ ConfigChanged ? . Invoke ( this , new EventArgs ( ) ) ;
408
392
}
409
393
410
394
public void ToggleSecureLocalPac ( bool enabled )
411
395
{
412
396
_config . secureLocalPac = enabled ;
413
397
SaveConfig ( _config ) ;
414
- if ( ConfigChanged != null )
415
- {
416
- ConfigChanged ( this , new EventArgs ( ) ) ;
417
- }
398
+
399
+ ConfigChanged ? . Invoke ( this , new EventArgs ( ) ) ;
418
400
}
419
401
420
402
public void ToggleCheckingUpdate ( bool enabled )
421
403
{
422
404
_config . autoCheckUpdate = enabled ;
423
405
Configuration . Save ( _config ) ;
424
- if ( ConfigChanged != null )
425
- {
426
- ConfigChanged ( this , new EventArgs ( ) ) ;
427
- }
406
+
407
+ ConfigChanged ? . Invoke ( this , new EventArgs ( ) ) ;
428
408
}
429
409
430
410
public void ToggleCheckingPreRelease ( bool enabled )
431
411
{
432
412
_config . checkPreRelease = enabled ;
433
413
Configuration . Save ( _config ) ;
434
- if ( ConfigChanged != null )
435
- {
436
- ConfigChanged ( this , new EventArgs ( ) ) ;
437
- }
414
+ ConfigChanged ? . Invoke ( this , new EventArgs ( ) ) ;
438
415
}
439
416
440
417
public void SaveLogViewerConfig ( LogViewerConfig newConfig )
441
418
{
442
419
_config . logViewer = newConfig ;
443
420
newConfig . SaveSize ( ) ;
444
421
Configuration . Save ( _config ) ;
445
- if ( ConfigChanged != null )
446
- {
447
- ConfigChanged ( this , new EventArgs ( ) ) ;
448
- }
422
+
423
+ ConfigChanged ? . Invoke ( this , new EventArgs ( ) ) ;
449
424
}
450
425
451
426
public void SaveHotkeyConfig ( HotkeyConfig newConfig )
452
427
{
453
428
_config . hotkey = newConfig ;
454
429
SaveConfig ( _config ) ;
455
- if ( ConfigChanged != null )
456
- {
457
- ConfigChanged ( this , new EventArgs ( ) ) ;
458
- }
430
+
431
+ ConfigChanged ? . Invoke ( this , new EventArgs ( ) ) ;
459
432
}
460
433
461
434
public void UpdateLatency ( Server server , TimeSpan latency )
@@ -498,15 +471,15 @@ protected void Reload()
498
471
if ( _pacServer == null )
499
472
{
500
473
_pacServer = new PACServer ( ) ;
501
- _pacServer . PACFileChanged += pacServer_PACFileChanged ;
502
- _pacServer . UserRuleFileChanged += pacServer_UserRuleFileChanged ;
474
+ _pacServer . PACFileChanged += PacServer_PACFileChanged ;
475
+ _pacServer . UserRuleFileChanged += PacServer_UserRuleFileChanged ;
503
476
}
504
477
_pacServer . UpdateConfiguration ( _config ) ;
505
478
if ( gfwListUpdater == null )
506
479
{
507
480
gfwListUpdater = new GFWListUpdater ( ) ;
508
- gfwListUpdater . UpdateCompleted += pacServer_PACUpdateCompleted ;
509
- gfwListUpdater . Error += pacServer_PACUpdateError ;
481
+ gfwListUpdater . UpdateCompleted += PacServer_PACUpdateCompleted ;
482
+ gfwListUpdater . Error += PacServer_PACUpdateError ;
510
483
}
511
484
512
485
availabilityStatistics . UpdateConfiguration ( this ) ;
@@ -536,21 +509,22 @@ protected void Reload()
536
509
537
510
TCPRelay tcpRelay = new TCPRelay ( this , _config ) ;
538
511
UDPRelay udpRelay = new UDPRelay ( this ) ;
539
- List < Listener . IService > services = new List < Listener . IService > ( ) ;
540
- services . Add ( tcpRelay ) ;
541
- services . Add ( udpRelay ) ;
542
- services . Add ( _pacServer ) ;
543
- services . Add ( new PortForwarder ( privoxyRunner . RunningPort ) ) ;
512
+ List < Listener . IService > services = new List < Listener . IService >
513
+ {
514
+ tcpRelay ,
515
+ udpRelay ,
516
+ _pacServer ,
517
+ new PortForwarder ( privoxyRunner . RunningPort )
518
+ } ;
544
519
_listener = new Listener ( services ) ;
545
520
_listener . Start ( _config ) ;
546
521
}
547
522
catch ( Exception e )
548
523
{
549
524
// translate Microsoft language into human language
550
525
// i.e. An attempt was made to access a socket in a way forbidden by its access permissions => Port already in use
551
- if ( e is SocketException )
526
+ if ( e is SocketException se )
552
527
{
553
- SocketException se = ( SocketException ) e ;
554
528
if ( se . SocketErrorCode == SocketError . AddressAlreadyInUse )
555
529
{
556
530
e = new Exception ( I18N . GetString ( "Port {0} already in use" , _config . localPort ) , e ) ;
@@ -564,10 +538,7 @@ protected void Reload()
564
538
ReportError ( e ) ;
565
539
}
566
540
567
- if ( ConfigChanged != null )
568
- {
569
- ConfigChanged ( this , new EventArgs ( ) ) ;
570
- }
541
+ ConfigChanged ? . Invoke ( this , new EventArgs ( ) ) ;
571
542
572
543
UpdateSystemProxy ( ) ;
573
544
Utils . ReleaseMemory ( true ) ;
@@ -590,25 +561,23 @@ private void UpdateSystemProxy()
590
561
SystemProxy . Update ( _config , false , _pacServer ) ;
591
562
}
592
563
593
- private void pacServer_PACFileChanged ( object sender , EventArgs e )
564
+ private void PacServer_PACFileChanged ( object sender , EventArgs e )
594
565
{
595
566
UpdateSystemProxy ( ) ;
596
567
}
597
568
598
- private void pacServer_PACUpdateCompleted ( object sender , GFWListUpdater . ResultEventArgs e )
569
+ private void PacServer_PACUpdateCompleted ( object sender , GFWListUpdater . ResultEventArgs e )
599
570
{
600
- if ( UpdatePACFromGFWListCompleted != null )
601
- UpdatePACFromGFWListCompleted ( this , e ) ;
571
+ UpdatePACFromGFWListCompleted ? . Invoke ( this , e ) ;
602
572
}
603
573
604
- private void pacServer_PACUpdateError ( object sender , ErrorEventArgs e )
574
+ private void PacServer_PACUpdateError ( object sender , ErrorEventArgs e )
605
575
{
606
- if ( UpdatePACFromGFWListError != null )
607
- UpdatePACFromGFWListError ( this , e ) ;
576
+ UpdatePACFromGFWListError ? . Invoke ( this , e ) ;
608
577
}
609
578
610
579
private static readonly IEnumerable < char > IgnoredLineBegins = new [ ] { '!' , '[' } ;
611
- private void pacServer_UserRuleFileChanged ( object sender , EventArgs e )
580
+ private void PacServer_UserRuleFileChanged ( object sender , EventArgs e )
612
581
{
613
582
if ( ! File . Exists ( Utils . GetTempPath ( "gfwlist.txt" ) ) )
614
583
{
@@ -630,8 +599,10 @@ public void CopyPacUrl()
630
599
631
600
private void StartReleasingMemory ( )
632
601
{
633
- _ramThread = new Thread ( new ThreadStart ( ReleaseMemory ) ) ;
634
- _ramThread . IsBackground = true ;
602
+ _ramThread = new Thread ( new ThreadStart ( ReleaseMemory ) )
603
+ {
604
+ IsBackground = true
605
+ } ;
635
606
_ramThread . Start ( ) ;
636
607
}
637
608
@@ -655,8 +626,10 @@ private void StartTrafficStatistics(int queueMaxSize)
655
626
{
656
627
trafficPerSecondQueue . Enqueue ( new TrafficPerSecond ( ) ) ;
657
628
}
658
- _trafficThread = new Thread ( new ThreadStart ( ( ) => TrafficStatistics ( queueMaxSize ) ) ) ;
659
- _trafficThread . IsBackground = true ;
629
+ _trafficThread = new Thread ( new ThreadStart ( ( ) => TrafficStatistics ( queueMaxSize ) ) )
630
+ {
631
+ IsBackground = true
632
+ } ;
660
633
_trafficThread . Start ( ) ;
661
634
}
662
635
@@ -666,10 +639,11 @@ private void TrafficStatistics(int queueMaxSize)
666
639
while ( true )
667
640
{
668
641
previous = trafficPerSecondQueue . Last ( ) ;
669
- current = new TrafficPerSecond ( ) ;
670
-
671
- current . inboundCounter = InboundCounter ;
672
- current . outboundCounter = OutboundCounter ;
642
+ current = new TrafficPerSecond
643
+ {
644
+ inboundCounter = InboundCounter ,
645
+ outboundCounter = OutboundCounter
646
+ } ;
673
647
current . inboundIncreasement = current . inboundCounter - previous . inboundCounter ;
674
648
current . outboundIncreasement = current . outboundCounter - previous . outboundCounter ;
675
649
0 commit comments