You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: config.go
    path of file: ./repos/plik/server/common
    
    the code of the file until where you have to start completion: package common

import (
	"crypto/tls"
	"fmt"
	"net"
	"net/url"
	"os"
	"strconv"
	"strings"
	"time"

	"github.com/root-gg/utils"

	"github.com/BurntSushi/toml"
	"github.com/dustin/go-humanize"
	"github.com/iancoleman/strcase"
	str2duration "github.com/xhit/go-str2duration/v2"

	"github.com/root-gg/logger"
)

const envPrefix = "PLIKD_"

// Configuration object
type Configuration struct {
	Debug         bool   `json:"-"`
	DebugRequests bool   `json:"-"`
	LogLevel      string `json:"-"`

	ListenAddress  string `json:"-"`
	ListenPort     int    `json:"-"`
	MetricsAddress string `json:"-"`
	MetricsPort    int    `json:"-"`
	Path           string `json:"-"`

	MaxFileSizeStr   string `json:"-"`
	MaxFileSize      int64  `json:"maxFileSize"`
	MaxUserSizeStr   string `json:"-"`
	MaxUserSize      int64  `json:"maxUserSize"`
	MaxFilePerUpload int    `json:"maxFilePerUpload"`

	DefaultTTLStr string `json:"-"`
	DefaultTTL    int    `json:"defaultTTL"`
	MaxTTLStr     string `json:"-"`
	MaxTTL        int    `json:"maxTTL"`

	SslEnabled bool   `json:"-"`
	SslCert    string `json:"-"`
	SslKey     string `json:"-"`
	TlsVersion string `json:"-"`

	NoWebInterface      bool     `json:"-"`
	DownloadDomain      string   `json:"downloadDomain"`
	DownloadDomainAlias []string 
    
func (config *Configuration) String() string {
	str := ""
	if config.DownloadDomain != "" {
		str += fmt.Sprintf("Download domain : %s\n", config.DownloadDomain)
		if len(config.DownloadDomainAlias) > 0 {
			str += fmt.Sprintf("Download domain alias: %v\n", config.DownloadDomainAlias)
		}
	}

	str += fmt.Sprintf("Maximum file size : %s\n", humanize.Bytes(uint64(config.MaxFileSize)))
	str += fmt.Sprintf("Maximum files per upload : %d\n", config.MaxFilePerUpload)

	if config.DefaultTTL > 0 {
		str += fmt.Sprintf("Default upload TTL : %s\n", HumanDuration(time.Duration(config.DefaultTTL)*time.Second))
	} else {
		str += "Default upload TTL : unlimited\n"
	}

	if config.MaxTTL > 0 {
		str += fmt.Sprintf("Maximum upload TTL : %s\n", HumanDuration(time.Duration(config.MaxTTL)*time.Second))
	} else {
		str += "Maximum upload TTL : unlimited\n"
	}

	str += fmt.Sprintf("One shot upload : %s\n", config.FeatureOneShot)
	str += fmt.Sprintf("Removable upload : %s\n", config.FeatureRemovable)
	str += fmt.Sprintf("Streaming upload : %s\n", config.FeatureStream)
	str += fmt.Sprintf("Upload password : %s\n", config.FeaturePassword)
	str += fmt.Sprintf("Upload comments : %s\n", config.FeatureComments)
	str += fmt.Sprintf("Upload set TTL : %s\n", config.FeatureSetTTL)
	str += fmt.Sprintf("Upload extend TTL : %s\n", config.FeatureExtendTTL)

	str += fmt.Sprintf("Authentication : %s\n", config.FeatureAuthentication)
	if config.FeatureAuthentication != FeatureDisabled {
		if config.GoogleAuthentication {
			str += "Google authentication : enabled\n"
		} else {
			str += "Google authentication : disabled\n"
		}

		if config.OvhAuthentication {
			str += "OVH authentication : enabled\n"
			if config.OvhAPIEndpoint != "" {
				str += fmt.Sprintf("OVH API endpoint : %s\n", config.OvhAPIEndpoint)
			}
		} else {
			str += "OVH authentication : disabled\n"
		}
	}

	return str
}