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:
@@ -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
|
||||||
|
|||||||
@@ -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 = "???"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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)";
|
||||||
|
|||||||
Reference in New Issue
Block a user