fleet/server/datastore/mysql/migrations/tables/20210816141251_AddJSONKeyValueTable.go
2021-08-20 12:27:41 -03:00

120 lines
3.1 KiB
Go

package tables
import (
"database/sql"
"encoding/json"
"github.com/fleetdm/fleet/v4/server/fleet"
"github.com/pkg/errors"
)
func init() {
MigrationClient.AddMigration(Up_20210816141251, Down_20210816141251)
}
func Up_20210816141251(tx *sql.Tx) error {
sql := `
CREATE TABLE IF NOT EXISTS app_config_json (
id int(10) unsigned NOT NULL UNIQUE default 1,
json_value JSON NOT NULL,
created_at timestamp DEFAULT CURRENT_TIMESTAMP,
updated_at timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id)
)
`
if _, err := tx.Exec(sql); err != nil {
return errors.Wrap(err, "create app_config_json")
}
row := tx.QueryRow(
`SELECT
org_name,
org_logo_url,
server_url,
smtp_configured,
smtp_sender_address,
smtp_server,
smtp_port,
smtp_authentication_type,
smtp_enable_ssl_tls,
smtp_authentication_method,
smtp_domain,
smtp_user_name,
smtp_password,
smtp_verify_ssl_certs,
smtp_enable_start_tls,
entity_id,
issuer_uri,
idp_image_url,
metadata,
metadata_url,
idp_name,
enable_sso,
host_expiry_enabled,
host_expiry_window,
live_query_disabled,
additional_queries,
enable_sso_idp_login,
agent_options,
enable_analytics,
vulnerability_databases_path,
enable_host_users,
enable_software_inventory
FROM app_configs LIMIT 1`,
)
config := &fleet.AppConfig{}
var vulnPath *string
err := row.Scan(
&config.OrgInfo.OrgName,
&config.OrgInfo.OrgLogoURL,
&config.ServerSettings.ServerURL,
&config.SMTPSettings.SMTPConfigured,
&config.SMTPSettings.SMTPSenderAddress,
&config.SMTPSettings.SMTPServer,
&config.SMTPSettings.SMTPPort,
&config.SMTPSettings.SMTPAuthenticationType,
&config.SMTPSettings.SMTPEnableTLS,
&config.SMTPSettings.SMTPAuthenticationMethod,
&config.SMTPSettings.SMTPDomain,
&config.SMTPSettings.SMTPUserName,
&config.SMTPSettings.SMTPPassword,
&config.SMTPSettings.SMTPVerifySSLCerts,
&config.SMTPSettings.SMTPEnableStartTLS,
&config.SSOSettings.EntityID,
&config.SSOSettings.IssuerURI,
&config.SSOSettings.IDPImageURL,
&config.SSOSettings.Metadata,
&config.SSOSettings.MetadataURL,
&config.SSOSettings.IDPName,
&config.SSOSettings.EnableSSO,
&config.HostExpirySettings.HostExpiryEnabled,
&config.HostExpirySettings.HostExpiryWindow,
&config.ServerSettings.LiveQueryDisabled,
&config.HostSettings.AdditionalQueries,
&config.SSOSettings.EnableSSOIdPLogin,
&config.AgentOptions,
&config.ServerSettings.EnableAnalytics,
&vulnPath,
&config.HostSettings.EnableHostUsers,
&config.HostSettings.EnableSoftwareInventory,
)
if err != nil {
return errors.Wrap(err, "scanning config row")
}
if vulnPath != nil {
config.VulnerabilitySettings.DatabasesPath = *vulnPath
}
configBytes, err := json.Marshal(config)
if err != nil {
return errors.Wrap(err, "marshaling config")
}
_, err = tx.Exec(
`INSERT INTO app_config_json(json_value) VALUES(?) ON DUPLICATE KEY UPDATE json_value = VALUES(json_value)`,
configBytes,
)
return nil
}
func Down_20210816141251(tx *sql.Tx) error {
return nil
}