package components import ( "fmt" "github.com/starfleetcptn/gomft/internal/db" "context" "github.com/starfleetcptn/gomft/components/providers/source" "github.com/starfleetcptn/gomft/components/providers/destination" "github.com/starfleetcptn/gomft/components/providers/common" ) type ConfigFormData struct { Config *db.TransferConfig IsNew bool } func getConfigFormTitle(isNew bool) string { if isNew { return "New Configuration" } return "Edit Configuration" } func getInitialData(config *db.TransferConfig) string { // Default values for a new configuration name := "" sourceType := "local" sourcePath := "" sourceHost := "" sourcePort := 22 sourceUser := "" sourcePassword := "" sourceKeyFile := "" sourceAuthType := "password" sourceBucket := "" sourceRegion := "" sourceAccessKey := "" sourceSecretKey := "" sourceEndpoint := "" sourceShare := "" sourceDomain := "" sourcePassiveMode := false sourceClientId := "" sourceClientSecret := "" sourceDriveId := "" sourceTeamDrive := "" filePattern := "" outputPattern := "${filename}" destinationType := "local" destinationPath := "" destHost := "" destPort := 22 destUser := "" destPassword := "" destKeyFile := "" destAuthType := "password" destBucket := "" destRegion := "" destAccessKey := "" destSecretKey := "" destEndpoint := "" destShare := "" destDomain := "" destPassiveMode := false destClientId := "" destClientSecret := "" destDriveId := "" destTeamDrive := "" archivePath := "" archiveEnabled := false deleteAfterTransfer := false rcloneFlags := "" // If editing an existing config, populate with those values if config != nil { name = config.Name sourceType = config.SourceType sourcePath = config.SourcePath sourceHost = config.SourceHost sourcePort = config.SourcePort sourceUser = config.SourceUser sourcePassword = config.SourcePassword sourceKeyFile = config.SourceKeyFile if sourceKeyFile != "" && sourcePassword == "" { sourceAuthType = "key" } sourceBucket = config.SourceBucket sourceRegion = config.SourceRegion sourceAccessKey = config.SourceAccessKey sourceSecretKey = config.SourceSecretKey sourceEndpoint = config.SourceEndpoint sourceShare = config.SourceShare sourceDomain = config.SourceDomain sourcePassiveMode = config.SourcePassiveMode sourceClientId = config.SourceClientID sourceClientSecret = config.SourceClientSecret sourceDriveId = config.SourceDriveID sourceTeamDrive = config.SourceTeamDrive filePattern = config.FilePattern outputPattern = config.OutputPattern destinationType = config.DestinationType destinationPath = config.DestinationPath destHost = config.DestHost destPort = config.DestPort destUser = config.DestUser destPassword = config.DestPassword destKeyFile = config.DestKeyFile if destKeyFile != "" && destPassword == "" { destAuthType = "key" } destBucket = config.DestBucket destRegion = config.DestRegion destAccessKey = config.DestAccessKey destSecretKey = config.DestSecretKey destEndpoint = config.DestEndpoint destShare = config.DestShare destDomain = config.DestDomain destPassiveMode = config.DestPassiveMode destClientId = config.DestClientID destClientSecret = config.DestClientSecret destDriveId = config.DestDriveID destTeamDrive = config.DestTeamDrive archivePath = config.ArchivePath archiveEnabled = config.ArchiveEnabled deleteAfterTransfer = config.DeleteAfterTransfer rcloneFlags = config.RcloneFlags } // Return the JSON-formatted string with all the data return fmt.Sprintf(`{ name: '%s', sourceType: '%s', sourcePath: '%s', sourceHost: '%s', sourcePort: %d, sourceUser: '%s', sourcePassword: '%s', sourceKeyFile: '%s', sourceAuthType: '%s', sourceBucket: '%s', sourceRegion: '%s', sourceAccessKey: '%s', sourceSecretKey: '%s', sourceEndpoint: '%s', sourceShare: '%s', sourceDomain: '%s', sourcePassiveMode: %v, sourceClientId: '%s', sourceClientSecret: '%s', sourceDriveId: '%s', sourceTeamDrive: '%s', filePattern: '%s', outputPattern: '%s', destinationType: '%s', destinationPath: '%s', destHost: '%s', destPort: %d, destUser: '%s', destPassword: '%s', destKeyFile: '%s', destAuthType: '%s', destBucket: '%s', destRegion: '%s', destAccessKey: '%s', destSecretKey: '%s', destEndpoint: '%s', destShare: '%s', destDomain: '%s', destPassiveMode: %v, destClientId: '%s', destClientSecret: '%s', destDriveId: '%s', destTeamDrive: '%s', archivePath: '%s', archiveEnabled: %v, deleteAfterTransfer: %v, rcloneFlags: '%s', }`, name, sourceType, sourcePath, sourceHost, sourcePort, sourceUser, sourcePassword, sourceKeyFile, sourceAuthType, sourceBucket, sourceRegion, sourceAccessKey, sourceSecretKey, sourceEndpoint, sourceShare, sourceDomain, sourcePassiveMode, sourceClientId, sourceClientSecret, sourceDriveId, sourceTeamDrive, filePattern, outputPattern, destinationType, destinationPath, destHost, destPort, destUser, destPassword, destKeyFile, destAuthType, destBucket, destRegion, destAccessKey, destSecretKey, destEndpoint, destShare, destDomain, destPassiveMode, destClientId, destClientSecret, destDriveId, destTeamDrive, archivePath, archiveEnabled, deleteAfterTransfer, rcloneFlags) } templ ConfigForm(ctx context.Context, data ConfigFormData) { @LayoutWithContext(getConfigFormTitle(data.IsNew), ctx) {
Set up your file transfer configuration
Configure your file transfer settings carefully for optimal performance