Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 8 additions & 6 deletions components/measurement/nettests/FacebookMessenger.js
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
14 changes: 1 addition & 13 deletions components/measurement/nettests/HTTPHeaderFieldManipulation.js
Original file line number Diff line number Diff line change
@@ -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: {
Expand Down
9 changes: 4 additions & 5 deletions components/measurement/nettests/HTTPInvalidRequestLine.js
Original file line number Diff line number Diff line change
@@ -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

Expand Down
8 changes: 3 additions & 5 deletions components/measurement/nettests/Psiphon.js
Original file line number Diff line number Diff line change
Expand Up @@ -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: {
Expand All @@ -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) {
Expand Down
12 changes: 2 additions & 10 deletions components/measurement/nettests/Signal.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import PropTypes from 'prop-types'
import { defineMessages, useIntl } from 'react-intl'

const messages = defineMessages({
Expand All @@ -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',
Expand All @@ -45,9 +42,4 @@ const SignalDetails = ({ measurement, render }) => {
})
}

SignalDetails.propTypes = {
measurement: PropTypes.object.isRequired,
render: PropTypes.func,
}

export default SignalDetails
4 changes: 1 addition & 3 deletions components/measurement/nettests/TorSnowflake.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
111 changes: 56 additions & 55 deletions components/measurement/nettests/WebConnectivity.js
Original file line number Diff line number Diff line change
Expand Up @@ -247,8 +247,8 @@ const validateMeasurement = (measurement) => {
},
},
test_keys: {
accessible: undefined,
blocking: undefined,
// accessible: undefined,
// blocking: undefined,
queries: undefined,
tcp_connect: undefined,
requests: undefined,
Expand Down Expand Up @@ -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}`])
Expand Down Expand Up @@ -404,7 +404,7 @@ const WebConnectivityDetails = ({
reason,
},
)
} else if (accessible) {
} else {
status = 'reachable'
summaryText = (
<FormattedMessage
Expand All @@ -428,58 +428,59 @@ const WebConnectivityDetails = ({
country,
},
)
} else if (blocking === false) {
// When not accessible, but also not blocking, it must be down
status = 'down'
summaryText = (
<FormattedMessage
id="Measurement.SummaryText.Websites.Down"
values={{
date,
WebsiteURL: <UrlWrapper href={input} />,
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 = (
<FormattedMessage
id="Measurement.SummaryText.Websites.Failed"
values={{
date,
WebsiteURL: <UrlWrapper href={input} />,
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 = (
// <FormattedMessage
// id="Measurement.SummaryText.Websites.Down"
// values={{
// date,
// WebsiteURL: <UrlWrapper href={input} />,
// 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 = (
// <FormattedMessage
// id="Measurement.SummaryText.Websites.Failed"
// values={{
// date,
// WebsiteURL: <UrlWrapper href={input} />,
// 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) => {
Expand Down
2 changes: 1 addition & 1 deletion components/measurement/nettests/WhatsApp.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion pages/m/[measurement_uid].js
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
Loading