不正アクセスログ集計ツール⑤

いよいよ集計アプリをdjango WEBアプリに実装。その前に、WordpressのLoginHistoryプラグインのログも拝借するコードを追加

from datetime import datetime, timezone, timedelta, tzinfo
import MySQLdb

tz_jst = timezone(timedelta(hours=9), name='JST')

def get_wp_loginfails(st, ed, address=None):
    """
    wordpressのデータベースから認証履歴のレポートを返す(要:プラグイン User Login History)
    [引数] st : レポート対象の開始日時
        ed : レポート対象の終了日時
        address : レポート対象のIPアドレスオブジェクト(Noneの場合は全て)サブネット検索対応
    """
    user = '<USER>'
    passwd = '<passwork>'
    host = 'localhost'
    db='<dbname>'
    rows = None
    with MySQLdb.connect(user = user, passwd = passwd, host = host, db = db) as conn:
        with conn.cursor() as cur:
            (stat1, ed1) = (x.astimezone(timezone.utc).replace(tzinfo=None) for x in (st, ed))
            sql = 'select username, time_login, ip_address, login_status from wp_fa_user_logins'\
                ' where time_login > %s and time_login < %s' #and login_status = %s'
            cur.execute(sql,(stat1, ed1)) # <> 'login'
            rows = cur.fetchall()
    # rows 集計
    rows = rows if address is None else [row for row in rows if ipv4adrset(row[2]) == address]
    retlist = [
        {
            'name':row[0],
            'datetime':row[1].replace(tzinfo=timezone.utc).astimezone(tz_jst),
            'address':ipv4adrset(row[2]),
            'status':False if row[3]=='fail' else True,
            'source':'wordpress',
        } for row in rows]
    return retlist

なんやらいろいろゴチャゴチャやってるけど、とりあえずmysqlに貯め込んでいるログイン情報を指定期間分取り出してくる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)