Beispiel #1
0
def add_data():
    if request.method == 'POST':
        message = json.loads(request.get_data(as_text=True))
        email_list = message['email']
        token = message['token']
        result = confirm_admin_token(token)  # 没有每个人唯一的Key
    response = Response()
    response.headers['Content-Type'] = 'application/json'
    response.headers['Access-Control-Allow-Origin'] = '*'
    response.headers['Access-Control-Allow-Headers'] = '*'
    if request.method == 'OPTIONS':
        return response
    return_json = {'code': 1, 'message': '网络异常', 'data': None}
    response.data = return_msg(return_json)
    if result == False:
        return response
    for email in email_list:
        if check_email(email) == False:
            logger.info('invalid email %s' % email)
            continue
        try:
            insert_people(email, '')
        except KeyError:
            pass
        except Exception as e:
            logger.info(e)
    return_json = {
        'code': 0,
        'message': 'update emails successfully',
        'data': None
    }
    response.data = return_msg(return_json)
    return response
Beispiel #2
0
def save_image():
    if request.method == 'POST':
        # get the token from the header
        token = request.headers.get('token', '')
        result = confirm_admin_token(token)  # 没有每个人唯一的Key
    response = Response()
    response.headers['Content-Type'] = 'application/json'
    response.headers['Access-Control-Allow-Origin'] = '*'
    response.headers['Access-Control-Allow-Headers'] = '*'
    if request.method == 'OPTIONS':
        return response
    return_json = {'code': 1, 'message': '网络异常', 'data': None}
    response.data = return_msg(return_json)
    # get the image file path
    image_file = request.files.get('template', False)
    # Todo: security check of image_path
    if result == False or image_file == False:
        return response
    # overwrite pic.jpg
    basedir = os.path.dirname(__file__)
    try:
        image_file.save(os.path.join(basedir, 'pic.jpg'))
    except Exception as e:
        logger.info(e)
    return_json = {'code': 0, 'message': 'upload successfully', 'data': None}
    response.data = return_msg(return_json)
    return response
Beispiel #3
0
def send_email(to_email, subject, content, attachment=None):
    email_json = get_email_config()
    # 链接邮箱服务器
    yag = yagmail.SMTP(user=email_json["username"],
                       password=email_json["password"],
                       host=email_json["server_address"],
                       port=email_json["smtp_port"],
                       smtp_ssl=email_json["smtp_ssl"],
                       smtp_starttls=email_json["smtp_ssl"]
                       and email_json["skip_auth"],
                       smtp_skip_login=email_json["skip_auth"])
    # 邮箱正文
    # contents = ['您好,附件中有您的证书']
    logger.info("send to " + to_email + '; with subject: ' + subject)
    # 发送邮件
    yag.send(to_email, subject, content, attachment)
Beispiel #4
0
def update_config():
    if request.method == 'POST':
        message = json.loads(request.get_data(as_text=True))
        token = message["token"]
        result = confirm_admin_token(token)  # 没有每个人唯一的Key
    response = Response()
    response.headers['Content-Type'] = 'application/json'
    response.headers['Access-Control-Allow-Origin'] = '*'
    response.headers['Access-Control-Allow-Headers'] = '*'
    if request.method == 'OPTIONS':
        return response
    return_json = {'code': 1, 'message': '网络异常', 'data': None}
    response.data = return_msg(return_json)
    if result == False:
        return response
    try:
        referer = request.headers.get('Referer', None)
        if referer is not None:
            referer = referer.replace('admin', 'index')
            message['frontend_url'] = referer
        if message.get('username'):  # email admin address
            message['server_address'] = get_smtp_url(
                message.get('username'))  # email smtp address
        orgconfig = utils.get_org_config()
        emailconfig = utils.get_email_config()
        for domain in message:
            if domain == "token" or len(str(message[domain])) == 0:
                continue
            if domain in orgconfig:
                orgconfig[domain] = message[domain]
            elif domain in emailconfig:
                emailconfig[domain] = message[domain]
        utils.update_org_config(orgconfig)
        utils.update_email_config(emailconfig)
    except Exception as e:
        logger.info(e)
    return_json = {
        'code': 0,
        'message': 'update config successfully',
        'data': None
    }
    response.data = return_msg(return_json)
    return response
Beispiel #5
0
def send_email():
    response = Response()
    response.headers['Content-Type'] = 'application/json'
    response.headers['Access-Control-Allow-Origin'] = '*'
    response.headers['Access-Control-Allow-Headers'] = '*'
    if request.method == 'OPTIONS':
        return response
    elif request.method == 'POST':
        message = json.loads(request.get_data(as_text=True))
        name = message.get('name')
        token = message.get('token', '')
        if name is None:
            return response_json(code=1, message='Name is required')
        result = confirm_token(token)
        if result is False:
            return response_json(
                code=2,
                message='Token is not available, plz check your latest email')
        email = result['email']
        if is_token_unused(token):  # 先确定下是不是志愿者列表中的token 并且是否注册过 没问题的话开始做图片
            update_status(email, 2)
            update_name(email, name)
            try:
                wc.write_to_pic(name, email, token)
                return_json = {
                    'code': 0,
                    'message':
                    'You have submitted your information successful, the certificate is sent to you,  please check your email',
                    'data': None
                }
                response.data = return_msg(return_json)
                return response
            except Exception as e:  # 发送邮件或者创建图片错误 可能是邮件有问题
                logger.info(e)
                return response_json(4, str(e))
        else:
            return response_json(
                3,
                'You have submitted your information successful, please check your email'
            )
Beispiel #6
0
def insert_people(email, name, number='', token=None):
    db = TinyDB("data.json")
    People = Query()
    exist_list = db.search(People.email == email)
    if len(exist_list):
        logger.info('Duplicate entry for key email %s' % email)
        db.close()
        raise EmailDuplicateException()
    if token:
        logger.warning(
            'It is not safe to specify the token value. '
            'Just let it be None and it will be generated automatically')
    else:
        token = gen_token(email)
    db.insert({
        "name": name,
        "email": email,
        "token": token,
        "number": number,
        "status": 0
    })
    db.close()
Beispiel #7
0
def send_email():
    if request.method == 'POST':
        message = json.loads(request.get_data(as_text=True))
        name = message['name']
        token = message['token']
        result = confirm_token(token)  # 没有每个人唯一的Key
    response = Response()
    response.headers['Content-Type'] = 'application/json'
    response.headers['Access-Control-Allow-Origin'] = '*'
    response.headers['Access-Control-Allow-Headers'] = '*'
    if request.method == 'OPTIONS':
        return response
    return_json = {'code': 1, 'message': '网络异常', 'data': None}
    response.data = return_msg(return_json)
    if result == False:
        return response
    email = result['email']
    if is_token_unused(token):  # 先确定下是不是志愿者列表中的token 并且是否注册过 没问题的话开始做图片
        update_status(email, 2)
        update_name(email, name)
        try:
            wc.write_to_pic(name, email, token)
            return_json = {
                'code': 0,
                'message':
                'You have submitted your information successful, the certificate is sent to you,  please check your email',
                'data': None
            }
            response.data = return_msg(return_json)
            return response
        except Exception as e:  #发送邮件或者创建图片错误 可能是邮件有问题
            logger.info(e)
            return response
    else:
        response.data = return_msg(return_json)
        return response  # Key被用过了
def send_email(to_email, subject, content, attachment=None):
    email_json = get_email_config()
    # 链接邮箱服务器
    yag = yagmail.SMTP(user=email_json["username"],
                       password=email_json["password"],
                       host=email_json["server_address"],
                       port=email_json["smtp_port"],
                       smtp_ssl=email_json["smtp_ssl"],
                       smtp_starttls=email_json["smtp_ssl"] and email_json["skip_auth"],
                       smtp_skip_login=email_json["skip_auth"])
    # 邮箱正文
    # contents = ['您好,附件中有您的证书']
    logger.info("send to " + to_email, 'with subject', subject)
    # 发送邮件
    try:
        yag.send(to_email, subject, content, attachment)
    except Exception as e:
        logger.info('send email to %s failed; Reason:' % to_email)
        logger.info(e)
        return False
    return True
Beispiel #9
0
 def start(self):
     if self.finished():
         self.job = threading.Thread(target=self.send_notice_email)
         logger.info('send email job started')
         self.job.start()
         self.is_finished = False