diff --git a/src/Components/App.svelte b/src/Components/App.svelte
index ff64ec4..c55c64b 100644
--- a/src/Components/App.svelte
+++ b/src/Components/App.svelte
@@ -34,7 +34,6 @@
function appendBooru() {
if (execution_mode != "userscript") {
request(newbooru.domain!);
- alert("Requested! Please click the PEE icon to validate");
}
$settings.rsources = [...$settings.rsources, newbooru as any];
@@ -119,6 +118,7 @@
File Host
updateThreads()}>Thread Watcher
updateNews()}>Reminder
+ Advanced
{#if $appState.akValid}
Hydrus
{/if}
@@ -395,6 +395,16 @@
{/if}
+
+
+
{#if $appState.akValid}
@@ -445,7 +455,7 @@
text-align: center;
margin: 0;
}
-
+
.form {
display: flex;
flex-direction: column;
diff --git a/src/pngv3.ts b/src/pngv3.ts
index da4d55e..6d8d227 100644
--- a/src/pngv3.ts
+++ b/src/pngv3.ts
@@ -57,6 +57,8 @@ const extract = async (png: Buffer) => {
const sneed = new PNGDecoder(reader);
const ret: EmbeddedFile[] = [];
let w: Buffer | undefined;
+ if (!csettings)
+ throw new Error("Settings uninit");
try {
for await (const [name, chunk, crc, offset] of sneed.chunks()) {
@@ -103,7 +105,7 @@ const extract = async (png: Buffer) => {
}).join(' ');
const k = await decodeCoom3Payload(Buffer.from(decoded));
ret.push(...k.filter(e => e).map(e => e as EmbeddedFile));
- } catch(e) {
+ } catch (e) {
//
}
}
@@ -144,6 +146,8 @@ export const BufferWriteStream = () => {
};
export const inject_data = async (container: File, injb: Buffer) => {
+ if (!csettings)
+ throw new Error("Settings uninit");
let magic = false;
const [writestream, extract] = BufferWriteStream();
const encoder = new PNGEncoder(writestream);
@@ -154,8 +158,24 @@ export const inject_data = async (container: File, injb: Buffer) => {
break;
if (!magic && name == "IDAT") {
const passed = Buffer.from(injb);
- //xor(passed, password2);
- await encoder.insertchunk(["tEXt", async () => buildChunk("tEXt", Buffer.concat([CUM7, passed])), () => Promise.resolve(0), 0]);
+ switch (csettings.pmeth) {
+ case 0:
+ await encoder.insertchunk(["tEXt", async () => buildChunk("tEXt", Buffer.concat([CUM3, passed])), () => Promise.resolve(0), 0]);
+ break;
+ case 1:
+ xor(passed, password);
+ await encoder.insertchunk(["tEXt", async () => buildChunk("tEXt", Buffer.concat([CUM4, Buffer.from(Buffer.from(passed).toString("base64"))])), () => Promise.resolve(0), 0]);
+ break;
+ case 2:
+ await encoder.insertchunk(["tEXt", async () => buildChunk("tEXt", Buffer.concat([CUM5, Buffer.from(Buffer.from(passed).toString("base64"))])), () => Promise.resolve(0), 0]);
+ break;
+ case 3:
+ await encoder.insertchunk(["tEXt", async () => buildChunk("tEXt", Buffer.concat([CUM6, Buffer.from(Buffer.from(passed).toString("base64"))])), () => Promise.resolve(0), 0]);
+ break;
+ case 4:
+ await encoder.insertchunk(["tEXt", async () => buildChunk("tEXt", Buffer.concat([CUM7, Buffer.from(bs58.encode(passed))])), () => Promise.resolve(0), 0]);
+ break;
+ }
magic = true;
}
await encoder.insertchunk([name, chunk, crc, offset]);
@@ -178,7 +198,7 @@ const inject = async (container: File, links: string[]) => {
}
return '';
});
- const injb = Buffer.from(bs58.encode(Buffer.from(links.join(' '))));
+ const injb = Buffer.from(links.join(' '));
return inject_data(container, injb);
};