source: ocsinventory-agent/trunk/fuentes/tools/macosx/installer_gui/ocs_agent_daemon_options/ocs_agent_daemon_optionsPane.m @ 468

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

Copyt trusty code

File size: 3.7 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
14#import "ocs_agent_daemon_optionsPane.h"
15
16
17@implementation ocs_agent_daemon_optionsPane
18
19- (NSString *)title
20{
21        return [[NSBundle bundleForClass:[self class]] localizedStringForKey:@"PaneTitle" value:nil table:nil];
22}
23
24
25- (void)didEnterPane:(InstallerSectionDirection)dir {
26        NSString *tmpPath = @"/tmp/ocs_installer";
27       
28        filemgr = [ NSFileManager defaultManager];
29        tmpLaunchdFilePath =@"/tmp/ocs_installer/org.ocsng.agent.plist";
30        tmpNowFilePath = @"/tmp/ocs_installer/now";
31       
32        //Checking if temp directory exists
33        if ([filemgr fileExistsAtPath:tmpPath]) {
34                [filemgr removeFileAtPath:tmpLaunchdFilePath handler:nil];
35                [filemgr removeFileAtPath:tmpNowFilePath handler:nil];
36               
37        } else {
38                [filemgr createDirectoryAtPath:tmpPath attributes:nil];
39
40        }
41       
42       
43        // fill defaults values
44        [periodicity setStringValue:@"5"];
45        [startup setState:1];
46        [now setState:0];
47       
48       
49}
50
51
52- (BOOL)shouldExitPane:(InstallerSectionDirection)Direction {
53       
54       
55        NSMutableString *launchdCfgFile;
56        NSAlert *periodicityValueWrn;
57       
58        //Creating org.ocsng.agent.plist file for launchd
59        //TODO: use XML parser instead of writing the XML as a simple text file ?
60        launchdCfgFile = [@"<?xml version='1.0' encoding='UTF-8'?>\n"
61                                          @"<!DOCTYPE plist PUBLIC '-//Apple//DTD PLIST 1.0//EN' 'http://www.apple.com/DTDs/PropertyList-1.0.dtd'>\n"
62                                          @"<plist version='1.0'>\n"
63                                          @"<dict>\n"
64                                          @"\t<key>Label</key>\n"
65                                          @"\t<string>org.ocsng.agent</string>\n"
66                                          @"\t<key>ProgramArguments</key>\n"
67                                          @"\t\t<array>\n"
68                                          @"\t\t\t<string>/Applications/OCSNG.app/Contents/MacOS/OCSNG</string>\n"
69                                          @"\t\t</array>\n"
70                                          mutableCopy];
71       
72       
73        if ([startup state] == 1) {
74                [launchdCfgFile  appendString:@"\t<key>RunAtLoad</key>\n"
75                                                                          @"\t<true/>\n"
76                                                                          ];
77        }
78       
79       
80        if ( [[periodicity stringValue] length] > 0) {
81       
82                //We convert string to numeric value and check if it is integer
83                NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
84                NSNumber *convert = [formatter numberFromString:[periodicity stringValue]];
85                [formatter release];
86               
87                if (convert) {
88               
89                        int hours = [convert intValue];
90                        int seconds =  hours * 3600;
91               
92                        [launchdCfgFile  appendString:@"\t<key>StartInterval</key>\n"
93                                                                                  @"\t<integer>"
94                                                                                  ];
95                 
96                        [launchdCfgFile  appendString:[NSString stringWithFormat:@"%d", seconds]];
97                        [launchdCfgFile  appendString:@"</integer>\n"];
98
99                } else {
100                        //We display a warn message and we go back to pane
101                        periodicityValueWrn = [[NSAlert alloc] init];
102               
103                        [periodicityValueWrn addButtonWithTitle:NSLocalizedString(@"OK", @"OK")];
104                        [periodicityValueWrn setMessageText:NSLocalizedStringFromTableInBundle(@"Periodicity_warn",nil,[NSBundle bundleForClass:[self class]], @"Peridocity warn")];
105                        [periodicityValueWrn setInformativeText:NSLocalizedStringFromTableInBundle(@"Periodicity_warn_comment",nil,[NSBundle bundleForClass:[self class]], @"Periodicity warn comment")];
106                        [periodicityValueWrn setAlertStyle:NSInformationalAlertStyle];
107                        [periodicityValueWrn runModal];
108                        [periodicityValueWrn release];
109                       
110                        [self gotoPreviousPane];
111                }
112               
113        }
114       
115        [launchdCfgFile  appendString:@"</dict>\n"
116                                                                  @"</plist>"
117                                                                  ];
118       
119        //Writing org.ocsng.agent.plist file
120        [launchdCfgFile writeToFile:tmpLaunchdFilePath atomically: YES encoding:NSUTF8StringEncoding error:NULL];
121
122        //Check if we launch agent after install
123        if ([now state] == 1) {
124                [filemgr createFileAtPath:tmpNowFilePath contents:nil attributes:nil];
125        }
126       
127       
128        return (YES);   
129}
130
131
132@end
Note: See TracBrowser for help on using the repository browser.