diff --git a/components/measurement/nettests/FacebookMessenger.js b/components/measurement/nettests/FacebookMessenger.js index ab91414d..a6fb1792 100644 --- a/components/measurement/nettests/FacebookMessenger.js +++ b/components/measurement/nettests/FacebookMessenger.js @@ -5,13 +5,15 @@ import { DetailsBox } from '../DetailsBox' import StatusInfo from '../StatusInfo' import { formatTwoTuple } from 'utils' -export const FacebookMessengerDetails = ({ measurement, render }) => { +export const FacebookMessengerDetails = ({ measurement, render, isAnomaly, isFailure, isConfirmed, scores }) => { const intl = useIntl() - const testKeys = measurement.test_keys - const isWorking = - testKeys.facebook_dns_blocking === false && - testKeys.facebook_tcp_blocking === false - const dnsBlocking = testKeys.facebook_dns_blocking === true + console.log("scores", scores) + const testKeys = measurement?.test_keys ?? {} + const isWorking = !isAnomaly && !isFailure && !isConfirmed + // testKeys.facebook_dns_blocking === false && + // testKeys.facebook_tcp_blocking === false + const dnsBlocking = scores?.facebook_dns_blocking === true + // testKeys.facebook_dns_blocking === true const tcpBlocking = testKeys.facebook_tcp_blocking === true const tcpConnections = testKeys.tcp_connect diff --git a/components/measurement/nettests/HTTPHeaderFieldManipulation.js b/components/measurement/nettests/HTTPHeaderFieldManipulation.js index c1f8b5b4..d16f10e5 100644 --- a/components/measurement/nettests/HTTPHeaderFieldManipulation.js +++ b/components/measurement/nettests/HTTPHeaderFieldManipulation.js @@ -1,19 +1,7 @@ import { defineMessages, useIntl } from 'react-intl' -export const HttpHeaderFieldManipulationDetails = ({ measurement, render }) => { +export const HttpHeaderFieldManipulationDetails = ({ measurement, render, isAnomaly }) => { const intl = useIntl() - const testKeys = measurement.test_keys - let isAnomaly = false - let isFailed = true - const tampering = testKeys?.tampering || {} - for (const key of Object.keys(tampering)) { - if (tampering[key] === true) { - isAnomaly = true - } - if (tampering[key] !== null) { - isFailed = false - } - } const messages = defineMessages({ middleboxes: { diff --git a/components/measurement/nettests/HTTPInvalidRequestLine.js b/components/measurement/nettests/HTTPInvalidRequestLine.js index 69653f1c..9dd6d296 100644 --- a/components/measurement/nettests/HTTPInvalidRequestLine.js +++ b/components/measurement/nettests/HTTPInvalidRequestLine.js @@ -1,11 +1,10 @@ import PropTypes from 'prop-types' import { FormattedMessage, defineMessages } from 'react-intl' -const HttpInvalidRequestLineDetails = ({ measurement, render }) => { - const testKeys = measurement.test_keys - const isAnomaly = testKeys.tampering === true - const isOK = testKeys.tampering === false - const isFailed = testKeys.tampering === null +const HttpInvalidRequestLineDetails = ({ measurement, render, isAnomaly, isFailure, isConfirmed, scores }) => { + const testKeys = measurement?.test_keys ?? {} + const isOK = !isAnomaly && !isFailure && !isConfirmed + const isFailed = isFailure const sentMessages = testKeys.sent const receivedMessages = testKeys.received diff --git a/components/measurement/nettests/Psiphon.js b/components/measurement/nettests/Psiphon.js index ec2566f1..6992d494 100644 --- a/components/measurement/nettests/Psiphon.js +++ b/components/measurement/nettests/Psiphon.js @@ -4,10 +4,8 @@ import { FormattedMessage, defineMessages } from 'react-intl' import AccessPointStatus from '../AccessPointStatus' -const PsiphonDetails = ({ measurement, render }) => { - const { - test_keys: { failure, bootstrap_time }, - } = measurement +const PsiphonDetails = ({ measurement, isAnomaly, render }) => { + const { bootstrap_time } = measurement?.test_keys ?? {} const messages = defineMessages({ reachable: { @@ -27,7 +25,7 @@ const PsiphonDetails = ({ measurement, render }) => { // https://github.com/ooni/spec/blob/master/nettests/ts-015-psiphon.md#possible-conclusions // Determine if psiphon is blocked and if the probe could bootstrap psiphon - if (failure) { + if (isAnomaly) { status = 'anomaly' metaText = messages.unReachable if (bootstrap_time === 0) { diff --git a/components/measurement/nettests/Signal.js b/components/measurement/nettests/Signal.js index 20c6d566..f6850d8c 100644 --- a/components/measurement/nettests/Signal.js +++ b/components/measurement/nettests/Signal.js @@ -1,4 +1,3 @@ -import PropTypes from 'prop-types' import { defineMessages, useIntl } from 'react-intl' const messages = defineMessages({ @@ -16,11 +15,9 @@ const messages = defineMessages({ }, }) -const SignalDetails = ({ measurement, render }) => { +const SignalDetails = ({ measurement, render, isAnomaly, isFailure, isConfirmed, scores }) => { const intl = useIntl() - const testKeys = measurement.test_keys - const { signal_backend_status, signal_backend_failure } = testKeys - const anomaly = signal_backend_status === 'blocked' + const anomaly = isAnomaly let hint = intl.formatMessage({ id: 'Measurement.Status.Hint.Signal.Reachable', @@ -45,9 +42,4 @@ const SignalDetails = ({ measurement, render }) => { }) } -SignalDetails.propTypes = { - measurement: PropTypes.object.isRequired, - render: PropTypes.func, -} - export default SignalDetails diff --git a/components/measurement/nettests/TorSnowflake.js b/components/measurement/nettests/TorSnowflake.js index 4cca1c22..3d7c944a 100644 --- a/components/measurement/nettests/TorSnowflake.js +++ b/components/measurement/nettests/TorSnowflake.js @@ -20,9 +20,7 @@ const messages = defineMessages({ }) const TorSnowflakeDetails = ({ isAnomaly, isFailure, measurement, render }) => { - const { - test_keys: { bootstrap_time, failure }, - } = measurement + const { bootstrap_time, failure } = measurement?.test_keys ?? {} let status let hint diff --git a/components/measurement/nettests/WebConnectivity.js b/components/measurement/nettests/WebConnectivity.js index 9dcfd899..5eda70f2 100644 --- a/components/measurement/nettests/WebConnectivity.js +++ b/components/measurement/nettests/WebConnectivity.js @@ -247,8 +247,8 @@ const validateMeasurement = (measurement) => { }, }, test_keys: { - accessible: undefined, - blocking: undefined, + // accessible: undefined, + // blocking: undefined, queries: undefined, tcp_connect: undefined, requests: undefined, @@ -368,7 +368,7 @@ const WebConnectivityDetails = ({ ) } else if (isAnomaly) { status = 'anomaly' - const blockingReason = blocking ?? scores?.analysis?.blocking_type ?? null + const blockingReason = scores?.analysis?.blocking_type ?? null reason = messages[`blockingReason.${blockingReason}`] && intl.formatMessage(messages[`blockingReason.${blockingReason}`]) @@ -404,7 +404,7 @@ const WebConnectivityDetails = ({ reason, }, ) - } else if (accessible) { + } else { status = 'reachable' summaryText = ( , - network: probe_asn, - country, - }} - /> - ) - headMetadata.message = intl.formatMessage( - { - id: 'Measurement.Metadata.WebConnectivity.Down', - defaultMessage: '{hostname} was down in {country}', - }, - { - date, - hostname, - country, - }, - ) - } else { - // Fallback condition to handle older measurements not present in fastpath - // See: https://github.com/ooni/explorer/issues/426#issuecomment-612094244 - status = 'error' - summaryText = ( - , - network: probe_asn, - country, - }} - /> - ) - headMetadata.message = intl.formatMessage( - { - id: 'Measurement.Metadata.WebConnectivity.Failed', - defaultMessage: '{hostname} failed to be measured in {country}', - }, - { - date, - hostname, - country, - }, - ) } + // else if (blocking === false) { + // // When not accessible, but also not blocking, it must be down + // status = 'down' + // summaryText = ( + // , + // network: probe_asn, + // country, + // }} + // /> + // ) + // headMetadata.message = intl.formatMessage( + // { + // id: 'Measurement.Metadata.WebConnectivity.Down', + // defaultMessage: '{hostname} was down in {country}', + // }, + // { + // date, + // hostname, + // country, + // }, + // ) + // } else { + // // Fallback condition to handle older measurements not present in fastpath + // // See: https://github.com/ooni/explorer/issues/426#issuecomment-612094244 + // status = 'error' + // summaryText = ( + // , + // network: probe_asn, + // country, + // }} + // /> + // ) + // headMetadata.message = intl.formatMessage( + // { + // id: 'Measurement.Metadata.WebConnectivity.Failed', + // defaultMessage: '{hostname} failed to be measured in {country}', + // }, + // { + // date, + // hostname, + // country, + // }, + // ) + // } const tcpConnections = Array.isArray(tcp_connect) ? tcp_connect.map((connection) => { diff --git a/components/measurement/nettests/WhatsApp.js b/components/measurement/nettests/WhatsApp.js index a0458487..b83534cb 100644 --- a/components/measurement/nettests/WhatsApp.js +++ b/components/measurement/nettests/WhatsApp.js @@ -6,7 +6,7 @@ import { DetailsBox } from '../DetailsBox' import { formatTwoTuple } from 'utils' const WhatsAppDetails = ({ isAnomaly, scores, measurement, render }) => { - const testKeys = measurement.test_keys + const testKeys = measurement?.test_keys ?? {} const tcp_connect = testKeys.tcp_connect let registrationServerAccessible let webAccessible diff --git a/pages/m/[measurement_uid].js b/pages/m/[measurement_uid].js index e946b0b1..473a9555 100644 --- a/pages/m/[measurement_uid].js +++ b/pages/m/[measurement_uid].js @@ -128,7 +128,7 @@ const Measurement = ({ error, isValidating: isLoadingMeasurementData, } = useSWR( - `${process.env.NEXT_PUBLIC_OONI_API}/api/v1/measurement_meta?measurement_uid=${measurementUid}&full=true`, + `${process.env.NEXT_PUBLIC_OONI_API}/api/v1/measurement_meta?measurement_uid=${measurementUid}`, measurementFetcher, { revalidateOnFocus: false,