func createConfigFile(xmppJID, robotRefreshToken, userRefreshToken, shareScope, proxy string) { config := lib.Config{ xmppJID, robotRefreshToken, userRefreshToken, shareScope, proxy, flagToUint(gcpMaxConcurrentDownloadsFlag, lib.DefaultConfig.GCPMaxConcurrentDownloads), flagToUint(cupsMaxConnectionsFlag, lib.DefaultConfig.CUPSMaxConnections), flagToDurationString(cupsConnectTimeoutFlag, lib.DefaultConfig.CUPSConnectTimeout), flagToUint(cupsJobQueueSizeFlag, lib.DefaultConfig.CUPSJobQueueSize), flagToDurationString(cupsPrinterPollIntervalFlag, lib.DefaultConfig.CUPSPrinterPollInterval), lib.DefaultConfig.CUPSPrinterAttributes, flagToBool(cupsJobFullUsernameFlag, lib.DefaultConfig.CUPSJobFullUsername), flagToBool(cupsIgnoreRawPrintersFlag, lib.DefaultConfig.CUPSIgnoreRawPrinters), flagToBool(copyPrinterInfoToDisplayNameFlag, lib.DefaultConfig.CopyPrinterInfoToDisplayName), flagToString(monitorSocketFilenameFlag, lib.DefaultConfig.MonitorSocketFilename), flagToString(gcpBaseURLFlag, lib.DefaultConfig.GCPBaseURL), flagToString(gcpXMPPServerFlag, lib.DefaultConfig.XMPPServer), flagToUint16(gcpXMPPPortFlag, lib.DefaultConfig.XMPPPort), flagToDurationString(gcpXMPPPingTimeoutFlag, lib.DefaultConfig.XMPPPingTimeout), flagToDurationString(gcpXMPPPingIntervalDefaultFlag, lib.DefaultConfig.XMPPPingIntervalDefault), flagToString(gcpOAuthClientIDFlag, lib.DefaultConfig.GCPOAuthClientID), flagToString(gcpOAuthClientSecretFlag, lib.DefaultConfig.GCPOAuthClientSecret), flagToString(gcpOAuthAuthURLFlag, lib.DefaultConfig.GCPOAuthAuthURL), flagToString(gcpOAuthTokenURLFlag, lib.DefaultConfig.GCPOAuthTokenURL), flagToBool(snmpEnableFlag, lib.DefaultConfig.SNMPEnable), flagToString(snmpCommunityFlag, lib.DefaultConfig.SNMPCommunity), flagToUint(snmpMaxConnectionsFlag, lib.DefaultConfig.SNMPMaxConnections), } if err := config.ToFile(); err != nil { log.Fatal(err) } }
func writeConfigFile(context *cli.Context, config *lib.Config) string { if configFilename, err := config.ToFile(context); err != nil { log.Fatalln(err) } else { return configFilename } panic("unreachable") }
func updateConfig(config *lib.Config, configMap map[string]interface{}) bool { dirty := commonUpdateConfig(config, configMap) if _, exists := configMap["log_file_name"]; !exists { dirty = true fmt.Println("Added log_file_name") config.LogFileName = lib.DefaultConfig.LogFileName } if _, exists := configMap["log_file_max_megabytes"]; !exists { dirty = true fmt.Println("Added log_file_max_megabytes") config.LogFileMaxMegabytes = lib.DefaultConfig.LogFileMaxMegabytes } if _, exists := configMap["log_max_files"]; !exists { dirty = true fmt.Println("Added log_max_files") config.LogMaxFiles = lib.DefaultConfig.LogMaxFiles } if _, exists := configMap["log_to_journal"]; !exists { dirty = true fmt.Println("Added log_to_journal") config.LogToJournal = lib.DefaultConfig.LogToJournal } if _, exists := configMap["monitor_socket_filename"]; !exists { dirty = true fmt.Println("Added monitor_socket_filename") config.MonitorSocketFilename = lib.DefaultConfig.MonitorSocketFilename } if _, exists := configMap["cups_max_connections"]; !exists { dirty = true fmt.Println("Added cups_max_connections") config.CUPSMaxConnections = lib.DefaultConfig.CUPSMaxConnections } if _, exists := configMap["cups_connect_timeout"]; !exists { dirty = true fmt.Println("Added cups_connect_timeout") config.CUPSConnectTimeout = lib.DefaultConfig.CUPSConnectTimeout } if _, exists := configMap["cups_printer_attributes"]; !exists { dirty = true fmt.Println("Added cups_printer_attributes") config.CUPSPrinterAttributes = lib.DefaultConfig.CUPSPrinterAttributes } else { // Make sure all required attributes are present. s := make(map[string]struct{}, len(config.CUPSPrinterAttributes)) for _, a := range config.CUPSPrinterAttributes { s[a] = struct{}{} } for _, a := range lib.DefaultConfig.CUPSPrinterAttributes { if _, exists := s[a]; !exists { dirty = true fmt.Printf("Added %s to cups_printer_attributes\n", a) config.CUPSPrinterAttributes = append(config.CUPSPrinterAttributes, a) } } } if _, exists := configMap["cups_job_full_username"]; !exists { dirty = true fmt.Println("Added cups_job_full_username") config.CUPSJobFullUsername = lib.DefaultConfig.CUPSJobFullUsername } if _, exists := configMap["cups_ignore_raw_printers"]; !exists { dirty = true fmt.Println("Added cups_ignore_raw_printers") config.CUPSIgnoreRawPrinters = lib.DefaultConfig.CUPSIgnoreRawPrinters } if _, exists := configMap["cups_ignore_class_printers"]; !exists { dirty = true fmt.Println("Added cups_ignore_class_printers") config.CUPSIgnoreClassPrinters = lib.DefaultConfig.CUPSIgnoreClassPrinters } if _, exists := configMap["copy_printer_info_to_display_name"]; !exists { dirty = true fmt.Println("Added copy_printer_info_to_display_name") config.CUPSCopyPrinterInfoToDisplayName = lib.DefaultConfig.CUPSCopyPrinterInfoToDisplayName } return dirty }
// commonUpdateConfig updates the config object, with the help of configMap, // which can indicate the absence of a value. // Returns true if config was changed. // // Each platform should define a function updateConfig(*lib.Config, map[string]interface{}) // which may call this function. func commonUpdateConfig(config *lib.Config, configMap map[string]interface{}) bool { dirty := false if _, exists := configMap["xmpp_server"]; !exists { dirty = true fmt.Println("Added xmpp_server") config.XMPPServer = lib.DefaultConfig.XMPPServer } if _, exists := configMap["xmpp_port"]; !exists { dirty = true fmt.Println("Added xmpp_port") config.XMPPPort = lib.DefaultConfig.XMPPPort } if _, exists := configMap["gcp_xmpp_ping_timeout"]; !exists { dirty = true fmt.Println("Added gcp_xmpp_ping_timeout") config.XMPPPingTimeout = lib.DefaultConfig.XMPPPingTimeout } if _, exists := configMap["gcp_xmpp_ping_interval_default"]; !exists { dirty = true fmt.Println("Added gcp_xmpp_ping_interval_default") config.XMPPPingInterval = lib.DefaultConfig.XMPPPingInterval } if _, exists := configMap["gcp_base_url"]; !exists { dirty = true fmt.Println("Added gcp_base_url") config.GCPBaseURL = lib.DefaultConfig.GCPBaseURL } if _, exists := configMap["gcp_oauth_client_id"]; !exists { dirty = true fmt.Println("Added gcp_oauth_client_id") config.GCPOAuthClientID = lib.DefaultConfig.GCPOAuthClientID } if _, exists := configMap["gcp_oauth_client_secret"]; !exists { dirty = true fmt.Println("Added gcp_oauth_client_secret") config.GCPOAuthClientSecret = lib.DefaultConfig.GCPOAuthClientSecret } if _, exists := configMap["gcp_oauth_auth_url"]; !exists { dirty = true fmt.Println("Added gcp_oauth_auth_url") config.GCPOAuthAuthURL = lib.DefaultConfig.GCPOAuthAuthURL } if _, exists := configMap["gcp_oauth_token_url"]; !exists { dirty = true fmt.Println("Added gcp_oauth_token_url") config.GCPOAuthTokenURL = lib.DefaultConfig.GCPOAuthTokenURL } if _, exists := configMap["gcp_max_concurrent_downloads"]; !exists { dirty = true fmt.Println("Added gcp_max_concurrent_downloads") config.GCPMaxConcurrentDownloads = lib.DefaultConfig.GCPMaxConcurrentDownloads } if _, exists := configMap["cups_job_queue_size"]; !exists { dirty = true fmt.Println("Added cups_job_queue_size") config.NativeJobQueueSize = lib.DefaultConfig.NativeJobQueueSize } if _, exists := configMap["cups_printer_poll_interval"]; !exists { dirty = true fmt.Println("Added cups_printer_poll_interval") config.NativePrinterPollInterval = lib.DefaultConfig.NativePrinterPollInterval } if _, exists := configMap["prefix_job_id_to_job_title"]; !exists { dirty = true fmt.Println("Added prefix_job_id_to_job_title") config.PrefixJobIDToJobTitle = lib.DefaultConfig.PrefixJobIDToJobTitle } if _, exists := configMap["display_name_prefix"]; !exists { dirty = true fmt.Println("Added display_name_prefix") config.DisplayNamePrefix = lib.DefaultConfig.DisplayNamePrefix } if _, exists := configMap["snmp_enable"]; !exists { dirty = true fmt.Println("Added snmp_enable") config.SNMPEnable = lib.DefaultConfig.SNMPEnable } if _, exists := configMap["snmp_community"]; !exists { dirty = true fmt.Println("Added snmp_community") config.SNMPCommunity = lib.DefaultConfig.SNMPCommunity } if _, exists := configMap["snmp_max_connections"]; !exists { dirty = true fmt.Println("Added snmp_max_connections") config.SNMPMaxConnections = lib.DefaultConfig.SNMPMaxConnections } if _, exists := configMap["printer_blacklist"]; !exists { dirty = true fmt.Println("Added printer_blacklist") config.PrinterBlacklist = lib.DefaultConfig.PrinterBlacklist } if _, exists := configMap["local_printing_enable"]; !exists { dirty = true fmt.Println("Added local_printing_enable") config.LocalPrintingEnable = lib.DefaultConfig.LocalPrintingEnable } if _, exists := configMap["cloud_printing_enable"]; !exists { dirty = true _, robot_token_exists := configMap["robot_refresh_token"] fmt.Println("Added cloud_printing_enable") if robot_token_exists { config.CloudPrintingEnable = true } else { config.CloudPrintingEnable = lib.DefaultConfig.CloudPrintingEnable } } if _, exists := configMap["log_level"]; !exists { dirty = true fmt.Println("Added log_level") config.LogLevel = lib.DefaultConfig.LogLevel } return dirty }