Skip to content

Commit

Permalink
Allow selecting multiple locations for DNS lookups, and select all by…
Browse files Browse the repository at this point in the history
… default.
  • Loading branch information
Daniel15 committed Jan 26, 2020
1 parent dd490bc commit 50c9689
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 23 deletions.
49 changes: 32 additions & 17 deletions src/DnsTools.Web/ClientApp/src/components/MainForm.tsx
Expand Up @@ -50,7 +50,8 @@ const toolOptions: ReadonlyArray<ToolMetadata> = [
{
tool: Tool.DnsLookup,
label: 'DNS Lookup',
description: 'Look up a DNS record.',
description:
'Look up a DNS record from {workerCount} locations around the world.',
},
{
tool: Tool.DnsTraversal,
Expand Down Expand Up @@ -269,17 +270,27 @@ function DnsLookupInput(props: {
</select>
</FormRow>
)}
<FormRowDropdownList
label="From"
options={props.workerOptions}
selectedItem={props.input.worker}
onSelect={newWorker =>
props.onChangeInput({
...props.input,
worker: newWorker || props.config.defaultWorker,
})
}
/>
{props.tool !== Tool.DnsTraversal && (
<Locations
config={props.config}
input={props.input}
onChangeInput={props.onChangeInput}
workerOptions={props.workerOptions}
/>
)}
{props.tool === Tool.DnsTraversal && (
<FormRowDropdownList
label="From"
options={props.workerOptions}
selectedItem={props.input.worker}
onSelect={newWorker =>
props.onChangeInput({
...props.input,
worker: newWorker || props.config.defaultWorker,
})
}
/>
)}
</>
);
}
Expand Down Expand Up @@ -362,16 +373,20 @@ function buildToolURI({
if (input.protocol !== Protocol.Any) {
params.append('proto', Protocol[input.protocol]);
}
if (input.workers.size < config.workers.length) {
params.append('workers', Array.from(input.workers).join(','));
}
}

if (
tool === Tool.Ping ||
tool === Tool.Traceroute ||
tool === Tool.DnsLookup ||
tool === Tool.ReverseDns ||
tool === Tool.DnsTraversal
tool === Tool.ReverseDns
) {
if (input.workers.size < config.workers.length) {
params.append('workers', Array.from(input.workers).join(','));
}
}

if (tool === Tool.DnsTraversal) {
if (input.worker !== config.defaultWorker) {
params.append('workers', input.worker);
}
Expand Down
8 changes: 4 additions & 4 deletions src/DnsTools.Web/ClientApp/src/pages/DnsLookup.tsx
Expand Up @@ -31,10 +31,10 @@ export default function DnsLookup(props: Props) {
const {host, type: rawType} = props.match.params;
const type = getLookupType(rawType);
const queryString = useQueryString();
const workers = useMemo(
() => getWorkers(props.config, queryString, [props.config.defaultWorker]),
[props.config, queryString],
);
const workers = useMemo(() => getWorkers(props.config, queryString), [
props.config,
queryString,
]);

const request: DnsLookupRequest = useMemo(
() => ({host, type, workers: Array.from(workers)}),
Expand Down
3 changes: 1 addition & 2 deletions src/DnsTools.Web/Hubs/ToolsHub.cs
Expand Up @@ -60,14 +60,13 @@ CancellationToken cancellationToken
CancellationToken cancellationToken
)
{
var workers = request.Workers ?? new[] { _defaultWorker }.ToImmutableHashSet();
return new GenericRunner<DnsLookupRequest, DnsLookupResponse>(
_workerProvider,
client => client.DnsLookup(new Worker.DnsLookupRequest
{
Host = request.Host,
Type = request.Type,
}, cancellationToken: cancellationToken)).Run(request, Clients.Caller, workers, cancellationToken);
}, cancellationToken: cancellationToken)).Run(request, Clients.Caller, request.Workers, cancellationToken);
}

public ChannelReader<WorkerResponse<DnsTraversalResponse>> DnsTraversal(
Expand Down

0 comments on commit 50c9689

Please sign in to comment.