5
5
"github.com/nodetec/rwz/pkg/network"
6
6
"github.com/nodetec/rwz/pkg/relays/khatru29"
7
7
"github.com/nodetec/rwz/pkg/relays/khatru_pyramid"
8
+ "github.com/nodetec/rwz/pkg/relays/nostr_rs_relay"
8
9
"github.com/nodetec/rwz/pkg/relays/strfry"
9
10
"github.com/nodetec/rwz/pkg/relays/strfry29"
10
11
"github.com/nodetec/rwz/pkg/relays/wot_relay"
@@ -18,25 +19,38 @@ var installCmd = &cobra.Command{
18
19
Short : "Install and configure your Nostr relay" ,
19
20
Long : `Install and configure your Nostr relay, including package installation, firewall setup, Nginx configuration, SSL/TLS certificates, and starting the relay service.` ,
20
21
Run : func (cmd * cobra.Command , args []string ) {
22
+ ThemeDefault := pterm .ThemeDefault
21
23
22
24
ui .Greet ()
23
25
24
26
relayDomain , _ := pterm .DefaultInteractiveTextInput .Show ("Relay domain name" )
25
27
pterm .Println ()
26
28
27
29
// Supported relay options
28
- options := []string {khatru_pyramid .RelayName , strfry .RelayName , khatru29 .RelayName , strfry29 .RelayName , wot_relay .RelayName }
30
+ options := []string {khatru_pyramid .RelayName , nostr_rs_relay . RelayName , strfry .RelayName , wot_relay .RelayName , khatru29 .RelayName , strfry29 .RelayName }
29
31
30
32
// Use PTerm's interactive select feature to present the options to the user and capture their selection
31
33
// The Show() method displays the options and waits for the user's input
32
- selectedRelayOption , _ := pterm .DefaultInteractiveSelect .WithOptions (options ).Show ()
34
+ relaySelector := pterm.InteractiveSelectPrinter {
35
+ TextStyle : & ThemeDefault .PrimaryStyle ,
36
+ DefaultText : "Please select an option" ,
37
+ Options : []string {},
38
+ OptionStyle : & ThemeDefault .DefaultText ,
39
+ DefaultOption : "" ,
40
+ MaxHeight : 6 ,
41
+ Selector : ">" ,
42
+ SelectorStyle : & ThemeDefault .SecondaryStyle ,
43
+ Filter : true ,
44
+ }
45
+
46
+ selectedRelayOption , _ := relaySelector .WithOptions (options ).Show ()
33
47
34
48
// Display the selected option to the user with a green color for emphasis
35
49
pterm .Info .Printfln ("Selected option: %s" , pterm .Green (selectedRelayOption ))
36
50
37
51
var privKey string
38
52
var pubKey string
39
- if selectedRelayOption == khatru_pyramid .RelayName || selectedRelayOption == wot_relay .RelayName {
53
+ if selectedRelayOption == khatru_pyramid .RelayName || selectedRelayOption == nostr_rs_relay . RelayName || selectedRelayOption == wot_relay .RelayName {
40
54
pterm .Println ()
41
55
pubKey , _ = pterm .DefaultInteractiveTextInput .Show ("Public key (hex not npub)" )
42
56
} else if selectedRelayOption == khatru29 .RelayName || selectedRelayOption == strfry29 .RelayName {
@@ -46,7 +60,7 @@ var installCmd = &cobra.Command{
46
60
}
47
61
48
62
var relayContact string
49
- if selectedRelayOption == khatru_pyramid .RelayName || selectedRelayOption == khatru29 .RelayName {
63
+ if selectedRelayOption == khatru_pyramid .RelayName || selectedRelayOption == nostr_rs_relay . RelayName || selectedRelayOption == khatru29 .RelayName {
50
64
pterm .Println ()
51
65
pterm .Println (pterm .Yellow ("Leave email empty if you don't want to provide relay contact information." ))
52
66
@@ -65,7 +79,7 @@ var installCmd = &cobra.Command{
65
79
pterm .Println ()
66
80
67
81
// Step 1: Install necessary packages using APT
68
- manager .AptInstallPackages ()
82
+ manager .AptInstallPackages (selectedRelayOption )
69
83
70
84
// Step 2: Configure the firewall
71
85
network .ConfigureFirewall ()
@@ -89,6 +103,25 @@ var installCmd = &cobra.Command{
89
103
90
104
// Step 8: Show success messages
91
105
khatru_pyramid .SuccessMessages (relayDomain , httpsEnabled )
106
+ } else if selectedRelayOption == nostr_rs_relay .RelayName {
107
+ // Step 3: Configure Nginx for HTTP
108
+ nostr_rs_relay .ConfigureNginxHttp (relayDomain )
109
+
110
+ // Step 4: Get SSL/TLS certificates
111
+ httpsEnabled := network .GetCertificates (relayDomain )
112
+ if httpsEnabled {
113
+ // Step 5: Configure Nginx for HTTPS
114
+ nostr_rs_relay .ConfigureNginxHttps (relayDomain )
115
+ }
116
+
117
+ // Step 6: Download and install the relay binary
118
+ nostr_rs_relay .InstallRelayBinary ()
119
+
120
+ // Step 7: Set up the relay service
121
+ nostr_rs_relay .SetupRelayService (relayDomain , pubKey , relayContact , httpsEnabled )
122
+
123
+ // Step 8: Show success messages
124
+ nostr_rs_relay .SuccessMessages (relayDomain , httpsEnabled )
92
125
} else if selectedRelayOption == strfry .RelayName {
93
126
// Step 3: Configure Nginx for HTTP
94
127
strfry .ConfigureNginxHttp (relayDomain )
@@ -108,63 +141,63 @@ var installCmd = &cobra.Command{
108
141
109
142
// Step 8: Show success messages
110
143
strfry .SuccessMessages (relayDomain , httpsEnabled )
111
- } else if selectedRelayOption == khatru29 .RelayName {
144
+ } else if selectedRelayOption == wot_relay .RelayName {
112
145
// Step 3: Configure Nginx for HTTP
113
- khatru29 .ConfigureNginxHttp (relayDomain )
146
+ wot_relay .ConfigureNginxHttp (relayDomain )
114
147
115
148
// Step 4: Get SSL/TLS certificates
116
149
httpsEnabled := network .GetCertificates (relayDomain )
117
150
if httpsEnabled {
118
151
// Step 5: Configure Nginx for HTTPS
119
- khatru29 .ConfigureNginxHttps (relayDomain )
152
+ wot_relay .ConfigureNginxHttps (relayDomain )
120
153
}
121
154
122
155
// Step 6: Download and install the relay binary
123
- khatru29 .InstallRelayBinary ()
156
+ wot_relay .InstallRelayBinary ()
124
157
125
158
// Step 7: Set up the relay service
126
- khatru29 .SetupRelayService (relayDomain , privKey , relayContact )
159
+ wot_relay .SetupRelayService (relayDomain , pubKey , relayContact , httpsEnabled )
127
160
128
161
// Step 8: Show success messages
129
- khatru29 .SuccessMessages (relayDomain , httpsEnabled )
130
- } else if selectedRelayOption == strfry29 .RelayName {
162
+ wot_relay .SuccessMessages (relayDomain , httpsEnabled )
163
+ } else if selectedRelayOption == khatru29 .RelayName {
131
164
// Step 3: Configure Nginx for HTTP
132
- strfry29 .ConfigureNginxHttp (relayDomain )
165
+ khatru29 .ConfigureNginxHttp (relayDomain )
133
166
134
167
// Step 4: Get SSL/TLS certificates
135
168
httpsEnabled := network .GetCertificates (relayDomain )
136
169
if httpsEnabled {
137
170
// Step 5: Configure Nginx for HTTPS
138
- strfry29 .ConfigureNginxHttps (relayDomain )
171
+ khatru29 .ConfigureNginxHttps (relayDomain )
139
172
}
140
173
141
174
// Step 6: Download and install the relay binary
142
- strfry29 .InstallRelayBinary ()
175
+ khatru29 .InstallRelayBinary ()
143
176
144
177
// Step 7: Set up the relay service
145
- strfry29 .SetupRelayService (relayDomain , privKey )
178
+ khatru29 .SetupRelayService (relayDomain , privKey , relayContact )
146
179
147
180
// Step 8: Show success messages
148
- strfry29 .SuccessMessages (relayDomain , httpsEnabled )
149
- } else if selectedRelayOption == wot_relay .RelayName {
181
+ khatru29 .SuccessMessages (relayDomain , httpsEnabled )
182
+ } else if selectedRelayOption == strfry29 .RelayName {
150
183
// Step 3: Configure Nginx for HTTP
151
- wot_relay .ConfigureNginxHttp (relayDomain )
184
+ strfry29 .ConfigureNginxHttp (relayDomain )
152
185
153
186
// Step 4: Get SSL/TLS certificates
154
187
httpsEnabled := network .GetCertificates (relayDomain )
155
188
if httpsEnabled {
156
189
// Step 5: Configure Nginx for HTTPS
157
- wot_relay .ConfigureNginxHttps (relayDomain )
190
+ strfry29 .ConfigureNginxHttps (relayDomain )
158
191
}
159
192
160
193
// Step 6: Download and install the relay binary
161
- wot_relay .InstallRelayBinary ()
194
+ strfry29 .InstallRelayBinary ()
162
195
163
196
// Step 7: Set up the relay service
164
- wot_relay .SetupRelayService (relayDomain , pubKey , relayContact , httpsEnabled )
197
+ strfry29 .SetupRelayService (relayDomain , privKey )
165
198
166
199
// Step 8: Show success messages
167
- wot_relay .SuccessMessages (relayDomain , httpsEnabled )
200
+ strfry29 .SuccessMessages (relayDomain , httpsEnabled )
168
201
}
169
202
170
203
pterm .Println ()
0 commit comments