fix: mtls for agent, problems with auth
This commit is contained in:
+13
-3
@@ -51,15 +51,25 @@ func main() {
|
||||
|
||||
log.Println("Agent registration complete")
|
||||
err = func() error {
|
||||
creds, err := mtls.LoadMTLSCredentials(certs.CACertPEM, certs.ClientCertPEM, certs.ClientKeyPEM)
|
||||
creds, err := mtls.LoadMTLSCredentialsFromFiles(
|
||||
cfg.CertDir+"/ca.crt",
|
||||
cfg.CertDir+"/client.crt",
|
||||
cfg.CertDir+"/client.key",
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
cmdexe := new(commander.CommandExecutor)
|
||||
ccli := client.New(cmdexe, cfg.RegistrationToken, cfg.Label)
|
||||
return ccli.HandleCommands(ctx, cfg.BackendURL, creds)
|
||||
ccli := client.New(cmdexe, cfg.Label, cfg.Label)
|
||||
grpcAddr := cfg.GRPCURL
|
||||
if grpcAddr == "" {
|
||||
grpcAddr = cfg.BackendURL
|
||||
}
|
||||
grpcAddr = strings.TrimPrefix(grpcAddr, "http://")
|
||||
grpcAddr = strings.TrimPrefix(grpcAddr, "https://")
|
||||
return ccli.HandleCommands(ctx, grpcAddr, creds)
|
||||
}()
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to generate key and CSR: %v", err)
|
||||
|
||||
+9
-1
@@ -62,6 +62,7 @@ func main() {
|
||||
agents := handlers.NewAgentsGroup(h, cmdr)
|
||||
auth := handlers.AuthGroup{Handlers: h}
|
||||
agentReg := handlers.NewAgentRegistrationGroup(h)
|
||||
agentDeploy := handlers.NewAgentDeployGroup(h)
|
||||
|
||||
// Create admin user from config if not exists
|
||||
if cfg.Admin.Admin_login != "" && cfg.Admin.Admin_password != "" {
|
||||
@@ -74,13 +75,20 @@ func main() {
|
||||
PermissionView: true,
|
||||
PermissionManage: true,
|
||||
PermissionAdmin: true,
|
||||
IsActive: true, // Admin user is active by default
|
||||
IsActive: true,
|
||||
})
|
||||
if err != nil {
|
||||
log.Printf("Warning: failed to create admin user: %v", err)
|
||||
} else {
|
||||
log.Println("Admin user created from config")
|
||||
}
|
||||
} else {
|
||||
// Ensure existing admin is activated
|
||||
if err := h.Repo.ActivateUserByLogin(cfg.Admin.Admin_login); err != nil {
|
||||
log.Printf("Warning: failed to activate admin user: %v", err)
|
||||
} else {
|
||||
log.Println("Admin user activated")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -26,7 +26,12 @@ var ErrAccountInactive = errors.New("account is not activated")
|
||||
// Init creates the tokens table if it does not exist.
|
||||
func (r *Repository) Init() error {
|
||||
_, err := r.DB.Exec(storage.CreateSqlite)
|
||||
return err
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// Migration: add is_active column if it doesn't exist (SQLite ignores errors for duplicate column)
|
||||
_, _ = r.DB.Exec(storage.AddIsActiveColumn)
|
||||
return nil
|
||||
}
|
||||
|
||||
// CreateToken inserts a new user record with hashed password and generated token.
|
||||
@@ -46,7 +51,7 @@ func (r *Repository) CreateToken(tc TokenCreate) (string, error) {
|
||||
`INSERT INTO tokens (name, last_name, login, password, token, permission_view, permission_manage_agent, permission_admin, is_active)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,
|
||||
tc.Name, tc.LastName, tc.Login, string(hashed), token,
|
||||
tc.PermissionView, tc.PermissionManage, tc.PermissionAdmin, false,
|
||||
tc.PermissionView, tc.PermissionManage, tc.PermissionAdmin, tc.IsActive,
|
||||
)
|
||||
if err != nil {
|
||||
return "", err
|
||||
|
||||
@@ -15,6 +15,12 @@ const CreateSqlite = `
|
||||
);
|
||||
`
|
||||
|
||||
// AddIsActiveColumn adds is_active column to tokens table if it doesn't exist.
|
||||
// This is a migration for existing databases that don't have this column.
|
||||
const AddIsActiveColumn = `
|
||||
ALTER TABLE tokens ADD COLUMN is_active BOOL NOT NULL DEFAULT 0
|
||||
`
|
||||
|
||||
const CreateRegistrationTokensTable = `
|
||||
CREATE TABLE IF NOT EXISTS registration_tokens (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
|
||||
@@ -36,5 +36,8 @@ func Open(path string) (*sql.DB, error) {
|
||||
return nil, fmt.Errorf("migrate: %w", err)
|
||||
}
|
||||
|
||||
// Migration: add is_active column if it doesn't exist
|
||||
_, _ = db.Exec(AddIsActiveColumn)
|
||||
|
||||
return db, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user