예제 #1
0
def send_email(subject=str, to=str, cc='', body='', is_html=True):

    SMTP_HOST = app.config['SMTP_HOST']
    SMTP_USERNAME = app.config['SMTP_USERNAME']
    SMTP_PASSWORD = app.config['SMTP_PASSWORD']
    SMTP_PORT = app.config['SMTP_PORT']
    SMTP_TLS = app.config['SMTP_TLS']
    SMTP_FROM_ADDRESS = app.config['SMTP_FROM_ADDRESS']
    SMTP_LOGIN_REQUIRED = app.config['SMTP_LOGIN_REQUIRED']
    SMTP_IGNORE_CERT = app.config['SMTP_IGNORE_CERT']

    logger = logging.getLogger('accounts-helpers')

    logger.info(
        "Connection details: Host: %s Port: %s TLS: %s Ignore Cert: %s Login Required: %s as %s"
        % (SMTP_HOST, SMTP_PORT, SMTP_TLS, SMTP_IGNORE_CERT,
           SMTP_LOGIN_REQUIRED, SMTP_USERNAME))
    logger.info("from: %s subject: %s to: %s  body: %s" %
                (SMTP_FROM_ADDRESS, subject, to, body))

    # TODO, currently doesn't work because of ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1045)
    # In addition, the certificate isn't properly ignored.
    #if SMTP_SSL:
    #    if SMTP_IGNORE_CERT:
    #        context = ssl._create_unverified_context(protocol=ssl.PROTOCOL_TLSv1_1)
    #        context.check_hostname = False
    #        context.verify_mode = ssl.CERT_NONE
    #        s = smtplib.SMTP_SSL(host=SMTP_HOST, port=SMTP_PORT, context=context)
    #    else:
    #        s = smtplib.SMTP_SSL(host=SMTP_HOST, port=SMTP_PORT)
    #else:
    #    s = smtplib.SMTP(host=SMTP_HOST, port=SMTP_PORT)

    s = smtplib.SMTP(host=SMTP_HOST, port=SMTP_PORT)

    try:
        s.ehlo()
    except Exception as e:
        logger.error("SMTP EHLO Error caught: %s" % e)
        return False

    if SMTP_TLS:

        # TODO, Not sure what's going on here. Even if we give a bogus servername, starttls still connects without warning.
        # Basically, SMTP_IGNORE_CERT fails insecurely and will always send the message.
        if SMTP_IGNORE_CERT:
            context = ssl._create_unverified_context()
            context.check_hostname = False
            context.verify_mode = ssl.CERT_NONE

        try:
            s.starttls()
        except Exception as e:
            logger.error("SMTP STARTTLS Error caught: %s" % e)
            return False

    if SMTP_LOGIN_REQUIRED:
        try:
            s.login(SMTP_USERNAME, SMTP_PASSWORD)
        except Exception as e:
            logger.error("SMTP Login Error caught: %s" % e)
            return False

    envelope = MIMEMultipart()

    envelope['From'] = SMTP_FROM_ADDRESS
    envelope['To'] = to
    envelope['Subject'] = subject

    if is_html:
        envelope.attach(MIMEText(body, 'html'))
    else:
        envelope.attach(MIMEText(body, 'plain'))

    try:
        s.send_message(envelope)
        return True
    except Exception as e:
        logger.error("SMTP Error caught: %s" % e)
        return False
예제 #2
0
from tasks_utils.settings import RETRY_REQUESTS_EXCEPTIONS
from tasks_utils.requests import mount_retries_for_request, get_exponential_request_retry_countdown
from treasury.exceptions import DocumentServiceForbiddenError, DocumentServiceError, ApiServiceError
from environment_settings import (
    API_VERSION, DS_HOST, DS_USER, DS_PASSWORD, CONNECT_TIMEOUT, READ_TIMEOUT,
)
from environment_settings import API_HOST, API_VERSION, API_TOKEN
from app.logging import getLogger
from treasury.settings import (
    PUT_TRANSACTION_SUCCESSFUL_STATUS,
    ATTACH_DOCUMENT_TO_TRANSACTION_SUCCESSFUL_STATUS,
    PUT_TRANSACTION_FAILED_REQUESTS_EXCEPTIONS,
    DOCUMENT_ATTACH_FAILED_REQUESTS_EXCEPTIONS,
)

logger = getLogger()


def save_transaction_xml(task, transactions_ids, source):
    if len(transactions_ids) > 1:
        file_name = f"Transaction_{transactions_ids[0]}_and_{len(transactions_ids)-1}_others.xml"
    else:
        file_name = f"Transaction_{transactions_ids[0]}.xml"
    document = ds_upload(
        task,
        file_name=file_name,
        file_content=source
    )
    return document

예제 #3
0
#Short, useful function that may or may not deserve their own files.
from app import app, logging
from config import Config
from ldap3 import Server, Connection, SUBTREE, MODIFY_ADD, MODIFY_REPLACE
from itsdangerous import URLSafeTimedSerializer
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib
import ssl
import re

logging.getLogger('accounts-helpers').addHandler(logging.StreamHandler())
logger = logging.getLogger('accounts-helpers')


def AD_Connect_SSL():
    servname = app.config['LDAP_HOST']
    po = app.config['LDAP_PORT']
    dn = app.config['LDAP_BIND_DN']
    pw = app.config['LDAP_BIND_PW']
    server = Server(servname, port=int(po), use_ssl=True)
    return Connection(server,
                      user=dn,
                      password=pw,
                      auto_bind=True,
                      return_empty_attributes=True)


def check_exists_or_archived(email):
    exists = False
    archived = False
예제 #4
0
                first, len(added_pubs), added_pubs[-2:]))

        number_added += len(added_pubs)

        logger.info(u"loop done in {} seconds".format(elapsed(start_time, 2)))

    return number_added


def date_str(s):
    return datetime.datetime.strptime(s, '%Y-%m-%d').date()


if __name__ == "__main__":
    if os.getenv('OADOI_LOG_SQL'):
        logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO)
        db.session.configure()

    parser = argparse.ArgumentParser(description="Run stuff.")

    function = get_dois_and_data_from_crossref

    parser.add_argument('--first', nargs="?", type=date_str, help="first filename to process (example: --first 2006-01-01)")
    parser.add_argument('--last', nargs="?", type=date_str, help="last filename to process (example: --last 2006-01-01)")

    parser.add_argument('--query_doi', nargs="?", type=str, help="pull in one doi")

    parser.add_argument('--today', action="store_true", default=False, help="use if you want to pull in crossref records from last 2 days")
    parser.add_argument('--week', action="store_true", default=False, help="use if you want to pull in crossref records from last 7 days")

    parser.add_argument('--chunk_size', nargs="?", type=int, default=1000, help="how many docs to put in each POST request")
예제 #5
0
파일: api.py 프로젝트: bugparty/campuslbs
from app import app, db_session,logging
from app.models import User,Group,Authority,Session
import re
from flask import render_template,request
from flask.views import MethodView
from flask import jsonify
import json
import datetime
from sqlalchemy.exc import IntegrityError
from app.apperror import *
app.config['SECRET_KEY'] = 'don`t tell anybody,sdfsdfsdfzssdfsdfewwefwe'




logger = logging.getLogger('app.view.api')
def query_email(email):
    try:
        r = db_session.query(User).filter_by(email =email).all()
    except:
        db_session.rollback()
        r = None
    db_session.close()
    return r

def need_auth(role):
        def _need_auth(func):
            def __need_auth(*args,**kw):
                try:
                    sid = request.args['token']
                except:
예제 #6
0
import os
import hashlib
from influxdb import InfluxDBClient
import datetime
import dateutil
from pytz import timezone
from functools import wraps
from app import logging

logger = logging.getLogger(__name__)

from app import stops

from threading import Lock

connection = None
insert_lock = None

import os

MONITORING_HOST = os.environ.get("MONITORING_HOST")
MONITORING_PORT = os.environ.get("MONITORING_PORT")
MONITORING_USER = os.environ.get("MONITORING_USER")
MONITORING_PASS = os.environ.get("MONITORING_PASS")
MONITORING_DATABASE_NAME = os.environ.get("MONITORING_DATABASE_NAME")


def check_connection(f):
    """ Checks if connection is created. """
    @wraps(f)
    def wrapper(*args, **kwargs):
예제 #7
0
from app import config as config
from app.bot import bot_initialize as bot_initialize
from app.bot import bot_configuration as bot_configuration
from app.remote.postgresql import Psql as psql
from app.remote.redis import Redis as redis
from telegram.ext import Updater
import logging
import asyncio
import time

if __name__ == "__main__":
    try:
        ignoredModulesLoggers = []
        for logger in logging.Logger.manager.loggerDict:
            ignoredModulesLoggers.extend([logger])
            logging.getLogger(logger).setLevel(logging.WARNING)
        if config.developerMode:
            logging.debug(
                "Игнорирование логирования уровня INFO от следующих модулей: "
                + str(ignoredModulesLoggers) + '.')

        asyncio.get_event_loop().run_until_complete(psql.create_tables())
        asyncio.get_event_loop().run_until_complete(psql.connection())
        asyncio.get_event_loop().run_until_complete(redis.connection())

        logging.debug("Конфигурация Бота: " + str(bot_configuration()))
        bot_updater = bot_initialize()

        try:
            while True:
                time.sleep(0.1)
예제 #8
0
from apscheduler.schedulers.background import BackgroundScheduler
from app import app,db,logging
from config import Config
from app.models import EnrollFile, EmailValidator
from datetime import date,timedelta,datetime
from sqlalchemy import update
import re
import string

logging.getLogger('accounts-cron').addHandler(logging.StreamHandler())
logger = logging.getLogger('accounts-cron')

app.config.from_object(Config)

def EnrollLoad():
    enroll_file = app.config['ENROLL_FILE']

    enroll_file_uins = []

    entry_entered = 0
    entry_removed = 0
    entry_updated = 0
    entry_skipped = 0

    logger.info('Starting import at: %s' % datetime.now())
    in_f = open(enroll_file, 'r')

    for line in in_f:
        user_info = line.split(':')
        reg_class=user_info[0]
        full_name=user_info[2]