|
@@ -1357,205 +1357,6 @@ func (u *User) GetDataTransferLimits() (int64, int64, int64) {
|
|
|
return ul, dl, total
|
|
|
}
|
|
|
|
|
|
-// GetQuotaSummary returns used quota and limits if defined
|
|
|
-func (u *User) GetQuotaSummary() string {
|
|
|
- var sb strings.Builder
|
|
|
-
|
|
|
- addSection := func() {
|
|
|
- if sb.Len() > 0 {
|
|
|
- sb.WriteString(". ")
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if u.UsedQuotaFiles > 0 || u.QuotaFiles > 0 {
|
|
|
- sb.WriteString(fmt.Sprintf("Files: %v", u.UsedQuotaFiles))
|
|
|
- if u.QuotaFiles > 0 {
|
|
|
- sb.WriteString(fmt.Sprintf("/%v", u.QuotaFiles))
|
|
|
- }
|
|
|
- }
|
|
|
- if u.UsedQuotaSize > 0 || u.QuotaSize > 0 {
|
|
|
- addSection()
|
|
|
- sb.WriteString(fmt.Sprintf("Size: %v", util.ByteCountIEC(u.UsedQuotaSize)))
|
|
|
- if u.QuotaSize > 0 {
|
|
|
- sb.WriteString(fmt.Sprintf("/%v", util.ByteCountIEC(u.QuotaSize)))
|
|
|
- }
|
|
|
- }
|
|
|
- if u.TotalDataTransfer > 0 {
|
|
|
- addSection()
|
|
|
- total := u.UsedDownloadDataTransfer + u.UsedUploadDataTransfer
|
|
|
- sb.WriteString(fmt.Sprintf("Transfer: %v/%v", util.ByteCountIEC(total),
|
|
|
- util.ByteCountIEC(u.TotalDataTransfer*1048576)))
|
|
|
- }
|
|
|
- if u.UploadDataTransfer > 0 {
|
|
|
- addSection()
|
|
|
- sb.WriteString(fmt.Sprintf("UL: %v/%v", util.ByteCountIEC(u.UsedUploadDataTransfer),
|
|
|
- util.ByteCountIEC(u.UploadDataTransfer*1048576)))
|
|
|
- }
|
|
|
- if u.DownloadDataTransfer > 0 {
|
|
|
- addSection()
|
|
|
- sb.WriteString(fmt.Sprintf("DL: %v/%v", util.ByteCountIEC(u.UsedDownloadDataTransfer),
|
|
|
- util.ByteCountIEC(u.DownloadDataTransfer*1048576)))
|
|
|
- }
|
|
|
- return sb.String()
|
|
|
-}
|
|
|
-
|
|
|
-// GetPermissionsAsString returns the user's permissions as comma separated string
|
|
|
-func (u *User) GetPermissionsAsString() string {
|
|
|
- result := ""
|
|
|
- for dir, perms := range u.Permissions {
|
|
|
- dirPerms := strings.Join(perms, ", ")
|
|
|
- dp := fmt.Sprintf("%q: %q", dir, dirPerms)
|
|
|
- if dir == "/" {
|
|
|
- if result != "" {
|
|
|
- result = dp + ", " + result
|
|
|
- } else {
|
|
|
- result = dp
|
|
|
- }
|
|
|
- } else {
|
|
|
- if result != "" {
|
|
|
- result += ", "
|
|
|
- }
|
|
|
- result += dp
|
|
|
- }
|
|
|
- }
|
|
|
- return result
|
|
|
-}
|
|
|
-
|
|
|
-// GetBandwidthAsString returns bandwidth limits if defines
|
|
|
-func (u *User) GetBandwidthAsString() string {
|
|
|
- var sb strings.Builder
|
|
|
- sb.WriteString("DL: ")
|
|
|
- if u.DownloadBandwidth > 0 {
|
|
|
- sb.WriteString(util.ByteCountIEC(u.DownloadBandwidth*1000) + "/s.")
|
|
|
- } else {
|
|
|
- sb.WriteString("unlimited.")
|
|
|
- }
|
|
|
- sb.WriteString(" UL: ")
|
|
|
- if u.UploadBandwidth > 0 {
|
|
|
- sb.WriteString(util.ByteCountIEC(u.UploadBandwidth*1000) + "/s.")
|
|
|
- } else {
|
|
|
- sb.WriteString("unlimited.")
|
|
|
- }
|
|
|
- return sb.String()
|
|
|
-}
|
|
|
-
|
|
|
-// GetMFAStatusAsString returns MFA status
|
|
|
-func (u *User) GetMFAStatusAsString() string {
|
|
|
- if u.Filters.TOTPConfig.Enabled {
|
|
|
- return strings.Join(u.Filters.TOTPConfig.Protocols, ", ")
|
|
|
- }
|
|
|
- return "Disabled"
|
|
|
-}
|
|
|
-
|
|
|
-// GetLastLoginAsString returns the last login as string
|
|
|
-func (u *User) GetLastLoginAsString() string {
|
|
|
- if u.LastLogin > 0 {
|
|
|
- return util.GetTimeFromMsecSinceEpoch(u.LastLogin).UTC().Format(iso8601UTCFormat)
|
|
|
- }
|
|
|
- return ""
|
|
|
-}
|
|
|
-
|
|
|
-// GetLastQuotaUpdateAsString returns the last quota update as string
|
|
|
-func (u *User) GetLastQuotaUpdateAsString() string {
|
|
|
- if u.LastQuotaUpdate > 0 {
|
|
|
- return util.GetTimeFromMsecSinceEpoch(u.LastQuotaUpdate).UTC().Format(iso8601UTCFormat)
|
|
|
- }
|
|
|
- return ""
|
|
|
-}
|
|
|
-
|
|
|
-// GetStorageDescrition returns the storage description
|
|
|
-func (u *User) GetStorageDescrition() string {
|
|
|
- switch u.FsConfig.Provider {
|
|
|
- case sdk.LocalFilesystemProvider:
|
|
|
- return fmt.Sprintf("Local: %v", u.GetHomeDir())
|
|
|
- case sdk.S3FilesystemProvider:
|
|
|
- return fmt.Sprintf("S3: %v", u.FsConfig.S3Config.Bucket)
|
|
|
- case sdk.GCSFilesystemProvider:
|
|
|
- return fmt.Sprintf("GCS: %v", u.FsConfig.GCSConfig.Bucket)
|
|
|
- case sdk.AzureBlobFilesystemProvider:
|
|
|
- return fmt.Sprintf("AzBlob: %v", u.FsConfig.AzBlobConfig.Container)
|
|
|
- case sdk.CryptedFilesystemProvider:
|
|
|
- return fmt.Sprintf("Encrypted: %v", u.GetHomeDir())
|
|
|
- case sdk.SFTPFilesystemProvider:
|
|
|
- return fmt.Sprintf("SFTP: %v", u.FsConfig.SFTPConfig.Endpoint)
|
|
|
- case sdk.HTTPFilesystemProvider:
|
|
|
- return fmt.Sprintf("HTTP: %v", u.FsConfig.HTTPConfig.Endpoint)
|
|
|
- default:
|
|
|
- return ""
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-// GetGroupsAsString returns the user's groups as a string
|
|
|
-func (u *User) GetGroupsAsString() string {
|
|
|
- if len(u.Groups) == 0 {
|
|
|
- return ""
|
|
|
- }
|
|
|
- var groups []string
|
|
|
- for _, g := range u.Groups {
|
|
|
- if g.Type == sdk.GroupTypePrimary {
|
|
|
- groups = append(groups, "")
|
|
|
- copy(groups[1:], groups)
|
|
|
- groups[0] = g.Name
|
|
|
- } else {
|
|
|
- groups = append(groups, g.Name)
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return strings.Join(groups, ",")
|
|
|
-}
|
|
|
-
|
|
|
-// GetInfoString returns user's info as string.
|
|
|
-// Storage provider, number of public keys, max sessions, uid,
|
|
|
-// gid, denied and allowed IP/Mask are returned
|
|
|
-func (u *User) GetInfoString() string {
|
|
|
- var result strings.Builder
|
|
|
- if len(u.PublicKeys) > 0 {
|
|
|
- result.WriteString(fmt.Sprintf("Public keys: %v. ", len(u.PublicKeys)))
|
|
|
- }
|
|
|
- if u.MaxSessions > 0 {
|
|
|
- result.WriteString(fmt.Sprintf("Max sessions: %v. ", u.MaxSessions))
|
|
|
- }
|
|
|
- if u.UID > 0 {
|
|
|
- result.WriteString(fmt.Sprintf("UID: %v. ", u.UID))
|
|
|
- }
|
|
|
- if u.GID > 0 {
|
|
|
- result.WriteString(fmt.Sprintf("GID: %v. ", u.GID))
|
|
|
- }
|
|
|
- if len(u.Filters.DeniedLoginMethods) > 0 {
|
|
|
- result.WriteString(fmt.Sprintf("Denied login methods: %v. ", strings.Join(u.Filters.DeniedLoginMethods, ",")))
|
|
|
- }
|
|
|
- if len(u.Filters.DeniedProtocols) > 0 {
|
|
|
- result.WriteString(fmt.Sprintf("Denied protocols: %v. ", strings.Join(u.Filters.DeniedProtocols, ",")))
|
|
|
- }
|
|
|
- if len(u.Filters.DeniedIP) > 0 {
|
|
|
- result.WriteString(fmt.Sprintf("Denied IP/Mask: %v. ", len(u.Filters.DeniedIP)))
|
|
|
- }
|
|
|
- if len(u.Filters.AllowedIP) > 0 {
|
|
|
- result.WriteString(fmt.Sprintf("Allowed IP/Mask: %v", len(u.Filters.AllowedIP)))
|
|
|
- }
|
|
|
- return result.String()
|
|
|
-}
|
|
|
-
|
|
|
-// GetStatusAsString returns the user status as a string
|
|
|
-func (u *User) GetStatusAsString() string {
|
|
|
- if u.ExpirationDate > 0 && u.ExpirationDate < util.GetTimeAsMsSinceEpoch(time.Now()) {
|
|
|
- return "Expired"
|
|
|
- }
|
|
|
- if u.Status == 1 {
|
|
|
- return "Active"
|
|
|
- }
|
|
|
- return "Inactive"
|
|
|
-}
|
|
|
-
|
|
|
-// GetExpirationDateAsString returns expiration date formatted as YYYY-MM-DD
|
|
|
-func (u *User) GetExpirationDateAsString() string {
|
|
|
- if u.ExpirationDate > 0 {
|
|
|
- t := util.GetTimeFromMsecSinceEpoch(u.ExpirationDate)
|
|
|
- return t.Format("2006-01-02")
|
|
|
- }
|
|
|
- return ""
|
|
|
-}
|
|
|
-
|
|
|
// GetAllowedIPAsString returns the allowed IP as comma separated string
|
|
|
func (u *User) GetAllowedIPAsString() string {
|
|
|
return strings.Join(u.Filters.AllowedIP, ",")
|