def reject_transaction(self): """ rejects a transaction. needs the mandatory url query parameters: * transactionid: unique id for the transaction * signature: signature for the rejection """ try: param = self.request_params.copy() # -------------------------------------------------------------- -- # check the parameters if 'signature' not in param: raise ParameterError("Missing parameter: 'signature'!") if 'transactionid' not in param: raise ParameterError("Missing parameter: 'transactionid'!") # -------------------------------------------------------------- -- # start the processing passw = {'reject': param['signature']} transid = param['transactionid'] vh = ValidationHandler() ok, _opt = vh.check_by_transactionid(transid=transid, passw=passw, options=param) # -------------------------------------------------------------- -- # finish the result if 'serial' in _opt: g.audit['serial'] = _opt['serial'] if 'token_type' in _opt: g.audit['token_type'] = _opt['token_type'] g.audit['info'] = 'reject transaction: %r' % ok g.audit['success'] = ok db.session.commit() return sendResult(response, ok) except Exception as exx: log.exception("validate/reject_transaction failed: %r" % exx) g.audit['info'] = "%r" % exx db.session.rollback() return sendResult(response, False, 0)
def check_t(self): param = {} value = {} ok = False opt = {} try: param.update(request.params) if 'pass' not in param: raise ParameterError("Missing parameter: 'pass'") passw = param['pass'] transid = param.get('state', None) if transid is not None: param['transactionid'] = transid del param['state'] if transid is None: transid = param.get('transactionid', None) if transid is None: raise Exception("missing parameter: state or transactionid!") vh = ValidationHandler() (ok, opt) = vh.check_by_transactionid(transid=transid, passw=passw, options=param) value['value'] = ok value['failcount'] = int(opt.get('failcount', 0)) c.audit['success'] = ok Session.commit() qr = param.get('qr', None) if qr and opt and 'message' in opt: try: dataobj = opt.get('message') param['alt'] = "%s" % opt if 'transactionid' in opt: param['transactionid'] = opt['transactionid'] return sendQRImageResult(response, dataobj, param) except Exception as exc: log.warning("failed to send QRImage: %r " % exc) return sendQRImageResult(response, opt, param) else: return sendResult(response, value, 1, opt=opt) except Exception as exx: log.exception("[check_t] validate/check_t failed: %r" % exx) c.audit['info'] = unicode(exx) Session.rollback() return sendResult(response, False, 0) finally: Session.close()
def accept_transaction(self): """ confirms a transaction. needs the mandatory url query parameters: * transactionid: unique id for the transaction * signature: signature for the confirmation """ try: param = self.request_params.copy() # -------------------------------------------------------------- -- # check the parameters if "signature" not in param: raise ParameterError("Missing parameter: 'signature'!") if "transactionid" not in param: raise ParameterError("Missing parameter: 'transactionid'!") # -------------------------------------------------------------- -- # start the processing passw = {"accept": param["signature"]} transid = param["transactionid"] vh = ValidationHandler() ok, _opt = vh.check_by_transactionid( transid=transid, passw=passw, options=param ) # -------------------------------------------------------------- -- # finish the result if "serial" in _opt: g.audit["serial"] = _opt["serial"] if "token_type" in _opt: g.audit["token_type"] = _opt["token_type"] g.audit["info"] = "accept transaction: %r" % ok g.audit["success"] = ok db.session.commit() return sendResult(response, ok) except Exception as exx: log.error("validate/accept_transaction failed: %r", exx) g.audit["info"] = "%r" % exx db.session.rollback() return sendResult(response, False, 0)
def accept_transaction(self): """ confirms a transaction. needs the mandatory url query parameters: * transactionid: unique id for the transaction * signature: signature for the confirmation """ try: param = {} param.update(request.params) # -------------------------------------------------------------- -- # check the parameters if 'signature' not in param: raise ParameterError("Missing parameter: 'signature'!") if 'transactionid' not in param: raise ParameterError("Missing parameter: 'transactionid'!") # -------------------------------------------------------------- -- # start the processing passw = {'accept': param['signature']} transid = param['transactionid'] vh = ValidationHandler() ok, _opt = vh.check_by_transactionid(transid=transid, passw=passw, options=param) # -------------------------------------------------------------- -- # finish the result c.audit['info'] = 'accept transaction: %r' % ok c.audit['success'] = ok Session.commit() return sendResult(response, ok) except Exception as exx: log.exception("validate/accept_transaction failed: %r" % exx) c.audit['info'] = "%r" % exx Session.rollback() return sendResult(response, False, 0) finally: Session.close()
def check_t(self): param = self.request_params.copy() value = {} ok = False opt = {} try: if 'pass' not in param: raise ParameterError("Missing parameter: 'pass'") passw = param['pass'] transid = param.get('state', None) if transid is not None: param['transactionid'] = transid del param['state'] if transid is None: transid = param.get('transactionid', None) if transid is None: raise Exception("missing parameter: state or transactionid!") vh = ValidationHandler() (ok, opt) = vh.check_by_transactionid(transid=transid, passw=passw, options=param) value['value'] = ok value['failcount'] = int(opt.get('failcount', 0)) c.audit['success'] = ok Session.commit() qr = param.get('qr', None) if qr and opt and 'message' in opt: try: dataobj = opt.get('message') param['alt'] = "%s" % opt if 'transactionid' in opt: param['transactionid'] = opt['transactionid'] return sendQRImageResult(response, dataobj, param) except Exception as exc: log.warning("failed to send QRImage: %r " % exc) return sendQRImageResult(response, opt, param) else: return sendResult(response, value, 1, opt=opt) except Exception as exx: log.exception("[check_t] validate/check_t failed: %r" % exx) c.audit['info'] = unicode(exx) Session.rollback() return sendResult(response, False, 0) finally: Session.close()
def check_t(self): param = self.request_params.copy() value = {} ok = False opt = {} try: if "pass" not in param: raise ParameterError("Missing parameter: 'pass'") passw = param["pass"] transid = param.get("state", None) if transid is not None: param["transactionid"] = transid del param["state"] if transid is None: transid = param.get("transactionid", None) if transid is None: raise Exception("missing parameter: state or transactionid!") vh = ValidationHandler() (ok, opt) = vh.check_by_transactionid( transid=transid, passw=passw, options=param ) value["value"] = ok value["failcount"] = int(opt.get("failcount", 0)) g.audit["success"] = ok db.session.commit() qr = param.get("qr", None) if qr and opt and "message" in opt: try: dataobj = opt.get("message") param["alt"] = "%s" % opt if "transactionid" in opt: param["transactionid"] = opt["transactionid"] return sendQRImageResult(response, dataobj, param) except Exception as exc: log.warning("failed to send QRImage: %r ", exc) return sendQRImageResult(response, opt, param) else: return sendResult(response, value, 1, opt=opt) except Exception as exx: log.error("[check_t] validate/check_t failed: %r", exx) g.audit["info"] = str(exx) db.session.rollback() return sendResult(response, False, 0)
def reject_transaction(self): """ rejects a transaction. needs the mandatory url query parameters: * transactionid: unique id for the transaction * signature: signature for the rejection """ try: param = self.request_params.copy() # -------------------------------------------------------------- -- # check the parameters if 'signature' not in param: raise ParameterError("Missing parameter: 'signature'!") if 'transactionid' not in param: raise ParameterError("Missing parameter: 'transactionid'!") # -------------------------------------------------------------- -- # start the processing passw = {'reject': param['signature']} transid = param['transactionid'] vh = ValidationHandler() ok, _opt = vh.check_by_transactionid(transid=transid, passw=passw, options=param) # -------------------------------------------------------------- -- # finish the result if 'serial' in _opt: c.audit['serial'] = _opt['serial'] if 'token_type' in _opt: c.audit['token_type'] = _opt['token_type'] c.audit['info'] = 'reject transaction: %r' % ok c.audit['success'] = ok Session.commit() return sendResult(response, ok) except Exception as exx: log.exception("validate/reject_transaction failed: %r" % exx) c.audit['info'] = "%r" % exx Session.rollback() return sendResult(response, False, 0) finally: Session.close()
def confirm_transaction(self): """ verfiy the transaction - the next verification step in a multifactor authentication. * param action: accept or deny * param signature: signature of the accepted or denied transaction * param: transactionid * : the continuation id of the authorisation / authentication processing """ try: param = {} param.update(request.params) # -------------------------------------------------------------- -- # check the parameters if 'signature' not in param: raise ParameterError("Missing parameter: 'signature'!") if 'transactionid' not in param: raise ParameterError("Missing parameter: 'transactionid'!") if 'action' not in param: raise ParameterError("Missing parameter: 'action'!") if param['action'] not in ['accept', 'reject']: raise ParameterError("Missing action parameter value:" " 'accept' or 'reject'!") # -------------------------------------------------------------- -- # start the processing action = param['action'] passw = {action: param['signature']} transid = param['transactionid'] vh = ValidationHandler() ok, _opt = vh.check_by_transactionid(transid=transid, passw=passw, options=param) # -------------------------------------------------------------- -- # finish the result value = {action: ok} c.audit['info'] = '%s transaction: %r' % (action, ok) c.audit['success'] = ok Session.commit() return sendResult(response, value) except Exception as exx: log.exception("validate/check_transaction failed: %r" % exx) c.audit['info'] = "%r" % exx Session.rollback() return sendResult(response, False, 0) finally: Session.close()