Skip to content

Commit 11168e2

Browse files
authored
Merge pull request #22 from ehsanking/ehsan/fix-connection-path-score-display-logic
Require MTR pass for path success; gate target scoring and add explicit per-path MTR/ping logging
2 parents d66505c + a876ba1 commit 11168e2

1 file changed

Lines changed: 24 additions & 19 deletions

File tree

iran_connectivity.js

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -219,15 +219,17 @@ ${error.stderr || ''}`;
219219
let score = 0;
220220
if (results.sourcePing) score += 10;
221221
if (results.sourcePort443) score += 10;
222-
if (results.targetPing) score += 20;
223-
if (results.port80) score += 20;
224-
if (results.port443) score += 25;
225-
if (results.port22) score += 7;
226-
if (results.port53) score += 8;
227-
if (results.tracerouteAvailable && results.tracerouteReachedTarget) score += 5;
228-
if (results.mtrAvailable && results.mtrLossPercent !== null) {
229-
if (results.mtrLossPercent <= 5) score += 5;
230-
else if (results.mtrLossPercent <= 20) score += 2;
222+
if (results.targetPing) {
223+
score += 20;
224+
if (results.port80) score += 20;
225+
if (results.port443) score += 25;
226+
if (results.port22) score += 7;
227+
if (results.port53) score += 8;
228+
if (results.tracerouteAvailable && results.tracerouteReachedTarget) score += 5;
229+
if (results.mtrAvailable && results.mtrLossPercent !== null) {
230+
if (results.mtrLossPercent <= 5) score += 5;
231+
else if (results.mtrLossPercent <= 20) score += 2;
232+
}
231233
}
232234
results.targetReachability = Math.min(
233235
100,
@@ -305,23 +307,26 @@ ${error.stderr || ''}`;
305307

306308
const testResults = await this.runWithConcurrency(tasks, this.maxConcurrent);
307309
testResults.filter(Boolean).forEach((result) => {
308-
if (result.connectivityScore > 0) {
310+
const isMtrPassed = result.stageResults?.mtr === 'passed';
311+
const pingStats = result.targetPingStats || {};
312+
const pingBadge = (pingStats.transmitted !== null && pingStats.received !== null)
313+
? `{ping ${pingStats.received}/${pingStats.transmitted}}`
314+
: '{ping N/A}';
315+
const latencyBadge = pingStats.averageLatencyMs !== null
316+
? `{latency ${pingStats.averageLatencyMs} ms}`
317+
: '{latency N/A}';
318+
319+
if (isMtrPassed) {
309320
providerResults.successfulConnections.push(result);
310321
if (!providerResults.bestConnection ||
311322
result.connectivityScore > providerResults.bestConnection.connectivityScore) {
312323
providerResults.bestConnection = result;
313324
}
314-
const pingStats = result.targetPingStats || {};
315-
const pingBadge = (pingStats.transmitted !== null && pingStats.received !== null)
316-
? `{ping ${pingStats.received}/${pingStats.transmitted}}`
317-
: '{ping N/A}';
318-
const latencyBadge = pingStats.averageLatencyMs !== null
319-
? `{latency ${pingStats.averageLatencyMs} ms}`
320-
: '{latency N/A}';
321-
this.log(`✓ Connection path score ${result.ip} -> ${this.targetIp} (${result.connectivityScore}) ${pingBadge} ${latencyBadge}`, 'success');
325+
this.log(`✓ Connection path score ${result.ip} -> ${this.targetIp} (${result.connectivityScore}) ${pingBadge} ${latencyBadge} {mtr ✓}`, 'success');
322326
} else {
323327
providerResults.failedConnections.push(result);
324-
this.log(`✗ Connection path failed ${result.ip} -> ${this.targetIp}`, 'error');
328+
const mtrState = result.stageResults?.mtr || 'skipped';
329+
this.log(`✗ Connection path failed ${result.ip} -> ${this.targetIp} ${pingBadge} ${latencyBadge} {mtr ${mtrState}}`, 'error');
325330
}
326331
});
327332

0 commit comments

Comments
 (0)