mirror of
https://git.robbyzambito.me/zaprus
synced 2025-12-20 16:24:50 +00:00
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:
@@ -39,10 +39,10 @@ fn broadcastSaprusMessage(msg: SaprusMessage, udp_port: u16, allocator: Allocato
|
|||||||
_ = try sock.sendTo(dest_addr, msg_bytes);
|
_ = try sock.sendTo(dest_addr, msg_bytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn sendRelay(payload: []const u8, allocator: Allocator) !void {
|
pub fn sendRelay(payload: []const u8, dest: [4]u8, allocator: Allocator) !void {
|
||||||
const msg = SaprusMessage{
|
const msg = SaprusMessage{
|
||||||
.relay = .{
|
.relay = .{
|
||||||
.header = .{ .dest = .{ 70, 70, 70, 70 } },
|
.header = .{ .dest = dest },
|
||||||
.payload = payload,
|
.payload = payload,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
22
src/main.zig
22
src/main.zig
@@ -23,6 +23,7 @@ pub fn main() !void {
|
|||||||
const params = comptime clap.parseParamsComptime(
|
const params = comptime clap.parseParamsComptime(
|
||||||
\\-h, --help Display this help and exit.
|
\\-h, --help Display this help and exit.
|
||||||
\\-r, --relay <str> A relay message to send.
|
\\-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.
|
\\-c, --connect <str> A connection message to send.
|
||||||
\\
|
\\
|
||||||
);
|
);
|
||||||
@@ -49,7 +50,12 @@ pub fn main() !void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (res.args.relay) |r| {
|
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});
|
// std.debug.print("Sent: {s}\n", .{r});
|
||||||
return;
|
return;
|
||||||
} else if (res.args.connect) |c| {
|
} else if (res.args.connect) |c| {
|
||||||
@@ -69,6 +75,20 @@ pub fn main() !void {
|
|||||||
return clap.help(std.io.getStdErr().writer(), clap.Help, ¶ms, .{});
|
return clap.help(std.io.getStdErr().writer(), clap.Help, ¶ms, .{});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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 builtin = @import("builtin");
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
const DebugAllocator = std.heap.DebugAllocator(.{});
|
const DebugAllocator = std.heap.DebugAllocator(.{});
|
||||||
|
|||||||
Reference in New Issue
Block a user