📄 openfireprefpane.m
字号:
//// openfirePrefPane.m// Preference panel for Openfire//// Created by Daniel Henninger on 7/7/06.// Copyright (c) 2006 Jive Software. All rights reserved.//// Concept taken from MySQL preference panel, as well as some borrowed code.//#import <Security/Security.h>#import <CoreFoundation/CoreFoundation.h>#import "openfirePrefPane.h"@implementation openfirePrefPane- (void)mainViewDidLoad{ AuthorizationItem authItems[1]; // we only want to get authorization for one command authItems[0].name = kAuthorizationRightExecute; // we want the right to execute char *cmd = [[[NSBundle bundleForClass:[self class]] pathForAuxiliaryExecutable:@"HelperTool"] fileSystemRepresentation]; authItems[0].value = cmd; // the path to the helper tool authItems[0].valueLength = strlen(cmd); // length of the command authItems[0].flags = 0; // no extra flags AuthorizationRights authRights; authRights.count = 1; // we have one item authRights.items = authItems; // here is the values for our item [authView setAuthorizationRights:&authRights]; [authView setAutoupdate:YES]; [authView setDelegate:self]; [authView updateStatus:self]; [statusProgress setStyle:NSProgressIndicatorSpinningStyle]; [statusProgress setDisplayedWhenStopped:NO]; [self updateStatus];}- (BOOL)isRunning{ FILE *ps; char buff[1024]; if((ps=popen(pscmd, "r")) == NULL) { // There was an error opening the pipe. Alert the user. NSBeginAlertSheet( @"Error!", @"OK", nil, nil, [NSApp mainWindow], self, nil, nil, self, @"An error occured while detecting a running Openfire process.", nil); return NO; } else { BOOL running = NO; if(fgets(buff, 1024, ps)) { running = YES; printf(buff); } pclose(ps); return running; }}- (IBAction)openAdminInterface:(id)sender{ NSString *stringURL = @"http://localhost:9090/"; [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:stringURL]];}- (IBAction)toggleAutoStart:(id)sender{ char *args[2]; args[0] = "boot"; args[1] = NULL; OSStatus ourStatus = AuthorizationExecuteWithPrivileges([[authView authorization] authorizationRef], [authView authorizationRights]->items[0].value, kAuthorizationFlagDefaults, args, NULL); if(ourStatus != errAuthorizationSuccess) { // alert user the startup has failed NSBeginAlertSheet( @"Error!", @"OK", nil, nil, [NSApp mainWindow], self, nil, nil, self, @"Could not toggle Openfire startup.", nil); [statusTimer invalidate]; [self checkStatus]; } [self updateStatus];}- (IBAction)toggleServer:(id)sender{ [statusMessage setHidden:YES]; [statusProgress startAnimation:self]; [startButton setEnabled:NO]; if(![self isRunning]) { [self startServer]; statusTimer = [NSTimer scheduledTimerWithTimeInterval:4 target:self selector:@selector(checkStatus) userInfo:nil repeats:NO]; } else { [self stopServer]; statusTimer = [NSTimer scheduledTimerWithTimeInterval:4 target:self selector:@selector(checkStatus) userInfo:nil repeats:NO]; } [self updateStatus];}- (void)checkStatus{ [statusProgress stopAnimation:self]; [statusMessage setHidden:NO]; [startButton setEnabled:YES]; [self updateStatus];}- (void)updateStatus{ if ([self isRunning] == NO) { [statusMessage setStringValue:@"Stopped"]; [statusMessage setTextColor:[NSColor redColor]]; [statusDescription setStringValue:@"The server may take a few seconds to start up."]; [startButton setTitle:@"Start Openfire"]; [viewAdminButton setEnabled:NO]; } else { [statusMessage setStringValue:@"Running"]; [statusMessage setTextColor:[NSColor greenColor]]; [statusDescription setStringValue:@"The server may take a few seconds to stop."]; [startButton setTitle:@"Stop Openfire"]; [viewAdminButton setEnabled:YES]; } BOOL isStartingAtBoot = [[[NSMutableDictionary dictionaryWithContentsOfFile:plistPath] objectForKey:@"RunAtLoad"] boolValue]; [autoStartCheckbox setState:(isStartingAtBoot ? NSOnState : NSOffState)];}- (void)startServer{ char *args[0]; args[1] = NULL; OSStatus ourStatus = AuthorizationExecuteWithPrivileges([[authView authorization] authorizationRef], [authView authorizationRights]->items[0].value, kAuthorizationFlagDefaults, args, NULL); // wait for the server to start if(ourStatus != errAuthorizationSuccess) { // alert user the startup has failed NSBeginAlertSheet( @"Error!", @"OK", nil, nil, [NSApp mainWindow], self, nil, nil, self, @"Could not start the Openfire server.", nil); [statusTimer invalidate]; [self checkStatus]; }}- (void) stopServer{ char *args[1]; args[0] = NULL; OSStatus ourStatus = AuthorizationExecuteWithPrivileges([[authView authorization] authorizationRef], [authView authorizationRights]->items[0].value, kAuthorizationFlagDefaults, args, NULL); if(ourStatus != errAuthorizationSuccess) { // alert user the startup has failed NSBeginAlertSheet( @"Error!", @"OK", nil, nil, [NSApp mainWindow], self, nil, nil, self, @"Could not stop the Openfire server.", nil); [statusTimer invalidate]; [self checkStatus]; }}@end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -