Documentation for nanogram available here for awhile

Edit: Dont be a ungrateful Be nice pls. I put a lot of time, effort, and my own money into making this. I’m choosing to freely share it :)

Yes I get help from LLM’s. Review the code if you think it’s unsafe, or just move on and don’t use it. Happy to answer any technical questions.

Edit 2: Expanded source code for termux version here.

Edit 3: Expanded source for pi version here

  • SavvyWolf@pawb.social
    link
    fedilink
    English
    arrow-up
    1
    ·
    9 hours ago

    Two factor authentication won’t help here. You have to build your app with the assumption that any attacker has a valid login and credentials and therefore restrict them to only information they have permission to see.

    File uploads are encrypted in transit from the client to the server but not encrypted on the server.

    Usually when people talk about e2e encrypted messaging they mean that everything is encrypted. That includes images and text content. The server should not be able to read any contents of any message sent through it.

    Again this is a design choice I don’t want gifs.

    Why? Sending memes is a core part of any social media experience.

    There are filetype checks on line 350 of the app.

    Line 350 in both files doesn’t seem to contain any filetype checks. I assume you mean file.content_type. That may not be accurate to the actual file uploaded; it can be spoofed.

    Yes deleting is atomic.

            # Delete the associated message if it exists
            if chat_file.message_id:
                msg = db.get(Message, chat_file.message_id)
                if msg:
                    db.delete(msg)
            ---> Here
            # Delete file from disk
            file_path = os.path.join(CHAT_FILES_DIR, file_uuid)
            if os.path.exists(file_path):
                os.remove(file_path)
    

    If the application crashes/closes at the indicated point, then you will delete the message from the database but still have the image on the server. If this is an image served from /img/whatever, it would have no checks beyond a login check.