1
0
mirror of https://github.com/nicoverbruggen/phpmon.git synced 2025-11-06 04:40:07 +01:00

Load certain info from ini files

This commit is contained in:
2021-02-03 18:01:25 +01:00
parent 3e0a16cc73
commit 9824ed2b83
4 changed files with 104 additions and 41 deletions

View File

@@ -2,7 +2,7 @@
1. Merge into `main` 1. Merge into `main`
2. Create tag 2. Create tag
3. Add changes to changelog 3. Add changes to changelog + update security document
4. Archive 4. Archive
5. Notarize and prepare for own distribution 5. Notarize and prepare for own distribution
6. After notarization, export .app 6. After notarization, export .app

View File

@@ -9,8 +9,9 @@ import Foundation
class PhpInstall { class PhpInstall {
var version: Version! var version: Version
var extensions: [PhpExtension]! var configuration: Configuration
var extensions: [PhpExtension]
// MARK: - Computed // MARK: - Computed
@@ -21,29 +22,55 @@ class PhpInstall {
// MARK: - Initializer // MARK: - Initializer
init() { init() {
let version = Command.execute(path: Paths.php, arguments: ["-r", "print phpversion();"]) // Show information about the current version
self.version = type(of: self).getVersion()
self.version = Version() // If an error occurred, exit early
if (self.version.error) {
if (version == "" || version.contains("Warning")) { self.configuration = Configuration()
self.version.short = "💩 BROKEN" self.extensions = []
self.version.long = ""; return
self.version.error = true
return;
} }
// That's the long version
self.version.long = version
// Next up, let's strip away the minor version number
let segments = self.version.long.components(separatedBy: ".")
// Get the first two elements
self.version.short = segments[0...1].joined(separator: ".")
// Load extension information // Load extension information
let path = URL(fileURLWithPath: "\(Paths.etcPath)/php/\(self.version.short)/php.ini") let path = URL(fileURLWithPath: "\(Paths.etcPath)/php/\(self.version.short)/php.ini")
self.extensions = PhpExtension.load(from: path) self.extensions = PhpExtension.load(from: path)
// Get configuration values
self.configuration = Configuration(
memory_limit: type(of: self).getIniValue(key: "memory_limit"),
upload_max_filesize: type(of: self).getIniValue(key: "upload_max_filesize"),
post_max_size: type(of: self).getIniValue(key: "post_max_size")
)
print(self.configuration)
}
private static func getVersion() -> Version {
var versionStruct = Version()
let version = Command.execute(path: Paths.php, arguments: ["-r", "print phpversion();"])
if (version == "" || version.contains("Warning")) {
versionStruct.short = "💩 BROKEN"
versionStruct.long = "";
versionStruct.error = true
return versionStruct;
}
// That's the long version
versionStruct.long = version
// Next up, let's strip away the minor version number
let segments = versionStruct.long.components(separatedBy: ".")
// Get the first two elements
versionStruct.short = segments[0...1].joined(separator: ".")
return versionStruct
}
private static func getIniValue(key: String) -> String {
return Command.execute(path: Paths.php, arguments: ["-r", "echo ini_get('\(key)');"])
} }
// MARK: - Structs // MARK: - Structs
@@ -53,4 +80,10 @@ class PhpInstall {
var long = "???" var long = "???"
var error = false var error = false
} }
struct Configuration {
var memory_limit = "???"
var upload_max_filesize = "???"
var post_max_size = "???"
}
} }

View File

@@ -8,8 +8,7 @@
import Cocoa import Cocoa
class StatusMenu : NSMenu { class StatusMenu : NSMenu {
public func addPhpVersionMenuItems() public func addPhpVersionMenuItems() {
{
if (App.shared.currentInstall == nil) { if (App.shared.currentInstall == nil) {
return return
} }
@@ -27,8 +26,7 @@ class StatusMenu : NSMenu {
} }
} }
public func addPhpActionMenuItems() public func addPhpActionMenuItems() {
{
if App.busy { if App.busy {
self.addItem(NSMenuItem(title: "mi_busy".localized, action: nil, keyEquivalent: "")) self.addItem(NSMenuItem(title: "mi_busy".localized, action: nil, keyEquivalent: ""))
return return
@@ -37,6 +35,17 @@ class StatusMenu : NSMenu {
return return
} }
// Switch to PHP X.X
self.addSwitchToPhpMenuItems()
// Separator
self.addItem(NSMenuItem.separator())
// Services
self.addServicesMenuItems()
}
private func addSwitchToPhpMenuItems() {
var shortcutKey = 1 var shortcutKey = 1
for index in (0..<App.shared.availablePhpVersions.count).reversed() { for index in (0..<App.shared.availablePhpVersions.count).reversed() {
let version = App.shared.availablePhpVersions[index] let version = App.shared.availablePhpVersions[index]
@@ -50,40 +59,59 @@ class StatusMenu : NSMenu {
shortcutKey = shortcutKey + 1 shortcutKey = shortcutKey + 1
self.addItem(menuItem) self.addItem(menuItem)
} }
self.addItem(NSMenuItem.separator())
self.addItem(NSMenuItem(title: "mi_active_services".localized, action: nil, keyEquivalent: ""))
self.addItem(NSMenuItem(title: "mi_restart_dnsmasq".localized, action: #selector(MainMenu.restartDnsMasq), keyEquivalent: "d"))
self.addItem(NSMenuItem(title: "mi_restart_php_fpm".localized, action: #selector(MainMenu.restartPhpFpm), keyEquivalent: "p"))
self.addItem(NSMenuItem(title: "mi_restart_nginx".localized, action: #selector(MainMenu.restartNginx), keyEquivalent: "n"))
self.addItem(NSMenuItem(title: "mi_restart_all_services".localized, action: #selector(MainMenu.restartAllServices), keyEquivalent: "s"))
self.addItem(NSMenuItem.separator())
self.addItem(NSMenuItem(title: "mi_diagnostics".localized, action: nil, keyEquivalent: ""))
self.addItem(NSMenuItem(title: "mi_force_load_latest".localized, action: #selector(MainMenu.forceRestartLatestPhp), keyEquivalent: "f"))
} }
public func addPhpConfigurationMenuItems() private func addServicesMenuItems() {
{ self.addItem(NSMenuItem(title: "mi_active_services".localized, action: nil, keyEquivalent: ""))
let services = NSMenuItem(title: "mi_restart_specific".localized, action: nil, keyEquivalent: "")
let servicesMenu = NSMenu()
servicesMenu.addItem(NSMenuItem(title: "mi_restart_dnsmasq".localized, action: #selector(MainMenu.restartDnsMasq), keyEquivalent: "d"))
servicesMenu.addItem(NSMenuItem(title: "mi_restart_php_fpm".localized, action: #selector(MainMenu.restartPhpFpm), keyEquivalent: "p"))
servicesMenu.addItem(NSMenuItem(title: "mi_restart_nginx".localized, action: #selector(MainMenu.restartNginx), keyEquivalent: "n"))
for item in servicesMenu.items {
item.target = MainMenu.shared
}
self.setSubmenu(servicesMenu, for: services)
self.addItem(NSMenuItem(title: "mi_force_load_latest".localized, action: #selector(MainMenu.forceRestartLatestPhp), keyEquivalent: "f"))
self.addItem(services)
self.addItem(NSMenuItem(title: "mi_restart_all_services".localized, action: #selector(MainMenu.restartAllServices), keyEquivalent: "s"))
}
public func addPhpConfigurationMenuItems() {
if App.shared.currentInstall == nil { if App.shared.currentInstall == nil {
return return
} }
// Configuration
self.addItem(NSMenuItem(title: "mi_configuration".localized, action: nil, keyEquivalent: "")) self.addItem(NSMenuItem(title: "mi_configuration".localized, action: nil, keyEquivalent: ""))
self.addItem(NSMenuItem(title: "mi_valet_config".localized, action: #selector(MainMenu.openValetConfigFolder), keyEquivalent: "v")) self.addItem(NSMenuItem(title: "mi_valet_config".localized, action: #selector(MainMenu.openValetConfigFolder), keyEquivalent: "v"))
self.addItem(NSMenuItem(title: "mi_php_config".localized, action: #selector(MainMenu.openActiveConfigFolder), keyEquivalent: "c")) self.addItem(NSMenuItem(title: "mi_php_config".localized, action: #selector(MainMenu.openActiveConfigFolder), keyEquivalent: "c"))
self.addItem(NSMenuItem(title: "mi_phpinfo".localized, action: #selector(MainMenu.openPhpInfo), keyEquivalent: "i")) self.addItem(NSMenuItem(title: "mi_phpinfo".localized, action: #selector(MainMenu.openPhpInfo), keyEquivalent: "i"))
// Memory Limits
self.addItem(NSMenuItem.separator())
self.addItem(NSMenuItem(title: "mi_limits".localized, action: nil, keyEquivalent: ""))
self.addItem(NSMenuItem(title: "memory_limit: \(App.phpInstall!.configuration.memory_limit)", action: #selector(MainMenu.openActiveConfigFolder), keyEquivalent: ""))
self.addItem(NSMenuItem(title: "post_max_size: \(App.phpInstall!.configuration.post_max_size)", action: #selector(MainMenu.openActiveConfigFolder), keyEquivalent: ""))
self.addItem(NSMenuItem(title: "upload_max_filesize: \(App.phpInstall!.configuration.upload_max_filesize)", action: #selector(MainMenu.openActiveConfigFolder), keyEquivalent: ""))
// Extensions
self.addItem(NSMenuItem.separator()) self.addItem(NSMenuItem.separator())
self.addItem(NSMenuItem(title: "mi_detected_extensions".localized, action: nil, keyEquivalent: "")) self.addItem(NSMenuItem(title: "mi_detected_extensions".localized, action: nil, keyEquivalent: ""))
for phpExtension in App.phpInstall!.extensions {
self.addExtensionItem(phpExtension)
}
if (App.phpInstall!.extensions.count == 0) { if (App.phpInstall!.extensions.count == 0) {
self.addItem(NSMenuItem(title: "mi_no_extensions_detected".localized, action: nil, keyEquivalent: "")) self.addItem(NSMenuItem(title: "mi_no_extensions_detected".localized, action: nil, keyEquivalent: ""))
} }
for phpExtension in App.phpInstall!.extensions {
self.addExtensionItem(phpExtension)
}
} }
private func addExtensionItem(_ phpExtension: PhpExtension) { private func addExtensionItem(_ phpExtension: PhpExtension) {

View File

@@ -22,10 +22,12 @@
"mi_restart_php_fpm" = "Restart service: php"; "mi_restart_php_fpm" = "Restart service: php";
"mi_restart_nginx" = "Restart service: nginx"; "mi_restart_nginx" = "Restart service: nginx";
"mi_restart_dnsmasq" = "Restart service: dnsmasq"; "mi_restart_dnsmasq" = "Restart service: dnsmasq";
"mi_restart_specific" = "Restart specific service";
"mi_restart_all_services" = "Restart all services"; "mi_restart_all_services" = "Restart all services";
"mi_force_load_latest" = "Force load latest PHP version"; "mi_force_load_latest" = "Force load latest PHP version";
"mi_configuration" = "Configuration"; "mi_configuration" = "Configuration";
"mi_limits" = "Memory & Upload Limits";
"mi_valet_config" = "Locate Valet folder (.config/valet)"; "mi_valet_config" = "Locate Valet folder (.config/valet)";
"mi_php_config" = "Locate PHP configuration file (php.ini)"; "mi_php_config" = "Locate PHP configuration file (php.ini)";
"mi_phpinfo" = "Show current configuration (phpinfo)"; "mi_phpinfo" = "Show current configuration (phpinfo)";