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

Outlook invite with time one hour minus from events of timezone America/Sao_Paulo #4429

Open
lucassmarin opened this issue Aug 17, 2022 · 3 comments
Labels
0. to triage Pending approval or rejection bug

Comments

@lucassmarin
Copy link

Steps to reproduce

  1. Set your server, mysql and user timezone to America/Sao_Paulo
  2. Create a not all day event, with 1h duration, by example and add a participant that can open invite on Outlook (or, export ics of event and open on Outlook)
  3. See the wrong start and end time read by Outlook besides ICS

Expected behavior

The start and end time of event must be equal on ics (mail body by example) to read by Outlook

Actual behaviour

The start and end time of event is different by 1 hour on ics (mail body by example) to read by Outlook

Calendar app version

3.3.1

CalDAV-clients used

No response

Browser

Firefox 103.0.2

Client operating system

Windows 11 Pro 22H2

Server operating system

Centos 7

Web server

Apache

Database engine version

MySQL

PHP engine version

PHP 8.0

Nextcloud version

24.0.1

Updated from an older installed version or fresh install

Updated from an older version

List of activated apps

Enabled:
  - bruteforcesettings: 2.4.0
  - calendar: 3.3.1
  - cloud_federation_api: 1.7.0
  - comments: 1.14.0
  - dav: 1.22.0
  - federatedfilesharing: 1.14.0
  - files: 1.19.0
  - files_pdfviewer: 2.5.0
  - files_rightclick: 1.3.0
  - files_sharing: 1.16.2
  - files_trashbin: 1.14.0
  - files_versions: 1.17.0
  - lookup_server_connector: 1.12.0
  - notifications: 2.12.0
  - notify_push: 0.4.0
  - oauth2: 1.12.0
  - onlyoffice: 7.3.4
  - privacy: 1.8.0
  - provisioning_api: 1.14.0
  - settings: 1.6.0
  - sharebymail: 1.14.0
  - spreed: 14.0.2
  - tasks: 0.14.4
  - text: 3.5.1
  - theming: 1.15.0
  - twofactor_backupcodes: 1.13.0
  - user_ldap: 1.14.1
  - user_status: 1.4.0
  - viewer: 1.8.0
  - workflowengine: 2.6.0
Disabled:
  - accessibility: 1.7.0
  - activity: 2.15.0
  - admin_audit: 1.14.0
  - circles: 22.1.1
  - contacts: 4.1.1
  - contactsinteraction: 1.2.0
  - dashboard: 7.2.0
  - encryption
  - federation: 1.11.0
  - files_external
  - files_texteditor: 2.14.0
  - files_videoplayer: 1.10.0
  - firstrunwizard: 2.10.0
  - logreader: 2.6.0
  - nextcloud_announcements: 1.10.0
  - password_policy: 1.11.0
  - photos: 1.3.0
  - recommendations: 1.0.0
  - serverinfo: 1.11.0
  - support: 1.4.0
  - survey_client: 1.9.0
  - systemtags: 1.14.0
  - updatenotification: 1.14.0
  - user_usage_report: 1.8.0
  - weather_status: 1.1.0

Nextcloud configuration

{
    "system": {
        "instanceid": "***REMOVED SENSITIVE VALUE***",
        "passwordsalt": "***REMOVED SENSITIVE VALUE***",
        "secret": "***REMOVED SENSITIVE VALUE***",
        "updater.secret": "***REMOVED SENSITIVE VALUE***",
        "trusted_domains": [
            "localhost",
            "skyboxdev.skymail.com.br"
        ],
        "datadirectory": "***REMOVED SENSITIVE VALUE***",
        "dbtype": "mysql",
        "version": "24.0.1.1",
        "overwrite.cli.url": "https:\/\/skyboxdev.skymail.com.br",
        "dbname": "***REMOVED SENSITIVE VALUE***",
        "dbhost": "***REMOVED SENSITIVE VALUE***",
        "dbport": "",
        "dbtableprefix": "oc_",
        "mysql.utf8mb4": true,
        "dbuser": "***REMOVED SENSITIVE VALUE***",
        "dbpassword": "***REMOVED SENSITIVE VALUE***",
        "installed": true,
        "theme": "skymail",
        "redis": {
            "host": "***REMOVED SENSITIVE VALUE***"
        },
        "knowledgebaseenabled": false,
        "auth.webauthn.enabled": false,
        "default_language": "pt_BR",
        "mail_from_address": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpmode": "smtp",
        "mail_domain": "***REMOVED SENSITIVE VALUE***",
        "skybox_url_webmail_logo": "https:\/\/webmaildev.skymail.com.br\/?_task=mai&_action=plugin.logo&_user=user@%domain%",
        "ldapProviderFactory": "\\OCA\\User_LDAP\\LDAPProviderFactory",
        "mail_sendmailmode": "smtp",
        "mail_smtpauthtype": "LOGIN",
        "mail_smtpname": "***REMOVED SENSITIVE VALUE***",
        "mail_smtppassword": "***REMOVED SENSITIVE VALUE***",
        "mail_smtphost": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpport": "587",
        "mail_template_class": "\\OCA\\Skybox\\EMailTemplate",
        "defaultapp": "files",
        "ldapIgnoreNamingRules": false,
        "auth.bruteforce.protection.enabled": false,
        "mail_smtpauth": 1,
        "mail_smtpdebug": 1,
        "imap_port": 143,
        "imap_host": "imap-ha.skymail.net.br",
        "simpleSignUpLink.shown": false,
        "loglevel": 2,
        "maintenance": false,
        "default_phone_region": "BR"
    }
}

Web server error log

No response

Log file

No response

Browser log

No new notification data received App.vue:323
Polling interval updated to 30000 App.vue:355
[DEBUG] calendar: Option render 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", option: {…} }
ConsoleLogger.js:29:8
[DEBUG] calendar: Option render 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", option: {…} }
ConsoleLogger.js:29:8
[DEBUG] calendar: Option render 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", option: {…} }
ConsoleLogger.js:29:8
[DEBUG] calendar: Option render 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", option: {…} }
ConsoleLogger.js:29:8
[DEBUG] calendar: Option render 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", option: {…} }
ConsoleLogger.js:29:8
[DEBUG] calendar: Option render 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", option: {…} }
ConsoleLogger.js:29:8
[DEBUG] calendar: Option render 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", option: {…} }
ConsoleLogger.js:29:8
[DEBUG] calendar: Option render 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", option: {…} }
ConsoleLogger.js:29:8
[DEBUG] calendar: Option render 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", option: {…} }
ConsoleLogger.js:29:8
[DEBUG] calendar: Option render 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", option: {…} }
ConsoleLogger.js:29:8
[DEBUG] calendar: Option render 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", option: {…} }
ConsoleLogger.js:29:8
[DEBUG] calendar: Option render 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", option: {…} }
ConsoleLogger.js:29:8
[DEBUG] calendar: Option render 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", option: {…} }
ConsoleLogger.js:29:8
[DEBUG] calendar: Option render 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", option: {…} }
ConsoleLogger.js:29:8
[DEBUG] calendar: Option render 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", option: {…} }
ConsoleLogger.js:29:8
[INFO] calendar: fetching suggestions for 0 attendees 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br" }
ConsoleLogger.js:33:8
[DEBUG] calendar: availability of room suggestions fetched 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", results: [] }
ConsoleLogger.js:29:8
Invalid avatar url null Avatar.js:150:7469
No new notification data received App.vue:323
Polling interval updated to 30000 App.vue:355
[INFO] calendar: fetching suggestions for 1 attendees 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br" }
ConsoleLogger.js:33:8
XHRGEThttps://skyboxdev.skymail.com.br/ocs/v2.php/apps/user_status/api/v1/statuses/Lucas Stevanelli Marin (lucas.marin@skymail.com.br)
[HTTP/2 404 Not Found 147ms]

XHRGEThttps://skyboxdev.skymail.com.br/ocs/v2.php/apps/user_status/api/v1/statuses/Lucas Marin (lucas.marin@emailemnuvem.com.br)
[HTTP/2 404 Not Found 237ms]

[DEBUG] calendar: availability of room suggestions fetched 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", results: [] }
ConsoleLogger.js:29:8
[DEBUG] calendar: Option render 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", option: {…} }
ConsoleLogger.js:29:8
[DEBUG] calendar: Option render 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", option: {…} }
ConsoleLogger.js:29:8
[DEBUG] calendar: Option render 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", option: {…} }
ConsoleLogger.js:29:8
[DEBUG] calendar: Option render 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", option: {…} }
ConsoleLogger.js:29:8
[DEBUG] calendar: Option render 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", option: {…} }
ConsoleLogger.js:29:8
[DEBUG] calendar: Option render 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", option: {…} }
ConsoleLogger.js:29:8
[DEBUG] calendar: Option render 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", option: {…} }
ConsoleLogger.js:29:8
[DEBUG] calendar: Option render 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", option: {…} }
ConsoleLogger.js:29:8
[DEBUG] calendar: Option render 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", option: {…} }
ConsoleLogger.js:29:8
[DEBUG] calendar: Option render 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", option: {…} }
ConsoleLogger.js:29:8
[DEBUG] calendar: Option render 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", option: {…} }
ConsoleLogger.js:29:8
[DEBUG] calendar: Option render 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", option: {…} }
ConsoleLogger.js:29:8
[DEBUG] calendar: Option render 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", option: {…} }
ConsoleLogger.js:29:8
[DEBUG] calendar: Option render 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", option: {…} }
ConsoleLogger.js:29:8
[DEBUG] calendar: Option render 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", option: {…} }
ConsoleLogger.js:29:8
XHRGEThttps://skyboxdev.skymail.com.br/ocs/v2.php/apps/user_status/api/v1/statuses/Lucas Stevanelli Marin (lucas.marin@skymail.com.br)
[HTTP/2 404 Not Found 114ms]

[INFO] calendar: fetching suggestions for 1 attendees 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br" }
ConsoleLogger.js:33:8
XHRGEThttps://skyboxdev.skymail.com.br/ocs/v2.php/apps/user_status/api/v1/statuses/Lucas Marin (lucas.marin@emailemnuvem.com.br)
[HTTP/2 404 Not Found 194ms]

[DEBUG] calendar: availability of room suggestions fetched 
Object { app: "calendar", uid: "lucas.marin@skymail.com.br", results: [] }
ConsoleLogger.js:29:8

​

Additional info

I don't know if this error is the malformatted DAYLIGHT instruction on ics or a Outlook bug.

If I remove the instruction bellow on .ics, the error can not be reproduced.

BEGIN:DAYLIGHT
TZOFFSETFROM:-0300
TZOFFSETTO:-0200
TZNAME:-02
DTSTART:20181104T000000
RDATE:20181104T000000
END:DAYLIGHT

ICS file example: from_skymailcombr-10h.txt
Please rename from .txt to .ics

image

@lucassmarin lucassmarin added 0. to triage Pending approval or rejection bug labels Aug 17, 2022
@toabi
Copy link

toabi commented Apr 3, 2023

Some user of our nextcloud instance using the Appointments app also reported that people booking the appointments have a 1h off in their outlook.

Example generated ics file:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Sabre//Sabre VObject 4.4.2//EN
CALSCALE:GREGORIAN
BEGIN:VEVENT
UID:sabre-vobject-some-uuid
DTSTAMP:20230403T094138Z
SUMMARY:owner@mecodia | Owner
STATUS:CONFIRMED
DTSTART;TZID=Europe/Berlin:20230404T150000
DTEND;TZID=Europe/Berlin:20230404T153000
DESCRIPTION:Hallo!\n
ORGANIZER;CN=Owner;CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:mailto:
 owner@example.com
ATTENDEE;CN=Owner;CUTYPE=INDIVIDUAL;RSVP=TRUE;ROLE=REQ-PARTICIPANT;PA
 RTSTAT=ACCEPTED:mailto:owner@mecodia.de
ATTENDEE;CN=Example User;CUTYPE=INDIVIDUAL;RSVP=TRUE;ROLE=REQ-PARTICIPANT
 ;PARTSTAT=ACCEPTED:mailto:user@example.com
LOCATION:somewhere
X-NC-APPOINTMENT:YBHaDJK8AP5i
END:VEVENT
END:VCALENDAR

But when the user imports it in their calendar software it's always at 16:00 - unclear why exactly.

@toabi
Copy link

toabi commented Apr 3, 2023

After some digging around in the internet (sadly I have no Outlook to test this) it looks like Outlook would demand a Timezone-Definition for "Europe/Berlin" and because it's not there it uses some made-up time (ignoring DST for example).

Are there any plans to add a VTIMEZONE section to those calendar invites?

Looks like this

public function write(AppointmentConfig $config, DateTimeImmutable $start, string $displayName, string $email, ?string $description = null) : string {
is used to create the ICS file

I think it's a related issue like sabre-io/vobject#376

@miaulalala
Copy link
Contributor

Anyone here got an outlook setup and is willing to test #5339 ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
0. to triage Pending approval or rejection bug
Projects
None yet
Development

No branches or pull requests

3 participants