コード例 #1
0
ファイル: commonStores.js プロジェクト: zordius/fluxex
        handle_UPDATE_URL: function (payload) {
            var isPayloadString = ('string' === typeof payload);
            var url = isPayloadString ? payload : payload.url;
            var host = isPayloadString ? undefined : payload.host;
            var ohost = this._get('url').host;
            var M = url.match(/^(?:(https?:)\/\/(([^:\/]+)(:([^\/]+))?))?([^#?]*)(\\?[^#]*)?(#.*)?$/);
            var N = host ? host.match(/^([^:]+)(:(.+))?$/) : [];
            var search = M[7] || '';
            var hash = M[8] || '';
            var URL = {
                protocol: fluxex.protocol || M[1] || '',
                hostname: fluxex.hostname || M[3] || N[1] || '',
                port: fluxex.port || M[5] || N[3] || '',
                pathname: M[6] || '',
                search: search,
                hash: hash,
                query: payload.query || querystring.decode(search.substring(1)) || {}
            };

            this._set('method', payload.method || 'GET');

            URL.host = URL.hostname + ((URL.port !== '') ? (':' + URL.port) : '');
            URL.href = URL.protocol + (URL.protocol ? '//' : '') + URL.host + URL.pathname + URL.search + URL.hash;

            if (ohost && (ohost !== URL.host)) {
                throw new Error('Try to set URL to different host: ' + URL.host + ' , original host is: ' + ohost);
            }

            this._set('url', URL);
        },
コード例 #2
0
ファイル: test.js プロジェクト: andreipopovici/node-sanction
            c.authUri(opts, function(e, uri) {
                assert.equal(e, null);

                var q = querystring.decode(url.parse(uri).query);
                assert.equal(q.state, opts.state);
                assert.equal(q.scope, opts.scope);
            });
コード例 #3
0
ファイル: index.js プロジェクト: hendrikcech/tent-login
	function checkLocation() {
		if(!w.location) {
			clearInterval(interval)
			return cb(new Error('oauth dialog closed'))
		}

		if(w.location.hostname === window.location.hostname) {
			clearInterval(interval)

			var search = w.location.search.substr(1) // remove ? on beginning
			var query = qs.decode(search)

			var err = []

			if(query.state !== state) {
				err.push('mismatching state ('+state+' != '+query.state+')')
			}
			if(query.error) {
				err.push(query.error)
			}
			if(err.length > 0) {
				return cb(new Error(err.join()))
			}

			w.close()

			auth.tradeCode(res.meta, res.auth, query.code, onToken)
		}
	}
コード例 #4
0
ファイル: plugin.insight.js プロジェクト: BTCtools/copay
 storage.getItem(namespace, function(error, dataReturned) {
   var receivedArgs = requestMock.post.firstCall.args[0].body;
   var url = requestMock.post.firstCall.args[0].url;
   var args = querystring.decode(receivedArgs);
   url.indexOf('change_passphrase').should.not.be.equal(-1);
   requestMock.post.firstCall.args[0].headers.Authorization.should.be.equal(new Buffer(email + ':' + oldSecret).toString('base64'));
   args.newPassphrase.should.be.equal(newSecret);
   done();
 });
コード例 #5
0
ファイル: auth.js プロジェクト: siddharthjn/node-linkedin
 function(err, data) {
     if (err) {
         return cb(err);
     }
     else {
         data = qs.decode(data);
         return cb(null, data);
     }
 }
コード例 #6
0
ファイル: index.js プロジェクト: iefserge/megafunnel-view
 route.get(/^\/state/, function (req, res, next) {
   var opts = qs.decode(url.parse(req.url).query)
   var d = {}
   for(var name in tbr.queries) {
     var q = tbr.queries[name]
     if('function' === typeof q.dump)
       d[name] = filter(q, opts)
   }
   res.end(JSON.stringify(d, null, 2) + '\n')
 }),
コード例 #7
0
ファイル: index.js プロジェクト: iefserge/megafunnel-view
    route.get(/^\/state\/([\w-_.]+)/, function (req, res, next) {
      var name = req.params[0]
      var query = tbr.queries[name]
      var opts = qs.decode(url.parse(req.url).query)

      if(!query)
        return next(new Error('unknown query:'+name))
      var data = filter(query, opts)

      res.end(JSON.stringify(data, null, 2) + '\n')
    }),
コード例 #8
0
ファイル: alipay.js プロジェクト: foshantiger/alipay_nodejs
 req.on('end', function() {
     if (buf) {
         try {
             let ob = qs.decode(buf);
             req.body = ob;
         } catch (e) {
             console.log('taobao body parser fail!');
             console.log(e);
         }
     }
     next();
 });
コード例 #9
0
ファイル: auth.js プロジェクト: divshot/divshot-api
var cookie = function() {
  var cookie = querystring.decode(document.cookie, '; ');
  var client = this;
  
  if (cookie['__dsat']) {
    var token = atob(cookie['__dsat']);
    client.setToken(token);
    return true;
  } else {
    return false;
  }
}
コード例 #10
0
ファイル: facebook.js プロジェクト: ethanl/connect-facebook
 request(options, function(err, res, body) {
     if (cb) {
         try {
             body = JSON.parse(body);
         } catch (e) {
             // facebook returns a query string as the response body for certain requests
             if (body.indexOf('=') !== -1) {
                 body = querystring.decode(body);
             }
         }
         cb(body);
     }
 });
コード例 #11
0
  queryShouldChangeHistory(newQuery, route) {
    const search = location.search && location.search.substr(1);
    const currentQuery = search ? queryString.decode(search) : {};
    const diffA = Object.entries(newQuery).reduce((acc, [key, value]) => ([
      ...acc,
      ...(currentQuery[key] !== value) ? [key] : []
    ]), []);

    const diffB = Object.entries(currentQuery).reduce((acc, [key, value]) => ([
      ...acc,
      ...(newQuery[key] !== value) ? [key] : []
    ]), []);
    return [...new Set([...diffA, ...diffB])]
      .map((parameter) => this.getReduxObject(parameter, route).addHistory)
      .includes(true);
  }
コード例 #12
0
ファイル: index.js プロジェクト: kamikat/Cowherd
 authenticate(req, res, ctx, function (err) {
   if (err) {
     return next(err);
   }
   debug("authenticated.");
   ctx.url = req.query.url;
   var parts = url.parse(ctx.url);
   var query = qs.decode(parts.query);
   query.e = findE(ctx);
   parts.search = "?" + qs.encode(query);
   delete u.search;
   var urlString = u.format();
   debug("download " + req.path + " => " + urlString);
   return res.status(200).send([
     config.accessKey, utils.encodeSign(urlString, config.secretKey)
   ].join(':'));
 });
コード例 #13
0
ファイル: test.js プロジェクト: andreipopovici/node-sanction
            c.authUri({}, function(e, uri) {
                assert.equal(e, null);

                var o = url.parse(uri);
                var q = querystring.decode(o.query);
                assert.equal(q.client_id, CLIENT_OPTS.clientId);
                assert.equal(q.redirect_uri, CLIENT_OPTS.redirectUri);
                assert.equal(q.response_type, 'code');

                var p = url.parse(CLIENT_OPTS.redirectUri);
                assert.equal(o.protocol, p.protocol);
                assert.equal(o.hostname, p.hostname);

                assert.equal(q.state, undefined);
                assert.equal(q.scope, undefined);

                done();
            });
コード例 #14
0
	req.on('end', function(){
		

		var message = querystring.decode(content);
		var push = JSON.parse(message.payload);

		var repository = push.repository.name + "-" + push.ref.replace('refs/heads/', '');
		var url = "http://mysterygame-jenkins.cloudapp.net:8080" + "/job/" + repository + "/build";

		if(process.env.API_TOKEN) url += ("?token=" + process.env.API_TOKEN);

		if(process.env.API_TOKEN_USER && process.env.API_TOKEN) {
			var auth = process.env.API_TOKEN_USER + ":" + process.env.API_TOKEN;
			url = url.replace("http://", "http://" + auth + "@");
		}

		request.get(url).pipe(res);
	});
コード例 #15
0
ファイル: routes.js プロジェクト: xcambar/dillinger
 request.post(opts, function(err, resp, body){
   req.session.github = req.session.github || {};
   if(err) {
     res.send(err.message);
   } else {
     req.session.github.access_token = qs.decode(body).access_token;
     githubProxy.getCurrentUserInfo(req.session.github.access_token, function (err, data) {
       console.log('HOP', req.session);
       if (err) {
         res.send(err);
       } else {
         var d = JSON.parse(data);
         req.session.github.username = d.login;
         res.redirect('/');
       }
     });
   }
 });
コード例 #16
0
	req.on('end', function(){
		if(!process.env.JENKINS_URL)
			throw new Error('we require the JENKINS_URL environment variable to be set');

		var message = querystring.decode(content);
		var push = JSON.parse(message.payload);

		var repository = push.repository.owner.name + "-" + push.repository.name + "-" + push.ref.replace('refs/heads/', '');
		var url = process.env.JENKINS_URL + "/job/" + repository + "/build";

		if(process.env.API_TOKEN) url += ("?token=" + process.env.API_TOKEN);

		if(process.env.API_TOKEN_USER && process.env.API_TOKEN) {
			var auth = process.env.API_TOKEN_USER + ":" + process.env.API_TOKEN;
			url = url.replace("http://", "http://" + auth + "@");
		}

		request.get(url).pipe(res);
	});
コード例 #17
0
ファイル: index.js プロジェクト: iefserge/megafunnel-view
    route.get(/^\/view\/([\w-_.]+)/, function (req, res, next) {
      var opts = qs.decode(url.parse(req.url).query)
      opts.name = req.params[0]

      if (!views.hasOwnProperty(opts.name)) {
        return next(new Error('view does not exist'));
      }

      try {
        pull(
          tbr.query(opts),
          pull.map(function (d) {
            return {key: d.key[2], value: d.value}
          }),
          opts.lines ? stringify.lines() : stringify(),
          toPull.sink(res)
        )
      } catch (err) {
        return next(err)
      }
    }),
コード例 #18
0
	GET:  function(req,res,opts) { //return all or part of a collection

            function forwardOrchResults(result) {
                //given result obj from Orchestrate db, strip away metadata
                // and forward the actual model data to client:
                var values = result.body.results.map(getValue);
                console.log("Returning array: "+JSON.stringify(values));
                res.end(JSON.stringify(values)); //return JSON array to client
            }

            function handleFailure(err) {
                console.log("Error: "+err);
                res.end(err);
            }

            console.log("Processing GET request...");
            console.log("Options:"+JSON.stringify(opts));
            // parsedURL may include query like this: ?keys=1,2,3
            var queryStr = opts.parsedUrl.query;

            if (queryStr) { // expect set of keys, search db for only those
                var queryObj = querystring.decode(opts.parsedUrl.query);
                var keyStr = queryObj.keys;
                if (!keyStr) throw "query includes no keys";
                // turn '1,2,3' into 'key:(1 OR 2 OR 3)':
                var searchStr = "key:("
                                +keyStr.split(',').join(' OR ')
                                +")";
                console.log("Searching db for "+searchStr);

                // return subset of db:
                db.search(dbCollectionName, searchStr)
                .then(forwardOrchResults)
                .fail(handleFailure)
            } else { //no query; return entire db
                db.list(dbCollectionName)
                .then(forwardOrchResults)
                .fail(handleFailure) 
            }
    },
コード例 #19
0
ファイル: commonStores.js プロジェクト: caa1211/fluxex
        handle_UPDATE_URL: function (payload) {
            var isPayloadString = ('string' === typeof payload),
                url = isPayloadString ? payload : payload.url,
                host = isPayloadString ? undefined : payload.host,
                M = url.match(/^(?:(https?:)\/\/(([^:\/]+)(:([^\/]+))?))?([^#?]*)(\\?[^#]*)?(#.*)?$/),
                N = host ? host.match(/^([^:]+)(:(.+))?$/) : [],
                search = M[7] || '',
                hash = M[8] || '',
                URL = {
                    href: M[6] + search + hash,
                    protocol: fluxex.protocol || M[1] || '',
                    hostname: fluxex.hostname || M[3] || N[1] || '',
                    port: fluxex.port || M[5] || N[3] || '',
                    pathname: M[6] || '',
                    search: search,
                    hash: hash,
                    query: querystring.decode(search.substring(1)) || {}
                };

            URL.host = URL.hostname + ((URL.port !== '') ? (':' + URL.port) : '');

            this._set('url', URL);
        },
コード例 #20
0
ファイル: query.js プロジェクト: gre/ld29
var url = require("url");
var querystring = require("querystring");
var query = querystring.decode(url.parse(location.href).query);
module.exports = query;
コード例 #21
0
ファイル: dawg.js プロジェクト: kewlcherry/hallway
 var linesByToken = _.groupBy(messages, function (msg) {
   return querystring.decode(msg).access_token;
 });
コード例 #22
0
function url_params(url) {
    var query = url_utils.parse(url).query;
    return qs.decode(query);
}
コード例 #23
0
ファイル: qq.js プロジェクト: zhangda89/login_mock
function *doLogin(username,password){
  var email = username.split('@');
  username = email[0];

  var _user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.76 Safari/537.36';
  var _pt_login_sig = '';
  var _verifycode = '';
  var _pt_verifysession_v1 = '';
  var _p = '';
  var _salt = '';
  var _status = 0;
  var redirect_url = '';
  var image_url = '';
  var __cookies = [];

  var _first = function (obj) {
    var k = _.first(_.keys(obj));
    return [k, obj[k]];
  };

  var ptui_checkVC = function(a, d, b, f, c){
    _salt = b;

    switch(a){
      case "1":
        _status  = a;
        //需要做验证码处理
        image_url = 'https://ssl.captcha.qq.com/getimage?uin='+username+'&aid=522005705&cap_cd='+d+'&'+Math.random();
        break;
      default:
        _pt_verifysession_v1 = f;
        _verifycode = d;
        try{
          _p = Encryption.getEncryption(password, _salt, _verifycode, false);
        }catch(err){
          debug('ptui_checkVC Error:',err.stack);
        }
        break;
    }
  };

  var ptuiCB = function(l, o, b, k, d, a){
    redirect_url = b;
  };

  var _ckstr = function () {
    return _.uniq(__cookies)
      .map(function (c) {
        return _first(cookie.parse(c));
      })
      .map(function (c) {
        try{
          var encode = function(val){
            return val;
          }
          return cookie.serialize(c[0], c[1],{'encode':encode});
        }catch(error){
          debug('_ckstr Error:',error.stack);
        }
        
      }).join('; ');
  };
  var _addck = function (response) {
    __cookies = __cookies.concat(response.headers['set-cookie'] || []);
  };

  var _set_login_sig = function(){
    try{
      _.forEach(__cookies,function(i){
        var i = cookie.parse(i);
        if(i['pt_login_sig'] !== undefined){
          _pt_login_sig = i['pt_login_sig'];
        }
      });
    }catch(err){
      debug('_set_login_sig Error:',err.stack);
    }
  };

  var _set_verifysession = function(){
    try{
      _.forEach(__cookies,function(i){
        var i = cookie.parse(i);
        if(i['verifysession'] !== undefined){
          _pt_verifysession_v1 = i['verifysession'];
        }
      });
    }catch(err){
      debug('_set_verifysession Error:',err.stack);
    }
  };

  
  /**
   * 第一次请求登录页面
   */
  var ptlogin_url = 'https://xui.ptlogin2.qq.com/cgi-bin/xlogin?appid=522005705&daid=4&s_url=https://mail.qq.com/cgi-bin/login?vt=passport%26vm=wpt%26ft=loginpage%26target=&style=25&low_login=1&proxy_url=https://mail.qq.com/proxy.html&need_qr=0&hide_border=1&border_radius=0&self_regurl=http://zc.qq.com/chs/index.html?type=1&app_id=11005?t=regist&';
  try{
    var res = yield request(ptlogin_url,{
      method:'GET',
      headers:{
        'Host':'xui.ptlogin2.qq.com',
        'User-Agent':_user_agent
      }
    });
  }catch(err){
    debug('第一次请求登录页面 Error:',err.stack);
    return false;
  }
  _addck(res[1]);
  _set_login_sig();


  /**
   * QQ Check操作
   */
  var check_data = {
    'regmaster':'',
    'pt_tea':1,
    'pt_vcode':0,
    'uin':username,
    'appid':'522005705',
    'js_ver':'10123',
    'js_type':1,
    'login_sig':_pt_login_sig,
    'u1':'https://mail.qq.com/cgi-bin/login?vt=passport&vm=wpt&ft=loginpage&target=',
    'r':Math.random()
  };
  var check_url = 'https://ssl.ptlogin2.qq.com/check';
  check_url = [check_url, queryString.encode(check_data)].join('?');
  var res = yield request(check_url,{
    method:'GET',
    headers:{
      'Referer':ptlogin_url,
      'Host':'ssl.ptlogin2.qq.com',
      'Cookie':_ckstr(),
      'User-Agent':_user_agent
    },
    timeout:10000
  });
  _addck(res[1]);

  try{
    //对check结果做判断 - ptui_checkVC()
    eval(res[0].toString());

    if(image_url && _status){
      try{
        var image_res = yield request(image_url,{
          method:'GET',
          headers:{
            'Host':'ssl.captcha.qq.com',
            'User-Agent':_user_agent
          }
        });
      }catch(err){
        debug('对check结果做判断 Error:',err.stack);
      }
      _addck(image_res[1]);

      try{
        var json = {'code':''};
        var string = JSON.stringify(json);
        yield writeFile('./captcha.json',string);
        var captcha_path = './'+username+'_captcha_code.jpg';
        var res = yield writeFile(captcha_path,image_res[0]);  
      }catch(err){
        debug(err.stack);
      }
      debug('验证码地址:',captcha_path);
      debug('请将图片中的验证码输入到此文件:captcha_code.json');
      
      //获取验证码的cookie里面
      _set_verifysession();
      ///====================获取验证码
      _verifycode = yield set_captcha_code();
    }

    _p = Encryption.getEncryption(password,_salt,_verifycode,false);

  }catch(err){
    debug('ptui_checkVC Error:',err.stack);
    return false;
  }

  /**
   * 登录提交 
   */
  var login_url = 'https://ssl.ptlogin2.qq.com/login';
  var u1_url = 'http://mail.qq.com/cgi-bin/login';
  var u1_data = {
    vt:'passport',
    vm:'wpt',
    ft:'ptlogin',
    errtemplate:'dm_loginpage',
    aliastype:'other',
    dmtype:'domain',
    loginEntry:1,
    target:'',
    account:username
  }
  u1_url = [u1_url, queryString.encode(u1_data)].join('?');
  var login_data = {
    'u':username,
    'verifycode':_verifycode,
    'pt_vcode_v1':0,
    'pt_verifysession_v1':_pt_verifysession_v1,
    'p':_p,
    'pt_randsalt':0,
    'u1':u1_url,
    'ptredirect':1,
    'h':1,
    't':1,
    'g':1,
    'from_ui':1,
    'ptlang':'2052',
    'action':'2-3-1432202218068',
    'js_ver':10123,
    'js_type':1,
    'login_sig':_pt_login_sig,
    'pt_uistyle':25,
    'aid':'522005705',
    'daid':4
  };

  login_url = [login_url,queryString.encode(login_data)].join('?');
  debug('login_url:',login_url);

  try{
    var res = yield request(login_url,{
      method:'GET',
      headers:{
        'Cookie':_ckstr(),
        'Referer':ptlogin_url,
        'Host':'ssl.ptlogin2.qq.com',
        'User-Agent':_user_agent
      }
    });
    _addck(res[1]);
    debug('login res:',res[0].toString());
    //执行返回的结果 获取成功登录的跳转地址
    eval(res[0].toString());
  }catch(err){
    debug('登录提交 Error:',err.stack);
    return false;
  }

  /**
   * 验证check_sig并获取跳转地址
   */
  if(!redirect_url){
    throw new Error('登录失败');
  }

  try{
    var res = yield request(redirect_url,{
      method:'GET',
      headers:{
        'Cookie':_ckstr(),
        'Referer':ptlogin_url,
        'Host':'ssl.ptlogin2.qq.com',
        'User-Agent':_user_agent
      }
    });

    debug(res);
    _addck(res[1]);
    var location_url = '';

    if(res['1']['status'] == 302){
      location_url = res[1]['headers']['location'];
    }
  }catch(err){
    debug('验证check_sig Error:',err.stack);
    return false;
  }

  
  //做302 跳转请求 - 
  if(location_url){
    try{
      var redirect_res = yield request(location_url,{
        method:"GET",
        headers:{
          'Cookie':_ckstr(),
          'Referer':redirect_url,
          'Host':'mail.qq.com',
          'User-Agent':_user_agent
        }
      });
      _addck(redirect_res[1]);

      var javascript = redirect_res[0].toString().replace(/ +/g, ' ').replace(/\r\n/g,' ').replace(/\n/g,' ').match(/<script>(.+?)<\/script>/g);
      var urlHead_res = javascript[1].replace(/<script>(.+?)<\/script>/g,'$1');
      var targetUrl = '';
      var urlHead_arr = urlHead_res.split('; ');
      var urlHead = urlHead_arr[0].match(/urlHead="(.*?)"/g,'$1');
      urlHead = urlHead[0].replace(/urlHead="(.*?)"/g,'$1');
      eval(urlHead_arr[4]);
      var r = javascript[1].match(/targetUrl\+="(.*?)";/g,'$1');
      r = r[0].replace(/targetUrl\+="(.*?)";/g,'$1');
      targetUrl = targetUrl+r;
      var tmp_targetUrl = targetUrl.split('?');
      if(tmp_targetUrl[1]){
        var tmp_targetUrl_arr = queryString.decode(tmp_targetUrl[1]);
        if(tmp_targetUrl_arr['sid']){
          var tmp_arr = [];
          tmp_arr.push('Location_sid='+tmp_targetUrl_arr['sid']);
          __cookies = __cookies.concat(tmp_arr);
        }
      }
    }catch(err){
      debug(err.stack);
      return false;
    }

    if(targetUrl){
      try{
        var target_res = yield request(targetUrl,{
          method:'GET',
          headers:{
            'Cookie':_ckstr(),
            'Host':'mail.qq.com',
            'User-Agent':_user_agent
          }
        });
        _addck(target_res[1]);

      }catch(err){
        debug(err.stack);
        return false;
      }
    }else{
      debug(new Error('目标地址不存在'));
      return false;
    }
    
  }else{
    debug(new Error('302跳转地址不存在'));
    return false;
  }
  
  return _ckstr();
}
コード例 #24
0
RedisStore.prototype.key = function (key) {
  if (typeof key === 'object') key = qs.decode(key);
  return this.ns ? this.ns + this.separator + key : key;
};