Ejemplo n.º 1
0
def getNoticeDetail(r):
    """
	获取通知消息详情
	"""
    cr = webapi.SuccCallReturn()

    try:
        notice_id = webapi.GET(r, 'id')
        notice_id = int(notice_id)

        callback = webapi.GET(r, 'callback')
        cr.setCallBackJsonp(callback)

        r = core.Notice.objects.get(id=notice_id)
        result = {
            'id': r.id,
            'title': r.title,
            'content': r.content,
            'create_time': lemon.utils.misc.maketimestamp(r.create_time),
            'issuer': r.issuer.name,
            'issuer_id': r.issuer.id,
            'alert': lemon.base.IntValOfBoolean(r.alert),
            'end_alert_time': lemon.utils.misc.maketimestamp(r.end_alert_time)
        }
        cr.assign(result)
    except:
        traceback.print_exc()
        cr = webapi.FailCallReturn(errors.ErrorDefs.InternalException)
    return cr.httpResponse()
Ejemplo n.º 2
0
def getAppServerDetail(req):
    """
	获取应用服务器详情
	"""
    cr = webapi.SuccCallReturn()
    try:
        id = webapi.GET(req, 'id')
        callback = webapi.GET(req, 'callback')
        cr.setCallBackJsonp(callback)
        appServer = core.AppServer.objects.get(id=int(id))
        if appServer.is_addr_restricted == True:
            is_addr_restricted = 1
        if appServer.is_addr_restricted == False:
            is_addr_restricted = 2
        result = {
            'id': appServer.id,
            'name': appServer.name,
            'ip_addr': appServer.ip_addr,
            'app_id': appServer.app.id,
            'app_name': appServer.app.name,
            'is_addr_restricted': is_addr_restricted,
            'status': appServer.status,
            'access_token': appServer.access_token,
            'secret_key': appServer.secret_key
        }
        cr.assign(result)
    except:
        traceback.print_exc()
        cr = webapi.FailCallReturn(ErrorDefs.InternalException)
    return cr.httpResponse()
Ejemplo n.º 3
0
def changePassword(req):
	"""
	更改当前登录用户密码
	"""

	cr = webapi.SuccCallReturn()
	callback =None
	try:
		oldpasswd =  webapi.GET(req,'oldpasswd')
		newpasswd = webapi.GET(req,'newpasswd')
		callback = webapi.GET(req,'callback')
		cr.setCallBackJsonp(callback)

		#MD加密
		oldpasswd = lemon.encrypt.md5(oldpasswd)
		newpasswd = lemon.encrypt.md5(newpasswd)

		log = service.common.logging.createLog(cloudfish.base.AdminUserActionType.ChangePassword,request=req)
		r = core.AdminUser.objects.get(id = lemon.webapi.sessionValue(req,'user_id'))
		if r.password != oldpasswd:
			log.result = 1
			log.detail = u'密码错误'
			log.save()
			return webapi.FailCallReturn(ErrorDefs.PasswdIncorret).httpResponse()
		r.password = newpasswd
		r.save()
		log.result = 0
		log.detail = str(req.META['REMOTE_ADDR'])
		log.save()
	except:
		traceback.print_exc()
		cr = webapi.FailCallReturn(ErrorDefs.InternalException).setCallBackJsonp(callback)
	return cr.httpResponse()
Ejemplo n.º 4
0
def getAdminLog(req):
	"""
	查询管理员平台操作日志
	"""
	cr = webapi.SuccCallReturn()
	callback = None
	try:
		callback = webapi.GET(req,'callback')
		cr.setCallBackJsonp(callback)
		case =  webapi.GET(req,'case')
		if case :
			case = json.loads(case)
		else:
Ejemplo n.º 5
0
def changeAppStatus(req):
    """
	更改应用状态
	"""

    cr = webapi.SuccCallReturn()
    callback = None
    try:
        json_ids = webapi.GET(req, 'ids')
        status = webapi.GET(req, 'status')
        callback = webapi.GET(req, 'callback')
        cr.setCallBackJsonp(callback)

        ids = json.loads(json_ids)

        #空数组
        if not ids:
            apps = core.Application.objects.all()
            for app in apps:
                app.status = status
                app.save()

        if ids:
            for app_id in ids:
                id = ','.join(app_id)
                app = core.Application.objects.get(id=int(id))
                app.status = status
                app.save()

                log = service.common.logging.createLog(
                    cloudfish.base.AdminUserActionType.EnableApplicate,
                    request=req)
                if status == '1':
                    log = service.common.logging.createLog(
                        cloudfish.base.AdminUserActionType.EnableApplicate,
                        request=req)
                if status == '2':
                    log = service.common.logging.createLog(
                        cloudfish.base.AdminUserActionType.DisableApplicate,
                        request=req)
                log.target = app.name
                log.result = 0
                log.detail = str(req.META['REMOTE_ADDR'])
                log.save()
    except:
        traceback.print_exc()
        cr = webapi.FailCallReturn(ErrorDefs.InternalException)
    return cr.httpResponse()
Ejemplo n.º 6
0
def delete_file(request):
    """
	"""
    cr = webapi.SuccCallReturn()
    try:

        if request.method != 'DELETE':
            return webapi.FailCallReturn(
                lemon.errors.ErrorDefs.ParameterIllegal).httpResponse()

        file_id = webapi.GET(request, 'id')
        rs = core.AppUserFile.objects.filter(user__id=request.user.get('id'),
                                             access_id=file_id)
        if not rs:
            return webapi.FailCallReturn(
                lemon.errors.ErrorDefs.ObjectNotExisted)
        auf = rs[0]

        storage_id = auf.storage_id
        r = storage_delete_file(request, storage_id)
        if r:
            auf.delete()

        log = core.LogAppUserAction(
            user=request.user.get('user_id'),
            user_role=request.user.get('node_type'),
            issue_time=datetime.datetime.now(),
            action=cloudfish.base.AppUserActionType.CLIENT_USER_DELETE_FILE,
            target=auf.file_name,
            detail=u'file:%s size:%s' % (auf.file_name, auf.file_size))
        log.save()
    except:
        traceback.print_exc()
        cr = webapi.FailCallReturn(lemon.errors.ErrorDefs.InternalException)
    return cr.httpResponse()
Ejemplo n.º 7
0
def getAppList(req):
    """
	获取应用列表
	"""
    cr = webapi.SuccCallReturn()
    try:

        callback = webapi.GET(req, 'callback')
        cr.setCallBackJsonp(callback)
        begin, end = webapi.getDataPagingParams(req)
        rs = doQueryApp(req)

        total = rs.count()
        rs = rs.order_by('-create_time')[begin:end]

        result = []
        for r in rs:
            #app = core.Application.objects.get(id= r.id)
            appusers = core.AppUser.objects.filter(app_id=int(r.id))
            ids = []
            for appuser in appusers:
                ids.append(appuser.id)

            file_size = core.AppUserFile.objects.filter(
                user_id__in=ids).aggregate(Sum('file_size'))

            filesize = file_size.get('file_size__sum')
            if filesize == None:
                filesize = 0
            if filesize < 1048576:
                filesizestr = str(filesize / 1024) + 'K'
            if 1048576 < filesize < 1073741824:
                filesizestr = str(filesize / 1024) + 'M'
            if filesize > 1073741824:
                filesizestr = str(filesize / 1024) + 'G'

            result.append({
                'id':
                r.id,
                'name':
                r.name,
                'app_id':
                r.app_id,
                'create_time':
                lemon.utils.misc.maketimestamp(r.create_time),
                'status':
                r.status,
                'creator':
                r.creator.name,
                'file_size':
                filesizestr
            })

        cr.assign(result)
        cr.setPageCtrlValue('total', total)
    except:
        traceback.print_exc()
        cr = webapi.FailCallReturn(
            ErrorDefs.InternalException).setCallBackJsonp(callback)
    return cr.httpResponse()
Ejemplo n.º 8
0
def doQueryAccount(req):
    """
	"""
    rs = None

    json_query_parameters = webapi.GET(req, "query_parameters")

    if json_query_parameters:
        query_parameters = json.loads(json_query_parameters)
    else:
        query_parameters = {}

    name = query_parameters.get('case').get("name")
    app_name = query_parameters.get('case').get("app_name")
    status = query_parameters.get('case').get("status")

    rs = core.AppUser.objects.all()
    if name:
        rs = rs.filter(name__icontains=name)
    if app_name:
        rs = rs.filter(app__name__icontains=app_name)
    if status:
        status = int(status)
        rs = rs.filter(status=status)

    return rs
Ejemplo n.º 9
0
def createNotice(r):
    """
	创建系统通知消息
	"""
    cr = webapi.SuccCallReturn()
    callback = None
    try:
        title = webapi.GET(r, 'title')
        content = webapi.GET(r, 'content')
        alert = webapi.GET(r, 'alert', 0)
        end_alert_time = webapi.GET(r, 'end_alert_time', None)
        alert = int(alert)
        if alert:
            alert = True
        else:
            alert = False

        if end_alert_time:
            end_alert_time = lemon.utils.misc.mk_datetime(end_alert_time)

        callback = webapi.GET(r, 'callback')
        cr.setCallBackJsonp(callback)
        if not title or not content:
            return webapi.FailCallReturn(
                errors.ErrorDefs.ParameterIllegal).httpResponse()

        user_id = webapi.sessionValue(r, 'user_id')
        admin = core.AdminUser.objects.get(id=int(user_id))
        notice = core.Notice()
        notice.issuer = admin
        notice.title = title[:255]
        notice.content = content[:2000]
        notice.create_time = datetime.datetime.now()
        notice.modify_time = notice.create_time
        notice.alert = alert
        notice.end_alert_time = end_alert_time
        notice.save()
        cr.result = notice.id

        log = service.common.logging.createLog(
            lemon.basetype.LogActionType.L312, notice.title, request=r)
        log.save()
    except:
        traceback.print_exc()
        cr = webapi.FailCallReturn(errors.ErrorDefs.InternalException)
    return cr.httpResponse()
Ejemplo n.º 10
0
def doQueryAdminUserActionLog(req):
	"""
	"""
	rs = None

	case =  webapi.GET(req,'case')
	if case :
		case = json.loads(case)
Ejemplo n.º 11
0
def share_file(request):
    """
	"""
    cr = webapi.SuccCallReturn()
    try:

        file_id = webapi.GET(request, 'id')
        client_id = webapi.GET(request, 'client_id')

        rs = core.AppUser.objects.filter(name=client_id,
                                         app__id=request.user.get('app_id'))
        if not rs:
            return webapi.FailCallReturn(
                lemon.errors.ErrorDefs.ObjectNotExisted).httpResponse()
        target_user = rs[0]

        if core.AppUserFile.objects.filter(user__id=target_user.id,
                                           access_id=file_id).count():
            return cr.httpResponse()  # succ ,passed

        rs = core.AppUserFile.objects.filter(user__id=request.user.get('id'),
                                             access_id=file_id)
        if not rs:
            return webapi.FailCallReturn(
                lemon.errors.ErrorDefs.ObjectNotExisted).httpResponse()
        auf = rs[0]

        log = core.LogAppUserAction(
            user=request.user.get('user_id'),
            user_role=request.user.get('node_type'),
            issue_time=datetime.datetime.now(),
            action=cloudfish.base.AppUserActionType.CLIENT_USER_CREATE_FILE,
            target=auf.file_name,
            detail=u'share to: %s ,file:%s size:%s' %
            (target_user.name, auf.file_name, auf.file_size))
        log.save()

        # allocate new instance
        auf.pk = None
        auf.user = target_user
        auf.save()
    except:
        traceback.print_exc()
        cr = webapi.FailCallReturn(lemon.errors.ErrorDefs.InternalException)
    return cr.httpResponse()
Ejemplo n.º 12
0
def exportAppUserLog(req):
	"""
	导出用户客户端操作行为日志
	"""
	cr = webapi.SuccCallReturn()
	try:
		case =  webapi.GET(req,'case')
		if case :
			case = json.loads(case)
Ejemplo n.º 13
0
def exportAdminLog(req):
	"""
	导出管理员平台操作日志
	"""
	cr = webapi.SuccCallReturn()
	try:
		case =  webapi.GET(req,'case')
		if case :
			case = json.loads(case)
Ejemplo n.º 14
0
def getAppDetail(req):
    """
	获取应用详情
	"""
    cr = webapi.SuccCallReturn()
    try:
        id = webapi.GET(req, 'id')
        callback = webapi.GET(req, 'callback')
        cr.setCallBackJsonp(callback)
        app = core.Application.objects.get(id=int(id))
        appusers = core.AppUser.objects.filter(app_id=int(id))

        ids = []
        for appuser in appusers:
            ids.append(appuser.id)

        file_size = core.AppUserFile.objects.filter(user_id__in=ids).aggregate(
            Sum('file_size'))

        filesize = file_size.get('file_size__sum')
        if filesize == None:
            filesize = 0
        if filesize < 1048576:
            filesizestr = str(filesize / 1024) + 'K'
        if 1048576 < filesize < 1073741824:
            filesizestr = str(filesize / 1024) + 'M'
        if filesize > 1073741824:
            filesizestr = str(filesize / 1024) + 'G'
        result = {
            'id': app.id,
            'app_id': app.app_id,
            'name': app.name,
            'access_token': app.access_token,
            'secret_key': app.secret_key,
            'comment': app.comment,
            'file_size': filesizestr,
            'status': app.status
        }
        cr.assign(result)
    except:
        traceback.print_exc()
        cr = webapi.FailCallReturn(ErrorDefs.InternalException)
    return cr.httpResponse()
Ejemplo n.º 15
0
def getCurrentUserInfo(req):
	cr = webapi.SuccCallReturn()
	callback =None
	try:
		callback = webapi.GET(req,'callback')
		cr.setCallBackJsonp(callback)
		r = core.AdminUser.objects.get(id = lemon.webapi.sessionValue(req,'user_id'))
		cr.assign({'user':r.login,'role':r.role})
	except:
		traceback.print_exc()
		cr = webapi.FailCallReturn(ErrorDefs.InternalException).setCallBackJsonp(callback)
	return cr.httpResponse()
Ejemplo n.º 16
0
def removeNotice(req):
    """
	删除系统通知消息
	"""
    cr = webapi.SuccCallReturn()
    callback = None
    try:
        notice_id = webapi.GET(req, 'id')
        callback = webapi.GET(req, 'callback')
        cr.setCallBackJsonp(callback)
        notice = core.Notice.objects.get(id=int(notice_id))
        core.Notice.objects.filter(id=int(notice_id)).delete()

        log = service.common.logging.createLog(
            lemon.basetype.LogActionType.L314, notice.title, request=req)
        log.save()

    except:
        traceback.print_exc()
        cr = webapi.FailCallReturn(
            errors.ErrorDefs.InternalException).setCallBackJsonp(callback)
    return cr.httpResponse()
Ejemplo n.º 17
0
    def _wrapper(request, *args, **kwargs):

        cr = webapi.SuccCallReturn()
        access_token = webapi.GET(request, 'access_token')
        secret_key = webapi.GET(request, 'secret_key')

        rs = core.AppServer.objects.filter(
            access_token=access_token,
            secret_key=secret_key,
            status=cloudfish.base.STATUS_TYPE_ENABLED,
            app__status=cloudfish.base.STATUS_TYPE_ENABLED)
        if not rs:
            return webapi.FailCallReturn(
                cloudfish.errors.ErrorDefs.ADDRESS_RESTRICTED).httpResponse()
        server = rs[0]
        if server.is_addr_restricted:
            if server.ip_addr != request.META['REMOTE_ADDR']:
                return webapi.FailCallReturn(
                    cloudfish.errors.ErrorDefs.ADDRESS_RESTRICTED
                ).httpResponse()
        request.server = server
        return func(request, *args, **kwargs)
Ejemplo n.º 18
0
def getAccountDetail(req):
    """
	获取应用详情
	"""
    cr = webapi.SuccCallReturn()
    try:
        id = webapi.GET(req, 'id')
        callback = webapi.GET(req, 'callback')
        cr.setCallBackJsonp(callback)
        appUser = core.AppUser.objects.get(id=int(id))
        file_size = core.AppUserFile.objects.filter(user_id=int(id)).aggregate(
            Sum('file_size'))
        filesize = file_size.get('file_size__sum')
        if filesize == None:
            filesize = 0
        if filesize < 1048576:
            filesizestr = str(filesize / 1024) + 'K'
        if 1048576 < filesize < 1073741824:
            filesizestr = str(filesize / 1024) + 'M'
        if filesize > 1073741824:
            filesizestr = str(filesize / 1024) + 'G'
        result = {
            'id': appUser.id,
            'app_id': appUser.app.id,
            'app_name': appUser.app.name,
            'name': appUser.name,
            'username': appUser.username,
            'passwd': appUser.passwd,
            'phone': appUser.phone,
            'address': appUser.address,
            'file_size': filesizestr,
            'status': appUser.status
        }
        cr.assign(result)
    except:
        traceback.print_exc()
        cr = webapi.FailCallReturn(ErrorDefs.InternalException)
    return cr.httpResponse()
Ejemplo n.º 19
0
def updateApp(req):
    """
	修改应用
	:param req:
	:return:
	"""
    cr = webapi.SuccCallReturn()
    try:
        id = webapi.GET(req, 'id')
        app_id = webapi.GET(req, 'app_id')
        name = webapi.GET(req, 'name')
        comment = webapi.GET(req, 'comment')
        status = webapi.GET(req, 'status')

        app_id = app_id.strip()
        name = name.strip()
        status = status.strip()

        if not app_id or not name or not name:
            return webapi.FailCallReturn(
                ErrorDefs.ParameterIllegal).httpResponse()

        callback = webapi.GET(req, 'callback')
        cr.setCallBackJsonp(callback)

        creator_id = webapi.sessionValue(req, 'user_id')
        creator = core.AdminUser.objects.get(id=(int(creator_id)))

        app = core.Application.objects.get(id=int(id))
        #应用标识不能更新
        # if app_id:
        # 	appforid = core.Application.objects.filter(app_id = app_id)
        # 	if appforid:
        # 		return webapi.FailCallReturn(ErrorDefs.AppExisted).httpResponse()
        # 	app.app_id = app_id[:40]
        if name: app.name = name[:40]
        if comment: app.comment = comment[:200]

        if status:
            app.status = int(status)

        app.creator = creator
        #app.create_time = datetime.datetime.now()
        app.save()

        log = service.common.logging.createLog(
            cloudfish.base.AdminUserActionType.UpdateApplicate, request=req)
        log.result = 0
        log.target = app.name
        log.detail = str(req.META['REMOTE_ADDR'])
        log.save()
    except:
        traceback.print_exc()
        cr = webapi.FailCallReturn(
            ErrorDefs.InternalException).setCallBackJsonp(callback)
    return cr.httpResponse()
Ejemplo n.º 20
0
def updateAppServer(req):
    """
	修改应用服务器
	"""
    cr = webapi.SuccCallReturn()
    try:
        id = webapi.GET(req, 'id')
        name = webapi.GET(req, 'name')
        ip_addr = webapi.GET(req, 'ip_addr')
        app_id = webapi.GET(req, 'app_id')
        is_addr_restricted = webapi.GET(req, 'is_addr_restricted')
        status = webapi.GET(req, 'status')

        name = name.strip()
        ip_addr = ip_addr.strip()

        if not name or not ip_addr:
            return webapi.FailCallReturn(
                ErrorDefs.ParameterIllegal).httpResponse()

        callback = webapi.GET(req, 'callback')
        cr.setCallBackJsonp(callback)

        appServer = core.AppServer.objects.get(id=int(id))
        app = core.Application.objects.get(id=int(app_id))
        appServer.app = app
        if name: appServer.name = name[:40]
        if ip_addr: appServer.ip_addr = ip_addr[:30]

        if is_addr_restricted == '1':
            is_addr_restricted = True
        if is_addr_restricted == '2':
            is_addr_restricted = False
        appServer.is_addr_restricted = is_addr_restricted

        if status:
            appServer.status = int(status)

        appServer.save()

        log = service.common.logging.createLog(
            cloudfish.base.AdminUserActionType.UpdateAppServer, request=req)
        log.result = 0
        log.target = appServer.name
        log.detail = str(req.META['REMOTE_ADDR'])
        log.save()
    except:
        traceback.print_exc()
        cr = webapi.FailCallReturn(
            ErrorDefs.InternalException).setCallBackJsonp(callback)
    return cr.httpResponse()
Ejemplo n.º 21
0
def fileDownload(req):
    type = webapi.GET(req, 'type')
    if type == 'client':
        filename = model.django.lemon.settings.client_path
        file = "gongwen_client.tar.gz"
    else:
        filename = model.django.lemon.settings.doc_path
        file = "readme.doc"
    fp = open(filename, 'rb')
    wrapper = FileWrapper(fp)
    response = HttpResponse(wrapper, content_type='text/plain')
    response['Content-Length'] = os.path.getsize(filename)

    content_type = mimetypes.guess_type(filename)[0]
    response = StreamingHttpResponse(wrapper, content_type=content_type)
    response['Content-Disposition'] = "attachment; filename=%s" % file.encode(
        'utf-8')
    return response
Ejemplo n.º 22
0
def get_file(request):
    """
	"""
    cr = webapi.SuccCallReturn()
    try:
        file_id = webapi.GET(request, 'id')
        rs = core.AppUserFile.objects.filter(user__id=request.user.get('id'),
                                             access_id=file_id)
        if not rs:
            return webapi.FailCallReturn(
                lemon.errors.ErrorDefs.ObjectNotExisted).httpResponse()
        auf = rs[0]

        filename = storage_get_file(request, auf.storage_id)

        passwd = get_encrypt_password(request.user.get('id'))

        enable = BaseAppServer.instance().getConfig().get(
            'encrypt_enable', False)
        if enable:
            filename = decrypt_file(filename, passwd)

        log = core.LogAppUserAction(
            user=request.user.get('user_id'),
            user_role=request.user.get('node_type'),
            issue_time=datetime.datetime.now(),
            action=cloudfish.base.AppUserActionType.CLIENT_USER_GET_FILE,
            target=auf.file_name,
            detail=u'file:%s size:%s' % (auf.file_name, auf.file_size))
        log.save()

        # fp = FileObject(filename,'rb')
        fp = open(filename, 'rb')
        wrapper = FileWrapper(fp)
        content_type = mimetypes.guess_type(auf.file_name)[0]
        response = StreamingHttpResponse(wrapper, content_type=content_type)
        #response['Content-Disposition'] = u"attachment; filename=%s" % auf.file_name
        response['Content-Disposition'] = u"attachment; filename=_unkown_file_"
        return response
    except:
        traceback.print_exc()
        # return webapi.FailCallReturn( lemon.errors.ErrorDefs.InternalException).httpResponse()
    return HttpResponseForbidden()
Ejemplo n.º 23
0
def getAllApp(req):
    """
	获取全部应用
	"""
    cr = webapi.SuccCallReturn()
    try:

        callback = webapi.GET(req, 'callback')
        cr.setCallBackJsonp(callback)

        apps = core.Application.objects.all()

        result = []
        for app in apps:
            result.append({'id': app.id, 'name': app.name})

        cr.assign(result)
    except:
        traceback.print_exc()
        cr = webapi.FailCallReturn(
            ErrorDefs.InternalException).setCallBackJsonp(callback)
    return cr.httpResponse()
Ejemplo n.º 24
0
def getAppServerList(req):
    """
	获取应用服务器列表
	"""
    cr = webapi.SuccCallReturn()
    try:
        callback = webapi.GET(req, 'callback')
        cr.setCallBackJsonp(callback)
        begin, end = webapi.getDataPagingParams(req)

        rs = doQueryAppServer(req)

        total = rs.count()
        rs = rs.order_by('-create_time')[begin:end]

        result = []
        for r in rs:
            result.append({
                'id':
                r.id,
                'name':
                r.name,
                'ip_addr':
                r.ip_addr,
                'app_name':
                r.app.name,
                'create_time':
                lemon.utils.misc.maketimestamp(r.create_time),
                'status':
                r.status
            })

        cr.assign(result)
        cr.setPageCtrlValue('total', total)
    except:
        traceback.print_exc()
        cr = webapi.FailCallReturn(
            ErrorDefs.InternalException).setCallBackJsonp(callback)
    return cr.httpResponse()
Ejemplo n.º 25
0
def getNoticeList(r):
    """
	获取通知消息列表
	"""
    cr = webapi.SuccCallReturn()
    callback = None
    try:
        start, end = webapi.getDataPagingParams(r)
        callback = webapi.GET(r, 'callback')
        cr.setCallBackJsonp(callback)

        rs = core.Notice.objects.all().order_by('-modify_time')[start:end]
        result = []
        for r in rs:
            result.append({
                'id':
                r.id,
                'title':
                r.title,
                'content':
                r.content,
                'create_time':
                lemon.utils.misc.maketimestamp(r.create_time),
                'issuer':
                r.issuer.name,
                'issuer_id':
                r.issuer.id,
                'alert':
                lemon.base.IntValOfBoolean(r.alert),
                'end_alert_time':
                lemon.utils.misc.maketimestamp(r.end_alert_time)
            })
        cr.assign(result)
        cr.setPageCtrlValue('total', core.Notice.objects.all().count())
    except:
        traceback.print_exc()
        cr = webapi.FailCallReturn(errors.ErrorDefs.InternalException)
    return cr.httpResponse()
Ejemplo n.º 26
0
def createAccount(req):
    """
	添加应用
	@params:
		@return:
			{status,errcode,result}

	"""
    cr = webapi.SuccCallReturn()
    callback = None
    try:
        app_id = webapi.GET(req, 'app_id')
        name = webapi.GET(req, 'name')
        username = webapi.GET(req, 'username')
        passwd = webapi.GET(req, 'passwd')
        phone = webapi.GET(req, 'phone')
        address = webapi.GET(req, 'address')
        status = webapi.GET(req, 'status')

        name = name.strip()

        if not name:
            return webapi.FailCallReturn(
                ErrorDefs.ParameterIllegal).httpResponse()

        appusername = core.AppUser.objects.filter(name=name)
        if (appusername.exists()):
            return webapi.FailCallReturn(
                ErrorDefs.AccountExisted).httpResponse()

        callback = webapi.GET(req, 'callback')
        cr.setCallBackJsonp(callback)

        app = core.Application.objects.get(id=int(app_id))
        appUser = core.AppUser()
        appUser.app = app

        appUser.salt = genPassword(10)
        if name: appUser.name = name[:40]
        if username: appUser.username = username[:20]
        if passwd:
            appUser.passwd = lemon.encrypt.md5(appUser.salt + passwd[:20])
        if phone: appUser.phone = phone[:20]
        if address: appUser.address = address[:80]

        if status:
            appUser.status = int(status)

        appUser.create_time = datetime.datetime.now()

        appUser.save()

        result = appUser.id
        cr.assign(result)

        log = service.common.logging.createLog(
            cloudfish.base.AdminUserActionType.CreateAppUser, request=req)
        log.result = 0
        log.target = appUser.name
        log.detail = str(req.META['REMOTE_ADDR'])
        log.user_role = req.session['user_role']
        log.save()
    except:
        traceback.print_exc()
        cr = webapi.FailCallReturn(
            ErrorDefs.InternalException).setCallBackJsonp(callback)
    return cr.httpResponse()
Ejemplo n.º 27
0
def createAppServer(req):
    """
	添加应用服务器
	@params:
		@return:
			{status,errcode,result}

	"""
    cr = webapi.SuccCallReturn()
    callback = None
    try:
        name = webapi.GET(req, 'name')
        ip_addr = webapi.GET(req, 'ip_addr')
        app_id = webapi.GET(req, 'app_id')
        is_addr_restricted = webapi.GET(req, 'is_addr_restricted')
        status = webapi.GET(req, 'status')

        name = name.strip()
        ip_addr = ip_addr.strip()

        if not name or not ip_addr:
            return webapi.FailCallReturn(
                ErrorDefs.ParameterIllegal).httpResponse()

        callback = webapi.GET(req, 'callback')
        cr.setCallBackJsonp(callback)

        appServer = core.AppServer()
        app = core.Application.objects.get(id=int(app_id))
        appServer.app = app
        if name: appServer.name = name[:40]
        if ip_addr: appServer.ip_addr = ip_addr[:30]

        if is_addr_restricted == '1':
            is_addr_restricted = True
        if is_addr_restricted == '2':
            is_addr_restricted = False
        appServer.is_addr_restricted = is_addr_restricted

        if status:
            appServer.status = int(status)

        appServer.create_time = datetime.datetime.now()

        #调用生成服务器访问令牌和访问口令(判断token是否存在)

        # while True:
        # 	access_token = lemon.utils.misc.genUUID()
        # if not core.AppServer.objects.objects.filter(access_token= access_token).exits():
        # 		break
        appServer.access_token = lemon.utils.misc.genUUID()
        appServer.secret_key = lemon.utils.misc.random_password()

        appServer.save()
        result = {
            'id': appServer.id,
            'access_token': appServer.access_token,
            'secret_key': appServer.name
        }
        cr.assign(result)

        log = service.common.logging.createLog(
            cloudfish.base.AdminUserActionType.CreateAppServer, request=req)
        log.result = 0
        log.target = appServer.name
        log.detail = str(req.META['REMOTE_ADDR'])
        log.save()
    except:
        traceback.print_exc()
        cr = webapi.FailCallReturn(
            ErrorDefs.InternalException).setCallBackJsonp(callback)
    return cr.httpResponse()
Ejemplo n.º 28
0
def createApp(req):
    """
	添加应用
	@params:
		@return:
			{status,errcode,result}

	"""
    cr = webapi.SuccCallReturn()
    callback = None
    try:
        app_id = webapi.GET(req, 'app_id')
        name = webapi.GET(req, 'name')
        comment = webapi.GET(req, 'comment')
        status = webapi.GET(req, 'status')

        app_id = app_id.strip()
        name = name.strip()
        status = status.strip()

        if not app_id or not name:
            return webapi.FailCallReturn(
                ErrorDefs.ParameterIllegal).httpResponse()

        callback = webapi.GET(req, 'callback')
        cr.setCallBackJsonp(callback)

        creator_id = webapi.sessionValue(req, 'user_id')
        creator = core.AdminUser.objects.get(id=(int(creator_id)))
        app = core.Application()
        if app_id:
            appforid = core.Application.objects.filter(app_id=app_id)
            if appforid:
                return webapi.FailCallReturn(
                    ErrorDefs.AppExisted).httpResponse()
            app.app_id = app_id[:40]
        if name: app.name = name[:40]
        if comment: app.comment = comment[:200]

        if status:
            app.status = int(status)

        app.creator = creator
        app.create_time = datetime.datetime.now()
        app.access_token = lemon.utils.misc.genUUID()
        app.secret_key = lemon.utils.misc.random_password()
        app.save()

        result = app.id
        cr.assign(result)

        log = service.common.logging.createLog(
            cloudfish.base.AdminUserActionType.CreateApplicate, request=req)
        log.result = 0
        log.target = app.name
        log.detail = str(req.META['REMOTE_ADDR'])
        log.save()
    except:
        traceback.print_exc()
        cr = webapi.FailCallReturn(
            ErrorDefs.InternalException).setCallBackJsonp(callback)
    return cr.httpResponse()
Ejemplo n.º 29
0
def updateAccount(req):
    cr = webapi.SuccCallReturn()
    try:
        id = webapi.GET(req, 'id')
        app_id = webapi.GET(req, 'app_id')
        name = webapi.GET(req, 'name')
        username = webapi.GET(req, 'username')
        phone = webapi.GET(req, 'phone')
        address = webapi.GET(req, 'address')
        #is_backend = webapi.GET(req,'is_backend')
        status = webapi.GET(req, 'status')

        name = name.strip()

        if not name:
            return webapi.FailCallReturn(
                ErrorDefs.ParameterIllegal).httpResponse()

        callback = webapi.GET(req, 'callback')
        cr.setCallBackJsonp(callback)

        app = core.Application.objects.get(id=int(app_id))
        appUser = core.AppUser.objects.get(id=int(id))

        #如果修改app,则会查询对应授权数
        if app != appUser.app:
            #判断应用授权数量
            #已用数量
            cert_num = core.AppUser.objects.filter(cert__isnull=False,
                                                   app=app).count()

            if cert_num >= app.max_lic_num:
                return webapi.FailCallReturn(ErrorDefs.AppNoLic).httpResponse()

        appUser.app = app

        if name:
            appUser.name = name[:40]
        if username:
            appUser.username = username[:20]
        if phone:
            appUser.phone = phone[:20]
        else:
            appUser.phone = phone
        if address:
            appUser.address = address[:80]
        else:
            appUser.address = address
        if status:
            appUser.status = int(status)

        #不能修改用户是否前后端
        # if is_backend=='1':
        # 	is_backend = True
        # 	appUser.cert = app.cert
        #
        # if is_backend=='2':
        # 	is_backend = False
        # 	rs = core.AppCertificate.objects.filter(status = 1)
        # 	if rs:
        # 		appUser.cert = rs[0]
        # 	else:
        # 		appUser.cert = None
        #
        # appUser.is_backend = is_backend

        appUser.save()

        log = service.common.logging.createLog(
            cloudfish.base.AdminUserActionType.UpdateAppUser, request=req)
        log.result = 0
        log.target = appUser.name
        log.detail = str(req.META['REMOTE_ADDR'])
        log.user_role = req.session['user_role']
        log.save()
    except:
        traceback.print_exc()
        cr = webapi.FailCallReturn(
            ErrorDefs.InternalException).setCallBackJsonp(callback)
    return cr.httpResponse()
Ejemplo n.º 30
0
def login(req):
	"""
	login
	@params:
		@return:
			{status,errcode,result}

	"""
	cr = webapi.SuccCallReturn()
	callback =None
	log = None
	try:
		username =  webapi.GET(req,'user')
		password = webapi.GET(req,'password')
		signcode = webapi.GET(req,'signcode')
		callback = webapi.GET(req,'callback')
		cr.setCallBackJsonp(callback)

		log = service.common.logging.createLog(cloudfish.base.AdminUserActionType.Login)
		log.user = username
		if not username or not password :
			# log.result = 1
			# log.detail = u'用户名或密码错误'
			# log.user_role = 0
			# log.save()
			return lemon.webapi.FailCallReturn(ErrorDefs.UserNameNotExisted).httpResponse()
		#验证码
		# if signcode.lower() != req.session['sign_chars'].lower():
		# 	# log.result = 1
		# 	# log.detail = u'验证码错误'
		# 	# log.save()
		# 	return lemon.webapi.FailCallReturn(ErrorDefs.SignCodeIncorret).httpResponse()
		#MD加密
		password = lemon.encrypt.md5(password)
		rs = core.AdminUser.objects.filter(login=username,password=password)
		if not rs:
			log.result = 1
			log.detail = u'用户名或密码错误'
			log.user_role = 0
			log.save()
			return lemon.webapi.FailCallReturn(ErrorDefs.UserNameNotExisted).httpResponse()
		r = rs[0]
		req.session['user_id'] =  r.id
		req.session['user_role'] =  r.role

		ar = service.lemon_impl.AuthResult_t()
		ar.user_id = r.id
		ar.user_name = username
		ar.login_time = int(time.time())
		ar.expire_time = ar.login_time + 3600*5  #默认 5天过期
		token = lemon.encrypt.encryptUserToken(ar)

		cr.assign(token)	# {result: token}

		log = service.common.logging.createLog(cloudfish.base.AdminUserActionType.Login,request=req)
		log.result = 0
		log.user_role = r.role
		log.detail = str(req.META['REMOTE_ADDR'])
	except:
		traceback.print_exc()
		cr = webapi.FailCallReturn(ErrorDefs.InternalException).setCallBackJsonp(callback)
	log.save()
	return cr.httpResponse()