diff --git a/main.py b/main.py index e8a4aa3..648b3dd 100644 --- a/main.py +++ b/main.py @@ -125,20 +125,238 @@ class FileTransferApp: cursor='hand2' ) receive_button.pack() - + + # 网盘加速卡片 + cloud_card = tk.Frame(card_frame, bg='#f8f9fa', relief='raised', bd=1, padx=20, pady=20) + cloud_card.pack(side='left', padx=15) + + cloud_icon = tk.Label(cloud_card, text="⚡", font=("Arial", 24), bg='#f8f9fa') + cloud_icon.pack() + + cloud_title = tk.Label(cloud_card, text="网盘加速", font=("Microsoft YaHei", 14, "bold"), fg="#2c3e50", bg='#f8f9fa') + cloud_title.pack(pady=(10, 5)) + + cloud_desc = tk.Label(cloud_card, text="加速您的网盘访问", font=("Microsoft YaHei", 9), fg="#7f8c8d", bg='#f8f9fa') + cloud_desc.pack(pady=(0, 15)) + + cloud_button = tk.Button( + cloud_card, + text="加速服务", + command=self.show_cloud_accel_screen, + font=("Microsoft YaHei", 11, "bold"), + bg="#f39c12", + fg="white", + width=12, + height=2, + relief='flat', + cursor='hand2' + ) + cloud_button.pack() + + # 底部信息 footer_frame = tk.Frame(self.main_frame, bg='white') footer_frame.pack(side='bottom', pady=20) footer_label = tk.Label( footer_frame, - text="© 2024 蜗牛创造 - 让文件传输更简单", + text="© 2025 蜗牛创造 - 让文件传输更简单", font=("Microsoft YaHei", 9), fg="#bdc3c7", bg='white' ) footer_label.pack() - + def show_cloud_accel_screen(self): + """显示网盘加速界面""" + self.clear_frame() + + # 标题栏 + title_frame = tk.Frame(self.main_frame, bg='white') + title_frame.pack(fill='x', pady=(10, 20)) + + back_button = self.create_styled_button(title_frame, "← 返回", self.show_welcome_screen, "#95a5a6", 8) + back_button.pack(side='left') + + title_label = tk.Label( + title_frame, + text="⚡ 网盘加速服务", + font=("Microsoft YaHei", 16, "bold"), + fg="#2c3e50", + bg='white' + ) + title_label.pack(side='left', padx=10) + + # 说明文本 + desc_frame = tk.Frame(self.main_frame, bg='white') + desc_frame.pack(fill='x', pady=(0, 20)) + + desc_text = """功能说明: + • 为KodCloud等网盘提供加速服务 + • 使用XTCP协议建立高速通道 + • 本地端口: 8089 + • 服务器: 127.0.0.1""" + + desc_label = tk.Label( + desc_frame, + text=desc_text, + font=("Microsoft YaHei", 10), + fg="#7f8c8d", + bg='white', + justify='left' + ) + desc_label.pack(anchor='w') + + # 按钮组 + button_frame = tk.Frame(self.main_frame, bg='white') + button_frame.pack(pady=20) + + self.cloud_start_button = self.create_styled_button(button_frame, "🚀 启动加速", self.start_cloud_accel, "#27ae60", 15) + self.cloud_start_button.pack(side='left', padx=10) + + self.cloud_stop_button = self.create_styled_button(button_frame, "⏹️ 停止加速", self.stop_cloud_accel, "#e74c3c", 15) + self.cloud_stop_button.pack(side='left', padx=10) + self.cloud_stop_button.config(state='disabled') + + # 状态显示 + status_frame = tk.Frame(self.main_frame, bg='white') + status_frame.pack(fill='x', pady=5) + + self.cloud_status_label = tk.Label( + status_frame, + text="📊 状态: 等待启动加速服务", + font=("Microsoft YaHei", 10), + fg="#7f8c8d", + bg='white' + ) + self.cloud_status_label.pack() + + # 输出区域 + output_card = tk.Frame(self.main_frame, bg='#f8f9fa', relief='raised', bd=1, padx=15, pady=15) + output_card.pack(fill='both', expand=True, pady=(10, 0)) + + output_label = tk.Label(output_card, text="📋 加速服务日志:", font=("Microsoft YaHei", 10), bg='#f8f9fa') + output_label.pack(anchor='w') + + self.cloud_output = scrolledtext.ScrolledText( + output_card, + height=12, + width=80, + font=("Consolas", 9), + state='disabled', + relief='solid', + bd=1, + bg='#ffffff' + ) + self.cloud_output.pack(fill='both', expand=True, pady=(5, 0)) + + # 初始信息 + self.append_cloud_output("网盘加速服务就绪\n") + self.append_cloud_output("点击「启动加速」开始服务\n") + + # 进程引用 + self.cloud_process = None + self.is_cloud_running = False + + def create_kodcloud_ini(self): + """创建kodcloud.ini配置文件""" + # 获取当前时间,精确到秒 + from datetime import datetime + current_time = datetime.now().strftime("%Y%m%d_%H%M%S") + + ini_content = f"""[common] +local_ip = 0.0.0.0 +server_addr = 47.97.6.201 +server_port = 7100 +token = ENbOUMvXJGWuA623@@@ + +[kodcloud_{current_time}] +type = xtcp +role = visitor +server_name = M0BUnkgzPxR0Ebdp9NQ4VUtm4EpTDvPR1 +sk = aw1fohFnPcZEjRcRogENJzBbgPsNqjV31 +bind_ip = 127.0.0.1 +bind_port = 8089 +""" + try: + with open('./kodcloud.ini', 'w', encoding='utf-8') as f: + f.write(ini_content) + self.append_cloud_output(f"✅ 配置文件 kodcloud.ini 创建成功\n") + self.append_cloud_output(f"✅ 时间标识: {current_time}\n") + return True + except Exception as e: + self.append_cloud_output(f"❌ 创建配置文件失败: {e}\n") + return False + + def monitor_cloud_output(self): + """监控网盘加速输出""" + try: + for line in iter(self.cloud_process.stdout.readline, ''): + if not self.is_cloud_running: + break + if line: + self.append_cloud_output(f"[加速服务] {line}") + except: + pass + + def start_cloud_accel(self): + """启动网盘加速服务""" + try: + # 创建配置文件 + if not self.create_kodcloud_ini(): + return + + self.cloud_process = subprocess.Popen( + ['.\\gc.exe', '-c', '.\\kodcloud.ini'], + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + text=True, + encoding='utf-8', + errors='replace', + bufsize=1, + universal_newlines=True + ) + + # 更新状态 + self.is_cloud_running = True + self.cloud_start_button.config(state='disabled') + self.cloud_stop_button.config(state='normal') + self.cloud_status_label.config(text="📊 状态: 加速服务运行中", fg="#27ae60") + + self.append_cloud_output("🚀 启动网盘加速服务...\n") + self.append_cloud_output("📍 本地访问地址: http://127.0.0.1:8089\n") + + # 启动输出监控线程 + output_thread = threading.Thread(target=self.monitor_cloud_output, daemon=True) + output_thread.start() + + except Exception as e: + self.append_cloud_output(f"❌ 启动加速服务失败: {e}\n") + + def stop_cloud_accel(self): + """停止网盘加速服务""" + self.is_cloud_running = False + self.cloud_status_label.config(text="📊 状态: 正在停止服务", fg="#e74c3c") + + if self.cloud_process and self.cloud_process.poll() is None: + try: + self.cloud_process.terminate() + self.append_cloud_output("⏹️ 正在停止加速服务...\n") + except: + pass + + time.sleep(1) + + self.cloud_start_button.config(state='normal') + self.cloud_stop_button.config(state='disabled') + self.cloud_status_label.config(text="📊 状态: 服务已停止", fg="#7f8c8d") + self.append_cloud_output("✅ 加速服务已停止\n") + + def append_cloud_output(self, message): + """向网盘加速输出框添加消息""" + self.cloud_output.config(state='normal') + self.cloud_output.insert(tk.END, message) + + def create_styled_button(self, parent, text, command, bg_color, width=10): """创建样式统一的按钮""" return tk.Button( @@ -493,7 +711,7 @@ bind_port = {bport} '.\\p2pfile.py', '--mode', 'send', '--path', file_path, - '--psk', self.send_psk + '--psk', self.send_psk, '--port', self.bport ], stdout=subprocess.PIPE, @@ -536,7 +754,7 @@ bind_port = {bport} sk = parts[1].strip() psk = parts[2].strip() sern = parts[3].strip() - bport = parts[4].strip() + bport = parts[4].strip() if len(parts) > 4 else "7001" self.send_token = token self.send_sk = sk @@ -787,7 +1005,8 @@ local_port = {bport} sk = parts[1].strip() psk = parts[2].strip() sern = parts[3].strip() - bport = parts[4].strip() + # 修改: 当缺少bport时,默认使用7001 + bport = parts[4].strip() if len(parts) > 4 else "6000" self.current_token = token self.current_sk = sk