Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions cmd/mailbox.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
var (
quota int
storageBasePath string
displayName string
)

var mailboxCmd = &cobra.Command{
Expand Down
5 changes: 3 additions & 2 deletions cmd/mailboxAdd.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ var mailboxAddCmd = &cobra.Command{
}

if len(args[1]) < passwordMinLength {
return errors.New("[PLAIN_PASSWORD] length to short (min length " + strconv.Itoa(passwordMinLength) + ")")
return errors.New("[PLAIN_PASSWORD] length too short (min length " + strconv.Itoa(passwordMinLength) + ")")
}

return nil
Expand All @@ -37,7 +37,7 @@ var mailboxAddCmd = &cobra.Command{
defer server.Close()

mailboxEmail, password := args[0], args[1]
err = server.MailboxAdd(mailboxEmail, password, quota, storageBasePath)
err = server.MailboxAdd(mailboxEmail, password, quota, storageBasePath, displayName)
if err != nil {
fatal("%v\n", err)
}
Expand All @@ -51,6 +51,7 @@ func init() {

mailboxAddCmd.Flags().IntVarP(&quota, "quota", "q", 2048, "Quota (default 2048 MB)")
mailboxAddCmd.Flags().StringVarP(&storageBasePath, "storage-path", "s", "/var/vmail/vmail1", "Storage base path")
mailboxAddCmd.Flags().StringVarP(&displayName, "name", "n", "", "Display Name")

mailboxAddCmd.SetUsageTemplate(usageTemplate("mailbox add [MAILBOX_EMAIL] [PLAIN_PASSWORD]", printFlags))
}
1 change: 1 addition & 0 deletions cmd/mailboxInfo.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ func printMailboxInfo(mailbox iredmail.Mailbox, prettyPrint bool) {
table.SetColumnColor(tablewriter.Colors{tablewriter.Bold}, tablewriter.Colors{})
}

table.Append([]string{"Display Name", mailbox.Name})
table.Append([]string{"Quota", fmt.Sprintf("%v MB", strconv.Itoa(mailbox.Quota))})

if len(mailbox.MailboxAliases) > 0 {
Expand Down
4 changes: 2 additions & 2 deletions cmd/mailboxList.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,10 @@ func printUserList(mailboxes iredmail.Mailboxes) {
}

table := tablewriter.NewWriter(os.Stdout)
table.SetHeader([]string{"Mailbox", "Quota (MB)"})
table.SetHeader([]string{"Display Name", "Mailbox", "Quota (MB)"})

for _, m := range mailboxes {
table.Append([]string{m.Email, strconv.Itoa(m.Quota)})
table.Append([]string{m.Name, m.Email, strconv.Itoa(m.Quota)})
}
table.Render()
}
16 changes: 13 additions & 3 deletions cmd/mailboxUpdate.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ var (
// mailboxUpdateCmd represents the 'mailbox update' command
var mailboxUpdateCmd = &cobra.Command{
Use: "update",
Short: "Update keep-copy and quota",
Long: `Update keep-copy and quota.
Short: "Update keep-copy, password, quota, and name",
Long: `Update keep-copy, password, quota, and name.

-k, --keep-copy:
If mailboxes with forwardings should not keep a copy of the forwarded email use "--keep-copy no".
Expand Down Expand Up @@ -74,6 +74,15 @@ Set quota "--quota 4096" (in MB).`,
updated = true
}

if cmd.Flag("name").Changed {
err = server.MailboxSetName(mailboxEmail, displayName)
if err != nil {
fatal("%v\n", err)
}
info("Updating quota...\n")
updated = true
}

if cmd.Flag("keep-copy").Changed {
err := server.MailboxSetKeepCopy(mailboxEmail, keepCopyInMailbox == "yes")
if err != nil {
Expand All @@ -86,7 +95,7 @@ Set quota "--quota 4096" (in MB).`,
if cmd.Flag("password").Changed {
pw := cmd.Flag("password").Value.String()
if len(pw) < passwordMinLength {
fatal("password length to short (min length " + strconv.Itoa(passwordMinLength) + ")")
fatal("password length too short (min length " + strconv.Itoa(passwordMinLength) + ")")
}
err := server.MailboxSetPassword(mailboxEmail, pw)
if err != nil {
Expand All @@ -110,6 +119,7 @@ func init() {
mailboxUpdateCmd.Flags().IntVarP(&quota, "quota", "q", 2048, "Sets quota (in MB)")
mailboxUpdateCmd.Flags().StringVarP(&keepCopyInMailbox, "keep-copy", "k", "yes", "Sets keep-copy of forwardings")
mailboxUpdateCmd.Flags().StringP("password", "p", "", "Set password")
mailboxUpdateCmd.Flags().StringVarP(&displayName, "name", "n", "", "Display Name")

mailboxUpdateCmd.SetUsageTemplate(usageTemplate("mailbox update [MAILBOX_EMAIL]", printFlags))
}
23 changes: 21 additions & 2 deletions iredmail/mailbox.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,9 +129,13 @@ func (s *Server) Mailbox(mailboxEmail string) (Mailbox, error) {
}

// MailboxAdd adds a new mailbox
func (s *Server) MailboxAdd(mailboxEmail, password string, quota int, storageBasePath string) error {
func (s *Server) MailboxAdd(mailboxEmail, password string, quota int, storageBasePath string, displayName string) error {
name, domain := parseEmail(mailboxEmail)

if displayName != "" {
name = displayName
}

m := Mailbox{
Email: mailboxEmail,
Name: name,
Expand Down Expand Up @@ -200,7 +204,7 @@ func (s *Server) MailboxAdd(mailboxEmail, password string, quota int, storageBas
return err
}

// MailboxDelete delets a mailbox
// MailboxDelete deletes a mailbox
func (s *Server) MailboxDelete(mailboxEmail string) error {
mailboxExists, err := s.mailboxExists(mailboxEmail)
if err != nil {
Expand Down Expand Up @@ -254,6 +258,21 @@ func (s *Server) MailboxSetQuota(mailboxEmail string, quota int) error {
return err
}


// MailboxSetName sets the mailbox display name
func (s *Server) MailboxSetName(mailboxEmail string, displayName string) error {
sqlQuery := `UPDATE mailbox
SET name = ?
WHERE username = ?;`
_, err := s.DB.Exec(sqlQuery, displayName, mailboxEmail)
if err != nil {
return err
}

return err
}


// MailboxSetKeepCopy sets the keep-copy behavior if forwardings exist
func (s *Server) MailboxSetKeepCopy(mailboxEmail string, keepCopyInMailbox bool) error {
mailboxExists, err := s.mailboxExists(mailboxEmail)
Expand Down
2 changes: 1 addition & 1 deletion iredmail/mailboxAlias.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ func (s *Server) MailboxAliasDelete(aliasEmail string) error {
return err
}

// MailboxAliasDeleteAll delets all mailbox aliases of a mailbox
// MailboxAliasDeleteAll deletes all mailbox aliases of a mailbox
func (s *Server) MailboxAliasDeleteAll(mailboxEmail string) error {
sqlQuery := "DELETE FROM forwardings WHERE forwarding = ? AND is_forwarding = 0 AND is_alias = 1 AND is_list = 0;"
_, err := s.DB.Exec(sqlQuery, mailboxEmail)
Expand Down
8 changes: 4 additions & 4 deletions iredmail/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@ import (

const (
// Version of iredmail-cli
Version = "0.2.8"
Version = "0.2.9"

releaseFile = "/etc/iredmail-release"
supportedReleaseMin = "0.9.8"
supportedReleaseMax = "0.9.8"
supportedReleaseMin = "1.0.0"
supportedReleaseMax = "1.2.0"
)

var (
Expand All @@ -40,7 +40,7 @@ func GetIredMailVersion() (iredMailVersion, error) {
return version, err
}

re := regexp.MustCompile(`^\d\.\d\.\d\s*MYSQL\s*edition`)
re := regexp.MustCompile(`^\d\.\d\.\d\s*(MYSQL|MARIADB)\s*edition`)
versionLine := re.FindString(string(file))

if versionLine == "" {
Expand Down