Web100 Network Diagnostic Tool (NDT) Java Applet

Version 3.7.0.2 (May 20, 2015)
From: https://github.com/ndt-project/ndt/releases
Unmodified, as baseline for future merges.
Will not compile, changes adapted from BiglyBT to follow.
Copyright 2003 University of Chicago.
3-clause license with requirement that:
  Modified copies and works based on the Software must carry prominent
  notices stating that you changed specified portions of the Software.
See LICENSE.txt and licenses/LICENSE-NDT.txt
This commit is contained in:
zzz
2018-11-13 16:58:05 +00:00
parent e326011a93
commit 6f7881c7ea
22 changed files with 7936 additions and 3 deletions

View File

@ -274,9 +274,10 @@ Applications:
Some images licensed under a Creative Commons 2.0 license.
Silk icons: See licenses/LICENSE-SilkIcons.txt
I2PSnark light theme:
"Creative Commons Cat" licensed under a Creative Commons Attribution 3.0 Unported License.
Original photo by Boaz Arad. http://www.luxphile.com/2011/01/creative-commons-cat.html
Router Console NDT subsystem:
Copyright (c) 2003 University of Chicago. All rights reserved.
See licenses/LICENSE-NDT.txt
Notice: I2P has changed specified portions of the Software, including the package edu.internet2.ndt.
SAM (sam.jar):
Public domain.

View File

@ -0,0 +1,69 @@
package edu.internet2.ndt;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;
import java.util.Iterator;
import java.util.Map;
/**
* Created by Sebastian Malecki on 13.05.14.
*/
public class JSONUtils {
/**
* Function that return value from json object represented by jsontext containing a single message
* which is assigned to "msg" key.
* @param {String} JSON object
* @return {int} obtained value from JSON object
*/
public static String getSingleMessage(String jsonTxt) {
return getValueFromJsonObj(jsonTxt, "msg");
}
/**
* Function that return value for given key from json object represented by jsontext
* @param {String} JSON object
* @param {int} key by which value should be obtained from JSON map
* @return {int} obtained value from JSON map
*/
public static String getValueFromJsonObj(String jsonTxt, String key) {
JSONValue jsonParser = new JSONValue();
Map json = (Map)jsonParser.parse(new String(jsonTxt));
Iterator iter = json.entrySet().iterator();
while(iter.hasNext()){
Map.Entry entry = (Map.Entry)iter.next();
if (entry.getKey().equals(key)) {
return entry.getValue().toString();
}
}
return null;
}
/**
* Function that add new value to JSON map
* @param {String} JSON object
* @param {String} key by which value should be assigned to JSON map
* @param {String} value for given key
* @return {String} json object with added value.
*/
public static String addValueToJsonObj(String jsonTxt, String key, String value) {
JSONValue jsonParser = new JSONValue();
JSONObject json = (JSONObject)jsonParser.parse(new String(jsonTxt));
json.put(key, value);
return json.toJSONString();
}
/**
* Function that return json object represented by jsontext and included
* single message assigned to "msg" key
* @param {byte[]} message which should be assigned to json object
* @return {byte[]} json object represented by jsontext and encodes into a sequence of bytes
*/
public static byte[] createJsonObj(byte[] msg) {
JSONObject obj = new JSONObject();
obj.put("msg", new String(msg));
return obj.toJSONString().getBytes();
}
}

View File

@ -0,0 +1,96 @@
package edu.internet2.ndt;
/**
* Class to define Message. Messages are composed of a "type" and a body. Some
* examples of message types are : COMM_FAILURE, SRV_QUEUE, MSG_LOGIN,
* TEST_PREPARE. Messages are defined to have a "length" field too. Currently, 2
* bytes of the message "body" byte array are often used to store length (For
* example, second/third array positions)
*
* <p>
* TODO for a later release: It may be worthwhile exploring whether MessageTypes
* could be merged here instead of being located in NDTConstants. Message/Type
* could also be made into an enumeration and checks for the current MessageType
* being assigned could be incorporated.
*
* @see MessageType for more Message Types.
*
*/
public class Message {
// TODO: Could make these private and test changes in Protocol class. For
// later release
byte _yType;
byte[] _yaBody;
/**
* Get Message Type
*
* @return byte indicating Message Type
* */
public byte getType() {
return _yType;
}
/**
* Set Message Type
*
* @param bParamType
* byte indicating Message Type
* */
public void setType(byte bParamType) {
this._yType = bParamType;
}
/**
* Get Message body as array
*
* @return byte array message body
* */
public byte[] getBody() {
return _yaBody;
}
/**
* Set Message body, given a byte array input
*
* @param baParamBody
* message body byte array
*
* */
public void setBody(byte[] baParamBody) {
int iParamSize = 0;
if (baParamBody != null) {
iParamSize = baParamBody.length;
}
_yaBody = new byte[iParamSize];
System.arraycopy(baParamBody, 0, _yaBody, 0, iParamSize);
}
/**
* Set Message body, given a byte array and a size parameter. This may be
* useful if user wants to initialize the message, and then continue to
* populate it later. This method is unused currently.
*
* @param iParamSize
* byte array size
* @param baParamBody
* message body byte array
*
* */
public void setBody(byte[] baParamBody, int iParamSize) {
_yaBody = new byte[iParamSize];
System.arraycopy(baParamBody, 0, _yaBody, 0, iParamSize);
}
/**
* Utility method to initialize Message body
*
* @param iParamSize
* byte array size
*
* */
public void initBodySize(int iParamSize) {
this._yaBody = new byte[iParamSize];
}
}

View File

@ -0,0 +1,21 @@
package edu.internet2.ndt;
/* Class to define the NDTP control message types
* */
public class MessageType {
public static final byte COMM_FAILURE = 0;
public static final byte SRV_QUEUE = 1;
public static final byte MSG_LOGIN = 2;
public static final byte TEST_PREPARE = 3;
public static final byte TEST_START = 4;
public static final byte TEST_MSG = 5;
public static final byte TEST_FINALIZE = 6;
public static final byte MSG_ERROR = 7;
public static final byte MSG_RESULTS = 8;
public static final byte MSG_LOGOUT = 9;
public static final byte MSG_WAITING = 10;
public static final byte MSG_EXTENDED_LOGIN = 11;
}

View File

@ -0,0 +1,232 @@
package edu.internet2.ndt;
import java.util.Locale;
import java.util.ResourceBundle;
import javax.swing.JOptionPane;
/**
*
* Class to hold constants. These constants include both Protocol related
* constants and non-protocol related ones which are used by the software. The
* different sections of constants are listed under appropriate "sections".
*
*/
public class NDTConstants {
// Section: System variables
// used by the META tests
public static final String META_CLIENT_OS = "client.os.name";
public static final String META_BROWSER_OS = "client.browser.name";
public static final String META_CLIENT_KERNEL_VERSION = "client.kernel.version";
public static final String META_CLIENT_VERSION = "client.version";
public static final String META_CLIENT_APPLICATION = "client.application";
// Section: NDT Variables sent by server
public static final String AVGRTT = "avgrtt";
public static final String CURRWINRCVD = "CurRwinRcvd";
public static final String MAXRWINRCVD = "MaxRwinRcvd";
public static final String LOSS = "loss";
public static final String MINRTT = "MinRTT";
public static final String MAXRTT = "MaxRTT";
public static final String WAITSEC = "waitsec";
public static final String CURRTO = "CurRTO";
public static final String SACKSRCVD = "SACKsRcvd";
public static final String MISMATCH = "mismatch";
public static final String BAD_CABLE = "bad_cable";
public static final String CONGESTION = "congestion";
public static final String CWNDTIME = "cwndtime";
public static final String RWINTIME = "rwintime";
public static final String OPTRCVRBUFF = "optimalRcvrBuffer";
public static final String ACCESS_TECH = "accessTech";
public static final String DUPACKSIN = "DupAcksIn";
/*
* TODO for a later release: Version could be moved to some "configurable"
* or "property" area instead of being in code that needs compilation.
*/
public static final String VERSION = "3.7.0";
public static final String NDT_TITLE_STR = "Network Diagnostic Tool Client v";
// Section: Test type
public static final byte TEST_MID = (1 << 0);
public static final byte TEST_C2S = (1 << 1);
public static final byte TEST_S2C = (1 << 2);
public static final byte TEST_SFW = (1 << 3);
public static final byte TEST_STATUS = (1 << 4);
public static final byte TEST_META = (1 << 5);
// Section: Firewall test status
public static final int SFW_NOTTESTED = 0;
public static final int SFW_NOFIREWALL = 1;
public static final int SFW_UNKNOWN = 2;
public static final int SFW_POSSIBLE = 3;
public static final double VIEW_DIFF = 0.1;
public static final String TARGET1 = "U";
public static final String TARGET2 = "H";
// NDT pre-fixed port ID
public static final int CONTROL_PORT_DEFAULT = 3001;
// Section: SRV-QUEUE message status constants
public static final int SRV_QUEUE_TEST_STARTS_NOW = 0;
public static final int SRV_QUEUE_SERVER_FAULT = 9977;
public static final int SRV_QUEUE_SERVER_BUSY = 9988;
public static final int SRV_QUEUE_HEARTBEAT = 9990;
public static final int SRV_QUEUE_SERVER_BUSY_60s = 9999;
// Section: Middlebox test related constants
public static final int MIDDLEBOX_PREDEFINED_MSS = 8192;// 8k buffer size
public static final int ETHERNET_MTU_SIZE = 1456;
// Section: SFW test related constants
public static final String SFW_PREDEFINED_TEST_MESSAGE = "Simple firewall test";
private static ResourceBundle _rscBundleMessages;
public static final String TCPBW100_MSGS = "edu.internet2.ndt.locale.Tcpbw100_msgs";
public static final int PREDEFINED_BUFFER_SIZE = 8192; // 8k buffer size
// Section: Data rate indicator integers
public static final int DATA_RATE_INSUFFICIENT_DATA = -2;
public static final int DATA_RATE_SYSTEM_FAULT = -1;
public static final int DATA_RATE_RTT = 0;
public static final int DATA_RATE_DIAL_UP = 1;
public static final int DATA_RATE_T1 = 2;
public static final int DATA_RATE_ETHERNET = 3;
public static final int DATA_RATE_T3 = 4;
public static final int DATA_RATE_FAST_ETHERNET = 5;
public static final int DATA_RATE_OC_12 = 6;
public static final int DATA_RATE_GIGABIT_ETHERNET = 7;
public static final int DATA_RATE_OC_48 = 8;
public static final int DATA_RATE_10G_ETHERNET = 9;
// public static final int DATA_RATE_RETRANSMISSIONS = 10;
// Section: Data rate indicator strings
public static final String T1_STR = "T1";
public static final String T3_STR = "T3";
public static final String ETHERNET_STR = "Ethernet";
public static final String FAST_ETHERNET = "FastE";
public static final String OC_12_STR = "OC-12";
public static final String GIGABIT_ETHERNET_STR = "GigE";
public static final String OC_48_STR = "OC-48";
public static final String TENGIGABIT_ETHERNET_STR = "10 Gig";
public static final String SYSTEM_FAULT_STR = "systemFault";
public static final String DIALUP_STR = "dialup2"; // unused, commenting out
// for now
public static final String RTT_STR = "rtt"; // round trip time
// Section: RFC 1323 options ( Seems like 0/1/2/3 are the options available)
public static final int RFC_1323_DISABLED = 0;
public static final int RFC_1323_ENABLED = 1;
// Note Self disabled from servers standpoint i.e. disabled by server
public static final int RFC_1323_SELF_DISABLED = 2;
public static final int RFC_1323_PEER_DISABLED = 3;
// Section: RFC2018 SAck
public static final int RFC_2018_ENABLED = 1;
// Section: RFC2018 Nagle
public static final int RFC_896_ENABLED = 1;
// Section: RFC3168
public static final int RFC_3168_ENABLED = 1;
// Note Self disabled from servers standpoint i.e. disabled by server
public static final int RFC_3168_SELF_DISABLED = 2;
public static final int RFC_3168_PEER_DISABLED = 3;
// Section: Buffer limitation test thresholds
public static final float BUFFER_LIMITED = 0.15f; //unused right now
// Section: TCP constants
public static final int TCP_MAX_RECV_WIN_SIZE = 65535;
// Section: Data units
public static final int KILO = 1000; // Used in conversions from seconds->mS,
public static final int KILO_BITS = 1024;// Used in kilobits->bits conversions
public static final double EIGHT = 8.0; // Used in octal number, conversions from Bytes-> bits etc
// EIGHT is a double to minimize overflow when converting.
// Section: Duplex mismatch conditions
public static final int DUPLEX_OK_INDICATOR = 0;
public static final int DUPLEX_NOK_INDICATOR = 1;
public static final int DUPLEX_SWITCH_FULL_HOST_HALF = 2;
public static final int DUPLEX_SWITCH_HALF_HOST_FULL = 3;
public static final int DUPLEX_SWITCH_FULL_HOST_HALF_POSS = 4;
public static final int DUPLEX_SWITCH_HALF_HOST_FULL_POSS = 5;
public static final int DUPLEX_SWITCH_HALF_HOST_FULL_WARN = 7;
// Section: cable status indicators
public static final int CABLE_STATUS_OK = 0;
public static final int CABLE_STATUS_BAD = 1;
// Section: Congestion status
public static final int CONGESTION_NONE = 0;
public static final int CONGESTION_FOUND = 1;
// Section: miscellaneous
public static final int SOCKET_FREE_PORT_INDICATOR = 0;
public static final String LOOPBACK_ADDRS_STRING = "127.0.0.1";
public static final int PERCENTAGE = 100;
// constant to indicate protocol read success
public static final int PROTOCOL_MSG_READ_SUCCESS = 0;
// system variables could be declared as strings too
// half_duplex:, country , etc.
/**
* Initializes a few constants
*
* @param paramLocale
* local Locale object
* */
public static void initConstants(Locale paramLocale) {
try {
_rscBundleMessages = ResourceBundle.getBundle(TCPBW100_MSGS,
paramLocale);
System.out.println("Obtained messages ");
} catch (Exception e) {
JOptionPane.showMessageDialog(null,
"Error while loading language files:\n" + e.getMessage());
e.printStackTrace();
}
} // end method
/**
* Initializes a few constants
*
* @param paramStrLang
* local Language String
* @param paramStrCountry
* local country String
* */
public static void initConstants(String paramStrLang, String paramStrCountry) {
try {
Locale locale = new Locale(paramStrLang, paramStrCountry);
_rscBundleMessages = ResourceBundle.getBundle(TCPBW100_MSGS,
locale);
} catch (Exception e) {
JOptionPane.showMessageDialog(null,
"Error while loading language files:\n" + e.getMessage());
e.printStackTrace();
}
}// end method initconstants
/**
* Getter method for to fetch from resourceBundle
*
* @param paramStrName
* name of parameter to be fetched
* @return Value of parameter input
*/
public static String getMessageString(String paramStrName) {
return _rscBundleMessages.getString(paramStrName);
}
}

View File

@ -0,0 +1,150 @@
package edu.internet2.ndt;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ResourceBundle;
/**
* Class that defines utility methods used by the NDT code
*/
public class NDTUtils {
/**
* Utility method to print double value up to the hundredth place.
*
* @param paramDblToFormat
* Double numbers to format
* @return String value of double number
*/
public static String prtdbl(double paramDblToFormat) {
String str = null;
int i;
if (paramDblToFormat == 0) {
return ("0");
}
str = Double.toString(paramDblToFormat);
i = str.indexOf(".");
i = i + 3;
if (i > str.length()) {
i = i - 1;
}
if (i > str.length()) {
i = i - 1;
}
return (str.substring(0, i));
} // prtdbl() method ends
/**
* Utility method to print Text values for data speed related keys.
*
* @param paramIntVal
* integer parameter for which we find text value
* @return String Textual name for input parameter
*/
public static String prttxt(int paramIntVal, ResourceBundle paramResBundObj) {
String strNameTxt = null;
switch (paramIntVal) {
case (NDTConstants.DATA_RATE_SYSTEM_FAULT):
strNameTxt = paramResBundObj
.getString(NDTConstants.SYSTEM_FAULT_STR);
break;
case NDTConstants.DATA_RATE_RTT:
strNameTxt = paramResBundObj.getString(NDTConstants.RTT_STR);
break;
case NDTConstants.DATA_RATE_DIAL_UP:
strNameTxt = paramResBundObj.getString(NDTConstants.DIALUP_STR);
break;
case NDTConstants.DATA_RATE_T1:
strNameTxt = NDTConstants.T1_STR;
break;
case NDTConstants.DATA_RATE_ETHERNET:
strNameTxt = NDTConstants.ETHERNET_STR;
break;
case NDTConstants.DATA_RATE_T3:
strNameTxt = NDTConstants.T3_STR;
break;
case NDTConstants.DATA_RATE_FAST_ETHERNET:
strNameTxt = NDTConstants.FAST_ETHERNET;
break;
case NDTConstants.DATA_RATE_OC_12:
strNameTxt = NDTConstants.OC_12_STR;
break;
case NDTConstants.DATA_RATE_GIGABIT_ETHERNET:
strNameTxt = NDTConstants.GIGABIT_ETHERNET_STR;
break;
case NDTConstants.DATA_RATE_OC_48:
strNameTxt = NDTConstants.OC_48_STR;
break;
case NDTConstants.DATA_RATE_10G_ETHERNET:
strNameTxt = NDTConstants.TENGIGABIT_ETHERNET_STR;
break;
} // end switch
return (strNameTxt);
} // prttxt() method ends
/**
* Utility method to check if the given string is empty ("") or null.
*
* @param str
* String to check
* @return true is the given string is empty; otherwise false
*/
public static boolean isEmpty(String str) {
return str == null || str.length() == 0;
} // isEmpty() method ends
/**
* Utility method to check if the given string is not empty ("") or null.
*
* @param str
* String to check
* @return true is the given string is not empty; otherwise false
*/
public static boolean isNotEmpty(String str) {
return !isEmpty(str);
} // isNotEmpty() method ends
/**
* Utility method to create mailTo link
*
* @param name
* user identifier
* @param host
* fully qualified domain name
* @param subject
* email subject
* @param body
* email body
* @return created mailTo link with the encoded parameters
*/
public static String mailTo(final String name, final String host,
final String subject, final String body) {
return String.format(
"mailto:%s@%s?subject=%s&body=%s",
new Object[]{
urlEncode(name), urlEncode(host),
urlEncode(subject), urlEncode(body)
}
);
} // mailTo() method ends
/**
* Utility method to encode the given string using UTF-8 encoding
*
* @param str
* String to encode
* @return encoded string with replacing '+' to '%20'
*/
public static String urlEncode(String str) {
try {
return URLEncoder.encode(str, "utf-8").replace("+", "%20");
} catch (UnsupportedEncodingException e) {
throw new IllegalArgumentException(e);
}
} // urlEncode() method ends
}

View File

@ -0,0 +1,36 @@
package edu.internet2.ndt;
import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/**
* Utility class that creates a new "Frame" with a window closing functionality.
* This Class is used to provide a base "frame" for the Statistics, Details and
* Options windows
*
* This class is declared separately so that it can be easily extended by users
* to customize based on individual needs
*
*/
public class NewFrame extends JFrame {
/**
* Auto-generated compiler constant that does not contribute to classes'
* functionality
*/
private static final long serialVersionUID = 8990839319520684317L;
/**
* Constructor
**/
public NewFrame(final JApplet parent) throws HeadlessException {
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent event) {
parent.requestFocus();
dispose();
}
});
}
} // class: NewFrame

View File

@ -0,0 +1,175 @@
package edu.internet2.ndt;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
/**
* OsfwWorker creates a thread that listens for a message from the server. It
* functions to check if the server has sent a message that is valid and
* sufficient to determine if the server->client direction has a fire-wall.
*
* <p>
* As part of the simple firewall test, the Server must try to connect to the
* Client's ephemeral port and send a TEST_MSG message containing a pre-defined
* string "Simple firewall test" of 20 chars using this newly created
* connection. This class implements this functionality.
*
* The result of the test is set back into the Tcpbw100._iS2cSFWResult variable
* (using setter methods) for the test results to be interpreted later
* */
public class OsfwWorker implements Runnable {
private ServerSocket _srvSocket;
private int _iTestTime;
private boolean _iFinalized = false;
// local Tcpbw100 Applet reference
Tcpbw100 _localTcpAppObj;
/**
* Constructor
*
* @param Socket
* srvSocketParam Socket used to transmit protocol messages
*
* @param iParamTestTime
* Test time duration to wait for message from server
*/
OsfwWorker(ServerSocket srvSocketParam, int iParamTestTime) {
this._srvSocket = srvSocketParam;
this._iTestTime = iParamTestTime;
}
/**
* Constructor accepting Tcpbw100 parameter
*
* @param ServerSocket
* Socket on which to accept connections
* @param iParamTestTime
* Test time duration to wait for message from server
* @param _localParam
* Applet object used to set the result of the S->C firewall test
*/
OsfwWorker(ServerSocket srvSocketParam, int iParamTestTime,
Tcpbw100 _localParam) {
this._srvSocket = srvSocketParam;
this._iTestTime = iParamTestTime;
this._localTcpAppObj = _localParam;
}
/**
* Make current thread sleep for 1000 ms
*
* */
public void finalize() {
// If test is not already complete/terminated, then sleep
while (!_iFinalized) {
try {
Thread.currentThread().sleep(1000);
} catch (InterruptedException e) {
// do nothing.
}
}
}
/**
* run() method of this SFW Worker thread. This thread listens on the socket
* from the server for a given time period, and checks to see if the server
* has sent a message that is valid and sufficient to determine if the S->C
* direction has a fire-wall.
* */
public void run() {
Message msg = new Message();
Socket socketObj = null;
try {
// set timeout to given value in ms
_srvSocket.setSoTimeout(_iTestTime * 1000);
try {
// Blocking call trying to create connection to socket and
// accept it
socketObj = _srvSocket.accept();
} catch (Exception e) {
e.printStackTrace();
// The "accept" call has failed, and indicates a firewall
// possibility
this._localTcpAppObj
.setS2cSFWTestResults(NDTConstants.SFW_POSSIBLE);
_srvSocket.close();
_iFinalized = true;
return;
}
Protocol sfwCtl = new Protocol(socketObj);
// commented out sections indicate move to outer class
if (sfwCtl.recv_msg(msg) != 0) {
// error, msg read/received incorrectly. Hence set status as
// unknown
System.out
.println("Simple firewall test: unrecognized message");
this._localTcpAppObj
.setS2cSFWTestResults(NDTConstants.SFW_UNKNOWN);
// close socket objects and wrap up
socketObj.close();
_srvSocket.close();
_iFinalized = true;
return;
}
// The server sends a TEST_MSG type packet. Any other message-type
// is not expected at this point, and hence an error
if (msg.getType() != MessageType.TEST_MSG) {
this._localTcpAppObj
.setS2cSFWTestResults(NDTConstants.SFW_UNKNOWN);
// close socket objects and wrap up
socketObj.close();
_srvSocket.close();
_iFinalized = true;
return;
}
// The server is expected to send a 20 char message that
// says "Simple firewall test" . Every other message string
// indicates an unknown firewall status
if (!new String(msg.getBody())
.equals(NDTConstants.SFW_PREDEFINED_TEST_MESSAGE)) {
System.out.println("Simple firewall test: Improper message");
this._localTcpAppObj
.setS2cSFWTestResults(NDTConstants.SFW_UNKNOWN);
// close socket objects and wrap up
socketObj.close();
_srvSocket.close();
_iFinalized = true;
return;
}
// If none of the above conditions were met, then, the server
// message has been received correctly, and there seems to be no
// firewall
this._localTcpAppObj
.setS2cSFWTestResults(NDTConstants.SFW_NOFIREWALL);
} catch (IOException ex) {
// Status of firewall could not be determined before concluding
this._localTcpAppObj.setS2cSFWTestResults(NDTConstants.SFW_UNKNOWN);
}
// finalize and close connections
try {
socketObj.close();
_srvSocket.close();
} catch (IOException e) {
System.err.println("OsfwWorker: Exception trying to close sockets"
+ e);
// log exception occurence
}
_iFinalized = true;
}
}

View File

@ -0,0 +1,194 @@
package edu.internet2.ndt;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
/**
* Class aggregating operations that can be performed for
* sending/receiving/reading Protocol messages
*
* */
public class Protocol {
private InputStream _ctlInStream;
private OutputStream _ctlOutStream;
private boolean jsonSupport = true;
/**
* Constructor that accepts socket over which to communicate as parameter
*
* @param ctlSocketParam
* socket used to send the protocol messages over
* @throws IOException
* if Input/Output streams cannot be read from/written into
* correctly
*/
public Protocol(Socket ctlSocketParam) throws IOException {
_ctlInStream = ctlSocketParam.getInputStream();
_ctlOutStream = ctlSocketParam.getOutputStream();
}
/**
* Send message given its Type and data byte
*
* @param bParamType
* Control Message Type
* @param bParamToSend
* Data value to send
* @throws IOException
* If data cannot be successfully written to the Output Stream
*
* */
public void send_msg(byte bParamType, byte bParamToSend) throws IOException {
byte[] tab = new byte[] { bParamToSend };
send_msg(bParamType, tab);
}
/**
* Send message given its Type and data byte
*
* @param bParamType
* Control Message Type
* @param bParamToSend
* Data value to send
* @throws IOException
* If data cannot be successfully written to the Output Stream
*
* */
public void send_json_msg(byte bParamType, byte bParamToSend) throws IOException {
byte[] tab = new byte[] { bParamToSend };
send_json_msg(bParamType, tab);
}
/**
* Send protocol messages given their type and data byte array
*
* @param bParamType
* Control Message Type
* @param bParamToSend
* Data value array to send
* @throws IOException
* If data cannot be successfully written to the Output Stream
*
* */
public void send_json_msg(byte bParamType, byte[] bParamToSend)
throws IOException {
if (jsonSupport) {
send_msg(bParamType, JSONUtils.createJsonObj(bParamToSend));
} else {
send_msg(bParamType, bParamToSend);
}
}
/**
* Send protocol messages given their type and data byte array
*
* @param bParamType
* Control Message Type
* @param bParamToSend
* Data value array to send
* @throws IOException
* If data cannot be successfully written to the Output Stream
*
* */
public void send_msg(byte bParamType, byte[] bParamToSend)
throws IOException {
byte[] header = new byte[3];
header[0] = bParamType;
// 2 bytes are used to hold data length. Thus, max(data length) = 65535
header[1] = (byte) (bParamToSend.length >> 8);
header[2] = (byte) bParamToSend.length;
// Write data to outputStream
_ctlOutStream.write(header);
_ctlOutStream.write(bParamToSend);
}
/**
* Populate Message byte array with specific number of bytes of data from
* socket input stream
*
* @param msgParam
* Message object to be populated
* @param iParamAmount
* specified number of bytes to be read
* @return integer number of bytes populated
* @throws IOException
* If data cannot be successfully read from the Input Stream
*/
public int readn(Message msgParam, int iParamAmount) throws IOException {
int read = 0;
int tmp;
msgParam.initBodySize(iParamAmount);
while (read != iParamAmount) {
tmp = _ctlInStream
.read(msgParam._yaBody, read, iParamAmount - read);
if (tmp <= 0) {
return read;
}
read += tmp;
}
return read;
}
/**
* Receive message at end-point of socket
*
* @param msgParam
* Message object
* @return integer with values:
* <p>
* a) Success:
* <ul>
* <li>
* value=0 : successfully read expected number of bytes.</li>
* </ul>
* <p>
* b) Error:
* <ul>
* <li>value= 1 : Error reading ctrl-message length and data type
* itself, since NDTP-control packet has to be at the least 3 octets
* long</li>
* <li>value= 3 : Error, mismatch between "length" field of
* ctrl-message and actual data read</li>
* </ul>
* */
public int recv_msg(Message msgParam) throws IOException {
int length;
if (readn(msgParam, 3) != 3) {
return 1;
}
byte[] yaMsgBody = msgParam.getBody();
msgParam.setType(yaMsgBody[0]);
// Get data length
length = ((int) yaMsgBody[1] & 0xFF) << 8;
length += (int) yaMsgBody[2] & 0xFF;
if (readn(msgParam, length) != length) {
return 3;
}
return 0;
}
/**
* Method to close open Streams
*/
public void close() {
try {
_ctlInStream.close();
_ctlOutStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public void setJsonSupport(boolean jsonSupport) {
this.jsonSupport = jsonSupport;
}
} // end class Protocol

View File

@ -0,0 +1,54 @@
package edu.internet2.ndt;
import javax.swing.*;
import javax.swing.text.BadLocationException;
import java.awt.*;
/*
* Class that extends TextPane. This Text-pane is used as the chief
* Results window that summarizes the results of all tests
* that have been run.
*
* This class is declared separately so that it can be easily extended
* by users to customize based on individual needs
*
*/
public class ResultsTextPane extends JTextPane {
/**
* Compiler auto-generate value not directly related to class functionality
*/
private static final long serialVersionUID = -2224271202004876654L;
/**
* Method to append String into the current document
*
* @param paramTextStr
* String to be inserted into the document
**/
public void append(String paramTextStr) {
try {
getStyledDocument().insertString(getStyledDocument().getLength(),
paramTextStr, null);
} catch (BadLocationException e) {
System.out
.println("WARNING: failed to append text to the text pane! ["
+ paramTextStr + "]");
}
}
/**
* JTextPane method to insert a component into the document as a replacement
* for currently selected content. If no selection is made, the the
* component is inserted at the current position of the caret.
*
* @param paramCompObj
* the component to insert
* */
public void insertComponent(Component paramCompObj) {
setSelectionStart(this.getStyledDocument().getLength());
setSelectionEnd(this.getStyledDocument().getLength());
super.insertComponent(paramCompObj);
}
}

View File

@ -0,0 +1,123 @@
package edu.internet2.ndt;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
/**
* Class that displays status of tests being run. It also provides methods to
* set status message, record intention to stop tests, and to fetch the status
* of whether the test is to be stopped.
* */
public class StatusPanel extends JPanel {
/**
* Compiler generated constant that is not related to current classes'
* specific functionality
*/
private static final long serialVersionUID = 2609233901130079136L;
private int _iTestsCompleted; // variable used to record the count of
// "finished" tests
private int _iTestsNum; // total test count
private boolean _bStop = false;
private JLabel _labelTestNum = new JLabel();
private JButton _buttonStop;
private JProgressBar _progressBarObj = new JProgressBar();
/*
* Constructor
*
* @param testsNum Total number of tests scheduled to be run
*
* @param sParamaEnableMultiple String indicating whether multiple tests
* have been scheduled
*/
public StatusPanel(int iParamTestsNum, String sParamEnableMultiple) {
this._iTestsCompleted = 1;
this._iTestsNum = iParamTestsNum;
setTestNoLabelText();
// If multiple tests are enabled to be run, then add information about
// the test number being run
if (sParamEnableMultiple != null) {
add(_labelTestNum);
}
_progressBarObj.setMinimum(0);
_progressBarObj.setMaximum(_iTestsNum);
_progressBarObj.setValue(0);
_progressBarObj.setStringPainted(true);
if (_iTestsNum == 0) {
_progressBarObj.setString("");
_progressBarObj.setIndeterminate(true);
} else {
_progressBarObj.setString(NDTConstants
.getMessageString("initialization"));
}
add(_progressBarObj);
_buttonStop = new JButton(NDTConstants.getMessageString("stop"));
_buttonStop.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
_bStop = true;
_buttonStop.setEnabled(false);
StatusPanel.this.setText(NDTConstants
.getMessageString("stopping"));
}
});
// If multiple tests are enabled to be run, provide user option to
// stop the one currently running
if (sParamEnableMultiple != null) {
add(_buttonStop);
}
}
/**
* Set Test number being run
* */
private void setTestNoLabelText() {
_labelTestNum.setText(NDTConstants.getMessageString("test") + " "
+ _iTestsCompleted + " " + NDTConstants.getMessageString("of")
+ " " + _iTestsNum);
}
/**
* Get intention to stop tests
*
* @return boolean indicating intention to stop or not
* */
public boolean wantToStop() {
return _bStop;
}
/**
* End the currently running test
* */
public void endTest() {
_progressBarObj.setValue(_iTestsCompleted);
_iTestsCompleted++;
setTestNoLabelText();
}
/**
* Sets a string explaining progress of tests
*
* @param sParamText
* String status of test-run
* */
public void setText(String sParamText) {
if (!_progressBarObj.isIndeterminate()) {
_progressBarObj.setString(sParamText);
}
}
} // end class StatusPanel

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,451 @@
package edu.internet2.ndt;
/* This class has code taken from
* http://nerds.palmdrive.net/useragent/code.html
*
* Class used to obtain information about who is accessing a web-server.
*
* When a web browser accesses a web-server, it usually transmits a "User-Agent" string.
* This is expected to include the name and versions of the browser and
* the underlying Operating System. Though the information inside a user-agent string is not restricted to
* these alone, currently, NDT uses this to get Browser OS only.
*
*/
public class UserAgentTools {
public static String getFirstVersionNumber(String a_userAgent,
int a_position, int numDigits) {
String ver = getVersionNumber(a_userAgent, a_position);
if (ver == null)
return "";
int i = 0;
String res = "";
while (i < ver.length() && i < numDigits) {
res += String.valueOf(ver.charAt(i));
i++;
}
return res;
}
public static String getVersionNumber(String a_userAgent, int a_position) {
if (a_position < 0)
return "";
StringBuffer res = new StringBuffer();
int status = 0;
while (a_position < a_userAgent.length()) {
char c = a_userAgent.charAt(a_position);
switch (status) {
case 0: // <SPAN class="codecomment"> No valid digits encountered
// yet</span>
if (c == ' ' || c == '/')
break;
if (c == ';' || c == ')')
return "";
status = 1;
case 1: // <SPAN class="codecomment"> Version number in
// progress</span>
if (c == ';' || c == '/' || c == ')' || c == '(' || c == '[')
return res.toString().trim();
if (c == ' ')
status = 2;
res.append(c);
break;
case 2: // <SPAN class="codecomment"> Space encountered - Might need
// to end the parsing</span>
if ((Character.isLetter(c) && Character.isLowerCase(c))
|| Character.isDigit(c)) {
res.append(c);
status = 1;
} else
return res.toString().trim();
break;
}
a_position++;
}
return res.toString().trim();
}
public static String[] getArray(String a, String b, String c) {
String[] res = new String[3];
res[0] = a;
res[1] = b;
res[2] = c;
return res;
}
public static String[] getBotName(String userAgent) {
userAgent = userAgent.toLowerCase();
int pos = 0;
String res = null;
if ((pos = userAgent.indexOf("help.yahoo.com/")) > -1) {
res = "Yahoo";
pos += 7;
} else if ((pos = userAgent.indexOf("google/")) > -1) {
res = "Google";
pos += 7;
} else if ((pos = userAgent.indexOf("msnbot/")) > -1) {
res = "MSNBot";
pos += 7;
} else if ((pos = userAgent.indexOf("googlebot/")) > -1) {
res = "Google";
pos += 10;
} else if ((pos = userAgent.indexOf("webcrawler/")) > -1) {
res = "WebCrawler";
pos += 11;
} else if ((pos = userAgent.indexOf("inktomi")) > -1) {
// <SPAN class="codecomment"> The following two bots don't have any
// version number in their User-Agent strings.</span>
res = "Inktomi";
pos = -1;
} else if ((pos = userAgent.indexOf("teoma")) > -1) {
res = "Teoma";
pos = -1;
}
if (res == null)
return null;
return getArray(res, res, res + getVersionNumber(userAgent, pos));
}
public static String[] getOS(String userAgent) {
if (getBotName(userAgent) != null)
return getArray("Bot", "Bot", "Bot");
String[] res = null;
int pos;
if ((pos = userAgent.indexOf("Windows-NT")) > -1) {
res = getArray("Win", "WinNT",
"Win" + getVersionNumber(userAgent, pos + 8));
} else if (userAgent.indexOf("Windows NT") > -1) {
// <SPAN class="codecomment"> The different versions of Windows NT
// are decoded in the verbosity level 2</span>
// <SPAN class="codecomment"> ie: Windows NT 5.1 = Windows XP</span>
if ((pos = userAgent.indexOf("Windows NT 5.1")) > -1) {
res = getArray("Win", "WinXP",
"Win" + getVersionNumber(userAgent, pos + 7));
} else if ((pos = userAgent.indexOf("Windows NT 6.0")) > -1) {
res = getArray("Win", "Vista",
"Vista" + getVersionNumber(userAgent, pos + 7));
} else if ((pos = userAgent.indexOf("Windows NT 6.1")) > -1) {
res = getArray("Win", "Seven",
"Seven " + getVersionNumber(userAgent, pos + 7));
} else if ((pos = userAgent.indexOf("Windows NT 5.0")) > -1) {
res = getArray("Win", "Win2000",
"Win" + getVersionNumber(userAgent, pos + 7));
} else if ((pos = userAgent.indexOf("Windows NT 5.2")) > -1) {
res = getArray("Win", "Win2003",
"Win" + getVersionNumber(userAgent, pos + 7));
} else if ((pos = userAgent.indexOf("Windows NT 4.0")) > -1) {
res = getArray("Win", "WinNT4",
"Win" + getVersionNumber(userAgent, pos + 7));
} else if ((pos = userAgent.indexOf("Windows NT)")) > -1) {
res = getArray("Win", "WinNT", "WinNT");
} else if ((pos = userAgent.indexOf("Windows NT;")) > -1) {
res = getArray("Win", "WinNT", "WinNT");
} else {
res = getArray("Win", "WinNT?", "WinNT?");
}
} else if (userAgent.indexOf("Win") > -1) {
if (userAgent.indexOf("Windows") > -1) {
if ((pos = userAgent.indexOf("Windows 98")) > -1) {
res = getArray("Win", "Win98",
"Win" + getVersionNumber(userAgent, pos + 7));
} else if ((pos = userAgent.indexOf("Windows_98")) > -1) {
res = getArray("Win", "Win98",
"Win" + getVersionNumber(userAgent, pos + 8));
} else if ((pos = userAgent.indexOf("Windows 2000")) > -1) {
res = getArray("Win", "Win2000",
"Win" + getVersionNumber(userAgent, pos + 7));
} else if ((pos = userAgent.indexOf("Windows 95")) > -1) {
res = getArray("Win", "Win95",
"Win" + getVersionNumber(userAgent, pos + 7));
} else if ((pos = userAgent.indexOf("Windows 9x")) > -1) {
res = getArray("Win", "Win9x",
"Win" + getVersionNumber(userAgent, pos + 7));
} else if ((pos = userAgent.indexOf("Windows ME")) > -1) {
res = getArray("Win", "WinME",
"Win" + getVersionNumber(userAgent, pos + 7));
} else if ((pos = userAgent.indexOf("Windows CE;")) > -1) {
res = getArray("Win", "WinCE", "WinCE");
} else if ((pos = userAgent.indexOf("Windows 3.1")) > -1) {
res = getArray("Win", "Win31",
"Win" + getVersionNumber(userAgent, pos + 7));
}
// <SPAN class="codecomment"> If no version was found, rely on
// the following code to detect "WinXX"</span>
// <SPAN class="codecomment"> As some User-Agents include two
// references to Windows</span>
// <SPAN class="codecomment"> Ex: Mozilla/5.0 (Windows; U;
// Win98; en-US; rv:1.5)</span>
}
if (res == null) {
if ((pos = userAgent.indexOf("Win98")) > -1) {
res = getArray("Win", "Win98",
"Win" + getVersionNumber(userAgent, pos + 3));
} else if ((pos = userAgent.indexOf("Win31")) > -1) {
res = getArray("Win", "Win31",
"Win" + getVersionNumber(userAgent, pos + 3));
} else if ((pos = userAgent.indexOf("Win95")) > -1) {
res = getArray("Win", "Win95",
"Win" + getVersionNumber(userAgent, pos + 3));
} else if ((pos = userAgent.indexOf("Win 9x")) > -1) {
res = getArray("Win", "Win9x",
"Win" + getVersionNumber(userAgent, pos + 3));
} else if ((pos = userAgent.indexOf("WinNT4.0")) > -1) {
res = getArray("Win", "WinNT4",
"Win" + getVersionNumber(userAgent, pos + 3));
} else if ((pos = userAgent.indexOf("WinNT")) > -1) {
res = getArray("Win", "WinNT",
"Win" + getVersionNumber(userAgent, pos + 3));
}
}
if (res == null) {
if ((pos = userAgent.indexOf("Windows")) > -1) {
res = getArray("Win", "Win?",
"Win?" + getVersionNumber(userAgent, pos + 7));
} else if ((pos = userAgent.indexOf("Win")) > -1) {
res = getArray("Win", "Win?",
"Win?" + getVersionNumber(userAgent, pos + 3));
} else
// <SPAN class="codecomment"> Should not happen at this
// point</span>
res = getArray("Win", "Win?", "Win?");
}
} else if ((pos = userAgent.indexOf("Mac OS X")) > -1) {
if ((userAgent.indexOf("iPhone")) > -1) {
pos = userAgent.indexOf("iPhone OS");
if ((userAgent.indexOf("iPod")) > -1) {
res = getArray(
"iOS",
"iOS-iPod",
"iOS-iPod "
+ ((pos < 0) ? "" : getVersionNumber(
userAgent, pos + 9)));
} else {
res = getArray(
"iOS",
"iOS-iPhone",
"iOS-iPhone "
+ ((pos < 0) ? "" : getVersionNumber(
userAgent, pos + 9)));
}
} else if ((userAgent.indexOf("iPad")) > -1) {
pos = userAgent.indexOf("CPU OS");
res = getArray("iOS", "iOS-iPad", "iOS-iPad "
+ ((pos < 0) ? ""
: getVersionNumber(userAgent, pos + 6)));
} else
res = getArray("Mac", "MacOSX",
"MacOS " + getVersionNumber(userAgent, pos + 8));
} else if ((pos = userAgent.indexOf("Android")) > -1) {
res = getArray("Linux", "Android",
"Android " + getVersionNumber(userAgent, pos + 8));
} else if ((pos = userAgent.indexOf("Mac_PowerPC")) > -1) {
res = getArray("Mac", "MacPPC",
"MacOS " + getVersionNumber(userAgent, pos + 3));
} else if ((pos = userAgent.indexOf("Macintosh")) > -1) {
if (userAgent.indexOf("PPC") > -1)
res = getArray("Mac", "MacPPC", "Mac PPC");
else
res = getArray("Mac?", "Mac?", "MacOS?");
} else if ((pos = userAgent.indexOf("FreeBSD")) > -1) {
res = getArray("*BSD", "*BSD FreeBSD", "FreeBSD "
+ getVersionNumber(userAgent, pos + 7));
} else if ((pos = userAgent.indexOf("OpenBSD")) > -1) {
res = getArray("*BSD", "*BSD OpenBSD", "OpenBSD "
+ getVersionNumber(userAgent, pos + 7));
} else if ((pos = userAgent.indexOf("Linux")) > -1) {
String detail = "Linux " + getVersionNumber(userAgent, pos + 5);
String med = "Linux";
if ((pos = userAgent.indexOf("Ubuntu/")) > -1) {
detail = "Ubuntu " + getVersionNumber(userAgent, pos + 7);
med += " Ubuntu";
}
res = getArray("Linux", med, detail);
} else if ((pos = userAgent.indexOf("CentOS")) > -1) {
res = getArray("Linux", "Linux CentOS", "CentOS");
} else if ((pos = userAgent.indexOf("NetBSD")) > -1) {
res = getArray("*BSD", "*BSD NetBSD",
"NetBSD " + getVersionNumber(userAgent, pos + 6));
} else if ((pos = userAgent.indexOf("Unix")) > -1) {
res = getArray("Linux", "Linux",
"Linux " + getVersionNumber(userAgent, pos + 4));
} else if ((pos = userAgent.indexOf("SunOS")) > -1) {
res = getArray("Unix", "SunOS",
"SunOS" + getVersionNumber(userAgent, pos + 5));
} else if ((pos = userAgent.indexOf("IRIX")) > -1) {
res = getArray("Unix", "IRIX",
"IRIX" + getVersionNumber(userAgent, pos + 4));
} else if ((pos = userAgent.indexOf("SonyEricsson")) > -1) {
res = getArray("SonyEricsson", "SonyEricsson", "SonyEricsson"
+ getVersionNumber(userAgent, pos + 12));
} else if ((pos = userAgent.indexOf("Nokia")) > -1) {
res = getArray("Nokia", "Nokia",
"Nokia" + getVersionNumber(userAgent, pos + 5));
} else if ((pos = userAgent.indexOf("BlackBerry")) > -1) {
res = getArray("BlackBerry", "BlackBerry", "BlackBerry"
+ getVersionNumber(userAgent, pos + 10));
} else if ((pos = userAgent.indexOf("SymbianOS")) > -1) {
res = getArray("SymbianOS", "SymbianOS", "SymbianOS"
+ getVersionNumber(userAgent, pos + 10));
} else if ((pos = userAgent.indexOf("BeOS")) > -1) {
res = getArray("BeOS", "BeOS", "BeOS");
} else if ((pos = userAgent.indexOf("Nintendo Wii")) > -1) {
res = getArray("Nintendo Wii", "Nintendo Wii", "Nintendo Wii"
+ getVersionNumber(userAgent, pos + 10));
} else if ((pos = userAgent.indexOf("J2ME/MIDP")) > -1) {
res = getArray("Java", "J2ME", "J2ME/MIDP");
} else
res = getArray("?", "?", "?");
return res;
}
public static String[] getBrowser(String userAgent) {
if (userAgent == null) {
return getArray("?", "?", "?");
}
String[] botName;
if ((botName = getBotName(userAgent)) != null)
return botName;
String[] res = null;
int pos;
if ((pos = userAgent.indexOf("Lotus-Notes/")) > -1) {
res = getArray("LotusNotes", "LotusNotes", "LotusNotes"
+ getVersionNumber(userAgent, pos + 12));
} else if ((pos = userAgent.indexOf("Opera")) > -1) {
String ver = getVersionNumber(userAgent, pos + 5);
res = getArray("Opera",
"Opera" + getFirstVersionNumber(userAgent, pos + 5, 1),
"Opera" + ver);
if ((pos = userAgent.indexOf("Opera Mini/")) > -1) {
String ver2 = getVersionNumber(userAgent, pos + 11);
res = getArray("Opera", "Opera Mini", "Opera Mini " + ver2);
} else if ((pos = userAgent.indexOf("Opera Mobi/")) > -1) {
String ver2 = getVersionNumber(userAgent, pos + 11);
res = getArray("Opera", "Opera Mobi", "Opera Mobi " + ver2);
}
} else if (userAgent.indexOf("MSIE") > -1) {
if ((pos = userAgent.indexOf("MSIE 6.0")) > -1) {
res = getArray("MSIE", "MSIE6",
"MSIE" + getVersionNumber(userAgent, pos + 4));
} else if ((pos = userAgent.indexOf("MSIE 5.0")) > -1) {
res = getArray("MSIE", "MSIE5",
"MSIE" + getVersionNumber(userAgent, pos + 4));
} else if ((pos = userAgent.indexOf("MSIE 5.5")) > -1) {
res = getArray("MSIE", "MSIE5.5",
"MSIE" + getVersionNumber(userAgent, pos + 4));
} else if ((pos = userAgent.indexOf("MSIE 5.")) > -1) {
res = getArray("MSIE", "MSIE5.x",
"MSIE" + getVersionNumber(userAgent, pos + 4));
} else if ((pos = userAgent.indexOf("MSIE 4")) > -1) {
res = getArray("MSIE", "MSIE4",
"MSIE" + getVersionNumber(userAgent, pos + 4));
} else if ((pos = userAgent.indexOf("MSIE 7")) > -1
&& userAgent.indexOf("Trident/4.0") < 0) {
res = getArray("MSIE", "MSIE7",
"MSIE" + getVersionNumber(userAgent, pos + 4));
} else if ((pos = userAgent.indexOf("MSIE 8")) > -1
|| userAgent.indexOf("Trident/4.0") > -1) {
res = getArray("MSIE", "MSIE8",
"MSIE" + getVersionNumber(userAgent, pos + 4));
} else if ((pos = userAgent.indexOf("MSIE 9")) > -1
|| userAgent.indexOf("Trident/4.0") > -1) {
res = getArray("MSIE", "MSIE9",
"MSIE" + getVersionNumber(userAgent, pos + 4));
} else
res = getArray(
"MSIE",
"MSIE?",
"MSIE?"
+ getVersionNumber(userAgent,
userAgent.indexOf("MSIE") + 4));
} else if ((pos = userAgent.indexOf("Gecko/")) > -1) {
res = getArray("Gecko", "Gecko",
"Gecko" + getFirstVersionNumber(userAgent, pos + 5, 4));
if ((pos = userAgent.indexOf("Camino/")) > -1) {
res[1] += "(Camino)";
res[2] += "(Camino" + getVersionNumber(userAgent, pos + 7)
+ ")";
} else if ((pos = userAgent.indexOf("Chimera/")) > -1) {
res[1] += "(Chimera)";
res[2] += "(Chimera" + getVersionNumber(userAgent, pos + 8)
+ ")";
} else if ((pos = userAgent.indexOf("Firebird/")) > -1) {
res[1] += "(Firebird)";
res[2] += "(Firebird" + getVersionNumber(userAgent, pos + 9)
+ ")";
} else if ((pos = userAgent.indexOf("Phoenix/")) > -1) {
res[1] += "(Phoenix)";
res[2] += "(Phoenix" + getVersionNumber(userAgent, pos + 8)
+ ")";
} else if ((pos = userAgent.indexOf("Galeon/")) > -1) {
res[1] += "(Galeon)";
res[2] += "(Galeon" + getVersionNumber(userAgent, pos + 7)
+ ")";
} else if ((pos = userAgent.indexOf("Firefox/")) > -1) {
res[1] += "(Firefox)";
res[2] += "(Firefox" + getVersionNumber(userAgent, pos + 8)
+ ")";
} else if ((pos = userAgent.indexOf("Netscape/")) > -1) {
if ((pos = userAgent.indexOf("Netscape/6")) > -1) {
res[1] += "(NS6)";
res[2] += "(NS" + getVersionNumber(userAgent, pos + 9)
+ ")";
} else if ((pos = userAgent.indexOf("Netscape/7")) > -1) {
res[1] += "(NS7)";
res[2] += "(NS" + getVersionNumber(userAgent, pos + 9)
+ ")";
} else if ((pos = userAgent.indexOf("Netscape/8")) > -1) {
res[1] += "(NS8)";
res[2] += "(NS" + getVersionNumber(userAgent, pos + 9)
+ ")";
} else if ((pos = userAgent.indexOf("Netscape/9")) > -1) {
res[1] += "(NS9)";
res[2] += "(NS" + getVersionNumber(userAgent, pos + 9)
+ ")";
} else {
res[1] += "(NS?)";
res[2] += "(NS?"
+ getVersionNumber(userAgent,
userAgent.indexOf("Netscape/") + 9) + ")";
}
}
} else if ((pos = userAgent.indexOf("Netscape/")) > -1) {
if ((pos = userAgent.indexOf("Netscape/4")) > -1) {
res = getArray("NS", "NS4",
"NS" + getVersionNumber(userAgent, pos + 9));
} else
res = getArray("NS", "NS?",
"NS?" + getVersionNumber(userAgent, pos + 9));
} else if ((pos = userAgent.indexOf("Chrome/")) > -1) {
res = getArray("KHTML", "KHTML(Chrome)", "KHTML(Chrome"
+ getVersionNumber(userAgent, pos + 6) + ")");
} else if ((pos = userAgent.indexOf("Safari/")) > -1) {
res = getArray("KHTML", "KHTML(Safari)", "KHTML(Safari"
+ getVersionNumber(userAgent, pos + 6) + ")");
} else if ((pos = userAgent.indexOf("Konqueror/")) > -1) {
res = getArray("KHTML", "KHTML(Konqueror)", "KHTML(Konqueror"
+ getVersionNumber(userAgent, pos + 9) + ")");
} else if ((pos = userAgent.indexOf("KHTML")) > -1) {
res = getArray("KHTML", "KHTML?",
"KHTML?(" + getVersionNumber(userAgent, pos + 5) + ")");
} else if ((pos = userAgent.indexOf("NetFront")) > -1) {
res = getArray("NetFront", "NetFront", "NetFront "
+ getVersionNumber(userAgent, pos + 8));
} else if ((pos = userAgent.indexOf("BlackBerry")) > -1) {
pos = userAgent.indexOf("/", pos + 2);
res = getArray("BlackBerry", "BlackBerry", "BlackBerry"
+ getVersionNumber(userAgent, pos + 1));
} else if (userAgent.indexOf("Mozilla/4.") == 0
&& userAgent.indexOf("Mozilla/4.0") < 0
&& userAgent.indexOf("Mozilla/4.5 ") < 0) {
// <SPAN class="codecomment"> We will interpret Mozilla/4.x as
// Netscape Communicator is and only if x</span>
// <SPAN class="codecomment"> is not 0 or 5</span>
res = getArray("Communicator", "Communicator", "Communicator"
+ getVersionNumber(userAgent, pos + 8));
} else
return getArray("?", "?", "?");
return res;
}
}

View File

@ -0,0 +1,234 @@
10gbps = subxarxa 10 Gbps 10 Gigabit Ethernet/OC-192
10mbps = subxarxa 10 Mbps Ethernet
10mins = 10 min
12hours = 12 hores
1day = 1 dia
1gbps = subxarxa 1.0 Gbps Gigabit Ethernet
1min = 1 min
2.4gbps = subxarxa 2.4 Gbps OC-48
2hours = 2 hores
30mins = 30 min
45mbps = subxarxa 45 Mbps T3/DS3
5mins = 5 min
622mbps = subxarxa a 622 Mbps OC-12
and = and
architecture = Arquitectura
bytes = Bytes
c2s = C2S
c2sPacketQueuingDetected = [C2S]: Cua de paquets detectada
c2sThroughput = C2S throughput
c2sThroughputFailed = Test de C2S throughput FALLIT!
cabledsl = Cable/DSL modem
cablesNok = Advert\u00e8ncia: Excessius errors de xarxa, revisar cable(s) de xarxa
cablesOk = Trobat bon(s) cable(s) de xarxa
checkingFirewalls = Buscant Firewalls . . . . . . . . . . . . . . . . . . .
checkingMiddleboxes = Buscant Caixes Intermitjes (Middleboxes) . . . . . . . . . . . . . . . . . .
clickStart = Fes click a COMEN\u00e7AR per a comen\u00e7ar la prova
clickStart2 = Fes click a COMEN\u00e7AR per a tornar a fer la prova
client = Client
client2 = Client
clientAcksReport = Client Confirma l'enlla\u00e7 reportat \u00e9s
clientDataReports = Dades de Client reporten que l'enlla\u00e7 \u00e9s
clientInfo = Detalls del sistema client
clientIpModified = Informaci\u00f3: El NAT (Network Address Translation) est\u00e0 modificant l'adre\u00e7a IP del client
clientIpNotFound = No es troba l'adre\u00e7a del client. Per a usuaris d'Internet Explorer, modifiqui els par\u00e0metres de Java\n Click a Eines - Opcions d'Internet - Seguretat - Nivell personalitzat, trobi la l\u00ednia\n Microsoft VM - Java Permissions i faci click a personalitzar\ Editar permisos - Acc\u00e9s a totes les Adreces de xarxa, click a Habilitar i desar els canvis.
clientIpPreserved = Les Adreces IP de servidor son conservades Extrem-a-Extrem
clientSays = per\u00f2 el Client diu
close = Tancar
comments = Comentaris
congestNo = No s'ha trobat congesti\u00f3 de xarxa
congestYes = Informaci\u00f3: El throughput \u00e9s limitat per altre tr\u00e0fic de xarxa
connIdle = La connexi\u00f3 estaba aturada
connStalled = La connexi\u00f3 s'ha pausat
connected = Connectat a:
connectedTo = s'ha connectat a:
copy = C\u00f2pia
defaultTests = Proves per defecte
delayBetweenTests = Retard entre proves
detailedStats = Estad\u00edstiques detallades
dialup = Modem telef\u00f2nic
dialup2 = Trucada
diffrentVersion = Advert\u00e8ncia: N\u00famero de versi\u00f3 diferente
done = Fet.
done2 = Tcpbw100 fet
dupAcksIn = es reben ack's duplicats
duplexFullHalf = Alarma: Condici\u00f3 doble no concordant detectada Switch=Full i Host=half
duplexHalfFull = Alarma: Condici\u00f3 doble no concordant detectada Switch=half i Host=full
duplexNok = Advert\u00e8ncia: Condici\u00f3 doble antiga no concordant antiga
duplexOk = Operaci\u00f3 normal trobada (Normal duplex operation found.)
endOfEmail = Final del missatge de Correu electr\u00f2nic
eqSeen = Test de throughput: Detectat excessius encuament de paquets
excLoss = Exc\u00e9s de p\u00e8rdua de paquets est\u00e0 impactant al rendiment, prova la funci\u00f3 d'autonegociaci\u00f3 entre el teu PC i el switch de xarxa
excessiveErrors = Alarma: Excessius errors, revisa el(s) cable(s) de xarxa.
firewallNo = no est\u00e0 darrere un firewall. [Conexi\u00f3 al port ef\u00edmer correcte]
firewallYes = est\u00e0 probablement darrere un firewall. [Conexi\u00f3 al port ef\u00edmer ha fallat]
flowControlLimits = El control de fluxe basat en xarxa limita el throughput a
found100mbps = Trobat enlla\u00e7 de 100 Mbps FastEthernet.
found10gbps = Trobat enlla\u00e7 de 10 Gbps 10 GigEthernet/OC-192.
found10mbps = Trobat enlla\u00e7 de 10 Mbps Ethernet.
found1gbps = Trobat enlla\u00e7 de 1 Gbps GigabitEthernet.
found2.4gbps = Trobat enlla\u00e7 de 2.4 Gbps OC-48.
found45mbps = Trobat enlla\u00e7 de 45 Mbps T3/DS3.
found622mbps = Trobat enlla\u00e7 de 622 Mbps OC-12.
foundDialup = Trobat enlla\u00e7 de Dial-up modem.
foundDsl = Trobat enlla\u00e7 de Cable modem/DSL/T1.
fullDuplex = subxaxarxa Full duplex Fast Ethernet
general = General
generatingReport = Generant informe de problemes: Aquest informe s'enviar\u00e0 per e-mail a la persona que especifiquis
getWeb100Var = Obt\u00e9 les variables Web100
getWeb10gVar = Obt\u00e9 les variables Web10G
halfDuplex = subxarxa Half duplex Fast Ethernet
id = Eina de diagn\u00f2stic de xara TCP/Web100/Web10G
immediate = immediat
inboundTest = Test d'entrada Tcpbw100...
inboundWrongMessage = Test de throughput C2S: Rebut un tipus de missatge erroni
incompatibleVersion = N\u00famero de versi\u00f3 incompatible
incrRxBuf = Augmentant el valor del buffer de recepci\u00f3 del client
incrTxBuf = Augmentant el buffer de sortida del servidor NDT
information = Informaci\u00f3
initialization = Inicialitzant...
insufficient = No es disposa de prou dades per a determinar el tipus d'enlla\u00e7.
invokingMailtoFunction = Invocant funci\u00f3 Mailto Tcpbw100
ipProtocol = Protocol IP
ipcFail = Fallen les comunicacions entre processos, tipus d'enlla\u00e7 desconegut.
usingIpv4 = -- Utilitzant adre\u00e7a IPv4
usingIpv6 = -- Utilitzant adre\u00e7a IPv6
javaData = Dades Java
kbyteBufferLimits = KByte buffer que limita el throughput a
limitNet = Xarxa limitada
limitRx = Receptor limitat
limitTx = Emissor limitat
linkFullDpx = Enlla\u00e7 establert al mode Full Duplex
linkHalfDpx = Enlla\u00e7 establert al mode Half Duplex
loggingWrongMessage = Logant al servidor: Es rep un tipus de missatge erroni.
lookupError = Incapa\u00e7 d'obtenir la adre\u00e7a IP remota
mboxWrongMessage = Test intermig: Rebut tipus de missatge erroni
meta = META
metaFailed = META test FAILED!
metaTest = META test...
metaWrongMessage = META test: Received wrong type of the message
middlebox = Middlebox
middleboxFail = El servidor ha fallat mentre es provaba la middlebox
middleboxFail2 = test Middlebox FALLA!
middleboxModifyingMss = Informaci\u00f3: La middlebox de xarxa est\u00e0 modificant la variable MSS
middleboxTest = Test de Middlebox Tcpbw100...
moreDetails = M\u00e9s detalls...
name = Nom
ndtServerHas = El servidor NDT t\u00e9 un
noPktLoss1 = No hi ha p\u00e8rdua de paquets
noPktLoss2 = No s'aprecia cap p\u00e8rdua de paquets
numberOfTests = Nombre de proves
of = de
off = OFF
ok = OK
oldDuplexMismatch = "Advert\u00e8ncia: Es detecta antiga condici\u00f3 doble no concordant"
on = ON
ooOrder = per\u00f2 els paquets han arribat desordenats
options = Opcions
osData = dades del SO:
otherClient = S'est\u00e0 servint un altre client, la seva prova comen\u00e7ar\u00e0 en
otherTraffic = Informaci\u00f3: L'enlla\u00e7 de xarxa est\u00e0 congestionat per algun altre tr\u00e0fic
outboundTest = Test de sortida Tcpbw100...
outboundWrongMessage = Test de throughput C2S: Es rep un tipus de missatge erroni
packetQueuing = Posant paquets en cua
packetQueuingInfo = TCP (Transmission Control Protocol) transfereix dades entre dos\n equips d'internet. Autom\u00e0ticament detecta i es recupera d'errors i p\u00e8rdues./n TCP utilitza buffers per a proporcionar aquesta confiabilitat. Adem\u00e9s,\n els switch i routers
utilitzen buffers per aquells casos en que m\u00faltiples enlla\u00e7os d'entrada\n envien paquets a un \u00fanic enlla\u00e7 de sortida o si varien les velocitats de cada enlla\u00e7\n (FastEthernet a modem DSL).\n\n El servidor NDT genera i envia 10 segons de dades al client. En\n alguns casos el servidor pot generar les dades m\u00e9s de pressa del que pot enviar els paquets a la xarxa\n (p.ex., una CPU a 2 GHz enviant a un client conectat a una DSL).\n Quan passa aix\u00f2, alguns paquets es poden quedar a la cua de sortida /n quan s'acaba el temporitzador de 10 segons.\n El TCP continuar\u00e0 enviant automaticament aquests missatges a la cua i el client continuar\u00e0 acceptant-los i processant-los.\n Aix\u00f2 provoca que una prova duri m\u00e9s del que s'espera.\n\n Aquesta condici\u00f3 s'ha produït durant aquesta prova. /n No es requereix cap acci\u00f3 per a resoldre aquesta situaci\u00f3.
packetSizePreserved = La mida del paquet \u00e9s prefixada Extrem-a-Extrem
packetsize = la mida de paquet
pc = PC
pctOfTime = % del temps
performedTests = Proves realitzades
pktsRetrans = Paquets retransmesos
possibleDuplexFullHalf = Alarma: Possible Condici\u00f3 doble no concordant detectada Switch=Full i Host=half
possibleDuplexHalfFull = Alarma: Possible Condici\u00f3 doble no concordant detectada Switch=half i Host=full
possibleDuplexHalfFullWarning = Advert\u00e8ncia: Possible Condici\u00f3 doble no concordant detectada Switch=half i Host=full
preferIPv6 = prefereix IPv6
printDetailedStats = Imprimir Estad\u00edstiques detallades
protocolError = Error de Protocol! S'esperava 'prepare', s'obt\u00e9: 0x
qSeen = Test de throughput: Detectat encuament de paquets
ready = Tcpbw100 llest
receiveBufferShouldBe = Informaci\u00f3: El buffer de recepci\u00f3 hauria de ser
receiving = Rebent resultats...
reportProblem = Informar el problema
resultsParseError = Error en transformar els resultats del test!
resultsTimeout = Alerta! Time-out al client mentre es llegien dades, (possible duplex mismatch exists)
resultsWrongMessage = Resultats del test: S'ha rebut un tipus de missatge incorrecte
rtt = RTT
rttFail = L'algorisme del link de detecci\u00f3 ha fallat degut a excessius temps d'anada i tornada (Round trip times).
runningInboundTest = executant test d'entrada de 10s (server-a-client [S2C]) . . . . . .
runningOutboundTest = executant test de sortida de 10s (client-a-server [C2S]) . . . . .
s2c = S2C
s2cPacketQueuingDetected = [S2C]: Encuament de paquets detectat
s2cThroughput = Throughput S2C
s2cThroughputFailed = El test de throughput S2C ha FALLAT!
sackReceived = Blocs SACK rebuts
scalingFactors = Factors d'Escala
seconds = segons
sendingMetaInformation = Sending META information . . . . . . . . . . . . . . . . . . .
server = Servidor
serverAcksReport = El servidor confirma que l'enlla\u00e7 reportat \u00e9s
serverFault = Fallida de Servidor: Error desconegut. Torneu-ho a provar m\u00e9s tard, si us plau.
serverBusy = Servidor Ocupat: Massa clients esperant a la cua del servidor. Torneu-ho a provar m\u00e9s tard, si us plau.
serverBusy15s = Servidor Ocupat: Esperi 15 segons per a la finalitzaci\u00f3 del test anterior.
serverBusy30s = Servidor Ocupat: Esperi 30 segons per a la finalitzaci\u00f3 del test anterior.
serverBusy60s = Servidor Ocupat: Esperi 60 segons per a la finalitzaci\u00f3 del test anterior.
serverDataReports = Les dades del servidor indiquen que l'enlla\u00e7 \u00e9s
serverFail = El servidor ha fallat mentre es rebien dades
serverIpModified = Informaci\u00f3: El Network Address Translation (NAT) est\u00e0 modificant l'adre\u00e7a IP del client
serverIpPreserved = L'adre\u00e7a IP del servidor es mant\u00e9 Extrem-a-Extrem
serverNotRunning = Proc\u00e9s del servidor no funcionant: Arrenqui el proc\u00e9s web100srv al servidor remot.
serverSays = El servidor diu
sfwFail = Test de firewall simple FALLA!
sfwSocketFail = Simple firewall test: Cannot create listen socket
sfwTest = Simple firewall test...
sfwWrongMessage = Test de firewall simple: S'ha rebut un missatge erroni.
showOptions = Mostra les opcions
simpleFirewall = Firewall simple
sleep10m = Dormint per 10 mins...
sleep1m = Dormint per 1 min...
sleep30m = Dormint per 30 mins...
sleep5m = Dormint per 5 mins...
sleep12h = Dormint per 12 hores...
sleep1d = Dormint per 1 d\u00eda...
sleep2h = Dormint per 2 hores...
start = COMEN\u00e7A
startingTest = Comen\u00e7ant test
statistics = Estad\u00edstiques
stop = ATURA
stopped = Les proves han estat aturades!
stopping = Aturant...
systemFault = Fallada de sistema
test = Prova
testsuiteWrongMessage = Negociant s\u00e8rie de proves: S'ha rebut un missatge erroni.
theSlowestLink = El link m\u00e9s lent al cam\u00ed extrem a extrem \u00e9s un
theoreticalLimit = El l\u00edmit te\u00f2ric de xarxa \u00e9s
thisConnIs = Aquesta connexi\u00f3 \u00e9s
timesPktLoss = temps degut a p\u00e8rdua de paquets
toMaximizeThroughput = kbytes per a maximitzar el cabdal (throughput)
troubleReportFrom = Informe de problemes de NDT a
unableToDetectBottleneck = El servidor no pot determinar el tipus d'enlla\u00e7 que provoca el coll d'ampolla.
unableToObtainIP = No es possible determinar la adre\u00e7a IP local
unknownID = ID de test desconegut
unknownServer = Servidor desconegut
unsupportedClient = Informaci\u00f3: El servidor no suporta aquest client de l\u00ednia de comandes
vendor = Fabricant
version = Versi\u00f3
versionWrongMessage = Negociant la versi\u00f3 de NDT: S'ha rebut un missatge erroni.
web100Details = An\u00e0lisi detallat Web100
web100KernelVar = Variables de Kernel Web100
web100Stats = Estad\u00edstiques Web100 habilitades
web100Var = Variables Web100
web100rtt = Web100 informa el temps d'anada i tornada (RTT)
web100tcpOpts = Web100 informa que TCP ha negociat els par\u00e0metres de funcionament \u00f2ptims a:
web10gDetails = An\u00e0lisi detallat Web10G
web10gKernelVar = Variables de Kernel Web10G
web10gStats = Estad\u00edstiques Web10G habilitades
web10gVar = Variables Web10G
web10grtt = Web10G informa el temps d'anada i tornada (RTT)
web10gtcpOpts = Web10G informa que TCP ha negociat els par\u00e0metres de funcionament \u00f2ptims a:
willImprove = Millorar\u00e0 el funcionament
workstation = Estaci\u00f3 de treball
your = El seu
yourPcHas = El seu PC/Equip de treball t\u00e9 un
connectingTo = Connectant a
toRunTest = executar prova

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,236 @@
10gbps = 10 Gbps 10 Gigabit Ethernet/OC-192 subnet
10mbps = 10 Mbps Ethernet subnet
10mins = 10 mins
12hours = 12 hours
1day = 1 day
1gbps = 1.0 Gbps Gigabit Ethernet subnet
1min = 1 min
2.4gbps = 2.4 Gbps OC-48 subnet
2hours = 2 hours
30mins = 30 mins
45mbps = 45 Mbps T3/DS3 subnet
5mins = 5 mins
622mbps = a 622 Mbps OC-12 subnet
and = and
architecture = Architecture
bytes = Bytes
c2s = C2S
c2sPacketQueuingDetected = [C2S]: Packet queueing detected
c2sThroughput = C2S throughput
c2sThroughputFailed = C2S throughput test FAILED!
cabledsl = Cable/DSL modem
cablesNok = Warning: excessive network errors, check network cable(s)
cablesOk = Good network cable(s) found
checkingFirewalls = Checking for firewalls . . . . . . . . . . . . . . . . . . .
checkingMiddleboxes = Checking for Middleboxes . . . . . . . . . . . . . . . . . .
clickStart = Click START to start the test
clickStart2 = Click START to re-test
client = Client
client2 = Client
clientAcksReport = Client Acks report link is
clientDataReports = Client Data reports link is
clientInfo = Client System Details
clientIpModified = Information: Network Address Translation (NAT) box is modifying the Client's IP address
clientIpNotFound = Client IP address not found. For IE users, modify the Java parameters\n click Tools - Internet Options - Security - Custom Level, scroll down to\n Microsoft VM - Java permissions and click Custom, click Java Custom Settings\n Edit Permissions - Access to all Network Addresses, click Eanble and save changes
clientIpPreserved = Client IP addresses are preserved End-to-End
clientSays = but Client says
close = Close
comments = Comments
congestNo = No network congestion discovered.
congestYes = Information: throughput is limited by other network traffic.
connIdle = The connection was idle
connStalled = The connection stalled
connected = Connected to:
connectedTo = is connected to a
copy = Copy
defaultTests = Default tests
delayBetweenTests = Delay between tests
detailedStats = Detailed Statistics
dialup = Dial-up Modem
dialup2 = Dial-up
diffrentVersion = WARNING: NDT server has different version number
done = Done.
done2 = Tcpbw100 done
dupAcksIn = duplicate acks received
duplexFullHalf = Alarm: Duplex Mismatch condition detected Switch=Full and Host=half
duplexHalfFull = Alarm: Duplex Mismatch condition detected Switch=half and Host=full
duplexNok = Warning: Old Duplex mismatch condition detected:
duplexOk = Normal duplex operation found.
endOfEmail = End Of Email Message
eqSeen = throughput test: Excessive packet queuing detected
excLoss = Excessive packet loss is impacting your performance, check the auto-negotiate function on your local PC and network switch
excessiveErrors = Alarm: Excessive errors, check network cable(s).
firewallNo = is not behind a firewall. [Connection to the ephemeral port was successful]
firewallYes = is probably behind a firewall. [Connection to the ephemeral port failed]
flowControlLimits = The network based flow control limits the throughput to
found100mbps = 100 Mbps FastEthernet link found.
found10gbps = 10 Gbps 10 GigEthernet/OC-192 link found.
found10mbps = 10 Mbps Ethernet link found.
found1gbps = 1 Gbps GigabitEthernet link found.
found2.4gbps = 2.4 Gbps OC-48 link found.
found45mbps = 45 Mbps T3/DS3 link found.
found622mbps = 622 Mbps OC-12 link found.
foundDialup = Dial-up modem link found.
foundDsl = Cable modem/DSL/T1 link found.
fullDuplex = Full duplex Fast Ethernet subnet
general = General
generatingReport = Generating Trouble Report: This report will be emailed to the person you specify
getWeb100Var = Get Web100 Variables
getWeb10gVar = Get Web10G Variables
halfDuplex = Half duplex Fast Ethernet subnet
id = TCP/Web100/Web10G Network Diagnostic Tool
immediate = immediate
inboundTest = Tcpbw100 inbound test...
inboundWrongMessage = C2S throughput test: Received wrong type of the message
incompatibleVersion = Incompatible version number
incrRxBuf = Increasing the the client's receive buffer
incrTxBuf = Increasing the NDT server's send buffer
information = Information
initialization = Initialization...
insufficient = Insufficent data collected to determine link type.
invokingMailtoFunction = Tcpbw100 Invoking Mailto function
ipProtocol = IP protocol
ipcFail = Interprocess communications failed, unknown link type.
usingIpv4 = -- Using IPv4 address
usingIpv6 = -- Using IPv6 address
javaData = Java data
kbyteBufferLimits = KByte buffer which limits the throughput to
limitNet = network limited
limitRx = receiver limited
limitTx = sender limited
linkFullDpx = Link set to Full Duplex mode
linkHalfDpx = Link set to Half Duplex mode
loggingWrongMessage = Logging to server: Received wrong type of the message
lookupError = Unable to obtain remote IP address
mboxWrongMessage = Middlebox test: Received wrong type of the message
meta = META
metaFailed = META test FAILED!
metaTest = META test...
metaWrongMessage = META test: Received wrong type of the message
middlebox = Middlebox
middleboxFail = Server Failed while middlebox testing
middleboxFail2 = Middlebox test FAILED!
middleboxModifyingMss = Information: Network Middlebox is modifying MSS variable
middleboxTest = Tcpbw100 Middlebox test...
moreDetails = More Details...
name = Name
ndtServerHas = The NDT server has a
noPktLoss1 = No packet loss
noPktLoss2 = No packet loss was observed
numberOfTests = Number of tests
of = of
off = OFF
ok = OK
oldDuplexMismatch = "Warning: Old Duplex mismatch condition detected: "
on = ON
ooOrder = but packets arrived out-of-order
options = Options
osData = OS data:
otherClient = Another client is currently being served, your test will begin within
otherTraffic = Information: Other network traffic is congesting the link
outboundTest = Tcpbw100 outbound test...
outboundWrongMessage = C2S throughput test: Received wrong type of the message
packetQueuing = Packet queuing
packetQueuingInfo = TCP (Transmission Control Protocol) reliably transfers data between two\n Internet hosts. It automatically detects and recovers from errors and\n losses. TCP uses buffers to provide this reliability. In addition,\n switches and routers use buffers to handle cases where multiple input\n links send packets to a single output link or link speeds change\n (FastEthernet to DSL modem).\n\n The NDT server generates and sends 10 seconds of data to the client. In\n some cases the server can generate data faster than it can send packets\n into the network (e.g., a 2 GHz CPU sending to a DSL connected client).\n When this happens, some packets may remain in the server output queue\n when the 10 second timer expires. TCP will automatically continue to\n send these queued packets and the client will continue to accept and\n process these incoming packets. This will result in the client test\n running longer than expected.\n\n This condition has occurred during this test. No action is required to\n resolve this issue.
packetSizePreserved = Packet size is preserved End-to-End
packetsize = the Packet size
pc = PC
pctOfTime = % of the time
performedTests = Performed tests
pktsRetrans = packets retransmitted
possibleDuplexFullHalf = Alarm: Possible Duplex Mismatch condition detected Switch=Full and Host=half
possibleDuplexHalfFull = Alarm: Possible Duplex Mismatch condition detected Switch=half and Host=full
possibleDuplexHalfFullWarning = Warning: Possible Duplex Mismatch condition detected Switch=half and Host=full
preferIPv6 = prefer IPv6
printDetailedStats = Print Detailed Statistics
protocolError = Protocol error! Expected 'prepare', got: 0x
qSeen = throughput test: Packet queuing detected
ready = Tcpbw100 ready
receiveBufferShouldBe = Information: The receive buffer should be
receiving = Receiving results...
reportProblem = Report problem
resultsParseError = Error parsing test results!
resultsTimeout = Warning! Client time-out while reading data, possible duplex mismatch exists
resultsWrongMessage = Tests results: Received wrong type of the message
rtt = RTT
rttFail = Link detection algorithm failed due to excessive Round Trip Times.
runningInboundTest = running 10s inbound test (server-to-client [S2C]) . . . . . .
runningOutboundTest = running 10s outbound test (client-to-server [C2S]) . . . . .
s2c = S2C
s2cPacketQueuingDetected = [S2C]: Packet queueing detected
s2cThroughput = S2C throughput
s2cThroughputFailed = S2C throughput test FAILED!
sackReceived = SACK blocks received
scalingFactors = Scaling Factors
seconds = seconds
sendingMetaInformation = Sending META information . . . . . . . . . . . . . . . . . . .
server = Server
serverAcksReport = Server Acks report link is
serverFault = Server Fault: unknown fault occurred. Please try again later
serverBusy = Server Busy: Too many clients waiting in server queue. Please try again later
serverBusy15s = Server Busy: Please wait 15 seconds for previous test to finish
serverBusy30s = Server busy: Please wait 30 seconds for previous test to finish
serverBusy60s = Server Busy: Please wait 60 seconds for previous test to finish
serverDataReports = Server Data reports link is
serverFail = Server failed while receiving data
serverIpModified = Information: Network Address Translation (NAT) box is modifying the Client's IP address
serverIpPreserved = Server IP addresses are preserved End-to-End
serverNotRunning = Server process not running: start web100srv process on remote server
serverSays = Server says
sfwFail = Simple firewall test FAILED!
sfwSocketFail = Simple firewall test: Cannot create listen socket
sfwTest = Simple firewall test...
sfwWrongMessage = Simple firewall test: Received wrong type of the message
showOptions = Show options
simpleFirewall = Simple firewall
sleep10m = Sleeping for 10 mins...
sleep1m = Sleeping for 1 min...
sleep30m = Sleeping for 30 mins...
sleep5m = Sleeping for 5 mins...
sleep12h = Sleeping for 12 hours...
sleep1d = Sleeping for 1 day...
sleep2h = Sleeping for 2 hours...
start = START
startingTest = Starting test
statistics = Statistics
stop = STOP
stopped = The tests were stopped!
stopping = Stopping...
systemFault = System Fault
test = Test
testsuiteWrongMessage = Negotiating test suite: Received wrong type of the message
theSlowestLink = The slowest link in the end-to-end path is a
theoreticalLimit = The theoretical network limit is
thisConnIs = This connection is
timesPktLoss = times due to packet loss
toMaximizeThroughput = kbytes to maximize throughput
troubleReportFrom = Trouble Report from NDT on
unableToDetectBottleneck = Server unable to determine bottleneck link type.
unableToObtainIP = Unable to obtain local IP address
unknownID = Unknown test ID
unknownServer = Unknown server
unsupportedClient = Information: The server does not support this command line client
unsupportedMsgExtendedLogin = Information: The server does not support MSG_EXTENDED_LOGIN message. Trying to connect using MSG_LOGIN.
vendor = Vendor
version = Version
versionWrongMessage = Negotiating NDT version: Received wrong type of the message
web100Details = Web100 Detailed Analysis
web100KernelVar = Web100 Kernel Variables
web100Stats = Web100 Enabled Statistics
web100Var = Web100 Variables
web100rtt = Web100 reports the Round trip time
web100tcpOpts = Web100 reports TCP negotiated the optional Performance Settings to:
web10gDetails = Web10G Detailed Analysis
web10gKernelVar = Web10G Kernel Variables
web10gStats = Web10G Enabled Statistics
web10gVar = Web10G Variables
web10grtt = Web10G reports the Round trip time
web10gtcpOpts = Web10G reports TCP negotiated the optional Performance Settings to:
willImprove = will improve performance
workstation = Workstation
your = Your
yourPcHas = Your PC/Workstation has a
connectingTo = Connecting to
toRunTest = to run test
unexpectedException=Unexpected exception
withoutMessage=without message

View File

@ -0,0 +1,233 @@
10gbps = sous-r\u00E9seau 10 Gbps 10 Gigabit Ethernet/OC-192
10mbps = sous-r\u00E9seau 10 Mbps Ethernet
10mins = 10 minutes
12hours = 12 heures
1day = 1 jour
1gbps = sous-r\u00E9seau 1.0 Gbps Gigabit Ethernet
1min = 1 minute
2.4gbps = sous-r\u00E9seau 2.4 Gbps OC-48
2hours = 2 heures
30mins = 30 minutes
45mbps = sous-r\u00E9seau 45 Mbps T3/DS3
5mins = 5 minutes
622mbps = sous-r\u00E9seau 622 Mbps OC-12
and = et
architecture = Architecture
bytes = Bytes
c2s = C2S
c2sPacketQueuingDetected = [C2S]: D\u00E9tection de mise en file d'attente de paquets
c2sThroughput = d\u00E9bit C2S
c2sThroughputFailed = test de d\u00E9bit C2S \u00C9CHOU\u00C9!
cabledsl = modem C\u00E2ble/DSL
cablesNok = Attention: trop d'erreurs r\u00E9seau, v\u00E9rifiez le(s) c\u00E2ble(s) r\u00E9seau
cablesOk = Bon(s) c\u00E2ble(s) r\u00E9seau trouv\u00E9s
checkingFirewalls = V\u00E9rification de pr\u00E9sence de Firewalls . . . . . . . . . . . . . . . . . . .
checkingMiddleboxes = V\u00E9rification de pr\u00E9sence de Middleboxes . . . . . . . . . . . . . . . . . .
clickStart = Cliquez sur D\u00C9MARRER pour commencer le test
clickStart2 = Cliquez sur D\u00C9MARRER pour re-tester
client = Client
client2 = Client
clientAcksReport = Le lien des Acks clients est
clientDataReports = Le lien des rapports de donn\u00E9es client est
clientInfo = D\u00E9tails du syst\u00E8me client
clientIpModified = Information: un \u00E9quipement Network Address Translation (NAT) modifie l'adresse IP du client
clientIpNotFound = L'adresse IP du client non trouv\u00E9e. Pour les utilisateurs IE, modifiez les param\u00E8tres Java \n Cliquez sur Outils - Options Internet - S\u00E9curit\u00E9 - Niveau personnalis\u00E9, descendez jusqu'\u00E0\n Microsoft VM - permissions Java et cliquez sur Personnalis\u00E9, cliquez sur Param\u00E8tres Java personnalis\u00E9s\n \u00C9diter les permissions - Acc\u00E8s \u00E0 toutes les adresses r\u00E9seau, cliquez sur Appliquer et sauvegardez
clientIpPreserved = Les adresses IP serveur sont pr\u00E9serv\u00E9es de bout en bout
clientSays = mais le Client dit
close = Fermez
comments = Commentaires
congestNo = Aucune congestion r\u00E9seau d\u00E9tect\u00E9e.
congestYes = Information: le d\u00E9bit est limit\u00E9 par d'autres flux r\u00E9seau.
connIdle = La connexion a \u00E9t\u00E9 oisive
connStalled = La connexion a \u00E9t\u00E9 suspendue
connected = Connect\u00E9 \u00E0:
connectedTo = est connect\u00E9 \u00E0 un
copy = Copiez
defaultTests = Tests par d\u00E9faut
delayBetweenTests = D\u00E9lai entre les tests
detailedStats = Statistiques d\u00E9taill\u00E9es
dialup = Dial-up Modem
dialup2 = Dial-up
diffrentVersion = Attention: Num\u00E9ro de version diff\u00E9rent
done = R\u00E9alis\u00E9.
done2 = Tcpbw100 r\u00E9alis\u00E9
dupAcksIn = r\u00E9ception de acks en doublon
duplexFullHalf = Alerte: condition de duplex mismatch d\u00E9tect\u00E9e, commutateur=full et h\u00F4te=half
duplexHalfFull = Alerte: condition de duplex mismatch d\u00E9tect\u00E9e, commutateur=half et h\u00F4te=full
duplexNok = Attention: condition de vieux duplex mismatch d\u00E9tect\u00E9e:
duplexOk = Op\u00E9ration normale du duplex d\u00E9tect\u00E9e.
endOfEmail = Fin de message e-mail
eqSeen = test de d\u00E9bit: Mise en file trop d'attente de paquets d\u00E9tect\u00E9e
excLoss = Une perte de paquets excessive diminue vos performances, v\u00E9rifiez les r\u00E9glages auto-negotiate de votre PC et du commutateur r\u00E9seau.
excessiveErrors = Alerte: Trop d'erreurs, v\u00E9rifiez le(s) c\u00E2ble(s) r\u00E9seau.
firewallNo = n'est pas derri\u00E8re un firewall. [Connexion vers un port \u00E9ph\u00E9m\u00E8re r\u00E9ussie]
firewallYes = est probablement derri\u00E8re un firewall. [Connexion vers un port \u00E9ph\u00E9m\u00E8re \u00E9chou\u00E9e]
flowControlLimits = Le contr\u00F4le de flux du r\u00E9seau limite le d\u00E9bit \u00E0
found100mbps = Lien 100 Mbps FastEthernet d\u00E9tect\u00E9.
found10gbps = Lien 10 Gbps 10 GigEthernet/OC-192 d\u00E9tect\u00E9.
found10mbps = Lien 10 Mbps Ethernet d\u00E9tect\u00E9.
found1gbps = Lien 1 Gbps GigabitEthernet d\u00E9tect\u00E9.
found2.4gbps = Lien 2.4 Gbps OC-48 d\u00E9tect\u00E9.
found45mbps = Lien 45 Mbps T3/DS3 d\u00E9tect\u00E9.
found622mbps = Lien 622 Mbps OC-12 d\u00E9tect\u00E9.
foundDialup = Lien modem Dial-up d\u00E9tect\u00E9.
foundDsl = Lien C\u00E2ble modem/DSL/T1 d\u00E9tect\u00E9.
fullDuplex = Full duplex Fast Ethernet subnet
general = G\u00E9n\u00E9ral
generatingReport = G\u00E9n\u00E9ration du rapport d'incident: Ce rapport sera envoy\u00E9 \u00E0 la personne sp\u00E9cifi\u00E9e
getWeb100Var = R\u00E9cup\u00E9rer les variables Web100
getWeb10gVar = R\u00E9cup\u00E9rer les variables Web10G
halfDuplex = Half duplex Fast Ethernet subnet
id = Outil de diagnostics r\u00E9seau TCP/Web100/Web10G
immediate = imm\u00E9diat
inboundTest = test d'entr\u00E9e Tcpbw100...
inboundWrongMessage = Test de d\u00E9bit C2S : r\u00E9ception du mauvais type de message
incompatibleVersion = Num\u00E9ro de version incompatible
incrRxBuf = Agrandissement du tampon de r\u00E9ception client
incrTxBuf = Agrandissement du tampon d'\u00E9mission du serveur NDT
information = Information
initialization = Initialisation...
insufficient = Trop peu de donn\u00E9es collect\u00E9es pour d\u00E9terminer le type de lien.
invokingMailtoFunction = Tcpbw100 Appel de la fonction Mailto
ipProtocol = Protocole IP
ipcFail = Communication inter-processus \u00E9chou\u00E9e, type de lien inconnu.
usingIpv4 = -- Utilisation de l'adresse IPv4
usingIpv6 = -- Utilisation de l'adresse IPv6
javaData = Donn\u00E9es Java
kbyteBufferLimits = KByte tampon, ce qui limite le d\u00E9bit \u00E0
limitNet = limit\u00E9 par le r\u00E9seau
limitRx = limit\u00E9 par le r\u00E9cepteur
limitTx = limit\u00E9 par l'\u00E9metteur
linkFullDpx = Lien r\u00E9gl\u00E9 en mode Full Duplex
linkHalfDpx = Lien r\u00E9gl\u00E9 en mode Half Duplex
loggingWrongMessage = Enregistrement aupr\u00E8s du serveur: r\u00E9ception du mauvais type de message
lookupError = Impossible d'obtenir l'adresse IP distante
mboxWrongMessage = Test de middlebox : r\u00E9ception du mauvais type de message
meta = META
metaFailed = META test FAILED!
metaTest = META test...
metaWrongMessage = META test: Received wrong type of the message
middlebox = Middlebox
middleboxFail = \u00C9chec du serveur lors du test de middlebox
middleboxFail2 = Test de middlebox \u00C9CHOU\u00C9!
middleboxModifyingMss = Information: le Middlebox modifie la variable MSS
middleboxTest = Tcpbw100 test de Middlebox...
moreDetails = Plus de d\u00E9tails...
name = Nom
ndtServerHas = Le serveur NDT a un
noPktLoss1 = Pas de perte de paquets
noPktLoss2 = Aucune perte de paquets n'a \u00E9t\u00E9 observ\u00E9e
numberOfTests = Nombre de tests
of = de
off = OFF
ok = OK
oldDuplexMismatch = "Attention: condition de vieux duplex mismatch d\u00E9tect\u00E9e: "
on = ON
ooOrder = mais les paquets sont arriv\u00E9s dans le d\u00E9sordre
options = Options
osData = Donn\u00E9es de l'OS:
otherClient = Un autre client est actuellement en train d'\u00EAtre servi, votre test commencera dans
otherTraffic = Information: d'autres flux r\u00E9seaux congestionnent le lien
outboundTest = Tcpbw100 test de sortie ...
outboundWrongMessage = Test de d\u00E9bit C2S : R\u00E9ception du mauvais type de message
packetQueuing = Mise en file d'attente de paquets
packetQueuingInfo = TCP (Transmission Control Protocol) transf\u00E8re des donn\u00E9es de mani\u00E8re fiable entre deux\n h\u00F4tes Internet. Il d\u00E9tecte et r\u00E9cup\u00E8re automatiquement les erreurs et\n pertes. TCP utilise des tampons pour fournir cette fiabilit\u00E9. De plus,\n des commutateurs et routeurs utilisent des tampons pour g\u00E9rer les cas dans lesquels plusieurs liens\n d'entr\u00E9e envoient des paquets \u00E0 un seul lien de sortie ou lorsque la vitesse des liens est diff\u00E9rente\n (FastEthernet vers un modem DSL).\n\n Le serveur NDT g\u00E9n\u00E8re et envoie 10 secondes de donn\u00E9es au client. Dans\n certains cas le serveur peut produire des donn\u00E9es plus vite qu'il ne peut envoyer les paquets\n vers le r\u00E9seau (p.e., un CPU de 2 GHz \u00E9mettant vers un client connect\u00E9 en DSL).\n Quand cela arrive, certains paquets peuvent rester dans la file d'attente de sortie du serveur\n lorsque la minuterie de 10 secondes se termine. TCP continuera automatiquement \n d'envoyer ces paquets en file d'attente et le client continuera \u00E0 les accepter et\n \u00E0 g\u00E9rer ces paquets entrants. Ceci aura pour r\u00E9sultat que le test client\n dure plus longtemps que pr\u00E9vu.\n\n Cette condition s'est r\u00E9alis\u00E9e durant ce test. Aucune action n'est n\u00E9cessaire pour r\u00E9soudre ce probl\u00E8me.
packetSizePreserved = La taille des paquets est pr\u00E9serv\u00E9e de bout-en-bout
packetsize = La taille des paquets
pc = PC
pctOfTime = % du temps
performedTests = Tests r\u00E9alis\u00E9s
pktsRetrans = paquets retransmis
possibleDuplexFullHalf = Alerte: condition de duplex mismatch possible d\u00E9tect\u00E9e, commutateur=full et h\u00F4te=half
possibleDuplexHalfFull = Alerte: condition de duplex mismatch possible d\u00E9tect\u00E9e, commutateur=half et h\u00F4te=full
possibleDuplexHalfFullWarning = Attention: condition de duplex mismatch possible d\u00E9tect\u00E9e, commutateur=half et h\u00F4te=full
preferIPv6 = pr\u00E9f\u00E9rer IPv6
printDetailedStats = Afficher les statistiques d\u00E9taill\u00E9es
protocolError = Erreur de protocole! Attendait 'prepare', re\u00E7u: 0x
qSeen = test de d\u00E9bit: Mise en file d'attente de paquets d\u00E9tect\u00E9e
ready = Tcpbw100 pr\u00EAt
receiveBufferShouldBe = Information: Le tampon de r\u00E9ception devrait \u00EAtre
receiving = Reception des r\u00E9sultats...
reportProblem = Rapporter un probl\u00E8me
resultsParseError = Erreur lors du traitement des r\u00E9sultats!
resultsTimeout = Attention! D\u00E9passement du d\u00E9lai client lors de la lecture des donn\u00E9es, il y a peut-\u00EAtre un probl\u00E8me de duplex mismatch
resultsWrongMessage = R\u00E9sultat des tests: r\u00E9ception du mauvais type de message
rtt = RTT
rttFail = L'algorithme de d\u00E9tection du lien a \u00E9chou\u00E9 \u00E0 cause d'un temps d'aller-retour (RTT) trop important.
runningInboundTest = ex\u00E9cution du test d'entr\u00E9e de 10 secondes (server-to-client [S2C]) . . . . . .
runningOutboundTest = ex\u00E9cution du test de sortie de 10s (client-to-server [C2S]) . . . . .
s2c = S2C
s2cPacketQueuingDetected = [S2C]: D\u00E9tection de mise en file d'attente de paquets
s2cThroughput = d\u00E9bit S2C
s2cThroughputFailed = Test de d\u00E9bit S2C \u00C9CHOU\u00C9!
sackReceived = Blocs SACK re\u00E7us
scalingFactors = Facteurs d'\u00E9chelle
seconds = secondes
sendingMetaInformation = Sending META information . . . . . . . . . . . . . . . . . . .
server = Serveur
serverAcksReport = les Acks du serveur rapportent que le lien est
serverFault = Erreur du serveur: une erreur inconnue a eu lieu. Veuillez re-essayer plus tard.
serverBusy = Serveur occup\u00E9: Trop de clients attendent dans la file d'attente du serveur. Veuillez re-essayer plus tard
serverBusy15s = Serveur occup\u00E9: Veuillez attendre 15 secondes pour que le test pr\u00E9c\u00E9dant termine
serverBusy30s = Serveur occup\u00E9: Veuillez attendre 30 secondes pour que le test pr\u00E9c\u00E9dant termine
serverBusy60s = Serveur occup\u00E9: Veuillez attendre 60 secondes pour que le test pr\u00E9c\u00E9dant termine
serverDataReports = Les donn\u00E9es du serveur rapportent que le lien est
serverFail = Erreur du serveur lors de la r\u00E9ception des donn\u00E9es
serverIpModified = Information: un \u00E9quipement Network Address Translation (NAT) modifie l'adresse IP du client
serverIpPreserved = Les adresses IP du serveur sont conserv\u00E9es de bout en bout
serverNotRunning = Processus serveur non actif: d\u00E9marrez le processus web100srv sur le serveur distant
serverSays = Le serveur dit
sfwFail = Le simple test firewall a \u00C9CHOU\u00C9!
sfwSocketFail = Test simple du firewall: ne peut cr\u00E9er le socket d'\u00E9coute
sfwTest = Test simple du firewall...
sfwWrongMessage = Test simple du firewall : r\u00E9ception du mauvais type de message
showOptions = Afficher les options
simpleFirewall = Simple firewall
sleep10m = En attente pour 10 minutes...
sleep1m = En attente pour 1 minute...
sleep30m = En attente pour 30 minutes...
sleep5m = En attente pour 5 minutes...
sleep12h = En attente pour 12 heures...
sleep1d = En attente pour 1 jour...
sleep2h = En attente pour 2 heures...
start = D\u00C9MARRER
startingTest = D\u00E9marrage du test
statistics = Statistiques
stop = ARRETER
stopped = Les tests ont \u00E9t\u00E9 arr\u00EAt\u00E9s !
stopping = Arr\u00EAt...
systemFault = System Fault
test = Test
testsuiteWrongMessage = Negotiating test suite: r\u00E9ception du mauvais type de message
theSlowestLink = Le lien le plus lent sur le chemin de bout en bout est un
theoreticalLimit = La limite th\u00E9orique du r\u00E9seau est
thisConnIs = Cette connexion est
timesPktLoss = fois \u00E0 cause de la perte de paquets
toMaximizeThroughput = kbytes pour maximiser le d\u00E9bit
troubleReportFrom = Rapport d'incident de NDT sur
unableToDetectBottleneck = Le serveur est incapable de d\u00E9terminer le type de lien du goulot d'\u00E9tranglement.
unableToObtainIP = Impossible d'obtenir l'adresse IP locale
unknownID = test ID inconnu
unknownServer = Serveur inconnu
unsupportedClient = Information: Le serveur n'accepte pas ce client en ligne de commande
vendor = Vendeur
version = Version
versionWrongMessage = Negotiating NDT version: r\u00E9ception du mauvais type de message
web100Details = Analyse d\u00E9taill\u00E9e Web100
web100KernelVar = Variables du noyau Web100
web100Stats = Statistiques activ\u00E9es Web100
web100Var = Variables Web100
web100rtt = Web100 rapporte le temps d'aller-retour (RTT)
web100tcpOpts = Web100 rapporte que TCP a n\u00E9goci\u00E9 les param\u00E8tres de performances facultatifs \u00E0 :
web10gDetails = Analyse d\u00E9taill\u00E9e Web10G
web10gKernelVar = Variables du noyau Web10G
web10gStats = Statistiques activ\u00E9es WebB10G
web10gVar = Variables Web10G
web10grtt = Web10G rapporte le temps d'aller-retour (RTT)
web10gtcpOpts = Web10G rapporte que TCP a n\u00E9goci\u00E9 les param\u00E8tres de performances facultatifs \u00E0 :
willImprove = am\u00E9liorera les performances
workstation = Poste de travail
your = Votre
yourPcHas = Votre PC/Poste de travail a un
connectingTo = Connexion \u00E0
toRunTest = Pour d\u00E9marrer le test

View File

@ -0,0 +1,233 @@
10gbps = 10 Gbps 10 Gigabit Ethernet/OC-192-subnett
10mbps = 10 Mbps Ethernet-subnett
10mins = 10 mins
12hours = 12 hours
1day = 1 d\u00f8ygn
1gbps = 1.0 Gbps Gigabit Ethernet-subnett
1min = 1 min
2.4gbps = 2.4 Gbps OC-48-subnett
2hours = 2 timer
30mins = 30 min
45mbps = 45 Mbps T3/DS3-subnett
5mins = 5 min
622mbps = et 622 Mbps OC-12-subnett
and = og
architecture = Arkitektur
bytes = byte
c2s = K-T
c2sPacketQueuingDetected = [K-T]: Pakkek\u00f8ing oppdaget
c2sThroughput = K-T ytelse
c2sThroughputFailed = K-T ytelsestest FEILET!
cabledsl = Kabel/DSL-modem
cablesNok = Advarsel: for mange nettverksfeil, sjekk kablene.
cablesOk = Nettverkskablene er i orden.
checkingFirewalls = Ser etter brannmurer . . . . . . . . . . . . . . . . . . .
checkingMiddleboxes = Ser etter mellombokser . . . . . . . . . . . . . . . . .
clickStart = Trykk START for \u00e5 starte testene.
clickStart2 = Trykk START for \u00e5 teste en gang til.
client = Klient
client2 = Klienten
clientAcksReport = basert p\u00e5 ack fra klienten ansl\u00e5s linken til
clientDataReports = Basert p\u00e5 data fra klienten ansl\u00e5s linken til
clientInfo = Opplysninger om klientmaskinen
clientIpModified = Til orientering: Network Address Translation (NAT) forandrer klientmaskinens IP-adresse
clientIpNotFound = IP-addressen til klientmaskinen ble ikke funnet
clientIpPreserved = Tjenermaskinens IP-adresse blir bevart fra ende til ende
clientSays = men klienten sier
close = Lukk
comments = Kommentarer
congestNo = Overbelastning i nettet ikke funnet.
congestYes = Til orientering: ytelsen er begrenset av annen trafikk i nettet.
connIdle = Forbindelsen ventet
connStalled = Forbindelsen hang
connected = Koblet til:
connectedTo = er koblet til et
connectingTo = Kobler opp mot
copy = Kopier
defaultTests = Standardtester
delayBetweenTests = Delay between tests
detailedStats = Detaljer
dialup = Oppringt modem
dialup2 = oppringt
diffrentVersion = Alarm: Different versjonsnummer
done = Ferdig
done2 = Tcpbw100 ferdig
dupAcksIn = dupliserte ack ble mottatt
duplexFullHalf = Alarm: Dupleksitetsfeil oppdaget; svitsj=full og maskin=halv
duplexHalfFull = Alarm: Dupleksitetsfeil oppdaget; svitsj=halv og maskin=full
duplexNok = Alarm: Dupleksitetsfeil:
duplexOk = Dupleksitet er i orden.
endOfEmail = Slutt p\u00e5 epost
eqSeen = ytelsestest: For mange pakkek\u00f8ing oppdaget
excLoss = "H\u00f8yt pakketap begrenser ytelsen, kontroller automatisk konfigurering mellom din datamaskin og nettverkssvitsjen.
excessiveErrors = Alarm: Alvorlige pakketap, sjekk nettverkskabler.
firewallNo = er ikke bak brannmur. [Oppn\u00e5dde forbindelse med midlertidig port]
firewallYes = er trolig bak en brannmur . [Oppn\u00e5dde ikke forbindelse med midlertidig port]
flowControlLimits = Flytkontroll i nettet begrenser ytelsen til
found100mbps = Link med 100 Mbit/s FastEthernet funnet.
found10gbps = Link med 10 Gbit/s 10 GigEthernet/OC-192 funnet.
found10mbps = Link med 10 Mbit/s Ethernet funnet.
found1gbps = Link med 1 Gbit/s GigabitEthernet funnet.
found2.4gbps = Link med 2.4 Gbit/s OC-48 funnet.
found45mbps = Link med 45 Mbit/s T3/DS3 funnet.
found622mbps = Link med 622 Mbit/s OC-12 funnet.
foundDialup = Link med oppringt modem funnet.
foundDsl = Link med kabelmodem/DSL/T1 funnet.
fullDuplex = full dupleks "Fast Ethernet"-subnett
general = Annet
generatingReport = Genererer feilrapport; denne vil bli sendt til personen du spesifiserer
getWeb100Var = Viser variabler fra Web100
getWeb10gVar = Viser variabler fra Web10G
halfDuplex = Halv-dupleks "Fast Ethernet"-subnett
id = TCP/Web100/Web10G nettverksdiagnostikkverkt\u00f8y
immediate = umiddelbart
inboundTest = Tcpbw100 innkommende test...
inboundWrongMessage = Klient-til-tjener-ytelsestest: mottok feil melding
incompatibleVersion = Inkompatibelt versjonsnummer
incrRxBuf = \u00c5 \u00f8ke klientmaskinens mottaksbuffer
incrTxBuf = \u00c5 \u00f8ke tjenermaskinens sendebuffer
information = Informasjon
initialization = Initialiserer...
insufficient = Ikke nok data til \u00e5 bestemme type link.
invokingMailtoFunction = Tcpbw100 sender post
ipProtocol = IP-protokoll
ipcFail = Feil ved kommunikasjon mellom prosesser, type link ikke bestemt.
javaData = Opplysninger om Java
kbyteBufferLimits = kbyte som begrenser ytelsen til
limitNet = begrenset av nettet
limitRx = begrenset av mottakeren
limitTx = begrenset av senderen
linkFullDpx = Linken er i full dupleksmodus.
linkHalfDpx = Linken er i halv dupleksmodus.
loggingWrongMessage = Logging til tjener: Mottok feil type melding
lookupError = Greide ikke sl\u00e5 opp tjenerens IP-addresse
mboxWrongMessage = Mellombokstest: Mottok feil type melding
meta = META
metaFailed = META test FAILED!
metaTest = META test...
metaWrongMessage = META test: Received wrong type of the message
middlebox = Mellomboks
middleboxFail = Tjenerfeil under mellombokstesting
middleboxFail2 = Mellombokstest feilet!
middleboxModifyingMss = Til orientering: En mellomboks i nettet forandrer valgt MSS
middleboxTest = Tcpbw100 mellombokstest...
moreDetails = Detaljer
name = Navn
ndtServerHas = NDT-tjeneren har en buffer p\u00e5
noPktLoss1 = Intet pakketap
noPktLoss2 = Intet pakketap
numberOfTests = Antall tester
of = av
off = AV
ok = OK
oldDuplexMismatch = Advarsel: Gammel dupleksitetsfeil oppdaget:
on = P\u00C5
ooOrder = men pakker ankom i feil rekkef\u00f8lge
options = Innstillinger
osData = Operativsystem:
otherClient = Tjeneren er for \u00f8yeblikket opptatt med en annen klient. Testen din vil begynne innen
otherTraffic = Informasjon: Annen trafikk overbelaster linken
outboundTest = Tcpbw100 utg\u00e5ende test...
outboundWrongMessage = K-T ytelsestest: mottok feil type melding
packetQueuing = Pakkek\u00f8ing
packetQueuingInfo = TCP (Transmission Control Protocol) er en p\u00e5litelig nettverksprotokoll\n som overf\u00f8rer data mellom forskjellige maskiner. Den oppdager og motvirker\n automatisk feil og pakketap. TCP bruker buffere for \u00e5 oppn\u00e5 dette.\n I tillegg s\u00e5 har svitsjer og rutere buffere for \u00e5 h\u00e5ndtere tilfeller\n hvor mange maskiner sender til samme port, eller hvor hastigheter\n endres (for eksempel "Fast Ethernet" eller et DSL-modem).\n \n NDT-tjeneren genererer og sender 10 sekunder med data til klienten.\n I noen tilfeller genererer tjeneren data kjappere enn den klarer \u00e5\n sende ut pakker til nettverket (for eksempel en tjener med 2GHz CPU\n som sender til en klient koblet til via DSL). N\u00e5r dette skjer, hender\n det at det er igjen pakker i pakkek\u00f8en n\u00e5r de 10 sekundene har passert.\n TCP vil automatisk fors\u00f8ke \u00e5 sende disse pakkene, selv om tiden er ute,\n og klienten vil fortsette \u00e5 motta de. Dette vil f\u00f8re til at klienttesten\n kan kj\u00f8re litt lenger enn forventet.\n \n Dette hendte under kj\u00f8ringen av denne testen. Du trenger ikke gj\u00f8re noe\n for \u00e5 fikse dette.
packetSizePreserved = Pakkest\u00f8rrelse blir bevart fra ende til ende
packetsize = pakkkest\u00f8rrelse
pc = Personlig datamaskin
pctOfTime = % av tiden
performedTests = Tester \u00e5 utf\u00f8re
pktsRetrans = pakker ble retransmittert
possibleDuplexFullHalf = Alarm: Mulig dupleksitetsfeil oppdaget; svitsj=full og maskin=halv
possibleDuplexHalfFull = Alarm: Mulig dupleksitetsfeil oppdaget; svitsj=halv og maskin=full
possibleDuplexHalfFullWarning = Advarsel: Mulig dupleksitetsfeil oppdaget; svitsj=halv og maskin=full
preferIPv6 = bruk IPv6 hvis mulig
printDetailedStats = Viser detaljer
protocolError = Protokollfeil! Mottok: 0x
qSeen = ytelsestest: Pakkek\u00f8ing oppdaget
ready = Tcpbw100 klar
receiveBufferShouldBe = Informasjon: Mottaksbufferen burde v\u00e6re
receiving = Henter resultater...
reportProblem = Meld fra om problemer
resultsParseError = Feil under tolkingen av testresultater!
resultsTimeout = Advarsel! Tidsavbrudd under henting av data, mulig dupleksitetsfeil
resultsWrongMessage = Testresultater: Mottok feil type melding
rtt = rundreisetid
rttFail = For lang rundreisetid til \u00e5 bestemme type link.
runningInboundTest = Kj\u00f8rer 10 sekunders innkommende test (tjener-til-klient [T-K]) . . . .
runningOutboundTest = Kj\u00f8rer 10 sekunders utg\u00e5ende test (klient-til-tjener [K-T]) . . . . . . .
s2c = T-K
s2cPacketQueuingDetected = [T-K]: Pakkek\u00f8ing oppdaget
s2cThroughput = Ytelse tjener-klient
s2cThroughputFailed = Ytelsestest fra tjener til klient FEILET!
sackReceived = SACK-blokker ble mottatt.
scalingFactors = Skaleringsfaktorer
seconds = sekunder
sendingMetaInformation = Sending META information . . . . . . . . . . . . . . . . . . .
server = Tjener
serverAcksReport = basert p\u00e5 ack fra tjeneren ansl\u00e5s linken til
serverFault = Tjener Forkastningen; Ukjente forkastningen oppstod. Du kan pr\u00f8ve senere
serverBusy = Tjener opptatt; For mange klienter i k\u00f8. Du kan pr\u00f8ve senere
serverBusy15s = Tjener opptatt; vennligst vent 15 sekunder mens forrige test kj\u00f8res ferdig
serverBusy30s = Tjener opptatt; vennligst vent 30 sekunder mens forrige test kj\u00f8res ferdig
serverBusy60s = Tjener opptatt; vennligst vent 60 sekunder mens forrige test kj\u00f8res ferdig
serverDataReports = Basert p\u00e5 data fra tjeneren ansl\u00e5s linken til
serverFail = Tjenerfeil under mottak av data
serverIpModified = Til orientering: Network Address Translation (NAT) forandrer klientmaskinens IP-adresse
serverIpPreserved = Tjenermaskinens IP-adresse blir bevart fra ende til ende
serverNotRunning = Tjenerprosess kj\u00f8rer ikke; vennligst start "web100srv" p\u00e5 tjeneren.
serverSays = Tjeneren sier
sfwFail = Enkel brannmurtest FEILET!
sfwSocketFail = Enkel brannmurtest: Kan ikke opprette lytteport
sfwTest = Enkel brannmurtest...
sfwWrongMessage = Enkel brannmurtest: Mottok feil type melding
showOptions = Vis innstillinger
simpleFirewall = Enkel brannmur
sleep10m = Venter 10 minutter...
sleep12h = Venter 12 timer...
sleep1d = Venter ett d\u00f8gn...
sleep1m = Venter ett minutt...
sleep2h = Venter to timer...
sleep30m = Venter 30 minutter...
sleep5m = Venter fem minutter...
start = START
startingTest = Starter test
statistics = Statistikk
stop = STOPP
stopped = Testene ble stoppet!
stopping = Stopper...
systemFault = systemfeil
test = Test
testsuiteWrongMessage = Avtaler tester: Mottok feil type melding
theSlowestLink = Den tregeste linken i stien mellom din maskin og tjeneren er et
theoreticalLimit = Teoretisk grense for nettet er
thisConnIs = Denne forbindelsen er
timesPktLoss = ganger p\u00e5 grunn av pakketap
toMaximizeThroughput = kilobyte for \u00e5 maksimere ytelsen
toRunTest = for \u00e5 teste
troubleReportFrom = Feilrapport fra NDT p\u00e5
unableToDetectBottleneck = Tjeneren greide ikke \u00e5 bestemme flaskehalsen i stien
unableToObtainIP = Kunne ikke f\u00e5 tak i den lokale IP-addressen
unknownID = Ukjent test-ID
unknownServer = Ukjent tjener
unsupportedClient = Informasjon: Tjeneren st\u00f8tter ikke denne kommandolinjeklienten
usingIpv4 = -- Bruker IPv4-addresse
usingIpv6 = -- Bruker IPv6-addresse
vendor = Leverand\u00f8r
version = Versjon
versionWrongMessage = Avtaler NDT-versjon: Mottok feil type melding
web100Details = Detaljerte opplysninger fra Web100
web100KernelVar = Kjernevariabler fra Web100
web100Stats = Statistikk fra Web100
web100Var = Variabler fra Web100
web100rtt = Web100 melder at rundreisetid
web100tcpOpts = Web100 melder at valgbare felt i TCP som p\u00e5virker ytelse er satt til:
web10gDetails = Detaljerte opplysninger fra Web10G
web10gKernelVar = Kjernevariabler fra Web10G
web10gStats = Statistikk fra Web10G
web10gVar = Variabler fra Web10G
web10grtt = Web10G melder at rundreisetid
web10gtcpOpts = Web10G melder at valgbare felt i TCP som p\u00e5virker ytelse er satt til:
willImprove = vil forbedre ytelsen
workstation = Arbeidsstasjon
your = Din
yourPcHas = Datamaskinen din har en buffer p\u00e5

View File

@ -0,0 +1,233 @@
10gbps = 10 Gbps 10 Gigabit Ethernet/OC-192 subnet
10mbps = 10 Mbps Ethernet subnet
10mins = 10 minutes
12hours = 12 uren
1day = 1 dag
1gbps = 1.0 Gbps Gigabit Ethernet subnet
1min = 1 minuut
2.4gbps = 2.4 Gbps OC-48 subnet
2hours = 2 uren
30mins = 30 minuten
45mbps = 45 Mbps T3/DS3 subnet
5mins = 5 minuten
622mbps = a 622 Mbps OC-12 subnet
and = en
architecture = Architectuur
bytes = Bytes
c2s = C2S
c2sPacketQueuingDetected = [C2S]: Packet queueing detected
c2sThroughput = C2S doorvoer
c2sThroughputFailed = C2S doorvoer test MISLUKT!
cabledsl = Kabel/DSL modem
cablesNok = Melding: erg veel netwerk errors, controleer de netwerk kabels
cablesOk = Goede netwerk kabel(s) gevonden
checkingFirewalls = Zoeken naar firewalls . . . . . . . . . . . . . . . . . . .
checkingMiddleboxes = Zoeken naar tussenliggende routers . . . . . . . . . . . . . . . . . .
clickStart = Klik START om de test te beginnen
clickStart2 = Klik START om opnieuw te testen
client = Client
client2 = Client
clientAcksReport = Client Acks zegt dat link is
clientDataReports = Client Data zegt dat link is
clientInfo = Client Systeem Details
clientIpModified = Informatie: Network Address Translation (NAT) Uw router verandert het IP adres
clientIpNotFound = Client IP adres niet gevonden. Voor IE gebruikers, verander de Java parameters\n Klik Tools - Internet Options - Security - Custom Level, scroll naar\n Microsoft VM - Java permissions en klik Custom, click Java Custom Settings\n Edit Permissions - Access to all Network Addresses, klik Enable en sla uw wijzigingen op
clientIpPreserved = Server IP adressen zijn beveiligd End-to-End
clientSays = maar Client zegt
close = Sluiten
comments = Commentaar
congestNo = Geen netwerk overgebruik ontdekt.
congestYes = Informatie: doorvoer is gelimiteerd door ander netwerk verkeer.
connIdle = De connectie was idle
connStalled = De connectie is vastgelopen
connected = Verbonden met:
connectedTo = is verbonden met een
copy = Kopie
defaultTests = Standaard tests
delayBetweenTests = vertraging tussen tests
detailedStats = Gedetailleerde Statistieken
dialup = Inbel Modem
dialup2 = Inbel
diffrentVersion = Melding: verschillend versie nummer
done = Klaar.
done2 = Tcpbw100 klaar
dupAcksIn = meerdere dezelfde acks ontvangen
duplexFullHalf = Alarm: Duplex Mismatch conditie gedetecteerd Switch=full en Host=half
duplexHalfFull = Alarm: Duplex Mismatch conditie gedetecteerd Switch=half en Host=full
duplexNok = Melding: Oude Duplex mismatch conditie gedetecteerd:
duplexOk = Normale duplex instellingen gevonden.
endOfEmail = Einde Van Email Bericht
eqSeen = doorvoer test: Erg veel pakket queuing gedetecteerd
excLoss = Excessieve verloren pakketten zorgen voor een slechtere doorvoer, controleer de auto-negotiate functie op uw PC en de netwerk switch
excessiveErrors = Alarm: Excessieve errors, controleer netwerk kabel(s).
firewallNo = is niet achter een firewall. [Connectie naar de directe poort was succesvol]
firewallYes = is waarschijnlijk achter een firewall. [Connectie naar de directe poort mislukt]
flowControlLimits = Het network based flow control limiteerd de doorvoer tot
found100mbps = 100 Mbps FastEthernet link gevonden.
found10gbps = 10 Gbps 10 GigEthernet/OC-192 link gevonden.
found10mbps = 10 Mbps Ethernet link gevonden.
found1gbps = 1 Gbps GigabitEthernet link gevonden.
found2.4gbps = 2.4 Gbps OC-48 link gevonden.
found45mbps = 45 Mbps T3/DS3 link gevonden.
found622mbps = 622 Mbps OC-12 link gevonden.
foundDialup = Inbel modem link gevonden.
foundDsl = Kabel modem/DSL/T1 link gevonden.
fullDuplex = Full duplex Fast Ethernet subnet
general = normaal
generatingReport = Probleem Rapport Genereren: Dit rapport wordt gemaild naar de persoon die u opgeeft
getWeb100Var = Vraag Web100 Variabelen op
getWeb10gVar = Vraag Web10G Variabelen op
halfDuplex = Half duplex Fast Ethernet subnet
id = TCP/Web100/Web10G Network Diagnostic Tool
immediate = direct
inboundTest = Tcpbw100 inkomende test...
inboundWrongMessage = C2S doorvoer test: Verkeerd type bericht ontvangen
incompatibleVersion = Incompatibel versie nummer
incrRxBuf = Verhogen van de client´s recieve buffer
incrTxBuf = Verhogen van de server´s send buffer
information = Informatie
initialization = Initialisatie...
insufficient = Niet genoeg data verzameld om link type te bepalen.
invokingMailtoFunction = Tcpbw100 Mailto functie uitvoeren
ipProtocol = IP protocol
ipcFail = Inter-proces communicatie mislukt, onbekend link type.
usingIpv4 = -- Maakt gebruik van IPv4 adres
usingIpv6 = -- Maakt gebruik van IPv6 adres
javaData = Java data
kbyteBufferLimits = KByte buffer, dit limiteerd de doorvoer tot
limitNet = netwerk gelimiteerd
limitRx = ontvanger gelimiteerd
limitTx = zender gelimiteerd
linkFullDpx = Link aangepast naar Full Duplex mode
linkHalfDpx = Link aangepast naar Half Duplex mode
loggingWrongMessage = Loggen naar server: Verkeerd type bericht ontvangen
lookupError = Kan geen remote IP adres verkrijgen
mboxWrongMessage = Middlebox test: Verkeerd type bericht ontvangen
meta = META
metaFailed = META test FAILED!
metaTest = META test...
metaWrongMessage = META test: Received wrong type of the message
middlebox = Middlebox
middleboxFail = Server heeft gefaald while middlebox testing
middleboxFail2 = Middlebox test MISLUKT!
middleboxModifyingMss = Informatie: Netwerk Middlebox verandert MSS variabele
middleboxTest = Tcpbw100 Middlebox test...
moreDetails = Meer Details...
name = Naam
ndtServerHas = De NDT server heeft een
noPktLoss1 = Geen verloren packets
noPktLoss2 = Er zijn geen verloren packets geconstateerd
numberOfTests = Aantal tests
of = van
off = OFF
ok = OK
oldDuplexMismatch = "Melding: Oude Duplex mismatch conditie gedetecteerd: "
on = ON
ooOrder = maar packets kwamen in de verkeerde volgorde aan
options = Opties
osData = OS data:
otherClient = Op dit moment wordt een andere client geholpen, uw test begint zo spoedig mogelijk
otherTraffic = Informatie: Ander netwerk verkeer vertraagd de connectie
outboundTest = Tcpbw100 uitgaande test...
outboundWrongMessage = C2S doorvoer test: Verkeerd type bericht ontvangen
packetQueuing = Pakket queuing
packetQueuingInfo = TCP (Transmission Control Protocol) verstuurd betrouwbaar tussen twee\n Internet hosts. Het detecteerd en hersteld error en verliezen.\n TCP gebruikt buffers om deze betrouwbaarheid te verzorgen. Daarnaast,\n hebben switches en routers ook buffers om situaties waarbij meerdere\n links pakketten versturen naar een enkele uitgaande poort of wanneer\n de link snelheid veranderd (FastEthernet naar DSL modem).\n\n De NDT server genereerd en verstuurd 10 seconden data naar de client. In\n sommige gevallen genereerd de server sneller pakketten dan er verstuurd\n kan worden naar het netwerk (bijv., een 2 GHz CPU naar een DSL link).\n Wanneer dit gebeurt, blijven sommige pakketten hangen in de server queue\n wanneer de 10 seconden timeout optreedt. TCP zal automatisch doorgaan\n met het verzenden van deze pakketten en de client zal deze ook blijven accepteren\n en behandelen. Dit kan ervoor zorgen dat de client test langer duurt dan gepland.\n\n Deze situatie heeft zich voorgedaan tijdens deze test. U hoeft geen actie te\n ondernemen om dit probleem op te lossen.\n
packetSizePreserved = Pakket grootte is bewaard gebleven End-to-End
packetsize = de Pakket grootte
pc = PC
pctOfTime = % van de tijd
performedTests = Uitgevoerde tests
pktsRetrans = pakketten opnieuw verstuurd
possibleDuplexFullHalf = Alarm: Mogelijke Duplex Mismatch conditie gedetecteerd Switch=Full en Host=half
possibleDuplexHalfFull = Alarm: Mogelijke Duplex Mismatch conditie gedetecteerd Switch=half en Host=full
possibleDuplexHalfFullWarning = Warning: Alarm: Mogelijke Duplex Mismatch conditie gedetecteerd Switch=half en Host=full
preferIPv6 = prefereer IPv6
printDetailedStats = Print Gedetaileerde Statistieken
protocolError = Protocol error! Verwachtte 'prepare', maar kreeg: 0x
qSeen = doorvoer test: Pakket queuing gedetecteerd
ready = Tcpbw100 klaar voor gebruik
receiveBufferShouldBe = Informatie: The ontvangst buffer zou moeten zijn
receiving = Resultaten ontvangen...
reportProblem = Rapporteer een probleem
resultsParseError = Error bij het parsen van de test resultaten!
resultsTimeout = Melding! Client time-out tijden het lezen van de data, mogelijk duplex mismatch is aanwezig
resultsWrongMessage = Test resultaten: Verkeerd type bricht ontvangen
rtt = RTT
rttFail = Link detectie algorithme mislukt vanwege excessieve Round Trip Times.
runningInboundTest = uitvoeren 10s inkomende test (server-naar-client [S2C]) . . . . . .
runningOutboundTest = uitvoeren 10s uitgaande test (client-naar-server [C2S]) . . . . .
s2c = S2C
s2cPacketQueuingDetected = [S2C]: Pakket queueing gedetecteerd
s2cThroughput = S2C doorvoer
s2cThroughputFailed = S2C tdoorvoer test MISLUKT!
sackReceived = SACK blocks ontvangen
scalingFactors = Scaling Factoren
seconds = seconden
sendingMetaInformation = Sending META information . . . . . . . . . . . . . . . . . . .
server = Server
serverAcksReport = Server Acks zegt dat link is
serverFault = De Fout van de server: de onbekende fout kwam voor. Gelieve te proberen opnieuw later
serverBusy = Server Bezig: Teveel clients wachtende in queue. Probeer het later nog eens
serverBusy15s = Server Bezig: Wacht alstublieft 15 seconden om de vorige test af te ronden
serverBusy30s = Server Bezig: Wacht alstublieft 30 seconden om de vorige test af te ronden
serverBusy60s = Server Bezig: Wacht alstublieft 60 seconden om de vorige test af te ronden
serverDataReports = Server Data zegt dat link is
serverFail = Server fout tijdens het ontvangen van data
serverIpModified = Informatie: Network Address Translation (NAT) box verandert het IP adres van de client
serverIpPreserved = Server IP adressen worden behouden End-to-End
serverNotRunning = Server proces draait niet: start het web100srv proces op de server
serverSays = Server zegt
sfwFail = Simpele firewall test MISLUKT!
sfwSocketFail = Simpele firewall test: Kan geen listen socket aanmaken
sfwTest = Simpele firewall test...
sfwWrongMessage = Simpele firewall test: Verkeerd bericht ontvangen
showOptions = Toon opties
simpleFirewall = Simpele firewall
sleep10m = Slapen voor 10 minuten...
sleep1m = Slapen voor 1 minuut...
sleep30m = Slapen voor 30 minuten...
sleep5m = Slapen voor 5 minuten...
sleep12h = Slapen voor 12 uren...
sleep1d = Slapen voor 1 dag...
sleep2h = Slapen voor 2 uren...
start = START
startingTest = Starten test
statistics = Statistieken
stop = STOP
stopped = De tests zijn gestopt!
stopping = Stoppen...
systemFault = Systeem Fout
test = Test
testsuiteWrongMessage = Overleggen test suite: Verkeerd type bericht ontvangen
theSlowestLink = De traagste link in het end-to-end pad is een
theoreticalLimit = De theoretische netwerk limiet is
thisConnIs = Deze connectie is
timesPktLoss = keren vanwege packet loss
toMaximizeThroughput = kbytes om doorvoer te maximaliseren
troubleReportFrom = Probleem Rapport van NDT op
unableToDetectBottleneck = Server kan de bottleneck link niet bepalen.
unableToObtainIP = Kan lokaal IP adres niet achterhalen
unknownID = Onbekend test ID
unknownServer = Onbekende server
unsupportedClient = Informatie: De server ondersteund deze command line client niet
vendor = Bedrijf
version = Versie
versionWrongMessage = Overleggen NDT versie: Verkeerd type bericht ontvangen
web100Details = Web100 gedetaileerde Analyze
web100KernelVar = Web100 Kernel Variabelen
web100Stats = Web100 Enabled Statistieken
web100Var = Web100 Variabelen
web100rtt = Web100 rapporteerd de Round trip time
web100tcpOpts = Web100 heeft voor TCP de volgende optionele settings overlegd:
web10gDetails = Web10G gedetaileerde Analyze
web10gKernelVar = Web10G Kernel Variabelen
web10gStats = Web10G Enabled Statistieken
web10gVar = Web10G Variabelen
web10grtt = Web10G rapporteerd de Round trip time
web10gtcpOpts = Web10G heeft voor TCP de volgende optionele settings overlegd:
willImprove = zal de performance verbeteren
workstation = Werkstation
your = Uw
yourPcHas = Uw PC/Werkstation heeft een
connectingTo = Connecten naar
toRunTest = start test

View File

@ -0,0 +1,232 @@
10gbps = sub-rede Gigabit Ethernet/OC-192 de 10 Gbps (10 Gbps 10 Gigabit Ethernet/OC-192 subnet)
10mbps = sub-rede Ethernet de 10 Mbps (10 Mbps Ethernet subnet)
10mins = 10 min
12hours = 12 horas
1day = 1 dia
1gbps = sub-rede Gigabit Ethernet de 1.0 Gbps (1.0 Gbps Gigabit Ethernet subnet)
1min = 1 min
2.4gbps = sub-rede OC-48 de 2.4 Gbps ( 2.4 GbpsOC-48 subnet)
2hours = 2 horas
30mins = 30 min
45mbps = sub-rede T3/DS3 de 45 Mbps (45 Mbps T3/DS3 subnet)
5mins = 5 min
622mbps = uma sub-rede OC-12 de 622 Mbps ( a 622 Mbps OC-12 subnet)
and = e
architecture = Arquitetura
bytes = Bytes
c2s = C2S
c2sPacketQueuingDetected = [C2S]: Fila de pacotes detectada
c2sThroughput = C2S taxa de transfer\u00EAncia
c2sThroughputFailed = C2S teste de taxa de transfer\u00EAncia FALHOU!
cabledsl = Cabo/ modem DSL
cablesNok = Aviso: excessivos erros de rede detectados, verifique o(s) cabo(s) de rede
cablesOk = Encontrado(s) cabo(s) de rede adequados
checkingFirewalls = Procurando por firewalls . . . . . . . . . . . . . . . . . . .
checkingMiddleboxes = Procurando por Middleboxes . . . . . . . . . . . . . . . . . .
clickStart = Clique em INICIAR para iniciar o teste
clickStart2 = Clique em INICIAR para executar o teste novamente
client = Cliente
client2 = Cliente
clientAcksReport = Cliente Acks reporta que o link \u00E9
clientDataReports = Dados do Cliente reporta que o link \u00E9
clientInfo = Detalhes do Sistema do Cliente
clientIpModified = Informa\u00E7\u00E3o: Network Address Translation (NAT) box est\u00E1 modificando o endere\u00E7o IP do cliente
clientIpNotFound = Endere\u00E7o IP do Cliente n\u00E3o encontrado. Para usu\u00E1rios do IE, altere os par\u00E2metros do Java\n clique em Ferramentas - Op\u00E7\u00F5es da Internet - Seguran\u00E7a - N\u00EDvel personalizado, role para baixo at\u00E9 Microsoft VM - Permiss\u00F5es Java e clique em Customizar, clique Customizar configura\u00E7\u00F5es do Java\n Edite as Permiss\u00F5es - Acesse todos Endere\u00E7os de Rede, clique em habilitar e salve as altera\u00E7\u00F5es
clientIpPreserved = Endere\u00E7os IP do Servidor s\u00E3o preservados fim a fim
clientSays = mas o Cliente diz
close = Fechar
comments = Comment\u00E1rios
congestNo = Congestionamento da rede n\u00E3o foi detectado
congestYes = Informa\u00E7\u00E3o: taxa de transfer\u00EAncia \u00E9 limitada devido a outro tr\u00E1fego de rede.
connIdle = A conex\u00E3o estava ociosa em
connStalled = A conex\u00E3o foi interrompida
connected = Conectado a:
connectedTo = est\u00E1 conectado a um(a)
copy = Copiar
defaultTests = Testes padr\u00E3o
delayBetweenTests = Atraso entre os testes
detailedStats = Estat\u00EDsticas detalhadas
dialup = Modem Dial-up
dialup2 = Discada
diffrentVersion = Aviso: N\u00FAmero da vers\u00E3o diferente
done = Conclu\u00EDdo
done2 = Tcpbw100 conclu\u00EDdo.
dupAcksIn = acks duplicados recebidos
duplexFullHalf = Alerta: Dupla condi\u00E7\u00E3o de incompatibilidade detectada Switch=Full e Host=half
duplexHalfFull = Alerta: Dupla condi\u00E7\u00E3o de incompatibilidade detectada Switch=half e Host=full
duplexNok = Aviso: Antiga dupla condi\u00E7\u00E3o de incompatibilidade detectada:
duplexOk = Dupla opera\u00E7\u00E3o normal encontrada.
endOfEmail = Final da mensagem de E-mail
eqSeen = teste de taxa de transfer\u00EAncia: Excessivos enfileiramento de pacotes detectado
excLoss = Excessiva perda de pacotes est\u00E1 impactando na sua performance, cheque a fun\u00E7\u00E3o auto-negotiate no seu computador local e no switch da rede
excessiveErrors = Alerta: Erros excessivos, verifique o(s) cabo(s) de rede.
firewallNo = n\u00E3o protegido por firewall. [Conex\u00E3o com a porta ef\u00EAmera conclu\u00EDda com \u00EAxito]
firewallYes = provavelmente protegido por firewall. [Conex\u00E3o com a porta ef\u00EAmera falhou]
flowControlLimits = O controle de fluxo da rede limita a taxa de transfer\u00EAncia em
found100mbps = link de 100 Mbps FastEthernet encontrado.
found10gbps = link de 10 Gbps 10 GigEthernet/OC-192 encontrado.
found10mbps = link de 10 Mbps Ethernet encontrado.
found1gbps = link de 1 Gbps GigabitEthernet encontrado.
found2.4gbps = link de 2.4 Gbps OC-48 encontrado.
found45mbps = link de 45 Mbps T3/DS3 encontrado.
found622mbps = link de 622 Mbps OC-12 encontrado.
foundDialup = link de Dial-up modem encontrado.
foundDsl = link de modem a cabo/DSL/T1 encontrado.
fullDuplex = sub-rede Full duplex Fast Ethernet
general = Geral
generatingReport = Gerando Relat\u00F3rio de Problemas: Esse relat\u00F3rio ser\u00E1 enviado por email para a pessoa que voc\u00EA especificar
getWeb100Var = Buscar vari\u00E1veis Web100
getWeb10gVar = Buscar vari\u00E1veis Web10G
halfDuplex = sub-rede Half duplex Fast Ethernet
id = TCP/Web100/Web10G Ferramenta de Diagn\u00F3stico da Rede
immediate = imediato
inboundTest = Tcpbw100 teste de entrada inbound test...
inboundWrongMessage = C2S teste de taxa de transfer\u00EAncia: Tipo errado de mensagem foi recebido
incompatibleVersion = N\u00FAmero da vers\u00E3o incompat\u00EDvel
incrRxBuf = Aumentando o buffer de recep\u00E7\u00E3o do cliente
incrTxBuf = Aumentando o buffer de envio do servidor NDT
information = Informa\u00E7\u00E3o
initialization = Inicializa\u00E7\u00E3o...
insufficient = Dados coletados s\u00E3o insuficientes para determinar tipo de link.
invokingMailtoFunction = Tcpbw100 Chamando fun\u00E7\u00E3o Mailto
ipProtocol = Protocolo IP
ipcFail = Comunica\u00E7\u00F5es entre processos falhou, tipo de link desconhecido.
usingIpv4 = -- Usando endere\u00E7o IPv4
usingIpv6 = -- Usando endere\u00E7o IPv6
javaData = Dados Java
kbyteBufferLimits = KByte buffer que limita a taxa de transfer\u00EAncia para
limitNet = limitada pela rede em
limitRx = destinat\u00E1rio limitado
limitTx = remetende limitado
linkFullDpx = Link definido/configurado para modo Full Duplex
linkHalfDpx = Link definido/configurado para modo Half Duplex
loggingWrongMessage = Logando ao servidor: Tipo errado de mensagem foi recebido
lookupError = N\u00E3o foi poss\u00EDvel obter o endere\u00E7o IP remoto
mboxWrongMessage = Teste Middlebox : Tipo errado de mensagem foi recebido
meta = META
metaFailed = META test FAILED!
metaTest = META test...
metaWrongMessage = META test: Received wrong type of the message
middlebox = Middlebox
middleboxFail = Servidor falhou durante o teste de middlebox
middleboxFail2 = Teste Middlebox FALHOU!
middleboxModifyingMss = Informa\u00E7\u00E3o: Middlebox da Rede est\u00E1 modificando a vari\u00E1vel MSS
middleboxTest = Tcpbw100 teste Middlebox ...
moreDetails = Mais Detalhes...
name = Nome
ndtServerHas = O servidor NDT possui um
noPktLoss1 = Perda de pacotes n\u00E3o
noPktLoss2 = N\u00E3o foi observada perda de pacotes
numberOfTests = N\u00FAmero de testes
of = de
off = DESLIGADO
ok = OK
oldDuplexMismatch = "Aviso: Antiga dupla condi\u00E7\u00E3o de incompatibilidade detectada:"
on = LIGADO
ooOrder = mas os pacotes fotam recebidos fora da ordem
options = Op\u00E7\u00F5es
osData = Dados do SO:
otherClient = Outro cliente est\u00E1 sendo servido, seu teste ter\u00E1 in\u00EDcio em
otherTraffic = Informa\u00E7\u00E3o: Tr\u00E1fego de outras redes est\u00E1 congestionando o link
outboundTest = Tcpbw100 teste de sa\u00EDda...
outboundWrongMessage = C2S teste de taxa de transfer\u00EAncia: Tipo errado de mensagem foi recebido
packetQueuing = Filas de Pacotes
packetQueuingInfo = TCP (Protocolo de Controle de Transmiss\u00E3o) transfere dados de forma confi\u00E1vel entre dois\n hosts. Ele automaticamente detecta e recupera de erros\ n e perdas. O TCP usa buffers para prover essa confiabilidade. Al\u00E9m disso, switches e roteadores usam buffers para lidar/gerenciar casos em que v\u00E1rios links enviam pacotes para uma \u00FAnica sa\u00EDda ou a velocuidade do link muda\n (Ethernet R\u00E1pida para modem DSL.\n\n O servidor NDT gera e envia 10 segundos de dados para o cliente. Em\n alguns casos o servidor pode gerar dados mais r\u00E1pido do que enviar pacotes para a rede (ex: um CPU de 2GHz enviando para um cliente conectado a um DSL).\n Quando isso ocorre, alguns pacotes podem ficar enfileiirados na sa\u00EDda do servidor\n quando \u00E9 expirado o tempo de 10 segundos. O TCP automaticamente continuar\u00E1 a enviar esses pacotes enfileirados e o cliente vai continuar aceitando e processando esses pacotes. Isso resulta em um maior tempo de execu\u00E7\u00E3o do teste do cliente. Essa situa\u00E7\u00E3o ocorreu durante esse teste. Nenhuma a\u00E7\u00E3o \u00E9 requerida para\n resolver esse problema.
packetSizePreserved = O Tamanho do Pacote \u00E9 preservado Fim a Fim
packetsize = o tamanho do Pacote
pc = PC
pctOfTime = % do tempo
performedTests = Testes executados
pktsRetrans = pacotes retransmitidos
possibleDuplexFullHalf = Alarme: Poss\u00EDvel Dupla condi\u00E7\u00E3o de incompatibilidade detectada Switch=Full e Host=half
possibleDuplexHalfFull = Alarme: Poss\u00EDvel Dupla condi\u00E7\u00E3o de incompatibilidade detectada Switch=half e Host=full
possibleDuplexHalfFullWarning = Aviso: Poss\u00EDvel Dupla condi\u00E7\u00E3o de incompatibilidade detectada Switch=half e Host=full
preferIPv6 = prefira IPv6
printDetailedStats = Imprima as Estat\u00EDsticas Detalhadas
protocolError = Erro de Protocolo! Esperado 'prepare', obtido: 0x
qSeen = teste de taxa de transfer\u00EAncia: Enfileiramento de pacotes detectado
ready = Tcpbw100 pronto
receiveBufferShouldBe = Informa\u00E7\u00E3o: O buffer de recep\u00E7\u00E3o deve ser
receiving = Recebendo resultados...
reportProblem = Reportar problema
resultsParseError = Erro ao analisar os resultados do teste!
resultsTimeout = Aviso! Tempo do cliente expirou ao ler os dados, poss\u00EDvel exist\u00EAncia de uma dupla condi\u00E7\u00E3o de incompatibilidade
resultsWrongMessage = Resultados dos Testes: Tipos errados de mensagem foram recebidos
rtt = RTT
rttFail = Algor\u00EDtmo de detec\u00E7\u00E3o do link falhou devido a excessivos
runningInboundTest = executando teste de entrada de 10s (servidor para cliente [S2C]) . . . . . .
runningOutboundTest = executando teste de sa\u00EDda de 10s (cliente para servidor [C2S]) . . . . .
s2c = S2C
s2cPacketQueuingDetected = [S2C]: Enfileiramento de pacotes detectados
s2cThroughput = S2C taxa de transfer\u00EAncia
s2cThroughputFailed = S2C teste de taxa de transfer\u00EAncia FALHOU!
sackReceived = Blocos SACK recebidos
scalingFactors = Fatores de Escala/escalonamento
seconds = segundos
sendingMetaInformation = Sending META information . . . . . . . . . . . . . . . . . . .
server = Servidor
serverAcksReport = Servidor Acks reporta que o link \u00E9
serverBusy = Servidor Ocupado: Muitos clientes aguardando na fila do servidor. Por favor, tente novamente mais tarde.
serverBusy15s = Servidor Ocupado: Por favor, aguarde 15 segundos para a finaliza\u00E7\u00E3o do teste anterior
serverBusy30s = Servidor Ocupado: Por favor, aguarde 30 segundos para a finaliza\u00E7\u00E3o do teste anterior
serverBusy60s = Servidor Ocupado: Por favor, aguarde 60 segundos para a finaliza\u00E7\u00E3o do teste anterior
serverDataReports = Dados do servidor reporta que o link \u00E9
serverFail = Servidor falhou enquanto recebia dados
serverIpModified = Informa\u00E7\u00E3o: Network Address Translation (NAT) box est\u00E1 modificando o endere\u00E7o IP do cliente
serverIpPreserved = Endere\u00E7os IP do Servidor s\u00E3o preservados fim a fim
serverNotRunning = Processo do servidor n\u00E3o est\u00E1 executando : inicie o processo web100srv no servidor remoto
serverSays = Servidor diz
sfwFail = Teste simples de firewall FALHOU!
sfwSocketFail = Teste simples de firewall: N\u00E3o pode ser criado socket para escuta
sfwTest = Teste simples de firewall...
sfwWrongMessage = Teste simples de firewall: Tipos errados de mensagem foram recebidos
showOptions = Mostrar op\u00E7\u00F5es
simpleFirewall = Firewall simples
sleep10m = Dormindo por 10 min...
sleep1m = Dormindo por 1 min...
sleep30m = Dormindo por 30 min...
sleep5m = Dormindo por 5 min...
sleep12h = Dormindo por 12 horas...
sleep1d = Dormindo por 1 dia...
sleep2h = Dormindo por 2 horas...
start = INICIAR
startingTest = Iniciando Teste
statistics = Estat\u00EDsticas
stop = PARAR
stopped = Os testes foram interrompidos!
stopping = Parando...
systemFault = Falha do Sistema
test = Teste
testsuiteWrongMessage = Negotiating test suite: Tipos errados de mensagem foram recebidos
theSlowestLink = O link mais lento no caminho fim a fim \u00E9
theoreticalLimit = O limite te\u00F3rico da rede \u00E9
thisConnIs = A conex\u00E3o est\u00E1
timesPktLoss = vezes devido a perda de pacotes
toMaximizeThroughput = kbytes para maximizar a taxa de transfer\u00EAncia
troubleReportFrom = Trouble Report from NDT on
unableToDetectBottleneck = Servidor n\u00E3o conseguiu determinar o tipo de gargalo.
unableToObtainIP = N\u00E3o foi poss\u00EDvel obter o endere\u00E7o IP local
unknownID = ID de teste desconhecido
unknownServer = Servidor desconhecido
unsupportedClient = Informa\u00E7\u00E3o: Esse servidor n\u00E3o fornece suporte a essa linha de comando
vendor = Fabricante
version = Vers\u00E3o
versionWrongMessage = Negociando vers\u00E3o do NDT : Tipo errado de mensagem foi recebido
web100Details = An\u00E1lise detalhada Web100
web100KernelVar = Vari\u00E1veis do Kernel Web100
web100Stats = Estat\u00EDsticas Web100 dispon\u00EDveis
web100Var = Vari\u00E1veis Web100
web100rtt = Web100 reporta o tempo de Ida e Volta
web100tcpOpts = Web100 verifica que TCP negociou as configura\u00E7\u00F5es de performance opicionais para:
web10gDetails = An\u00E1lise detalhada Web10G
web10gKernelVar = Vari\u00E1veis do Kernel Web10G
web10gStats = Estat\u00EDsticas Web10G dispon\u00EDveis
web10gVar = Vari\u00E1veis Web10G
web10grtt = Web10G reporta o tempo de Ida e Volta
web10gtcpOpts = Web10G verifica que TCP negociou as configura\u00E7\u00F5es de performance opicionais para:
willImprove = ir\u00E1 melhorar a performance
workstation = Esta\u00E7\u00E3o de trabalho
your = Sua
yourPcHas = Seu PC/Esta\u00E7\u00E3o de Trabalho tem um
connectingTo = Conectando a
toRunTest = para executar o teste

File diff suppressed because one or more lines are too long

49
licenses/LICENSE-NDT.txt Normal file
View File

@ -0,0 +1,49 @@
Copyright (c) 2003 University of Chicago. All rights reserved.
The Web100 Network Diagnostic Tool (NDT) is distributed subject to the
following license conditions:
SOFTWARE LICENSE AGREEMENT
Software: Web100 Network Diagnostic Tool (NDT)
1. The "Software", below, refers to the Web100 Network Diagnostic Tool
(NDT) (in either source code, or binary form and accompanying documentation).
Each licensee is addressed as "you" or "Licensee."
2. The copyright holder shown above hereby grants Licensee a royalty-free
nonexclusive license, subject to the limitations stated herein and U.S.
Government license rights.
3. You may modify and make a copy or copies of the Software for use within
your organization, if you meet the following conditions:
a. Copies in source code must include the copyright notice and this Software
License Agreement.
b. Copies in binary form must include the copyright notice and this Software
License Agreement in the documentation and/or other materials provided with the copy.
4. You may make a copy, or modify a copy or copies of the Software or any
portion of it, thus forming a work based on the Software, and distribute
copies outside your organization, if you meet all of the following conditions:
a. Copies in source code must include the copyright notice and this Software
License Agreement;
b. Copies in binary form must include the copyright notice and this Software
License Agreement in the documentation and/or other materials provided with the copy;
c. Modified copies and works based on the Software must carry prominent
notices stating that you changed specified portions of the Software.
5. Portions of the Software resulted from work developed under a U.S.
Government contract and are subject to the following license: the Government
is granted for itself and others acting on its behalf a paid-up, nonexclusive,
irrevocable worldwide license in this computer software to reproduce, prepare
derivative works, and perform publicly and display publicly.
6. WARRANTY DISCLAIMER. THE SOFTWARE IS SUPPLIED "AS IS" WITHOUT WARRANTY OF
ANY KIND. THE COPYRIGHT HOLDER, THE UNITED STATES, THE UNITED STATES DEPARTMENT
OF ENERGY, AND THEIR EMPLOYEES: (1) DISCLAIM ANY WARRANTIES, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, TITLE OR NON-INFRINGEMENT, (2) DO NOT ASSUME
ANY LEGAL LIABILITY OR RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR
USEFULNESS OF THE SOFTWARE, (3) DO NOT REPRESENT THAT USE OF THE SOFTWARE WOULD
NOT INFRINGE PRIVATELY OWNED RIGHTS, (4) DO NOT WARRANT THAT THE SOFTWARE
WILL FUNCTION UNINTERRUPTED, THAT IT IS ERROR-FREE OR THAT ANY ERRORS WILL BE CORRECTED.
7. LIMITATION OF LIABILITY. IN NO EVENT WILL THE COPYRIGHT HOLDER, THE UNITED
STATES, THE UNITED STATES DEPARTMENT OF ENERGY, OR THEIR EMPLOYEES: BE LIABLE
FOR ANY INDIRECT, INCIDENTAL, CONSEQUENTIAL, SPECIAL OR PUNITIVE DAMAGES OF ANY
KIND OR NATURE, INCLUDING BUT NOT LIMITED TO LOSS OF PROFITS OR LOSS OF DATA,
FOR ANY REASON WHATSOEVER, WHETHER SUCH LIABILITY IS ASSERTED ON THE BASIS OF
CONTRACT, TORT (INCLUDING NEGLIGENCE OR STRICT LIABILITY), OR OTHERWISE, EVEN
IF ANY OF SAID PARTIES HAS BEEN WARNED OF THE POSSIBILITY OF SUCH LOSS OR DAMAGES.
The Software was developed at least in part by the University of Chicago, as
Operator of Argonne National Laboratory (http://miranda.ctd.anl.gov:7123/).