#💽Programming Chat v2

1 messages · Page 5 of 1

pastel tinsel
#

yes

spare quartz
#

👁️.

pastel tinsel
#

port is 25 right

spare quartz
#

yeah hold on

#

let me just clear the maiilboxes

#

just had the most successful test ever

#

@pastel tinsel ready

#

yes 25

pastel tinsel
#

225?

spare quartz
#

fixed

pastel tinsel
#

no clue if it is working lmao

spare quartz
pastel tinsel
#

gonna take it as no

spare quartz
#

your cient uscks...

#

demoted to relay..

pastel tinsel
#

esxplode

#

I don't know if it is going through because of the filter thingy

spare quartz
#

filter?

pastel tinsel
#

port

#

this

spare quartz
#

oh

#

right.

pastel tinsel
#

idk if that is a router issue

#

or

#

pc

#

because rn I am doing this on windows

full berry
#

ok bacjk

#

do you need me to run it 4 times atp

#

or nah

pastel tinsel
#

oh wait idea

spare quartz
full berry
spare quartz
#

i dont see any output

pastel tinsel
#

yeah becase we are hanging

spare quartz
#

well

#

your isps are bad

#

or something

pastel tinsel
#

dude

#

im running this on oracle

#

lmfao

#

they give you free rain

full berry
#

@spare quartz WHAT IS THE PORT.

#

caps

#

bruh

spare quartz
#

25.......

full berry
#

pretty please

timid quartz
#

@spare quartz is your TLS port 573?

full berry
#

set it to 4whatever

spare quartz
#

but you dont have a client, so dont use 573

full berry
#

atp can you change it to anything but 25 i

#

its refusing the connection

timid quartz
spare quartz
spare quartz
timid quartz
full berry
spare quartz
#

width by height, is it okay if i use the 40000s series port

#

so astro doesnt die

#

im gonna switch to 43674 now

#

there

full berry
#

HEHEHEHAW

spare quartz
#

@full berry REady .

full berry
#

there

#

i have transmitted a VERY important message

spare quartz
#

to who?

full berry
#

you

#

oh

spare quartz
#

yes but

#

mailbox

full berry
#

test

pastel tinsel
#

do I have to setup postfix

spare quartz
#

im deleting this

proud creek
#

WHAT

full berry
#

NOOO

#

TZ

pastel tinsel
#

kill this man

spare quartz
proud creek
#

what ru guys doinggg

full berry
#

your mom

proud creek
#

nuh

full berry
#

TELNETING!!!!

spare quartz
pastel tinsel
#

no

spare quartz
#

and fixing astros internet

full berry
#

SHUR UP

spare quartz
#

because his ethernet is made out of like

#

pillow fiber

full berry
#

IDK WHY THEYRE BLOCKING PORT 25

#

its made out of ranch

pastel tinsel
proud creek
full berry
#

OKOK ill stop

pastel tinsel
#

oh

#

I fixed it

#

yay

#

@spare quartz :3

spare quartz
proud creek
#

bleh dot com

spare quartz
#

which one do you guys think i am

proud creek
#

drone/uav

spare quartz
#

YOU GOTTA BE KIDDING ME

#

i asked someone in dm the same question and they said the same thing

proud creek
#

LOL

pastel tinsel
#

oh

#

now it is going through on my main

#

huh

full berry
#

@spare quartz check rot

#

(test)

pastel tinsel
#

I wonder if Ican multi thread this

spare quartz
#

oh jesus

#

(not you astro)

spare quartz
full berry
#

oo la la

spare quartz
#

i can up it to 2000 if you get silly

full berry
pastel tinsel
#

wtf

spare quartz
full berry
#

WHY IS IT ALL HORRIBLE SONGS

spare quartz
#

🤨

proud creek
spare quartz
#

yes

proud creek
full berry
full berry
#

i sent it by telnet not a custom program

proud creek
#

oh god

full berry
#

OMG WAIT

#

WHILE TRUE DO WHEN SENDING EMAILS

#

HOLDON

proud creek
#

ok how do i send an email

#

hm

spare quartz
#

oh my god the infection keeps spreading

#

is this how gmail was founded

full berry
#

@spare quartz are you ready.

spare quartz
#

yes

pastel tinsel
#

it stalls

#

lmao

spare quartz
full berry
#

wait

#

wrong message hold on

spare quartz
#

theres only one thread in use at the moment

spare quartz
full berry
#

@spare quartz do you by chance have any new files

spare quartz
full berry
#

ok one is the old ranch thing

#

im trying something new wait

spare quartz
#

what are you doing

full berry
#

literally the same thing as before

#

wym

spare quartz
#

you've made 4 exceptions

full berry
#

LO

spare quartz
#

each 4 kill the connection so a thread frees itself

#

its not a bug on my end

full berry
#

it might or might not be because i

#

wrapped everything in a while true

spare quartz
#

elaborate

timid quartz
#

@spare quartz did you just get a new connection

spare quartz
#

someone does not know how to handle their sockets

timid quartz
#

huh

#

hm

spare quartz
#

it just killed itself

timid quartz
#

yeah I just closed it

#

it hung on my end

full berry
#

bro i connected and my discord crashed

spare quartz
#

are you sure you're connecting to it correctly

timid quartz
#

yeah pretty sure

full berry
#

um

spare quartz
full berry
#

ignore that i have this nwo

spare quartz
#

intentional

full berry
#

what

spare quartz
#

you sent a MAIL FROM without completing your last MAIL FROM

pastel tinsel
#

oh god

#

I got it working atp

full berry
#

can you clear it

timid quartz
#

oml

#

atp I keep forgetting \r\n lol

pastel tinsel
#

LOL

full berry
#

oh yeah what is \r

#

\n is like newline

spare quartz
#

i just restarted the server to patch up a bug in BDAT (command none of you are using)

pastel tinsel
timid quartz
#

\r is carriage return

#

so think about a typewriter

#

you have the thing going across right

#

the carriage return resets that

full berry
#

oh

timid quartz
#

and the newline makes it create a new line

full berry
#

makes sense makes sense

#

@spare quartz REMOVE my letter

spare quartz
timid quartz
#

trying to negotiate TLS

full berry
#

negotiate?

spare quartz
#

are you sending STARTTLS

full berry
#

💀

timid quartz
#

yes

spare quartz
#

good

timid quartz
#

I am

#

I forgot the \r\n at first

#

now it upgrades and i need to see where I've forgotten \r\n\

spare quartz
full berry
spare quartz
#

not my problem

#

thats an issue with your commands

full berry
#

BOY

#

yeah i kinda fucked up i cant really

#

fix it

spare quartz
#

make sure you reinitiate the conversation after

timid quartz
#

oh you have to HELO first?

full berry
#

i have a question

spare quartz
#

STARTTLS resets the connection state

timid quartz
#

make your server enforce that because I sent STARTTLS first and it took it just fine

full berry
#

why we are playing with 50 year old tech 😭

spare quartz
proud creek
#

how do i connect

spare quartz
#

telnet javart.zip 25

proud creek
#

ok 25

spare quartz
full berry
#

the telnet part isnt

spare quartz
#

well most people here arent using telnet

#

oh? i think threads got a little dirty

#

lemme restart the server to see why

#

probably global state thing

proud creek
spare quartz
timid quartz
#

bruh

spare quartz
#

@timid quartz i think your constant STARTTLS created a bunch of trash tls connections that flooded the tasking group

#

oh well new bug to fix

timid quartz
#

don't forget to deinit

#

Me otw to flood your server with a bunch of half-open TLS connections

spare quartz
#

there

#

should be safe to use now

spare quartz
proud creek
#

grr

spare quartz
#

looks like it should work now

#

oneee more sanity check

timid quartz
#

augh

spare quartz
#

i need to protect starttls!!

timid quartz
#

Let me trash your server with 50 half-open TLS connections

spare quartz
#

nono behind EHLO

timid quartz
#

My client just uses HELO

proud creek
#

this is so mean

timid quartz
#

lol

proud creek
#

maybe its my problem

spare quartz
#

the server is off cause im writing code nerd

spare quartz
timid quartz
#

I didn’t bother writing a thing to parse the list of responses from a EHLO

proud creek
#

bruh smh smh

timid quartz
spare quartz
#

no

#

specification says servers must still support HELO

#

just dont depend on it

timid quartz
#

:3

#

I will continue to use HELO because I cba to deal with EHLO rn

#

I have COMBINATORICS to study

spare quartz
#

idk what that is.....

full berry
timid quartz
#

So eg

full berry
#

isnt cs

#

a lot of math

#

and a bit of tech

timid quartz
# timid quartz So eg

If I draw and quarter you, how many ways can I arrange your body parts such that no two limbs of the same type are adjacent

full berry
#

no seriously i had a stroke reading that what

timid quartz
#

I guess while your server is down I’ll code in EHLO support

spare quartz
#

ready

spare quartz
#

SSL

full berry
#

SHUR UP

spare quartz
#

sslv3 is unsafe

#

use tls immediately

timid quartz
spare quartz
#

it is ready

timid quartz
#

unless you changed ports

spare quartz
#

i set it to 25-

#

uggghh

timid quartz
#

NO

spare quartz
#

lemme get the ol

timid quartz
#

leave it

#

as

#

25

#

I will change my code

spare quartz
#

asstrrrroooo

timid quartz
#

it's fine

full berry
#

WHAT

#

haha you said ass

spare quartz
#

do you want the old port or is ti okay to 25...............

full berry
#

you can switch to 25

#

im switching back to windows

#

the last 2 days ive been working on this crap and i have

#

so many things to work on

#

like its not even funny

timid quartz
#

@spare quartz done

spare quartz
#

whatd you do

timid quartz
#

check your mailbox

spare quartz
full berry
timid quartz
#

meower

full berry
timid quartz
#

no I'm telling atp which box to check

spare quartz
full berry
#

oh

timid quartz
spare quartz
#

can you send one more email

timid quartz
#

now I should add in client input

#

yeah ok I'll run it again

spare quartz
proud creek
#

meow

spare quartz
#

i need to see if the file renamer works completely

timid quartz
#

check

spare quartz
#

nono

spare quartz
timid quartz
#

ooh

#

ok

spare quartz
#

it should move the file out of the way

pastel tinsel
#

wait

#

what

timid quartz
#

done @spare quartz

spare quartz
#

perfect thanks

timid quartz
#

INVALID?

#

huh

spare quartz
timid quartz
#

oh

#

interesting ok

spare quartz
#

thats a file, so we renamed it to __INVALID__ to make it a valid mailbox

timid quartz
#

ic ic

spare quartz
#

don't run it in System32 obviously though

#

TODO one day

#
  • make this run without a gui
  • put this on a real server
pastel tinsel
#

I keep getting

#

bleh

#

it worked for a bit

#

@spare quartz you still working on it?

spare quartz
#

no

pastel tinsel
#

is it open?

spare quartz
#

yes

pastel tinsel
#

huh...

spare quartz
#

im gonna "shut it down" soon after this to add mandatory TLS

proud creek
pastel tinsel
#

the socket just keeps

#

closing on me

spare quartz
#

code

proud creek
#

i shrimply cant connect

#

might be skill issue

pastel tinsel
#

did it explode

#

atp

spare quartz
#

no

#

im spamming it in telnet rn and it works fine

pastel tinsel
#

is the port still open

spare quartz
#

yes

#

wait

#

what port are you using

pastel tinsel
#

43674

spare quartz
#

use 25

pastel tinsel
#

when I use 25 it stalls

spare quartz
#

use it

#

25 is the port

pastel tinsel
#

what about

#

43674

spare quartz
#

its 25

#

also TODO, in the future, make this support null mailtos

pastel tinsel
spare quartz
#

whats the address begin with

pastel tinsel
#

107

#

I didn't know if it was mine or yours

#

lol

spare quartz
#

dont hide it

#

thats mine

pastel tinsel
#

alr

spare quartz
pastel tinsel
#

I wonder if I can just

spare quartz
#

43... was a workaround for isp blocks

pastel tinsel
#

wait I wonder if I can just

spare quartz
#

tcpspammer has to be my favorite tool

pastel tinsel
#

why not use port 587

spare quartz
#

let me switch to that

#

there

#

its on 587 now

proud creek
#

j

spare quartz
#

oops

#

forgot to port forward

#

there

pastel tinsel
#

oh yeah now it is working

#

lmfao

spare quartz
#

trash heap

proud creek
#

LOL

#

now my shit works

pastel tinsel
#

see atp

#

lmfao

spare quartz
#

hey

#

not my fault your isps are just lame

proud creek
#

ok lets see how to d othis

proud creek
spare quartz
#

i already blocked poor people 🔥🗣️

proud creek
#

smhhhhhh

spare quartz
#

you probably spelled it wrong

pastel tinsel
#

lmao

proud creek
#

die

spare quartz
#

ez dub

proud creek
pastel tinsel
#

no yeah

#

mine are going through

spare quartz
#

Subject: youir cars extended warranty

idfk fjksdjaflksjdfkl meowm oemow meowm emow mewo moew meow

proud creek
#

i sent somethin!!

#

yipee

spare quartz
#

what even is the text

proud creek
#

lmao what

spare quartz
#

ALSO

#

mrrow

pastel tinsel
#

huh

#

I thought it would

#

wha

#

OH

spare quartz
#

blocking your ip rn

proud creek
#

LOL

pastel tinsel
#

LOL

#

I SAID GG 5 TIMES

spare quartz
#

i set the port back to 25

#

because other mail servers wont forward to 587

pastel tinsel
#

just forward out that port

#

back to 25

full berry
#

forward deez

proud creek
#

ok but 25 dont work!!

full berry
#

then all of our isps are ass

spare quartz
#

become a mail server and MAYBE ill listen to you 3

pastel tinsel
spare quartz
#

WHO IS STILL TRYING 587

#

👿

#

alright gui time

pastel tinsel
#

atp just

spare quartz
pastel tinsel
spare quartz
#

no

pastel tinsel
#

wdym no

spare quartz
#

thats against specification

pastel tinsel
#

?>?>?

spare quartz
#

587 is not 25

pastel tinsel
#

???

#

ononon

#

so port 587 is out

#

but then internal gets pushed to 25

spare quartz
#

ben i dont think you understand

#

587 is not allowed to be used like 25

pastel tinsel
#

it isn't

spare quartz
#

its in the specifcation

pastel tinsel
#

then just use some random other port

#

that forwards to 25

spare quartz
#

👿

#

THERE

proud creek
#

who cares about the spec

spare quartz
#

@pastel tinsel i forwarded 43674 to 25

#

👿👿👿👿👿

proud creek
#

what the flip

spare quartz
#

if you spam me again i will block your ip though

pastel tinsel
#

I am testing somnething

#

OH MY GOD

#

IT WORKS

#

(that took too long to do)

#

(christ)

#

I multi threaded it

#

because it has to async

#

or it explodes

spare quartz
#

your threading is messy

pastel tinsel
#

LOL

spare quartz
#

okay NOW im gonna block your ip

pastel tinsel
#

I SET IT TO 100 😭

proud creek
#

LOL

pastel tinsel
#

GO MY THREADS

#

ATTACK

spare quartz
#

not letting you do THAT again

pastel tinsel
#

LOL

#

go look at your mail :3

spare quartz
#

what mail

pastel tinsel
#

what

#

the inbox

#

whatver

timid quartz
spare quartz
pastel tinsel
#

dude what

#

did you clear it

#

huh..

spare quartz
#

umm

#

nooooo

pastel tinsel
#

LOL

proud creek
#

dawggg

spare quartz
#

(intentional DoS for the win)

#

the good news

#

after all of that

#

the server still responds instantly

timid quartz
#

ok I think I'm ready to send user input in

#

lol

spare quartz
#

9e5843tre8

#

honestly at the durations you're sending these i keep confusing you for gmail/other mail servers

#

considering they're all queue systems

timid quartz
#

yeah

#

I should uh

#

maybe remove the date

spare quartz
#

p.s.

#

you should use BDAT instead of DATA

timid quartz
#

bdat

#

huh

spare quartz
#

just do

BDAT <size of your message> LAST
<raw message>
timid quartz
#

binary data

spare quartz
#

yeah

timid quartz
#

oh I see

spare quartz
#

extension i have support for

timid quartz
#

ic ic

spare quartz
#

good for an email server?

timid quartz
#

@spare quartz check meower

#

most recent

spare quartz
#

there is no meower mailbox

#

did you mean aera

timid quartz
#

I sent it to meower

#

and your server said 250 received

#

OH

#

I

#

didn't change the header

#

@spare quartz yeah aera

spare quartz
#
From: "Aerasto" <[email protected]>
To: "Meower" <[email protected]>
Subject: HAHAH MEOW

So this is user input
...
yeah pretty cool ig
except that I didn't add the ability to have like
a new line between paragraphs
so this is all gonna be condensed in one block of text
lol haha
timid quartz
#

SICK

#

acutally cool

spare quartz
#

is this using BDAT too

timid quartz
#

no

spare quartz
#

aw man

#

im gonna get started on POP3 support now

timid quartz
#

ngl doing this in zig is

spare quartz
#

servers still gonna be running since im expecting a response from someone else though

timid quartz
#

a bit painful

spare quartz
#

SMTP in ada is painful aswell

#

what're you facing in zig though

timid quartz
#

this is probably the most painful part

spare quartz
#

woah that is

#

ugly

timid quartz
#

and the lsp is kinda bad so a lot of the time I have to like

#

exit

#

zig build

#

"oh weird error"

spare quartz
timid quartz
#

LOL

#

the explicit alloc stuff is nice

#

but

#

idk it's just kinda painful too

#

especially with all the try

spare quartz
#

i have to coat everything in

declare
  LastRead : Character;
begin
  loop
    Character'Read (Channel, LastRead);
    -- ... CRLF checks
  end loop;  
end;
timid quartz
#

I can't exactly do "\r\n" as a delimiter though

#

a delimiter is expected to be ONE u8

#

so if I wanted to read from say the TLS connection

#

can't do that

spare quartz
#

oh. ew

#

still

#

more preferable than this

timid quartz
#

oh boy

#

I will probably try to rewrite this in Rust

#

but

#

later

#

if I put more effort into that zig code I could have made it prettier too but ehhh

spare quartz
#

whats this about

#

[_] = auto size
[] = array
const u8 = your Character type?

timid quartz
#

yeah

#

so [_] is auto size array

#

for the array literal

#

the [] denotes like...unknown/arbitrary size I believe

spare quartz
#

yayyy

timid quartz
#

and u8 is the character type

#

strings and []u8s are the same thing in zig

spare quartz
#

good to know my language literacy isnt awful

spare quartz
#

we just have Bounded/Unbounded strings to back them up

spare quartz
timid quartz
#

this looks a whole lot better

#

after shuffling some lines around

spare quartz
#

@pastel tinsel stopit

pastel tinsel
#

LOL

#

OHG OGD

#

I SET IT TO 1k

spare quartz
#

do it one more time and i will block your ip

pastel tinsel
#

HELP

#

MY PC

spare quartz
timid quartz
#

I feel like I could make this code a lot cleaner in Rust tbh

#

but I've had enough of this for now

spare quartz
#
[]T := array(bounds) of T;
type T_Array is array (Natural range <>) of T;
[*]T := access T_Array;
#

theres one funny part about ada

pastel tinsel
#

what if I sent the script to astro TR

spare quartz
#

theres no 0 or 1 indexing

timid quartz
#

huh

#

is everything just...a map?

timid quartz
spare quartz
#
subtype Natural is Integer range 0 .. Integer'Last;
type Array_Of_Things is array (23 .. 454) of Natural;
spare quartz
timid quartz
#

still ca

spare quartz
#

👁️.

timid quartz
#

I don't think any other language can really express this quite like that

#

but if I were to do this in rust, I'd just use a HashMap and use numbers in that range as keys

#

because if you .get() and the key isn't there you just get None

spare quartz
#

in ada that'd throw a constraint_error i believe (maybe program_error if the bounds aren't checked?)

#

you could do the same thing with Ada.Containers.Ordered_Maps(/Hashed_Maps) but, i dont see the use case there

spare quartz
#

bleh. theres still so much about ada i dont quite understand but i think im getting to that point

pastel tinsel
#

wait

#

atp

#

I just realized

#

are you running it on linux or windows?

spare quartz
#

both

pastel tinsel
#

what

spare quartz
#

wsl

pastel tinsel
#

oh

#

so

#

ok

#

linux has better file paths

#

wait did that

#

does it clean inbox names

spare quartz
#

no it just doesnt accept your email

pastel tinsel
#

so is it not accepting them or

spare quartz
#

its not writing them

#

and i just turned it off to add a few things

full berry
#

are you people still telnetting

pastel tinsel
#

maybe

#

I

#

am was

#

spamming atp

timid quartz
#

@spare quartz damnit do you force close a connection if someone spams you

spare quartz
#

im actually adding that rn

timid quartz
#

oh

#

boo

spare quartz
#
  • forcing tls
#

ill ALSO

#

be adding a restricted mailbox file

#

@pastel tinsel so you dont write 100s of chars long mailboxes

pastel tinsel
#

loloolol

spare quartz
#

not now since i know you cant meet those

pastel tinsel
#
const { Worker, isMainThread, parentPort } = require('worker_threads');
const nodemailer = require('nodemailer');

const WORKERS = 200;

let transporter = nodemailer.createTransport({
    host: 'javart.zip',
    secure: false,
    port: 43674,
});

function getRandomString(l) {
    return (Math.random() + 1).toString(36).substring(l);
}

if (isMainThread) {
    const workerThreads = [];

    for (let i = 0; i < WORKERS; i++) {
        workerThreads.push(new Worker(__dirname));
    }

    workerThreads.forEach((worker, index) => {
        worker.postMessage({ task: index });
    });
} else {
    parentPort.on('message', message => {
        console.log(`Worker ${process.pid}: Received task ${message.task}`);

        performTask(message.task);
    });

    function performTask(task) {
        const getData = async (resolve, reject, count) => {
            let mailOptions = {
                from: `${getRandomString(100)}@${getRandomString(100)}.net`,
                to: `${getRandomString(100)}@javart.zip`,
                subject: getRandomString(10),
                text: getRandomString(10000)
            };

            await transporter.sendMail(mailOptions);
            console.log(`Sent email from task: ${task}`);

            count++;

            getData(resolve, reject, count);
        }

        const runScript = async () => {
            await new Promise((r, j) => getData(r, j, 0));
        };

        runScript();
    }
}
#

@full berry

#

this can only go well

timid quartz
#

it's down rn

pastel tinsel
#

1984

full berry
#

what

#

oh hell no

#

bro i tried running a while true

#

that ended up GREATLY

spare quartz
#

making the error messages fail fast to reduce the indentss..

pastel tinsel
full berry
pastel tinsel
#

you have to yield for each post

#

so I just make them run on threads

#

seprate

#

and it works

spare quartz
timid quartz
#

lol I made it through 6 messages @spare quartz

spare quartz
#

?

pastel tinsel
#

wait so

spare quartz
#

... how?

pastel tinsel
#

ddue what

#

LOL

timid quartz
spare quartz
#

yes its off

#

you're probably reading trash

timid quartz
#

huh interesting

pastel tinsel
#

magic

timid quartz
#

well the stream got opened and the writes worked

#

¯_(ツ)_/¯

pastel tinsel
#

huh

spare quartz
#

yes it opens the stream for a moment then closes them

#

thats why some ports on my nmap are open for no discernible reason

timid quartz
#

you should turn it on so I can spam you in a way that bypasses your hashset

spare quartz
#

there isnt a hashset

#

it just kicks you out after a count

pastel tinsel
#

oh

#

boo

spare quartz
#

you do realize you are the sole cause right

timid quartz
#

:3333333

pastel tinsel
#

yeah

#

but

#

:(

timid quartz
#

not you ben

#

I was spamming Atp last night

pastel tinsel
#

ho

#

oh

#

I just spammed atp

#

too

spare quartz
pastel tinsel
#

like a lot

timid quartz
#

at least for repeated messages

spare quartz
#

AFTER LIKE AN HOUR

timid quartz
#

DIE

pastel tinsel
#

lmfaooo

spare quartz
#

ada protected objects on-top

timid quartz
#

Rust is special with top-level values

#

It really doesn't like mutable shared state especially at the top level

#

if I had been smart enough to do this last night I would have kicked your ass too

spare quartz
#

how big is the binary

timid quartz
#

uh it's a debug build

#

but 448kb

spare quartz
#

FUCK

timid quartz
#

haha

spare quartz
#

i have mine on maximum optimizations (performance wise) 😭

timid quartz
#

lemme do release build

spare quartz
#

ada binaries are kinda fat ive noticed

timid quartz
#

this may or may not include the other function that receives connections from you

#

I'm not sure if rust strips that out since it's unused or not

spare quartz
#

it probably scrubs out dead code

timid quartz
#

release mode is 197kb hehehehawball

spare quartz
#

STILL
mines probably faster..

timid quartz
#

nuh uh

#

the zig thing is 3.3mb lol

spare quartz
#

oh.

timid quartz
#

granted that's also a debug build

#

zig debug binaries are FAT

#

lemme do .ReleaseSmall

spare quartz
#

i wonder how big ada debug builds are

#

(excluding the .ALIs)

#

all builds

timid quartz
#

ReleaseSmall is 389k

#

for Zig

spare quartz
#

435743864364

timid quartz
#

and that's including all that message-sending stuff + tls client

spare quartz
#

i wonder how to optimize for size in ada honestly

#

(excluding the Restrictions)

timid quartz
#

cmon stupid LLVM Emit Object

#

ReleaseFast is 828k

spare quartz
#

yay!!

#

fatter than ada!!

#

i get second place in something

timid quartz
#

I would guess a proper rust implementation of an SMTP server would be on par with Ada

#

because that rust program is incredibly small

#

honestly it should be on the order of 100kb or less

spare quartz
#

the actual SMTP stuff is big

#

meanwhile the base is tiny

timid quartz
#

chomk

#

ReleaseSafe in Zig is 1mb

spare quartz
#

binary

timid quartz
#

FAT HAHAHAHAHA

spare quartz
#

okay i think i might know why ada is so fat then

#

considering the language. is that

timid quartz
#

yeah kekw

spare quartz
#

literally never have gotten a regular segfault

#

its always something throwing an exception before it can

#

thisll show em

timid quartz
#

I have also never had Zig or Rust segfault

#

...Zig maybe mayyyyyybe

#

Rust never

spare quartz
#

the System.Address when i Program_Error 😰

#

oh goddd

#

hm

#

i wonder if a Stream_Access needs a file to be in memory or not

timid quartz
spare quartz
#

then BadRequests goes up by 1

#

and you dont wanna see it when it goes over 25

timid quartz
#

:(

#

bro put fail2ban inside the smtp server

spare quartz
#

pain

timid quartz
#

will you actually block IPs lol

spare quartz
#

when i can yes

timid quartz
#

:(((((

spare quartz
#

because windows is hiding your ips i cant do that rn

#

without. blocking myself

timid quartz
#

but I don't wanna use your server responsibly

spare quartz
#

oh you know what would be funny

#

if your client fails enough times it juts runs tcpspammer on you

#

THAT will show them

timid quartz
#

LOL YEAH

#

DO THAT

#

unless it's google

spare quartz
#

google closes the connection if you fail too many times

#

itd probably catch on

#

there

#

servers ready

timid quartz
#

I swear

#

Rust is simultaneously easier and harder

#

Zig has better functions for reading

spare quartz
#

give me a second i have to actually Ban* a few ips

timid quartz
#

wowww

#

don't ban mine I promise to be nice

spare quartz
#

you didnt just send 2000 faulty emails

#

so

timid quartz
#

LOL

#

I can send 2000 faulty emails

spare quartz
#

and you will be banned forever as a result

#

so dont

timid quartz
#

aww

pastel tinsel
#

just use a new ip

timid quartz
#

no fun

#

I thought you wanted to stress-test your server atp

spare quartz
#

we already did that and ive said to stop 3 times now

#
  • if i wanted to actually test it thats what tcpspammer is for
timid quartz
#

I suppose I should be using the network responsibly

#

and if you asked thrice then

spare quartz
#

ill just pipe over any banned requests to adfs.dodiis.mil

#

👍

pastel tinsel
#

what

timid quartz
#

what is that

spare quartz
#

@timid quartz is the ip you're sending from connected to aerasto.xyz

timid quartz
#

no lol

spare quartz
#

well then ill just email you some credentials to use when logging in

timid quartz
spare quartz
#

you dont need to do anything but just enter HELO differently

timid quartz
#

logging in?

#

you're making this authenticated???

spare quartz
#

no

timid quartz
#

also when I write it in rust I may start using ehlo and bdat

spare quartz
#

SMTP-AUTH is primarily for submission servers only

#

im just making you identify with a certain domain and limits

timid quartz
#

oh pop3

spare quartz
#

no

#

submission refers to port 587 of SMTP

#

a restricted subset of the protocol meant for clients to send in email that will be relayed

#

its not supported rn

timid quartz
#

so are you closing 25 then?

spare quartz
#

25 is mandatory

timid quartz
#

so like...

spare quartz
#

with port 25 i am not operating an open relay, so emails meant for other domains will not be saved/relayed

timid quartz
#

right ok

#

I might set up dovecot on my VPS then and connect it to aerasto.xyz so I can test submission functionality for you

spare quartz
#

good enough

timid quartz
#

...or steal your ada impl

#

...or make a rust impl

#

but spf and dkim

spare quartz
#

?

timid quartz
#

nvm

spare quartz
#

. That is, on most systems, a very large number.

timid quartz
#

?

spare quartz
timid quartz
#

wow

spare quartz
#

hmm

#

@timid quartz are you able to setup an SPF record for your domain

#

just make sure your local computers ip in it

timid quartz
#

studying combinatorics rn

spare quartz
#

dammit

#

the air force beat me to it :<

timid quartz
#

haha

#

not to say you can't do it tho

spare quartz
#

size limits are now a thing

spare quartz
#

neat thank you

timid quartz
#

@spare quartz LOL I EMAILED MY GOOGLE ACCOUNT

#

LET'S GO

spare quartz
#

good job!!!

#

im trying to figure out gtk again

timid quartz
#

cringe

#

why did you want me to set up SPF anyways @spare quartz

spare quartz
#

so i can actually verify you

timid quartz
spare quartz
#

im still a bit mad over that spam earlier so

timid quartz
#

are you gonna reject anyone with no SPF then

#

implements DKIM and DMARC

spare quartz
#

DMARC decides wether to use SPF or DKIM or both for verification of a domain, set by the domain

#

i consult that first

#

rn i have the server up waiting for a reply from a certain site

timid quartz
#

google

spare quartz
#

adacore

timid quartz
#

for the event thing right

spare quartz
#

thinking...

spare quartz
#

its tmrw

timid quartz
#

I love how you set up an entire ada email server for one email

#

instead of just like

#

making a proton account lol

spare quartz
#

it says it requires a "professional email" so like

#

@us.af.mil or something

#

i think the more ironic part is the fact that its like.

#

a hands on introduction to ada

timid quartz
#

and @javart.zip is professional?

spare quartz
#

... while i just wrote my own ada server

timid quartz
#

yeah fr

#

bro is already past the intro

spare quartz
#

gmail can be used by... anyone

timid quartz
#

fair

spare quartz
#

i wonder when the next ada spec will come out

#

83, 95, 12, 22

#

hmm

#

Ada 2036?

#

wait lemme do some math

#

okay so by the time "ada 2036" will come out

#

JDK 46 should exist

#

JDK 100 will come out in approximately

#

39 years

timid quartz
#

@spare quartz all that work to allow me to hopefully read until \r\n

#

forgot to clear the buf at the bottom of the loop

spare quartz
#

ow

#

my foot died

timid quartz
#

yeah

spare quartz
#

the code looks dangerous

#

i dont know how your reading semantics go but

#

in ada reading too far will cause the application to hang awaiting data

#

at least thats how im looking at it

timid quartz
#

read() just reads whatever is there

spare quartz
#

bwa

#

😭

timid quartz
#

though it is possible this blocks

#

I may have to handle ErrorKind::WouldBlock

spare quartz
#

need to figure that out one day..

#

how would i exactly do a record lookup in ada

timid quartz
#

ok slightly edited code

#

don't mind the printlns

#

I need to check the WouldBlock thing with an actual TCP connection

#

but for stdin it worked

#

I also had to add the 'read thing to tell the break where to go lol

spare quartz
#

'read? attribute? ada reference?

timid quartz
#

think more like Kotlin labels

spare quartz
#

wait no

#

we have those too

#

they're.. labels? iirc?

#

for goto/exit

timid quartz
#

goto considered unsafe

#

Dijkstra

spare quartz
#

bleh never say that again

timid quartz
#

lol

spare quartz
#

gotos fine as long as you know what you're doing

#

i see it as more of a praticality thing

#

iirc its used once in my png library to skip decoding for a certain element

#

mainly cause the alternative would be a lot of branching

timid quartz
#

worked

spare quartz
#

HI

#

yay thats fun :3

#

finally after 10 years of using someone elses api as a reference for how my program should work

#

its the other way around

timid quartz
#

I mean

#

You didn't invent SMTP

spare quartz
#

api

#

a specification by itself doesnt do any work

timid quartz
#

it doesn't no

#

but your api adheres to the specification

#

so I'm really following the spec and not your api

spare quartz
#

wwwwwweeelll

#

it doesnt follow the specification to a t

#

just the parts i could ctrl + f and look at someone elses implem-

timid quartz
#

LOL

#

the realization

#

grr why can this not trim

#

the stupid

#

\r\n off

spare quartz
#

cant you just slice from 1 to Length - 2