-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTestText.py
1836 lines (1372 loc) · 68.1 KB
/
TestText.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# NETALYZR TEST SUMMARY TEXT MATERIAL
# ======================================================================
# Units
# -----
B = 'bytes'
KB = 'Kbytes'
MB = 'Mbytes'
Bps = 'Bits/sec'
Kbps = 'Kbit/sec'
Mbps = 'Mbit/sec'
# Test outcome status messages
# ----------------------------
StatusNotExec = 'Not Executed'
StatusProhibited = 'Prohibited'
StatusNotCompleted = 'Failed to Complete'
StatusOK = 'OK'
StatusWarning = 'Warning'
StatusFailed = 'Failed'
StatusDanger = 'Danger'
StatusNote = 'Note'
StatusDownload = 'Download %s'
StatusUpload = 'Upload %s'
StatusUpDown = 'Upload %s, Download %s'
StatusV6Problem = 'IPv6 Connectivity Problem'
StatusV6None = 'No IPv6 Support'
# Various in-server strings
# ----------------------------------------------------------------------
NetalyzrProblem = '''<p>
It appears there was a significant problem with Netalyzr's execution
in this run, as it was not able to look up the name of our server
and/or generate connections to our server. As a result, the following
results should be considered unreliable.
</p>
<p>
Our first suggestion is to quit your web browser and try again. If
that fails, please <a href="mailto:[email protected]">contact us</a>
and we will attempt to diagnose and debug the problem. Thanks, and
sorry for the inconvenience.
</p>'''
NetalyzrOverload = 'Due to significant load on our servers, this test is currently disabled. '
DNSWildcardLink = "Wildcard DNS content"
TimeNextDay = 'next day'
Referrer = 'Referrer'
NoResults = 'No results available. '
MinorAberrations = 'Minor Aberrations'
MajorAbnormalities = 'Major Abnormalities'
InternalError = 'Internal Server Error on Test Report'
SummaryNoteworthy = 'Summary of Noteworthy Events'
NoServerTranscript = 'No server-side transcript available, sorry. '
NoClientTranscript = 'No client-side transcript available, sorry. '
# Generic test outcomes
# -----------------------
TestNotExecuted = \
"The test was not executed. Required functionality was unavailable or not permitted."
TestFailedToComplete = \
"The test failed to execute completely."
TestProhibited = \
"""The applet was not permitted to run this test in its entirety. We
encourage you to re-run the applet, allowing it to conduct its tests
if prompted. However, some system configurations will always block
this test. See the corresponding <a href="/faq.html#permissions"
target="_blank">FAQ</a> for help."""
TestError = \
"An unspecified error occurred during the test."
TestErrorUnknownHost = \
"One or more of the hostnames required for the test could not be resolved."
TestErrorIO = \
"An I/O error occurred during the test. The test result code is %i."
TestFailed = "Failed"
# Are there things of significant note
NoProblems = \
"""We did not observe any significant problems with your network connection"""
Problems = \
"""We observed the following problems which may be of significant concern: """
NoWarnings = \
"""We did not observe any minor aberrations"""
Warnings = \
"""We observed the following minor to moderate abnormalities: """
# Test category names
# -------------------
CatAddress = 'Address-based Tests'
CatReachability = 'Reachability Tests'
CatAccessLink = 'Network Access Link Properties'
CatHTTP = 'HTTP Tests'
CatDNS = 'DNS Tests'
CatIPv6 = 'IPv6 Tests'
CatFuture = 'Internet Extensibility'
CatHost = 'Host Properties'
CatFeedback = 'Feedback'
# Test names
# ----------
CheckLocalAddr = 'NAT detection'
CheckLocalInterface = 'Local Network Interfaces'
CheckURL = 'Address-based HTTP proxy detection'
CheckLowHTTP = 'Header-based HTTP proxy detection'
CheckMalformedHTTP = 'HTTP proxy detection via malformed requests'
CheckHTTPCache = 'HTTP caching behavior'
CheckRestrictedDNS = 'Restricted domain DNS lookup'
CheckBandwidth = 'Network bandwidth measurements'
CheckBuffer = 'Network buffer measurements'
CheckDNSResolver = 'DNS resolver properties'
CheckLatency = 'Network latency measurements'
CheckTCPSetupLatency = 'TCP connection setup latency'
CheckBackgroundHealth = 'Network background health measurement'
CheckUnrestrictedDNS = 'Unrestricted domain DNS lookup'
CheckDirectedEDNS = 'Direct EDNS support'
CheckDirectDNS = 'Direct DNS support'
CheckPathMTU = 'Path MTU'
CheckPathMTUV6 = 'IPv6 Path MTU'
CheckTraceroute = 'Traceroute'
CheckTracerouteV6 = 'IPv6 Traceroute'
CheckJS = 'JavaScript-based tests'
CheckDNSGlue = 'DNS glue policy'
CheckDNSLookups = 'DNS lookups of popular domains'
CheckUDPConnectivity = 'UDP connectivity'
CheckTCPConnectivity = 'TCP connectivity'
CheckFiletypeFiltering = 'Filetype-based filtering'
CheckDNSResolverAddress = 'DNS resolver address'
CheckDNSRand = 'DNS resolver port randomization'
CheckDNSProxy = 'DNS external proxy'
CheckClockAccuracy = 'System clock accuracy'
CheckUploadedData = 'Uploaded Data'
CheckBrowser = 'Browser properties'
CheckDNSWildcarding = 'DNS results wildcarding'
CheckDNSHostInfo = 'DNS-based host information'
CheckIPv6DNS = 'DNS support for IPv6'
CheckIPv6Connectivity = 'IPv6 Connectivity'
CheckIPv6TCPConnectivity = 'IPv6 TCP connectivity'
CheckIPv6Javascript = 'IPv6 and Your Web Browser'
CheckFutureHost = 'Readiness of your Host'
CheckFutureNat = 'Readiness of your Nat'
CheckFutureNetwork = 'Readiness of your Network'
# Test-specific material
# ----------------------
# LocalAddress/Nat testing text
LocalAddressRoutable = 'routable'
LocalAddressUnroutable = 'unroutable'
LocalAddressSummaryNoNat = '''No NAT Detected'''
LocalAddressSummaryNat = '''NAT Detected'''
LocalAddressSummaryNatUnknown = '''Unknown NAT Status'''
LocalAddressContentFailure = '''<P>One of the connections to our
server did not receive the expected data.</P>'''
LocalAddressNoNat = '''<P>Your global IP address is %s and matches
your local one. You are not behind a NAT.</P>'''
LocalAddressUnknown = '''<p>Your global IP address is %s. Your local
IP address could not be determined, so we cannot say whether you are
behind a NAT.</p>'''
LocalAddressNatUnknown = '''<p>Your global IP address is %s. Your local
IP address could not be determined, so we cannot say whether you are
behind a NAT.</p>'''
LocalAddressNat = '''<P>Your global IP address is %(global)s while your local one
is %(local)s. You are behind a NAT. Your local address is in %(routable)s address space.</P>'''
LocalAddressNatNoRoute = '''<P>Your global IP address is %(global)s while your
local one is %(local)s. You are behind a NAT.</P>'''
LocalAddressMultiple = '''<P>Repeated requests arrived
from %d different client addresses.</P>'''
LocalAddressNatSequential = '<P>Your NAT renumbers TCP source ports sequentially. '
LocalAddressSequential = '<P>Your machine numbers TCP source ports sequentially. '
LocalAddressNatRandom = '<P>Your NAT randomizes TCP source ports. '
LocalAddressRandom = '<P>Your machine randomizes TCP source ports. '
LocalAddressGraph = '''The following graph shows connection
attempts on the X-axis and their corresponding source ports used by your computer on the Y-axis.</P>'''
NatRenumbered = '<P>The NAT or some other process renumbers TCP ports. '
Renumbered = '<P>Some network process renumbers TCP ports. '
NoRenumbered = '<P>TCP ports are not renumbered by the network.</P>'
RenumberedGraph = '''The following graph shows connection
attempts on the X-axis and their corresponding source ports on the Y-axis as seen by our server.</P>'''
NoPortInfo = '''Client-side connection port numbers are unavailable so
we cannot report on their randomization.</p>'''
# Network interface
LocalInterfaceIntro = '''Your computer reports the following network
interfaces, with the following IP addresses for each one: '''
LocalInterfaceName = '''%s: %s'''
LocalInterfaceLoopback = '''(a local loopback interface)'''
LocalInterfaceEthernet = '''(an ethernet interface)'''
LocalInterfaceVmnet = '''(a virtual machine interface)'''
LocalIPv4Private = '''(a private IPv4 address)'''
LocalIPv4Loopback = '''(an IPv4 loopback address)'''
LocalIPv4Public = '''(a public IPv4 address)'''
LocalIPv4SelfAssigned = '''(a link-local IPv4 address)'''
LocalIPv6LinkLocal = '''(a link-local IPv6 address)'''
LocalIPv6Loopback = '''(an IPv6 loopback address)'''
LocalIPv6Private = '''(a private IPv6 address)'''
LocalIPv66to4 = '''(a 6to4 IPv6 address)'''
LocalIPv6Teredo = '''(a Teredo IPv6 address)'''
LocalIPv66rd = '''(probably a 6rd IPv6 address)'''
LocalIPv6Public = '''(probably a public IPv6 address)'''
LocalInterfaceIPv6Problem = '''Your system has an IPv6 address that
does not work'''
LocalInterfaceIPv6Warning = '''There may be a potential IPv6-related problem with your host or network'''
LocalInterfaceIPv6ProblemTxt = '''<P>Your system has an IPv6 address, yet
was unable to fetch an image using IPv6. This can cause substantial
problems as your web browser or other programs may first attempt to
contact hosts using the non-functional IPv6 connection. %s</P>'''
LocalInterfaceIPv6Problem6to4 = '''This is probably due to your use of
6to4 (an IPv6 transition technology) while you are behind a NAT or
firewall. You should probably disable 6to4 on your host or NAT. '''
LocalInterfaceIPv6PrivateGateway = '''<P>Your system is configured to
use 6to4 (an IPv6 transition technology) but it is behind a NAT. You
should probably disable 6to4 on your host (usually this is in the
network settings on your host). This is likely why some web sites may
feel 'slow' or fail to load altogether.</P>'''
LocalInterfaceIPv6RogueGateway = '''<P>Elsewhere on your local network
is one or more 'rogue IPv6 gateway(s)', computers which is mistakenly
attempting to 'share' an IPv6 address with the local network. These
systems may cause connectivity problems for everyone else on your
local network, which may make some sites feel 'slow' or even fail to
load altogether. The IP address(es) are %s.</P>'''
LocalInterfaceIPv6RogueGatewayPossible = '''<P>Elsewhere on your local network
is one or more 'rogue IPv6 gateway(s)', computers which are attempting
ttempting to 'share' an IPv6 address with the local network. These
systems may cause connectivity problems for everyone else on your
local network, which may make some sites feel 'slow' or even fail to
load altogether, although at this time you have IPv6 connectivity.
The IP address(es) are %s.</P>'''
# DNS lookup tests
HostAuxWarning = '''You are listed on a significant DNS blacklist'''
HostLookupFailure = '''We could not determine your global IP
address for non-HTTP traffic and therefore could not conduct
DNS-based blacklist lookups that would require this address. '''
HostIsNotTor = '''You are not a <a
href="http://www.torproject.org">Tor</a> exit node for HTTP traffic. '''
HostIsTor = '''You are listed as a <a
href="http://www.torproject.org">Tor</a> exit node for HTTP
traffic. '''
HostIsNotSpamhaus = '''You are not listed on any <a
href="http://www.spamhaus.org">Spamhaus</a> blacklists. '''
HostIsSpamhausOnlyPBL = '''You are listed on the
<a href="http://www.spamhaus.org">Spamhaus</a>
<A HREF="http://www.spamhaus.org/pbl/">Policy Based Blacklist</A>,
meaning that your provider has designated your address block as
one that should only be sending authenticated email, email through the ISP's
mail server, or using webmail. '''
HostIsSpamhaus = '''You are listed on the following
<A HREF="http://www.spamhaus.org">Spamhaus</A> blacklists: '''
HostIsSpamhausSBL = '<a href="http://www.spamhaus.org/sbl/">SBL</a> '
HostIsSpamhausXBL = '<a href="http://www.spamhaus.org/xbl/">XBL</a> '
HostIsSpamhausPBL = '<a href="http://www.spamhaus.org/pbl/">PBL</a> '
HostIsSorbsDynamic = '''The
<a href="http://www.au.sorbs.net/faq/dul.shtml">SORBS DUHL</a>
believes you are using a dynamically assigned IP address. '''
HostIsSorbsStatic = '''The
<a href="http://www.au.sorbs.net/faq/dul.shtml">SORBS DUHL</a>
believes you are using a statically assigned IP address. '''
HostIsSpamhausWarning = '''Your host appears to be considered
a known spammer by the Spamhaus blacklist'''
UDPReachabilityWarning = 'Certain UDP protocols are blocked in outbound traffic'
TCPReachabilityWarning = 'Certain TCP protocols are blocked in outbound traffic'
ReachabilityUDPOK = 'Basic UDP access is available. '
ReachabilityUDPFailed = '''<BR>We are unable to deliver non-DNS UDP
datagrams to our servers.<BR>Possible reasons include a restrictive
Java security policy, a blocking rule imposed by your firewall
or personal firewall configuration, or filtering performed by your
ISP. Although it means we cannot conduct the latency and bandwidth
tests, it does not necessarily indicate a problem with your network. '''
ReachabilityUDPWrongData = '''UDP datagrams to arbitrary ports
succeed, but do not receive the expected content. '''
# Traceroute
tracerouteV4HopcountProblem = """<p>We could not determine the number of
network hops between our server and your system over IPv4.</p>"""
tracerouteV6HopcountProblem = """<p>We could not determine the number of
network hops between our server and your system over IPv6.</p>"""
tracerouteV4V6HopcountProblem = """We could determine the number of
network hops between our server and your system neither over IPv4 nor
IPv6."""
tracerouteHops = '''<p>It takes %s network hops for traffic to pass
from our server to your system, as shown below. For each hop, the time
it takes to traverse it is shown in parentheses.</p>'''
tracerouteHopsIP = '''%s'''
tracerouteHopsIPLatency = '''%s (%i ms)'''
tracerouteV4Hops = '''<p>It takes %s network hops for traffic to pass
from the same server to your system over IPv4, as shown below. For
each hop, the time it takes to traverse it is shown in
parentheses.</p>'''
tracerouteV4HopsIP = '''%s'''
tracerouteV4HopsIPLatency = '''%s (%i ms)'''
tracerouteV6Hops = '''<p>It takes %s network hops for IPv6 traffic to
pass from our IPv6 server to your system, as shown below. For each
hop, the time it takes to traverse it is shown in parentheses.</p>'''
tracerouteV6HopsIP = '''%s'''
tracerouteV6HopsIPLatency = '''%s (%i ms)'''
# V4 version
pathMTUSend = '''The path between your network and our system supports
an MTU of at least %i bytes,'''
# Article can be "The" or " and the", if this is used as a continuing
# sentence.
pathMTUAndThe = " and the"
pathMTUThe = 'The'
pathMTURecv = '''%(article)s path between our system and your network has an
MTU of %(mtu)i bytes. '''
pathMTUBottleneck = ' The bottleneck is at IP address %s. '
pathMTUBottleneckEnd = '''The path MTU bottleneck that fails to
properly report the ICMP "too big" is between %s and your host. '''
pathMTUBottleneckLink = '''The path MTU bottleneck that fails to
properly report the ICMP "too big" is between %s and %s. '''
pathMTUProblem = '''The path between our system and your network does
not appear to report properly when the sender needs to fragment traffic. '''
pathMTUWarning = '''The network path does not reply when it needs to fragment traffic'''
# V6 version
v6SendAndReceiveFragment = '''Your system can send and receive
fragmented traffic with IPv6. '''
v6SendFragmentOnly = '''Your system can send fragmented traffic, but
can not receive fragmented traffic over IPv6. '''
v6ReceiveFragmentOnly = '''Your system can receive fragmented traffic,
but can not send fragmented traffic over IPv6. '''
v6FragmentProblem = '''Your system can not send or receive fragmented
traffic over IPv6. '''
pathMTUV6Send = '''<BR>The path between your network and our system supports
an MTU of at least %i bytes. '''
pathMTUV6Recv = '''The path between our system and your network has an
MTU of %i bytes. '''
pathMTUV6Bottleneck = ' The bottleneck is at IP address %s. '
pathMTUV6BottleneckEnd = '''<BR>The network failed to properly generate an
ICMP6 "too big" message. The path MTU bottleneck that fails to
properly report the ICMP "too big" is between %s and your host. '''
pathMTUV6BottleneckLink = '''<BR>The network failed to properly generate
an ICMP6 "too big" message. The path MTU bottleneck that fails to
properly report the ICMP "too big" is between %s and %s. '''
pathMTUV6Problem = '''The path between our system and your network does
not appear to handle fragmented IPv6 traffic properly. '''
pathMTUV6Warning = '''The path between our system and your network does
not appear to handle fragmented IPv6 traffic properly'''
pathMTUV6NoICMP = '''<BR>The path between our system and your network appears to block ICMP6 "too big" messages. '''
pathMTUV6NoICMPWarning = '''The path between our system and your network appears to block ICMP6 "too big" messages'''
UDPSendFragmentOK = '''<p>The applet was able to send fragmented UDP traffic.</p>'''
UDPSendFragmentFailed = '''<p>The applet was unable to send
fragmented UDP traffic. The most likely cause is an error in your
network's firewall configuration or NAT.</p>'''
UDPSendMaxFrag = ' The maximum packet successfully sent was %s bytes of payload. '
UDPRecvFragmentOK = '''<p>The applet was able to receive fragmented UDP traffic.</p>'''
UDPRecvFragmentFailed = '''<p>The applet was unable to receive
fragmented UDP traffic. The most likely cause is an error in
your network's firewall configuration or NAT.</p>'''
UDPRecvMaxFrag = ' The maximum packet successfully received was %s bytes of payload. '
FragmentationWarning = '''Fragmented UDP traffic is blocked'''
MTUWarning = '''There appears to be a path MTU hole'''
MTUSendProblem = '''<BR>The applet was unable to send packets of 1471 bytes of payload (1499 bytes total), which suggests a problem on the path between your system and our server. '''
MTUSendLinux = '''<BR>The applet was able to send a packet of 1471
bytes of payload (1499 bytes total) only on the second try, suggesting your host is running Linux (or other path MTU discovery) on UDP traffic. '''
MTURecvProblem = '''<BR>The applet was unable to receive packets of 1471 bytes of payload (1499 bytes total), which suggests a problem on the path between your system and our server. '''
ReachabilityDNSFirewall = \
'''<p>UDP access to remote DNS servers (port 53) appears to pass
through a firewall or proxy. The applet was unable to transmit an
arbitrary request on this UDP port, but was able to transmit a
legitimate DNS request, suggesting that a proxy, NAT, or firewall
intercepted and blocked the deliberately invalid request.</p>'''
ReachabilityDNSNewID = \
'''<p>A DNS proxy or firewall generated a new request rather than
passing the applet's request unmodified.</p>'''
ReachabilityDNSNewIP = \
'''<p>A DNS proxy or firewall caused the applet's direct DNS request
to be sent from another address. Instead of your IP address, the
request came from %s.</p>'''
ReachabilityDNSWarning = \
'''The network blocks some or all special DNS types in replies'''
DNSNatWarning = "The NAT's DNS proxy doesn't fully implement the DNS standard"
ReachabilityDNSOK = \
'''All tested DNS types were received OK'''
ReachabilityDNSProblem = \
'''Some or all specialized DNS types checked are blocked by the
network. The following tested queries were
blocked: <UL>'''
ReachabilityDNSProblemEnd = '</UL>'
ReachabilityDNSProblemEDNS = '<LI>EDNS0 (DNS extensions)</LI>'
ReachabilityDNSProblemAAAA = '<LI>AAAA (IPv6 related) records</LI>'
ReachabilityDNSProblemTXT = '<LI>TXT (text) records</LI>'
ReachabilityDNSProblemICSI = '<LI>RTYPE=169 (deliberately unknown) records</LI>'
DNSNatProblem = \
'''<BR>Some or all specialized DNS types checked are not properly
interpreted by the NAT's DNS proxy. The following tested queries were
blocked/failed: <UL>'''
DNSNatProblemEnd = '</UL>'
ReachabilityDNSNotExecuted = '''The network you are on blocks direct access to remote DNS servers. '''
ReachabilityEDNSWarning = \
'''The network blocks some or all EDNS replies'''
ReachabilityDNSLarge = \
'''EDNS-enabled requests for large responses are answered
successfully. '''
ReachabilityDNSLargeBlocked = \
'''EDNS-enabled requests for large responses remain unanswered. This
suggests that a proxy or firewall is unable to handle large extended
DNS requests or fragmented UDP traffic. '''
ReachabilityDNSMedium = \
'''EDNS-enabled requests for medium-sized responses are answered successfully. '''
ReachabilityDNSMediumBlocked = \
'''EDNS-enabled requests for medium-sized responses remain unanswered.
This suggests that a proxy or firewall is unable to handle extended
DNS requests or DNS requests larger than 512 bytes. '''
ReachabilityDNSSmall = \
'''EDNS-enabled requests for small responses are answered
successfully. '''
ReachabilityDNSSmallBlocked = \
'''EDNS-enabled requests for small responses remain unanswered. This
suggests that a proxy or firewall is unable to handle extended DNS
requests. '''
ReachabilityDNSUDPOK = 'Direct UDP access to remote DNS servers (port 53) is allowed. '
ReachabilityDNSUDPFailed = '''<p>Direct UDP access to remote DNS servers
(port 53) is blocked.</p> <p>The network you are using appears to enforce
the use of a local DNS resolver.</p>'''
ReachabilityDNSUDPWrongData = '''Direct UDP connections to remote DNS
servers (port 53) succeed, but do not receive the expected content. '''
ReachabilityDNSTCPOK = 'Direct TCP access to remote DNS servers (port 53) is allowed. '
ReachabilityDNSTCPFailed = '''<p>Direct TCP access to remote DNS servers
(port 53) is blocked.</p> <p>The network you are using appears to enforce
the use of a local DNS resolver.</p>'''
ReachabilityDNSTCPWrongData = '''Direct TCP connections to remote DNS
servers (port 53) succeed, but do not receive the expected content. '''
natDNSProxy = '''Your NAT has a built-in DNS proxy. '''
natDNSNoProxy = '''We were unable to detect a DNS proxy associated with your NAT. '''
natDNS2Wire = '''You appear to be using a NAT/gateway manufactured by 2Wire. '''
ReachabilityInvalidReply = 'The applet received the following reply instead of our expected header: '
# Generic phrasing for those protocols that don't require special
# commenting. No named substitution for now since code change would
# be fairly substantial. :( --cpk
ReachabilityTCPServiceOK = '''Direct TCP access to remote %s servers (port %s)
is allowed. '''
ReachabilityTCPServiceFailed = '''Direct TCP access to remote %s servers (port
%s) is blocked. '''
ReachabilityServiceV6OK = '''<p>This service is reachable using IPv6.</p>'''
ReachabilityServiceV6Failed = '''<p>This service is blocked when using IPv6.</p>'''
ReachabilityServiceV6Proxied = '''<p>This service is proxied when accessed using using IPv6.</p>'''
ReachabilityServiceV6ProxiedData = '''<BR>An unexpected response was
received using IPv6. Instead of our expected data, the applet
received "%s". '''
ReachabilityHTTPFailed = '''<p>Direct TCP access to remote HTTP
servers (port 80) is blocked.</p> <p>This network appears to enforce
the use of a mandatory HTTP proxy.</p>'''
ReachabilityHTTPFailedNote = '''Direct TCP access to remote HTTP
servers appears to be blocked, as the applet was not able to make a
direct request to our server. Thus this network appears to enforce
the use of a mandatory HTTP proxy configured in the web browser. As a
result, the low level HTTP tests, which search for the effects of
otherwise unadvertised proxies in the network, rather than proxies
configured in the browser, are not executed. '''
ReachabilityUDPServiceOK = """Direct UDP access to remote %s servers
(port %s) is allowed."""
ReachabilityUDPServiceFailed = """Direct UDP access to remote %s
servers (port %s) is blocked."""
ReachabilityUDPServiceWrongData = """Direct UDP flows to remote %s
servers (port %s) succeed, but do not receive the expected content."""
ReachabilitySlammerFailed = '''<p>Direct UDP access to remote MSSQL
servers (port 1434) is blocked.</p><p>
This is most likely due to a filtering rule against the Slammer worm.</p>'''
ReachabilityTCPServiceFailedLocal = '''<p>Direct TCP access to remote
%s servers (port %s) is blocked.</p><p>This is probably for security
reasons, as this protocol is generally not designed for use outside
the local network.</p>'''
ReachabilityTCPServiceWrongData = '''Direct TCP connections to remote %s
servers (port %s) succeed, but do not receive the expected content. '''
ReachabilityFTPServiceWrongData = '''<p>Direct TCP connections to remote
%s servers (port %s) succeed, but do not receive the expected
content.</p>
<p>This is most likely due to the way a NAT or firewall handles
FTP traffic, as FTP causes unique problems when developing NATs and
firewalls. This is most likely benign.</p>'''
ReachabilityFTPServiceFailed = '''<p>Direct TCP connections to remote
%s servers (port %s) failed.</p>
<p>This is commonly due to how a NAT or firewall handles
FTP traffic, as FTP causes unique problems when developing NATs and
firewalls.</p>'''
TerminatedConnection = '''
<p>The applet received an empty response instead of our normal
banner. This suggests that a firewall, proxy, or filter initially
allowed the connection and then terminated it, either because it did
not understand our server's reply or decided to block the service.
</p>'''
ReachabilityDifferentPath = '''<p>The connection succeeded but came from
a different IP address than we expected. Instead of the expected IP
address, we received this request from %s.</p>'''
ReachabilitySMTPOK = 'Direct TCP access to remote SMTP servers (port 25) is allowed. '
ReachabilitySMTPFailed = '''<p>Direct TCP access to remote SMTP servers
(port 25) is prohibited.</p> <p>This means you cannot send email via SMTP
to arbitrary mail servers. Such blocking is a common countermeasure
against malware abusing infected machines for generating spam. Your
ISP likely provides a specific mail server that is permitted. Also,
webmail services remain unaffected.</p>'''
ReachabilitySMTPWrongData = '''<p>Direct TCP access to remote SMTP
servers (port 25) succeeds, but does not return the expected content.
</p> <p>This suggests that your network enforces a mandatory SMTP proxy
which may or may not allow you to send email directly from your
system. This is probably a countermeasure against malware abusing
infected machines for generating spam. You ISP also likely provides a
specific mail server that is permitted. Also, webmail services remain
unaffected.</p>'''
LatencyLoss = 'Latency: %ims Loss: %3.1f%%'
LatencyHeader = '''<p>This test measures the network latency (delay) — the round
trip time (RTT) — measured in milliseconds that it takes a message to go from
your computer to our server and back when there is no other traffic
occurring. The amount of time this takes can depend on a variety of
factors, including the distance between your system and our server
as well as the quality of your Internet connection.</p>'''
LatencyGood = '''The round-trip time (RTT) between your computer and
our server is %i msec, which is good. '''
LatencyFair = '''The round-trip time (RTT) between your computer and
our server is %i msec, which is somewhat high. This may be due to a
variety of factors, including distance between your computer and our
server, a slow network link, or other network traffic. '''
Duplication0 = 'During this test, the applet observed no duplicate packets. '
Duplication1 = 'During this test, the applet observed one duplicate packet. '
DuplicationN = 'During this test, the applet observed %s duplicate packets. '
Reordering0 = 'During this test, the applet observed no reordered packets. '
Reordering1 = 'During this test, the applet observed one reordered packet. '
ReorderingN = 'During this test, the applet observed %s reordered packets. '
BackgroundHealthNoTransients = 'no transient outages'
BackgroundHealthStatus = '%i transient outages, longest: %2.1f seconds'
BurstHeader = '''During most of Netalyzr's execution, the applet
continuously measures the state of the network in the background,
looking for short outages. '''
BurstNone = ''' During testing, the applet observed no such outages. '''
BurstBad = ''' During testing, the applet observed %(count)i such outages.
The longest outage lasted for %(length)2.1f seconds. This suggests a general
problem with the network where connectivity is intermittent. This
loss might also cause some of Netalyzr's other tests to produce
incorrect results. '''
TCPLatencyGood = '''The time it takes your computer to set up a TCP
connection with our server is %i msec, which is good. '''
TCPLatencyFair = '''The time it takes your computer to set up a TCP
connection with our server is %i msec, which is somewhat high. This
may be due to a variety of factors, including distance between your
computer and our server, a slow network link, or other network
traffic. '''
TCPLatencyMismatch = '''Setting up a TCP connection to a previously
uncontacted port takes %(first)i msec, while subsequent connections are
established in %(next)i msec. This discrepancy could be due to a transient
network failure or a host-based firewall that prompts users to
authorize new connections generated by the applet. '''
# In the aberrations, even poor latency/loss will just be classed as a
# minor to moderate abnormality.
LatencyNotMeasuredWarning = '''Network latency could not be measured'''
LatencyWarning = '''The measured network latency was somewhat high'''
TCPLatencyWarning = '''The measured time to set up a TCP connection was somewhat high'''
LossWarning = '''The measured packet loss was somewhat high'''
BurstWarning = '''The network measured bursts of packet loss'''
LatencyLossWarning = '''The measured network latency and packet loss
were somewhat high'''
LatencyNotMeasured = '''We were unable to measure your network latency,
because no measurement packets could be transmitted. '''
LatencyPoor = '''The round-trip time (RTT) between your computer and
our server is %i msec, which is quite high. This may be due to a
variety of factors, including a significant distance between your
computer and our server, a particularly slow or poor network link, or
problems in your network. '''
TCPLatencyPoor = '''The time it takes for your computer to set up a
TCP connection with our server is %i msec, which is quite high. This
may be due to a variety of factors, including a significant distance
between your computer and our server, a particularly slow or poor
network link, or problems in your network. '''
LossHeader = '''<p>At the same time, we also measure "packet loss",
the number of packets that are sent but not received. Packet loss
may be due to many factors, ranging from poor connectivity (e.g., at
a wireless access point), internal network trouble (stress or
misconfiguration), or significant load on our server.</p>'''
LossPerfect = 'We recorded no packet loss between your system and our server. '
LossGood = '''<P>We recorded a packet loss of %2.1f%%. This loss rate is
within the range commonly encountered and not usually inducing significant
performance problems. '''
### It would be good to diagnose loss due to server load, which seems
# we can try to do by having the server report to the client just how
# many requests/sec or whatever it's currently dealing with. - VP
# Hmm, good idea. -NW
LossFair = '''We recorded a packet loss of %2.1f%%.
This loss rate can result in noticeable performance problems. It could
be due either to
significant load on our servers due to a large number of visitors, or
problems with your network. '''
LossPoor = '''We recorded a packet loss of %2.0f%%.
This loss is very significant and will lead to serious performance
problems. It could be due either to very high
load on our servers due to a large number of visitors, or problems in
your network. '''
LossServer = ''' Of the packet loss, at least %2.1f%% of the packets
appear to have been lost on the path from your computer to our
servers. '''
LossNoServer = ''' All the packet loss appears to have occurred on the
path from our server to your computer. '''
# E.g. ">10 Mbps"
MaxBandwidthString = ">%(num)s %(unit)s"
BandwidthUplink = 'Uplink'
Bandwidthuplink = 'uplink'
BandwidthDownlink = 'Downlink'
Bandwidthdownlink = 'downlink'
BandwidthSending = 'sending'
BandwidthReceiving = 'receiving'
BandwidthWarning = '''Network bandwidth may be low'''
BandwidthNoRecvWarning = '''None of the server's bandwidth measurement
packets arrived at the client'''
BandwidthHeader = '''This test measures network transmission speed
("bandwidth") by sending and receiving a large number of packets. '''
BandwidthNoRecv = '''None of the bandwidth measurement packets sent
between the server and client arrived at the client, which prevented
us from measuring the available bandwidth. One possible reason for
this is dynamic filtering by access gateway devices. Another
possibility is simply a transient error. '''
BandwidthNoRecvTest = '''None of the bandwidth measurement packets
sent between the server and client arrived at the client when testing
the %s, which prevented us from measuring the available bandwidth. One
possible reason for this is dynamic filtering by access gateway
devices. Another possibility is simply a transient error. '''
# Example: dir="Uplink", dir2="uplink", operation="sending",
# bw="1Mbps".
BandwidthGood = '''Your %(dir)s: We measured your %(dir2)s's
%(operation)s bandwidth at %(bw)s. This level of bandwidth works well
for many users. '''
BandwidthFair = '''Your %(dir)s: We measured your %(dir2)s's
%(operation)s bandwidth at %(bw)s. This rate could be considered
somewhat slow, and may affect your user experience if you perform
large transfers. '''
BandwidthPoor = '''Your %(dir)s: We measured your %(dir2)s's
%(operation)s bandwidth at %(bw)s. This rate could be considered
quite slow, and will affect your user experience if you perform large
transfers. '''
BufferUplinkMS = 'Uplink %i ms'
BufferUplinkGood = 'Uplink is good'
BufferDownlinkMS = 'Downlink %i ms'
BufferDownlinkGood = 'Downlink is good'
BufferUploads = 'uploads'
BufferDownloads = 'downloads'
BufferUploading = 'uploading'
BufferDownloading = 'downloading'
BufferWarning = '''Network packet buffering may be excessive'''
BufferHeader = '''<P>One little considered but important part of
your network experience is the amount of buffering in your network. When
you conduct a full-rate download or upload, the associated network
buffer can become full, which affects the responsiveness of your
other traffic.</P>'''
BufferNoRecv = '''None of the buffer measurement packets sent by
the server arrived at the client, which prevented us from measuring the
available buffer size. One possible reason for this is dynamic filtering
by access gateway devices. '''
BufferUnableToMeasure = '''We were not able to produce enough traffic
to load the %(dir)s buffer, or the %(dir)s buffer is particularly
small. You probably have excellent behavior when %(op)s files and
attempting to do other tasks. '''
BufferGood = '''We estimate your %(dir)s as having %(rtt).0f msec of buffering.
This level may serve well for maximizing speed while minimizing the
impact of large transfers on other traffic. '''
# Example: dir="downlink", rtt="10ms", trans="downloads"
BufferFair = '''We estimate your %(dir)s as having %(rtt).0f msec of buffering.
This level can in some situations prove somewhat
high, and you may experience degraded performance when performing
interactive tasks such as web-surfing while simultaneously conducting
large %(trans)s. Real-time applications, such as games or audio chat, may
also work poorly when conducting large %(trans)s at the same time. '''
BufferPoor = '''We estimate your %(dir)s as having %(rtt).0f msec of buffering.
This is quite high, and you may experience
substantial disruption to your network performance when performing
interactive tasks such as web-surfing while simultaneously conducting
large %(trans)s. With such a buffer, real-time applications such as games or
audio chat can work quite poorly when conducting large %(trans)s at the same time. '''
### VP: this is where I currently am
DNSRestrictedWrongName = '''The name returned by your DNS server
for this system DOES NOT MATCH this server\'s IP address. Thus, the
DNS server you are using is returning wrong results. '''
DNSRestrictedGood = '''We can successfully look up a name which
resolves to the same IP address as our webserver. This means we are
able to conduct many of the tests on your DNS server. '''
DNSRestrictedFailed = \
'''Restricted DNS lookup test failed to complete. '''
DNSUnrestrictedGood = \
'''We can successfully look up arbitrary names from within the
Java applet. This means we are able to conduct all test on your DNS
server. '''
DNSUnrestrictedProhibited = \
'''Due to your current Java security parameters, we are not able to
look up arbitrary names from within the Java applet. This prevents
us from conducting all the checks on your DNS server. '''
DNSUnrestrictedFailed = \
'''Unable to lookup a name not associated with our server. '''
AddressProxyWarning = '''An HTTP proxy was detected based on address difference'''
HeaderProxyWarning = '''An HTTP proxy was detected based on added or changed HTTP traffic'''
HeaderProxyCertProblem = '''An HTTP proxy was detected which may be vulnerable to attack. '''
MalformedProxyWarning = '''The detected HTTP proxy blocks malformed HTTP requests'''
TransparentCacheBad = '''A detected in-network HTTP cache incorrectly caches information'''
TransparentCacheWarning = '''A detected in-network HTTP cache exists in your network'''
AddressProxyMalformed = '''The URL used for this test was malformed. '''
AddressProxyNone = '''There is no explicit sign of HTTP proxy use based on IP address. '''
AddressProxyFound = '''Your HTTP connections come from %(proxy)s%(detail)s while
non-HTTP connections originate from %(ip)s, indicating that your HTTP
traffic is passing through a proxy. '''
AddressProxyManual = '''Your browser's HTTP connections come from %(proxy)s%(detail)s while
non-browser HTTP connections originate from %(ip)s, indicating that your web browser
has a proxy manually configured. '''
AddressProxyManualAdditional = '''Furthermore, your global IP address for
non-HTTP traffic is %s, which means that your HTTP traffic goes through an
additional proxy besides the one you configured'''
HeaderProxyNone = '''No HTTP header or content changes hint at the presence of a proxy. '''
HeaderProxyAddrOnly = \
"""The HTTP proxy did not modify any headers or content."""
HeaderProxyVia = '''<P>A "Via" header of the HTTP response showed the
presence of an HTTP proxy. We identified it at %(host)s, port
%(port)s.</P>'''
HeaderProxyXcache = '''<P>An "X-Cache-Lookup" header in the HTTP
response showed the presence of an HTTP proxy. We identified it at
%(host)s, port %(port)s.</P>'''
HeaderProxyChanges = '''<P>Changes to headers or contents sent between
the applet and our HTTP server show the presence of an otherwise
unadvertised HTTP proxy.</P>'''
HeaderProxyAddedRequest = '''<P>The following headers were added by
the proxy:</P>'''
HeaderProxyRemoved = '''<P>The following headers were removed by the proxy:</P>'''
HeaderProxyReordered = '''<P>The detected proxy reordered the headers
sent from the server.</P>'''
HeaderProxyChanged = '''<P>The following headers had their
capitalization modified by the proxy:</P>'''
HeaderCookieRemoved = '''<P>The HTTP proxy removed the cookie from the
connection.</P>'''
HeaderCookieChanged = '''<P>The HTTP proxy added or changed the cookie
we set. We received "%s", when we expected "netAlizEd=BaR".</P>'''
JSCookieChanged = '''<P>The HTTP proxy added an additional tracking
cookie which we were able to observe in JavaScript running on our test
page. We observed the following additional cookies:</P>'''
HeaderProxyAddedResponse = '''<P>The following headers were added by
the proxy to HTTP responses:</P>'''
MalformedTestOK = '''Deliberately malformed HTTP requests arrive at our server
unchanged. We are not able to detect a proxy along the path to our
server using this method. '''
MalformedTestProxyOK = \
'''Deliberately malformed HTTP requests arrive at our server unchanged.
Thus, the proxies along your path are able to transparently forward
invalid HTTP traffic. '''
MalformedTestBad = \
'''Deliberately malformed HTTP requests do not arrive at our server.
This suggests that an otherwise undetected proxy exists along the
network path. This proxy was either unable to parse or refused to
forward the deliberately bad request. '''
MalformedTestProxyBad = \
'''Deliberately malformed HTTP requests do not arrive at our server.
This suggests that the proxy we detected on your network path was
either unable to parse or refused to forward the deliberately bad
request. '''
ProxyCert = \
'''<P>The detected HTTP proxy may cause your traffic to be vulnerable
to CERT <A HREF="http://www.kb.cert.org/vuls/id/435052">Vulnerability
Note 435052</A>. An attacker might be able to use this vulnerability
to attack your web browser.</P>'''
ProxyTranscodes = \
'''<P>The detected HTTP proxy changed images that were sent from our server.</P>'''
ProxyChanges = \
'''<P>The detected HTTP proxy changed either the headers the applet sent or the HTTP response from the server. We have captured the changes for further analysis.</P>'''
CacheSU = 'Strongly uncacheable'
CacheWU = 'Weakly uncacheable'