| 437 | } |
| 438 | |
| 439 | func (ws *WshServer) WriteTempFileCommand(ctx context.Context, data wshrpc.CommandWriteTempFileData) (string, error) { |
| 440 | if data.FileName == "" { |
| 441 | return "", fmt.Errorf("filename is required") |
| 442 | } |
| 443 | name := filepath.Base(data.FileName) |
| 444 | if name == "" || name == "." || name == ".." { |
| 445 | return "", fmt.Errorf("invalid filename") |
| 446 | } |
| 447 | tempDir, err := os.MkdirTemp("", "waveterm-") |
| 448 | if err != nil { |
| 449 | return "", fmt.Errorf("error creating temp directory: %w", err) |
| 450 | } |
| 451 | decoded, err := base64.StdEncoding.DecodeString(data.Data64) |
| 452 | if err != nil { |
| 453 | return "", fmt.Errorf("error decoding base64 data: %w", err) |
| 454 | } |
| 455 | tempPath := filepath.Join(tempDir, name) |
| 456 | err = os.WriteFile(tempPath, decoded, 0600) |
| 457 | if err != nil { |
| 458 | return "", fmt.Errorf("error writing temp file: %w", err) |
| 459 | } |
| 460 | return tempPath, nil |
| 461 | } |
| 462 | |
| 463 | func (ws *WshServer) DeleteSubBlockCommand(ctx context.Context, data wshrpc.CommandDeleteBlockData) error { |
| 464 | if data.BlockId == "" { |