Bearsampp 2026.9.23
Loading...
Searching...
No Matches
class.tpl.app.apache.php
Go to the documentation of this file.
1<?php
2/*
3 * Copyright (c) 2021-2026 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,
82 array($isEnabled ? Config::DISABLED : Config::ENABLED),
83 array($bearsamppLang->getValue(Lang::MENU_ENABLE), $isEnabled ? TplAestan::GLYPH_CHECK : ''),
84 false,
85 get_called_class()
86 );
87 $resultItems .= $tplEnable[TplApp::SECTION_CALL] . PHP_EOL;
88 $resultActions .= $tplEnable[TplApp::SECTION_CONTENT] . PHP_EOL;
89
90 if ($isEnabled) {
91 $resultItems .= TplAestan::getItemSeparator() . PHP_EOL;
92
93 // Versions
94 $tplVersions = TplApp::getMenu($bearsamppLang->getValue(Lang::VERSIONS), self::MENU_VERSIONS, get_called_class());
95 $resultItems .= $tplVersions[TplApp::SECTION_CALL] . PHP_EOL;
96 $resultActions .= $tplVersions[TplApp::SECTION_CONTENT] . PHP_EOL;
97
98 // Service
99 $tplService = TplApp::getMenu($bearsamppLang->getValue(Lang::SERVICE), self::MENU_SERVICE, get_called_class());
100 $resultItems .= $tplService[TplApp::SECTION_CALL] . PHP_EOL;
101 $resultActions .= $tplService[TplApp::SECTION_CONTENT] . PHP_EOL;
102
103 // Debug
104 $tplDebug = TplApp::getMenu($bearsamppLang->getValue(Lang::DEBUG), self::MENU_DEBUG, get_called_class());
105 $resultItems .= $tplDebug[TplApp::SECTION_CALL] . PHP_EOL;
106 $resultActions .= $tplDebug[TplApp::SECTION_CONTENT] . PHP_EOL;
107
108 // Modules
109 $tplModules = TplApp::getMenu($bearsamppLang->getValue(Lang::MODULES), self::MENU_MODULES, get_called_class());
110 $resultItems .= $tplModules[TplApp::SECTION_CALL] . PHP_EOL;
111 $resultActions .= $tplModules[TplApp::SECTION_CONTENT] . PHP_EOL;
112
113 // Alias
114 $tplAlias = TplApp::getMenu($bearsamppLang->getValue(Lang::ALIASES), self::MENU_ALIAS, get_called_class());
115 $resultItems .= $tplAlias[TplApp::SECTION_CALL] . PHP_EOL;
116 $resultActions .= $tplAlias[TplApp::SECTION_CONTENT] . PHP_EOL;
117
118 // Vhosts
119 $tplVhosts = TplApp::getMenu($bearsamppLang->getValue(Lang::VIRTUAL_HOSTS), self::MENU_VHOSTS, get_called_class());
120 $resultItems .= $tplVhosts[TplApp::SECTION_CALL] . PHP_EOL;
121 $resultActions .= $tplVhosts[TplApp::SECTION_CONTENT] . PHP_EOL;
122
123 // Conf
124 $resultItems .= TplAestan::getItemNotepad(basename($bearsamppBins->getApache()->getConf()), $bearsamppBins->getApache()->getConf()) . PHP_EOL;
125
126 // Access log
127 $resultItems .= TplAestan::getItemNotepad($bearsamppLang->getValue(Lang::MENU_ACCESS_LOGS), $bearsamppBins->getApache()->getAccessLog()) . PHP_EOL;
128
129 // Rewrite log
130 $resultItems .= TplAestan::getItemNotepad($bearsamppLang->getValue(Lang::MENU_REWRITE_LOGS), $bearsamppBins->getApache()->getRewriteLog()) . PHP_EOL;
131
132 // Error log
133 $resultItems .= TplAestan::getItemNotepad($bearsamppLang->getValue(Lang::MENU_ERROR_LOGS), $bearsamppBins->getApache()->getErrorLog()) . PHP_EOL;
134 }
135
136 return $resultItems . PHP_EOL . $resultActions;
137 }
138
146 public static function getMenuApacheVersions()
147 {
148 global $bearsamppBins;
149 $items = '';
150 $actions = '';
151
152 foreach ($bearsamppBins->getApache()->getVersionList() as $version) {
153 $glyph = '';
154 $apachePhpModule = $bearsamppBins->getPhp()->getApacheModule($version);
155 if ($apachePhpModule === false) {
157 } elseif ($version == $bearsamppBins->getApache()->getVersion()) {
158 $glyph = TplAestan::GLYPH_CHECK;
159 }
160
161 $tplSwitchApacheVersion = TplApp::getActionMulti(
162 self::ACTION_SWITCH_VERSION,
163 array($version),
164 array($version, $glyph),
165 false,
166 get_called_class()
167 );
168
169 // Item
170 $items .= $tplSwitchApacheVersion[TplApp::SECTION_CALL] . PHP_EOL;
171
172 // Action
173 $actions .= PHP_EOL . $tplSwitchApacheVersion[TplApp::SECTION_CONTENT];
174 }
175
176 return $items . $actions;
177 }
178
188 public static function getActionEnableApache($enable)
189 {
190 global $bearsamppBins;
191
192 return TplApp::getActionRun(Action::ENABLE, array($bearsamppBins->getApache()->getName(), $enable)) . PHP_EOL .
194 }
195
205 public static function getActionSwitchApacheVersion($version)
206 {
207 global $bearsamppBins;
208
209 return TplApp::getActionRun(Action::SWITCH_VERSION, array($bearsamppBins->getApache()->getName(), $version)) . PHP_EOL .
211 }
212
222 public static function getMenuApacheService()
223 {
225
226 $tplChangePort = TplApp::getActionMulti(
227 self::ACTION_CHANGE_PORT,
228 null,
230 false,
231 get_called_class()
232 );
233
234 $result = TplAestan::getItemActionServiceStart($bearsamppBins->getApache()->getService()->getName()) . PHP_EOL .
235 TplAestan::getItemActionServiceStop($bearsamppBins->getApache()->getService()->getName()) . PHP_EOL .
236 TplAestan::getItemActionServiceRestart($bearsamppBins->getApache()->getService()->getName()) . PHP_EOL .
237 TplAestan::getItemSeparator() . PHP_EOL .
240 array($bearsamppBins->getApache()->getName(), $bearsamppBins->getApache()->getPort()),
241 array(sprintf($bearsamppLang->getValue(Lang::MENU_CHECK_PORT), $bearsamppBins->getApache()->getPort()), TplAestan::GLYPH_LIGHT)
242 ) . PHP_EOL .
245 array($bearsamppBins->getApache()->getName(), $bearsamppBins->getApache()->getSslPort(), true),
246 array(sprintf($bearsamppLang->getValue(Lang::MENU_CHECK_PORT), $bearsamppBins->getApache()->getSslPort()) . ' (SSL)', TplAestan::GLYPH_RED_LIGHT)
247 ) . PHP_EOL .
248 $tplChangePort[TplApp::SECTION_CALL] . PHP_EOL .
249 TplAestan::getItemNotepad($bearsamppLang->getValue(Lang::MENU_UPDATE_ENV_PATH), Path::getRootPath() . '/nssmEnvPaths.dat') . PHP_EOL;
250
251 $isInstalled = $bearsamppBins->getApache()->getService()->isInstalled();
252 if (!$isInstalled) {
253 $tplInstallService = TplApp::getActionMulti(
254 self::ACTION_INSTALL_SERVICE,
255 null,
257 $isInstalled,
258 get_called_class()
259 );
260
261 $result .= $tplInstallService[TplApp::SECTION_CALL] . PHP_EOL . PHP_EOL .
262 $tplInstallService[TplApp::SECTION_CONTENT] . PHP_EOL;
263 } else {
264 $tplRemoveService = TplApp::getActionMulti(
265 self::ACTION_REMOVE_SERVICE,
266 null,
268 !$isInstalled,
269 get_called_class()
270 );
271
272 $result .= $tplRemoveService[TplApp::SECTION_CALL] . PHP_EOL . PHP_EOL .
273 $tplRemoveService[TplApp::SECTION_CONTENT] . PHP_EOL;
274 }
275
276 $result .= $tplChangePort[TplApp::SECTION_CONTENT] . PHP_EOL;
277
278 return $result;
279 }
280
288 public static function getActionChangeApachePort()
289 {
290 global $bearsamppBins;
291
292 return TplApp::getActionRun(Action::CHANGE_PORT, array($bearsamppBins->getApache()->getName())) . PHP_EOL .
294 }
295
306
317
325 public static function getMenuApacheDebug()
326 {
327 global $bearsamppLang;
328
333 ) . PHP_EOL .
338 ) . PHP_EOL .
343 ) . PHP_EOL .
348 ) . PHP_EOL .
353 ) . PHP_EOL .
358 ) . PHP_EOL .
363 ) . PHP_EOL;
364 }
365
373 public static function getMenuApacheModules()
374 {
375 global $bearsamppBins;
376 $items = '';
377 $actions = '';
378
379 foreach ($bearsamppBins->getApache()->getModulesFromConf() as $module => $switch) {
380 $tplSwitchApacheModule = TplApp::getActionMulti(
381 self::ACTION_SWITCH_MODULE,
382 array($module, $switch),
383 array($module, ($switch == ActionSwitchApacheModule::SWITCH_ON ? TplAestan::GLYPH_CHECK : '')),
384 false,
385 get_called_class()
386 );
387
388 // Item
389 $items .= $tplSwitchApacheModule[TplApp::SECTION_CALL] . PHP_EOL;
390
391 // Action
392 $actions .= PHP_EOL . $tplSwitchApacheModule[TplApp::SECTION_CONTENT];
393 }
394
395 return $items . $actions;
396 }
397
406 public static function getActionSwitchApacheModule($module, $switch)
407 {
409
410 return TplApp::getActionRun(Action::SWITCH_APACHE_MODULE, array($module, $switch)) . PHP_EOL .
413 }
414
423 public static function getMenuApacheAlias()
424 {
426
427 $tplAddAlias = TplApp::getActionMulti(
428 self::ACTION_ADD_ALIAS,
429 null,
431 false,
432 get_called_class()
433 );
434
435 // Items
436 $items = $tplAddAlias[TplApp::SECTION_CALL] . PHP_EOL .
437 TplAestan::getItemSeparator() . PHP_EOL;
438
439 // Actions
440 $actions = PHP_EOL . $tplAddAlias[TplApp::SECTION_CONTENT];
441
442 foreach ($bearsamppBins->getApache()->getAlias() as $alias) {
443 $tplEditAlias = TplApp::getActionMulti(
444 self::ACTION_EDIT_ALIAS,
445 array($alias),
446 array(sprintf($bearsamppLang->getValue(Lang::MENU_EDIT_ALIAS), $alias), TplAestan::GLYPH_FILE),
447 false,
448 get_called_class()
449 );
450
451 // Items
452 $items .= $tplEditAlias[TplApp::SECTION_CALL] . PHP_EOL;
453
454 // Actions
455 $actions .= PHP_EOL . PHP_EOL . $tplEditAlias[TplApp::SECTION_CONTENT];
456 }
457
458 return $items . $actions;
459 }
460
466 public static function getActionAddAlias()
467 {
468 return TplApp::getActionRun(Action::ADD_ALIAS) . PHP_EOL .
470 }
471
479 public static function getActionEditAlias($alias)
480 {
481 return TplApp::getActionRun(Action::EDIT_ALIAS, array($alias)) . PHP_EOL .
483 }
484
493 public static function getMenuApacheVhosts()
494 {
496
497 $tplAddVhost = TplApp::getActionMulti(
498 self::ACTION_ADD_VHOST,
499 null,
501 false,
502 get_called_class()
503 );
504
505 // Items
506 $items = $tplAddVhost[TplApp::SECTION_CALL] . PHP_EOL .
507 TplAestan::getItemSeparator() . PHP_EOL;
508
509 // Actions
510 $actions = PHP_EOL . $tplAddVhost[TplApp::SECTION_CONTENT];
511
512 foreach ($bearsamppBins->getApache()->getVhosts() as $vhost) {
513 $tplEditVhost = TplApp::getActionMulti(
514 self::ACTION_EDIT_VHOST,
515 array($vhost),
516 array(sprintf($bearsamppLang->getValue(Lang::MENU_EDIT_VHOST), $vhost), TplAestan::GLYPH_FILE),
517 false,
518 get_called_class()
519 );
520
521 // Items
522 $items .= $tplEditVhost[TplApp::SECTION_CALL] . PHP_EOL;
523
524 // Actions
525 $actions .= PHP_EOL . PHP_EOL . $tplEditVhost[TplApp::SECTION_CONTENT];
526 }
527
528 return $items . $actions;
529 }
530
536 public static function getActionAddVhost()
537 {
538 return TplApp::getActionRun(Action::ADD_VHOST) . PHP_EOL .
540 }
541
549 public static function getActionEditVhost($vhost)
550 {
551 return TplApp::getActionRun(Action::EDIT_VHOST, array($vhost)) . PHP_EOL .
553 }
554
555}
$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)