summaryrefslogtreecommitdiff
path: root/src/main.zig
diff options
context:
space:
mode:
authorRobby Zambito <contact@robbyzambito.me>2026-01-24 11:27:07 -0500
committerRobby Zambito <contact@robbyzambito.me>2026-01-24 11:28:18 -0500
commit3577d538b893f3dda771f268bf9ea7f8acac3521 (patch)
tree8424981a3b1c461d9e158804dbb73d4840850c6a /src/main.zig
parentfc9c5bcd5db71cc93b78b34165485ceb92ffacc8 (diff)
Chunk relay input
This makes it possible to chunk connection command output to a relay command to direct it somewhere like discord
Diffstat (limited to 'src/main.zig')
-rw-r--r--src/main.zig22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/main.zig b/src/main.zig
index d6d825a..8fa10e0 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -38,7 +38,6 @@ pub fn main(init: std.process.Init) !void {
} = .{};
{
- var payload_buf: [4096]u8 = undefined;
var i: usize = 1;
while (i < args.len) : (i += 1) {
if (to_option.get(args[i])) |opt| {
@@ -50,9 +49,7 @@ pub fn main(init: std.process.Init) !void {
.relay => {
i += 1;
if (i < args.len) {
- var w: Writer = .fixed(&payload_buf);
- try w.printBase64(args[i]);
- flags.relay = w.buffered();
+ flags.relay = args[i];
} else {
std.debug.print("-r/--relay requires a string\n", .{});
return error.InvalidArguments;
@@ -70,7 +67,10 @@ pub fn main(init: std.process.Init) !void {
.connect => {
i += 1;
if (i < args.len) {
- var w: Writer = .fixed(&payload_buf);
+ var w: Writer = blk: {
+ var buf: [2048]u8 = undefined;
+ break :blk .fixed(&buf);
+ };
try w.printBase64(args[i]);
flags.connect = w.buffered();
} else {
@@ -94,7 +94,17 @@ pub fn main(init: std.process.Init) !void {
defer client.deinit();
if (flags.relay != null) {
- try client.sendRelay(init.io, flags.relay.?, parseDest(flags.dest));
+ var chunk_writer: Writer = blk: {
+ var buf: [2048]u8 = undefined;
+ break :blk .fixed(&buf);
+ };
+ var output_iter = std.mem.window(u8, flags.relay.?, SaprusClient.max_payload_len, SaprusClient.max_payload_len);
+ while (output_iter.next()) |chunk| {
+ chunk_writer.end = 0;
+ try chunk_writer.print("{b64}", .{chunk});
+ try client.sendRelay(init.io, chunk_writer.buffered(), parseDest(flags.dest));
+ try init.io.sleep(.fromMilliseconds(40), .real);
+ }
return;
}