mirror of
https://github.com/google/santa.git
synced 2026-04-24 03:00:12 -04:00
150 lines
4.4 KiB
Objective-C
150 lines
4.4 KiB
Objective-C
/// Copyright 2015 Google Inc. All rights reserved.
|
|
///
|
|
/// Licensed under the Apache License, Version 2.0 (the "License");
|
|
/// you may not use this file except in compliance with the License.
|
|
/// You may obtain a copy of the License at
|
|
///
|
|
/// http://www.apache.org/licenses/LICENSE-2.0
|
|
///
|
|
/// Unless required by applicable law or agreed to in writing, software
|
|
/// distributed under the License is distributed on an "AS IS" BASIS,
|
|
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
/// See the License for the specific language governing permissions and
|
|
/// limitations under the License.
|
|
|
|
#include "SNTCommonEnums.h"
|
|
|
|
///
|
|
/// Singleton that provides an interface for managing configuration values on disk
|
|
/// @note This class is designed as a singleton but that is not strictly enforced.
|
|
///
|
|
@interface SNTConfigurator : NSObject
|
|
|
|
/// Default config file path
|
|
extern NSString * const kDefaultConfigFilePath;
|
|
|
|
#pragma mark - Daemon Settings
|
|
|
|
///
|
|
/// The operating mode.
|
|
///
|
|
@property(nonatomic) santa_clientmode_t clientMode;
|
|
|
|
///
|
|
/// Whether or not to log all events, even for whitelisted binaries.
|
|
///
|
|
@property(nonatomic) BOOL logAllEvents;
|
|
|
|
///
|
|
/// The array of whitelisted directories.
|
|
///
|
|
@property(nonatomic) NSArray *whitelistDirs;
|
|
|
|
#pragma mark - GUI Settings
|
|
|
|
///
|
|
/// The URL to open when the user clicks "More Info..." when opening Santa.app.
|
|
/// If unset, the button will not be displayed.
|
|
///
|
|
@property(readonly, nonatomic) NSURL *moreInfoURL;
|
|
|
|
///
|
|
/// When the user gets a block notification, a button can be displayed which will
|
|
/// take them to a web page with more information about that event.
|
|
/// This property contains a kind of format string to be turned into the URL to send them to.
|
|
/// The following sequences will be replaced in the final URL:
|
|
///
|
|
/// %file_sha% -- SHA-256 of the file that was blocked.
|
|
/// %machine_id% -- ID of the machine.
|
|
/// %username% -- executing user.
|
|
///
|
|
/// @note: This is not an NSURL because the format-string parsing is done elsewhere.
|
|
///
|
|
/// If this item isn't set, the Open Event button will not be displayed.
|
|
///
|
|
@property(readonly, nonatomic) NSString *eventDetailURL;
|
|
|
|
///
|
|
/// Related to the above property, this string represents the text to show on the button.
|
|
///
|
|
@property(readonly, nonatomic) NSString *eventDetailText;
|
|
|
|
#pragma mark - Sync Settings
|
|
|
|
///
|
|
/// The base URL of the sync server.
|
|
///
|
|
@property(readonly, nonatomic) NSURL *syncBaseURL;
|
|
|
|
///
|
|
/// If YES, mid-execution event uploads are skipped.
|
|
/// This property is never stored on disk.
|
|
///
|
|
@property BOOL syncBackOff;
|
|
|
|
///
|
|
/// The machine owner.
|
|
///
|
|
@property(readonly, nonatomic) NSString *machineOwner;
|
|
|
|
///
|
|
/// If set, this over-rides the default machine ID used for syncing.
|
|
///
|
|
@property(readonly, nonatomic) NSString *machineID;
|
|
|
|
#pragma mark Server Auth Settings
|
|
|
|
///
|
|
/// If set, this is valid PEM containing one or more certificates to be used to evaluate the
|
|
/// server's SSL chain, overriding the list of trusted CAs distributed with the OS.
|
|
///
|
|
@property(readonly, nonatomic) NSData *syncServerAuthRootsData;
|
|
|
|
///
|
|
/// This property is the same as the above but is a file on disk containing the PEM data.
|
|
///
|
|
@property(readonly, nonatomic) NSString *syncServerAuthRootsFile;
|
|
|
|
#pragma mark Client Auth Settings
|
|
|
|
///
|
|
/// If set, this contains the location of a PKCS#12 certificate to be used for sync authentication.
|
|
///
|
|
@property(readonly, nonatomic) NSString *syncClientAuthCertificateFile;
|
|
|
|
///
|
|
/// Contains the password for the pkcs#12 certificate.
|
|
///
|
|
@property(readonly, nonatomic) NSString *syncClientAuthCertificatePassword;
|
|
|
|
///
|
|
/// If set, this is the Common Name of a certificate in the System keychain to be used for
|
|
/// sync authentication. The corresponding private key must also be in the keychain.
|
|
///
|
|
@property(readonly, nonatomic) NSString *syncClientAuthCertificateCn;
|
|
|
|
///
|
|
/// If set, this is the Issuer Name of a certificate in the System keychain to be used for
|
|
/// sync authentication. The corresponding private key must also be in the keychain.
|
|
///
|
|
@property(readonly, nonatomic) NSString *syncClientAuthCertificateIssuer;
|
|
|
|
///
|
|
/// Retrieve an initialized singleton configurator object using the default file path.
|
|
///
|
|
+ (instancetype)configurator;
|
|
|
|
///
|
|
/// Designated initializer.
|
|
///
|
|
/// @param filePath The path to the file to use as a backing store.
|
|
///
|
|
- (instancetype)initWithFilePath:(NSString *)filePath;
|
|
|
|
///
|
|
/// Re-read config data from disk.
|
|
///
|
|
- (void)reloadConfigData;
|
|
|
|
@end
|