OSDN Git Service

session-key function of cookielogin module.
authorvisor <visor@users.sourceforge.jp>
Mon, 12 Dec 2011 14:59:13 +0000 (23:59 +0900)
committervisor <visor@users.sourceforge.jp>
Mon, 12 Dec 2011 14:59:13 +0000 (23:59 +0900)
modules/ml-cookielogin.cc
modules/ml-cookielogin.h

index 208e589..7f9e46b 100644 (file)
@@ -179,7 +179,6 @@ MNode*  ml_cookielogin_login (MNode* cell, MlEnv* mlenv, MLFunc* mobj) {
     MNode*  arg = cell->cdr ();
     MLCookieLogin*  obj = MObjRef<MLCookieLogin> (mobj, cMLCookieLoginID);
     ustring  id;
-    ustring  sessionval;
     time_t  avail = 0;
     time_t  limit;
     ustring  group;
@@ -226,25 +225,25 @@ MNode*  ml_cookielogin_login (MNode* cell, MlEnv* mlenv, MLFunc* mobj) {
        } else {
            r.append (uColon);
        }
-       sessionval = randomKey ();
-       obj->db.put (sessionval, r);
+       obj->sessionval = randomKey ();
+       obj->db.put (obj->sessionval, r);
 
        // write a cookie
        if (obj->sessionkey.size () > 0) {
            if (fsecure) {
                if (isHTTPS ()) {
-                   ustring  sessionval2 (randomKey ());
                    ustring  key2 (obj->sessionkey);
 
-                   obj->db.put (sessionval2, sessionval);
+                   obj->sessionval_ssl = randomKey ();
+                   obj->db.put (obj->sessionval_ssl, obj->sessionval);
                    key2.append (CharConst ("N"));
-                   mlenv->env->http.setCookie (obj->sessionkey, sessionval, path, span, domain, true, mlenv->env);
-                   mlenv->env->http.setCookie (key2, sessionval2, path, span, domain, false, mlenv->env);
+                   mlenv->env->http.setCookie (obj->sessionkey, obj->sessionval, path, span, domain, true, mlenv->env);
+                   mlenv->env->http.setCookie (key2, obj->sessionval_ssl, path, span, domain, false, mlenv->env);
                } else {
-                   mlenv->env->http.setCookie (obj->sessionkey, sessionval, path, span, domain, false, mlenv->env);
+                   mlenv->env->http.setCookie (obj->sessionkey, obj->sessionval, path, span, domain, false, mlenv->env);
                }
            } else {
-               mlenv->env->http.setCookie (obj->sessionkey, sessionval, path, span, domain, false, mlenv->env);
+               mlenv->env->http.setCookie (obj->sessionkey, obj->sessionval, path, span, domain, false, mlenv->env);
            }
        }
        obj->closedb ();
@@ -442,3 +441,34 @@ MNode*  ml_cookielogin_clear (MNode* cell, MlEnv* mlenv, MLFunc* mobj) {
     return NULL;
 }
 
+/*DOC:
+====session-key====
+ (session-key) -> STRING
+
+*/
+//#SFUNC       session-key     ml_cookielogin_session_key
+MNode*  ml_cookielogin_session_key (MNode* cell, MlEnv* mlenv, MLFunc* mobj) {
+    MNode*  arg = cell->cdr ();
+    MLCookieLogin*  obj = MObjRef<MLCookieLogin> (mobj, cMLCookieLoginID);
+
+    if (arg)
+       throw (uErrorWrongNumber);
+
+    return newMNode_str (new ustring (obj->sessionval));
+}
+
+/*DOC:
+====session-key-ssl====
+ (session-key-ssl) -> STRING
+
+*/
+//#SFUNC       session-key-ssl ml_cookielogin_session_key_ssl
+MNode*  ml_cookielogin_session_key_ssl (MNode* cell, MlEnv* mlenv, MLFunc* mobj) {
+    MNode*  arg = cell->cdr ();
+    MLCookieLogin*  obj = MObjRef<MLCookieLogin> (mobj, cMLCookieLoginID);
+
+    if (arg)
+       throw (uErrorWrongNumber);
+
+    return newMNode_str (new ustring (obj->sessionval_ssl));
+}
index ef478a1..0b3fe7d 100644 (file)
@@ -14,6 +14,8 @@ class  MLCookieLogin: public MLFunc {
     FileMacro  lock;
     ustring  dbpath;
     ustring  sessionkey;
+    ustring  sessionval;
+    ustring  sessionval_ssl;
 
     MLCookieLogin (MlEnv* _mlenv): MLFunc (cMLCookieLoginID, _mlenv) {};
     virtual  ~MLCookieLogin () {
@@ -31,5 +33,7 @@ MNode*  ml_cookielogin_logout (MNode* cell, MlEnv* mlenv, MLFunc* mobj);
 MNode*  ml_cookielogin_check (MNode* cell, MlEnv* mlenv, MLFunc* mobj);
 MNode*  ml_cookielogin_delete (MNode* cell, MlEnv* mlenv, MLFunc* mobj);
 MNode*  ml_cookielogin_clear (MNode* cell, MlEnv* mlenv, MLFunc* mobj);
+MNode*  ml_cookielogin_session_key (MNode* cell, MlEnv* mlenv, MLFunc* mobj);
+MNode*  ml_cookielogin_session_key_ssl (MNode* cell, MlEnv* mlenv, MLFunc* mobj);
 
 #endif /* ML_COOKIELOGIN_H */