Server IP : 162.0.217.223 / Your IP : 216.73.216.153 Web Server : LiteSpeed System : Linux premium269.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : mypckeys ( 1539) PHP Version : 8.1.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /opt/cloudlinux/venv/lib/python3.11/site-packages/cl_website_collector/ |
Upload File : |
# -*- coding: utf-8 -*- # # Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2024 All Rights Reserved # # Licensed under CLOUD LINUX LICENSE AGREEMENT # http://cloudlinux.com/docs/LICENCE.TXT """ CloudLinux website data collector utility Collects Apache configs, system info, and .htaccess files from websites. Note: Data collection and sending is integrated into cloudlinux-summary. """ import argparse import logging import sys from cl_website_collector.website_collector import WebsiteCollector def setup_logging(verbose: bool = False) -> None: """Setup logging configuration.""" log_level = logging.DEBUG if verbose else logging.INFO app_logger = logging.getLogger('cloudlinux-website-collector') app_logger.setLevel(log_level) stream_handler = logging.StreamHandler(sys.stdout) formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') stream_handler.setFormatter(formatter) app_logger.addHandler(stream_handler) def parse_arguments() -> argparse.Namespace: """Parse command line arguments.""" parser = argparse.ArgumentParser( description='CloudLinux website data collector', formatter_class=argparse.RawDescriptionHelpFormatter, epilog=__doc__ ) parser.add_argument( '--send', action='store_true', help='Send data via API (requires --api-url)' ) parser.add_argument( '--api-url', type=str, default='https://stat-api.cloudlinux.com/api/clos-upload', help='API URL for sending data (default: %(default)s)' ) parser.add_argument( '--system-id', type=str, default='test-system-id', help='System identifier (default: %(default)s)' ) parser.add_argument( '--client-id', type=str, default='000000', help='Client identifier (default: %(default)s)' ) parser.add_argument( '--platform', type=str, default='rhel_like', help='Platform type (default: %(default)s)' ) parser.add_argument( '--panel', type=str, default='cPanel', help='Control panel name (default: %(default)s)' ) parser.add_argument( '--server', type=str, default='apache', help='Server name (default: %(default)s)' ) parser.add_argument( '--dry-run', action='store_true', help='Save data to dry-run.jsonl file instead of sending to server' ) parser.add_argument( '--verbose', '-v', action='store_true', help='Enable verbose logging' ) return parser.parse_args() def main() -> int: """Main entry point.""" args = parse_arguments() # Setup logging setup_logging(args.verbose) logger = logging.getLogger("cloudlinux-website-collector") if not args.send: logger.info("No action specified.") return 1 try: collector = WebsiteCollector(logger=logger) if args.send: collector.send_data( system_id=args.system_id, client_id=args.client_id, platform=args.platform, panel=args.panel, server=args.server, api_url=args.api_url, remote_config_version="dummy_version", # no sense to specify there some real version dry_run=args.dry_run ) logger.info("Data sending completed") return 0 except KeyboardInterrupt: logger.info("Operation interrupted by user") return 130 except Exception as e: logger.error("Operation failed: %s", e) return 1 if __name__ == "__main__": sys.exit(main())