• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.10.1/emacs-93/emacs/lisp/url/

Lines Matching +refs:url +refs:cookie +refs:set +refs:secure

0 ;;; url-cookie.el --- Netscape Cookie support
30 (require 'url-util)
31 (require 'url-parse)
37 ;; A cookie is stored internally as a vector of 7 slots
38 ;; [ cookie NAME VALUE EXPIRES LOCALPART DOMAIN SECURE ]
40 (defsubst url-cookie-name (cookie) (aref cookie 1))
41 (defsubst url-cookie-value (cookie) (aref cookie 2))
42 (defsubst url-cookie-expires (cookie) (aref cookie 3))
43 (defsubst url-cookie-localpart (cookie) (aref cookie 4))
44 (defsubst url-cookie-domain (cookie) (aref cookie 5))
45 (defsubst url-cookie-secure (cookie) (aref cookie 6))
47 (defsubst url-cookie-set-name (cookie val) (aset cookie 1 val))
48 (defsubst url-cookie-set-value (cookie val) (aset cookie 2 val))
49 (defsubst url-cookie-set-expires (cookie val) (aset cookie 3 val))
50 (defsubst url-cookie-set-localpart (cookie val) (aset cookie 4 val))
51 (defsubst url-cookie-set-domain (cookie val) (aset cookie 5 val))
52 (defsubst url-cookie-set-secure (cookie val) (aset cookie 6 val))
53 (defsubst url-cookie-retrieve-arg (key args) (nth 1 (memq key args)))
55 (defsubst url-cookie-create (&rest args)
56 "Create a cookie vector object from keyword-value pairs ARGS.
63 :secure ???
66 (aset retval 0 'cookie)
67 (url-cookie-set-name retval (url-cookie-retrieve-arg :name args))
68 (url-cookie-set-value retval (url-cookie-retrieve-arg :value args))
69 (url-cookie-set-expires retval (url-cookie-retrieve-arg :expires args))
70 (url-cookie-set-localpart retval (url-cookie-retrieve-arg :localpart args))
71 (url-cookie-set-domain retval (url-cookie-retrieve-arg :domain args))
72 (url-cookie-set-secure retval (url-cookie-retrieve-arg :secure args))
75 (defun url-cookie-p (obj)
76 "Return non-nil if OBJ is a cookie vector object.
78 A cookie vector object is a vector of 7 slots:
79 [cookie NAME VALUE EXPIRES LOCALPART DOMAIN SECURE]."
80 (and (vectorp obj) (= (length obj) 7) (eq (aref obj 0) 'cookie)))
82 (defgroup url-cookie nil
84 :prefix "url-"
85 :prefix "url-cookie-"
86 :group 'url)
88 (defvar url-cookie-storage nil "Where cookies are stored.")
89 (defvar url-cookie-secure-storage nil "Where secure cookies are stored.")
90 (defcustom url-cookie-file nil
93 :group 'url-file
94 :group 'url-cookie)
96 (defcustom url-cookie-confirmation nil
99 :group 'url-cookie)
101 (defcustom url-cookie-multiple-line nil
107 :group 'url-cookie)
109 (defvar url-cookies-changed-since-last-save nil
112 (defun url-cookie-parse-file (&optional fname)
113 (setq fname (or fname url-cookie-file))
118 ;; (message "Could not load cookie file %s" fname)
121 (defun url-cookie-clean-up (&optional secure)
123 (var (if secure 'url-cookie-secure-storage 'url-cookie-storage))
128 (cur-cookie nil)
137 (setq cur-cookie (car cookies)
139 (if (or (not (url-cookie-p cur-cookie))
140 (url-cookie-expired-p cur-cookie)
141 (null (url-cookie-expires cur-cookie)))
143 (setq new-cookies (cons cur-cookie new-cookies))))
148 (set var new)))
150 (defun url-cookie-write-file (&optional fname)
151 (setq fname (or fname url-cookie-file))
155 ((not url-cookies-changed-since-last-save) nil)
157 (message "Cookies file %s (see variable `url-cookie-file') is unwritable." fname))
159 (url-cookie-clean-up)
160 (url-cookie-clean-up t)
166 "(setq url-cookie-storage\n '")
167 (pp url-cookie-storage (current-buffer))
168 (insert ")\n(setq url-cookie-secure-storage\n '")
169 (pp url-cookie-secure-storage (current-buffer))
176 (set (make-local-variable 'version-control) 'never)
178 (setq url-cookies-changed-since-last-save nil)
181 (defun url-cookie-store (name value &optional expires domain localpart secure)
182 "Store a netscape-style cookie."
183 (let* ((storage (if secure url-cookie-secure-storage url-cookie-storage))
192 ;; Need to either stick the new cookie in existing domain storage
193 ;; or possibly replace an existing cookie if the names match.
200 (if (and (equal localpart (url-cookie-localpart cur))
201 (equal name (url-cookie-name cur)))
203 (url-cookie-set-expires cur expires)
204 (url-cookie-set-value cur value)
207 ;; New cookie
209 (url-cookie-create :name name
214 :secure secure)
217 (setq tmp (url-cookie-create :name name
222 :secure secure))
226 (secure
227 (setq url-cookie-secure-storage (list (list domain tmp))))
229 (setq url-cookie-storage (list (list domain tmp))))))))
231 (defun url-cookie-expired-p (cookie)
233 (exp (url-cookie-expires cookie))
261 (defun url-cookie-retrieve (host localpart &optional secure)
263 (let ((storage (if secure
264 (append url-cookie-secure-storage url-cookie-storage)
265 url-cookie-storage))
290 (url-cookie-localpart cur))))
292 (not (url-cookie-expired-p cur)))
296 (defun url-cookie-generate-header-lines (host localpart secure)
297 (let* ((cookies (url-cookie-retrieve host localpart secure))
306 (> (length (url-cookie-localpart x))
307 (length (url-cookie-localpart y))))))))
311 chunk (format "%s=%s" (url-cookie-name cur) (url-cookie-value cur))
312 retval (if (and url-cookie-multiple-line
322 (defvar url-cookie-two-dot-domains
328 '.'s in the domain name in order to set a cookie.")
330 (defcustom url-cookie-trusted-urls nil
333 :group 'url-cookie)
335 (defcustom url-cookie-untrusted-urls nil
338 :group 'url-cookie)
340 (defun url-cookie-host-can-set-p (host domain)
348 (if (string-match url-cookie-two-dot-domains domain)
355 ;; domain it wants to set a cookie for though.
366 (defun url-cookie-handle-set-cookie (str)
367 (setq url-cookies-changed-since-last-save t)
368 (let* ((args (url-parse-args str t))
370 (secure (and (assoc-string "secure" args t) t))
372 (url-host url-current-object)))
373 (current-url (url-view-url t))
374 (trusted url-cookie-trusted-urls)
375 (untrusted url-cookie-untrusted-urls)
379 (url-filename url-current-object))))
383 '("secure" "domain" "expires" "path")))
388 ;; gracefully - take care of this here, instead of in url-cookie-expired-p
417 (if (string-match (car trusted) current-url)
421 (if (string-match (car untrusted) current-url)
433 ((or (eq url-privacy-level 'paranoid)
434 (and (listp url-privacy-level) (memq 'cookies url-privacy-level)))
437 ((and url-cookie-confirmation
446 (not (funcall url-confirmation-func
447 (format "Allow %s to set these cookies? "
448 (url-host url-current-object))))
453 ((url-cookie-host-can-set-p (url-host url-current-object) domain)
458 (url-cookie-store (car cur) (cdr cur)
459 expires domain localpart secure))))
461 (message "%s tried to set a cookie for domain %s - rejected."
462 (url-host url-current-object) domain)))))
464 (defvar url-cookie-timer nil)
466 (defcustom url-cookie-save-interval 3600
469 the `customize' interface after `url-do-setup' has been run, you need
470 to run the `url-cookie-setup-save-timer' function manually."
471 :set #'(lambda (var val)
472 (set-default var val)
473 (if (bound-and-true-p url-setup-done)
474 (url-cookie-setup-save-timer)))
476 :group 'url-cookie)
478 (defun url-cookie-setup-save-timer ()
479 "Reset the cookie saver timer."
481 (ignore-errors (cancel-timer url-cookie-timer))
482 (setq url-cookie-timer nil)
483 (if url-cookie-save-interval
484 (setq url-cookie-timer (run-at-time url-cookie-save-interval
485 url-cookie-save-interval
486 #'url-cookie-write-file))))
488 (provide 'url-cookie)
491 ;;; url-cookie.el ends here