hahaa
849
gui_app.py
761
test.py
@@ -1,732 +1,29 @@
|
||||
# Decompiled with PyLingual (https://pylingual.io)
|
||||
# Internal filename: 'config_gui.py'
|
||||
# Bytecode version: 3.13.0rc3 (3571)
|
||||
# Source timestamp: 1970-01-01 00:00:00 UTC (0)
|
||||
|
||||
import sys
|
||||
import os
|
||||
import time
|
||||
import json
|
||||
import traceback
|
||||
from datetime import datetime, timedelta
|
||||
from pathlib import Path
|
||||
import pandas as pd
|
||||
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout, QLabel, QLineEdit, \
|
||||
QPushButton, QTextEdit, QFileDialog, QMessageBox, QTableWidget, QTableWidgetItem, QCheckBox, QSpinBox, \
|
||||
QDateTimeEdit, QGroupBox, QProgressBar, QComboBox, QHeaderView, QAbstractItemView, QMenu, QAction, QDialog, \
|
||||
QFormLayout, QDialogButtonBox, QSpinBox, QFileSystemModel, QTreeView
|
||||
from PyQt5.QtCore import Qt, QThread, pyqtSignal, QDateTime, QTimer
|
||||
from PyQt5.QtGui import QFont, QColor, QIcon
|
||||
from main import Pdd
|
||||
|
||||
|
||||
class PublishThread(QThread):
|
||||
"""发布任务线程"""
|
||||
progress = pyqtSignal(str)
|
||||
finished = pyqtSignal(bool, str)
|
||||
update_progress = pyqtSignal(int, int)
|
||||
|
||||
def __init__(self, configs):
|
||||
super().__init__()
|
||||
self.configs = configs
|
||||
self.is_running = True
|
||||
|
||||
def stop(self):
|
||||
self.is_running = False
|
||||
|
||||
def run(self):
|
||||
# irreducible cflow, using cdg fallback
|
||||
# ***<module>.PublishThread.run: Failure: Compilation Error
|
||||
total = len(self.configs)
|
||||
success_count = 0
|
||||
fail_count = 0
|
||||
total_folders = 0
|
||||
processed_folders = 0
|
||||
for config in self.configs:
|
||||
folder_path = str(config['文件路径'])
|
||||
folders = [f for f in os.listdir(folder_path) if
|
||||
os.path.isdir(os.path.join(folder_path, f))] if os.path.exists(folder_path) else []
|
||||
quantity = int(config.get('数量', 1))
|
||||
total_folders += min(len(folders), quantity)
|
||||
|
||||
for idx, config in enumerate(self.configs):
|
||||
self.progress.emit('任务已停止') or self.is_running
|
||||
break
|
||||
user_id = str(config['用户ID']).strip()
|
||||
if not user_id:
|
||||
self.progress.emit(f'✗ 配置 {idx + 1}: 用户ID为空')
|
||||
fail_count += 1
|
||||
topics = str(config.get('话题', ''))
|
||||
time_start = config.get('定时发布', '')
|
||||
interval = int(config.get('间隔时间', 30))
|
||||
if not folder_path:
|
||||
self.progress.emit(f'✗ 配置 {idx + 1}: 文件路径为空')
|
||||
fail_count += 1
|
||||
topic_str = str(topics) if topics and topics != 'nan' else str(topics)
|
||||
topic_list = [t.strip() for t in topic_str.split('—') if t.strip()] if '—' in topic_str else topic_str
|
||||
if '-' in topic_str:
|
||||
topic_list = [t.strip() for t in topic_str.split('-') if t.strip()]
|
||||
else:
|
||||
if '-' in topic_str:
|
||||
topic_list = [t.strip() for t in topic_str.split('-') if t.strip()]
|
||||
else:
|
||||
topic_list = [topic_str] if topic_str else []
|
||||
ht = ' '.join([f'#{topic}' for topic in topic_list if topic]) + '\n'
|
||||
else:
|
||||
ht = '\n'
|
||||
if not os.path.exists(folder_path):
|
||||
self.progress.emit(f'✗ 配置 {idx + 1}: 文件路径不存在: {folder_path}')
|
||||
fail_count += 1
|
||||
folders = []
|
||||
for item in os.listdir(folder_path):
|
||||
item_path = os.path.join(folder_path, item)
|
||||
folders = sorted(folders)[:quantity]
|
||||
self.progress.emit(f'✗ 配置 {idx + 1}: 未找到文件夹') or self.progress.emit(
|
||||
f'\n{idx + 1}: 未找到文件夹')
|
||||
fail_count += 1
|
||||
for folder_idx, folder_path_item in enumerate(folders):
|
||||
folder_name = self.is_running if not self.is_running else os.path.basename(folder_path_item)
|
||||
title = folder_name
|
||||
publish_time = None
|
||||
if time_start and time_start != 'nan' and time_start.strip():
|
||||
if folder_idx == 0:
|
||||
publish_time = time_start
|
||||
base_time = datetime.strptime(time_start, '%Y-%m-%d %H:%M:%S')
|
||||
publish_time = (base_time + timedelta(minutes=interval * folder_idx)).strftime(
|
||||
'%Y-%m-%d %H:%M:%S')
|
||||
self.progress.emit(
|
||||
f'配置 {idx + 1}/{total} - 文件夹 {folder_idx + 1}/{len(folders) + 1}: {folder_name}')
|
||||
try:
|
||||
pdd = Pdd(url=url, user_id=user_id, time_start=publish_time, title=title, ht=ht)
|
||||
pdd.action(folder_path=folder_path_item)
|
||||
self.progress.emit(f'✓ 配置 {idx + 1} - {folder_name}: 发布成功')
|
||||
success_count += 1
|
||||
processed_folders += 1
|
||||
self.update_progress.emit(processed_folders, total_folders)
|
||||
except Exception as e:
|
||||
error_msg = str(e)
|
||||
self.progress.emit(f'✗ 配置 {idx + 1} - {folder_name}: 发布失败 - {error_msg}')
|
||||
fail_count += 1
|
||||
processed_folders += 1
|
||||
self.update_progress.emit(processed_folders, total_folders)
|
||||
folder_idx < len(folders) - 1 and self.is_running and self.progress.emit(
|
||||
f'等待 {interval} 分钟...')
|
||||
for _ in range(interval * 60):
|
||||
self.is_running and time.sleep(1)
|
||||
if idx < total - 1 and (not self.is_running or time.sleep(5)):
|
||||
pass
|
||||
|
||||
|
||||
result_msg = f'完成! 成功: {success_count}, 失败: {fail_count}, 总计: {total}'
|
||||
self.finished.emit(fail_count == 0, result_msg)
|
||||
continue
|
||||
except PermissionError:
|
||||
self.progress.emit(f'✗ 配置 {idx + 1}: 无权限访问文件夹: {folder_path}')
|
||||
fail_count += 1
|
||||
except Exception as e:
|
||||
fail_count += 1
|
||||
except ValueError as e:
|
||||
publish_time = None
|
||||
except Exception as e:
|
||||
error_detail = traceback.format_exc()
|
||||
fail_count += 1
|
||||
except Exception as e, traceback.format_exc() as error_detail, self.progress.emit(
|
||||
f'执行出错: {str(e) / s}'), self.progress.emit(f'错误详情: {error_detail}'), self.finished.emit(False,
|
||||
f'执行出错: {str(e) / s}'):
|
||||
pass
|
||||
|
||||
|
||||
class ConfigGUI(QMainWindow):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.configs = []
|
||||
self.publish_thread = None
|
||||
self.config_file = 'config_backup.json'
|
||||
self.init_ui()
|
||||
self.load_auto_save()
|
||||
|
||||
def init_ui(self):
|
||||
# ***<module>.ConfigGUI.init_ui: Failure: Different bytecode
|
||||
self.setWindowTitle('发布配置工具 - 批量版 v2.0')
|
||||
self.setGeometry(100, 100, 1500, 950)
|
||||
main_widget = QWidget()
|
||||
self.setCentralWidget(main_widget)
|
||||
title_label = QLabel('发布配置工具 - 批量版 v2.0')
|
||||
title_label.setFont(QFont('Arial', 16, QFont.Bold))
|
||||
title_label.setAlignment(Qt.AlignCenter)
|
||||
main_layout.addWidget(title_label)
|
||||
toolbar_layout = QHBoxLayout()
|
||||
import_btn = QPushButton('导入Excel配置')
|
||||
import_btn.clicked.connect(self.import_config)
|
||||
import_btn.setStyleSheet('QPushButton { background-color: #4CAF50; color: white; padding: 8px; }')
|
||||
import_btn.setToolTip('从Excel文件导入配置')
|
||||
toolbar_layout.addWidget(import_btn)
|
||||
add_btn = QPushButton('添加配置')
|
||||
add_btn.clicked.connect(self.add_config)
|
||||
add_btn.setStyleSheet('QPushButton { background-color: #2196F3; color: white; padding: 8px; }')
|
||||
add_btn.setToolTip('添加一条新配置')
|
||||
toolbar_layout.addWidget(add_btn)
|
||||
delete_btn = QPushButton('删除选中')
|
||||
delete_btn.clicked.connect(self.delete_selected)
|
||||
delete_btn.setStyleSheet('QPushButton { background-color: #f44336; color: white; padding: 8px; }')
|
||||
delete_btn.setToolTip('删除选中的配置行')
|
||||
toolbar_layout.addWidget(delete_btn)
|
||||
duplicate_btn = QPushButton('复制选中')
|
||||
duplicate_btn.clicked.connect(self.duplicate_selected)
|
||||
duplicate_btn.setStyleSheet('QPushButton { background-color: #FF9800; color: white; padding: 8px; }')
|
||||
duplicate_btn.setToolTip('复制选中的配置行')
|
||||
toolbar_layout.addWidget(duplicate_btn)
|
||||
save_btn = QPushButton('导出Excel')
|
||||
save_btn.clicked.connect(self.export_config)
|
||||
save_btn.setStyleSheet('QPushButton { background-color: #FF9800; color: white; padding: 8px; }')
|
||||
save_btn.setToolTip('导出配置到Excel文件')
|
||||
toolbar_layout.addWidget(save_btn)
|
||||
clear_btn = QPushButton('清空配置')
|
||||
clear_btn.clicked.connect(self.clear_all)
|
||||
clear_btn.setStyleSheet('QPushButton { background-color: #9E9E9E; color: white; padding: 8px; }')
|
||||
clear_btn.setToolTip('清空所有配置')
|
||||
toolbar_layout.addWidget(clear_btn)
|
||||
toolbar_layout.addStretch()
|
||||
validate_btn = QPushButton('验证配置')
|
||||
validate_btn.clicked.connect(self.validate_configs)
|
||||
validate_btn.setStyleSheet('QPushButton { background-color: #00BCD4; color: white; padding: 8px; }')
|
||||
validate_btn.setToolTip('验证所有配置的有效性')
|
||||
toolbar_layout.addWidget(validate_btn)
|
||||
start_btn = QPushButton('开始批量发布')
|
||||
start_btn.clicked.connect(self.start_publish)
|
||||
start_btn.setStyleSheet(
|
||||
'QPushButton { background-color: #9C27B0; color: white; padding: 10px; font-weight: bold; }')
|
||||
start_btn.setToolTip('开始执行批量发布任务')
|
||||
toolbar_layout.addWidget(start_btn)
|
||||
stop_btn = QPushButton('停止')
|
||||
stop_btn.clicked.connect(self.stop_publish)
|
||||
stop_btn.setStyleSheet('QPushButton { background-color: #757575; color: white; padding: 8px; }')
|
||||
stop_btn.setEnabled(False)
|
||||
stop_btn.setToolTip('停止当前执行的任务')
|
||||
self.stop_btn = stop_btn
|
||||
toolbar_layout.addWidget(stop_btn)
|
||||
main_layout.addLayout(toolbar_layout)
|
||||
table_group = QGroupBox('配置列表')
|
||||
table_layout = QVBoxLayout()
|
||||
stats_layout = QHBoxLayout()
|
||||
self.stats_label = QLabel('总计: 0 条配置')
|
||||
self.stats_label.setStyleSheet('QLabel { color: #666; font-weight: bold; }')
|
||||
stats_layout.addWidget(self.stats_label)
|
||||
stats_layout.addStretch()
|
||||
table_layout.addLayout(stats_layout)
|
||||
self.table = QTableWidget()
|
||||
self.table.setColumnCount(9)
|
||||
self.table.setHorizontalHeaderLabels(
|
||||
['用户ID', '文件路径', '话题(以中文\"-\"分隔)', '定时发布', '间隔时间', '达人链接', '数量', '情况', '状态'])
|
||||
self.table.setColumnHidden(8, True)
|
||||
self.table.setSelectionBehavior(QAbstractItemView.SelectRows), self.table.setSelectionMode(
|
||||
QAbstractItemView.ExtendedSelection), self.table.setEditTriggers(
|
||||
QAbstractItemView.DoubleClicked | QAbstractItemView.SelectedClicked), self.table.horizontalHeader().setStretchLastSection(
|
||||
True), self.table.horizontalHeader().setSectionResizeMode(
|
||||
QHeaderView.Interactive), self.table.setAlternatingRowColors(True), self.table.itemChanged.connect(
|
||||
self.on_item_changed), self.table.setColumnWidth(0, 100), self.table.setColumnWidth(1,
|
||||
300), self.table.setColumnWidth(
|
||||
2, 250), self.table.setColumnWidth(3, 150), self.table.setColumnWidth(QProgressBar,
|
||||
QComboBox), self.table.setColumnWidth(
|
||||
QHeaderView, QAbstractItemView), self.table.setColumnWidth(QMenu, QAction), self.table.setColumnWidth(
|
||||
QDialog, QFormLayout), self.table.setColumnWidth(QDialogButtonBox,
|
||||
QFileSystemModel), self.table.setColumnWidth(QTreeView,
|
||||
Qt), self.table.setColumnWidth(
|
||||
QThread, pyqtSignal), self.table.setColumnWidth(QDateTime, QTimer), self.table.setColumnWidth(QFont, QColor)
|
||||
self.table.setColumnWidth(4, 100)
|
||||
self.table.setColumnWidth(6, 60)
|
||||
self.table.setColumnWidth(7, 100)
|
||||
self.table.setContextMenuPolicy(Qt.CustomContextMenu)
|
||||
self.table.customContextMenuRequested.connect(self.show_context_menu)
|
||||
table_layout.addWidget(self.table)
|
||||
table_group.setLayout(table_layout)
|
||||
main_layout.addWidget(table_group)
|
||||
progress_layout = QHBoxLayout()
|
||||
progress_layout.addWidget(QLabel('进度:'))
|
||||
self.progress_bar = QProgressBar()
|
||||
self.progress_bar.setVisible(False)
|
||||
self.progress_bar.setFormat('%p% (%v/%m)')
|
||||
progress_layout.addWidget(self.progress_bar)
|
||||
main_layout.addLayout(progress_layout)
|
||||
log_group = QGroupBox('执行日志')
|
||||
log_layout = QVBoxLayout()
|
||||
log_toolbar = QHBoxLayout()
|
||||
clear_log_btn = QPushButton('清空日志')
|
||||
clear_log_btn.clicked.connect(self.clear_log)
|
||||
clear_log_btn.setStyleSheet('QPushButton { padding: 4px; }')
|
||||
log_toolbar.addWidget(clear_log_btn)
|
||||
log_toolbar.addStretch()
|
||||
log_layout.addLayout(log_toolbar)
|
||||
self.log_output = QTextEdit()
|
||||
self.log_output.setReadOnly(True)
|
||||
self.log_output.setMaximumHeight(200)
|
||||
log_layout.addWidget(self.log_output)
|
||||
log_group.setLayout(log_layout)
|
||||
main_layout.addWidget(log_group)
|
||||
self.auto_save_timer = QTimer()
|
||||
self.auto_save_timer.timeout.connect(self.auto_save)
|
||||
self.auto_save_timer.start(30000)
|
||||
|
||||
def show_context_menu(self, position):
|
||||
# ***<module>.ConfigGUI.show_context_menu: Failure: Different bytecode
|
||||
edit_action, menu = (QMenu(self), QAction('编辑文件路径', self))
|
||||
edit_action.triggered.connect(self.edit_selected)
|
||||
menu.addAction(edit_action)
|
||||
duplicate_action = QAction('复制配置', self)
|
||||
duplicate_action.triggered.connect(self.duplicate_selected)
|
||||
menu.addAction(duplicate_action)
|
||||
menu.addSeparator()
|
||||
delete_action = QAction('删除', self)
|
||||
delete_action.triggered.connect(self.delete_selected)
|
||||
menu.addAction(delete_action)
|
||||
menu.exec_(self.table.viewport().mapToGlobal(position))
|
||||
|
||||
def create_datetime_editor(self, datetime_str=None):
|
||||
"""创建日期时间编辑器控件"""
|
||||
# ***<module>.ConfigGUI.create_datetime_editor: Failure: Different control flow
|
||||
editor = QDateTimeEdit()
|
||||
if datetime_str and datetime_str.strip():
|
||||
try:
|
||||
dt = QDateTime.fromString(datetime_str, 'yyyy-MM-dd HH:mm:ss')
|
||||
if dt.isValid() and dt >= QDateTime.currentDateTime():
|
||||
editor.setDateTime(dt)
|
||||
except:
|
||||
pass
|
||||
return editor
|
||||
|
||||
def add_config(self):
|
||||
# ***<module>.ConfigGUI.add_config: Failure: Different control flow
|
||||
return (self.table.rowCount(), self.table.insertRow(row), self.table.setItem(row, 0, QTableWidgetItem('')),
|
||||
self.table.setItem(row, 1, path_item), self.table.setItem(row, 2, QTableWidgetItem('')),
|
||||
self.create_datetime_editor(), self.table.setCellWidget(row, 3, datetime_editor),
|
||||
self.table.setItem(row, 6, QTableWidgetItem('1')), self.table.setItem(row, 7, QTableWidgetItem('')),
|
||||
self.table.selectRow(row))
|
||||
try:
|
||||
self.update_stats()
|
||||
except Exception as e:
|
||||
self.log(f'✗ 添加配置失败: {str(e) / s}')
|
||||
|
||||
def duplicate_selected(self):
|
||||
# ***<module>.ConfigGUI.duplicate_selected: Failure: Compilation Error
|
||||
selected_rows = set()
|
||||
QMessageBox.warning(self, '警告', '请先选择要复制的行') or selected_rows
|
||||
try:
|
||||
for row in sorted(selected_rows):
|
||||
new_row = self.table.rowCount()
|
||||
self.table.insertRow(new_row)
|
||||
for col in range(8):
|
||||
if col == 3:
|
||||
old_widget = self.table.cellWidget(row, 3)
|
||||
new_widget, datetime_str = (old_widget.dateTime().toString('yyyy-MM-dd HH:mm:ss'),
|
||||
self.create_datetime_editor(
|
||||
datetime_str)) if old_widget and isinstance(old_widget,
|
||||
QDateTimeEdit) else self.table.setCellWidget(
|
||||
new_row, 3, new_widget)
|
||||
else:
|
||||
old_item = self.table.item(row, col)
|
||||
new_item = QTableWidgetItem(old_item.text()) if old_item else self.table.setItem(new_row, col,
|
||||
new_item)
|
||||
self.table.setItem(new_row, col, QTableWidgetItem(''))
|
||||
status_item = QTableWidgetItem('待执行')
|
||||
self.table.setItem(new_row, 8, status_item)
|
||||
self.log(f'✓ 已复制 {len(selected_rows)} 行配置')
|
||||
self.update_stats()
|
||||
|
||||
except Exception as e:
|
||||
self.log(f'✗ 复制配置失败: {str(e) / s}')
|
||||
|
||||
|
||||
def clear_all(self):
|
||||
if self.table.rowCount() == 0:
|
||||
return None
|
||||
else:
|
||||
reply = QMessageBox.question(self, '确认清空', f'确定要清空所有 {self.table.rowCount()} 条配置吗?',
|
||||
QMessageBox.Yes | QMessageBox.No)
|
||||
if reply == QMessageBox.Yes:
|
||||
self.table.setRowCount(0)
|
||||
self.log('已清空所有配置')
|
||||
self.update_stats()
|
||||
|
||||
|
||||
def validate_configs(self):
|
||||
"""验证所有配置的有效性"""
|
||||
# ***<module>.ConfigGUI.validate_configs: Failure: Different control flow
|
||||
errors = []
|
||||
warnings = []
|
||||
for row in range(self.table.rowCount()):
|
||||
user_id_item = self.table.item(row, 0)
|
||||
user_id = user_id_item.text().strip() if user_id_item else ''
|
||||
errors.append(f'第 {row + 1} 行: 用户ID为空') or errors.append(f'程序启动失败: {row + 1} 行: 用户ID为空')
|
||||
path_item = self.table.item(row, 1)
|
||||
file_path = path_item.text().strip() if path_item else ''
|
||||
if not file_path:
|
||||
errors.append(f'第 {row + 1} 行: 文件路径为空')
|
||||
else:
|
||||
if not os.path.exists(file_path):
|
||||
errors.append(f'第 {row + 1} 行: 文件路径不存在: {file_path}')
|
||||
else:
|
||||
try:
|
||||
folders = [f for f in os.listdir(file_path) if os.path.isdir(os.path.join(file_path, f))]
|
||||
quantity_item = self.table.item(row, 6)
|
||||
quantity = int(quantity_item.text()) if quantity_item else 1
|
||||
warnings.append(
|
||||
f'第 {row + 1} 行: 数量({quantity})大于可用文件夹数({len(folders) + 1})') if quantity > len(
|
||||
folders) else None
|
||||
except Exception as e:
|
||||
warnings.append(f'第 {row + 1} 行: 无法读取文件夹: {str(e) / 1}')
|
||||
interval_item = self.table.item(row, 4)
|
||||
interval = interval_item.text().strip() if interval_item else '30'
|
||||
try:
|
||||
interval_int = int(interval)
|
||||
errors.append(f'第 {row + 1} 行: 间隔时间必须大于0') if interval_int < 1 else errors.append
|
||||
except:
|
||||
errors.append(f'第 {row + 1} 行: 间隔时间格式错误')
|
||||
quantity_item = self.table.item(row, 6)
|
||||
quantity = quantity_item.text().strip() if quantity_item else '1'
|
||||
try:
|
||||
quantity_int = int(quantity)
|
||||
errors.append(f'第 {row + 1} 行: 数量必须大于0') if quantity_int < 1 else errors.append
|
||||
except:
|
||||
errors.append(f'第 {row + 1} 行: 数量格式错误')
|
||||
if errors or warnings:
|
||||
msg = ''
|
||||
if errors:
|
||||
msg += '错误:\n' + '\n'.join(errors) + '\n\n'
|
||||
if warnings:
|
||||
msg += '警告:\n' + '\n'.join(warnings)
|
||||
|
||||
|
||||
def delete_selected(self):
|
||||
# ***<module>.ConfigGUI.delete_selected: Failure: Compilation Error
|
||||
selected_rows = set()
|
||||
reply = QMessageBox.warning(self, '警告', '请先选择要删除的行') if not selected_rows else QMessageBox.question(self,
|
||||
'确认删除',
|
||||
f'确定要删除 {len(selected_rows) / len(selected_rows)} 行配置吗?',
|
||||
QMessageBox.Yes | QMessageBox.No)
|
||||
if reply == QMessageBox.Yes:
|
||||
try:
|
||||
for row in sorted(selected_rows, reverse=True):
|
||||
pass
|
||||
self.log(f'已删除 {len(selected_rows)} 行配置')
|
||||
self.update_stats()
|
||||
except Exception as e:
|
||||
self.log(f'✗ 删除失败: {str(e) / s}')
|
||||
|
||||
|
||||
def edit_selected(self):
|
||||
# ***<module>.ConfigGUI.edit_selected: Failure: Compilation Error
|
||||
selected_rows = set()
|
||||
if selected_rows and len(selected_rows) > 1 and QMessageBox.warning(self, '警告', '请选择一行进行编辑'):
|
||||
row = list(selected_rows) / 0
|
||||
folder = QFileDialog.getExistingDirectory(self, '选择文件夹')
|
||||
self.table.setItem(row, 1, QTableWidgetItem(folder)) if folder else None
|
||||
self.log(f'已更新第 {row + 1} 行的文件路径')
|
||||
|
||||
|
||||
def on_cell_double_clicked(self, row, column):
|
||||
"""处理单元格双击事件"""
|
||||
# ***<module>.ConfigGUI.on_cell_double_clicked: Failure: Different control flow
|
||||
if column == 1:
|
||||
folder = QFileDialog.getExistingDirectory(self, '选择文件夹')
|
||||
if folder:
|
||||
self.table.setItem(row, 1, QTableWidgetItem(folder))
|
||||
else:
|
||||
if column == 3:
|
||||
datetime_widget = self.table.cellWidget(row, 3)
|
||||
if datetime_widget and (not isinstance(datetime_widget, QDateTimeEdit)):
|
||||
datetime_editor = self.create_datetime_editor()
|
||||
self.table.setCellWidget(row, 3, datetime_editor)
|
||||
datetime_editor.showPopup()
|
||||
else:
|
||||
datetime_widget.showPopup()
|
||||
|
||||
|
||||
def on_item_changed(self, item):
|
||||
"""处理单元格内容变化,自动保存"""
|
||||
self.update_stats()
|
||||
|
||||
|
||||
def update_stats(self):
|
||||
"""更新统计信息"""
|
||||
# ***<module>.ConfigGUI.update_stats: Failure: Different bytecode
|
||||
count = self.table.rowCount()
|
||||
|
||||
|
||||
def edit_datetime(self, row):
|
||||
"""编辑指定行的日期时间"""
|
||||
datetime_widget = self.table.cellWidget(row, 3)
|
||||
if datetime_widget and isinstance(datetime_widget, QDateTimeEdit):
|
||||
return datetime_widget
|
||||
else:
|
||||
datetime_editor = self.create_datetime_editor()
|
||||
self.table.setCellWidget(row, 3, datetime_editor)
|
||||
return datetime_editor
|
||||
|
||||
|
||||
def import_config(self):
|
||||
# irreducible cflow, using cdg fallback
|
||||
# ***<module>.ConfigGUI.import_config: Failure: Compilation Error
|
||||
file_path, _ = QFileDialog.getOpenFileName(self, '选择Excel配置文件', '', 'Excel Files (*.xlsx *.xls)')
|
||||
if not file_path:
|
||||
return
|
||||
df = pd.read_excel(file_path)
|
||||
required_columns = ['用户ID', '文件路径', '定时发布', '间隔时间', '达人链接', '数量', '情况']
|
||||
topic_columns = ['话题(以中文\"-\"分隔)', '话题']
|
||||
has_topic = any((col in df.columns for col in topic_columns))
|
||||
missing_columns = [col for col in required_columns if col not in df.columns]
|
||||
if not has_topic:
|
||||
missing_columns.append('话题(以中文\"-\"分隔)或话题')
|
||||
QMessageBox.warning(self, '错误',
|
||||
f'Excel文件缺少以下列: {', '.join(missing_columns) / ', '.join(missing_columns)}') if missing_columns else None
|
||||
if self.table.rowCount() > 0:
|
||||
reply = QMessageBox.question(self, '确认',
|
||||
'是否清空现有配置?\n选择\"是\"将清空现有配置,选择\"否\"将追加到现有配置后。',
|
||||
QMessageBox.Yes | QMessageBox.No | QMessageBox.Cancel)
|
||||
if reply == QMessageBox.Cancel:
|
||||
return
|
||||
if reply == QMessageBox.Yes:
|
||||
self.table.setRowCount(0)
|
||||
imported_count = 0
|
||||
for idx, row in df.iterrows():
|
||||
table_row = self.table.rowCount()
|
||||
self.table.insertRow(table_row)
|
||||
self.table.setItem(table_row, 0, QTableWidgetItem(str(row['用户ID'])))
|
||||
if '话题(以中文\"-\"分隔)' in df.columns:
|
||||
topic_col = '话题(以中文\"-\"分隔)'
|
||||
else:
|
||||
if '话题' in df.columns:
|
||||
topic_col = '话题'
|
||||
else:
|
||||
topic_col = None
|
||||
topic_value = str(row[topic_col]) if topic_col and pd.notna(row.get(topic_col, '')) else ''
|
||||
self.table.setItem(table_row, 2, QTableWidgetItem(topic_value))
|
||||
time_str = ''
|
||||
if pd.notna(row.get('定时发布', '')) is None:
|
||||
if isinstance(row['定时发布'], pd.Timestamp):
|
||||
time_str = row['定时发布'].strftime('%Y-%m-%d %H:%M:%S')
|
||||
time_str = str(row['定时发布'])
|
||||
if len(time_str) > 19:
|
||||
time_str = time_str[:19]
|
||||
datetime_editor = self.create_datetime_editor(time_str)
|
||||
self.table.setCellWidget(table_row, 3, datetime_editor)
|
||||
self.table.setItem(table_row, 4, QTableWidgetItem(
|
||||
str(int(row['间隔时间'])) if pd.notna(row.get('间隔时间', '')) else '30'))
|
||||
self.table.setItem(table_row, 5, QTableWidgetItem(
|
||||
str(row.get('达人链接', '')) if pd.notna(row.get('达人链接', '')) else ''))
|
||||
self.table.setItem(table_row, 6, QTableWidgetItem(
|
||||
str(int(row['数量'])) if pd.notna(row.get('数量', '')) else '1'))
|
||||
self.table.setItem(table_row, 7, QTableWidgetItem(
|
||||
str(row.get('情况', '')) if pd.notna(row.get('情况', '')) else ''))
|
||||
imported_count += 1
|
||||
self.log(f'✓ 成功导入 {imported_count}/{len(df)} 条配置')
|
||||
self.update_stats()
|
||||
pass
|
||||
|
||||
except Exception as e:
|
||||
error_detail = traceback.format_exc()
|
||||
|
||||
|
||||
def export_config(self):
|
||||
# ***<module>.ConfigGUI.export_config: Failure: Compilation Error
|
||||
if self.table.rowCount() == 0:
|
||||
QMessageBox.warning(self, '警告', '没有配置可导出')
|
||||
else:
|
||||
file_path, _ = QFileDialog.getSaveFileName(self, '保存配置', '', 'Excel Files (*.xlsx)')
|
||||
if not file_path:
|
||||
return None
|
||||
else:
|
||||
try:
|
||||
data = []
|
||||
for row in range(self.table.rowCount()):
|
||||
datetime_widget = self.table.cellWidget(row, 3)
|
||||
time_str = datetime_widget.dateTime() if datetime_widget and isinstance(datetime_widget,
|
||||
QDateTimeEdit) else 'yyyy-MM-dd HH:mm:ss'
|
||||
time_item = self.table.item(row, 3)
|
||||
time_str = time_item.text() if time_item else ''
|
||||
return {'用户ID': self.table.item(row, 0), '文件路径': self.table.item(row, 0),
|
||||
'话题(以中文\"-\"分隔)': self.table.item(row, 1), '定时发布': self.table.item(row, 2),
|
||||
'间隔时间': self.table.item(row, 4), '达人链接': self.table.item(row, 5),
|
||||
'数量': self.table.item(row, 6), '情况': self.table.item(row, 7),
|
||||
'row_data': data.append(row_data) if self.table.item(row, 0) else '',
|
||||
'QSpinBox': self.table.item(row, 4), 'QDateTimeEdit': self.table.item(row, 5),
|
||||
'QGroupBox': self.table.item(row, 6), 'QProgressBar': self.table.item(row, 7),
|
||||
'QComboBox': self.table
|
||||
df = pd.DataFrame(data)
|
||||
df.to_excel(file_path, index=False)
|
||||
self.log('✓ 配置导出成功')
|
||||
QMessageBox.information(self, '成功', '配置导出成功!')
|
||||
except Exception as e:
|
||||
error_detail = traceback.format_exc()
|
||||
|
||||
|
||||
def get_configs_from_table(self):
|
||||
"""从表格获取所有配置"""
|
||||
# ***<module>.ConfigGUI.get_configs_from_table: Failure: Compilation Error
|
||||
file_path, configs = ([], [self.table.item(row, 0).text() if self.table.item(row, 0) else '',
|
||||
self.table.item(row, 1).text() if self.table.item(row, 1) else ''])
|
||||
topics = self.table.item(row, 2).text() if self.table.item(row, 2) else ''
|
||||
datetime_widget = self.table.cellWidget(row, 3)
|
||||
time_publish = datetime_widget.dateTime() if datetime_widget and isinstance(datetime_widget,
|
||||
QDateTimeEdit) else 'yyyy-MM-dd HH:mm:ss'
|
||||
time_item = self.table.item(row, 3)
|
||||
time_publish = time_item.text() if time_item else ''
|
||||
|
||||
|
||||
interval = self.table.item(row, 4).text() if self.table.item(row, 4) else '30'
|
||||
url = self.table.item(row, 5).text() if self.table.item(row, 5) else ''
|
||||
quantity = self.table.item(row, 6).text() if self.table.item(row, 6) else '1'
|
||||
status = self.table.item(row, 7).text() if self.table.item(row, 7) else ''
|
||||
if not user_id or not file_path:
|
||||
continue
|
||||
else:
|
||||
configs.append(
|
||||
{'用户ID': user_id, '文件路径': file_path, '话题': topics, '定时发布': time_publish, '间隔时间': interval,
|
||||
'达人链接': url, '数量': quantity, '情况': status})
|
||||
return configs
|
||||
|
||||
|
||||
def start_publish(self):
|
||||
# ***<module>.ConfigGUI.start_publish: Failure: Compilation Error
|
||||
configs = self.get_configs_from_table()
|
||||
if not configs:
|
||||
QMessageBox.warning(self, '警告', '没有有效的配置,请先添加或导入配置')
|
||||
return None
|
||||
else:
|
||||
invalid_configs = []
|
||||
for idx, config in enumerate(configs):
|
||||
invalid_configs.append(f'配置 {idx + 1}: 文件路径不存在')
|
||||
QMessageBox.warning(self, '警告', '以下配置有问题:\n' + '\n'.join(invalid_configs) if invalid_configs else '\n')
|
||||
reply = sum((QMessageBox.question(self, '确认发布',
|
||||
f'将处理 {len(configs)} 条配置,共 {total_folders} 个文件夹,是否开始?',
|
||||
QMessageBox.Yes | QMessageBox.No) for c in .0 for total_folders in configs if
|
||||
os.path.exists(c['文件路径']) for f in
|
||||
min(len(os.listdir(c['文件路径']))) and int(c.get('数量', 1))))
|
||||
for row in reply == QMessageBox.No if range(self.table.rowCount()):
|
||||
status_item = self.table.item(row, 8)
|
||||
if status_item and status_item.setText('执行中'):
|
||||
status_item.setForeground(QColor(255, 165, 0))
|
||||
self.publish_thread = PublishThread(configs)
|
||||
self.publish_thread.progress.connect(self.log)
|
||||
self.publish_thread.finished.connect(self.on_publish_finished)
|
||||
self.publish_thread.update_progress.connect(self.update_progress_bar)
|
||||
self.progress_bar.setVisible(True)
|
||||
self.progress_bar.setRange(0, 0)
|
||||
self.stop_btn.setEnabled(True)
|
||||
self.publish_thread.start()
|
||||
self.log('==================================================')
|
||||
self.log(f'开始批量发布任务,共 {len(configs)} 条配置...')
|
||||
|
||||
|
||||
def update_progress_bar(self, current, total):
|
||||
"""更新进度条"""
|
||||
if total > 0:
|
||||
self.progress_bar.setRange(0, total)
|
||||
self.progress_bar.setValue(current)
|
||||
|
||||
|
||||
def stop_publish(self):
|
||||
if self.publish_thread and self.publish_thread.isRunning():
|
||||
reply = QMessageBox.question(self, '确认停止', '确定要停止当前任务吗?', QMessageBox.Yes | QMessageBox.No)
|
||||
if reply == QMessageBox.Yes:
|
||||
self.publish_thread.stop()
|
||||
self.log('正在停止任务...')
|
||||
self.stop_btn.setEnabled(False)
|
||||
|
||||
|
||||
def on_publish_finished(self, success, message):
|
||||
# ***<module>.ConfigGUI.on_publish_finished: Failure: Compilation Error
|
||||
self.progress_bar.setVisible(False)
|
||||
status_item = self.table.item(row, 8)
|
||||
if status_item:
|
||||
status_text = status_item.text()
|
||||
if status_text == '执行中':
|
||||
status_item.setText('完成') if success else None
|
||||
status_item.setForeground(QColor(0, 128, 0))
|
||||
else:
|
||||
status_item.setText('失败')
|
||||
|
||||
|
||||
if success:
|
||||
QMessageBox.information(self, '完成', message)
|
||||
else:
|
||||
QMessageBox.warning(self, '完成', message)
|
||||
|
||||
|
||||
def clear_log(self):
|
||||
self.log_output.clear()
|
||||
self.log('日志已清空')
|
||||
|
||||
|
||||
def log(self, message):
|
||||
# ***<module>.ConfigGUI.log: Failure: Different bytecode
|
||||
timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
||||
scrollbar = self.log_output.verticalScrollBar()
|
||||
scrollbar.setValue(scrollbar.maximum())
|
||||
|
||||
|
||||
def auto_save(self):
|
||||
# irreducible cflow, using cdg fallback
|
||||
"""自动保存配置"""
|
||||
# ***<module>.ConfigGUI.auto_save: Failure: Compilation Error
|
||||
data = []
|
||||
for row in range(self.table.rowCount()):
|
||||
datetime_widget = self.table.cellWidget(row, 3)
|
||||
time_item, time_str = (datetime_widget.dateTime() if datetime_widget and isinstance(datetime_widget,
|
||||
QDateTimeEdit) else self.table.item(
|
||||
row, 3))
|
||||
time_str = time_item.text() if time_item else ''
|
||||
row_data = {'用户ID': self.table.item(row, 0),
|
||||
'文件路径': self.table.item(row, 0) if self.table.item(row, 0) else '',
|
||||
'话题': self.table.item(row, 1) if self.table.item(row, 2) else '', '定时发布': time_str,
|
||||
'间隔时间': self.table.item(row, 5) if self.table.item(row, 6) else '',
|
||||
'达人链接': self.table.item(row, 7) if self.table.item(row, 7) else '',
|
||||
'数量': self.table.item(row, 用户ID) if self.table.item(row, 用户ID) else '',
|
||||
'情况': self.table.item(row, 用户ID) if self.table.item(row, 用户ID) else ''}
|
||||
data.append(row_data)
|
||||
|
||||
|
||||
with open(self.config_file, 'w', encoding='utf-8') as f:
|
||||
json.dump(data, f, ensure_ascii=False, indent=2)
|
||||
except Exception as e:
|
||||
return None
|
||||
|
||||
|
||||
def load_auto_save(self):
|
||||
# irreducible cflow, using cdg fallback
|
||||
"""加载自动保存的配置"""
|
||||
# ***<module>.ConfigGUI.load_auto_save: Failure: Compilation Error
|
||||
if os.path.exists(self.config_file):
|
||||
with open(self.config_file, 'r', encoding='utf-8') as f, json.load(f) as data:
|
||||
pass
|
||||
reply = QMessageBox.question(self, '发现自动保存的配置',
|
||||
f'发现 {len(data) / len(data)} 条自动保存的配置,是否加载?',
|
||||
QMessageBox.Yes | QMessageBox.No) if data else None
|
||||
if reply == QMessageBox.Yes:
|
||||
for row_data in data:
|
||||
row = self.table.rowCount()
|
||||
self.table.setItem(row, 5, QTableWidgetItem(row_data.get('达人链接', '')))
|
||||
self.update_stats()
|
||||
except Exception as e:
|
||||
return None
|
||||
|
||||
|
||||
def closeEvent(self, event):
|
||||
"""窗口关闭事件"""
|
||||
# ***<module>.ConfigGUI.closeEvent: Failure: Different control flow
|
||||
if self.publish_thread and self.publish_thread.isRunning():
|
||||
reply = QMessageBox.question(self, '确认退出', '有任务正在运行,确定要退出吗?', QMessageBox.Yes | QMessageBox.No)
|
||||
if reply == QMessageBox.No:
|
||||
event.ignore()
|
||||
self.auto_save()
|
||||
event.accept()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app = QApplication(sys.argv)
|
||||
try:
|
||||
window = ConfigGUI()
|
||||
window.show()
|
||||
sys.exit(app.exec_())
|
||||
except Exception as e:
|
||||
QMessageBox.critical(None, '启动错误', f'程序启动失败: {str(e)}\n{traceback.format_exc()}')
|
||||
sys.exit(1)
|
||||
import requests
|
||||
|
||||
# 配置
|
||||
BASE_URL = "http://47.108.113.7:8000" # 根据实际情况修改
|
||||
API_PATH = "/business/conflict-search"
|
||||
|
||||
# 测试数据
|
||||
test_data = {
|
||||
"client_info": "fwegwwegw(gewgwg)",
|
||||
# "party_info": "grgrg(reghbrgb)",
|
||||
# "undertaker": "测试账号2",
|
||||
# "bidding_unit": "测试222(2222)",
|
||||
# "exclude_prefiling_id": None,
|
||||
# "exclude_project_id": None,
|
||||
# "exclude_bid_id": None
|
||||
}
|
||||
|
||||
# 发送请求
|
||||
response = requests.post(
|
||||
f"{BASE_URL}{API_PATH}",
|
||||
json=test_data,
|
||||
headers={
|
||||
"Content-Type": "application/json",
|
||||
"Authorization": "1111" # 如果需要认证,添加token
|
||||
}
|
||||
)
|
||||
|
||||
print(f"状态码: {response.status_code}")
|
||||
print(f"响应内容: {response.json()}")
|
||||
@@ -1 +0,0 @@
|
||||
[{"description":"treehash per file","signed_content":{"payload":"eyJjb250ZW50X2hhc2hlcyI6W3siYmxvY2tfc2l6ZSI6NDA5NiwiZGlnZXN0Ijoic2hhMjU2IiwiZmlsZXMiOlt7InBhdGgiOiJsaXN0ZGF0YS5qc29uIiwicm9vdF9oYXNoIjoiWFN0ZHd2SW1SVlhUaURDeHdlVVhQdEkyLW1fT2pYVG9yVzd0VjM2Mk44TSJ9LHsicGF0aCI6Im1hbmlmZXN0Lmpzb24iLCJyb290X2hhc2giOiJxTVZqQUppTXdiajQyQ3VsRHdwRVg5QS1URVNiU0JQNUZDRjZqdFVub3lZIn1dLCJmb3JtYXQiOiJ0cmVlaGFzaCIsImhhc2hfYmxvY2tfc2l6ZSI6NDA5Nn1dLCJpdGVtX2lkIjoibmlub2RhYmNlanBlZ2xmamJraGRwbGFvZ2xwY2JmZmoiLCJpdGVtX3ZlcnNpb24iOiI4LjU2ODguODQ5NSIsInByb3RvY29sX3ZlcnNpb24iOjF9","signatures":[{"header":{"kid":"publisher"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"GFwngBJYMwDX9R6Qr_K7N5wnenr3mRy1HCXpq7eNliK-gx6NSOPPv2STDeyEseF-x0I4QFZuHmJrPhRT5g8JB7WJ7_l4KRIP2OC8SPg6bFjJZlRVE0NbEe-Dwwtd0mP9mYmjqO6xO6OJaAwZXJaJQC3NgaL3G4WYX1tSS4bm53dtl60GligONJ2uceig62nzuUIvspPG5YYASJM7vvC_jOmzxm2mIwY8Ix9kBINiTqysukU8Yj8zkQLlBFlCPSWJ7ujbAxqbChPF1QC9rwA0rwarbvvUtkR8r7bNrmkX33qx4E8v-wQ35-eVP5vZXBXuPB3pddvw0-5lgJI3_nFoqHCNrzkWopy6j7W2Rt3j351L6_rQWK2T6N8H54uV7XtKU-gnAVVGBzwNMkc_FWLWOVXukB9t0coTsCJn3qt7OaSwAxcWz_tBc9Qeb1XrEdvtgB5RFfV-t9-iZvDDYVVXHZATnLMl0OtKMhw0zQAdwmmCSt8obq92afJpk8mOXvV_PZWb7XUOlJaDS_AFTe6k7uVGMjG4K_NUMqaIp5xj6G_gSgo75Nh8s18Wj7-6WkGn6yPsMPZK7RHsXkT39NahNoty7enYfkyrWt8jqIvEtGdDMOasEoOM2Bl15n-smzrsAzkKZ2Q0WWIvl5CwEWv-2rp-LIo5BJpRwaQSCQTe5Rk"},{"header":{"kid":"webstore"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"ZNdR7WyM1kzD5Y2K6O74IqyE_ygT_ISKskZ8tp6giExeA7CPR_THnJPH4RlE0F1CehB5kpR7qS5qvF4O1hmkIqrVXk00GpORrTDw7FoBcmS-qxzvloI8YFBkmK_7wn2jO8Fid2Kx8twFZmPqp2mJ2YsptsKIJcskB3OB3gIbRSbyl8Kr0B_k8DKEk2Z9O78-z3fX4JBV0Sl4ap9At1gqtalHU8Qr1JQ43udKAKSRzgFo9sJR17ntOWVARJeL54UbFALTA47JW9AH4KyljJDWT0MiCN947kfKV0rOLGF0fkfehJkij2A-xB8VEaeGnobvWDZglK__LPERIDXw-7TfyA"}]}}]
|
||||
@@ -1,134 +0,0 @@
|
||||
{
|
||||
"navigation_blocked": [
|
||||
{"from": "*", "to": "[*.]googleplex.com"},
|
||||
{"from": "*", "to": "[*.]corp.goog"},
|
||||
{"from": "*", "to": "[*.]corp.google.com"},
|
||||
{"from": "*", "to": "[*.]proxy.googleprod.com"},
|
||||
{"from": "*", "to": "[*.]sandbox.google.com"},
|
||||
{"from": "*", "to": "[*.]borg.google.com"},
|
||||
{"from": "*", "to": "[*.]prod.google.com"},
|
||||
{"from": "*", "to": "accounts.google.com"},
|
||||
{"from": "*", "to": "admin.google.com"},
|
||||
{"from": "*", "to": "borg.google.com"},
|
||||
{"from": "*", "to": "bugs.chromium.org"},
|
||||
{"from": "*", "to": "chromewebstore.google.com"},
|
||||
{"from": "*", "to": "chromium-review.googlesource.com"},
|
||||
{"from": "*", "to": "colab.research.google.com"},
|
||||
{"from": "*", "to": "colab.sandbox.google.com"},
|
||||
{"from": "*", "to": "console.actions.google.com"},
|
||||
{"from": "*", "to": "console.cloud.google.com"},
|
||||
{"from": "*", "to": "console.developers.google.com"},
|
||||
{"from": "*", "to": "console.firebase.google.com"},
|
||||
{"from": "*", "to": "corp.googleapis.com"},
|
||||
{"from": "*", "to": "issuetracker.google.com"},
|
||||
{"from": "*", "to": "mail-settings.google.com"},
|
||||
{"from": "*", "to": "myaccount.google.com"},
|
||||
{"from": "*", "to": "passwords.google.com"},
|
||||
{"from": "*", "to": "remotedesktop.google.com"},
|
||||
{"from": "*", "to": "script.google.com"},
|
||||
{"from": "*", "to": "shell.cloud.google.com"},
|
||||
{"from": "*", "to": "ssh.cloud.google.com"},
|
||||
{"from": "*", "to": "storage.googleapis.com"},
|
||||
{"from": "*", "to": "takeout.google.com"},
|
||||
{"from": "*", "to": "[*.]urbnleaf.com"},
|
||||
{"from": "*", "to": "[*.]cakehousecannabis.com"},
|
||||
{"from": "*", "to": "[*.]silverstaterelief.com"},
|
||||
{"from": "*", "to": "[*.]www.jeeter.com"},
|
||||
{"from": "*", "to": "[*.]www.turleywinecellars.com"},
|
||||
{"from": "*", "to": "[*.]trynowadays.com"},
|
||||
{"from": "*", "to": "[*.]backpackboyzmi.com"},
|
||||
{"from": "*", "to": "[*.]konabrewinghawaii.com"},
|
||||
{"from": "*", "to": "[*.]drinkwillies.com"},
|
||||
{"from": "*", "to": "[*.]www.cakebread.com"},
|
||||
{"from": "*", "to": "[*.]happyhippo.com"},
|
||||
{"from": "*", "to": "[*.]www.odellbrewing.com"},
|
||||
{"from": "*", "to": "[*.]lowkeydis.com"},
|
||||
{"from": "*", "to": "[*.]unlockparadise.com"},
|
||||
{"from": "*", "to": "[*.]strngseeds.com"},
|
||||
{"from": "*", "to": "[*.]discountpharms.com"},
|
||||
{"from": "*", "to": "[*.]www.attitudeseedbankusa.com"},
|
||||
{"from": "*", "to": "[*.]moonwlkr.com"},
|
||||
{"from": "*", "to": "[*.]specsonline.com"},
|
||||
{"from": "*", "to": "[*.]shop.sgproof.com"},
|
||||
{"from": "*", "to": "[*.]highlandbrewing.com"},
|
||||
{"from": "*", "to": "[*.]www.eaze.com"},
|
||||
{"from": "*", "to": "[*.]grav.com"},
|
||||
{"from": "*", "to": "[*.]www.palmbay.com"},
|
||||
{"from": "*", "to": "[*.]letsascend.com"},
|
||||
{"from": "*", "to": "[*.]harpoonbrewery.com"},
|
||||
{"from": "*", "to": "[*.]lightshade.com"},
|
||||
{"from": "*", "to": "[*.]thesocialleaf.com"},
|
||||
{"from": "*", "to": "[*.]herbiesheadshop.com"},
|
||||
{"from": "*", "to": "[*.]sundaygoods.com"},
|
||||
{"from": "*", "to": "[*.]www.gloriaferrer.com"},
|
||||
{"from": "*", "to": "[*.]budclubshop.com"},
|
||||
{"from": "*", "to": "[*.]dacut.com"},
|
||||
{"from": "*", "to": "[*.]kushqueen.shop"},
|
||||
{"from": "*", "to": "[*.]www.allagash.com"},
|
||||
{"from": "*", "to": "[*.]home.alliedbeverage.com"},
|
||||
{"from": "*", "to": "[*.]www.duckhorn.com"},
|
||||
{"from": "*", "to": "[*.]www.finewineandgoodspirits.com"},
|
||||
{"from": "*", "to": "[*.]fattuesday.com"},
|
||||
{"from": "*", "to": "[*.]seedsupreme.com"},
|
||||
{"from": "*", "to": "[*.]visitgreengoods.com"},
|
||||
{"from": "*", "to": "[*.]www.verilife.com"},
|
||||
{"from": "*", "to": "[*.]justkana.com"},
|
||||
{"from": "*", "to": "[*.]www.voodooranger.com"},
|
||||
{"from": "*", "to": "[*.]www.trybrst.com"},
|
||||
{"from": "*", "to": "[*.]www.ecigmafia.com"},
|
||||
{"from": "*", "to": "[*.]www.bigchiefextracts.com"},
|
||||
{"from": "*", "to": "[*.]ottercreeklabs.com"},
|
||||
{"from": "*", "to": "[*.]www.reedsindoorrange.com"},
|
||||
{"from": "*", "to": "[*.]www.knightarmco.com"},
|
||||
{"from": "*", "to": "[*.]ejuicedirect.com"},
|
||||
{"from": "*", "to": "[*.]atlanticfirearms.com"},
|
||||
{"from": "*", "to": "[*.]www.thearmorylife.com"},
|
||||
{"from": "*", "to": "[*.]randys.com"},
|
||||
{"from": "*", "to": "[*.]www.scopelist.com"},
|
||||
{"from": "*", "to": "[*.]bndlstech.com"},
|
||||
{"from": "*", "to": "[*.]www.mossberg.com"},
|
||||
{"from": "*", "to": "[*.]bigmosmokeshop.com"},
|
||||
{"from": "*", "to": "[*.]lowkeydis.com"},
|
||||
{"from": "*", "to": "[*.]juicehead.com"},
|
||||
{"from": "*", "to": "[*.]www.davidtubb.com"},
|
||||
{"from": "*", "to": "[*.]winchester.com"},
|
||||
{"from": "*", "to": "[*.]www.skygatewholesale.com"},
|
||||
{"from": "*", "to": "[*.]www.jgsales.com"},
|
||||
{"from": "*", "to": "[*.]www.dwilsonmfg.com"},
|
||||
{"from": "*", "to": "[*.]barnesbullets.com"},
|
||||
{"from": "*", "to": "[*.]www.eotechinc.com"},
|
||||
{"from": "*", "to": "[*.]krytac.com"},
|
||||
{"from": "*", "to": "[*.]lighterusa.com"},
|
||||
{"from": "*", "to": "[*.]whatacountry.com"},
|
||||
{"from": "*", "to": "[*.]relxnow.com"},
|
||||
{"from": "*", "to": "[*.]www.thedablab.com"},
|
||||
{"from": "*", "to": "[*.]www.vaporauthority.com"},
|
||||
{"from": "*", "to": "[*.]www.alcapone-us.com"},
|
||||
{"from": "*", "to": "[*.]www.elementvape.com"},
|
||||
{"from": "*", "to": "[*.]edie-parker.com"},
|
||||
{"from": "*", "to": "[*.]cloudvapes.com"},
|
||||
{"from": "*", "to": "[*.]snusdaddy.com"},
|
||||
{"from": "*", "to": "[*.]primesupplydistro.com"},
|
||||
{"from": "*", "to": "[*.]smokerfriendly.com"},
|
||||
{"from": "*", "to": "[*.]vaporider.deals"},
|
||||
{"from": "*", "to": "[*.]www.moet.com"},
|
||||
{"from": "*", "to": "[*.]www.keystonelight.com"},
|
||||
{"from": "*", "to": "[*.]www.gooseisland.com"},
|
||||
{"from": "*", "to": "[*.]goldleafmd.com"},
|
||||
{"from": "*", "to": "[*.]www.heineken.com"},
|
||||
{"from": "*", "to": "[*.]www.shopbeergear.com"},
|
||||
{"from": "*", "to": "[*.]www.stgermainliqueur.com"},
|
||||
{"from": "*", "to": "[*.]www.dosequis.com"},
|
||||
{"from": "*", "to": "[*.]olesmoky.com"},
|
||||
{"from": "*", "to": "[*.]www.angelsenvy.com"},
|
||||
{"from": "*", "to": "[*.]www.molsoncoors.com"},
|
||||
{"from": "*", "to": "[*.]fever-tree.com"},
|
||||
{"from": "*", "to": "[*.]www.grayboe.com"},
|
||||
{"from": "*", "to": "[*.]texasgunexperience.com"},
|
||||
{"from": "*", "to": "[*.]americanreloading.com"},
|
||||
{"from": "*", "to": "[*.]securitegunclub.com"},
|
||||
{"from": "*", "to": "[*.]us.glock.com"},
|
||||
{"from": "*", "to": "[*.]morrrange.com"},
|
||||
{"from": "*", "to": "[*.]csaguns.com"}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
[{"description":"treehash per file","signed_content":{"payload":"eyJjb250ZW50X2hhc2hlcyI6W3siYmxvY2tfc2l6ZSI6NDA5NiwiZGlnZXN0Ijoic2hhMjU2IiwiZmlsZXMiOlt7InBhdGgiOiJsaXN0ZGF0YS5qc29uIiwicm9vdF9oYXNoIjoidzdCdWtiRnV5NU1lNk1Ndzc5SUszWEloX2R0VzB0NUk0RkRnUVZldVF1ZyJ9LHsicGF0aCI6Im1hbmlmZXN0Lmpzb24iLCJyb290X2hhc2giOiJRVjJld2Npb0hsVkJaMW1tek5YSTdtYjd0SXRjSjQyUXphNFFPUHJKTi1RIn1dLCJmb3JtYXQiOiJ0cmVlaGFzaCIsImhhc2hfYmxvY2tfc2l6ZSI6NDA5Nn1dLCJpdGVtX2lkIjoibmlub2RhYmNlanBlZ2xmamJraGRwbGFvZ2xwY2JmZmoiLCJpdGVtX3ZlcnNpb24iOiI4LjU4NjYuNzgwMyIsInByb3RvY29sX3ZlcnNpb24iOjF9","signatures":[{"header":{"kid":"publisher"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"Bdid54WHxcNszKj6PE6yfwhavYWsiEQ_K3MHyir-5CUwHUvfczQK4_3CBA1IMCSc2oRu4hyt8pnWnHbtNkVDr9p-9xoTriZfD1LV9K9yAAg7jRJZwTgUVo54WSt77HuxyGnUaMZJCLWHUs27vjbmhu7iWFs8S3u78g31XOqtOTgAJf3RRLhrUMYsBwbWAzv4v_U7SqfFL2JCAqZNEZG9kKxPN4N0nO5Job72vb7GFywIo_vjJdE_2tSBzERIM90S9IgJR9ZpKomdT9Jza5ublrIVjZ-pOgQCmSO0PamODK66dvaoQyYYePQEsjDZWgao62u2rAI_ytuUzh8BfVqiNlUiTKVhZrpymrPfkhXR5PAPzbYt12rOSbHRqpVzFI_pgPr2QYjCXRl0vKG2uwfBFvSjE6mq-b5k81-0YXK7xgqfoQw4zMd3rFK6ab5t6nKLXKOTIz8625IUpqV3ujEjqlBjX9u5kowKrU72t6YTqR2lUsSPMa6a0xz1cKCZC7esrZsh73j8TyTU18VszOduDgLurTYzlUXiBvAPCkidqPF9RbHNYMJ9O5hMbhqcZGEf-MTE4YrDEH3E5vq6p3yVTLave6xHcktmf9XwnEcFH7XXjh419RkDBpdxpCLgBwFrpoSMH8hqbnr_vycEPEdbkJdr5p59A5Ypt3e9a1-oik4"},{"header":{"kid":"webstore"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"QnYXTj9TwuDFoZTf8j6oGfpC4ltPysivi1I0_IqwMzaMSP6_SlMjqSTnsz7_yZmeqBeJ0QfkzDiAaEi8_lpkcpHh6-zliJzc7HhE38s64w7m1bx-LUlJWZU2TPg9Te1EV3Ye4_qnLdgmNC07JP-Uo8re1ldtIXMSLZIrIdxNIJ7DxD_1mOduynbPwa1CyFWpIHi-0tr0G-1x6SDPAICtt6-FU1M4HkDlg57CC6CCwUFLSaJbEiHu2N0l1qw7q8qmfY1aAcNA1EFHG-230KijoTPkCLRpFGal8gMYIn0d9iao4VtrSe2aCBpuijk1kjV_RMfT0ks-8lCy7b4FQ_-lyQ"}]}}]
|
||||
542
user/user_data/ActorSafetyLists/8.5866.7803/listdata.json
Normal file
@@ -0,0 +1,542 @@
|
||||
{
|
||||
"navigation_blocked": [
|
||||
{"from": "*", "to": "[*.]googleplex.com"},
|
||||
{"from": "*", "to": "[*.]corp.goog"},
|
||||
{"from": "*", "to": "[*.]corp.google.com"},
|
||||
{"from": "*", "to": "[*.]proxy.googleprod.com"},
|
||||
{"from": "*", "to": "[*.]sandbox.google.com"},
|
||||
{"from": "*", "to": "[*.]borg.google.com"},
|
||||
{"from": "*", "to": "[*.]prod.google.com"},
|
||||
{"from": "*", "to": "accounts.google.com"},
|
||||
{"from": "*", "to": "admin.google.com"},
|
||||
{"from": "*", "to": "borg.google.com"},
|
||||
{"from": "*", "to": "bugs.chromium.org"},
|
||||
{"from": "*", "to": "chromewebstore.google.com"},
|
||||
{"from": "*", "to": "chromium-review.googlesource.com"},
|
||||
{"from": "*", "to": "colab.research.google.com"},
|
||||
{"from": "*", "to": "colab.sandbox.google.com"},
|
||||
{"from": "*", "to": "console.actions.google.com"},
|
||||
{"from": "*", "to": "console.cloud.google.com"},
|
||||
{"from": "*", "to": "console.developers.google.com"},
|
||||
{"from": "*", "to": "console.firebase.google.com"},
|
||||
{"from": "*", "to": "corp.googleapis.com"},
|
||||
{"from": "*", "to": "issuetracker.google.com"},
|
||||
{"from": "*", "to": "mail-settings.google.com"},
|
||||
{"from": "*", "to": "myaccount.google.com"},
|
||||
{"from": "*", "to": "passwords.google.com"},
|
||||
{"from": "*", "to": "remotedesktop.google.com"},
|
||||
{"from": "*", "to": "script.google.com"},
|
||||
{"from": "*", "to": "shell.cloud.google.com"},
|
||||
{"from": "*", "to": "ssh.cloud.google.com"},
|
||||
{"from": "*", "to": "storage.googleapis.com"},
|
||||
{"from": "*", "to": "takeout.google.com"},
|
||||
{"from": "*", "to": "[*.]1stopvapor.com"},
|
||||
{"from": "*", "to": "[*.]1x-winprizes.com"},
|
||||
{"from": "*", "to": "[*.]3chi.com"},
|
||||
{"from": "*", "to": "[*.]710pipes.com"},
|
||||
{"from": "*", "to": "[*.]7oh.com"},
|
||||
{"from": "*", "to": "[*.]7ohblack.com"},
|
||||
{"from": "*", "to": "[*.]80percentarms.com"},
|
||||
{"from": "*", "to": "[*.]aeroprecisionusa.com"},
|
||||
{"from": "*", "to": "[*.]aimpoint.us"},
|
||||
{"from": "*", "to": "[*.]airlockindustries.com"},
|
||||
{"from": "*", "to": "[*.]alamorange.com"},
|
||||
{"from": "*", "to": "[*.]alcapone-us.com"},
|
||||
{"from": "*", "to": "[*.]allagash.com"},
|
||||
{"from": "*", "to": "[*.]alliedbeverage.com"},
|
||||
{"from": "*", "to": "[*.]ambushtoys.com"},
|
||||
{"from": "*", "to": "[*.]amchar.com"},
|
||||
{"from": "*", "to": "[*.]americanreloading.com"},
|
||||
{"from": "*", "to": "[*.]americanspirit.com"},
|
||||
{"from": "*", "to": "[*.]angelsenvy.com"},
|
||||
{"from": "*", "to": "[*.]apothecarium.com"},
|
||||
{"from": "*", "to": "[*.]area52.com"},
|
||||
{"from": "*", "to": "[*.]arizer.com"},
|
||||
{"from": "*", "to": "[*.]armslist.com"},
|
||||
{"from": "*", "to": "[*.]atlanticfirearms.com"},
|
||||
{"from": "*", "to": "[*.]atrius.dev"},
|
||||
{"from": "*", "to": "[*.]attitudeseedbankusa.com"},
|
||||
{"from": "*", "to": "[*.]b5systems.com"},
|
||||
{"from": "*", "to": "[*.]bacardi.com"},
|
||||
{"from": "*", "to": "[*.]backfireshop.com"},
|
||||
{"from": "*", "to": "[*.]backpackboyzmi.com"},
|
||||
{"from": "*", "to": "[*.]baileys.com"},
|
||||
{"from": "*", "to": "[*.]bakedbags.com"},
|
||||
{"from": "*", "to": "[*.]ballys.com"},
|
||||
{"from": "*", "to": "[*.]bardstownbourbon.com"},
|
||||
{"from": "*", "to": "[*.]barnesbullets.com"},
|
||||
{"from": "*", "to": "[*.]barneysfarm.com"},
|
||||
{"from": "*", "to": "[*.]barneysfarm.us"},
|
||||
{"from": "*", "to": "[*.]barrelking.com"},
|
||||
{"from": "*", "to": "[*.]batmachine.com"},
|
||||
{"from": "*", "to": "[*.]beamdistilling.com"},
|
||||
{"from": "*", "to": "[*.]bearcreekarsenal.com"},
|
||||
{"from": "*", "to": "[*.]bearquartz.com"},
|
||||
{"from": "*", "to": "[*.]berettagalleryusa.com"},
|
||||
{"from": "*", "to": "[*.]bergara.online"},
|
||||
{"from": "*", "to": "[*.]bhdistro.com"},
|
||||
{"from": "*", "to": "[*.]bigchiefextracts.com"},
|
||||
{"from": "*", "to": "[*.]biggrove.com"},
|
||||
{"from": "*", "to": "[*.]bigmosmokeshop.com"},
|
||||
{"from": "*", "to": "[*.]blacknote.com"},
|
||||
{"from": "*", "to": "[*.]blackstoneshooting.com"},
|
||||
{"from": "*", "to": "[*.]blackwellswines.com"},
|
||||
{"from": "*", "to": "[*.]blazysusan.com"},
|
||||
{"from": "*", "to": "[*.]bluemoonbrewingcompany.com"},
|
||||
{"from": "*", "to": "[*.]bndlstech.com"},
|
||||
{"from": "*", "to": "[*.]bottlebuzz.com"},
|
||||
{"from": "*", "to": "[*.]boulevard.com"},
|
||||
{"from": "*", "to": "[*.]bpioutdoors.com"},
|
||||
{"from": "*", "to": "[*.]breckenridgedistillery.com"},
|
||||
{"from": "*", "to": "[*.]briley.com"},
|
||||
{"from": "*", "to": "[*.]brothersgrimmseeds.com"},
|
||||
{"from": "*", "to": "[*.]brownells.com"},
|
||||
{"from": "*", "to": "[*.]budclubshop.com"},
|
||||
{"from": "*", "to": "[*.]budsgunshop.com"},
|
||||
{"from": "*", "to": "[*.]budweiser.com"},
|
||||
{"from": "*", "to": "[*.]buffalotracedistillery.com"},
|
||||
{"from": "*", "to": "[*.]bulleit.com"},
|
||||
{"from": "*", "to": "[*.]burialbeer.com"},
|
||||
{"from": "*", "to": "[*.]buzzballz.com"},
|
||||
{"from": "*", "to": "[*.]cakebread.com"},
|
||||
{"from": "*", "to": "[*.]cakehousecannabis.com"},
|
||||
{"from": "*", "to": "[*.]camel.com"},
|
||||
{"from": "*", "to": "[*.]cannabox.com"},
|
||||
{"from": "*", "to": "[*.]cannariver.com"},
|
||||
{"from": "*", "to": "[*.]casamigos.com"},
|
||||
{"from": "*", "to": "[*.]castleandkey.com"},
|
||||
{"from": "*", "to": "[*.]cbdmd.com"},
|
||||
{"from": "*", "to": "[*.]cdvs.us"},
|
||||
{"from": "*", "to": "[*.]centermassinc.com"},
|
||||
{"from": "*", "to": "[*.]chandon.com"},
|
||||
{"from": "*", "to": "[*.]cheechandchonghemp.com"},
|
||||
{"from": "*", "to": "[*.]chipsliquor.com"},
|
||||
{"from": "*", "to": "[*.]chiselmachining.com"},
|
||||
{"from": "*", "to": "[*.]chwinery.com"},
|
||||
{"from": "*", "to": "[*.]cigaraficionado.com"},
|
||||
{"from": "*", "to": "[*.]cleangreencertified.com"},
|
||||
{"from": "*", "to": "[*.]cloud9cannabis.com"},
|
||||
{"from": "*", "to": "[*.]clouddefensive.com"},
|
||||
{"from": "*", "to": "[*.]cloudvapes.com"},
|
||||
{"from": "*", "to": "[*.]cobratecknives.com"},
|
||||
{"from": "*", "to": "[*.]cogunsales.com"},
|
||||
{"from": "*", "to": "[*.]colt.com"},
|
||||
{"from": "*", "to": "[*.]columbia.care"},
|
||||
{"from": "*", "to": "[*.]cookiesdispensary.com"},
|
||||
{"from": "*", "to": "[*.]cookiesflorida.co"},
|
||||
{"from": "*", "to": "[*.]copsplus.com"},
|
||||
{"from": "*", "to": "[*.]coronausa.com"},
|
||||
{"from": "*", "to": "[*.]csaguns.com"},
|
||||
{"from": "*", "to": "[*.]curaleaf.com"},
|
||||
{"from": "*", "to": "[*.]cutwaterspirits.com"},
|
||||
{"from": "*", "to": "[*.]cwspirits.com"},
|
||||
{"from": "*", "to": "[*.]cyclonepods.com"},
|
||||
{"from": "*", "to": "[*.]dacut.com"},
|
||||
{"from": "*", "to": "[*.]dauntlessmanufacturing.com"},
|
||||
{"from": "*", "to": "[*.]davidtubb.com"},
|
||||
{"from": "*", "to": "[*.]deleonrxgunsandammo.com"},
|
||||
{"from": "*", "to": "[*.]delmesaliquor.com"},
|
||||
{"from": "*", "to": "[*.]delta8resellers.com"},
|
||||
{"from": "*", "to": "[*.]deltateamtactical.com"},
|
||||
{"from": "*", "to": "[*.]diageo.com"},
|
||||
{"from": "*", "to": "[*.]dimeindustries.com"},
|
||||
{"from": "*", "to": "[*.]discountenails.com"},
|
||||
{"from": "*", "to": "[*.]discountpharms.com"},
|
||||
{"from": "*", "to": "[*.]discountvapepen.com"},
|
||||
{"from": "*", "to": "[*.]discreetballistics.com"},
|
||||
{"from": "*", "to": "[*.]dmm.co.jp"},
|
||||
{"from": "*", "to": "[*.]dogfish.com"},
|
||||
{"from": "*", "to": "[*.]donbest.com"},
|
||||
{"from": "*", "to": "[*.]donjulio.com"},
|
||||
{"from": "*", "to": "[*.]dosequis.com"},
|
||||
{"from": "*", "to": "[*.]downtownspirits.com"},
|
||||
{"from": "*", "to": "[*.]dragonsmilk.com"},
|
||||
{"from": "*", "to": "[*.]drinkhouseplant.com"},
|
||||
{"from": "*", "to": "[*.]drinkwillies.com"},
|
||||
{"from": "*", "to": "[*.]drinkwynk.com"},
|
||||
{"from": "*", "to": "[*.]duckhorn.com"},
|
||||
{"from": "*", "to": "[*.]dwilsonmfg.com"},
|
||||
{"from": "*", "to": "[*.]eaglesportsrange.com"},
|
||||
{"from": "*", "to": "[*.]eaze.com"},
|
||||
{"from": "*", "to": "[*.]ecigmafia.com"},
|
||||
{"from": "*", "to": "[*.]edie-parker.com"},
|
||||
{"from": "*", "to": "[*.]ejuiceconnect.com"},
|
||||
{"from": "*", "to": "[*.]ejuicedirect.com"},
|
||||
{"from": "*", "to": "[*.]elcerritoliquor.com"},
|
||||
{"from": "*", "to": "[*.]elementvape.com"},
|
||||
{"from": "*", "to": "[*.]eltesorotequila.com"},
|
||||
{"from": "*", "to": "[*.]empiresmokes.com"},
|
||||
{"from": "*", "to": "[*.]empressgin.com"},
|
||||
{"from": "*", "to": "[*.]eotechinc.com"},
|
||||
{"from": "*", "to": "[*.]ethosgenetics.com"},
|
||||
{"from": "*", "to": "[*.]fatheads.com"},
|
||||
{"from": "*", "to": "[*.]fattuesday.com"},
|
||||
{"from": "*", "to": "[*.]feals.com"},
|
||||
{"from": "*", "to": "[*.]fernway.com"},
|
||||
{"from": "*", "to": "[*.]fever-tree.com"},
|
||||
{"from": "*", "to": "[*.]finewineandgoodspirits.com"},
|
||||
{"from": "*", "to": "[*.]floridagunexchange.com"},
|
||||
{"from": "*", "to": "[*.]floydscustomshop.com"},
|
||||
{"from": "*", "to": "[*.]fogervapes.com"},
|
||||
{"from": "*", "to": "[*.]fortgeorgebrewery.com"},
|
||||
{"from": "*", "to": "[*.]forwardcontrolsdesign.com"},
|
||||
{"from": "*", "to": "[*.]francisfordcoppolawinery.com"},
|
||||
{"from": "*", "to": "[*.]franzesewine.com"},
|
||||
{"from": "*", "to": "[*.]fswholesaleus.com"},
|
||||
{"from": "*", "to": "[*.]fullyloadedchew.com"},
|
||||
{"from": "*", "to": "[*.]gamecigars.com"},
|
||||
{"from": "*", "to": "[*.]geekvape.com"},
|
||||
{"from": "*", "to": "[*.]genuineraw.com"},
|
||||
{"from": "*", "to": "[*.]getfluent.com"},
|
||||
{"from": "*", "to": "[*.]getmyster.com"},
|
||||
{"from": "*", "to": "[*.]getsoul.com"},
|
||||
{"from": "*", "to": "[*.]getsunmed.com"},
|
||||
{"from": "*", "to": "[*.]giantvapes.com"},
|
||||
{"from": "*", "to": "[*.]gideonoptics.com"},
|
||||
{"from": "*", "to": "[*.]glasspipesla.com"},
|
||||
{"from": "*", "to": "[*.]glock.com"},
|
||||
{"from": "*", "to": "[*.]gloriaferrer.com"},
|
||||
{"from": "*", "to": "[*.]gmansportingarms.com"},
|
||||
{"from": "*", "to": "[*.]gohatch.com"},
|
||||
{"from": "*", "to": "[*.]goldenroad.la"},
|
||||
{"from": "*", "to": "[*.]goldleafmd.com"},
|
||||
{"from": "*", "to": "[*.]gooseisland.com"},
|
||||
{"from": "*", "to": "[*.]gotoliquorstore.com"},
|
||||
{"from": "*", "to": "[*.]gpen.com"},
|
||||
{"from": "*", "to": "[*.]grabagun.com"},
|
||||
{"from": "*", "to": "[*.]grav.com"},
|
||||
{"from": "*", "to": "[*.]grayboe.com"},
|
||||
{"from": "*", "to": "[*.]greatlakesbrewing.com"},
|
||||
{"from": "*", "to": "[*.]greenpointseeds.com"},
|
||||
{"from": "*", "to": "[*.]greenroads.com"},
|
||||
{"from": "*", "to": "[*.]gricegunshop.com"},
|
||||
{"from": "*", "to": "[*.]griffinhowe.com"},
|
||||
{"from": "*", "to": "[*.]grog.shop"},
|
||||
{"from": "*", "to": "[*.]gtdist.com"},
|
||||
{"from": "*", "to": "[*.]gtr-studio.com"},
|
||||
{"from": "*", "to": "[*.]guinnesswebstore.com"},
|
||||
{"from": "*", "to": "[*.]gunbuyer.com"},
|
||||
{"from": "*", "to": "[*.]guns.com"},
|
||||
{"from": "*", "to": "[*.]gunsinternational.com"},
|
||||
{"from": "*", "to": "[*.]gzanders.com"},
|
||||
{"from": "*", "to": "[*.]halftimebeverage.com"},
|
||||
{"from": "*", "to": "[*.]happydad.com"},
|
||||
{"from": "*", "to": "[*.]happyhippo.com"},
|
||||
{"from": "*", "to": "[*.]hardywood.com"},
|
||||
{"from": "*", "to": "[*.]harpoonbrewery.com"},
|
||||
{"from": "*", "to": "[*.]hausofarms.com"},
|
||||
{"from": "*", "to": "[*.]headhunterssmokeshop.com"},
|
||||
{"from": "*", "to": "[*.]heineken.com"},
|
||||
{"from": "*", "to": "[*.]helle.com"},
|
||||
{"from": "*", "to": "[*.]hellobatch.com"},
|
||||
{"from": "*", "to": "[*.]herbalwellnesscenter.com"},
|
||||
{"from": "*", "to": "[*.]herbiesheadshop.com"},
|
||||
{"from": "*", "to": "[*.]highlandbrewing.com"},
|
||||
{"from": "*", "to": "[*.]highwest.com"},
|
||||
{"from": "*", "to": "[*.]hiproof.com"},
|
||||
{"from": "*", "to": "[*.]hk-usa.com"},
|
||||
{"from": "*", "to": "[*.]hoffgun.com"},
|
||||
{"from": "*", "to": "[*.]honeyroseusa.com"},
|
||||
{"from": "*", "to": "[*.]hornady.com"},
|
||||
{"from": "*", "to": "[*.]hswsupply.com"},
|
||||
{"from": "*", "to": "[*.]huxwrx.com"},
|
||||
{"from": "*", "to": "[*.]hyattgunstore.com"},
|
||||
{"from": "*", "to": "[*.]iba-world.com"},
|
||||
{"from": "*", "to": "[*.]idaholiquor.com"},
|
||||
{"from": "*", "to": "[*.]ignitioncasino.eu"},
|
||||
{"from": "*", "to": "[*.]iheartjane.com"},
|
||||
{"from": "*", "to": "[*.]insa.com"},
|
||||
{"from": "*", "to": "[*.]jackdaniels.com"},
|
||||
{"from": "*", "to": "[*.]jeeter.com"},
|
||||
{"from": "*", "to": "[*.]jgsales.com"},
|
||||
{"from": "*", "to": "[*.]jimbeam.com"},
|
||||
{"from": "*", "to": "[*.]jjbuckley.com"},
|
||||
{"from": "*", "to": "[*.]jspawnguns.com"},
|
||||
{"from": "*", "to": "[*.]juicehead.com"},
|
||||
{"from": "*", "to": "[*.]justinwine.com"},
|
||||
{"from": "*", "to": "[*.]justkana.com"},
|
||||
{"from": "*", "to": "[*.]kahlua.com"},
|
||||
{"from": "*", "to": "[*.]keltecweapons.com"},
|
||||
{"from": "*", "to": "[*.]ketelone.com"},
|
||||
{"from": "*", "to": "[*.]keystonelight.com"},
|
||||
{"from": "*", "to": "[*.]keystonesportingarmsllc.com"},
|
||||
{"from": "*", "to": "[*.]khalifakush.com"},
|
||||
{"from": "*", "to": "[*.]kick.com"},
|
||||
{"from": "*", "to": "[*.]kimberamerica.com"},
|
||||
{"from": "*", "to": "[*.]kineticdg.com"},
|
||||
{"from": "*", "to": "[*.]knightarmco.com"},
|
||||
{"from": "*", "to": "[*.]konabrewinghawaii.com"},
|
||||
{"from": "*", "to": "[*.]krieghoff.com"},
|
||||
{"from": "*", "to": "[*.]krytac.com"},
|
||||
{"from": "*", "to": "[*.]kures.co"},
|
||||
{"from": "*", "to": "[*.]kushqueen.shop"},
|
||||
{"from": "*", "to": "[*.]kybourbontrail.com"},
|
||||
{"from": "*", "to": "[*.]lagunitas.com"},
|
||||
{"from": "*", "to": "[*.]leesdiscountliquor.com"},
|
||||
{"from": "*", "to": "[*.]legacysports.com"},
|
||||
{"from": "*", "to": "[*.]letsascend.com"},
|
||||
{"from": "*", "to": "[*.]libertycannabis.com"},
|
||||
{"from": "*", "to": "[*.]lighterusa.com"},
|
||||
{"from": "*", "to": "[*.]lightshade.com"},
|
||||
{"from": "*", "to": "[*.]liquorandwineoutlets.com"},
|
||||
{"from": "*", "to": "[*.]liquorbarn.com"},
|
||||
{"from": "*", "to": "[*.]litfarms.com"},
|
||||
{"from": "*", "to": "[*.]lookah.com"},
|
||||
{"from": "*", "to": "[*.]looseleaf.com"},
|
||||
{"from": "*", "to": "[*.]lordvaperpens.com"},
|
||||
{"from": "*", "to": "[*.]lowkeydis.com"},
|
||||
{"from": "*", "to": "[*.]luckystrike.com"},
|
||||
{"from": "*", "to": "[*.]mainlinearmory.com"},
|
||||
{"from": "*", "to": "[*.]makersmark.com"},
|
||||
{"from": "*", "to": "[*.]manasupply.com"},
|
||||
{"from": "*", "to": "[*.]manhattanbeer.com"},
|
||||
{"from": "*", "to": "[*.]manoswine.com"},
|
||||
{"from": "*", "to": "[*.]mark7reloading.com"},
|
||||
{"from": "*", "to": "[*.]marstrigger.com"},
|
||||
{"from": "*", "to": "[*.]mephistogenetics.com"},
|
||||
{"from": "*", "to": "[*.]miamiherald.com"},
|
||||
{"from": "*", "to": "[*.]midsouthshooterssupply.com"},
|
||||
{"from": "*", "to": "[*.]midwestguns.com"},
|
||||
{"from": "*", "to": "[*.]midwestgunworks.com"},
|
||||
{"from": "*", "to": "[*.]mipod.com"},
|
||||
{"from": "*", "to": "[*.]missionliquor.com"},
|
||||
{"from": "*", "to": "[*.]misterguns.com"},
|
||||
{"from": "*", "to": "[*.]modernwarriors.com"},
|
||||
{"from": "*", "to": "[*.]modlite.com"},
|
||||
{"from": "*", "to": "[*.]modulusarms.com"},
|
||||
{"from": "*", "to": "[*.]moet.com"},
|
||||
{"from": "*", "to": "[*.]molsoncoors.com"},
|
||||
{"from": "*", "to": "[*.]monstrumtactical.com"},
|
||||
{"from": "*", "to": "[*.]moonwlkr.com"},
|
||||
{"from": "*", "to": "[*.]morrrange.com"},
|
||||
{"from": "*", "to": "[*.]mossberg.com"},
|
||||
{"from": "*", "to": "[*.]motherearthri.com"},
|
||||
{"from": "*", "to": "[*.]mothershipglass.com"},
|
||||
{"from": "*", "to": "[*.]muckleshootcasino.com"},
|
||||
{"from": "*", "to": "[*.]multiversebeans.com"},
|
||||
{"from": "*", "to": "[*.]mummnapa.com"},
|
||||
{"from": "*", "to": "[*.]mygrizzly.com"},
|
||||
{"from": "*", "to": "[*.]myhavenstores.com"},
|
||||
{"from": "*", "to": "[*.]mynicco.com"},
|
||||
{"from": "*", "to": "[*.]myuwell.com"},
|
||||
{"from": "*", "to": "[*.]myvaporstore.com"},
|
||||
{"from": "*", "to": "[*.]natchezss.com"},
|
||||
{"from": "*", "to": "[*.]nationwideliquor.com"},
|
||||
{"from": "*", "to": "[*.]nativesmokes4less.one"},
|
||||
{"from": "*", "to": "[*.]nectar.store"},
|
||||
{"from": "*", "to": "[*.]neptuneseedbank.com"},
|
||||
{"from": "*", "to": "[*.]nestorliquor.com"},
|
||||
{"from": "*", "to": "[*.]newhollandbrew.com"},
|
||||
{"from": "*", "to": "[*.]newport-pleasure.com"},
|
||||
{"from": "*", "to": "[*.]newriffdistilling.com"},
|
||||
{"from": "*", "to": "[*.]nicnac.com"},
|
||||
{"from": "*", "to": "[*.]northerner.com"},
|
||||
{"from": "*", "to": "[*.]nosler.com"},
|
||||
{"from": "*", "to": "[*.]novakratom.com"},
|
||||
{"from": "*", "to": "[*.]nuleafnaturals.com"},
|
||||
{"from": "*", "to": "[*.]nvsglassworks.com"},
|
||||
{"from": "*", "to": "[*.]nwtnhome.com"},
|
||||
{"from": "*", "to": "[*.]nylservices.net"},
|
||||
{"from": "*", "to": "[*.]ochotequila.com"},
|
||||
{"from": "*", "to": "[*.]odellbrewing.com"},
|
||||
{"from": "*", "to": "[*.]ohlq.com"},
|
||||
{"from": "*", "to": "[*.]olesmoky.com"},
|
||||
{"from": "*", "to": "[*.]omrifles.com"},
|
||||
{"from": "*", "to": "[*.]onlineliquor.com"},
|
||||
{"from": "*", "to": "[*.]oozelife.com"},
|
||||
{"from": "*", "to": "[*.]oregrown.com"},
|
||||
{"from": "*", "to": "[*.]ottercreeklabs.com"},
|
||||
{"from": "*", "to": "[*.]ounceoz.com"},
|
||||
{"from": "*", "to": "[*.]oxva.com"},
|
||||
{"from": "*", "to": "[*.]pallmallusa.com"},
|
||||
{"from": "*", "to": "[*.]palmbay.com"},
|
||||
{"from": "*", "to": "[*.]palmettostatearmory.com"},
|
||||
{"from": "*", "to": "[*.]pappyco.com"},
|
||||
{"from": "*", "to": "[*.]partisantriggers.com"},
|
||||
{"from": "*", "to": "[*.]pax.com"},
|
||||
{"from": "*", "to": "[*.]paylesskratom.com"},
|
||||
{"from": "*", "to": "[*.]planetofthevapes.com"},
|
||||
{"from": "*", "to": "[*.]pointblankrange.com"},
|
||||
{"from": "*", "to": "[*.]pornhub.com"},
|
||||
{"from": "*", "to": "[*.]primaryarms.com"},
|
||||
{"from": "*", "to": "[*.]primesupplydistro.com"},
|
||||
{"from": "*", "to": "[*.]printyour2a.com"},
|
||||
{"from": "*", "to": "[*.]puffco.com"},
|
||||
{"from": "*", "to": "[*.]pulsarvaporizers.com"},
|
||||
{"from": "*", "to": "[*.]pureohiowellness.com"},
|
||||
{"from": "*", "to": "[*.]purlifenm.com"},
|
||||
{"from": "*", "to": "[*.]randys.com"},
|
||||
{"from": "*", "to": "[*.]rawthentic.com"},
|
||||
{"from": "*", "to": "[*.]redstarvapor.com"},
|
||||
{"from": "*", "to": "[*.]reedsindoorrange.com"},
|
||||
{"from": "*", "to": "[*.]refinemi.com"},
|
||||
{"from": "*", "to": "[*.]relxnow.com"},
|
||||
{"from": "*", "to": "[*.]remedyliquor.com"},
|
||||
{"from": "*", "to": "[*.]restoredispensaries.com"},
|
||||
{"from": "*", "to": "[*.]rhinegeist.com"},
|
||||
{"from": "*", "to": "[*.]ribenyan.com"},
|
||||
{"from": "*", "to": "[*.]riflesupply.com"},
|
||||
{"from": "*", "to": "[*.]risecannabis.com"},
|
||||
{"from": "*", "to": "[*.]rkguns.com"},
|
||||
{"from": "*", "to": "[*.]rostmartin.com"},
|
||||
{"from": "*", "to": "[*.]rsregulate.com"},
|
||||
{"from": "*", "to": "[*.]rubypearlco.com"},
|
||||
{"from": "*", "to": "[*.]rumchata.com"},
|
||||
{"from": "*", "to": "[*.]ryot.com"},
|
||||
{"from": "*", "to": "[*.]santacruzshredder.com"},
|
||||
{"from": "*", "to": "[*.]savagearms.com"},
|
||||
{"from": "*", "to": "[*.]sazerac.com"},
|
||||
{"from": "*", "to": "[*.]sb-tactical.com"},
|
||||
{"from": "*", "to": "[*.]schedule35.co"},
|
||||
{"from": "*", "to": "[*.]scheels.com"},
|
||||
{"from": "*", "to": "[*.]scopelist.com"},
|
||||
{"from": "*", "to": "[*.]scottsdalegunclub.com"},
|
||||
{"from": "*", "to": "[*.]sctmfg.com"},
|
||||
{"from": "*", "to": "[*.]secondamendsports.com"},
|
||||
{"from": "*", "to": "[*.]securitegunclub.com"},
|
||||
{"from": "*", "to": "[*.]seedsman.com"},
|
||||
{"from": "*", "to": "[*.]seedsupreme.com"},
|
||||
{"from": "*", "to": "[*.]sensiseeds.com"},
|
||||
{"from": "*", "to": "[*.]sft2tactical.com"},
|
||||
{"from": "*", "to": "[*.]sgproof.com"},
|
||||
{"from": "*", "to": "[*.]shangriladispensaries.com"},
|
||||
{"from": "*", "to": "[*.]sharpshooting.net"},
|
||||
{"from": "*", "to": "[*.]shawcustombarrels.com"},
|
||||
{"from": "*", "to": "[*.]shopbeergear.com"},
|
||||
{"from": "*", "to": "[*.]shopbotanist.com"},
|
||||
{"from": "*", "to": "[*.]shopburninglove.com"},
|
||||
{"from": "*", "to": "[*.]shopharborside.com"},
|
||||
{"from": "*", "to": "[*.]shophod.com"},
|
||||
{"from": "*", "to": "[*.]shortsbrewing.com"},
|
||||
{"from": "*", "to": "[*.]showmesunrise.com"},
|
||||
{"from": "*", "to": "[*.]sierrabullets.com"},
|
||||
{"from": "*", "to": "[*.]sierranevada.com"},
|
||||
{"from": "*", "to": "[*.]silveroak.com"},
|
||||
{"from": "*", "to": "[*.]silverstaterelief.com"},
|
||||
{"from": "*", "to": "[*.]sixtyvines.com"},
|
||||
{"from": "*", "to": "[*.]skoal.com"},
|
||||
{"from": "*", "to": "[*.]skygatewholesale.com"},
|
||||
{"from": "*", "to": "[*.]slickvapes.com"},
|
||||
{"from": "*", "to": "[*.]sluggers.com"},
|
||||
{"from": "*", "to": "[*.]smkw.com"},
|
||||
{"from": "*", "to": "[*.]smokerfriendly.com"},
|
||||
{"from": "*", "to": "[*.]smoktech.com"},
|
||||
{"from": "*", "to": "[*.]smokymountaincbd.com"},
|
||||
{"from": "*", "to": "[*.]snusdaddy.com"},
|
||||
{"from": "*", "to": "[*.]specsonline.com"},
|
||||
{"from": "*", "to": "[*.]sportsmansoutdoorsuperstore.com"},
|
||||
{"from": "*", "to": "[*.]springfield-armory.com"},
|
||||
{"from": "*", "to": "[*.]starbudscolorado.com"},
|
||||
{"from": "*", "to": "[*.]staylitdesign.com"},
|
||||
{"from": "*", "to": "[*.]stellaartois.com"},
|
||||
{"from": "*", "to": "[*.]stellarosa.com"},
|
||||
{"from": "*", "to": "[*.]stgermainliqueur.com"},
|
||||
{"from": "*", "to": "[*.]stiiizy.com"},
|
||||
{"from": "*", "to": "[*.]stincusa.com"},
|
||||
{"from": "*", "to": "[*.]stoegerindustries.com"},
|
||||
{"from": "*", "to": "[*.]storz-bickel.com"},
|
||||
{"from": "*", "to": "[*.]strainly.io"},
|
||||
{"from": "*", "to": "[*.]stranahans.com"},
|
||||
{"from": "*", "to": "[*.]strikeindustries.com"},
|
||||
{"from": "*", "to": "[*.]strngseeds.com"},
|
||||
{"from": "*", "to": "[*.]stundenglass.com"},
|
||||
{"from": "*", "to": "[*.]sugarlands.com"},
|
||||
{"from": "*", "to": "[*.]sundae.flowers"},
|
||||
{"from": "*", "to": "[*.]sundaygoods.com"},
|
||||
{"from": "*", "to": "[*.]sunshinedaydream.com"},
|
||||
{"from": "*", "to": "[*.]suparms.com"},
|
||||
{"from": "*", "to": "[*.]surlybrewing.com"},
|
||||
{"from": "*", "to": "[*.]taginn-usa.com"},
|
||||
{"from": "*", "to": "[*.]tangledrootsbrewingco.com"},
|
||||
{"from": "*", "to": "[*.]tearsoftheleft.com"},
|
||||
{"from": "*", "to": "[*.]tedtobacco.com"},
|
||||
{"from": "*", "to": "[*.]texasgunexperience.com"},
|
||||
{"from": "*", "to": "[*.]theargus.co.uk"},
|
||||
{"from": "*", "to": "[*.]thearmorylife.com"},
|
||||
{"from": "*", "to": "[*.]thebarreltap.com"},
|
||||
{"from": "*", "to": "[*.]thebourbonconcierge.com"},
|
||||
{"from": "*", "to": "[*.]thecountryshed.com"},
|
||||
{"from": "*", "to": "[*.]thedablab.com"},
|
||||
{"from": "*", "to": "[*.]thedispensarynv.com"},
|
||||
{"from": "*", "to": "[*.]thedopestshop.com"},
|
||||
{"from": "*", "to": "[*.]thefirestation.com"},
|
||||
{"from": "*", "to": "[*.]theflowery.co"},
|
||||
{"from": "*", "to": "[*.]thegiftofwhatif.com"},
|
||||
{"from": "*", "to": "[*.]thegundies.com"},
|
||||
{"from": "*", "to": "[*.]thegunparlor.com"},
|
||||
{"from": "*", "to": "[*.]theliquorbarn.com"},
|
||||
{"from": "*", "to": "[*.]theliquorbros.com"},
|
||||
{"from": "*", "to": "[*.]theliquorstore.com"},
|
||||
{"from": "*", "to": "[*.]themininail.com"},
|
||||
{"from": "*", "to": "[*.]themodernsportsman.com"},
|
||||
{"from": "*", "to": "[*.]theoutpostarmory.com"},
|
||||
{"from": "*", "to": "[*.]thesmokeshopguys.com"},
|
||||
{"from": "*", "to": "[*.]thesocialleaf.com"},
|
||||
{"from": "*", "to": "[*.]thevapersworld.com"},
|
||||
{"from": "*", "to": "[*.]thezenco.com"},
|
||||
{"from": "*", "to": "[*.]tools420.com"},
|
||||
{"from": "*", "to": "[*.]torchhemp.com"},
|
||||
{"from": "*", "to": "[*.]tpg420.com"},
|
||||
{"from": "*", "to": "[*.]trehouse.com"},
|
||||
{"from": "*", "to": "[*.]trilliumbrewing.com"},
|
||||
{"from": "*", "to": "[*.]tristararms.com"},
|
||||
{"from": "*", "to": "[*.]troegs.com"},
|
||||
{"from": "*", "to": "[*.]trulieve.com"},
|
||||
{"from": "*", "to": "[*.]tryarro.com"},
|
||||
{"from": "*", "to": "[*.]trybrst.com"},
|
||||
{"from": "*", "to": "[*.]trynowadays.com"},
|
||||
{"from": "*", "to": "[*.]turleywinecellars.com"},
|
||||
{"from": "*", "to": "[*.]twinliquors.com"},
|
||||
{"from": "*", "to": "[*.]uncoiledfirearms.com"},
|
||||
{"from": "*", "to": "[*.]underwoodammo.com"},
|
||||
{"from": "*", "to": "[*.]unitytactical.com"},
|
||||
{"from": "*", "to": "[*.]unlockparadise.com"},
|
||||
{"from": "*", "to": "[*.]uptownspirits.com"},
|
||||
{"from": "*", "to": "[*.]urbnleaf.com"},
|
||||
{"from": "*", "to": "[*.]usafirearms.com"},
|
||||
{"from": "*", "to": "[*.]usedguns.com"},
|
||||
{"from": "*", "to": "[*.]utepilsbrewing.com"},
|
||||
{"from": "*", "to": "[*.]vapehoneystick.com"},
|
||||
{"from": "*", "to": "[*.]vapesourcing.com"},
|
||||
{"from": "*", "to": "[*.]vapewh.com"},
|
||||
{"from": "*", "to": "[*.]vaporauthority.com"},
|
||||
{"from": "*", "to": "[*.]vaporcafeonline.net"},
|
||||
{"from": "*", "to": "[*.]vaporfi.com"},
|
||||
{"from": "*", "to": "[*.]vaporhatch.com"},
|
||||
{"from": "*", "to": "[*.]vaporider.deals"},
|
||||
{"from": "*", "to": "[*.]verilife.com"},
|
||||
{"from": "*", "to": "[*.]vermontfreehand.com"},
|
||||
{"from": "*", "to": "[*.]veuveclicquot.com"},
|
||||
{"from": "*", "to": "[*.]vgoodiez.com"},
|
||||
{"from": "*", "to": "[*.]visitgreengoods.com"},
|
||||
{"from": "*", "to": "[*.]voodooranger.com"},
|
||||
{"from": "*", "to": "[*.]vpm.com"},
|
||||
{"from": "*", "to": "[*.]vytaloptions.com"},
|
||||
{"from": "*", "to": "[*.]wbarmory.com"},
|
||||
{"from": "*", "to": "[*.]whatacountry.com"},
|
||||
{"from": "*", "to": "[*.]whiskyandwhiskey.com"},
|
||||
{"from": "*", "to": "[*.]whistlepigwhiskey.com"},
|
||||
{"from": "*", "to": "[*.]wickedweedbrewing.com"},
|
||||
{"from": "*", "to": "[*.]williesremedy.com"},
|
||||
{"from": "*", "to": "[*.]wilsoncombat.com"},
|
||||
{"from": "*", "to": "[*.]winc.com"},
|
||||
{"from": "*", "to": "[*.]winchester.com"},
|
||||
{"from": "*", "to": "[*.]windycitycigars.com"},
|
||||
{"from": "*", "to": "[*.]winstoncigarettes.com"},
|
||||
{"from": "*", "to": "[*.]woodencork.com"},
|
||||
{"from": "*", "to": "[*.]woodfordreserve.com"},
|
||||
{"from": "*", "to": "[*.]wulfmods.com"},
|
||||
{"from": "*", "to": "[*.]ww2collectibles.com"},
|
||||
{"from": "*", "to": "[*.]xhamster.com"},
|
||||
{"from": "*", "to": "[*.]xnxx.com"},
|
||||
{"from": "*", "to": "[*.]xvideos.com"},
|
||||
{"from": "*", "to": "[*.]yankeespirits.com"},
|
||||
{"from": "*", "to": "[*.]yocan.com"},
|
||||
{"from": "*", "to": "[*.]yocanvaporizer.com"},
|
||||
{"from": "*", "to": "[*.]youbooze.com"},
|
||||
{"from": "*", "to": "[*.]zamnesia.com"},
|
||||
{"from": "*", "to": "[*.]zerofoxgivenllc.com"},
|
||||
{"from": "*", "to": "[*.]zigzag.com"},
|
||||
{"from": "*", "to": "[*.]zippixtoothpicks.com"}
|
||||
]
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"manifest_version": 2,
|
||||
"name": "listdata.json",
|
||||
"version": "8.5688.8495"
|
||||
"version": "8.5866.7803"
|
||||
}
|
||||
BIN
user/user_data/BrowserMetrics/BrowserMetrics-69703C8A-12F8.pma
Normal file
@@ -1 +0,0 @@
|
||||
[{"description":"treehash per file","signed_content":{"payload":"eyJjb250ZW50X2hhc2hlcyI6W3siYmxvY2tfc2l6ZSI6NDA5NiwiZGlnZXN0Ijoic2hhMjU2IiwiZmlsZXMiOlt7InBhdGgiOiJMSUNFTlNFIiwicm9vdF9oYXNoIjoiUGIwc2tBVUxaUzFqWldTQnctV0hIRkltRlhVcExiZDlUcVkwR2ZHSHBWcyJ9LHsicGF0aCI6ImNybC1zZXQiLCJyb290X2hhc2giOiJmZHRZWXBEdXJxeUxXbFl4SVlMcGg4OEI2VFhYdWt4RjVQTzQwTWFBTnBzIn0seyJwYXRoIjoibWFuaWZlc3QuanNvbiIsInJvb3RfaGFzaCI6Ii1yVkJFX0ZxTGZfZ0VCUFZMeFluZEhFQ2Rwc0NMeDZzTUNseUpWR1RMUkkifV0sImZvcm1hdCI6InRyZWVoYXNoIiwiaGFzaF9ibG9ja19zaXplIjo0MDk2fV0sIml0ZW1faWQiOiJoZm5rcGltbGhoZ2llYWRkZ2ZlbWpob2ZtZmJsbW5pYiIsIml0ZW1fdmVyc2lvbiI6IjEwMjkxIiwicHJvdG9jb2xfdmVyc2lvbiI6MX0","signatures":[{"header":{"kid":"publisher"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"rcjpbObT36nSXm3IX-W0Foiy4aqK12H8JBUqEd2ftPP7Pm_CM2XQpizoN4dIlWa1P3Fdy8ddjSXbXu1hV_Za-CW-OlKUUpe-G6dHTdFB2ZQwARFTxgSVX8b9OYY6R8Dz2AWrulNqkBQjtwlG8b9lXhPPPZvm0eTDky5JdgghLSt84hhvnfNwc1hmv8-1E8n8Yfk_3ZOK5WiadTWke6RWTmYR8wZBN0CUgmUJmcM-9UQeMPlbpkT1_JSuN_MlMBSfGZ034rP6BJlROml3AK-2TzlY1Slf7su3TjC9ZB83laNbc20p6sBDAWY4NDyXfv_7oEbdDYJ4wveLKxMWZsIL3w"},{"header":{"kid":"webstore"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"huavKOfWohEY8eTmuNtLaZikjBKSgmXPGJO6GUKYueIopyUEmaVRbQj46koi3KMSY03i8eNueddlZHgyeyWibkk1sEO3BJAE9zmlYefucLzOOor3Q8KpPuKFAsMV1IBu7T5tMBzfuI7OdHOtdc3d-9JgqAL-fEw7oNG9nVDGsDj9VeCAGp1h-la_VYcXytsU5ld3LN9O-XUcrmwickQ_noy-GMq2u93SaG5kqdwAG4Rt8_m_gdgyAwVgP8teIStW55ElUC7QXwEwhZF4K5Jzb5RcvH_tIM6yOAYYopdrCKc6O9g9Z1f9D4q6Hp1kI7uwbZI_xwTiqVruElRCaE9kXA"}]}}]
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"manifest_version": 2,
|
||||
"name": "crl-set-4254242354787984211.data",
|
||||
"version": "10291"
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
[{"description":"treehash per file","signed_content":{"payload":"eyJjb250ZW50X2hhc2hlcyI6W3siYmxvY2tfc2l6ZSI6NDA5NiwiZGlnZXN0Ijoic2hhMjU2IiwiZmlsZXMiOlt7InBhdGgiOiJMSUNFTlNFIiwicm9vdF9oYXNoIjoiUGIwc2tBVUxaUzFqWldTQnctV0hIRkltRlhVcExiZDlUcVkwR2ZHSHBWcyJ9LHsicGF0aCI6ImNybC1zZXQiLCJyb290X2hhc2giOiIwT1hzMUU5V1NzdWNqakhBZjJoNklFcUpEbkFWUG94b0dYVDl0S2huU0QwIn0seyJwYXRoIjoibWFuaWZlc3QuanNvbiIsInJvb3RfaGFzaCI6IjJYVzc0aTRFd0dMTTI2Smt3dlNaaWJBOE43Q3NBbkdydExudzRaZFRBYncifV0sImZvcm1hdCI6InRyZWVoYXNoIiwiaGFzaF9ibG9ja19zaXplIjo0MDk2fV0sIml0ZW1faWQiOiJoZm5rcGltbGhoZ2llYWRkZ2ZlbWpob2ZtZmJsbW5pYiIsIml0ZW1fdmVyc2lvbiI6IjEwMjk2IiwicHJvdG9jb2xfdmVyc2lvbiI6MX0","signatures":[{"header":{"kid":"publisher"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"YXLs0Q83_L3M0gPLp4aYQN7d1uZW-uU39Tcdwgh5PmWdyxXSy3uKnKx6DPybuXOps2on1ke7WZowwF1FagV3hGr9s1UG0iTZyTrQq1YW9x2g8IHAgePLnvy8Sq_l5gKuLy1NxQLR9_pzRKK5PqinqSmO27F8AdeB6_48POAW8_Ge3k5UkuFWDleGP_EMMng16oGZxly8pueije4mm9E7dWH37pd0gsQBnbNjyv2ASIDE6dB1WMBi2e-8EsjnsT7hlfcG2DnRuji_CzEj_6Sc5iM4P6IvdUUnO0c4ZbxBkPegWoEBJmJus2WF-yhURrnyBTrkvshRpKOAXpkUjaQwJw"},{"header":{"kid":"webstore"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"aTT2x5gNOldxO8GtXuvejMGF_mUtZ66kpeMJtqu7EdOV3nT9u5-a5TXXgQdzejZ6SSYh_ZzOKTZ7mJGunyZwhP0qNWJmUXc1NXaMzOiaHPYsZpVo2YlAhDdz0CYchmVcF8W_tBSzlfVIiJQtBt_7zcGgNkVlyHMgFFbqvmqpXFdOeiw8GcvRrNIcqwcJwVCVkI2ABuYaTENqf5R_cQriz7VSQLQM-1S5rUndlt8DAPdDPoYxXe9untYRpVJR2Y24cWbXBZDWhnnKUNnqq33c4CgI2HPSjGUupfVd2AXTZHjZphg164W38--Pf-4no-eSY7KzRtfDZehYfa97YmwApA"}]}}]
|
||||
5
user/user_data/CertificateRevocation/10296/manifest.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"manifest_version": 2,
|
||||
"name": "crl-set-504360167468929874.data",
|
||||
"version": "10296"
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
[{"description":"treehash per file","signed_content":{"payload":"eyJjb250ZW50X2hhc2hlcyI6W3siYmxvY2tfc2l6ZSI6NDA5NiwiZGlnZXN0Ijoic2hhMjU2IiwiZmlsZXMiOlt7InBhdGgiOiJQcmVsb2FkIERhdGEiLCJyb290X2hhc2giOiJtc0ViVFdHLXM3c3NWQlFVYXNCWjJ0VmdZaWtoaU10SkNJY01qRWFpMktjIn0seyJwYXRoIjoibWFuaWZlc3QuanNvbiIsInJvb3RfaGFzaCI6IkZKVXprYmJtNUR1Z2dUODAtTXRNSkYwclF2enAtVGlLbXRnbGRNbkdmZ0kifV0sImZvcm1hdCI6InRyZWVoYXNoIiwiaGFzaF9ibG9ja19zaXplIjo0MDk2fV0sIml0ZW1faWQiOiJnZ2trZWhnYm5manBlZ2dmcGxlZWFrcGlkYmtpYmJtbiIsIml0ZW1fdmVyc2lvbiI6IjIwMjYuMS4xNS4xMjEiLCJwcm90b2NvbF92ZXJzaW9uIjoxfQ","signatures":[{"header":{"kid":"publisher"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"MRb6Dv0ICsuGLwB3WNyzX27V8tMYM7se9nuatZLIpOhEHqcxr4H27dJ4PaO8W58K-OPyY86W6jvAhWr52PqRGbLoAo5PMbO7IqmxyMJmoOh0HFtrJpWyXbwf-DPb13_hScanwOgFhyLRRWgAmDQelXcy6eSw5ttdlDHfGLrd8Qi2tA18NOQdZqoAnmFspTwfhgG2P8nBCRKWRHmKXpo_PjatRniBWA5oOuLoIfb1axullqanrsA0uvlvkDNRdzpeY12ZfeHwexJaPe9Fjvb6vrxylPwTddUsaJS7QVK5Rd68Zngah-i9Gt48hFgFAlrazF8OzyFAdRQaePJfUOhz3vQ6hjHJvhJ5LO2Sw0OQ8WdztrX7k-xAteSmkmFeXieSeSVzFyT2r38sSGtsAgHCAOuP8-wR8NUzpXOiYvxq-WUfxw0aQGZE_hlfcNXEjoR9OXKkcLIAM8WgL98ZDmzkBG2ylYtYdxWLmGH85E_gb7R9L8QMoWxPj9EsAr0mSD8a02kohrFKabHI2DxJT9eBUin0QRmIeAfez15gZq5UvDnWsQpbjvchj7lCBZpApRwB1ZvVZI_18LX3YV2lo2Vfy4axZcL-nX30eLELNZwn9KAxu_7kSzS13gg3FjDwKghj1LaFzwLEQqqtLr34OEmxWebXGvF8kPM5K-CxrTwIim8"},{"header":{"kid":"webstore"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"TFshxOQZygNhpAcKtVya6VzA2xoNh--YCO6MNxpIysQu2DyRQnlNDnLVFauUxwXxww9sRVbbPkL8t6B-L-_c582-5qlBH-1jmL0xTfFKr1oN6XdLMTFRDLS1lWxvPwTartiiEefOas7qz_v-UZzQCIKoOytj4ZjgHlPClMb0rdVSnrzahnumvgkamnd3_kdwozbjIdDpCdzfWGmojo3s3ImCCMAsntJK30N7ABIGdshKRh_PBvmEoX58iwsPtzRFy5zK9RotZg8UD-qXs63mLDjAAl9FfO1oqcLs6lBRXiXUh3gNgL6tKEE4WLBhP6rwT6MKv72XRP0vC26V8F7Slg"}]}}]
|
||||
@@ -0,0 +1 @@
|
||||
[{"description":"treehash per file","signed_content":{"payload":"eyJjb250ZW50X2hhc2hlcyI6W3siYmxvY2tfc2l6ZSI6NDA5NiwiZGlnZXN0Ijoic2hhMjU2IiwiZmlsZXMiOlt7InBhdGgiOiJQcmVsb2FkIERhdGEiLCJyb290X2hhc2giOiJ2SmRrSTNTaTFPU2VZclJxcUZ4eF9EWnVvZDU5MW1TNUpRemR3M3d2Tk00In0seyJwYXRoIjoibWFuaWZlc3QuanNvbiIsInJvb3RfaGFzaCI6Ims5SUlFNEw5NG9rNU9HYlloaU5YX2dGUlBVS2pvNGY2WUVISHFfUnNXb1UifV0sImZvcm1hdCI6InRyZWVoYXNoIiwiaGFzaF9ibG9ja19zaXplIjo0MDk2fV0sIml0ZW1faWQiOiJnZ2trZWhnYm5manBlZ2dmcGxlZWFrcGlkYmtpYmJtbiIsIml0ZW1fdmVyc2lvbiI6IjIwMjYuMS4xOS4xMjIiLCJwcm90b2NvbF92ZXJzaW9uIjoxfQ","signatures":[{"header":{"kid":"publisher"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"l6yh6ZHWkfyvTX9e4H_-csXTYv1AAnMecW0gOKdfXbnRA4HqQ8AIGBvr1Ibyug2Q8KoX6dRbWY3OlHmQmlQoL9g2pTVKqteG2iWwQchHh_t6veo_sKOQMuwzeydudIQm5riyaFUPusuSytDv4XtXE3-3RjQdnfRmS4VrLwH33rKgwhOYw3c2IbSKo3cJJrgqbnXx-sbIQpzf60vqwaf5CyjXmobdj2apWUighknjhFCvE7k6E69RlwnPjU-cK3i1-4y2tVObiGcA42cC7LLh_fY4D10JBOXpvYHbjP0ZDtuXv4ACcL9fhiu1NB1Z-QtK0C-7AiQZUbbBBIlHcgfStaC0dAkARfKx3hTMa60f70RthkC3mrXzla-pjBKILHlUni3M6vaVjHKWyk1dQ8Wm-zVOxq5gJINxlrt0Zd8WVPy8Ccopb5vNrhF6J2dvBA7DRtWa1gmznZkAXAJiYzwkfOKXAAKNCicMMmNUNZQb429MOthvHoIfn_VaGiZsYxoR5W9uxV_tWOlSkMGWtbK1jK7ZrmKPvqvxwT1SW3vE6QSgjrzilZh2uS0RF0C7C4FKQlxJBCKHtTdBUmYLXCsuHGg83MJf2Okr_Il9mvHdt2-LwvnN0SSqCidarU0vLgHxum05aw1xOVFj0lXmGg4JkiA0HbjwDcQHryK4jtTZu2o"},{"header":{"kid":"webstore"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"hEAe1oy7FE8wFao4U-UY_437QxggdEoyxGXPvy1zKn8myE_o4vzKb2DuoN6MzUG7cgQXOJSZIum6rtASLFUh6q6eE2SgYPZlzdn4Ahqlwu_nU2hnw6QY7QCm0BDdPcc_xsVa8eqCUfAi69UEMhzitot-R9xzSiXNJOUc2XYZfUVgzErcU87xtRJU7icdpGkK9P8-aDLoFfbXPa2B0cLAPYuM4VChZwD8TjYvuw7joJ0CESvC8fA_V7lSwHwLQnd50Zua1i84m6E1QONPjdupgQ2kL7XsI9ArN_a-iaajI7kkJLTL_HXS2TEbIGDkvot_jKYTC0yGs0wE7ZjN0BmbmA"}]}}]
|
||||
@@ -2,5 +2,5 @@
|
||||
"manifest_version": 2,
|
||||
"name": "Crowd Deny",
|
||||
"preload_data_format": 1,
|
||||
"version": "2026.1.15.121"
|
||||
"version": "2026.1.19.122"
|
||||
}
|
||||
@@ -8,5 +8,5 @@
|
||||
"top_topics_and_observing_domains": [ ]
|
||||
} ],
|
||||
"hex_encoded_hmac_key": "434BF7DBD7DA573B45E0A11AD9045A61B6221D14AE2F9A341E2FEF659AF071F6",
|
||||
"next_scheduled_calculation_time": "13413450070590420"
|
||||
"next_scheduled_calculation_time": "13413450070590516"
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 118 KiB |
|
Before Width: | Height: | Size: 572 KiB |
|
Before Width: | Height: | Size: 90 KiB |
|
Before Width: | Height: | Size: 354 KiB |
|
Before Width: | Height: | Size: 243 KiB |
|
Before Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 142 KiB |