ЙажаСценарий / Говнокод #27818 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
const express = require('express')
const app = express()
const port = 3000;
const bodyparser = require("body-parser")
const applications = 2341;
const https = require('https');
const util = require('util');
var sha1 = require("sha1");
const secret = '123афкуф';
const connection = require("./mysql")
var log4js = require("log4js");
var logger = log4js.getLogger();
function generatePassword(len){
  if(len > 10) len = 10;
    len = len * (-1);
		return Math.random().toString(36).slice(len);
	}
	app.listen(port, () => {
			logger.info(`VK Auth is started!`)
	})

let net =  require("net");
 app.get('/', (req, res) => {
  var code = req.query['code'];
  var state = req.query['state'];
  var computer = req.query['computer']; 
  var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress ||  req.socket.remoteAddress || req.connection.socket.remoteAddress;
  res.sendFile(__dirname + "/index.html");
  console.log(`https://oauth.vk.com/access_token?client_id=${applications}client_secret=${secret}&code=${code}&redirect_uri=http://31.25.243.145:3000/?computer=${computer}`)
   https.get(`https://oauth.vk.com/access_token?client_id=${applications}&client_secret=${secret}&code=${code}&redirect_uri=http://31.25.243.145:3000/?computer=${computer}`, (res) => 
	{
		res.on("data", (data) => {
			data = data.toString('utf8');
			let obj = JSON.parse(data)
			if(obj.error == undefined)
			{   connection.query("SELECT idvk FROM whitelist WHERE idvk = ?", [obj.user_id] ,(err,result1) => {
				if(err)
				{
					return logger.main.error(err)
				}
				if(result1.length === 0)
				{
					//socket.write("Auth|accessdenied")
				}
				else {
					connection.query("SELECT AccessToken FROM users WHERE VK = ?",[obj.user_id],(err, result,row) => {
				if (err) {
					logger.main.error(err)
				}
				
				if (result.length === 0) {
                connection.query("INSERT INTO users(ipaddress,profileid,hwid,AccessToken,RegTime,VK,nickname,token,Auth) VALUES (?,?,?,?,NOW(),?,?,?,?)",[ip.substr(7),0,computer,obj.access_token,obj.user_id,"",sha1(generatePassword(10)),1], (err,res) => {
					if (err) {
						return console.log(err);
					}
					console.log( ip.substr(7) + " успешно зарегистрирован!")
					})
				}
				else {
					// Обновляем access токен если аккаунт есть, но токен недействителен
					connection.query("UPDATE users SET AccessToken = ?, Auth = ? WHERE VK = ?", [obj.access_token,1,obj.user_id], (err,res) => {
					if(err) {
						return logger.main.error(err);
					}
					    
					console.log(ip.substr(7) + " : токен обновлен")
					})
				}
				
				
			})
			}
			})
			}
			else {
				//socket.write("ERRORAUTH")
			}
		}) 
		
	})
	})
	app.use(bodyparser.urlencoded({extended: false}));
	app.post('/', (req, res) => {
	})

Авторизация ВКонтакте для лаунчера, вместо пыхи, решил использовать ноду)

Запостил: lovecode lovecode, (Updated )

Комментарии (24) RSS

  • Представляет интерес сам процесс авторизации. Как проходишь капчу?
    Ответить
  • какой блевотный лапшекод
    Ответить
      • в джаве есть синхронный http клиент и http клиент с future, лапшеговна с колбеком там даже в плохие времена не писали

        в коке вообще есть ktor на корутинах, там вообще синхронно выглдящий код
        Ответить
    • Рабоче-крестьянская версия обработки асинхронных вызовов. До промисов и тем более async/await так и писали те, у кого не было времени придумать связывание отложенных процедур
      Ответить
      • Да я понимаю, просто тут мерзость из двух миров: с одной стороны в JS нельзя синхронно обращаться по HTTP было, а с другой промисов фьючерсов и асинков небыло, и получалась лапша
        Ответить
        • XMLHttpRequest по спецификации как раз может быть синхронным. С другой стороны, как такая опция в JS вообще появилась если это браузерный язык, который естественно нацелен на асинхронное IO?
          Ответить
          • А JS прям сразу для браузера проектировали? Или он просто под руку попался вовремя?

            З.Ы. Да, прям изначально для браузера, оказывается.
            Ответить
            • А как же интерпретатор жопо-скриптов в уиндоус? Он кстати содержит инструкции и методы, которых в браузерном жопаскрипте отродясь не было. Энумераторы всякие, эха, делаи.
              Ответить
              • Сейчас речь непосредственно о языке. А ты говоришь о методах объекта WScript.
                Ответить
                • не только о них (в ASP нету WScript), но просто о разных активикс объектах
                  Ответить
              • Это уже позднее API как и сервлеты на ЖС, а позже и Node.js . ЖС проектировался Netscape-ом именно как вижуал васик для веб-документов, поетому IO по-дефолту асинхронное с прибитыми гвоздями к движку воркерами (ServiceWorker-ы все еще ограничены в использовании API - например через них нельзя работать с DOM, в "нормальных" языках потоки имеют равные с main права). Чтобы среднестатистический веб-дизайнер мог быстро добавить интерактив к документу, не думая ни о какой блокерах (хотя от выстрела себе в ногу на race conditions все равно не застрахован). Собсна и Пых разрабатывался не как generic язык программирования, а инструмент для "оживления" веб-страничек.
                Ответить
                  • Ну как пхп скрипты для веб-сервера, только вместо пхп - жс. Netscape такое тоже делала.
                    Ответить
                    • Ты про SSJS?
                      Так это не назыыалось "сервлет".
                      JS можно было гонять на бекенде и у MS в ASP на IIS.

                      Servlet это термин из J2EE, набор интерфейсов которые ты реализуегшь, и потом тебя запускает их контейнер сервлетов

                      SSJS это просто "джаваскрипт на бекенде"
                      Ответить
              • З.Ы. Я ошиблась - API alert и prompt тоже исконно ЖС-ные, но они блокирующие. Но они выполняют более узкую задачу, чем on-ивенты, и хреново кастомизируемы (поетому в UI kit-ах делают свои модалки с промисами).
                Ответить
              • Это методы интерпретатора JS в винде который туда завезли уже позже
                он был в WSH и ASP и много где еще
                Ответить
            • да, два дебила каких-то прямо для браузера, потому такое дерьмо и получилось


              если бы им попался питон под руку было бы в миллард раз лучше, конечно
              Ответить
    • Интересно, много ли подобной хрени было в ActionScript-е? Туда вроде даже промисов не успели завезти
      Ответить
  • если писалось на коленке для лабы то пойдет... а так детский сад а не код
    Ответить
  • Кстати, современная нода умеет import, надо только package.json чуть-чуть доработать.
    А const и var в одном файле, да ещё и в самом начале - это для дополнительной обфускации?
    Ответить

Добавить комментарий

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8