hereforawhile
@hereforawhile@lemmy.ml
- Comment on Here is a more polished release of nanogram. Fully compatible on raspberry pi now. 4 days ago:
First, thanks for replying I appreciate the feedback and thoughtful replys.
If your social media instance has 1000 users on it, and one user gets compromised, then the other 999 users shouldn’t have any interactions outside of that user leaked.
If I intended on using this for mission critical communications or something, maybe I would add and enforce two factor authenticated logins. That could mitigate this conern to some extent. Or use tors built in authenticated onion service mechanism and distribute the certificate to users. This thing was never intended to scale to that size though.
But this is pretty much the case for any platform yeah? If you gain access you gain access?
Users that did not allow their posts to be shared with the compromised account would remain private, and conversations outside of the compromised account would remain private. AND, let’s say you had a hint that a account was compromised and you were using web crypto. Resetting your password would break the encryption of all conversation history… OR anyone engaged in a sensitive conversation could remotely wipe their conversations.
Are file uploads encrypted?
File uploads are encrypted in transit from the client to the server but not encrypted on the server. Anyone needing anything further would already know how to encrypt a file and can handle that manually. It’s a heavy operation is the main reason. My use case is to send a pdf of a already public news article or something so I didn’t feel implementing was important.
But if I may flip the question… Why does an inaccessible post even need to return 403 anyway? It just functions as a big footgun that may cause any other exploits to behave worse.
That’s a fair question. I could see how it could be used to test to probe the server or something. The thing is, you would only get that different 403 response if you were logged in. If you were logged out, you get the same response checking for a valid uuid and a non uuid so I’m not sure what an attacker is learning?
But you can determine its existence or not through the status code.
You get the small benefit of knowing if a file exists only if you have valid credentials. If you don’t have credentials your going to get bounced to the login screen no matter what string you try with no feedback.
Gifs will lose any animation, pngs will lose quality. Also, as far as I can tell, there’s nothing stopping a malicious user uploading a non-image file.
Again this is a design choice I don’t want gifs. There are filetype checks on line 350 of the app. PNG, webp, jpegs allowed only.
One of the main design goals was to keep this light weight. That’s why I’m only displaying 10 photos before a new page is created. I am extremely happy with the performance of the image compression. The compression amount is tunable however if you want higher quality.
The server can ingest a 8mb photo and compress it down to 100-500kb and it still looks totally fine to me. I was most amazed with this function. Plus, I like that I’m able to archive all these family moments into a really small footprint. Over 250 photos is only like 40mb.
There are two steps to making a post: Upload and store the image and add the post to the database. There’s also similar steps to deleting a post: Removing the image upload and removing the post from the database. Are both these operations atomic?
Yes deleting is atomic. It should leave no trace in the db and it really removes it from the file directory of the sever. Also wiped are all related comments and likes associated with the post.
It’s not that hard for a sufficiently motivated adversary to get an account on a sufficiently large instance. You need to ensure that one user account being compromised doesn’t result in information leakage from unrelated accounts.
My current built in security features are as follows.
-
invites only generated by the server manager
-
ability for the server manager to delete and wipe accounts.
-
ability to rotate your onion address. This cuts of all access to the service. The server operator would need to redistribute the onion address.
-
users have control of any data they have sent to the server…ie real deletion rights that really delete things.
-
any new invitee to the server has zero access to any accounts. Each user already in the instance needs to manually allow access to all their posts.
-
- Comment on Here is a more polished release of nanogram. Fully compatible on raspberry pi now. 6 days ago:
- You list “Activist/journalist secure communication” as a use case. Not all countries have freedom of press.
Is that an inaccurate claim? It should provide the means to organize and communicate securely…to the extent Tor is secure, and if your using the official Tor browser, web crypto can be utilized for group and 1-1s for an additional layer of encryption. I thought it was a fine claim. It should be handle quite a few people messaging all at once on the PI varient.
- Looks like you name images based on a random uuid, so that should protect against filename attacks. But if you do have a filename you can tell whether the image has been an image or not.
How would you ever discover a filename?
If you did have a filename and the exact url to the image you would need to be logged in as a valid user, and the person who shared the photo would have needed to allow access to their profile.
Even if you have the correct link, if those two conditions arnt satisfied you will not be able to view.
Also, looks like all uploads are converted to jpg, regardless as to whether the original image was a jpg (or even an image) or not. Don’t do that.
This was a design choice to have consistency in filetypes. What’s the downside? All browsers will support displaying a jpg.
- Can you point to where in code this invariant is enforced?
Which part are you talking about? The image compression is defined as the compress and store function.
The “API reference” in the readme goes into further specifics on how this works with flask.
Everything except the login page, registration link will behind these two checks see (def login) where the @loginrequired logic is defined for each of the app routes.
- Comment on Here is a more polished release of nanogram. Fully compatible on raspberry pi now. 1 week ago:
- I disclaim the opposite, I don’t tout its ability against nation states in the Readme.
- There are two checks for someone on the server to be able to view a post. First, are you a valid user? Then did the person sharing the photo give you access to view their posts? If both are true you can see the post. Also, on upload to the server, the image get compressed and stripped of any meta data including the file name…so no they couldn’t check a file name. Each photo is given a randomly generated filename.
- Comment on Here is a more polished release of nanogram. Fully compatible on raspberry pi now. 1 week ago:
It was a light hearted plea. I hope people can see past my lack of style and I don’t mean to offend you. I was surprised at all the negativitiy.
- Comment on Here is a more polished release of nanogram. Fully compatible on raspberry pi now. 1 week ago:
Look at the edits, they have both been broken apart into standalone projects broken down into all their parts.
- Comment on Here is a more polished release of nanogram. Fully compatible on raspberry pi now. 1 week ago:
Sorry I don’t mean to come off entitled. It’s not a very constructive community though that’s unfortunate haha.
- Comment on Here is a more polished release of nanogram. Fully compatible on raspberry pi now. 1 week ago:
Better? gitlab.com/here_forawhile/nanogram-termux
Dedicated expanded pi version coming later.
- Comment on Here is a more polished release of nanogram. Fully compatible on raspberry pi now. 1 week ago:
Ok I’ll work on it and share when I am done
- Comment on Here is a more polished release of nanogram. Fully compatible on raspberry pi now. 1 week ago:
So just a expanded file structure directory is what you want? The script executable expands to each individual piece once run.
What do you mean a actual published source repo? I do not understand how its not that. Everything is packaged into one script.
- Comment on Here is a more polished release of nanogram. Fully compatible on raspberry pi now. 1 week ago:
Here is the source tree.
- Comment on Here is a more polished release of nanogram. Fully compatible on raspberry pi now. 1 week ago:
I made this on mobile, and one monolithic file was how I can quickly iterate and test each feature.
Every time I added a new feature I had to test it’s function to test if it was properly implemented and exactly what I wanted. Keeping it all one file means I could copy paste it into the terminal. Running it overwrites all the home directory instantly with all my updates across the python, db, html, css.
- Comment on Here is a more polished release of nanogram. Fully compatible on raspberry pi now. 1 week ago:
That’s wild that the mod thinks it’s off topic. Thanks for shareing that I didn’t even realize I had been censored by the mods.
- Comment on Here is a more polished release of nanogram. Fully compatible on raspberry pi now. 1 week ago:
They are different environments, and so there are many changes that take place in order for it to work on a PI.
The core app and features are a mirror.
- Comment on Here is a more polished release of nanogram. Fully compatible on raspberry pi now. 1 week ago:
AI generated I guess… with love, time, money, and care from me. Take it or leave it lol.
- Comment on Here is a more polished release of nanogram. Fully compatible on raspberry pi now. 1 week ago:
What do you mean lol?
- Submitted 1 week ago to selfhosted@lemmy.world | 31 comments
- Comment on [deleted] 1 week ago:
Full disclosure. This was created with the help of many different models over the past month two months!
- Comment on [deleted] 1 week ago:
If you don’t want to download a file here is the viewable source.
- Comment on Is it possible to host a lemmy instance over I2P? 2 weeks ago:
You would need the server to point to both I2P and Clearnet. This is possible, but the server looses it’s obscurity.
- Comment on Google’s Sundar Pichai says the job of CEO is one of the ‘easier things’ AI could soon replace 5 weeks ago:
Haha I like that emote
- Comment on Your old android phone is begging to be a cheap home server! 5 weeks ago:
Yes it can. I’ve been doing it for the past few months. You can also host onion services really easily with no root needed.
Here is a clone of Instagram I made for termux. It’s all inclusive and will turn your phone into a social media web server.
I’ve been testing this with 6 family members over the past 3 weeks it works really well for what it is. We have over 100 private posts. Just follow the usage instructions and you can turn your phone into a little private social media safe haven.
Here is the termux side server manager.
- Comment on I present: Torum! A crappy yet functional bearbones selfhosted forum site for termux. 1 month ago:
I’ve made a cleaned up version found here
Improvements
- prompt for admin password on boot -admin panel that allows control for deleting posts (finiky but functional) -pages: 15 posts per page now…this greatly reduces load on server. -basic sorting functions -cleaned up creating posts and new ‘torums’ so the home page isn’t so messy. I’ve tested a large quantity of posts and the server handles it nicely.
- Comment on I present: Torum! A crappy yet functional bearbones selfhosted forum site for termux. 2 months ago:
Agreed! Especially if you have an old phone laying around collecting dust
- Comment on I present: Torum! A crappy yet functional bearbones selfhosted forum site for termux. 2 months ago:
Yep!
- Submitted 2 months ago to selfhosted@lemmy.world | 19 comments
- Comment on Using Termux to create a tiny selfhosted hidden chat server with E2EE. 2 months ago:
Ok,
Here is a more polished version with MIT license.
Improvements
-User counts
-Connection Status Indicator
-Ability to turn on persistent rooms. By default, the server only relays in real time. /persist turns on chat logs. The server then stores encrypted messages and users can chat asynchronously.
-Rotating onion address and keeping existing onion now work correctly. If you rotate a onion address, since encryption keys are partially derived from the onion address, the client will be unable to decrypt messages even if the same password is used.
- /filter command can be used to bootstrap private rooms in a scenario where multiple people want to use the same server, yet chat privately. All it does is filter out messages that it can’t decrypt because it has the wrong password.
-Got rid of ncurses set up menus to slim down the script a bit.
-Removed redundant server manager commands and now only list two. Quit and Quit and Flush (this deletes everything in the server directory except persistent chat logs if they were turned on)
New UI Image
Example of Encrypted Chat Logs on Server Side Image
I noticed some of my devices during testing wouldn’t connect without hosting a server in a seperate instance. I’m not sure why this is happening but if you can’t connect, try to host a server and then connect to another host. This seemed to fix the issue.
- Comment on This is another implementation of what's possible inside of termux for all you self hosters. 2 months ago:
That’s a pretty big sandbox if you can host a web application from it though. It’s really not that restricted but there are compatibility issues so you find your self rebuilding primitives to make things work.
I think the next think I want to make is a notes/word processing web app. There is a pretty good use case to be to able to connect and process documents from a private server on any machine.
- Comment on This is another implementation of what's possible inside of termux for all you self hosters. 2 months ago:
What a weird turn of events this is the festival that scammed everyone
I stumbled upon it by by accident when trying to share. I remembered file.io was a quick account free way to share a files but now when you upload limewire takes over.
- Comment on This is another implementation of what's possible inside of termux for all you self hosters. 2 months ago:
Thankyou that’s really helpful 👍
- Comment on This is another implementation of what's possible inside of termux for all you self hosters. 2 months ago:
Yes termux is the webserver here and the client is the web browser now. This simplifies the use case scenario alot since most devices have a browser.