|
|
|
@ -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
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|