source: ocsinventory-agent/trunk/fuentes/tools/macosx/installer_gui/ocs_agent_config/ocs_agent_configPane.m @ 468

Last change on this file since 468 was 468, checked in by mabarracus, 4 years ago

Copyt trusty code

File size: 8.4 KB
Line 
1//
2// OCSINVENTORY-NG
3//
4// Copyleft Guillaume PROTET 2011
5//
6//
7// This code is open source and may be copied and modified as long as the source
8// code is always made freely available.
9// Please refer to the General Public Licence http://www.gnu.org/
10//
11//
12
13#import "ocs_agent_configPane.h"
14
15
16@implementation ocs_agent_configPane
17 
18
19- (NSString *)title
20{
21        return [[NSBundle bundleForClass:[self class]] localizedStringForKey:@"PaneTitle" value:nil table:nil];
22}
23
24
25- (NSArray *) protocols {
26        return [NSArray arrayWithObjects:@"http", @"https", nil];
27}
28
29
30- (void)didEnterPane:(InstallerSectionDirection)dir {
31        NSAlert *cfgFileExistsWrn;
32        NSString *tmpPath = @"/tmp/ocs_installer";
33       
34        filemgr = [ NSFileManager defaultManager];
35        tmpCfgFilePath = @"/tmp/ocs_installer/ocsinventory-agent.cfg";
36        tmpModulesFilePath = @"/tmp/ocs_installer/modules.conf";
37        tmpServerdirFilePath = @"/tmp/ocs_installer/serverdir";
38        tmpCacertFilePath = @"/tmp/ocs_installer/cacert.pem";
39       
40        //Checking if temp directory exists
41        if ([filemgr fileExistsAtPath:tmpPath]) {
42                [filemgr removeFileAtPath:tmpCfgFilePath handler:nil];
43                [filemgr removeFileAtPath:tmpModulesFilePath handler:nil];
44                [filemgr removeFileAtPath:tmpServerdirFilePath handler:nil];
45                [filemgr removeFileAtPath:tmpCacertFilePath handler:nil];
46               
47        } else {
48                [filemgr createDirectoryAtPath:tmpPath attributes:nil];
49               
50        }       
51       
52       
53        if ([filemgr fileExistsAtPath:@"/etc/ocsinventory-agent/ocsinventory-agent.cfg"]) {
54                //We display a warning dialog
55                cfgFileExistsWrn = [[NSAlert alloc] init];
56               
57                [cfgFileExistsWrn setMessageText:NSLocalizedStringFromTableInBundle(@"Already_conf_warn",nil,[NSBundle bundleForClass:[self class]], @"Warning about already existing cofiguration file")];
58                [cfgFileExistsWrn setInformativeText:NSLocalizedStringFromTableInBundle(@"Already_conf_warn_comment",nil,[NSBundle bundleForClass:[self class]], @"Warning about already existing cofiguration file comment")];
59                [cfgFileExistsWrn addButtonWithTitle:NSLocalizedStringFromTableInBundle(@"Yes",nil,[NSBundle bundleForClass:[self class]], @"Yes button")];
60                [cfgFileExistsWrn addButtonWithTitle:NSLocalizedStringFromTableInBundle(@"No",nil,[NSBundle bundleForClass:[self class]], @"No button")];
61                [cfgFileExistsWrn setAlertStyle:NSInformationalAlertStyle];
62               
63               
64                if ([cfgFileExistsWrn runModal] != NSAlertFirstButtonReturn) {
65                        // No button was clicked, we don't display config pane
66                        [self gotoNextPane];
67                }
68
69                [cfgFileExistsWrn release];
70        }
71       
72       
73        // fill defaults values
74        [server setStringValue:@"ocsinventory-ng"];
75        [logfile setStringValue:@"/var/log/ocsng.log"];
76        [debugmode setState:1];
77        [download setState:1];
78       
79        //Defaults for protocol droping list
80        [protocolist removeAllItems];
81        [protocolist addItemWithTitle: @"http://"];
82        [protocolist addItemWithTitle: @"https://"];
83        [protocolist selectItemWithTitle: @"http://"];
84
85}
86
87- (IBAction) chooseCacertFile:(id)sender {
88        NSOpenPanel *panel = [NSOpenPanel openPanel];
89        NSArray* fileTypes = [[NSArray alloc] initWithObjects:@"pem",@"PEM",@"crt",@"CRT",nil];
90       
91        //Configuration for the browse panel
92        [panel setCanChooseDirectories:NO];
93        [panel setCanChooseFiles:YES];
94        [panel setAllowsMultipleSelection:NO];
95    [panel setAllowedFileTypes:fileTypes];
96       
97        //Running brozse panel
98        int result = [panel runModalForTypes:fileTypes];
99
100        //Getting cacert file path
101        if (result == NSOKButton) {
102                [cacertfile setStringValue:[panel filename]];
103        }
104}
105
106- (IBAction) chooseProtocol:(id)sender {
107        NSString *protocol = [protocolist titleOfSelectedItem];
108       
109        //We show the selected protocol
110        [protocolist setTitle:protocol];
111}
112
113- (IBAction) getConfig:(id)sender  {
114        BOOL srvAddrChk;
115       
116        // enable the Continue button only if server address filled
117        srvAddrChk = ([[server stringValue] length] > 0);
118    [self setNextEnabled:srvAddrChk];
119}
120
121- (BOOL)shouldExitPane:(InstallerSectionDirection)Direction {
122    NSMutableString *ocsAgentCfgContent;
123        NSMutableString *modulesCfgContent;
124        NSString *serverDir;
125        NSMutableString *protocolName;
126        NSAlert *srvConfigWrn;
127        NSAlert *caCertWrn;
128        NSString *protocol = [protocolist titleOfSelectedItem];
129
130    // check the direction of movement
131    if (Direction == InstallerDirectionForward) {
132                                                                       
133                if ( [[server stringValue] length] > 0) {
134               
135                        ocsAgentCfgContent = [@"server=" mutableCopy];
136       
137                        //Adding server value to the mutable string
138                        [ocsAgentCfgContent appendString:protocol];
139                        [ocsAgentCfgContent appendString:[server objectValue]];
140                        [ocsAgentCfgContent appendString:@"/ocsinventory"];
141                        [ocsAgentCfgContent appendString:@"\n"];
142                       
143                        //if tag filled
144                        if ( [[tag stringValue] length] > 0) {
145                            [ocsAgentCfgContent appendString:@"tag="];
146                                [ocsAgentCfgContent appendString:[tag objectValue]];
147                                [ocsAgentCfgContent appendString:@"\n"];       
148                        }
149                       
150                        //if logfile filled
151                        if ( [[logfile stringValue] length] > 0) {
152                            [ocsAgentCfgContent appendString:@"logfile="];
153                                [ocsAgentCfgContent appendString:[logfile objectValue]];
154                                [ocsAgentCfgContent appendString:@"\n"];       
155                        }
156
157                        //if debugmode checked
158                        if ( [debugmode state] == 1) {
159                            [ocsAgentCfgContent appendString:@"debug=1\n"];
160                        }
161       
162                        //Writing to ocsinventory agent configuration file
163                        [ocsAgentCfgContent writeToFile:tmpCfgFilePath atomically: YES encoding:NSUTF8StringEncoding error:NULL];
164       
165                       
166                       
167                        modulesCfgContent = [@"# this list of module will be load by the at run time\n"
168                                                                @"# to check its syntax do:\n"
169                                                                @"# #perl modules.conf\n"
170                                                                @"# You must have NO error. Else the content will be ignored\n"
171                                                                @"# This mechanism goal it to keep compatibility with 'plugin'\n"
172                                                                @"# created for the previous linux_agent.\n"
173                                                                @"# The new unified_agent have its own extension system that allow\n"
174                                                                @"# user to add new information easily.\n"
175                                                                @"\n"
176                                                                @"#use Ocsinventory::Agent::Modules::Example;\n"
177                                                                mutableCopy];
178                       
179                        //if download checked
180                        if ( [download state] == 1) {
181                                [modulesCfgContent appendString:@"use Ocsinventory::Agent::Modules::Download;\n"
182                                                                                                @"\n"
183                                                                                                @"# DO NOT REMOVE THE 1;\n"
184                                                                                                @"1;"
185                                                                                                ];
186                        } else {
187                                [modulesCfgContent appendString:@"#use Ocsinventory::Agent::Modules::Download;\n"
188                                                                                                @"\n"
189                                                                                                @"# DO NOT REMOVE THE 1;\n"
190                                                                                                @"1;"
191                                                                                                ];
192                        }
193                               
194                               
195                        //Writing to modules configuration file
196                        [modulesCfgContent writeToFile:tmpModulesFilePath atomically: YES encoding:NSUTF8StringEncoding error:NULL];
197
198                       
199                        //We have to copy cacert.pem if is asked by user
200                        if ( [[cacertfile stringValue] length] > 0) {
201                               
202                                protocolName = [protocol mutableCopy];
203                                [protocolName replaceOccurrencesOfString:@"/" withString:@""
204                                                          options:NSCaseInsensitiveSearch
205                                                          range:NSMakeRange(0, [protocolName length])];
206
207                               
208                                serverDir = [NSString stringWithFormat:@"/var/lib/ocsinventory-agent/%@__%@_ocsinventory", protocolName, [server objectValue]];
209                                [serverDir writeToFile:tmpServerdirFilePath atomically: YES encoding:NSUTF8StringEncoding error:NULL];
210                                                                 
211                                [filemgr copyPath:[cacertfile objectValue] toPath:tmpCacertFilePath handler:nil];
212                        }
213                       
214                        if ( [download state] == 1 && [[cacertfile stringValue] length] == 0 ) {
215                                //We display a warning dialog
216                                caCertWrn = [[NSAlert alloc] init];
217                               
218                                [caCertWrn addButtonWithTitle:@"OK"];
219                                [caCertWrn setMessageText:NSLocalizedStringFromTableInBundle(@"Missing_cert_warn",nil,[NSBundle bundleForClass:[self class]], @"Warning about missing certificate file")];
220                                [caCertWrn setInformativeText:NSLocalizedStringFromTableInBundle(@"Missing_cert_warn_comment",nil,[NSBundle bundleForClass:[self class]], @"Warning about missing certificate file comment")];
221                                [caCertWrn setAlertStyle:NSInformationalAlertStyle];
222                                [caCertWrn runModal];  // display the warning dialog
223                                [caCertWrn release];      // dispose the warning dialog
224                               
225                        }
226                       
227       
228                } else {
229                        //We display a warning dialog
230                        srvConfigWrn = [[NSAlert alloc] init];
231                       
232                        [srvConfigWrn addButtonWithTitle:@"OK"];
233                        [srvConfigWrn setMessageText:NSLocalizedStringFromTableInBundle(@"Invalid_srv_addr",nil,[NSBundle bundleForClass:[self class]], @"Warning about invalid server address")];
234                        [srvConfigWrn setInformativeText:NSLocalizedStringFromTableInBundle(@"Invalid_srv_addr_comment",nil,[NSBundle bundleForClass:[self class]], @"Warning about invalid server address comment")];
235                        [srvConfigWrn setAlertStyle:NSInformationalAlertStyle];
236                        [srvConfigWrn runModal];
237                        [srvConfigWrn release];
238                       
239                        [self gotoPreviousPane];
240
241                }
242        }
243       
244return (YES);
245}
246       
247
248@end
Note: See TracBrowser for help on using the repository browser.