#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""取证：CDN 上的工作台文件与本地差多少（含 iframe 依赖的 工具/ 子页）。"""
import hashlib
import io
import ssl
import urllib.parse
import urllib.request

CDN = 'https://bier-sales-d0gatbvlx288724e9-1458438710.tcloudbaseapp.com'
ROOT = '/Users/liuxinyuan/Desktop/Hermes输出-工作类'
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE

# (本地相对路径, CDN 路径, 关注的关键词)
TARGETS = [
    ('工具/index.html', '/workbench/index.html', b'visitStats'),
    ('工具/app.html', '/workbench/app.html', b'visitStats'),
    ('工具/活动录入.html', '/工具/' + urllib.parse.quote('活动录入.html'), b'ordRefQ'),
]


def get(u):
    r = urllib.request.urlopen(urllib.request.Request(u, headers={'User-Agent': 'probe'}),
                               timeout=20, context=ctx)
    return r.status, r.read()


print('%-22s %8s %8s %-11s %-11s %s' % ('文件', '本地B', '线上B', '本地md5', '线上md5', '结论'))
print('-' * 96)
for lo, cp, kw in TARGETS:
    lb = io.open('%s/%s' % (ROOT, lo), 'rb').read()
    try:
        st, rb = get(CDN + cp)
        same = hashlib.md5(lb).hexdigest() == hashlib.md5(rb).hexdigest()
        print('%-22s %8d %8d %-11s %-11s %s (HTTP %s, 关键词命中 本地%d/线上%d)'
              % (lo, len(lb), len(rb), hashlib.md5(lb).hexdigest()[:9],
                 hashlib.md5(rb).hexdigest()[:9],
                 '一致' if same else '❌需要部署', st, lb.count(kw), rb.count(kw)))
    except Exception as e:
        print('%-22s %8d %8s %-11s %-11s ❌线上取不到: %s'
              % (lo, len(lb), '-', hashlib.md5(lb).hexdigest()[:9], '-', str(e)[:40]))
