Advertisement
Guest User

Untitled

a guest
Jul 15th, 2018
252
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. user: 'confrontation@cubnick.ru',
  130. pass: 'xktCLmJK'
  131. },
  132. tls: {
  133. rejectUnauthorized: false
  134. }
  135. });
  136. var uidx = require('rand-token').uid;
  137. var tokenx = uidx(6);
  138. config.codes[props.email.toLowerCase()] = tokenx
  139. var mailOptions = {
  140. from: 'confrontation@cubnick.ru',
  141. to: props.email,
  142. subject: '[Special Forces: Confrontation] Подтверждение учетной записи',
  143. text: `Ваш код подтверждения: ${tokenx}. Если вы не запрашивали данный код при регистрации пользователя, просто проигнорируйте сообщение!`,
  144. html: `Ваш код подтверждения: <b>${tokenx}</b>. Если вы не запрашивали данный код при регистрации пользователя, просто проигнорируйте сообщение!`
  145. };
  146. console.log(mailOptions.text);
  147. transporter.sendMail(mailOptions, function(error, info){
  148. if (error)
  149. res.json({
  150. status: false,
  151. code: 8,
  152. message: '@email_error'
  153. })
  154. else
  155. res.json({
  156. status: true
  157. })
  158. });
  159. }
  160. else
  161. res.json({
  162. status: false,
  163. code: 7,
  164. message: '@email_contain'
  165. })
  166. })
  167. break;
  168. case "equip":
  169. var uid = config.tokens[props.token]
  170. if(uid != null)
  171. user.findOne({username: uid}, function(err, profile){
  172. var oItem = profile.items.filter(x => x.item_slot != 0)[0]
  173. var sItem = profile.items.filter(x => x.item_name == props.name)[0]
  174. if(sItem != null){
  175. sItem.item_slot = 1
  176. try{oItem.item_slot = 0}catch(err){console.log(err)}
  177. user.update({username: profile.username}, {'$set': {
  178. 'items': profile.items
  179. }}, function(err) {
  180. if(err)
  181. res.json({
  182. status: false
  183. })
  184. else
  185. res.json({
  186. status: true
  187. })
  188. })
  189. }
  190. else
  191. {
  192. res.json({
  193. status: false,
  194. code: 6,
  195. message: '@item_not_exist'
  196. })
  197. }
  198.  
  199.  
  200. })
  201. else
  202. res.json({
  203. status: false,
  204. code: 1,
  205. message: '@no_valid_token'
  206. })
  207. break;
  208. case "profile":
  209. var uid = config.tokens[props.token]
  210. if(uid != null)
  211. user.findOne({username: uid}, function(err, profile){
  212. res.json({
  213. status: true,
  214. username: uid,
  215. nickname: profile.nickname,
  216. avatar: profile.avatar,
  217. moneys: profile.moneys,
  218. experience: profile.experience,
  219. level: parseLvl(profile.experience),
  220. friends: profile.friends,
  221. items: [{item_name: '', item_slot: 0, item_time: 0}],
  222. state: profile.status
  223. })
  224. })
  225. else
  226. res.json({
  227. status: false,
  228. code: 1,
  229. message: '@no_valid_token'
  230. })
  231. break;
  232. default:
  233. res.json({
  234. status: false,
  235. error: {
  236. code: 2,
  237. message: '@unknown',
  238. params: props
  239. }
  240. })
  241. break;
  242. }
  243. })
  244.  
  245. app.get('/avatar/:type', function(req, res) {
  246. let props = new ExpressData(req).props;
  247. console.log(props)
  248. switch(req.params.type) {
  249. case "get":
  250. var uid = config.tokens[props.token]
  251. if(uid != null){
  252. user.findOne({username: uid}, function(err, profile){
  253. res.sendFile(__dirname + '/uploads/' + uid + '/avatar.jpg', function(err, stat) {
  254. if(err)
  255. res.sendFile(__dirname + '/uploads/' + profile.avatar + '.jpg')
  256. })
  257. })
  258. }
  259. else
  260. res.json({
  261. status: false,
  262. code: 1,
  263. message: '@no_valid_token'
  264. })
  265. break;
  266. default:
  267. res.json({
  268. status: false,
  269. error: {
  270. code: 2,
  271. message: '@unknown',
  272. params: props
  273. }
  274. })
  275. break;
  276. }
  277. })
  278.  
  279.  
  280. app.get('/', function (req, res){
  281. res.json({success: { status: true, date: Date.now()}});
  282. console.log('test');
  283. });
  284.  
  285. app.post('/auth/:type', function(req, res) {
  286. let props = new ExpressData(req).props;
  287. console.log(`Type: ${req.params.type}`)
  288. res.send("Successful");
  289. })
  290.  
  291. app.listen(config.port);
  292. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement