Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const fs = require('fs');
- const express = require('express');
- const app = express();
- const config = require('./lib/config.json')
- const ExpressData = require('./express-data')
- const user = require('./lib/profiles')
- const parseLvl = require('./lib/parseLvl')
- const xml2json = require('xml2json-light');
- var path = require("path");
- module.exports = function (mongodb) {
- app.use('/', express.static(__dirname + '/public'));
- app.get('/agl/:type', function(req, res) {
- let ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
- let props = new ExpressData(req).props;
- switch(req.params.type)
- {
- case "register":
- var ipMy = parseInt(config.ips[ip])
- if(ipMy < Date.now()){
- user.findOne({username: props.username.toLowerCase(), email: props.email.toLowerCase()}, function(err, unCheck){
- if(unCheck != null)
- res.json({
- status: false,
- code: 3,
- message: '@username_exist'
- })
- else{
- if(props.code == config.codes[props.email.toLowerCase()]){
- let profileadd = new user({
- email: props.email.toLowerCase(),
- username: props.username.toLowerCase(),
- password: props.password,
- nickname: props.nickname,
- items: [config.defaultItems]
- })
- profileadd.save(function(err) {
- if(err)
- res.json({
- status: false,
- code: 4,
- message: '@register_error'
- })
- else{
- config.ips[ip] = Date.now() + 3600000
- var uid = require('rand-token').uid;
- var token = uid(16);
- config.tokens[token] = props.nickname.toLowerCase()
- res.json({
- status: true,
- authKey: token,
- nickname: props.nickname,
- state: profileadd.status
- })
- }
- });
- }
- else
- res.json({
- status: false,
- code: 9,
- message: "@code_error"
- })
- }
- })
- }
- else
- res.json({
- status: false,
- code: 11,
- message: "@timed_out"
- })
- break;
- case "token":
- user.findOne({username: props.username, password: props.password}, function(err, profile){
- if(profile != null)
- {
- if(!profile.banned.status){
- var uid = require('rand-token').uid;
- var token = uid(16);
- Object.keys(config.tokens).filter(x => x != token && config.tokens[x] == props.username).map(function(tokens){delete config.tokens[tokens]})
- config.tokens[token] = props.username
- res.json({
- status: true,
- authKey: token,
- uid: props.username
- })
- }
- else
- res.json({
- status: false,
- code: 5,
- message: "@banned",
- reason: profile.banned.reason
- })
- }else
- res.json({
- status: false,
- code: 0,
- message: '@wrong_login_or_password'
- })
- })
- break;
- case "check":
- var uid = config.tokens[props.token]
- if(uid != null)
- res.json({
- status: true,
- uid: uid
- })
- else
- res.json({
- status: false,
- code: 1,
- message: '@no_valid_token'
- })
- break;
- case "send-email":
- user.findOne({email: props.email.toLowerCase()}, function(err, unCheck){
- if(unCheck == null){
- var nodemailer = require('nodemailer');
- var transporter = nodemailer.createTransport({
- host: 'smtp.cubnick.ru',
- port: 587,
- auth: {
- user: 'confrontation@cubnick.ru',
- pass: 'xktCLmJK'
- },
- tls: {
- rejectUnauthorized: false
- }
- });
- var uidx = require('rand-token').uid;
- var tokenx = uidx(6);
- config.codes[props.email.toLowerCase()] = tokenx
- var mailOptions = {
- from: 'confrontation@cubnick.ru',
- to: props.email,
- subject: '[Special Forces: Confrontation] Подтверждение учетной записи',
- text: `Ваш код подтверждения: ${tokenx}. Если вы не запрашивали данный код при регистрации пользователя, просто проигнорируйте сообщение!`,
- html: `Ваш код подтверждения: <b>${tokenx}</b>. Если вы не запрашивали данный код при регистрации пользователя, просто проигнорируйте сообщение!`
- };
- console.log(mailOptions.text);
- transporter.sendMail(mailOptions, function(error, info){
- if (error)
- res.json({
- status: false,
- code: 8,
- message: '@email_error'
- })
- else
- res.json({
- status: true
- })
- });
- }
- else
- res.json({
- status: false,
- code: 7,
- message: '@email_contain'
- })
- })
- break;
- case "equip":
- var uid = config.tokens[props.token]
- if(uid != null)
- user.findOne({username: uid}, function(err, profile){
- var oItem = profile.items.filter(x => x.item_slot != 0)[0]
- var sItem = profile.items.filter(x => x.item_name == props.name)[0]
- if(sItem != null){
- sItem.item_slot = 1
- try{oItem.item_slot = 0}catch(err){console.log(err)}
- user.update({username: profile.username}, {'$set': {
- 'items': profile.items
- }}, function(err) {
- if(err)
- res.json({
- status: false
- })
- else
- res.json({
- status: true
- })
- })
- }
- else
- {
- res.json({
- status: false,
- code: 6,
- message: '@item_not_exist'
- })
- }
- })
- else
- res.json({
- status: false,
- code: 1,
- message: '@no_valid_token'
- })
- break;
- case "profile":
- var uid = config.tokens[props.token]
- if(uid != null)
- user.findOne({username: uid}, function(err, profile){
- res.json({
- status: true,
- username: uid,
- nickname: profile.nickname,
- avatar: profile.avatar,
- moneys: profile.moneys,
- experience: profile.experience,
- level: parseLvl(profile.experience),
- friends: profile.friends,
- items: [{item_name: '', item_slot: 0, item_time: 0}],
- state: profile.status
- })
- })
- else
- res.json({
- status: false,
- code: 1,
- message: '@no_valid_token'
- })
- break;
- default:
- res.json({
- status: false,
- error: {
- code: 2,
- message: '@unknown',
- params: props
- }
- })
- break;
- }
- })
- app.get('/avatar/:type', function(req, res) {
- let props = new ExpressData(req).props;
- console.log(props)
- switch(req.params.type) {
- case "get":
- var uid = config.tokens[props.token]
- if(uid != null){
- user.findOne({username: uid}, function(err, profile){
- res.sendFile(__dirname + '/uploads/' + uid + '/avatar.jpg', function(err, stat) {
- if(err)
- res.sendFile(__dirname + '/uploads/' + profile.avatar + '.jpg')
- })
- })
- }
- else
- res.json({
- status: false,
- code: 1,
- message: '@no_valid_token'
- })
- break;
- default:
- res.json({
- status: false,
- error: {
- code: 2,
- message: '@unknown',
- params: props
- }
- })
- break;
- }
- })
- app.get('/', function (req, res){
- res.json({success: { status: true, date: Date.now()}});
- console.log('test');
- });
- app.post('/auth/:type', function(req, res) {
- let props = new ExpressData(req).props;
- console.log(`Type: ${req.params.type}`)
- res.send("Successful");
- })
- app.listen(config.port);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement