Esempio n. 1
0
require('http').createServer(function(req, res) {  
    console.log(req.headers);
    if( req.headers.host != undefined && req.headers.host in routeTable) {
	var cookies = new Cookies(req, res);
	var address =  routeTable[req.headers.host].shift();
	if(stickSession) {
	    console.log("using sticky session");
	    if(cookies.get(req.headers.host) != undefined) {
		address = cookies.get(req.headers.host);
	    }
	    else {
		if(sessionExpiration == -1) {
			cookies.set(req.headers.host, address);
		    console.log("no expiration on sticky session");
		}
		else {
		    var expiration = new Date(Date.now() + sessionExpiration * 1000);
		    console.log("sticky session will expire in " + sessionExpiration + " seconds");
		    cookies.set(req.headers.host, address, {expires:expiration});
		}
		
	    }
	}
	console.log(address);
	proxy.web(req, res, {
	    target: address
	}, function (e) {console.log(e);});
	routeTable[req.headers.host].push(address);
	console.log(routeTable);
    }
    else
	//Error handling
	proxy.web(req,res, {target: req.headers.host});
}).listen(8000);
Esempio n. 2
0
exports.responseWithAdminCookie = function (req, res, token, id, code, message){
	var cookies = new Cookies( req, res, {} );
	cookies.set("eksibition-admin-access-token", token, {domain: "elvinjin.com", secure: true});
	cookies.set("eksibition-admin-id", id, {domain: "elvinjin.com", secure: true});
	res.writeHead(code,{'Content-Type': 'application/json'});
	res.end(JSON.stringify(message));
}
Esempio n. 3
0
 userdb.get(userId, function(err, result) {
     if(err) { // Unknown user
         isNewUser = true;
         userId = uuid(); result = { "_id": userId, "name": cookies.get("user-name"), created: new Date() };
         userdb.save(result, function(err, result) { if(err) { return console.error(err); } });
     }
     
     if(!users[userId]) { users[userId] = {}; }
     users[userId].id = userId;
     users[userId].name = result.name;
     users[userId].icon = result.icon || "blue";
     users[userId].rank = result.rank || 0;
     users[userId]["lessons-seen"] = result["lessons-seen"] || {};
     
     cookies.set("user-id", userId, { expires: new Date(2050, 11, 31) });
     cookies.set("user-name", result.name, { expires: new Date(2050, 11, 31) });
     bind.toFile(
         "./templates/index.html",
         {
             "user-id": userId,
             "total-score": TOTAL_SCORE,
             "user-name": result.name,
             "user-icon": result.icon || "blue",
             "logged-in?": !!result.email,
             "is-new-user?": isNewUser,
             "lessons-seen": JSON.stringify(users[userId]["lessons-seen"]),
             "email-for-notifications?": !!result["email-notification"] + ""
         },
         function(data) {
             res.setHeader("Cache-Control", "no-cache, must-revalidate");
             res.setHeader("Pragma", "no-cache");
             res.html(data);
         }
     );
 });
Esempio n. 4
0
local1App.use(function(req, res) {
  var cookies = new Cookies(req, res);
  cookies.set('cookie_no_domain', 1);
  cookies.set('cookie_with_domain', 2, { domain: 'local.dev' });
  res.write('Host: ' + req.headers.host + '\n');
  res.end('\n');
});
Esempio n. 5
0
function sendAuthInfo(req, res, params) {
  let { deviceId, accountId, userAbTests } = params;
  if (deviceId.search(/^[a-zA-Z0-9_-]{1,255}$/) == -1) {
    let exc = new Error("Bad deviceId in login");
    exc.deviceId = deviceId;
    captureRavenException(exc, req);
    throw new Error("Bad deviceId");
  }
  let encodedAbTests = b64EncodeJson(userAbTests);
  let keygrip = dbschema.getKeygrip();
  let cookies = new Cookies(req, res, {keys: keygrip});
  cookies.set("user", deviceId, {signed: true, sameSite: 'lax', maxAge: COOKIE_EXPIRE_TIME});
  if (accountId) {
    cookies.set("accountid", accountId, {signed: true, sameSite: 'lax', maxAge: COOKIE_EXPIRE_TIME});
  }
  cookies.set("abtests", encodedAbTests, {signed: true, sameSite: 'lax', maxAge: COOKIE_EXPIRE_TIME});
  let authHeader = `${deviceId}:${keygrip.sign(deviceId)};abTests=${encodedAbTests}:${keygrip.sign(encodedAbTests)}`;
  let responseJson = {
    ok: "User created",
    sentryPublicDSN: config.sentryPublicDSN,
    abTests: userAbTests,
    authHeader,
    isOwner: params.isOwner
  };
  // FIXME: I think there's a JSON sendResponse equivalent
  simpleResponse(res, JSON.stringify(responseJson), 200);
}
Esempio n. 6
0
	var sessionHandler = function (req, res) {
		if (req.url === '/' || req.url === '/index.html') {
			// sessions are only checked on / requests
			var keys = ['1fXeKFTQ1op6vL-dYD8xaNPrVBNzncW1',
						'epbk_GCo-q1dz1lSXReRKGlEDI-EffAm',
						'Gc9BNRlvDBH8FPFw65r1fRAP3uAv9X8g',
						'AjLSufqBtkZXAOI1bE8eCKnpSObrJ8dS',
						'NZfT3iMGd9SfiEogNhtTtoelfWMuOoeV'];
			var cookies = new Cookies (req, res, keys);

			var sid = cookies.get('__sid', { signed: true });
			if (sid === undefined ) {
				// tampered or no cookie

				// create new session
				var sid = session.create();
				cookies.set('__sid', sid, { signed: true });

			} else {
				// valid cookie
				// but is it a real session cookie?
				var sess = session.lookupBySID(sid);
				if (sess === undefined) {
					// not a real one
					var sid = session.create();
					cookies.set('__sid', sid, { signed: true });
				}
			}
		}

		authHandler(req, res);
	};
module.exports = function (req, res) {
  var config = req.app.get('stormpathConfig');
  var cookies = new Cookies(req, res);

  cookies.set('idSiteSession');
  cookies.set(config.web.accessTokenCookie.name);
  cookies.set(config.web.refreshTokenCookie.name);
};
Esempio n. 8
0
app.get('/users/logout', function(req, res){
    // destroy cookies
    var cookies = new Cookies(req, res);
    cookies.set('user_id', undefined);
    cookies.set('username', undefined);
    // redirect to login page
    res.redirect('/users/login');
});
Esempio n. 9
0
 disconnectDevice(req.deviceId).then((result) => {
   let keygrip = dbschema.getKeygrip();
   let cookies = new Cookies(req, res, {keys: keygrip});
   if (result) {
     cookies.set("accountid");
     cookies.set("accountid.sig");
     simpleResponse(res, "ok", 200);
   }
 }).catch((err) => {
Esempio n. 10
0
     rpw2(queryData.user, queryData.hash, function(resp) {
     if (resp == 'true'){ 
       var cookies = new Cookies( request, response )
       cookies.set( "email", queryData.user, { httpOnly: false } );
       cookies.set( "hash", queryData.hash, { httpOnly: false } );
      serverWorking(response, './public/resetpw2.html')
     }
  else {serverWorking(response, './public/resetpw1.html')}     
})}
Esempio n. 11
0
		users.findOne({username: req.body.username}, {"_id": false, "password": true}, function(err, item) {
			if(!item) {
				users.insert({username: req.body.username, password: pass, isOnline: false, uMessages: [], uniq: randtoken.generate(64)});
				cookies.set('username', req.body.username, {maxAge: 15552000000, path: '/'});
				cookies.set('password', req.body.password, {maxAge: 15552000000, path: '/'});
				cookies.set('remember', 'false', {maxAge: 15552000000, path: '/'});
				res.redirect('/');
			} else {
				res.render('errorPage', {code: "User already exists", message: "Please go back and choose another username", href: 'register'});
			}
		});
Esempio n. 12
0
http.createServer(function (req, res) {
    var cookies=new Cookies(req,res);

    // Very Rough if/else if provides routing
    if(req.url.startsWith('/logout'))
    {
        cookies.set('twauth'); // Clear the cookie
        WriteHtml(res,Logout()); // Render Logout
    } 
    else if(req.url.startsWith('/twauth'))
    {
        TwitterAccTok(req,res); // Process Callback from Twitter OAuth
    }
    else if(req.url.startsWith('/list') && cookies.get('twauth')) // We're logged in and trying to list
    {
           var token=JSON.parse(cookies.get('twauth'));
           
           if(!oauthPrivateKey[token.oauth_token]) {
               cookies.set('twauth'); // Clear the cookie
               WriteHtml(res,ErrorBody('Server-side Cache Does Not Have Related Auth Key, Please Login Again.'));
           } else {
               token.oauth_privatekey = oauthPrivateKey[token.oauth_token];
               var route = req.url.split('/');
           
               var user=token.tw_user;
               if(route.length===3){ user = route[2]; } // check if a screen_name is included in the uri path
               //get friends
               twitter.friends('list',{screen_name:user,skip_status:true,include_user_entities:true,count:200},token.oauth_token,token.oauth_privatekey,function(err,data_friend,response){
               
                   //getfollowers    
                   twitter.followers('list',{screen_name:user,skip_status:true,include_user_entities:true,count:200},token.oauth_token,token.oauth_privatekey,function(err,data_follower,response){
                            WriteHtml(res,ListBody(data_friend,data_follower)); // Render
                       }.bind(res).bind(data_friend));
               }.bind(res).bind(token).bind(user));
           }
    } else if(req.url.startsWith('/login')) {
           TwitterReqTok(req,res); //get request token, chains to call Twitter OAuth
    } else if(req.url==='/') {
        if(cookies.get('twauth'))
        {
            WriteHtml(res,LoggedIn()); // Render Logged In Home
        }
        else
        {
            WriteHtml(res,Body()); // Render Anonymous Home
        }
    } else if(req.url==='/favicon.ico') { // Deal with browsers asking for a favicon
        ServeFile(res,'favicon.png','image/png');
    } else {
        console.log('Redirecting from '+req.url+' to /'); // Bounce everything else back to /
        Redirect(res,'/');
    }
}).listen(port);
Esempio n. 13
0
sso.use(function(req, res){
  var cookies = new Cookies(req, res);
  var name = 'sso';
  cookies.set('token_'+name, name);
  cookies.set('token_'+name+'_domain', name+'_domain', { domain: name+'.com' });
  res.write('<html>');
  res.write('host: ' + req.headers.host + '<br>');
  res.write('token_'+name+': ' + cookies.get('token_'+name) + '<br>');
  res.write('token_'+name+'_domain: ' + cookies.get('token_'+name+'_domain') + '<br>');
  res.write('</html>');
  res.end('\n');
});
Esempio n. 14
0
var routeHandler = function(name, req, res){
  var cookies = new Cookies(req, res);
  cookies.set('token_'+name, name);
  cookies.set('token_'+name+'_domain', name+'_domain', { domain: name+'.com' });
  res.write('<html>');
  res.write('iframe: <iframe id="ssoIframe" src="http://sso.com:1337" width="300" height="100"></iframe><br>');
  res.write('user action: <a href=\'javascript:sso=window.open("http://sso.com:1337", "sso", "width=300, height=100, menubar=0, status=0, titlebar=0, toolbar=0, location=0");setTimeout(function(){sso.close();document.getElementById("ssoIframe").src="http://sso.com:1337";},500)\'>login</a><br>');
  res.write('host: ' + req.headers.host + '<br>');
  res.write('token_'+name+': ' + cookies.get('token_'+name) + '<br>');
  res.write('token_'+name+'_domain: ' + cookies.get('token_'+name+'_domain') + '<br>');
  res.write('</html>');
  res.end('\n');
};
 JWT.verify(token, configTocken['key'], function (err, decoded) {
     if (err) res.status(403).send({
         success: false,
         message: "Failed to authenticate user"
     });
     else{
         req.decoded = decoded;
         cookies.set('userEmail', decoded.email, { httpOnly: false });
         cookies.set('userRole', decoded.role, { httpOnly: false });
         cookies.set('referer', configHost['autHost']);
         next();
     }
 });
Esempio n. 16
0
app.use(function(req, res, next) {
  let authHeader = req.headers['x-screenshots-auth'];
  let authInfo = {};
  let cookies = new Cookies(req, res, {keys: dbschema.getKeygrip()});
  if (authHeader) {
    authInfo = decodeAuthHeader(authHeader);
  } else {
    authInfo.deviceId = cookies.get("user", {signed: true});
    authInfo.accountId = cookies.get("accountid", {signed: true});
    let encodedAbTests = cookies.get("abtests", {signed: true});
    let abTests;
    if (encodedAbTests) {
      abTests = b64DecodeJson(encodedAbTests);
    }
    if (!authInfo.deviceId) {
      // Authenticated users get A/B tests when they register/login, but unauthenticated
      // users have to get it lazily
      let origAbTests = Object.assign({}, abTests);
      abTests = updateAbTests(abTests || {}, null, true);
      if (Object.keys(abTests).length) {
        // Only send if there's some test
        let newEncodedAbTests = b64EncodeJson(abTests);
        if (encodedAbTests != newEncodedAbTests) {
          cookies.set("abtests", newEncodedAbTests, {signed: true, sameSite: 'lax', maxAge: COOKIE_EXPIRE_TIME});
        }
      } else if (Object.keys(origAbTests).length) {
        // All the A/B tests were removed (probably because the tests have been
        // deprecated), but the user has an old A/B test. Therefore we should
        // delete the cookie
        cookies.set("abtests", "", {signed: true, sameSite: 'lax', maxAge: 0});
      }
    }
    authInfo.abTests = abTests;
  }
  if (authInfo.deviceId) {
    req.deviceId = authInfo.deviceId;
    req.userAnalytics = ua(config.gaId, req.deviceId, {strictCidFormat: false});
    if (config.debugGoogleAnalytics) {
      req.userAnalytics = req.userAnalytics.debug();
    }
  }
  if (authInfo.accountId) {
    req.accountId = authInfo.accountId;
  }
  req.cookies = cookies;
  req.abTests = authInfo.abTests || {};
  const host = req.headers.host === config.contentOrigin ? config.contentOrigin : config.siteOrigin;
  req.backend = `${req.protocol}://${host}`;
  req.config = config;
  next();
});
Esempio n. 17
0
    i18n.persistCookie = function(req, res, locale) {
        var cookies = new Cookies(req, res);
        var expirationDate = new Date();
        expirationDate.setFullYear(expirationDate.getFullYear() + 1);

        cookies.set(i18n.options.cookieName, locale, { expires: expirationDate, domain: i18n.options.cookieDomain, httpOnly : false });
    };
Esempio n. 18
0
 userdb.save(data, function(err, result) {
     console.log("saving new user:"******"user-id", result._id);
     res.redirect("/");
 });
Esempio n. 19
0
 saveSession (tournament) {
   if (tournament) {
     Cookies.set('ARGOTabs_lastURL', tournament.source.url())
   } else {
     Cookies.expire('ARGOTabs_lastURL')
   }
 }
Esempio n. 20
0
  this._http_server = http.createServer(function(request, response) {
    // only set cookie if not already set
    if (!request.headers.cookie) {
      var cookies = new Cookies(request, response)
        , key = self._session_store.create();

      cookies.set("_id", key, {httpOnly: true});

    } else {
      var key = request.headers.cookie
      if (!self._session_store.get(key)) self._session_store.create(key);
    }

    // load session
    var client_session = self._session_store.get(key);

    var request_body = "";
    request.on("data", function(chunk) { request_body += chunk });

    // at end of request, find a handler request and hand off responsibility
    request.on("end", function() {
      for (var i = 0, l = self._handlers.length; i < l; i++) {
        var handler = self._handlers[i];
        if (handler.handles(request)) {
          request.body = request_body;
          handler.handle(request, response, client_session);
          return;
        }
      }
    });
  });
Esempio n. 21
0
    exports.plugin = function (request, response, options) {
        var sessionName    = options.session || 'bricks-session';
        var sessionStore   = options.sessionStore || store;

        var jar = new cookies(request, response, options.keys);
        var sessionId = jar.get(sessionName);

        if (sessionId === undefined) {
            sessionId = uuid();

            jar.set(sessionName, sessionId, options.cookie);
        }

        response.session = sessionStore.get(sessionId) || { };
        request.session  = response.session;
        
        response._sessionData = {
            sessionStore:   sessionStore,
            sessionName:    sessionName,
            sessionId:      sessionId
        };

        response.on('final.complete', function (event, data) {
            this._sessionData.sessionStore.set(this._sessionData.sessionId, this.session);
        });

        response.next();
    };
Esempio n. 22
0
 function(participantHash, callback) {
   var targetDate = new Date();
   targetDate.setDate(targetDate.getDate() + 30);
   cookies.set(
     'freeab_participantHash',
     participantHash,
     {
       'expires': targetDate,
       'domain': cookieDomain,
       'httpOnly': false
     }
   );
   request.get(
     {
       'url': 'http://localhost:' + port + '/api/participants/' +  participantHash,
       'json': false
     },
     function(err, getRes, body) {
       if (err) {
         util.error(err);
         return callback(err);
       }
       var template = clientJsTemplate;
       var bodyObject = JSON.parse(body);
       template = template.replace('<PLACEHOLDER/>',  JSON.stringify(bodyObject, null, 2), 'gi');
       res.end(template);
       return callback(null);
     }
   );
 }
Esempio n. 23
0
    i18n.persistCookie = function(req, res, locale) {
        var cookies = new Cookies(req, res);
        var expirationDate = new Date();
        expirationDate.setFullYear(expirationDate.getFullYear() + 1);

        cookies.set('i18next', locale, { expires: expirationDate, httpOnly : false });
    };
Esempio n. 24
0
fu.get("/join", function (req, res) {
  var nick = qs.parse(url.parse(req.url).query).nick;
  var room = qs.parse(url.parse(req.url).query).room;
  if (nick == null || nick.length == 0) {
    res.simpleJSON(400, {error: "Bad nick."});
    return;
  }
  if (nick.length > 15)
  	nick = nick.substring(0, 15);
  
  var session = createSession(nick, room);
  if (session == null) {
    res.simpleJSON(400, {error: "Nick in use"});
    return;
  }
  
  var cookies = new Cookies(req, res);
  cookies.set('sessionid', session.id);

  sys.puts("connection: " + nick + "@" + res.connection.remoteAddress + " in room " + room);

  channel.appendMessage(session.nick, "join", room, room);
  res.simpleJSON(200, { id: session.id
                      , nick: session.nick
                      , url: room
                      , rss: mem.rss
                      , starttime: starttime
                      , room: room
                      });
});
Esempio n. 25
0
			users.update({_id:user._id}, {$set:newUserInfo}, function(err, result) {
				if(err || !result) {
					//console.log(err);
					if(!result && !err) {
						errors.push("Update failed.");
					} else if(err.code == 11001) {
						errors.push("Email address already in use.");
					} else {
						errors.push("Mystery server error No.2.");
					}
					user.errors = errors;
				} else {
					if(newUserInfo.loginSecret) {
						var cookies = new Cookies(req, res);
						cookies.set("loginCheck", newUserInfo.loginSecret);
					}
					statusMsgs.unshift("Profile updated.");
					user.statusMsgs = statusMsgs;
					if(newUserInfo.evSecret) {
						var context = {
							to: newUserInfo.email,
							subject: "Email validation for CrossFill",
							server: req.headers.host,
							email: newUserInfo.email,
							evSecret: newUserInfo.evSecret
						};
						mailer.sendEmail("validateEmail", context);
					}
				}
				callback(null, user);
			});
Esempio n. 26
0
 /**
  * Write the scores back to the cookie.
  * @memberof module:zotohlab/asx/scores~HighScores
  * @method write
  */
 write() {
   const rc= R.map((z) => {
     return z.name + ':' + n.value;
   },
   this.scores);
   Cookies.set(this.KEY, rc.join('|'), this.duration);
 }
Esempio n. 27
0
            collection.find({ u:uname }).toArray(function(err, results) {
                if(results.length > 0) {
                    var upw = results[0].p;
                    var salt = upw.substring(11, 15);
                    var hexPw = md5(salt + pword + pwSalt);

                    if(hexPw == (upw.substring(0, 11) + upw.substring(15))) {
                        var sessId = md5(uuid.v1());
                        var uid = results[0]._id.toString();
                        
                        users[sessId] = { uid:uid, token:sessId, sessId: sessId, name:results[0].u, email:results[0].e, btuid:results[0].btuid, btpid:results[0].btpid, created:results[0].created };
                        user = users[sessId];
                        
                        //whether user has seen tour or not
                        if(results[0].tr_r) user.tr_r = 1;
                        if(results[0].tr_b) user.tr_b = 1;
                        if(results[0].tr_p) user.tr_p = 1;
                        
                        cookies.set(sessionIdName, sessId);
                        
                        //persist session to DB
                        db.mongo.collection('session', function(error, collection) {
                            collection.update({ uid:uid }, { uid:uid, token:sessId, sessId: sessId, date:(new Date).getTime() }, { upsert:true });
                        });
                    }
                    else
                        user = { error:'the username or password is incorrect' };
                }
                else
                    user = { error:'the username or password is incorrect' };
                    
                callback(user);
            });
Esempio n. 28
0
var app = http.createServer((req, res) => {
  var cookies = new Cookies(req, res);
  var token = cookies.get('token') || uuid();
  cookies.set('token', token, { maxAge: 30*24*60*60 });

  switch (req.url) {
    case '/js/main.js':
      return write(mainJS, 'text/javascript', res);
    case '/favicon.ico':
      return write('haha', 'text/plain', res);
    case '/styles.css':
      return write(styles, 'text/css', res);
    default:
      renderApp(req, token, (error, html, token) => {
        if (!error) {
          write(html, 'text/html', res);
        }
        else if (error.redirect) {
          res.writeHead(303, { 'Location': error.redirect.to });
          res.end();
        }
        else if (error.notFound) {
          res.writeHead(404, { 'Content-Type': 'text/html' });
          res.write(html);
          res.end();
        }
      });
  }
});
Esempio n. 29
0
http.createServer(function (req, res) {
  // set a complex cookie
  var cookies = new Cookies(req, res)
  cookies.set("s", JSON.stringify({"foo":"bar"}))
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
Esempio n. 30
0
    Trainee.prototype.persistCookie = function(req, res, locale) {
        var cookies = new Cookies(req, res),
            expirationDate = new Date();

        expirationDate.setFullYear(expirationDate.getFullYear() + 1);

        cookies.set(this.configuration.storage.key, locale, { expires: expirationDate });
    };