Bearsampp 2026.7.11
Loading...
Searching...
No Matches
class.tpl.app.apache.php
Go to the documentation of this file.
1<?php
2/*
3 * Copyright (c) 2021-2024 Bearsampp
4 * License: GNU General Public License version 3 or later; see LICENSE.txt
5 * Author: bear
6 * Website: https://bearsampp.com
7 * Github: https://github.com/Bearsampp
8 */
9
18{
19 // Constants for menu and action identifiers
20 const MENU = 'apache';
21 const MENU_VERSIONS = 'apacheVersions';
22 const MENU_SERVICE = 'apacheService';
23 const MENU_DEBUG = 'apacheDebug';
24 const MENU_MODULES = 'apacheModules';
25 const MENU_ALIAS = 'apacheAlias';
26 const MENU_VHOSTS = 'apacheVhosts';
27
28 const ACTION_ENABLE = 'enableApache';
29 const ACTION_SWITCH_VERSION = 'switchApacheVersion';
30 const ACTION_CHANGE_PORT = 'changeApachePort';
31 const ACTION_INSTALL_SERVICE = 'installApacheService';
32 const ACTION_REMOVE_SERVICE = 'removeApacheService';
33 const ACTION_SWITCH_MODULE = 'switchApacheModule';
34 const ACTION_ADD_ALIAS = 'addAlias';
35 const ACTION_EDIT_ALIAS = 'editAlias';
36 const ACTION_ADD_VHOST = 'addVhost';
37 const ACTION_EDIT_VHOST = 'editVhost';
38 const ACTION_GEN_SSL_CERTIFICATE = 'genSslCertificate';
39 const ACTION_DEL_SSL_CERTIFICATE = 'delSslCertificate';
40
49 public static function process()
50 {
52
53 return TplApp::getMenuEnable($bearsamppLang->getValue(Lang::APACHE), self::MENU, get_called_class(), $bearsamppBins->getApache()->isEnable());
54 }
55
64 public static function getMenuApache()
65 {
67 $resultItems = $resultActions = '';
68
69 $isEnabled = $bearsamppBins->getApache()->isEnable();
70
71 // Download
72 $resultItems .= TplAestan::getItemLink(
74 HttpClient::getWebsiteUrl('module/apache', '#releases'),
75 false,
77 ) . PHP_EOL;
78
79 // Enable
80 $tplEnable = TplApp::getActionMulti(
81 self::ACTION_ENABLE, array($isEnabled ? Config::DISABLED : Config::ENABLED),
82 array($bearsamppLang->getValue(Lang::MENU_ENABLE), $isEnabled ? TplAestan::GLYPH_CHECK : ''),
83 false, get_called_class()
84 );
85 $resultItems .= $tplEnable[TplApp::SECTION_CALL] . PHP_EOL;
86 $resultActions .= $tplEnable[TplApp::SECTION_CONTENT] . PHP_EOL;
87
88 if ($isEnabled) {
89 $resultItems .= TplAestan::getItemSeparator() . PHP_EOL;
90
91 // Versions
92 $tplVersions = TplApp::getMenu($bearsamppLang->getValue(Lang::VERSIONS), self::MENU_VERSIONS, get_called_class());
93 $resultItems .= $tplVersions[TplApp::SECTION_CALL] . PHP_EOL;
94 $resultActions .= $tplVersions[TplApp::SECTION_CONTENT] . PHP_EOL;
95
96 // Service
97 $tplService = TplApp::getMenu($bearsamppLang->getValue(Lang::SERVICE), self::MENU_SERVICE, get_called_class());
98 $resultItems .= $tplService[TplApp::SECTION_CALL] . PHP_EOL;
99 $resultActions .= $tplService[TplApp::SECTION_CONTENT] . PHP_EOL;
100
101 // Debug
102 $tplDebug = TplApp::getMenu($bearsamppLang->getValue(Lang::DEBUG), self::MENU_DEBUG, get_called_class());
103 $resultItems .= $tplDebug[TplApp::SECTION_CALL] . PHP_EOL;
104 $resultActions .= $tplDebug[TplApp::SECTION_CONTENT] . PHP_EOL;
105
106 // Modules
107 $tplModules = TplApp::getMenu($bearsamppLang->getValue(Lang::MODULES), self::MENU_MODULES, get_called_class());
108 $resultItems .= $tplModules[TplApp::SECTION_CALL] . PHP_EOL;
109 $resultActions .= $tplModules[TplApp::SECTION_CONTENT] . PHP_EOL;
110
111 // Alias
112 $tplAlias = TplApp::getMenu($bearsamppLang->getValue(Lang::ALIASES), self::MENU_ALIAS, get_called_class());
113 $resultItems .= $tplAlias[TplApp::SECTION_CALL] . PHP_EOL;
114 $resultActions .= $tplAlias[TplApp::SECTION_CONTENT] . PHP_EOL;
115
116 // Vhosts
117 $tplVhosts = TplApp::getMenu($bearsamppLang->getValue(Lang::VIRTUAL_HOSTS), self::MENU_VHOSTS, get_called_class());
118 $resultItems .= $tplVhosts[TplApp::SECTION_CALL] . PHP_EOL;
119 $resultActions .= $tplVhosts[TplApp::SECTION_CONTENT] . PHP_EOL;
120
121 // Conf
122 $resultItems .= TplAestan::getItemNotepad(basename($bearsamppBins->getApache()->getConf()), $bearsamppBins->getApache()->getConf()) . PHP_EOL;
123
124 // Access log
125 $resultItems .= TplAestan::getItemNotepad($bearsamppLang->getValue(Lang::MENU_ACCESS_LOGS), $bearsamppBins->getApache()->getAccessLog()) . PHP_EOL;
126
127 // Rewrite log
128 $resultItems .= TplAestan::getItemNotepad($bearsamppLang->getValue(Lang::MENU_REWRITE_LOGS), $bearsamppBins->getApache()->getRewriteLog()) . PHP_EOL;
129
130 // Error log
131 $resultItems .= TplAestan::getItemNotepad($bearsamppLang->getValue(Lang::MENU_ERROR_LOGS), $bearsamppBins->getApache()->getErrorLog()) . PHP_EOL;
132 }
133
134 return $resultItems . PHP_EOL . $resultActions;
135 }
136
144 public static function getMenuApacheVersions()
145 {
146 global $bearsamppBins;
147 $items = '';
148 $actions = '';
149
150 foreach ($bearsamppBins->getApache()->getVersionList() as $version) {
151 $glyph = '';
152 $apachePhpModule = $bearsamppBins->getPhp()->getApacheModule($version);
153 if ($apachePhpModule === false) {
155 } elseif ($version == $bearsamppBins->getApache()->getVersion()) {
156 $glyph = TplAestan::GLYPH_CHECK;
157 }
158
159 $tplSwitchApacheVersion = TplApp::getActionMulti(
160 self::ACTION_SWITCH_VERSION, array($version),
161 array($version, $glyph),
162 false, get_called_class()
163 );
164
165 // Item
166 $items .= $tplSwitchApacheVersion[TplApp::SECTION_CALL] . PHP_EOL;
167
168 // Action
169 $actions .= PHP_EOL . $tplSwitchApacheVersion[TplApp::SECTION_CONTENT];
170 }
171
172 return $items . $actions;
173 }
174
183 public static function getActionEnableApache($enable)
184 {
185 global $bearsamppBins;
186
187 return TplApp::getActionRun(Action::ENABLE, array($bearsamppBins->getApache()->getName(), $enable)) . PHP_EOL .
189 }
190
199 public static function getActionSwitchApacheVersion($version)
200 {
201 global $bearsamppBins;
202 return TplApp::getActionRun(Action::SWITCH_VERSION, array($bearsamppBins->getApache()->getName(), $version)) . PHP_EOL .
204 }
205
215 public static function getMenuApacheService()
216 {
218
219 $tplChangePort = TplApp::getActionMulti(
220 self::ACTION_CHANGE_PORT, null,
222 false, get_called_class()
223 );
224
225 $result = TplAestan::getItemActionServiceStart($bearsamppBins->getApache()->getService()->getName()) . PHP_EOL .
226 TplAestan::getItemActionServiceStop($bearsamppBins->getApache()->getService()->getName()) . PHP_EOL .
227 TplAestan::getItemActionServiceRestart($bearsamppBins->getApache()->getService()->getName()) . PHP_EOL .
228 TplAestan::getItemSeparator() . PHP_EOL .
230 Action::CHECK_PORT, array($bearsamppBins->getApache()->getName(), $bearsamppBins->getApache()->getPort()),
231 array(sprintf($bearsamppLang->getValue(Lang::MENU_CHECK_PORT), $bearsamppBins->getApache()->getPort()), TplAestan::GLYPH_LIGHT)
232 ) . PHP_EOL .
234 Action::CHECK_PORT, array($bearsamppBins->getApache()->getName(), $bearsamppBins->getApache()->getSslPort(), true),
235 array(sprintf($bearsamppLang->getValue(Lang::MENU_CHECK_PORT), $bearsamppBins->getApache()->getSslPort()) . ' (SSL)', TplAestan::GLYPH_RED_LIGHT)
236 ) . PHP_EOL .
237 $tplChangePort[TplApp::SECTION_CALL] . PHP_EOL .
238 TplAestan::getItemNotepad($bearsamppLang->getValue(Lang::MENU_UPDATE_ENV_PATH), Path::getRootPath() . '/nssmEnvPaths.dat') . PHP_EOL;
239
240 $isInstalled = $bearsamppBins->getApache()->getService()->isInstalled();
241 if (!$isInstalled) {
242 $tplInstallService = TplApp::getActionMulti(
243 self::ACTION_INSTALL_SERVICE, null,
245 $isInstalled, get_called_class()
246 );
247
248 $result .= $tplInstallService[TplApp::SECTION_CALL] . PHP_EOL . PHP_EOL .
249 $tplInstallService[TplApp::SECTION_CONTENT] . PHP_EOL;
250 } else {
251 $tplRemoveService = TplApp::getActionMulti(
252 self::ACTION_REMOVE_SERVICE, null,
254 !$isInstalled, get_called_class()
255 );
256
257 $result .= $tplRemoveService[TplApp::SECTION_CALL] . PHP_EOL . PHP_EOL .
258 $tplRemoveService[TplApp::SECTION_CONTENT] . PHP_EOL;
259 }
260
261 $result .= $tplChangePort[TplApp::SECTION_CONTENT] . PHP_EOL;
262
263 return $result;
264 }
265
273 public static function getActionChangeApachePort()
274 {
275 global $bearsamppBins;
276
277 return TplApp::getActionRun(Action::CHANGE_PORT, array($bearsamppBins->getApache()->getName())) . PHP_EOL .
279 }
280
291
302
310 public static function getMenuApacheDebug()
311 {
312 global $bearsamppLang;
313
317 ) . PHP_EOL .
321 ) . PHP_EOL .
325 ) . PHP_EOL .
329 ) . PHP_EOL .
333 ) . PHP_EOL .
337 ) . PHP_EOL .
341 ) . PHP_EOL;
342 }
343
351 public static function getMenuApacheModules()
352 {
353 global $bearsamppBins;
354 $items = '';
355 $actions = '';
356
357 foreach ($bearsamppBins->getApache()->getModulesFromConf() as $module => $switch) {
358 $tplSwitchApacheModule = TplApp::getActionMulti(
359 self::ACTION_SWITCH_MODULE, array($module, $switch),
360 array($module, ($switch == ActionSwitchApacheModule::SWITCH_ON ? TplAestan::GLYPH_CHECK : '')),
361 false, get_called_class()
362 );
363
364 // Item
365 $items .= $tplSwitchApacheModule[TplApp::SECTION_CALL] . PHP_EOL;
366
367 // Action
368 $actions .= PHP_EOL . $tplSwitchApacheModule[TplApp::SECTION_CONTENT];
369 }
370
371 return $items . $actions;
372 }
373
388
396 public static function getMenuApacheAlias()
397 {
399
400 $tplAddAlias = TplApp::getActionMulti(
401 self::ACTION_ADD_ALIAS, null,
403 false, get_called_class()
404 );
405
406 // Items
407 $items = $tplAddAlias[TplApp::SECTION_CALL] . PHP_EOL .
408 TplAestan::getItemSeparator() . PHP_EOL;
409
410 // Actions
411 $actions = PHP_EOL . $tplAddAlias[TplApp::SECTION_CONTENT];
412
413 foreach ($bearsamppBins->getApache()->getAlias() as $alias) {
414 $tplEditAlias = TplApp::getActionMulti(
415 self::ACTION_EDIT_ALIAS, array($alias),
416 array(sprintf($bearsamppLang->getValue(Lang::MENU_EDIT_ALIAS), $alias), TplAestan::GLYPH_FILE),
417 false, get_called_class()
418 );
419
420 // Items
421 $items .= $tplEditAlias[TplApp::SECTION_CALL] . PHP_EOL;
422
423 // Actions
424 $actions .= PHP_EOL . PHP_EOL . $tplEditAlias[TplApp::SECTION_CONTENT];
425 }
426
427 return $items . $actions;
428 }
429
435 public static function getActionAddAlias()
436 {
437 return TplApp::getActionRun(Action::ADD_ALIAS) . PHP_EOL .
439 }
440
447 public static function getActionEditAlias($alias)
448 {
449 return TplApp::getActionRun(Action::EDIT_ALIAS, array($alias)) . PHP_EOL .
451 }
452
461 public static function getMenuApacheVhosts()
462 {
464
465 $tplAddVhost = TplApp::getActionMulti(
466 self::ACTION_ADD_VHOST, null,
468 false, get_called_class()
469 );
470
471 // Items
472 $items = $tplAddVhost[TplApp::SECTION_CALL] . PHP_EOL .
473 TplAestan::getItemSeparator() . PHP_EOL;
474
475 // Actions
476 $actions = PHP_EOL . $tplAddVhost[TplApp::SECTION_CONTENT];
477
478 foreach ($bearsamppBins->getApache()->getVhosts() as $vhost) {
479 $tplEditVhost = TplApp::getActionMulti(
480 self::ACTION_EDIT_VHOST, array($vhost),
481 array(sprintf($bearsamppLang->getValue(Lang::MENU_EDIT_VHOST), $vhost), TplAestan::GLYPH_FILE),
482 false, get_called_class()
483 );
484
485 // Items
486 $items .= $tplEditVhost[TplApp::SECTION_CALL] . PHP_EOL;
487
488 // Actions
489 $actions .= PHP_EOL . PHP_EOL . $tplEditVhost[TplApp::SECTION_CONTENT];
490 }
491
492 return $items . $actions;
493 }
494
500 public static function getActionAddVhost()
501 {
502 return TplApp::getActionRun(Action::ADD_VHOST) . PHP_EOL .
504 }
505
512 public static function getActionEditVhost($vhost)
513 {
514 return TplApp::getActionRun(Action::EDIT_VHOST, array($vhost)) . PHP_EOL .
516 }
517
518}
$result
global $bearsamppBins
global $bearsamppLang
global $bearsamppRoot
const ADD_ALIAS
const DEBUG_APACHE
const SWITCH_VERSION
const EDIT_VHOST
const SERVICE
const CHANGE_PORT
const EDIT_ALIAS
const ADD_VHOST
const CHECK_PORT
const SWITCH_APACHE_MODULE
const ENABLE
const CMD_SYNTAX_CHECK
const CMD_CONFIG_DIRECTIVES
const CMD_COMPILE_SETTINGS
const CMD_COMPILED_MODULES
const CMD_LOADED_MODULES
const CMD_VERSION_NUMBER
const CMD_VHOSTS_SETTINGS
const DISABLED
const ENABLED
static getWebsiteUrl($path='', $fragment='', $utmSource=true)
const MENU_ADD_ALIAS
const MENU_ENABLE
const DEBUG_APACHE_SYNTAX_CHECK
const DEBUG_APACHE_COMPILE_SETTINGS
const DEBUG_APACHE_COMPILED_MODULES
const MODULES
const SERVICE
const DEBUG_APACHE_CONFIG_DIRECTIVES
const DOWNLOAD_MORE
const MENU_CHANGE_PORT
const DEBUG
const MENU_ERROR_LOGS
const APACHE
const MENU_ADD_VHOST
const MENU_INSTALL_SERVICE
const MENU_REWRITE_LOGS
const MENU_UPDATE_ENV_PATH
const MENU_EDIT_VHOST
const VIRTUAL_HOSTS
const ALIASES
const MENU_ACCESS_LOGS
const DEBUG_APACHE_LOADED_MODULES
const DEBUG_APACHE_VERSION_NUMBER
const MENU_EDIT_ALIAS
const DEBUG_APACHE_VHOSTS_SETTINGS
const MENU_REMOVE_SERVICE
const MENU_CHECK_PORT
const VERSIONS
static getRootPath($aetrayPath=false)
const GLYPH_RED_LIGHT
const GLYPH_SERVICE_REMOVE
static getItemActionServiceStop($service)
const GLYPH_SERVICE_INSTALL
static getItemLink($caption, $link, $local=false, $glyph=self::GLYPH_WEB_PAGE)
static getItemNotepad($caption, $path)
static getItemActionServiceStart($service)
static getItemSeparator()
static getItemActionServiceRestart($service)
static getActionSwitchApacheVersion($version)
static getActionEditVhost($vhost)
static getActionEditAlias($alias)
static getActionChangeApachePort()
static getActionEnableApache($enable)
static getActionSwitchApacheModule($module, $switch)
static getActionInstallApacheService()
static getActionRemoveApacheService()
static getActionMulti($action, $args=array(), $item=array(), $disabled=false, $class=false)
static getMenu($caption, $menu, $class)
static getActionRun($action, $args=array(), $item=array(), $waitUntilTerminated=true)
const SECTION_CALL
const SECTION_CONTENT
static getMenuEnable($caption, $menu, $class, $enabled=true)
static getActionRestart($sName)