mirror of
https://hubproxy.babadafafafafa.cn/https://github.com/sky22333/ansible-ui
synced 2026-09-20 08:03:57 +08:00
清理冗余
This commit is contained in:
@@ -11,7 +11,6 @@ import { getApiErrorMessage } from '@/utils/http';
|
||||
|
||||
interface FileUploadProps {
|
||||
targetHostIds: number[] | 'all';
|
||||
onUploadComplete: () => void; // Callback when upload finishes
|
||||
onClose: () => void; // Callback to close the dialog
|
||||
}
|
||||
|
||||
@@ -25,7 +24,7 @@ interface UploadResult {
|
||||
};
|
||||
}
|
||||
|
||||
function FileUpload({ targetHostIds, onUploadComplete, onClose }: FileUploadProps) {
|
||||
function FileUpload({ targetHostIds, onClose }: FileUploadProps) {
|
||||
const [file, setFile] = useState<File | null>(null);
|
||||
const [remotePath, setRemotePath] = useState('/tmp/'); // Default remote path
|
||||
const [isUploading, setIsUploading] = useState(false);
|
||||
@@ -96,8 +95,6 @@ function FileUpload({ targetHostIds, onUploadComplete, onClose }: FileUploadProp
|
||||
});
|
||||
}
|
||||
|
||||
// 不自动关闭对话框,让用户查看结果
|
||||
onUploadComplete(); // 仅通知父组件上传完成
|
||||
} else {
|
||||
// 全部失败时的显示
|
||||
toast.error("文件上传失败", {
|
||||
|
||||
@@ -10,7 +10,6 @@ import { getApiErrorMessage } from '@/utils/http';
|
||||
|
||||
interface PlaybookExecutorProps {
|
||||
targetHostIds: number[] | 'all';
|
||||
onExecutionComplete: () => void;
|
||||
onClose: () => void;
|
||||
}
|
||||
|
||||
@@ -40,7 +39,7 @@ const defaultPlaybook = `---
|
||||
var: hello_result.stdout
|
||||
`;
|
||||
|
||||
function PlaybookExecutor({ targetHostIds, onExecutionComplete, onClose }: PlaybookExecutorProps) {
|
||||
function PlaybookExecutor({ targetHostIds, onClose }: PlaybookExecutorProps) {
|
||||
const [playbook, setPlaybook] = useState(defaultPlaybook);
|
||||
const [isExecuting, setIsExecuting] = useState(false);
|
||||
const [executionProgress, setExecutionProgress] = useState(0);
|
||||
@@ -89,8 +88,6 @@ function PlaybookExecutor({ targetHostIds, onExecutionComplete, onClose }: Playb
|
||||
});
|
||||
}
|
||||
|
||||
// 不自动关闭对话框,让用户查看结果
|
||||
onExecutionComplete(); // 仅通知父组件执行完成
|
||||
} else {
|
||||
// 执行失败时的显示
|
||||
toast.error("Playbook执行失败", {
|
||||
|
||||
@@ -309,52 +309,10 @@ function MainPage() {
|
||||
};
|
||||
|
||||
const openTerminal = (hostId: number) => {
|
||||
// 打开新窗口
|
||||
const terminalWindow = window.open(`/terminal/${hostId}`, `terminal_${hostId}`, 'width=800,height=600');
|
||||
|
||||
// 确保新窗口成功打开
|
||||
if (!terminalWindow) {
|
||||
toast.error('无法打开终端', { description: '请允许浏览器打开弹出窗口' });
|
||||
return;
|
||||
}
|
||||
|
||||
// 等待新窗口加载完成
|
||||
const sendAuthInfo = () => {
|
||||
try {
|
||||
// 获取认证令牌
|
||||
const token = authStorage.getToken();
|
||||
const expiresAt = new Date();
|
||||
expiresAt.setHours(expiresAt.getHours() + 5); // 5小时过期时间
|
||||
|
||||
// 如果terminalWindow可用且已加载完成,发送认证信息
|
||||
if (terminalWindow && terminalWindow.document.readyState === 'complete') {
|
||||
localStorage.setItem('isAuthenticated', 'true');
|
||||
localStorage.setItem('authExpiresAt', expiresAt.toISOString());
|
||||
if (token) {
|
||||
localStorage.setItem('token', token);
|
||||
}
|
||||
|
||||
// 尝试向新窗口发送消息,以便它可以检测认证状态
|
||||
terminalWindow.postMessage({
|
||||
type: 'AUTH_INFO',
|
||||
isAuthenticated: true,
|
||||
authExpiresAt: expiresAt.toISOString(),
|
||||
token: token
|
||||
}, '*');
|
||||
|
||||
// 移除敏感日志
|
||||
} else {
|
||||
// 如果窗口未完成加载,稍后再试
|
||||
setTimeout(sendAuthInfo, 500);
|
||||
}
|
||||
} catch {
|
||||
// 移除敏感日志
|
||||
toast.error('无法连接到终端', { description: '认证信息传递失败' });
|
||||
}
|
||||
};
|
||||
|
||||
// 开始尝试发送认证信息
|
||||
setTimeout(sendAuthInfo, 500);
|
||||
};
|
||||
|
||||
const openUploadDialog = (target: 'selected' | 'all') => {
|
||||
@@ -370,10 +328,6 @@ function MainPage() {
|
||||
setIsUploadDialogOpen(true);
|
||||
};
|
||||
|
||||
const handleUploadComplete = () => {
|
||||
console.log("Upload complete callback triggered");
|
||||
};
|
||||
|
||||
const handleCleanupAccessLogs = async () => {
|
||||
if (!confirm('确定要清理7天前的访问日志吗?')) return;
|
||||
try {
|
||||
@@ -398,10 +352,6 @@ function MainPage() {
|
||||
setIsPlaybookDialogOpen(true);
|
||||
};
|
||||
|
||||
const handlePlaybookComplete = () => {
|
||||
console.log("Playbook execution complete");
|
||||
};
|
||||
|
||||
const isAllSelected = hosts.length > 0 && selectedHostIds.length === hosts.length;
|
||||
const isIndeterminate = selectedHostIds.length > 0 && selectedHostIds.length < hosts.length;
|
||||
|
||||
@@ -792,7 +742,6 @@ function MainPage() {
|
||||
{uploadTarget && (
|
||||
<FileUpload
|
||||
targetHostIds={uploadTarget === 'all' ? 'all' : selectedHostIds}
|
||||
onUploadComplete={handleUploadComplete}
|
||||
onClose={() => setIsUploadDialogOpen(false)}
|
||||
/>
|
||||
)}
|
||||
@@ -812,7 +761,6 @@ function MainPage() {
|
||||
{playbookTarget && (
|
||||
<PlaybookExecutor
|
||||
targetHostIds={playbookTarget === 'all' ? 'all' : selectedHostIds}
|
||||
onExecutionComplete={handlePlaybookComplete}
|
||||
onClose={() => setIsPlaybookDialogOpen(false)}
|
||||
/>
|
||||
)}
|
||||
|
||||
@@ -59,26 +59,3 @@ export const prepareHostData = <T extends HostPasswordState>(
|
||||
return preparedData;
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取密码显示值
|
||||
* 对于已加密的密码,显示占位符,否则显示原始值
|
||||
* @param host 主机信息
|
||||
* @returns 用于显示的密码值
|
||||
*/
|
||||
export const getPasswordDisplayValue = (host?: HostPasswordState | null): string => {
|
||||
if (!host) return '';
|
||||
|
||||
// 如果密码已加密,显示占位符
|
||||
if (isPasswordEncrypted(host)) {
|
||||
return '********';
|
||||
}
|
||||
|
||||
// 否则显示原始密码
|
||||
return host.password || '';
|
||||
};
|
||||
|
||||
export default {
|
||||
isPasswordEncrypted,
|
||||
prepareHostData,
|
||||
getPasswordDisplayValue,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user