• 3 Posts
  • 54 Comments
Joined 2 years ago
cake
Cake day: June 1st, 2023

help-circle






  • So I am not entirely sure. I did find the code for it however if you want to take a look.

    In Firefox it uses the variable for the neqo library, which is the the Mozilla Firefox implementation of QUIC in Rust.

    Line #284: https://github.com/mozilla-firefox/firefox/blob/57e6d88cb3ad7f9777145f2d4fba11d4fc9de369/netwerk/socket/neqo_glue/src/lib.rs#L284

    code:

    let mut params = ConnectionParameters::default()
        .versions(quic_version, version_list)
        .cc_algorithm(cc_algorithm)
        .max_data(max_data)
        .max_stream_data(StreamType::BiDi, false, max_stream_data)
        .grease(static_prefs::pref!("security.tls.grease_http3_enable"))
        .sni_slicing(static_prefs::pref!("network.http.http3.sni-slicing"))
        .idle_timeout(Duration::from_secs(idle_timeout.into()))
        // Disabled on OpenBSD. See <https://bugzilla.mozilla.org/show_bug.cgi?id=1952304>.
        .pmtud_iface_mtu(cfg!(not(target_os = "openbsd")))
        // MLKEM support is configured further below. By default, disable it.
        .mlkem(false);
    

    In the neqo library it’s used here: https://github.com/mozilla/neqo/blob/9e52e922343609dba5171c0adb869cff7bd8d3a0/neqo-transport/src/crypto.rs#L1594

    code:

    let written = if sni_slicing && offset == 0 {
        if let Some(sni) = find_sni(data) {
            // Cut the crypto data in two at the midpoint of the SNI and swap the chunks.
            let mid = sni.start + (sni.end - sni.start) / 2;
            let (left, right) = data.split_at(mid);
    
            // Truncate the chunks so we can fit them into roughly evenly-filled packets.
            let packets_needed = data.len().div_ceil(builder.limit());
            let limit = data.len() / packets_needed;
            let ((left_offset, left), (right_offset, right)) =
                limit_chunks((offset, left), (offset + mid as u64, right), limit);
            (
                write_chunk(right_offset, right, builder),
                write_chunk(left_offset, left, builder),
            )
        } else {
            // No SNI found, write the entire data.
            (write_chunk(offset, data, builder), None)
        }
    } else {
        // SNI slicing disabled or data not at offset 0, write the entire data.
        (write_chunk(offset, data, builder), None)
    };
    





  • I just did another test.

    You should be able to create the directories manually. I cheated by simply cloning the repo and copying them to the bind mount location like so. You can use the bind mount method like you wanted.

    git clone https://github.com/mdshack/shotshare
    cp -r shotshare/storage/* /srv/dev-disk-by-uuid-7fe66601-5ca0-4c09-bc13-a015025fe53a/Files/Shotshare/shotshare_data/
    chown 82:82 -R /srv/dev-disk-by-uuid-7fe66601-5ca0-4c09-bc13-a015025fe53a/Files/Shotshare/shotshare_data
    


  • This appears to be the exact same problem as https://github.com/mdshack/shotshare/issues/31

    For testing I just spun up a VM with Docker, I tried the same compose file as you. I found I had to use the volume instead of a bind mount for /app/storage.

    This compose file should work.

    version: "3.3"
    services:
      shotshare:
        ports:
          - 2000:80
        environment:
          - HOST=:80
          - ALLOW_REGISTRATION=false
        volumes:
          - shotshare_data:/app/storage
          - /srv/dev-disk-by-uuid-7fe66601-5ca0-4c09-bc13-a015025fe53a/Files/Shotshare/database.sqlite:/app/database/database.sqlite
          - /srv/dev-disk-by-uuid-7fe66601-5ca0-4c09-bc13-a015025fe53a/Files/Shotshare/.env:/app/.env
        restart: unless-stopped
        container_name: shotshare
        image: mdshack/shotshare:latest
    volumes:
        shotshare_data:
    networks: {}
    



  • So, I just walk into the film studios lobbies(Everyone of them) and ask them for an Ethernet cord, I proceed to connect my NAS to it and download every movie released by that same film studio. I’ve never had an issue from them.

    Because, everything on the internet is true, right? Maybe I posted a totally false statement because it sounds good on the area of the internet I posted, or maybe I didn’t make a totally inaccurate and false statement and want everyone to know how amazing it is. The world will never know!