Add CLI to specify dest for relay messages

The dest can be specified as a 4 char ASCII string, or as an IPv4 address.
This commit is contained in:
2025-04-19 22:25:52 -04:00
parent 5b88f0df6a
commit c34748dab3
2 changed files with 23 additions and 3 deletions

View File

@@ -23,6 +23,7 @@ pub fn main() !void {
const params = comptime clap.parseParamsComptime(
\\-h, --help Display this help and exit.
\\-r, --relay <str> A relay message to send.
\\-d, --dest <str> An IPv4 or <= 4 ASCII byte string.
\\-c, --connect <str> A connection message to send.
\\
);
@@ -49,7 +50,12 @@ pub fn main() !void {
}
if (res.args.relay) |r| {
try SaprusClient.sendRelay(if (r.len > 0) r else "Hello darkness my old friend", gpa);
const dest = parseDest(res.args.dest) catch .{ 70, 70, 70, 70 };
try SaprusClient.sendRelay(
if (r.len > 0) r else "Hello darkness my old friend",
dest,
gpa,
);
// std.debug.print("Sent: {s}\n", .{r});
return;
} else if (res.args.connect) |c| {
@@ -69,6 +75,20 @@ pub fn main() !void {
return clap.help(std.io.getStdErr().writer(), clap.Help, &params, .{});
}
fn parseDest(in: ?[]const u8) ![4]u8 {
if (in) |dest| {
if (dest.len <= 4) {
var res: [4]u8 = @splat(0);
@memcpy(res[0..dest.len], dest);
return res;
}
const addr = try std.net.Ip4Address.parse(dest, 0);
return @bitCast(addr.sa.addr);
}
return .{ 70, 70, 70, 70 };
}
const builtin = @import("builtin");
const std = @import("std");
const DebugAllocator = std.heap.DebugAllocator(.{});