-
Notifications
You must be signed in to change notification settings - Fork 6
/
ConfigurationWindowController.m
206 lines (153 loc) · 6.73 KB
/
ConfigurationWindowController.m
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
////////////////////////////////////////////////////////////////////////////////////
// //
// OCSINVENTORY-NG //
// //
// Copyleft Guillaume PROTET 2012 //
// Web : http://www.ocsinventory-ng.org //
// //
// //
// This code is open source and may be copied and modified as long as the source //
// code is always made freely available. //
// Please refer to the General Public Licence http://www.gnu.org/ //
// //
////////////////////////////////////////////////////////////////////////////////////
#import "ConfigurationWindowController.h"
#import "Context.h"
#import "ExportWindowController.h"
#import "Configuration.h"
@implementation ConfigurationWindowController
//When nib is launched
- (void)awakeFromNib {
//Create object for context
if (!context) {
context = [[Context alloc] init];
}
//We add ourself references in context
[context setConfigurationWindowController:self];
//Create object for storing configuration and its reference in context
if (!configuration) {
configuration = [[Configuration alloc] init];
}
[context setConfiguration:configuration];
//Create object for second panel and add its reference in context
if (!exportWindowController) {
exportWindowController = [[ExportWindowController alloc] initWithContext:context];
}
[context setExportWindowController:exportWindowController];
//Filling defaults values
[userServer setStringValue:@"ocsinventory-ng"];
[userLogFile setStringValue:@"/var/log/ocsng.log"];
[userPeriodicity setStringValue:@"5"];
[userDebugMode setState:1];
[userDownload setState:1];
[userLazy setState:0];
[userStartup setState:1];
[userNow setState:0];
//Defaults for protocol droping list
[protocolist removeAllItems];
[protocolist addItemWithTitle: @"http://"];
[protocolist addItemWithTitle: @"https://"];
[protocolist selectItemWithTitle: @"http://"];
}
- (IBAction) chooseCacertFile:(id)sender {
NSArray* fileTypes = [[NSArray alloc] initWithObjects:@"pem",@"PEM",@"crt",@"CRT",nil];
//Configuration for the browse panel
NSOpenPanel *panel = [NSOpenPanel openPanel];
[panel setCanChooseDirectories:NO];
[panel setCanChooseFiles:YES];
[panel setAllowsMultipleSelection:NO];
[panel setAllowedFileTypes:fileTypes];
//Running browse panel
NSInteger result = [panel runModal];
//Getting cacert file path
if (result == NSModalResponseOK) {
[userCacertFile setStringValue:[[panel URL] path]];
}
}
- (IBAction) chooseOcsPkgFile:(id)sender {
NSArray* fileTypes = [[NSArray alloc] initWithObjects:@"pkg",nil];
//Configuration for the browse panel
NSOpenPanel *panel = [NSOpenPanel openPanel];
[panel setCanChooseDirectories:NO];
[panel setCanChooseFiles:YES];
[panel setAllowsMultipleSelection:NO];
[panel setAllowedFileTypes:fileTypes];
//Running browse panel
NSInteger result = [panel runModal];
//Getting cacert file path
if (result == NSModalResponseOK) {
[userOcsPkgFile setStringValue:[[panel URL] path]];
}
}
- (IBAction) chooseProtocol:(id)sender {
NSString *protocol = [protocolist titleOfSelectedItem];
//We show the selected protocol
[protocolist setTitle:protocol];
}
- (NSArray *) protocols {
return [NSArray arrayWithObjects:@"http", @"https", nil];
}
- (IBAction) getUserConfiguration:(id)sender {
//No OCS pkg file path filled
if ( !([[userOcsPkgFile stringValue] length] > 0 )) {
[context displayAlert:NSLocalizedString(@"Invalid_pkg_file", @"Warning about invalid OCS package file") comment:NSLocalizedString(@"Invalid_pkg_file_comment", @"Warning about invalid OCS package comment") style:NSAlertStyleCritical];
return;
}
//No OCS server address filled
if ( !([[userServer stringValue] length] > 0 )) {
[context displayAlert:NSLocalizedString(@"Invalid_srv_addr", @"Warning about invalid server address") comment:NSLocalizedString(@"Invalid_srv_addr_comment", @"Warning about invalid server address comment") style:NSAlertStyleCritical];
return;
}
//Download feature activated but no cacert.pem file path filled
if ( [userDownload state] == 1 && [[userCacertFile stringValue] length] == 0 ) {
NSAlert *caCertWrn = [[NSAlert alloc] init];
[caCertWrn addButtonWithTitle:NSLocalizedString(@"Yes", @"Yes Button")];
[caCertWrn addButtonWithTitle:NSLocalizedString(@"No", @"No Button")];
[caCertWrn setMessageText:NSLocalizedString(@"Missing_cert_warn",@"Warning about missing certificate file")];
[caCertWrn setInformativeText:NSLocalizedString(@"Missing_cert_warn_comment",@"Warning about missing certificate file comment")];
[caCertWrn setAlertStyle:NSAlertStyleCritical];
if ([caCertWrn runModal] != NSAlertFirstButtonReturn) {
//Button 'No' was clicked, we don't continue
[caCertWrn release];
return;
}
[caCertWrn release];
}
//No periodicity value filled
if ( !([[userPeriodicity stringValue] length] > 0)) {
[context displayAlert:NSLocalizedString(@"Periodicity_warn", @"Peridocity warn") comment:NSLocalizedString(@"Periodicity_warn_comment", @"Periodicity warn comment") style:NSAlertStyleCritical];
return;
}
//Set configuration
[configuration setOcsPkgFilePath:[userOcsPkgFile stringValue]];
[configuration setProtocol:[protocolist titleOfSelectedItem]];
[configuration setServer:[userServer stringValue]];
[configuration setLogfile:[userLogFile stringValue]];
[configuration setTag:[userTag stringValue]];
[configuration setCacertFilePath:[userCacertFile stringValue]];
[configuration setUser:[authUser stringValue]];
[configuration setPwd:[authPwd stringValue]];
[configuration setRealm:[authRealm stringValue]];
[configuration setDebugmode:[userDebugMode state]];
[configuration setDownload:[userDownload state]];
[configuration setLazy:[userLazy state]];
[configuration setPeriodicity:[userPeriodicity stringValue]];
[configuration setStartup:[userStartup state]];
[configuration setNow:[userNow state]];
//We display the next window
[self displayExportWindow];
[[self window] orderOut:sender];
}
- (void) displayExportWindow {
[exportWindowController showWindow:nil];
}
//To quit application
- (IBAction) terminateApp:(id)sender {
[NSApp terminate:self];
}
//Famous dealloc for memory management
- (void) dealloc {
[exportWindowController release];
[super dealloc];
}
@end