Пример #1
0
    def delete_user(self, request):
        username    = utils.get_reqvar(request, "username")

        userkey     = 'user_' + username
        if userkey not in self.tyrant:
            return errors.json_error_page(request, errors.USER_DOES_NOT_EXIST)

        del self.tyrant[userkey]

        return json_response(request, 0, "OK")
Пример #2
0
    def delete_user(self, request):
        username = utils.get_reqvar(request, "username")

        userkey = 'user_' + username
        if userkey not in self.tyrant:
            return errors.json_error_page(request, errors.USER_DOES_NOT_EXIST)

        del self.tyrant[userkey]

        return json_response(request, 0, "OK")
Пример #3
0
    def change_user_password(self, request):
        username    = utils.get_reqvar(request, "username")
        newpassword = utils.get_reqvar(request, "newpassword")

        userkey     = get_user_key(username)
        if userkey not in self.tyrant:
            return errors.json_error_page(request, errors.USER_DOES_NOT_EXIST)
        
        if not is_password_valid(newpassword):
            return errors.json_error_page(request, errors.PASSWORD_INVALID)

        userdata                = json_decode(self.tyrant[userkey])
        userdata['pwdreset']    = False
        userdata['password']    = newpassword
        self.tyrant[userkey]    = json_encode(userdata)

        return json_response(request, 0, "OK")
Пример #4
0
    def create_new_user(self, request):
        username    = utils.get_reqvar(request, "username")
        password    = utils.get_reqvar(request, "password")

        userkey     = get_user_key(username)
        if userkey in self.tyrant:
            return errors.json_error_page(request, errors.USER_ALREADY_EXISTS)
        
        if not is_password_valid(password):
            return errors.json_error_page(request, errors.PASSWORD_INVALID)

        self.tyrant[userkey] = json_encode({'username': username,
                                            'pwdreset': False,
                                            'password': password,
                                            'created': datetime.datetime.now()})

        return json_response(request, 0, "OK")
Пример #5
0
    def change_user_password(self, request):
        username = utils.get_reqvar(request, "username")
        newpassword = utils.get_reqvar(request, "newpassword")

        userkey = get_user_key(username)
        if userkey not in self.tyrant:
            return errors.json_error_page(request, errors.USER_DOES_NOT_EXIST)

        if not is_password_valid(newpassword):
            return errors.json_error_page(request, errors.PASSWORD_INVALID)

        userdata = json_decode(self.tyrant[userkey])
        userdata['pwdreset'] = False
        userdata['password'] = newpassword
        self.tyrant[userkey] = json_encode(userdata)

        return json_response(request, 0, "OK")
Пример #6
0
    def create_new_user(self, request):
        username = utils.get_reqvar(request, "username")
        password = utils.get_reqvar(request, "password")

        userkey = get_user_key(username)
        if userkey in self.tyrant:
            return errors.json_error_page(request, errors.USER_ALREADY_EXISTS)

        if not is_password_valid(password):
            return errors.json_error_page(request, errors.PASSWORD_INVALID)

        self.tyrant[userkey] = json_encode({
            'username': username,
            'pwdreset': False,
            'password': password,
            'created': datetime.datetime.now()
        })

        return json_response(request, 0, "OK")
Пример #7
0
    def render(self, request):
        """
        We handle GET or POST requests to this handler.  This will be of
        the form:
        /apps/<appname>/<device_token>/?args
        """
        parts = request.path.split("/")[2:]
        if len(parts) < 2:
            return errors.no_resource_error(request)

        appname     = parts[0]
        dev_token   = parts[1]
        username    = utils.get_reqvar(request, "username")
        content     = request.content.read()
        badge       = utils.get_reqvar(request, "badge")
        sound       = utils.get_reqvar(request, "sound")
        alert       = utils.get_reqvar(request, "alert")
        env         = utils.get_reqvar(request, "env")
        identifier  = utils.get_reqvar(request, "identifier")
        expiry      = utils.get_reqvar(request, "expiry")

        if content:
            payload = json_decode(content)
            if 'aps' not in payload:
                payload['aps'] = {}
        else:
            payload = {'aps': {}}

        if badge:
            payload['aps']['badge'] = int(badge)
        if sound:
            payload['aps']['sound'] = sound
        if alert:
            payload['aps']['alert'] = alert

        logging.debug("Payload: " + json_encode(payload))

        appkey = "%s$%s$%s" % (env, username, appname)
        self.apns_daemon.sendMessage(appname, dev_token, json_encode(payload), identifier, expiry)

        return json_response(request, 0, "OK")
Пример #8
0
    def render(self, request):
        """
        We handle GET or POST requests to this handler.  This will be of
        the form:
        /apps/<appname>/<device_token>/?args
        """
        parts = request.path.split("/")[2:]
        if len(parts) < 2:
            return errors.no_resource_error(request)

        appname = parts[0]
        dev_token = parts[1]
        username = utils.get_reqvar(request, "username")
        content = request.content.read()
        badge = utils.get_reqvar(request, "badge")
        sound = utils.get_reqvar(request, "sound")
        alert = utils.get_reqvar(request, "alert")
        env = utils.get_reqvar(request, "env")
        identifier = utils.get_reqvar(request, "identifier")
        expiry = utils.get_reqvar(request, "expiry")

        if content:
            payload = json_decode(content)
            if "aps" not in payload:
                payload["aps"] = {}
        else:
            payload = {"aps": {}}

        if badge:
            payload["aps"]["badge"] = int(badge)
        if sound:
            payload["aps"]["sound"] = sound
        if alert:
            payload["aps"]["alert"] = alert

        logging.debug("Payload: " + json_encode(payload))

        appkey = "%s$%s$%s" % (env, username, appname)
        self.apns_daemon.sendMessage(appname, dev_token, json_encode(payload), identifier, expiry)

        return json_response(request, 0, "OK")
Пример #9
0
                                           'prod_certfile': "",
                                           'dev_pkeypasswd': "",
                                           'dev_certpasswd': "",
                                           'prod_pkeypasswd': "",
                                           'prod_certpasswd': "",
                                           'created': datetime.datetime.now()})

        # create the folder for the app so we have 
        # certificates and other things in there
        # <cert_folder>/<alphabet>/<appkey>/
        try:
            self.create_app_cert_folder(username, appname)
        except OSError, e:
            return errors.json_error_page(request, errors.OS_ERROR, str(e))

        return json_response(request, 0, "OK")

    @decos.require_parameters("username", "appname")
    def delete_app(self, request):
        """
        Deletes an app.
        """
        username = utils.get_reqvar(request, "username")
        appname = utils.get_reqvar(request, "appname")
        
        appkey      = get_app_key(username, appname)
        if appkey not in self.tyrant:
            return errors.json_error_page(request, errors.APP_DOES_NOT_EXIST)

        del self.tyrant[appkey]
Пример #10
0
            'dev_pkeypasswd': "",
            'dev_certpasswd': "",
            'prod_pkeypasswd': "",
            'prod_certpasswd': "",
            'created': datetime.datetime.now()
        })

        # create the folder for the app so we have
        # certificates and other things in there
        # <cert_folder>/<alphabet>/<appkey>/
        try:
            self.create_app_cert_folder(username, appname)
        except OSError, e:
            return errors.json_error_page(request, errors.OS_ERROR, str(e))

        return json_response(request, 0, "OK")

    @decos.require_parameters("username", "appname")
    def delete_app(self, request):
        """
        Deletes an app.
        """
        username = utils.get_reqvar(request, "username")
        appname = utils.get_reqvar(request, "appname")

        appkey = get_app_key(username, appname)
        if appkey not in self.tyrant:
            return errors.json_error_page(request, errors.APP_DOES_NOT_EXIST)

        del self.tyrant[appkey]
Пример #11
0
def json_error_page(request, error_code, result = None, status = 200):
    if not result:
        result = ERROR_STRINGS[-error_code]
    return json.json_response(request, error_code, result, status)