mirror of
https://git.robbyzambito.me/zaprus
synced 2026-02-04 00:14:52 +00:00
Chunk relay input
This makes it possible to chunk connection command output to a relay command to direct it somewhere like discord
This commit is contained in:
22
src/main.zig
22
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;
|
var i: usize = 1;
|
||||||
while (i < args.len) : (i += 1) {
|
while (i < args.len) : (i += 1) {
|
||||||
if (to_option.get(args[i])) |opt| {
|
if (to_option.get(args[i])) |opt| {
|
||||||
@@ -50,9 +49,7 @@ pub fn main(init: std.process.Init) !void {
|
|||||||
.relay => {
|
.relay => {
|
||||||
i += 1;
|
i += 1;
|
||||||
if (i < args.len) {
|
if (i < args.len) {
|
||||||
var w: Writer = .fixed(&payload_buf);
|
flags.relay = args[i];
|
||||||
try w.printBase64(args[i]);
|
|
||||||
flags.relay = w.buffered();
|
|
||||||
} else {
|
} else {
|
||||||
std.debug.print("-r/--relay requires a string\n", .{});
|
std.debug.print("-r/--relay requires a string\n", .{});
|
||||||
return error.InvalidArguments;
|
return error.InvalidArguments;
|
||||||
@@ -70,7 +67,10 @@ pub fn main(init: std.process.Init) !void {
|
|||||||
.connect => {
|
.connect => {
|
||||||
i += 1;
|
i += 1;
|
||||||
if (i < args.len) {
|
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]);
|
try w.printBase64(args[i]);
|
||||||
flags.connect = w.buffered();
|
flags.connect = w.buffered();
|
||||||
} else {
|
} else {
|
||||||
@@ -94,7 +94,17 @@ pub fn main(init: std.process.Init) !void {
|
|||||||
defer client.deinit();
|
defer client.deinit();
|
||||||
|
|
||||||
if (flags.relay != null) {
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user