unrealon 2.0.6__tar.gz → 2.0.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {unrealon-2.0.6/unrealon.egg-info → unrealon-2.0.8}/PKG-INFO +1 -1
- {unrealon-2.0.6 → unrealon-2.0.8}/pyproject.toml +1 -1
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/enums/__init__.py +10 -0
- unrealon-2.0.8/unrealon-core/src/unrealon_core/enums/events.py +98 -0
- unrealon-2.0.8/unrealon-core/src/unrealon_core/enums/jobs.py +32 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/enums/types.py +1 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/__init__.py +9 -0
- unrealon-2.0.8/unrealon-core/src/unrealon_core/models/authentication.py +24 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/websocket/broadcast.py +33 -2
- {unrealon-2.0.6 → unrealon-2.0.8/unrealon.egg-info}/PKG-INFO +1 -1
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon.egg-info/SOURCES.txt +3 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/LICENSE +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/MANIFEST.in +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/README.md +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/setup.cfg +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/README.md +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/__init__.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/cli/__init__.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/cli/browser_cli.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/cli/cookies_cli.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/cli/interactive_mode.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/cli/main.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/core/__init__.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/core/browser_manager.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/dto/__init__.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/dto/bot_detection.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/dto/models/config.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/dto/models/core.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/dto/models/dataclasses.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/dto/models/detection.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/dto/models/enums.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/dto/models/statistics.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/managers/__init__.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/managers/captcha.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/managers/cookies.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/managers/logger_bridge.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/managers/page_wait_manager.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/managers/profile.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/stealth/__init__.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/stealth/bypass_techniques.pyc +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/stealth/manager.pyc +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/stealth/nodriver_stealth.pyc +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/stealth/playwright_stealth.pyc +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/stealth/scanner_tester.pyc +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/stealth/undetected_chrome.pyc +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/__init__.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/config/__init__.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/config/environment.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/config/urls.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/enums/status.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/error_handling/__init__.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/error_handling/circuit_breaker.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/error_handling/error_context.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/error_handling/recovery.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/error_handling/retry.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/exceptions/__init__.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/exceptions/base.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/exceptions/communication.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/exceptions/driver.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/exceptions/proxy.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/exceptions/task.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/exceptions/validation.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/arq_context.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/arq_responses.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/base.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/bridge_stats.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/communication.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/connection_stats.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/driver.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/driver_details.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/logging.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/task.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/typed_responses.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/websocket/__init__.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/websocket/base.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/websocket/config.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/websocket/driver.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/websocket/errors.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/websocket/heartbeat.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/websocket/logging.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/websocket/proxy.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/websocket/tasks.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/websocket/utils.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/websocket_session.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/monitoring/__init__.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/monitoring/alerts.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/monitoring/dashboard.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/monitoring/health_check.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/monitoring/metrics.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/utils/__init__.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/utils/time.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/version.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/__init__.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/core_module/__init__.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/core_module/base.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/core_module/config.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/core_module/event_manager.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/core_module/protocols.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/core_module/registry.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/decorators/__init__.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/decorators/retry.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/decorators/schedule.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/decorators/task.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/decorators/timing.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/driver/__init__.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/driver/communication/__init__.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/driver/communication/session.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/driver/communication/websocket_client.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/driver/core/__init__.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/driver/core/config.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/driver/core/driver.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/driver/factory/__init__.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/driver/factory/manager_factory.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/driver/lifecycle/__init__.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/driver/lifecycle/daemon.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/driver/lifecycle/initialization.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/driver/lifecycle/shutdown.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/driver/monitoring/__init__.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/driver/monitoring/health.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/driver/utilities/__init__.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/driver/utilities/logging.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/driver/utilities/serialization.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/managers/__init__.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/managers/base.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/managers/browser.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/managers/cache.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/managers/http.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/managers/logger.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/managers/proxy.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/managers/registry.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/managers/threading.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/managers/update.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/utils/__init__.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/utils/time.py +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon.egg-info/dependency_links.txt +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon.egg-info/entry_points.txt +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon.egg-info/requires.txt +0 -0
- {unrealon-2.0.6 → unrealon-2.0.8}/unrealon.egg-info/top_level.txt +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "unrealon"
|
|
7
|
-
version = "2.0.
|
|
7
|
+
version = "2.0.8"
|
|
8
8
|
description = "Enterprise-grade web scraping platform with AI-powered automation and real-time orchestration capabilities"
|
|
9
9
|
authors = [
|
|
10
10
|
{name = "UnrealOn Team", email = "team@unrealon.com"}
|
|
@@ -9,6 +9,8 @@ Phase 1: Foundation enums with strict validation
|
|
|
9
9
|
|
|
10
10
|
from .status import DriverStatus, TaskStatus, ProxyStatus, LogLevel
|
|
11
11
|
from .types import MessageType, ProxyType, TaskPriority
|
|
12
|
+
from .events import EventType, SystemEventType, RedisEventType
|
|
13
|
+
from .jobs import ARQJobName
|
|
12
14
|
|
|
13
15
|
__all__ = [
|
|
14
16
|
# Status enums
|
|
@@ -21,4 +23,12 @@ __all__ = [
|
|
|
21
23
|
"MessageType",
|
|
22
24
|
"ProxyType",
|
|
23
25
|
"TaskPriority",
|
|
26
|
+
|
|
27
|
+
# Event enums
|
|
28
|
+
"EventType",
|
|
29
|
+
"SystemEventType",
|
|
30
|
+
"RedisEventType",
|
|
31
|
+
|
|
32
|
+
# Job enums
|
|
33
|
+
"ARQJobName",
|
|
24
34
|
]
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Event type enums for UnrealOn system.
|
|
3
|
+
|
|
4
|
+
Centralized event type definitions used across all services.
|
|
5
|
+
"""
|
|
6
|
+
from enum import Enum
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class EventType(str, Enum):
|
|
10
|
+
"""
|
|
11
|
+
Event types used in Redis PubSub and system events.
|
|
12
|
+
|
|
13
|
+
These events are used for communication between services:
|
|
14
|
+
- RPC server publishes events
|
|
15
|
+
- Django consumes events via Redis PubSub
|
|
16
|
+
- System events are stored in database
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
# Driver lifecycle events
|
|
20
|
+
DRIVER_REGISTER = "driver_register"
|
|
21
|
+
DRIVER_DISCONNECT = "driver_disconnect"
|
|
22
|
+
|
|
23
|
+
# Parser events (Django-specific naming)
|
|
24
|
+
PARSER_REGISTERED = "parser_registered"
|
|
25
|
+
PARSER_HEARTBEAT = "parser_heartbeat"
|
|
26
|
+
PARSER_DISCONNECTED = "parser_disconnected"
|
|
27
|
+
PARSER_ERROR = "parser_error"
|
|
28
|
+
PARSER_LOG = "parser_log"
|
|
29
|
+
|
|
30
|
+
# Session events
|
|
31
|
+
SESSION_STARTED = "session_started"
|
|
32
|
+
SESSION_COMPLETED = "session_completed"
|
|
33
|
+
SESSION_FAILED = "session_failed"
|
|
34
|
+
|
|
35
|
+
# Command events
|
|
36
|
+
COMMAND_ISSUED = "command_issued"
|
|
37
|
+
COMMAND_COMPLETED = "command_completed"
|
|
38
|
+
COMMAND_FAILED = "command_failed"
|
|
39
|
+
|
|
40
|
+
# System events
|
|
41
|
+
SYSTEM_STARTUP = "system_startup"
|
|
42
|
+
SYSTEM_SHUTDOWN = "system_shutdown"
|
|
43
|
+
SYSTEM_ERROR = "system_error"
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class SystemEventType(str, Enum):
|
|
47
|
+
"""
|
|
48
|
+
System event types for Django database storage.
|
|
49
|
+
|
|
50
|
+
These match the choices in Django's SystemEvent model.
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
# Parser events
|
|
54
|
+
PARSER_REGISTERED = "parser_registered"
|
|
55
|
+
PARSER_HEARTBEAT = "parser_heartbeat"
|
|
56
|
+
PARSER_DISCONNECTED = "parser_disconnected"
|
|
57
|
+
PARSER_ERROR = "parser_error"
|
|
58
|
+
|
|
59
|
+
# Session events
|
|
60
|
+
SESSION_STARTED = "session_started"
|
|
61
|
+
SESSION_COMPLETED = "session_completed"
|
|
62
|
+
SESSION_FAILED = "session_failed"
|
|
63
|
+
|
|
64
|
+
# Command events
|
|
65
|
+
COMMAND_ISSUED = "command_issued"
|
|
66
|
+
COMMAND_COMPLETED = "command_completed"
|
|
67
|
+
COMMAND_FAILED = "command_failed"
|
|
68
|
+
|
|
69
|
+
# System events
|
|
70
|
+
SYSTEM_STARTUP = "system_startup"
|
|
71
|
+
SYSTEM_SHUTDOWN = "system_shutdown"
|
|
72
|
+
SYSTEM_ERROR = "system_error"
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
class RedisEventType(str, Enum):
|
|
76
|
+
"""
|
|
77
|
+
Redis PubSub event types.
|
|
78
|
+
|
|
79
|
+
These are the event types published to Redis channels
|
|
80
|
+
for inter-service communication.
|
|
81
|
+
"""
|
|
82
|
+
|
|
83
|
+
# Driver lifecycle (from RPC to Django)
|
|
84
|
+
DRIVER_REGISTER = "driver_register"
|
|
85
|
+
DRIVER_DISCONNECT = "driver_disconnect"
|
|
86
|
+
|
|
87
|
+
# Parser events (internal Django events)
|
|
88
|
+
PARSER_HEARTBEAT = "parser_heartbeat"
|
|
89
|
+
PARSER_LOG = "parser_log"
|
|
90
|
+
|
|
91
|
+
# Session events
|
|
92
|
+
SESSION_STARTED = "session_started"
|
|
93
|
+
SESSION_COMPLETED = "session_completed"
|
|
94
|
+
SESSION_FAILED = "session_failed"
|
|
95
|
+
|
|
96
|
+
# Command events
|
|
97
|
+
COMMAND_COMPLETED = "command_completed"
|
|
98
|
+
COMMAND_FAILED = "command_failed"
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"""
|
|
2
|
+
ARQ job name enums for UnrealOn system.
|
|
3
|
+
|
|
4
|
+
Centralized job name definitions used across all services.
|
|
5
|
+
"""
|
|
6
|
+
from enum import Enum
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class ARQJobName(str, Enum):
|
|
10
|
+
"""
|
|
11
|
+
ARQ job names used in the system.
|
|
12
|
+
|
|
13
|
+
These are the job function names that can be enqueued
|
|
14
|
+
and processed by ARQ workers.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
# Driver management jobs
|
|
18
|
+
REGISTER_DRIVER = "register_driver"
|
|
19
|
+
DRIVER_DISCONNECT = "driver_disconnect"
|
|
20
|
+
GET_DRIVER_STATUS = "get_driver_status"
|
|
21
|
+
LIST_AVAILABLE_DRIVERS = "list_available_drivers"
|
|
22
|
+
|
|
23
|
+
# Task management jobs
|
|
24
|
+
ASSIGN_TASK_TO_DRIVER = "assign_task_to_driver"
|
|
25
|
+
|
|
26
|
+
# System jobs
|
|
27
|
+
PING = "ping"
|
|
28
|
+
PROCESS_DRIVER_HEARTBEAT = "process_driver_heartbeat"
|
|
29
|
+
|
|
30
|
+
# Lifecycle jobs
|
|
31
|
+
STARTUP = "startup"
|
|
32
|
+
SHUTDOWN = "shutdown"
|
|
@@ -58,6 +58,7 @@ class MessageType(str, Enum):
|
|
|
58
58
|
PONG = "pong" # Pong response
|
|
59
59
|
ERROR = "error" # Error message
|
|
60
60
|
ACK = "ack" # Acknowledgment
|
|
61
|
+
MONITOR_REGISTER = "monitor_register" # Monitor client registration
|
|
61
62
|
|
|
62
63
|
def is_driver_lifecycle(self) -> bool:
|
|
63
64
|
"""Check if message is related to driver lifecycle."""
|
|
@@ -46,6 +46,11 @@ from .logging import (
|
|
|
46
46
|
LogMetrics
|
|
47
47
|
)
|
|
48
48
|
|
|
49
|
+
from .authentication import (
|
|
50
|
+
APIKeyAuthRequest,
|
|
51
|
+
APIKeyAuthResponse
|
|
52
|
+
)
|
|
53
|
+
|
|
49
54
|
__all__ = [
|
|
50
55
|
# Base models
|
|
51
56
|
"UnrealOnBaseModel",
|
|
@@ -76,4 +81,8 @@ __all__ = [
|
|
|
76
81
|
"LogEntry",
|
|
77
82
|
"LogQuery",
|
|
78
83
|
"LogMetrics",
|
|
84
|
+
|
|
85
|
+
# Authentication models
|
|
86
|
+
"APIKeyAuthRequest",
|
|
87
|
+
"APIKeyAuthResponse",
|
|
79
88
|
]
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Authentication models for UnrealOn system.
|
|
3
|
+
|
|
4
|
+
Provides Pydantic models for API key authentication between services.
|
|
5
|
+
"""
|
|
6
|
+
from typing import Optional, List
|
|
7
|
+
from pydantic import Field
|
|
8
|
+
|
|
9
|
+
from .base import UnrealOnBaseModel
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class APIKeyAuthRequest(UnrealOnBaseModel):
|
|
13
|
+
"""API key authentication request."""
|
|
14
|
+
api_key: str = Field(min_length=1, description="API key for authentication")
|
|
15
|
+
parser_id: str = Field(min_length=1, description="Parser requesting authentication")
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class APIKeyAuthResponse(UnrealOnBaseModel):
|
|
19
|
+
"""API key authentication response."""
|
|
20
|
+
success: bool = Field(description="Whether authentication was successful")
|
|
21
|
+
user_id: Optional[int] = Field(default=None, description="Authenticated user ID")
|
|
22
|
+
username: Optional[str] = Field(default=None, description="Authenticated username")
|
|
23
|
+
permissions: List[str] = Field(default_factory=list, description="User permissions")
|
|
24
|
+
error: Optional[str] = Field(default=None, description="Error message if failed")
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/websocket/broadcast.py
RENAMED
|
@@ -81,6 +81,38 @@ class DriverBroadcastData(UnrealOnBaseModel):
|
|
|
81
81
|
default=None,
|
|
82
82
|
description="ISO timestamp when driver disconnected"
|
|
83
83
|
)
|
|
84
|
+
|
|
85
|
+
# Additional fields for complete driver information
|
|
86
|
+
version: Optional[str] = Field(
|
|
87
|
+
default=None,
|
|
88
|
+
description="Driver version"
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
driver_name: Optional[str] = Field(
|
|
92
|
+
default=None,
|
|
93
|
+
description="Human-readable driver name"
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
environment: Optional[str] = Field(
|
|
97
|
+
default=None,
|
|
98
|
+
description="Driver environment (development, production, etc.)"
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
region: Optional[str] = Field(
|
|
102
|
+
default=None,
|
|
103
|
+
description="Driver region"
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
max_concurrent_tasks: Optional[int] = Field(
|
|
107
|
+
default=None,
|
|
108
|
+
ge=1,
|
|
109
|
+
description="Maximum concurrent tasks"
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
tags: List[str] = Field(
|
|
113
|
+
default_factory=list,
|
|
114
|
+
description="Driver tags"
|
|
115
|
+
)
|
|
84
116
|
|
|
85
117
|
|
|
86
118
|
class DriverRegisterBroadcast(WebSocketMessage):
|
|
@@ -92,8 +124,7 @@ class DriverRegisterBroadcast(WebSocketMessage):
|
|
|
92
124
|
)
|
|
93
125
|
|
|
94
126
|
type: MessageType = Field(
|
|
95
|
-
default=MessageType.DRIVER_REGISTER
|
|
96
|
-
frozen=True
|
|
127
|
+
default=MessageType.DRIVER_REGISTER
|
|
97
128
|
)
|
|
98
129
|
|
|
99
130
|
data: DriverBroadcastData = Field(
|
|
@@ -38,6 +38,8 @@ unrealon-core/src/unrealon_core/config/__init__.py
|
|
|
38
38
|
unrealon-core/src/unrealon_core/config/environment.py
|
|
39
39
|
unrealon-core/src/unrealon_core/config/urls.py
|
|
40
40
|
unrealon-core/src/unrealon_core/enums/__init__.py
|
|
41
|
+
unrealon-core/src/unrealon_core/enums/events.py
|
|
42
|
+
unrealon-core/src/unrealon_core/enums/jobs.py
|
|
41
43
|
unrealon-core/src/unrealon_core/enums/status.py
|
|
42
44
|
unrealon-core/src/unrealon_core/enums/types.py
|
|
43
45
|
unrealon-core/src/unrealon_core/error_handling/__init__.py
|
|
@@ -55,6 +57,7 @@ unrealon-core/src/unrealon_core/exceptions/validation.py
|
|
|
55
57
|
unrealon-core/src/unrealon_core/models/__init__.py
|
|
56
58
|
unrealon-core/src/unrealon_core/models/arq_context.py
|
|
57
59
|
unrealon-core/src/unrealon_core/models/arq_responses.py
|
|
60
|
+
unrealon-core/src/unrealon_core/models/authentication.py
|
|
58
61
|
unrealon-core/src/unrealon_core/models/base.py
|
|
59
62
|
unrealon-core/src/unrealon_core/models/bridge_stats.py
|
|
60
63
|
unrealon-core/src/unrealon_core/models/communication.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/cli/interactive_mode.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/core/browser_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/dto/bot_detection.py
RENAMED
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/dto/models/config.py
RENAMED
|
File without changes
|
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/dto/models/dataclasses.py
RENAMED
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/dto/models/detection.py
RENAMED
|
File without changes
|
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/dto/models/statistics.py
RENAMED
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/managers/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/managers/logger_bridge.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/stealth/nodriver_stealth.pyc
RENAMED
|
File without changes
|
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-browser/src/unrealon_browser/stealth/scanner_tester.pyc
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/error_handling/__init__.py
RENAMED
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/error_handling/circuit_breaker.py
RENAMED
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/error_handling/error_context.py
RENAMED
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/error_handling/recovery.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/exceptions/communication.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/connection_stats.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/websocket/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/websocket/config.py
RENAMED
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/websocket/driver.py
RENAMED
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/websocket/errors.py
RENAMED
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/websocket/heartbeat.py
RENAMED
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/websocket/logging.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/models/websocket_session.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-core/src/unrealon_core/monitoring/health_check.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/core_module/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/core_module/event_manager.py
RENAMED
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/core_module/protocols.py
RENAMED
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/core_module/registry.py
RENAMED
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/decorators/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/decorators/schedule.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/driver/core/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/driver/factory/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/driver/lifecycle/__init__.py
RENAMED
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/driver/lifecycle/daemon.py
RENAMED
|
File without changes
|
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/driver/lifecycle/shutdown.py
RENAMED
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/driver/monitoring/__init__.py
RENAMED
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/driver/monitoring/health.py
RENAMED
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/driver/utilities/__init__.py
RENAMED
|
File without changes
|
{unrealon-2.0.6 → unrealon-2.0.8}/unrealon-driver/src/unrealon_driver/driver/utilities/logging.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|