Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Server Response Date Format Issue #141

Open
dennis-hamann-lr opened this issue Sep 29, 2023 · 3 comments
Open

Server Response Date Format Issue #141

dennis-hamann-lr opened this issue Sep 29, 2023 · 3 comments

Comments

@dennis-hamann-lr
Copy link

Error Description

I am writing to report an issue I encountered while attempting to access the server using rclone. The problem arises from a discrepancy in the date format used by the server's response and the one expected by the client.

The server's response uses the date format 2023-09-29T17:44:42.444222818+02:00, while the client expects the date format 2006-01-02T15:04:05.999999999Z.

I have tested this with multiple clients, including ExpanDrive and S3 Explorer, and have consistently encountered the same issue.

logs

Response {
    status: 200,
    version: HTTP/1.1,
    headers: {
        "content-type": "text/xml",
    },
    body: Body(
        Full(
            b"<?xml version=\"1.0\" encoding=\"UTF-8\"?><ListAllMyBucketsResult><Buckets><Bucket><CreationDate>2023-09-29T17:44:42.444222818+02:00</CreationDate><Name>neuerbucket</Name></Bucket><Bucket><CreationDate>2023-09-29T15:46:25.769964989+02:00</CreationDate><Name>bsp</Name></Bucket></Buckets></ListAllMyBucketsResult>",
        ),
    ),
}

Output of rclone:

(venv) ➜  boto3_tmp rclone -vv lsd local-s3-bsp:                                
2023/09/29 18:35:09 DEBUG : rclone: Version "v1.50.2" starting with parameters ["rclone" "-vv" "lsd" "local-s3-bsp:"]
2023/09/29 18:35:09 DEBUG : Using config file from "/home/user/.config/rclone/rclone.conf"
2023/09/29 18:35:56 ERROR : : error listing: SerializationError: failed to decode REST XML response
	status code: 200, request id: 
caused by: parsing time "2023-09-29T17:44:42.444222818+02:00" as "2006-01-02T15:04:05.999999999Z": cannot parse "+02:00" as "Z"
2023/09/29 18:35:56 Failed to lsd with 2 errors: last error was: SerializationError: failed to decode REST XML response
	status code: 200, request id: 
caused by: parsing time "2023-09-29T17:44:42.444222818+02:00" as "2006-01-02T15:04:05.999999999Z": cannot parse "+02:00" as "Z"
(venv) ➜  boto3_tmp 

hotfix

I managed to resolve the aforementioned date format issue by defining a function that corrects the date format. Here is the function in Rust:

use chrono::{DateTime, Utc};

pub fn correct_date_format(date_str: &String) -> String {
    let date = DateTime::parse_from_rfc3339(date_str).unwrap();
    let utc_date = date.with_timezone(&Utc);
    let utc_date_str = utc_date.format("%Y-%m-%dT%H:%M:%S%.9fZ").to_string();
    utc_date_str
}

This function was then invoked during the creation of the XML response. For instance, in the list_buckets.rs file, I replaced the following line: (https://github.com/datenlord/s3-server/blob/master/src/ops/list_buckets.rs#L47)

w.opt_element("CreationDate", bucket.creation_date)?;

with:

 use crate::date_correction::correct_date_format;
let utc_date_str = correct_date_format(&bucket.creation_date.unwrap());
w.opt_element("CreationDate", Some(utc_date_str))?;

I needed so implement the hotfix for some other endpoints as well.

I would appreciate it if you could look into this matter and provide a solution. Thank you for your time and assistance.

@djhoese
Copy link

djhoese commented Sep 29, 2023

#137

@dennis-hamann-lr
Copy link
Author

Yeah, I noticed it by myself.

Maybe it makes sense to update the README. I was reading a lot of stuff before I figured it out.
Anyway - thanks for this project. It is exactly what I am looking for.

@djhoese
Copy link

djhoese commented Sep 29, 2023

The easiest thing might be for the old maintainers to put the repository in Archive mode. Github usually puts enough stuff on the UI to let you know the repository isn't active then.

CC @Nugine

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants