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
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
#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
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")
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:
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):
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)
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]