|
|
|
@ -33,10 +33,13 @@ const ( |
|
|
|
|
|
|
|
|
|
var sshOpLocker sync.Mutex |
|
|
|
|
|
|
|
|
|
// KeyType specifies the key type
|
|
|
|
|
type KeyType int |
|
|
|
|
|
|
|
|
|
const ( |
|
|
|
|
// KeyTypeUser specifies the user key
|
|
|
|
|
KeyTypeUser = iota + 1 |
|
|
|
|
// KeyTypeDeploy specifies the deploy key
|
|
|
|
|
KeyTypeDeploy |
|
|
|
|
) |
|
|
|
|
|
|
|
|
@ -58,28 +61,31 @@ type PublicKey struct { |
|
|
|
|
HasUsed bool `xorm:"-"` |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (k *PublicKey) BeforeInsert() { |
|
|
|
|
k.CreatedUnix = time.Now().Unix() |
|
|
|
|
// BeforeInsert will be invoked by XORM before inserting a record
|
|
|
|
|
func (key *PublicKey) BeforeInsert() { |
|
|
|
|
key.CreatedUnix = time.Now().Unix() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (k *PublicKey) BeforeUpdate() { |
|
|
|
|
k.UpdatedUnix = time.Now().Unix() |
|
|
|
|
// BeforeUpdate is invoked from XORM before updating this object.
|
|
|
|
|
func (key *PublicKey) BeforeUpdate() { |
|
|
|
|
key.UpdatedUnix = time.Now().Unix() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (k *PublicKey) AfterSet(colName string, _ xorm.Cell) { |
|
|
|
|
// AfterSet is invoked from XORM after setting the value of a field of this object.
|
|
|
|
|
func (key *PublicKey) AfterSet(colName string, _ xorm.Cell) { |
|
|
|
|
switch colName { |
|
|
|
|
case "created_unix": |
|
|
|
|
k.Created = time.Unix(k.CreatedUnix, 0).Local() |
|
|
|
|
key.Created = time.Unix(key.CreatedUnix, 0).Local() |
|
|
|
|
case "updated_unix": |
|
|
|
|
k.Updated = time.Unix(k.UpdatedUnix, 0).Local() |
|
|
|
|
k.HasUsed = k.Updated.After(k.Created) |
|
|
|
|
k.HasRecentActivity = k.Updated.Add(7 * 24 * time.Hour).After(time.Now()) |
|
|
|
|
key.Updated = time.Unix(key.UpdatedUnix, 0).Local() |
|
|
|
|
key.HasUsed = key.Updated.After(key.Created) |
|
|
|
|
key.HasRecentActivity = key.Updated.Add(7 * 24 * time.Hour).After(time.Now()) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// OmitEmail returns content of public key without email address.
|
|
|
|
|
func (k *PublicKey) OmitEmail() string { |
|
|
|
|
return strings.Join(strings.Split(k.Content, " ")[:2], " ") |
|
|
|
|
func (key *PublicKey) OmitEmail() string { |
|
|
|
|
return strings.Join(strings.Split(key.Content, " ")[:2], " ") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// AuthorizedString returns formatted public key string for authorized_keys file.
|
|
|
|
@ -573,32 +579,35 @@ type DeployKey struct { |
|
|
|
|
HasUsed bool `xorm:"-"` |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (k *DeployKey) BeforeInsert() { |
|
|
|
|
k.CreatedUnix = time.Now().Unix() |
|
|
|
|
// BeforeInsert will be invoked by XORM before inserting a record
|
|
|
|
|
func (key *DeployKey) BeforeInsert() { |
|
|
|
|
key.CreatedUnix = time.Now().Unix() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (k *DeployKey) BeforeUpdate() { |
|
|
|
|
k.UpdatedUnix = time.Now().Unix() |
|
|
|
|
// BeforeUpdate is invoked from XORM before updating this object.
|
|
|
|
|
func (key *DeployKey) BeforeUpdate() { |
|
|
|
|
key.UpdatedUnix = time.Now().Unix() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (k *DeployKey) AfterSet(colName string, _ xorm.Cell) { |
|
|
|
|
// AfterSet is invoked from XORM after setting the value of a field of this object.
|
|
|
|
|
func (key *DeployKey) AfterSet(colName string, _ xorm.Cell) { |
|
|
|
|
switch colName { |
|
|
|
|
case "created_unix": |
|
|
|
|
k.Created = time.Unix(k.CreatedUnix, 0).Local() |
|
|
|
|
key.Created = time.Unix(key.CreatedUnix, 0).Local() |
|
|
|
|
case "updated_unix": |
|
|
|
|
k.Updated = time.Unix(k.UpdatedUnix, 0).Local() |
|
|
|
|
k.HasUsed = k.Updated.After(k.Created) |
|
|
|
|
k.HasRecentActivity = k.Updated.Add(7 * 24 * time.Hour).After(time.Now()) |
|
|
|
|
key.Updated = time.Unix(key.UpdatedUnix, 0).Local() |
|
|
|
|
key.HasUsed = key.Updated.After(key.Created) |
|
|
|
|
key.HasRecentActivity = key.Updated.Add(7 * 24 * time.Hour).After(time.Now()) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// GetContent gets associated public key content.
|
|
|
|
|
func (k *DeployKey) GetContent() error { |
|
|
|
|
pkey, err := GetPublicKeyByID(k.KeyID) |
|
|
|
|
func (key *DeployKey) GetContent() error { |
|
|
|
|
pkey, err := GetPublicKeyByID(key.KeyID) |
|
|
|
|
if err != nil { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
k.Content = pkey.Content |
|
|
|
|
key.Content = pkey.Content |
|
|
|
|
return nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|