示例#1
0
 def process(self):
     route_id = self.parameters.get('route_id')
     route_data = RouteService.get_route(route_id)
     if route_data:
         RouteService.push_route(route_id)
         return "Push to route success"
     else:
         return "route not exist", 400
示例#2
0
    def process(self):
        route_body = self.parameters.get('body')

        # if RouteService.get_route(route_body.get('usergroup_id')):
        #     return "This usergroup_id already used",400

        RouteService.add_route(route_body)
        db.session.commit()
        return {"code": 200, "message": "Add new route success"}
示例#3
0
 def process(self):
     route_id = self.parameters.get('route_id')
     route_data = RouteService.get_route(route_id)
     if route_data:
         RouteService.delete_route(route_id)
         db.session.commit()
         return "delete success"
     else:
         return "group id not exist!", 404
示例#4
0
 def process(self):
     route_body = self.parameters.get('body')
     route_ip = route_body.get('ipaddress')
     route_current_data = RouteService.get_route_by_ip(route_ip)
     if route_current_data:
         RouteService.update_route_dynamic_data(route_body)
         db.session.commit()
         return {"code": 200, "message": "Update dymanic data success"}
     else:
         return {"code": 4017, "message": returncode['4017']}, 400
示例#5
0
 def process(self):
     route_body = self.parameters.get('body')
     route_id = self.parameters.get('route_id')
     route_current_data = RouteService.get_route(route_id)
     if route_current_data:
         if route_body.get('id'):
             return {"code": 4012, "message": returncode['4012']}, 400
         RouteService.modify_route_by_id(route_id, route_body)
         db.session.commit()
         return {"code": 200, "message": "Modify route success"}
     else:
         return {"code": 4017, "message": returncode['4017']}, 400
示例#6
0
 def process(self):
     route_id = self.parameters.get('route_id')
     route_data = RouteService.get_route(route_id)
     if route_data:
         route_dynamic_data = RouteService.get_route_dynamic_data(
             route_data['ipaddress'])
         return {
             "code": 200,
             "message": "Get dynamic route data success",
             "results": route_dynamic_data
         }
     else:
         return {"code": 4017, "message": returncode['4017']}, 400
示例#7
0
    def process(self):
        pageNum = request.args.get('pageNum', 1, type=int)
        pageSize = request.args.get('pageSize', 10, type=int)
        usergroup_ids_str = request.args.get('usergroup', "", type=str)
        logging.info(
            "GetRoutesView. pageNum:{},pageSize:{},usergroup_ids:{}".format(
                pageNum, pageSize, usergroup_ids_str))

        temp1 = usergroup_ids_str.split(',')
        usergroup_ids_list = []
        for temp in temp1:
            if temp >= '0' and temp <= '9999999':
                usergroup_ids_list.append(int(temp))

        totals = RouteService.get_route_amount(usergroup_ids_list)
        totalPages = (totals + pageSize - 1) // pageSize
        self.other_function()
        routes = RouteService.get_routes(usergroup_ids_list, pageNum, pageSize)

        routes_info = []
        for route in routes:
            routes_info.append({
                'id': route.RouteModel.id,
                'usergroup_id': route.RouteModel.usergroup_id,
                'group_name': route.UserGroupModel.group_name,
                'servernameCN': route.RouteModel.servernameCN,
                'domain': route.RouteModel.domain,
                'certificateExpTime': route.RouteModel.certificateExpTime,
                'ipaddress': route.RouteModel.ipaddress,
                'ipv6': route.RouteModel.ipv6,
                'trojanVersion': route.RouteModel.trojanVersion,
                'current_used': route.UserGroupModel.current_used,
                'maxUserCapacity': route.UserGroupModel.maxUserCapacity,
                'maxPwdCapacity': route.UserGroupModel.maxPwdCapacity,
                'trafficUsed': route.RouteModel.trafficUsed,
                'trafficLimit': route.RouteModel.trafficLimit,
                'trafficResetDay': route.RouteModel.trafficResetDay,
                'sequence': route.RouteModel.sequence,
                'online': route.RouteModel.online,
                'lastCheckTime': route.RouteModel.lastCheckTime,
            })

        return {
            "code": 200,
            "message": "get routes success",
            "results": {
                "total": totals,
                "totalPages": totalPages,
                "list": routes_info
            }
        }
示例#8
0
    def process(self):
        self.other_function()
        route_id = self.parameters.get('route_id')
        route_info = RouteService.get_route(route_id)
        if (route_info):
            return {
                "code": 200,
                "message": "Get route success",
                "results": {
                    'id': route_info.get('id'),
                    'usergroup_id': route_info.get('usergroup_id'),
                    'domain': route_info.get('domain'),
                    'ipaddress': route_info.get('ipaddress'),
                    'ipv6': route_info.get('ipv6'),
                    'port': route_info.get('port'),
                    'online': route_info.get('online'),
                    'servernameCN': route_info.get('servernameCN'),
                    'servernameEN': route_info.get('servernameEN'),
                    'sequence': route_info.get('sequence'),
                    'trafficLimit': route_info.get('trafficLimit'),
                    'routeExpTime': route_info.get('routeExpTime'),
                    'trafficResetDay': route_info.get('trafficResetDay'),
                    'trojanVersion': route_info.get('trojanVersion'),
                    'certificateExpTime': route_info.get('certificateExpTime'),
                    'availablePwd': route_info.get('availablePwd'),
                }
            }

        else:
            return "None", 400
示例#9
0
    def process(self):
        cmd_body = self.parameters.get('body')
        route_class = RouteService.get_route_class(cmd_body.get('route_id'))

        if not route_class:
            return {"code": 4017, "message": returncode['4017']}, 400
        if cmd_body.get('command') not in commandList:
            return {"code": 4018, "message": returncode['4018']}, 400

        re = self.remotecontrol(route_class.ipaddress, cmd_body.get('command'))
        if re:
            if re == 'verifyerror':
                return {"code": 4020, "message": returncode['4020']}, 400
            else:
                if cmd_body.get('command') == 'getTrojanVer':
                    route_class.trojanVersion = re
                    db.session.commit()
                if cmd_body.get('command') == 'getCertExpDate':
                    route_class.certificateExpTime = re
                    db.session.commit()

                return {
                    "code": 200,
                    "message": "Remote command sent success",
                    "data": re
                }
        else:
            return {"code": 4019, "message": returncode['4019']}, 400
示例#10
0
    def process(self):
        self.other_function()
        user_id = self.parameters.get('user_id')
        user_info = UserService.get_user(user_id)
        thunderservice_password = UserService.get_user_service_password(
            user_id)
        route_info = RouteService.get_routes_by_group_ID(
            user_info.usergroup_id)
        logging.info("route_info:{}".format(route_info))
        if (user_info):

            routes = list()
            for route in route_info:
                routes.append({
                    "id": route.id,
                    "usergroup_id": route.usergroup_id,
                    "sequence": route.sequence,
                    "online": route.online,
                    "domain": route.domain,
                    "port": route.port,
                    "servernameEN": route.servernameEN,
                    "servernameCN": route.servernameCN,
                    "password": thunderservice_password.oripassword
                })

            user_service_info = {
                'user_id':
                user_info.id,
                'thunderservice_id':
                user_info.thunderservice_id,
                'thunderservice_name':
                thunder_service_name[str(user_info.thunderservice_id)],
                'thunderservice_starttime':
                user_info.thunderservice_starttime,
                'thunderservice_endtime':
                user_info.thunderservice_endtime,
                'usergroup_id':
                user_info.usergroup_id,
                'thunderservice_oripassword':
                thunderservice_password.oripassword,
                'thunderservice_client_amount':
                user_info.thunderservice_client_amount,
                'thunderservice_traffic_amount':
                user_info.thunderservice_traffic_amount,
                'thunderservice_up_traffic_used':
                user_info.thunderservice_up_traffic_used,
                'thunderservice_down_traffic_used':
                user_info.thunderservice_down_traffic_used,
                "routes":
                routes
            }

            return {
                "code": 200,
                "message": "get user service success",
                "userServiceInfo": user_service_info
            }
        return 'None', 400
示例#11
0
    def process(self):
        trackinginput = self.parameters.get('body')
        user_body = self.parameters.get('body')
        deviceType = user_body.get('deviceType') if user_body.get(
            'deviceType') else 'Unknown'
        deviceID = user_body.get('deviceID') if user_body.get(
            'deviceID') else 'Unknown'

        logging.info(
            f"AppUserFreeTrialView Comming, deviceType:{deviceType},deviceID:{deviceID}"
        )

        routes_info = RouteService.get_free_route()

        # trackingoutput = "成功"
        # TrackingService.tracking(trackinginput,trackingoutput, user.id)

        # thunderservice = user.thunderservice_id
        # KService_action = '102'
        # if thunderservice and str(thunderservice) in thunder_service_ID['FUFEI']:
        #     KService_action = '103'
        # KService.add_record(action=KService_action,parameter1=user.id,parameter2=device,timestamp=int(time.time()))

        user_info = {
            "user_id": 0,
            "name": "free",
            "period": "2099-12-30",
            "invitationcode": None,
            "client_group_id": 1,
            "vip": thunder_service_name["1"],
            "vip_en": thunder_service_nameEN["1"],
            "vip_level": 1,
            "validtime": 2
        }

        resp = {
            "code": 200,
            "message": "get free routes success",
            "results": {
                "user_info": user_info,
                "ips": routes_info,
                "credential": {
                    "token": "",
                    "refreshToken": ""
                }
            }
        }

        logging.info(f"AppUserFreeTrialView , response:{resp}")

        return resp
示例#12
0
 def process(self):
     self.other_function()
     group_id = self.parameters.get('group_id')
     routes = RouteService.get_routes_by_group_ID(group_id)
     return routes
示例#13
0
    def process(self):
        trackinginput = self.parameters.get('body')
        print("1", time.time() * 1000)
        user_body = self.parameters.get('body')
        user = UserService.get_user_by_email(user_body['email'])

        print("2", time.time() * 1000)

        logging.info("UserLoginView,email:{}".format(user_body['email']))
        if not user:
            return {
                       "code": 4001,
                       "message": returncode['4001'],
                   }, 401

        if (user_body['password'] == user.password):
            # if user.check_password(user_body['password']):
            print("3", time.time() * 1000)
            token = jwt.encode(
                {'user_id': user.id, 'exp': datetime.datetime.utcnow() + datetime.timedelta(minutes=300)},
                flask_app.config['SECRET_KEY'])
            refreshToken = jwt.encode({'user_id': user.id, 'type': 'refresh',
                                       'exp': datetime.datetime.utcnow() + datetime.timedelta(minutes=14400)},
                                      flask_app.config['SECRET_KEY'])
            UserService.save_token(user.id, token, refreshToken)
            db.session.commit()
            print("4", time.time() * 1000)

            pwresource = UserService.get_user_service_password(user.id)
            if pwresource:
                thunderservice_password = pwresource.oripassword
            else:
                thunderservice_password = '******'  # 万一没有,就拿这个顶
                logging.info(
                    "UserLoginView. This user :{} do not have thunderservice password, use reserved insteed".format(
                        user_body['email']))

            print("5", time.time() * 1000)

            routes = RouteService.get_routes_by_group_ID(user.usergroup_id)

            print("6", time.time() * 1000)

            routes_info = list()
            for route in routes:
                routes_info.append({
                    'id': route.id,
                    'usergroup_id': route.usergroup_id,
                    'sequence': route.sequence,
                    'online': route.online,
                    'domain': route.domain,
                    'port': route.port,
                    # 'ipaddress': route.ipaddress,
                    'servernameEN': route.servernameEN,
                    'servernameCN': route.servernameCN,
                    # 'routeStarttime': route.routeStarttime,
                    # 'trafficLimit': route.trafficLimit,
                    # 'trafficUsed': route.trafficUsed,
                    # 'trafficResetDay': route.trafficResetDay,
                    'password': thunderservice_password
                })
            print("7", time.time() * 1000)
            trackingoutput = "成功"
            TrackingService.tracking(trackinginput,trackingoutput, user.id)
            print("8", time.time() * 1000)
            return {
                "code": 200,
                "message": "login success",
                "results": {
                    "user": {
                        "user_id": user.id,
                        "thunderservice_id": user.thunderservice_id,
                        "thunderservice_endtime": user.thunderservice_endtime,
                        "usergroup_id": user.usergroup_id
                    },
                    "routes": routes_info,
                    "credential": {
                        "token": token.decode('UTF-8'),
                        "refreshToken": refreshToken.decode('UTF-8')
                    }
                }
            }

        return {
                   "code": 4002,
                   "message": returncode['4002'],
               }, 401
示例#14
0
    def process(self):
        trackinginput = self.parameters.get('body')
        user_body = self.parameters.get('body')
        user = UserService.get_user_by_email(user_body['email'])

        logging.info(f"AppUserLoginView,request:{user_body}")
        if not user:
            logging.error("ERROR: AppUserLoginView: 4001")
            return {
                "code": 4001,
                "message": returncode['4001'],
            }, 200

        if (user_body['password'] == user.password):
            # if user.check_password(user_body['password']):
            token = jwt.encode(
                {
                    'user_id':
                    user.id,
                    'exp':
                    datetime.datetime.utcnow() +
                    datetime.timedelta(minutes=300)
                }, flask_app.config['SECRET_KEY'])
            refreshToken = jwt.encode(
                {
                    'user_id':
                    user.id,
                    'type':
                    'refresh',
                    'exp':
                    datetime.datetime.utcnow() +
                    datetime.timedelta(minutes=14400)
                }, flask_app.config['SECRET_KEY'])
            UserService.save_token(user.id, token, refreshToken)
            db.session.commit()

            pwresource = UserService.get_user_service_password(user.id)

            if pwresource:
                thunderservice_password = pwresource.oripassword
            else:
                thunderservice_password = '******'  # 万一没有,就拿这个顶
                logging.info(
                    "AppUserLoginView. This user :{} do not have thunderservice password, use reserved insteed"
                    .format(user_body['email']))

            if str(user.thunderservice_id) not in thunder_service_ID['FUFEI']:
                thunderservice_password = '******'

            routes = RouteService.get_routes_by_group_ID(user.usergroup_id)

            routes_info = list()
            for route in routes:
                routes_info.append({
                    'id': route.id,
                    'servernameEN': route.servernameEN,
                    'servernameCN': route.servernameCN,
                    'remoteAddr': route.domain,
                    'remotePort': route.port,
                    'password': thunderservice_password,
                    "ipv6": route.ipv6,
                    "statusCN": "正常",
                    "statusEN": "Available",
                    "isValid": route.online
                })

            trackingoutput = "成功"
            TrackingService.tracking(trackinginput, trackingoutput, user.id)

            device = user_body.get('deviceType') if user_body.get(
                'deviceType') else 'Unknown'
            thunderservice = user.thunderservice_id
            # if thunderservice in (thunder_service_ID['LOW_SPEED'] or thunder_service_ID['TRIAL']):
            KService_action = '102'
            # thunderservice exits and is a VIP
            if thunderservice and str(
                    thunderservice) in thunder_service_ID['FUFEI']:
                KService_action = '103'
            KService.add_record(action=KService_action,
                                parameter1=user.id,
                                parameter2=device,
                                timestamp=int(time.time()))

            thunderservice_name = thunder_service_name[str(thunderservice)]

            user_info = {
                "user_id":
                user.id,
                "name":
                user.email,
                "period":
                time.strftime("%Y-%m-%d",
                              time.localtime(user.thunderservice_endtime)),
                "invitationcode":
                user.individual_coupon,
                "client_group_id":
                user.thunderservice_id,
                "vip":
                thunderservice_name,
                "vip_en":
                thunder_service_nameEN[str(thunderservice)],
                "vip_level":
                user.usergroup_id,
                "validtime":
                2
            }

            user_mqtt = UserService.gen_user_mqtt(user_id=user.id)

            resp = {
                "code": 200,
                "message": "login success",
                "results": {
                    "user_info": user_info,
                    "mqtt": user_mqtt,
                    "ips": routes_info,
                    "credential": {
                        "token": token.decode('UTF-8'),
                        "refreshToken": refreshToken.decode('UTF-8')
                    }
                }
            }

            logging.info(f"AppUserLoginView success. response:{resp}")
            return resp

        logging.error("ERROR: AppUserLoginView: 4002")
        return {
            "code": 4002,
            "message": returncode['4002'],
        }, 200
示例#15
0
    def process(self):
        # user_body = self.parameters.get('body')
        user_id = request.args.get('user_id')
        user = UserService.get_user(user_id)

        logging.info(
            f"AppGetUserView,(baseURL/app/getUserInfo?user_id=userid),user_id:{user_id}"
        )
        if not user:
            return {
                "code": 4001,
                "message": returncode['4001'],
            }, 200

        pwresource = UserService.get_user_service_password(user.id)

        if pwresource:
            thunderservice_password = pwresource.oripassword
        else:
            thunderservice_password = '******'  # 万一没有,就拿这个顶
            logging.info(
                "AppUserLoginView. This user :{} do not have thunderservice password, use reserved insteed"
                .format(user_id))

        if str(user.thunderservice_id) not in thunder_service_ID['FUFEI']:
            thunderservice_password = '******'

        routes = RouteService.get_routes_by_group_ID(user.usergroup_id)

        routes_info = list()
        for route in routes:
            routes_info.append({
                'id': route.id,
                'servernameEN': route.servernameEN,
                'servernameCN': route.servernameCN,
                'remoteAddr': route.domain,
                'remotePort': route.port,
                'password': thunderservice_password,
                "ipv6": route.ipv6,
                "statusCN": "正常",
                "statusEN": "Available",
                "isValid": route.online
            })

        thunderservice_name = thunder_service_name[str(user.thunderservice_id)]
        thunderservice_nameEN = thunder_service_nameEN[str(
            user.thunderservice_id)]

        user_info = {
            "user_id":
            user.id,
            "name":
            user.email,
            "period":
            time.strftime("%Y-%m-%d",
                          time.localtime(user.thunderservice_endtime)),
            "invitationcode":
            user.individual_coupon,
            "client_group_id":
            user.thunderservice_id,
            "vip":
            thunderservice_name,
            "vip_en":
            thunderservice_nameEN,
            "vip_level":
            user.usergroup_id,
            "validtime":
            2
        }

        resp = {
            "code": 200,
            "message": "get user info success",
            "results": {
                "user_info": user_info,
                "ips": routes_info
            }
        }

        logging.info(f"AppGetUserView success,response:{resp}")

        return resp
示例#16
0
    def process(self):
        trackinginput = self.parameters.get('body')
        user_body = self.parameters.get('body')
        user = UserService.get_user_by_email(user_body['email'])

        logging.info("UserLoginView,email:{}".format(user_body['email']))
        if not user:
            return {
                "code": 4001,
                "message": returncode['4001'],
            }, 401

        if (user_body['password'] == user.password):
            # if user.check_password(user_body['password']):
            token = jwt.encode(
                {
                    'user_id':
                    user.id,
                    'exp':
                    datetime.datetime.utcnow() +
                    datetime.timedelta(minutes=300)
                }, flask_app.config['SECRET_KEY'])
            refreshToken = jwt.encode(
                {
                    'user_id':
                    user.id,
                    'type':
                    'refresh',
                    'exp':
                    datetime.datetime.utcnow() +
                    datetime.timedelta(minutes=14400)
                }, flask_app.config['SECRET_KEY'])
            UserService.save_token(user.id, token, refreshToken)
            db.session.commit()

            pwresource = UserService.get_user_service_password(user.id)
            if pwresource:
                thunderservice_password = pwresource.oripassword
            else:
                thunderservice_password = '******'  # 万一没有,就拿这个顶
                logging.info(
                    "UserLoginView. This user :{} do not have thunderservice password, use reserved insteed"
                    .format(user_body['email']))

            routes = RouteService.get_routes_by_group_ID(user.usergroup_id)

            routes_info = list()
            for route in routes:
                routes_info.append({
                    'id': route.id,
                    # 'usergroup_id': route.usergroup_id,
                    'sequence': route.sequence,
                    # 'online': route.online,
                    'domain': route.domain,
                    'port': route.port,
                    # 'ipaddress': route.ipaddress,
                    'servernameEN': route.servernameEN,
                    'servernameCN': route.servernameCN,
                    # 'routeStarttime': route.routeStarttime,
                    # 'trafficLimit': route.trafficLimit,
                    # 'trafficUsed': route.trafficUsed,
                    # 'trafficResetDay': route.trafficResetDay,
                    'password': thunderservice_password
                })
            trackingoutput = "成功"
            TrackingService.tracking(trackinginput, trackingoutput, user.id)

            device = user_body.get('device') if user_body.get(
                'device') else 'Unknown'
            thunderservice = user.thunderservice_id
            # if thunderservice in (thunder_service_ID['LOW_SPEED'] or thunder_service_ID['TRIAL']):
            KService_action = '102'
            # thunderservice exits and is a VIP
            if thunderservice and str(
                    thunderservice) in thunder_service_ID['FUFEI']:
                KService_action = '103'
            KService.add_record(action=KService_action,
                                parameter1=user.id,
                                parameter2=device,
                                timestamp=int(time.time()))

            thunderservice_name = thunder_service_name[str(thunderservice)]

            return {
                "code": 200,
                "message": "login success",
                "results": {
                    "user_info": {
                        "user_id": user.id,
                        "thunderservice_id": user.thunderservice_id,
                        "thunderservice_name": thunderservice_name,
                        "thunderservice_endtime": user.thunderservice_endtime,
                        "usergroup_id": user.usergroup_id
                    },
                    "routes": routes_info,
                    "credential": {
                        "token": token.decode('UTF-8'),
                        "refreshToken": refreshToken.decode('UTF-8')
                    }
                }
            }

        return {
            "code": 4002,
            "message": returncode['4002'],
        }, 401