I make and sell BusKill laptop kill cords. Monero is accepted.

https://michaelaltfield.net/

  • 32 Posts
  • 27 Comments
Joined 2 years ago
cake
Cake day: June 12th, 2023

help-circle
  • Yeah, it’s dangerous for a community to tolerate and adopt closed-source software. We should have done a better job pressuring them to license it openly.

    The OSM wiki pointed me to Maperitive first, but I wish it pointed me to qgis first. We should probably edit the wiki with a huge warning banner that the code is closed, the app is full of bugs, and that it is not (and can not be) updated.

    Edit: I took my own advice and added a big red box to the top of the article warning the user and pointing them to QGIS instead.

    Edit 2: Do we have any way to know when the latest version of Maperitive (v2.4.3) was released? Usually I’d check the git repo, but…

    Edit 3: stat on the Maperitive-latest.zip file says that it’s last modified 2018-02-27 17:25:07, so it’s at least 6 years old.




  • what happens if I die? what happens if my site goes down? what happens if a site is “protected” by cloudflare (and therefore makes the content inaccessible to at-risk folks)? what happens if a site has an authwall (and therefore is inaccessible to less-privileged folks)?

    I think it’s important for us to federate content, not just links.








  • o hai. Curious that you expected a bunch of people to support you within a couple days. I never saw your proposal (buried in a comment thread in one post on lemmy). I’m only first hearing of this 6 hours after you specifically tagged me. I think you could do more to publish & advocate your proposals if you’re serious about them…

    Before the incident described in the article you’re referencing, I had never spoken to any instance admins. Since I published it, I have spoken to several instance admins (many reached out to me), and they all expressed similar frustrations with the lemmy devs and fatigue in contributing to this project.

    No matter how much people will tell you that something is important to them, the true test is seeing how many are willing to pay the asking price.

    I think it’s important to consider that there’s many ways that people contribute to Lemmy. Equally as important as the work that the devs are doing is the work that the instance admins are doing. Collectively the community of instance admins are contributing much more money and time into lemmy than the developers are. That shouldn’t be discounted. Both should be appreciated.

    There are other ways that people take time out of their lives to support Lemmy, such as finding and filing bug reports, writing documentation, answering questions about the fediverse to new users, raising awareness about lemmy on other centralized platforms, etc. These are also all contributions that benefits the project. Don’t discount them.

    But when our contributions are met with disrespect, it pushes us away. Based on my conversations with countless Lemmy contributors in the past few days, that’s where a lot of people are. They don’t want to invest any more time or money into Lemmy because of their previous interactions with the Lemmy devs.

    This can be repaired, but the Lemmy devs do need to work on fixing their Image Problem.




  • The fines usually are a percent of revenue or millions of Euros, whichever is higher.

    So if your revenue is 0 EUR then they can fine you the millions of Euros instead. The point of the “percent of revenue” alternative was for larger corporations that can get fined tens or hundreds of millions of Euros (or, as it happened to Meta, in some cases – billions of Euros for a single GDPR violation).


  • The fines usually are a percent of revenue or millions of Euros, whichever is higher.

    So if your revenue is 0 EUR then they can fine you the millions of Euros instead. The point of the “percent of revenue” alternative was for larger corporations that can get fined tens or hundreds of millions of Euros (or, as it happened to Meta, in some cases – billions of Euros for a single GDPR violation).


  • That would be true if their instance wasn’t federating. If the instance is federating, then it’s downloading content from other users, even if the user isn’t registered on the instance. And that content is publicly available.

    So if someone discovers their content on their instance and sends them a GDPR request (eg Erasure), then they are legally required to process it.


  • It’s definitely not impossible to contact all instances; it’s a finite list. But we should have a tool to make this easier. Something that can take a given username or post, do a search, find out all the instances that it federated-to, get the contact for all of those instances, and then send-out a formal “GDPR Erasure Request” to all of the relevant admins.









  • This is a big problem. At the time of writing:

    1. Users cannot delete their images on Lemmy
    2. If a user deletes their account, their images don’t get deleted
    3. There is no WUI for admins to delete images on Lemmy
    4. It is very difficult for admins to find & delete images on Lemmy (via the CLI)
    5. The Lemmy team didn’t bother documenting how admins can delete images on Lemmy

    How to purge images in Lemmy

    pict-rs is a third-party simple image hosting service that runs along-side Lemmy for instances that allow users to upload media.

    At the time of writing, there is no WUI for admins to find and delete images. You have to manually query the pict-rs database and execute an API call from the command-line. Worse: Lemmy has no documentation telling instance admins how to delete images 🤦

    For the purposes of this example, let's assume you're trying to delete the following image

    https://monero.town/pictrs/image/001665df-3b25-415f-8a59-3d836bb68dd1.webp
    

    There are two API endpoints in pict-rs that can be used to delete an image

    Method One: /image/delete/{delete_token}/{alias}

    This API call is publicly-accessible, but it first requires you to obtain the image's `delete_token`

    The `delete_token` is first returned by Lemmy when POSTing to the `/pictrs/image` endpoint

    {
       "msg":"ok",
       "files":[
          {
             "file":"001665df-3b25-415f-8a59-3d836bb68dd1.webp",
             "delete_token":"d88b7f32-a56f-4679-bd93-4f334764d381"
          }
       ]
    }
    

    Two pieces of information are returned here:

    1. file (aka the "alias") is the server filename of the uploaded image
    2. delete_token is the token needed to delete the image

    Of course, if you didn't capture this image's `delete_token` at upload-time, then you must fetch it from the postgres DB.

    First, open a shell on your running postgres container. If you installed Lemmy with docker compose, use `docker compose ps` to get the "SERVICE" name of your postgres host, and then enter it with `docker exec`

    docker compose ps --format "table {{.Service}}\t{{.Image}}\t{{.Name}}"
    docker compose exec <docker_service_name> /bin/bash
    

    For example:

    user@host:/home/user/lemmy# docker compose ps --format "table {{.Service}}\t{{.Image}}\t{{.Name}}"
    SERVICE    IMAGE                            NAME
    lemmy      dessalines/lemmy:0.19.3          lemmy-lemmy-1
    lemmy-ui   dessalines/lemmy-ui:0.19.3       lemmy-lemmy-ui-1
    pictrs     docker.io/asonix/pictrs:0.5.4    lemmy-pictrs-1
    postfix    docker.io/mwader/postfix-relay   lemmy-postfix-1
    postgres   docker.io/postgres:15-alpine     lemmy-postgres-1
    proxy      docker.io/library/nginx          lemmy-proxy-1
    user@host:/home/user/lemmy# 
    
    user@host:/home/user/lemmy# docker compose exec postgres /bin/bash
    postgres:/# 
    

    Connect to the database as the `lemmy` user

    psql -U lemmy
    

    For example

    postgres:/# psql -U lemmy
    psql (15.5)
    Type "help" for help.
    
    lemmy=# 
    

    Query for the image by the "alias" (the filename)

    select * from image_upload where pictrs_alias = '<image_filename>';
    

    For example

    lemmy=# select * from image_upload where pictrs_alias = '001665df-3b25-415f-8a59-3d836bb68dd1.webp';
     local_user_id | pictrs_alias | pictrs_delete_token | published 
    ---------------+--------------+---------------------+-----------
    1149 | 001665df-3b25-415f-8a59-3d836bb68dd1.webp | d88b7f32-a56f-4679-bd93-4f334764d381 | 2024-02-07 11:10:17.158741+00
    (1 row)
    
    lemmy=# 
    

    Now, take the `pictrs_delete_token` from the above output, and use it to delete the image.

    The following command should be able to be run on any computer connected to the internet.

    curl -i "https://<instance_domain>/pictrs/image/delete/<pictrs_delete_token>/<image_filename>"
    

    For example:

    user@disp9140:~$ curl -i "https://monero.town/pictrs/image/delete/d88b7f32-a56f-4679-bd93-4f334764d381/001665df-3b25-415f-8a59-3d836bb68dd1.webp"
    
    HTTP/2 204 No Content
    server: nginx
    date: Fri, 09 Feb 2024 15:37:48 GMT
    vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers
    cache-control: private
    referrer-policy: same-origin
    x-content-type-options: nosniff
    x-frame-options: DENY
    x-xss-protection: 1; mode=block
    X-Firefox-Spdy: h2
    user@disp9140:~$ 
    

    ⓘ Note: If you get an `incorrect_login` error, then try [a] logging into the instance in your web browser and then [b] pasting the "https://<instance_domain>/pictrs/image/delete/<pictrs_delete_token>/<image_filename>" URL into your web browser.

    The image should be deleted.

    Method Two: /internal/purge?alias={alias}

    Alternatively, you could execute the deletion directly inside the pictrs container. This eliminates the need to fetch the `delete_token`.

    First, open a shell on your running `pictrs` container. If you installed Lemmy with docker compose, use `docker compose ps` to get the "SERVICE" name of your postgres host, and then enter it with `docker exec`

    docker compose ps --format "table {{.Service}}\t{{.Image}}\t{{.Name}}"
    docker compose exec <docker_service_name> /bin/sh
    

    For example:

    user@host:/home/user/lemmy# docker compose ps --format "table {{.Service}}\t{{.Image}}\t{{.Name}}"
    SERVICE    IMAGE                            NAME
    lemmy      dessalines/lemmy:0.19.3          lemmy-lemmy-1
    lemmy-ui   dessalines/lemmy-ui:0.19.3       lemmy-lemmy-ui-1
    pictrs     docker.io/asonix/pictrs:0.5.4    lemmy-pictrs-1
    postfix    docker.io/mwader/postfix-relay   lemmy-postfix-1
    postgres   docker.io/postgres:15-alpine     lemmy-postgres-1
    proxy      docker.io/library/nginx          lemmy-proxy-1
    user@host:/home/user/lemmy# 
    
    user@host:/home/user/lemmy# docker compose exec pictrs /bin/sh
    ~ $ 
    

    Execute the following command inside the `pictrs` container.

    wget --server-response --post-data "" --header "X-Api-Token: ${PICTRS__SERVER__API_KEY}" "http://127.0.0.1:8080/internal/purge?alias=<image_filename>"
    

    For example:

    ~ $ wget --server-response --post-data "" --header "X-Api-Token: ${PICTRS__SERVER__API_KEY}" "http://127.0.0.1:8080/internal/purge?alias=001665df-3b25-415f-8a59-3d836bb68dd1.webp"
    Connecting to 127.0.0.1:8080 (127.0.0.1:8080)
    HTTP/1.1 200 OK
    content-length: 67
    connection: close
    content-type: application/json
    date: Wed, 14 Feb 2024 12:56:24 GMT
    
    saving to 'purge?alias=001665df-3b25-415f-8a59-3d836bb68dd1.webp'
    purge?alias=001665df 100% |*****************************************************************************************************************************************************************************************************************************| 67 0:00:00 ETA
    'purge?alias=001665df-3b25-415f-8a59-3d836bb68dd1.webp' saved
    
    ~ $ 
    

    ⓘ Note: There's an error in the pict-rs reference documentation. It says you can POST to `/internal/delete`, but that just returns 404 Not Found.

    The image should be deleted

    Further Reading

    Unfortunately, it seems that the Lemmy develoeprs are not taking these moral and legal (GDPR) risks seriously (they said it may take years before they address them), and they threatened to ban me for trying to highlight the severity of this risk, get them to tag GDPR-related bugs, and to prioritize them.

    If GDPR-compliance is important to you on the fediverse, then please provide feedback to the Lemmy developers in the GitHub links above.

    Attribution

    This comment was copied from the following article: Nightmare on Lemmy Street (A Fediverse GDPR Horror Story)

    Nightmare on Lemmy St - A GDPR Horror Story
    Nightmare on Lemmy Street (A Fediverse GDPR Horror Story)