Advertisement
Guest User

Untitled

a guest
Jul 15th, 2018
258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.08 KB | None | 0 0
  1. const fs = require('fs');
  2. const express = require('express');
  3. const app = express();
  4. const config = require('./lib/config.json')
  5. const ExpressData = require('./express-data')
  6. const user = require('./lib/profiles')
  7. const parseLvl = require('./lib/parseLvl')
  8. const xml2json = require('xml2json-light');
  9. var path = require("path");
  10.  
  11.  
  12. module.exports = function (mongodb) {
  13. app.use('/', express.static(__dirname + '/public'));
  14.  
  15. app.get('/agl/:type', function(req, res) {
  16. let ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
  17. let props = new ExpressData(req).props;
  18. switch(req.params.type)
  19. {
  20. case "register":
  21. var ipMy = parseInt(config.ips[ip])
  22. if(ipMy < Date.now()){
  23. user.findOne({username: props.username.toLowerCase(), email: props.email.toLowerCase()}, function(err, unCheck){
  24. if(unCheck != null)
  25. res.json({
  26. status: false,
  27. code: 3,
  28. message: '@username_exist'
  29. })
  30. else{
  31. if(props.code == config.codes[props.email.toLowerCase()]){
  32. let profileadd = new user({
  33. email: props.email.toLowerCase(),
  34. username: props.username.toLowerCase(),
  35. password: props.password,
  36. nickname: props.nickname,
  37. items: [config.defaultItems]
  38. })
  39. profileadd.save(function(err) {
  40. if(err)
  41. res.json({
  42. status: false,
  43. code: 4,
  44. message: '@register_error'
  45. })
  46. else{
  47. config.ips[ip] = Date.now() + 3600000
  48. var uid = require('rand-token').uid;
  49. var token = uid(16);
  50. config.tokens[token] = props.nickname.toLowerCase()
  51. res.json({
  52. status: true,
  53. authKey: token,
  54. nickname: props.nickname,
  55. state: profileadd.status
  56. })
  57. }
  58. });
  59. }
  60. else
  61. res.json({
  62. status: false,
  63. code: 9,
  64. message: "@code_error"
  65. })
  66. }
  67. })
  68. }
  69. else
  70. res.json({
  71. status: false,
  72. code: 11,
  73. message: "@timed_out"
  74. })
  75. break;
  76. case "token":
  77. user.findOne({username: props.username, password: props.password}, function(err, profile){
  78. if(profile != null)
  79. {
  80. if(!profile.banned.status){
  81. var uid = require('rand-token').uid;
  82. var token = uid(16);
  83. Object.keys(config.tokens).filter(x => x != token && config.tokens[x] == props.username).map(function(tokens){delete config.tokens[tokens]})
  84. config.tokens[token] = props.username
  85. res.json({
  86. status: true,
  87. authKey: token,
  88. uid: props.username
  89. })
  90. }
  91. else
  92. res.json({
  93. status: false,
  94. code: 5,
  95. message: "@banned",
  96. reason: profile.banned.reason
  97. })
  98.  
  99. }else
  100. res.json({
  101. status: false,
  102. code: 0,
  103. message: '@wrong_login_or_password'
  104. })
  105. })
  106. break;
  107. case "check":
  108. var uid = config.tokens[props.token]
  109. if(uid != null)
  110. res.json({
  111. status: true,
  112. uid: uid
  113. })
  114. else
  115. res.json({
  116. status: false,
  117. code: 1,
  118. message: '@no_valid_token'
  119. })
  120. break;
  121. case "send-email":
  122. user.findOne({email: props.email.toLowerCase()}, function(err, unCheck){
  123. if(unCheck == null){
  124. var nodemailer = require('nodemailer');
  125. var transporter = nodemailer.createTransport({
  126. host: 'smtp.cubnick.ru',
  127. port: 587,
  128. auth: {
  129. pass: 'xktCLmJK'
  130. },
  131. tls: {
  132. rejectUnauthorized: false
  133. }
  134. });
  135. var uidx = require('rand-token').uid;
  136. var tokenx = uidx(6);
  137. config.codes[props.email.toLowerCase()] = tokenx
  138. var mailOptions = {
  139. to: props.email,
  140. subject: '[Special Forces: Confrontation] Подтверждение учетной записи',
  141. text: `Ваш код подтверждения: ${tokenx}. Если вы не запрашивали данный код при регистрации пользователя, просто проигнорируйте сообщение!`,
  142. html: `Ваш код подтверждения: <b>${tokenx}</b>. Если вы не запрашивали данный код при регистрации пользователя, просто проигнорируйте сообщение!`
  143. };
  144. console.log(mailOptions.text);
  145. transporter.sendMail(mailOptions, function(error, info){
  146. if (error)
  147. res.json({
  148. status: false,
  149. code: 8,
  150. message: '@email_error'
  151. })
  152. else
  153. res.json({
  154. status: true
  155. })
  156. });
  157. }
  158. else
  159. res.json({
  160. status: false,
  161. code: 7,
  162. message: '@email_contain'
  163. })
  164. })
  165. break;
  166. case "equip":
  167. var uid = config.tokens[props.token]
  168. if(uid != null)
  169. user.findOne({username: uid}, function(err, profile){
  170. var oItem = profile.items.filter(x => x.item_slot != 0)[0]
  171. var sItem = profile.items.filter(x => x.item_name == props.name)[0]
  172. if(sItem != null){
  173. sItem.item_slot = 1
  174. try{oItem.item_slot = 0}catch(err){console.log(err)}
  175. user.update({username: profile.username}, {'$set': {
  176. 'items': profile.items
  177. }}, function(err) {
  178. if(err)
  179. res.json({
  180. status: false
  181. })
  182. else
  183. res.json({
  184. status: true
  185. })
  186. })
  187. }
  188. else
  189. {
  190. res.json({
  191. status: false,
  192. code: 6,
  193. message: '@item_not_exist'
  194. })
  195. }
  196.  
  197.  
  198. })
  199. else
  200. res.json({
  201. status: false,
  202. code: 1,
  203. message: '@no_valid_token'
  204. })
  205. break;
  206. case "profile":
  207. var uid = config.tokens[props.token]
  208. if(uid != null)
  209. user.findOne({username: uid}, function(err, profile){
  210. res.json({
  211. status: true,
  212. username: uid,
  213. nickname: profile.nickname,
  214. avatar: profile.avatar,
  215. moneys: profile.moneys,
  216. experience: profile.experience,
  217. level: parseLvl(profile.experience),
  218. friends: profile.friends,
  219. items: [{item_name: '', item_slot: 0, item_time: 0}],
  220. state: profile.status
  221. })
  222. })
  223. else
  224. res.json({
  225. status: false,
  226. code: 1,
  227. message: '@no_valid_token'
  228. })
  229. break;
  230. default:
  231. res.json({
  232. status: false,
  233. error: {
  234. code: 2,
  235. message: '@unknown',
  236. params: props
  237. }
  238. })
  239. break;
  240. }
  241. })
  242.  
  243. app.get('/avatar/:type', function(req, res) {
  244. let props = new ExpressData(req).props;
  245. console.log(props)
  246. switch(req.params.type) {
  247. case "get":
  248. var uid = config.tokens[props.token]
  249. if(uid != null){
  250. user.findOne({username: uid}, function(err, profile){
  251. res.sendFile(__dirname + '/uploads/' + uid + '/avatar.jpg', function(err, stat) {
  252. if(err)
  253. res.sendFile(__dirname + '/uploads/' + profile.avatar + '.jpg')
  254. })
  255. })
  256. }
  257. else
  258. res.json({
  259. status: false,
  260. code: 1,
  261. message: '@no_valid_token'
  262. })
  263. break;
  264. default:
  265. res.json({
  266. status: false,
  267. error: {
  268. code: 2,
  269. message: '@unknown',
  270. params: props
  271. }
  272. })
  273. break;
  274. }
  275. })
  276.  
  277.  
  278. app.get('/', function (req, res){
  279. res.json({success: { status: true, date: Date.now()}});
  280. console.log('test');
  281. });
  282.  
  283. app.post('/auth/:type', function(req, res) {
  284. let props = new ExpressData(req).props;
  285. console.log(`Type: ${req.params.type}`)
  286. res.send("Successful");
  287. })
  288.  
  289. app.listen(config.port);
  290. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement