summaryrefslogtreecommitdiff
path: root/security/opkssh/files/patch-main.go
blob: 9f8d47b12023a2e9540b587f9e6209e7bac44086 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
--- main.go.orig	2025-09-11 18:38:37 UTC
+++ main.go
@@ -80,7 +80,7 @@ This program allows users to:
 		Short:        "Appends new rule to the policy file",
 		Long: `Add appends a new policy entry in the auth_id policy file granting SSH access to the specified email or subscriber ID (sub) or group.
 
-It first attempts to write to the system-wide file (/etc/opk/auth_id). If it lacks permissions to update this file it falls back to writing to the user-specific file (~/.opk/auth_id).
+It first attempts to write to the system-wide file (%%PREFIX%%/etc/opk/auth_id). If it lacks permissions to update this file it falls back to writing to the user-specific file (~/.opk/auth_id).
 
 Arguments:
   PRINCIPAL            The target user account (requested principal).
@@ -217,7 +217,7 @@ You should not call this command directly. It is calle
 		SilenceUsage: true,
 		Use:          "verify <PRINCIPAL> <CERT> <KEY_TYPE>",
 		Short:        "Verify an SSH key (used by sshd AuthorizedKeysCommand)",
-		Long: `Verify extracts a PK token from a base64-encoded SSH certificate and verifies it against policy. It expects an allowed provider file at /etc/opk/providers and a user policy file at either /etc/opk/auth_id or ~/.opk/auth_id.
+		Long: `Verify extracts a PK token from a base64-encoded SSH certificate and verifies it against policy. It expects an allowed provider file at %%PREFIX%%/etc/opk/providers and a user policy file at either %%PREFIX%%/etc/opk/auth_id or ~/.opk/auth_id.
 
 This command is intended to be called by sshd as an AuthorizedKeysCommand:
   https://man.openbsd.org/sshd_config#AuthorizedKeysCommand
@@ -233,8 +233,8 @@ Verification checks performed:
 
 Verification checks performed:
   1. Ensures the PK token is properly formed, signed, and issued by the specified OpenID Provider (OP).
-  2. Confirms the PK token's issue (iss) and client ID (audience) are listed in the allowed provider file (/etc/opk/providers) and the token is not expired.
-  3. Validates the identity (email or sub) in the PK token against user policies (/etc/opk/auth_id or ~/.opk/auth_id) to ensure it can assume the requested username (principal).
+  2. Confirms the PK token's issue (iss) and client ID (audience) are listed in the allowed provider file (%%PREFIX%%/etc/opk/providers) and the token is not expired.
+  3. Validates the identity (email or sub) in the PK token against user policies (%%PREFIX%%/etc/opk/auth_id or ~/.opk/auth_id) to ensure it can assume the requested username (principal).
 
 If all checks pass, Verify authorizes the SSH connection.
 
@@ -269,10 +269,10 @@ Arguments:
 			certB64Arg := args[1]
 			typArg := args[2]
 
-			providerPolicyPath := "/etc/opk/providers"
+			providerPolicyPath := "%%PREFIX%%/etc/opk/providers"
 			providerPolicy, err := policy.NewProviderFileLoader().LoadProviderPolicy(providerPolicyPath)
 			if err != nil {
-				log.Println("Failed to open /etc/opk/providers:", err)
+				log.Println("Failed to open %%PREFIX%%/etc/opk/providers:", err)
 				return err
 			}
 
@@ -301,7 +301,7 @@ Arguments:
 			}
 		},
 	}
-	verifyCmd.Flags().StringVar(&serverConfigPathArg, "config-path", "/etc/opk/config.yml", "Path to the server config file. Default: /etc/opk/config.yml.")
+	verifyCmd.Flags().StringVar(&serverConfigPathArg, "config-path", "%%PREFIX%%/etc/opk/config.yml", "Path to the server config file. Default: %%PREFIX%%/etc/opk/config.yml.")
 	rootCmd.AddCommand(verifyCmd)
 
 	clientCmd := &cobra.Command{
@@ -504,30 +504,30 @@ func detectOS() OSType {
 // detectOS determines the type of operating system.
 func detectOS() OSType {
 	// Check for RedHat-based systems
-	if _, err := os.Stat("/etc/redhat-release"); err == nil {
+	if _, err := os.Stat("%%PREFIX%%/etc/redhat-release"); err == nil {
 		return OSTypeRHEL
 	}
 
 	// Check for Debian-based systems
-	if _, err := os.Stat("/etc/debian_version"); err == nil {
+	if _, err := os.Stat("%%PREFIX%%/etc/debian_version"); err == nil {
 		return OSTypeDebian
 	}
 
 	// Check for Arch Linux
-	if _, err := os.Stat("/etc/arch-release"); err == nil {
+	if _, err := os.Stat("%%PREFIX%%/etc/arch-release"); err == nil {
 		return OSTypeArch
 	}
 
 	// Check for SUSE Linux
-	if _, err := os.Stat("/etc/SuSE-release"); err == nil {
+	if _, err := os.Stat("%%PREFIX%%/etc/SuSE-release"); err == nil {
 		return OSTypeSUSE
 	}
-	if _, err := os.Stat("/etc/SUSE-brand"); err == nil {
+	if _, err := os.Stat("%%PREFIX%%/etc/SUSE-brand"); err == nil {
 		return OSTypeSUSE
 	}
 
-	// Check for /etc/os-release which exists on most modern Linux systems
-	if content, err := os.ReadFile("/etc/os-release"); err == nil {
+	// Check for %%PREFIX%%/etc/os-release which exists on most modern Linux systems
+	if content, err := os.ReadFile("%%PREFIX%%/etc/os-release"); err == nil {
 		contentStr := string(content)
 		if strings.Contains(contentStr, "ID=rhel") ||
 			strings.Contains(contentStr, "ID=centos") ||