Overview
Comment: | Fixed stupid cookie bug |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
f1f4d8b2dead215b903899834f287f20 |
User & Date: | matt on 2012-07-27 18:41:25 |
Other Links: | manifest | tags |
Context
2012-07-27
| ||
21:20 | removed unnecessary logging output check-in: 3e61eb47cb user: matt tags: trunk | |
18:41 | Fixed stupid cookie bug check-in: f1f4d8b2de user: matt tags: trunk | |
2012-07-26
| ||
23:16 | Got cookie to compile by switching to posix calls for time string check-in: 00fb8be61d user: matt tags: trunk | |
Changes
Modified cookie.scm from [ab8271f5b7] to [bf01624c2b].
︙ | |||
43 44 45 46 47 48 49 | 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | - - - - - - - - - - - + + + + + + + + + + + - - + + | ;; <http://www.netscape.com/newsref/std/cookie_spec.html> (declare (unit cookie)) (require-extension srfi-1 srfi-13 srfi-14 regex) ;; (use srfi-1 srfi-13 srfi-14 regex) ;; (declare (export parse-cookie-string construct-cookie-string)) |
︙ |
Modified session.scm from [74a61ca45d] to [2551ba7b15].
︙ | |||
228 229 230 231 232 233 234 235 236 237 238 239 240 | 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 | + + + + + + + + + + + + + + + + + + + + - + | (sdat-set-session-key! self new-key) (sdat-set-session-id! self new-sid) (sdat-set-session-cookie! self (session:make-cookie self))) (sdat-set-session-id! self sid)))) (define (session:make-cookie self) ;; (list (conc "session_key=" (sdat-get-session-key self) "; Path=/; Domain=." (sdat-get-domain self) "; Max-Age=" (* 86400 14) "; Version=1"))) ;; According to ;; http://www.codemarvels.com/2010/11/apache-rewriterule-set-a-cookie-on-localhost/ ;; Here are the 2 (often left out) requirements to set a cookie using ;; httpd-F˘s rewrite rule (mod_rewrite), while working on localhost:-A ;; ;; Use the IP 127.0.0.1 instead of localhost/machine-name as the ;; domain; e.g. [CO=someCookie:someValue:127.0.0.1:2:/], which says ;; create a cookie -Y´someCookieˇ with value ´someValueˇ for the ;; domain ´127.0.0.1$B!m(B having a life time of 2 mins, for any path in ;; the domain (path=/). (Obviously you will have to run the ;; application with this value in the URL) ;; ;; To make a session cookie, limit the flag statement to just three ;; attributes: name, value and domain. e.g ;; [CO=someCookie:someValue:127.0.0.1] %G–%@ Any further ;; settings, apache writes anˇ expiresˇ attribute for the set-cookie ;; header, which makes the cookie a persistent one (not really ;; persistent, as the expires value set is the current server time ;; %G–%@ so you don-F-F˘t even get to see your cookie!)-A (list (string-substitute ";" "; " (car (construct-cookie-string ;; warning! messing up this itty bitty bit of code will cost much time! `(("session_key" ,(sdat-get-session-key self) expires: ,(+ (current-seconds) (* 14 86400)) |
︙ | |||
282 283 284 285 286 287 288 | 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 | - - - - + + + + | (dbi:for-each-row (lambda (tuple) (set! status #t)) conn (string-append "INSERT INTO sessions (session_key) VALUES ('" tmpkey "')")) tmpkey)) ;; returns session key IFF it is in the HTTP_COOKIE (define (session:extract-session-key self) |
︙ | |||
340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 | 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 | + + | (define (session:extract-key self key) (let ((params (sdat-get-params self))) (session:extract-key-from-param self params key))) (define (session:extract-key-from-param self params key) (let ((r1 (regexp (string-append "^" key "=([^=]+)$")))) (err:log "INFO: Looking for " key " in " params) (if (< (length params) 1) #f (let loop ((head (car params)) (tail (cdr params))) (let ((match (string-match r1 head))) (cond (match (let ((session-key (list-ref match 1))) (err:log "INFO: Found session key=" session-key) (sdat-set-session-key! self (list-ref match 1)) session-key)) ((null? tail) #f) (else (loop (car tail) (cdr tail))))))))) |
︙ |