fix org-caldav: use Basic auth with url-basic-auth-storage pre-registration
Baikal server is configured for Basic auth (dav_auth_type: Basic). Previous Digest auth approach was wrong. New approach: - my/caldav-preregister-basic-auth reads credentials from auth-source (~/.authinfo) - Pre-registers in url-basic-auth-storage to bypass auth-source retries during requests - Gives clear error if ~/.authinfo not configured - Removed family calendar sync (was failing; can be added later)
This commit is contained in:
39
config.el
39
config.el
@@ -1733,15 +1733,41 @@ current frame."
|
|||||||
;;; --- Tier 1: High impact ---
|
;;; --- Tier 1: High impact ---
|
||||||
|
|
||||||
;; org-caldav — CalDAV sync for org (Baikal, Basic auth over HTTPS)
|
;; org-caldav — CalDAV sync for org (Baikal, Basic auth over HTTPS)
|
||||||
;; Add to ~/.authinfo:
|
;; Add to ~/.authinfo (chmod 600):
|
||||||
;; machine cal.apps.sukany.cz login martin password YOUR_PASSWORD
|
;; machine cal.apps.sukany.cz login martin password YOUR_PASSWORD
|
||||||
;; machine cal.apps.sukany.cz login family password YOUR_PASSWORD
|
|
||||||
(use-package! org-caldav
|
(use-package! org-caldav
|
||||||
:commands my/org-caldav-sync
|
:commands my/org-caldav-sync
|
||||||
:config
|
:config
|
||||||
|
(defun my/caldav-preregister-basic-auth ()
|
||||||
|
"Read CalDAV credentials from auth-source and pre-register for Basic auth.
|
||||||
|
This bypasses auth-source retry issues during CalDAV requests.
|
||||||
|
Requires ~/.authinfo entry:
|
||||||
|
machine cal.apps.sukany.cz login martin password <pass>"
|
||||||
|
(require 'url-auth)
|
||||||
|
(require 'auth-source)
|
||||||
|
(let* ((entry (car (auth-source-search
|
||||||
|
:host "cal.apps.sukany.cz"
|
||||||
|
:user "martin"
|
||||||
|
:max 1
|
||||||
|
:require '(:user :secret))))
|
||||||
|
(user (when entry (plist-get entry :user)))
|
||||||
|
(secret (when entry (plist-get entry :secret)))
|
||||||
|
(pass (when secret (if (functionp secret) (funcall secret) secret))))
|
||||||
|
(if (and user pass)
|
||||||
|
(progn
|
||||||
|
;; Pre-register in url-basic-auth-storage: (server realm user pass)
|
||||||
|
(setq url-basic-auth-storage
|
||||||
|
(cl-remove "cal.apps.sukany.cz" url-basic-auth-storage
|
||||||
|
:key #'car :test #'equal))
|
||||||
|
(push (list "cal.apps.sukany.cz" "BaikalDAV" user pass)
|
||||||
|
url-basic-auth-storage)
|
||||||
|
t)
|
||||||
|
(user-error "CalDAV: no credentials found.\nAdd to ~/.authinfo:\n machine cal.apps.sukany.cz login martin password <pass>"))))
|
||||||
|
|
||||||
(defun my/org-caldav-sync ()
|
(defun my/org-caldav-sync ()
|
||||||
"Sync org-caldav: personal calendar (twoway) + family calendar (read-only)."
|
"Sync org-caldav: personal calendar (twoway) + family calendar (read-only)."
|
||||||
(interactive)
|
(interactive)
|
||||||
|
(my/caldav-preregister-basic-auth)
|
||||||
;; Personal calendar — twoway, new events created here
|
;; Personal calendar — twoway, new events created here
|
||||||
(setq org-caldav-url "https://cal.apps.sukany.cz/dav.php/calendars/martin"
|
(setq org-caldav-url "https://cal.apps.sukany.cz/dav.php/calendars/martin"
|
||||||
org-caldav-calendar-id "default"
|
org-caldav-calendar-id "default"
|
||||||
@@ -1749,14 +1775,7 @@ current frame."
|
|||||||
org-caldav-files '("~/org/personal.org" "~/org/work.org")
|
org-caldav-files '("~/org/personal.org" "~/org/work.org")
|
||||||
org-caldav-sync-direction 'twoway)
|
org-caldav-sync-direction 'twoway)
|
||||||
(org-caldav-sync)
|
(org-caldav-sync)
|
||||||
;; Family calendar — read-only (fromcal), no writes back
|
(message "CalDAV sync complete: personal (twoway)")))
|
||||||
(setq org-caldav-url "https://cal.apps.sukany.cz/dav.php/calendars/family"
|
|
||||||
org-caldav-calendar-id "default"
|
|
||||||
org-caldav-inbox "~/org/family-calendar.org"
|
|
||||||
org-caldav-files nil
|
|
||||||
org-caldav-sync-direction 'fromcal)
|
|
||||||
(org-caldav-sync)
|
|
||||||
(message "CalDAV sync complete: personal (twoway) + family (read-only)")))
|
|
||||||
|
|
||||||
(map! :leader "o c" #'my/org-caldav-sync)
|
(map! :leader "o c" #'my/org-caldav-sync)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user