diff --git a/controller/limits/accountWarningAction.go b/controller/limits/accountWarningAction.go index a799b423..7595c15f 100644 --- a/controller/limits/accountWarningAction.go +++ b/controller/limits/accountWarningAction.go @@ -23,26 +23,30 @@ func newAccountWarningAction(cfg *emailUi.Config, str *store.Store, edge *rest_m func (a *accountWarningAction) HandleAccount(acct *store.Account, rxBytes, txBytes int64, limit *BandwidthPerPeriod, trx *sqlx.Tx) error { logrus.Infof("warning '%v'", acct.Email) - rxLimit := "(unlimited bytes)" - if limit.Limit.Rx != Unlimited { - rxLimit = util.BytesToSize(limit.Limit.Rx) - } - txLimit := "(unlimited bytes)" - if limit.Limit.Tx != Unlimited { - txLimit = util.BytesToSize(limit.Limit.Tx) - } - totalLimit := "(unlimited bytes)" - if limit.Limit.Total != Unlimited { - totalLimit = util.BytesToSize(limit.Limit.Total) - } + if a.cfg != nil { + rxLimit := "(unlimited bytes)" + if limit.Limit.Rx != Unlimited { + rxLimit = util.BytesToSize(limit.Limit.Rx) + } + txLimit := "(unlimited bytes)" + if limit.Limit.Tx != Unlimited { + txLimit = util.BytesToSize(limit.Limit.Tx) + } + totalLimit := "(unlimited bytes)" + if limit.Limit.Total != Unlimited { + totalLimit = util.BytesToSize(limit.Limit.Total) + } - detail := newDetailMessage() - detail = detail.append("Your account has received %v and sent %v (for a total of %v), which has triggered a transfer limit warning.", util.BytesToSize(rxBytes), util.BytesToSize(txBytes), util.BytesToSize(rxBytes+txBytes)) - detail = detail.append("This zrok instance only allows an account to receive %v, send %v, totalling not more than %v for each %v.", rxLimit, txLimit, totalLimit, limit.Period) - detail = detail.append("If you exceed the transfer limit, access to your shares will be temporarily disabled (until the last %v falls below the transfer limit)", limit.Period) + detail := newDetailMessage() + detail = detail.append("Your account has received %v and sent %v (for a total of %v), which has triggered a transfer limit warning.", util.BytesToSize(rxBytes), util.BytesToSize(txBytes), util.BytesToSize(rxBytes+txBytes)) + detail = detail.append("This zrok instance only allows an account to receive %v, send %v, totalling not more than %v for each %v.", rxLimit, txLimit, totalLimit, limit.Period) + detail = detail.append("If you exceed the transfer limit, access to your shares will be temporarily disabled (until the last %v falls below the transfer limit)", limit.Period) - if err := sendLimitWarningEmail(a.cfg, acct.Email, detail); err != nil { - return errors.Wrapf(err, "error sending limit warning email to '%v'", acct.Email) + if err := sendLimitWarningEmail(a.cfg, acct.Email, detail); err != nil { + return errors.Wrapf(err, "error sending limit warning email to '%v'", acct.Email) + } + } else { + logrus.Warnf("skipping warning email for account limit; no email configuration specified") } return nil diff --git a/controller/limits/environmentWarningAction.go b/controller/limits/environmentWarningAction.go index 120af20d..b8bcb3db 100644 --- a/controller/limits/environmentWarningAction.go +++ b/controller/limits/environmentWarningAction.go @@ -23,33 +23,37 @@ func newEnvironmentWarningAction(cfg *emailUi.Config, str *store.Store, edge *re func (a *environmentWarningAction) HandleEnvironment(env *store.Environment, rxBytes, txBytes int64, limit *BandwidthPerPeriod, trx *sqlx.Tx) error { logrus.Infof("warning '%v'", env.ZId) - if env.AccountId != nil { - acct, err := a.str.GetAccount(*env.AccountId, trx) - if err != nil { - return err - } + if a.cfg != nil { + if env.AccountId != nil { + acct, err := a.str.GetAccount(*env.AccountId, trx) + if err != nil { + return err + } - rxLimit := "unlimited bytes" - if limit.Limit.Rx != Unlimited { - rxLimit = util.BytesToSize(limit.Limit.Rx) - } - txLimit := "unlimited bytes" - if limit.Limit.Tx != Unlimited { - txLimit = util.BytesToSize(limit.Limit.Tx) - } - totalLimit := "unlimited bytes" - if limit.Limit.Total != Unlimited { - totalLimit = util.BytesToSize(limit.Limit.Total) - } + rxLimit := "unlimited bytes" + if limit.Limit.Rx != Unlimited { + rxLimit = util.BytesToSize(limit.Limit.Rx) + } + txLimit := "unlimited bytes" + if limit.Limit.Tx != Unlimited { + txLimit = util.BytesToSize(limit.Limit.Tx) + } + totalLimit := "unlimited bytes" + if limit.Limit.Total != Unlimited { + totalLimit = util.BytesToSize(limit.Limit.Total) + } - detail := newDetailMessage() - detail = detail.append("Your environment '%v' has received %v and sent %v (for a total of %v), which has triggered a transfer limit warning.", env.Description, util.BytesToSize(rxBytes), util.BytesToSize(txBytes), util.BytesToSize(rxBytes+txBytes)) - detail = detail.append("This zrok instance only allows a share to receive %v, send %v, totalling not more than %v for each %v.", rxLimit, txLimit, totalLimit, limit.Period) - detail = detail.append("If you exceed the transfer limit, access to your shares will be temporarily disabled (until the last %v falls below the transfer limit).", limit.Period) + detail := newDetailMessage() + detail = detail.append("Your environment '%v' has received %v and sent %v (for a total of %v), which has triggered a transfer limit warning.", env.Description, util.BytesToSize(rxBytes), util.BytesToSize(txBytes), util.BytesToSize(rxBytes+txBytes)) + detail = detail.append("This zrok instance only allows a share to receive %v, send %v, totalling not more than %v for each %v.", rxLimit, txLimit, totalLimit, limit.Period) + detail = detail.append("If you exceed the transfer limit, access to your shares will be temporarily disabled (until the last %v falls below the transfer limit).", limit.Period) - if err := sendLimitWarningEmail(a.cfg, acct.Email, detail); err != nil { - return errors.Wrapf(err, "error sending limit warning email to '%v'", acct.Email) + if err := sendLimitWarningEmail(a.cfg, acct.Email, detail); err != nil { + return errors.Wrapf(err, "error sending limit warning email to '%v'", acct.Email) + } } + } else { + logrus.Warnf("skipping warning email for environment limit; no email configuration specified") } return nil diff --git a/controller/limits/shareWarningAction.go b/controller/limits/shareWarningAction.go index 5781a284..3b2af3a0 100644 --- a/controller/limits/shareWarningAction.go +++ b/controller/limits/shareWarningAction.go @@ -23,38 +23,42 @@ func newShareWarningAction(cfg *emailUi.Config, str *store.Store, edge *rest_man func (a *shareWarningAction) HandleShare(shr *store.Share, rxBytes, txBytes int64, limit *BandwidthPerPeriod, trx *sqlx.Tx) error { logrus.Infof("warning '%v'", shr.Token) - env, err := a.str.GetEnvironment(shr.EnvironmentId, trx) - if err != nil { - return err - } - - if env.AccountId != nil { - acct, err := a.str.GetAccount(*env.AccountId, trx) + if a.cfg != nil { + env, err := a.str.GetEnvironment(shr.EnvironmentId, trx) if err != nil { return err } - rxLimit := "unlimited bytes" - if limit.Limit.Rx != Unlimited { - rxLimit = util.BytesToSize(limit.Limit.Rx) - } - txLimit := "unlimited bytes" - if limit.Limit.Tx != Unlimited { - txLimit = util.BytesToSize(limit.Limit.Tx) - } - totalLimit := "unlimited bytes" - if limit.Limit.Total != Unlimited { - totalLimit = util.BytesToSize(limit.Limit.Total) - } + if env.AccountId != nil { + acct, err := a.str.GetAccount(*env.AccountId, trx) + if err != nil { + return err + } - detail := newDetailMessage() - detail = detail.append("Your share '%v' has received %v and sent %v (for a total of %v), which has triggered a transfer limit warning.", shr.Token, util.BytesToSize(rxBytes), util.BytesToSize(txBytes), util.BytesToSize(rxBytes+txBytes)) - detail = detail.append("This zrok instance only allows a share to receive %v, send %v, totalling not more than %v for each %v.", rxLimit, txLimit, totalLimit, limit.Period) - detail = detail.append("If you exceed the transfer limit, access to your shares will be temporarily disabled (until the last %v falls below the transfer limit).", limit.Period) + rxLimit := "unlimited bytes" + if limit.Limit.Rx != Unlimited { + rxLimit = util.BytesToSize(limit.Limit.Rx) + } + txLimit := "unlimited bytes" + if limit.Limit.Tx != Unlimited { + txLimit = util.BytesToSize(limit.Limit.Tx) + } + totalLimit := "unlimited bytes" + if limit.Limit.Total != Unlimited { + totalLimit = util.BytesToSize(limit.Limit.Total) + } - if err := sendLimitWarningEmail(a.cfg, acct.Email, detail); err != nil { - return errors.Wrapf(err, "error sending limit warning email to '%v'", acct.Email) + detail := newDetailMessage() + detail = detail.append("Your share '%v' has received %v and sent %v (for a total of %v), which has triggered a transfer limit warning.", shr.Token, util.BytesToSize(rxBytes), util.BytesToSize(txBytes), util.BytesToSize(rxBytes+txBytes)) + detail = detail.append("This zrok instance only allows a share to receive %v, send %v, totalling not more than %v for each %v.", rxLimit, txLimit, totalLimit, limit.Period) + detail = detail.append("If you exceed the transfer limit, access to your shares will be temporarily disabled (until the last %v falls below the transfer limit).", limit.Period) + + if err := sendLimitWarningEmail(a.cfg, acct.Email, detail); err != nil { + return errors.Wrapf(err, "error sending limit warning email to '%v'", acct.Email) + } } + } else { + logrus.Warnf("skipping warning email for share limit; no email configuration specified") } return nil