panel.html 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. <div class="hidden" id="token" token="<?=$_SESSION['token']?>"></div>
  2. <a href="#" class="to-top" title="<?=_('Top');?>">
  3. <i class="fas fa-arrow-up"></i>
  4. </a>
  5. <a href="#" class="to-shortcuts" title="<?=_('Shortcuts');?>">
  6. <i class="fas fa-keyboard"></i>
  7. </a>
  8. <header class="l-header">
  9. <div class="l-center l-header__inner">
  10. <!-- Logo / Left Menu wrapper -->
  11. <div class="l-header__left">
  12. <!-- Logo / Home Button -->
  13. <a href="<?=htmlspecialchars($home_url)?>" class="l-logo" title="<?=_('Hestia Control Panel');?>"></a>
  14. <!-- Left Menu -->
  15. <div class="l-menu">
  16. <!-- Records tab -->
  17. <div class="l-menu__item <?php if(in_array($TAB, ['WEB', 'DNS', 'MAIL', 'DB', 'BACKUP', 'CRON', 'PACKAGE', 'USER', 'LOG'])) echo 'l-menu__item--active' ?>"><a href="<?=htmlspecialchars($home_url)?>"><i class="fas fa-list-check"></i><?=_('Records');?></a></div>
  18. <!-- File Manager tab -->
  19. <?php if ((isset($_SESSION['FILE_MANAGER'])) && (!empty($_SESSION['FILE_MANAGER'])) && ($_SESSION['FILE_MANAGER'] == "true")) {?>
  20. <?php if (($_SESSION['userContext'] === 'admin') && (isset($_SESSION['look']) && ($_SESSION['look'] === 'admin') && ($_SESSION['POLICY_SYSTEM_PROTECTED_ADMIN'] == 'yes'))) {?>
  21. <!-- Hide file manager when impersonating admin-->
  22. <?php } else { ?>
  23. <div class="l-menu__item <?php if($TAB == 'FM') echo 'l-menu__item--active' ?>"><a href="/fm/"><i class="fas fa-folder-open"></i><?=_('Files');?></a></div>
  24. <?php } ?>
  25. <?php } ?>
  26. <!-- Statistics tab-->
  27. <div class="l-menu__item <?php if($TAB == 'STATS') echo 'l-menu__item--active' ?>"><a href="/list/stats/"><i class="fas fa-chart-line"></i><?=_('Statistics');?></a></div>
  28. </div>
  29. </div>
  30. <!-- Right Menu -->
  31. <div class="l-profile">
  32. <!-- Logged in as / Usage Statistics Overview -->
  33. <div class="usage-pill">
  34. <?php
  35. if (isset($_SESSION['look'])) {
  36. $user_icon = 'fa-binoculars';
  37. } else if ($_SESSION['userContext'] === 'admin') {
  38. $user_icon = 'fa-user-tie';
  39. } else {
  40. $user_icon = 'fa-user';
  41. }
  42. ?>
  43. <span class="usage-pill__item"><i class="fas <?=$user_icon;?> icon-pad-right" title="<?=_('Logged in as');?>: <?=htmlspecialchars($panel[$user]['NAME'])?>"></i><b><?=htmlspecialchars($user)?></b></span>
  44. <span class="usage-pill__item"><i class="fas fa-hard-drive icon-pad-right" title="<?=_('Disk');?>: <?=humanize_usage_size($panel[$user]['U_DISK'])?> <?=humanize_usage_measure($panel[$user]['U_DISK'])?>"></i><b><?=humanize_usage_size($panel[$user]['U_DISK'])?></b> <?=humanize_usage_measure($panel[$user]['U_DISK'])?></span>
  45. <span class="usage-pill__item"><i class="fas fa-right-left icon-pad-right" title="<?=_('Bandwidth');?>: <?=humanize_usage_size($panel[$user]['U_BANDWIDTH'])?> <?=humanize_usage_measure($panel[$user]['U_BANDWIDTH'])?>"></i><b><?=humanize_usage_size($panel[$user]['U_BANDWIDTH'])?></b> <?=humanize_usage_measure($panel[$user]['U_BANDWIDTH'])?></span>
  46. </div>
  47. <!-- Notifications -->
  48. <?php if (($_SESSION['userContext'] === 'admin') && (isset($_SESSION['look']) && ($user == 'admin'))) {?>
  49. <!-- Do not show notifications panel when impersonating 'admin' user -->
  50. <?php } else { ?>
  51. <div class="l-menu__item">
  52. <a title="<?=_('Notifications');?>" href="#" class="l-profile__notifications <?php if ($panel[$user]['NOTIFICATIONS'] == 'yes') echo " updates"; ?>">
  53. <i class="fas fa-bell <?php if ($panel[$user]['NOTIFICATIONS'] == 'yes') echo " animate__animated animate__swing status-icon orange"; ?>"></i>
  54. </a>
  55. <ul class="notification-container u-hidden animate__animated animate__fadeIn"></ul>
  56. </div>
  57. <?php } ?>
  58. <!-- Server Settings -->
  59. <?php if (($_SESSION['userContext'] === 'admin') && ($_SESSION['POLICY_SYSTEM_HIDE_SERVICES'] !== 'yes') || ($_SESSION['user'] === 'admin')) {?>
  60. <?php if (($_SESSION['userContext'] === 'admin') && (!empty($_SESSION['look']))) {?>
  61. <!-- Hide 'Server Settings' button when impersonating 'admin' or other users -->
  62. <?php } else { ?>
  63. <div class="l-menu__item <?php if(in_array($TAB, ['SERVER', 'IP', 'RRD', 'FIREWALL'])) echo 'l-menu__item--active' ?>"><a href="/list/server/" class="l-profile__serversettings" title="<?=_('Server');?>"><i class="fas fa-gear"></i></a></div>
  64. <?php } ?>
  65. <?php } ?>
  66. <!-- Edit User -->
  67. <?php if (($_SESSION['userContext'] === 'admin') && (isset($_SESSION['look']) && ($user == 'admin'))) {?>
  68. <!-- Hide 'edit user' entry point from other administrators for default 'admin' account-->
  69. <div class="l-menu__item <?php if($TAB == 'LOG') echo 'l-menu__item--active' ?>"><a href="/list/log/" title="<?=_('Logs');?>" class="l-profile__username"><i class="fas fa-clock-rotate-left"></i></a></div>
  70. <?php } else { ?>
  71. <?php if ($panel[$user]['SUSPENDED'] === 'no') {?>
  72. <div class="l-menu__item"><a href="/edit/user/?user=<?=$user; ?>&token=<?=$_SESSION['token']?>" title="<?=htmlspecialchars($user)?> (<?=htmlspecialchars($panel[$user]['NAME'])?>)" class="l-profile__username"><i class="fas fa-circle-user"></i></a></div>
  73. <?php } ?>
  74. <?php } ?>
  75. <!-- Help / Documentation-->
  76. <div class="l-menu__item"><a href="https://docs.hestiacp.com/" rel="noopener" title="<?=_('Help');?>" class="l-profile__help" target="_blank"><i class="fas fa-circle-question"></i></a></div>
  77. <!-- Logout -->
  78. <?php if (isset($_SESSION['look']) && (!empty($_SESSION['look']))) { ?>
  79. <div class="l-menu__item"><a href="/logout/?token=<?=$_SESSION['token']?>" title="<?=_('Log out');?> (<?=$user?>)" class="l-profile__logout"><i class="fas fa-circle-up"></i></a></div>
  80. <?php } else { ?>
  81. <div class="l-menu__item"><a href="/logout/?token=<?=$_SESSION['token']?>" title="<?=_('Log out');?>" class="l-profile__logout"><i class="fas fa-right-from-bracket"></i></a></div>
  82. <?php } ?>
  83. </div>
  84. </div>
  85. </header>
  86. <div class="l-content">
  87. <div class="l-center">
  88. <nav class="main-menu">
  89. <ul class="main-menu-list">
  90. <!-- Users tab -->
  91. <?php if (($_SESSION['userContext'] == 'admin') && (empty($_SESSION['look']))) {?>
  92. <?php
  93. if (($_SESSION['user'] !== 'admin') && ($_SESSION['POLICY_SYSTEM_HIDE_ADMIN'] === 'yes')) {
  94. $user_count = $panel[$user]['U_USERS'] - 1;
  95. } else {
  96. $user_count = $panel[$user]['U_USERS'];
  97. }
  98. ?>
  99. <li class="main-menu-item">
  100. <a class="main-menu-item-link <?php if(in_array($TAB, ['USER', 'LOG'])) echo 'active' ?>" href="/list/user/" title="<?=_('Users');?>: <?=$user_count;?>&#13;<?=_('Suspended');?>: <?=$panel[$user]['SUSPENDED_USERS']?>">
  101. <p class="main-menu-item-label"><?=_('USER');?><i class="fas fa-users u-ml10"></i></p>
  102. <ul class="main-menu-stats">
  103. <li>
  104. <?=_('users');?>: <span><?=htmlspecialchars($user_count);?></span>
  105. </li>
  106. <li>
  107. <?=_('spnd');?>: <span><?=$panel[$user]['SUSPENDED_USERS']?></span>
  108. </li>
  109. </ul>
  110. </a>
  111. </li>
  112. <?php } ?>
  113. <!-- Web tab -->
  114. <?php if ((isset($_SESSION['WEB_SYSTEM'])) && (!empty($_SESSION['WEB_SYSTEM']))) {?>
  115. <?php if($panel[$user]['WEB_DOMAINS'] != "0") { ?>
  116. <li class="main-menu-item">
  117. <a class="main-menu-item-link <?php if($TAB == 'WEB') echo 'active' ?>" href="/list/web/" title="<?=_('Domains');?>: <?=$panel[$user]['U_WEB_DOMAINS']?>&#13;<?=_('Aliases');?>: <?=$panel[$user]['U_WEB_ALIASES']?>&#13;<?=_('Limit')?>: <?=$panel[$user]['WEB_DOMAINS']=='unlimited' ? "∞" : $panel[$user]['WEB_DOMAINS']?>&#13;<?=_('Suspended');?>: <?=$panel[$user]['SUSPENDED_WEB']?>">
  118. <p class="main-menu-item-label"><?=_('WEB');?><i class="fas fa-earth-americas u-ml10"></i></p>
  119. <ul class="main-menu-stats">
  120. <li>
  121. <?=_('domains');?>: <span><?=$panel[$user]['U_WEB_DOMAINS']?> / <?=$panel[$user]['WEB_DOMAINS']=='unlimited' ? "<b>∞</b>" : $panel[$user]['WEB_DOMAINS']?> (<?=$panel[$user]['SUSPENDED_WEB']?>)</span>
  122. </li>
  123. <li>
  124. <?=_('aliases');?>: <span><?=$panel[$user]['U_WEB_ALIASES']?> / <?=$panel[$user]['WEB_ALIASES']=='unlimited' || $panel[$user]['WEB_DOMAINS']=='unlimited' ? "<b>∞</b>" : $panel[$user]['WEB_ALIASES'] * $panel[$user]['WEB_DOMAINS']?></span>
  125. </li>
  126. </ul>
  127. </a>
  128. </li>
  129. <?php } ?>
  130. <?php } ?>
  131. <!-- DNS tab -->
  132. <?php if ((isset($_SESSION['DNS_SYSTEM'])) && (!empty($_SESSION['DNS_SYSTEM']))) {?>
  133. <?php if($panel[$user]['DNS_DOMAINS'] != "0") { ?>
  134. <li class="main-menu-item">
  135. <a class="main-menu-item-link <?php if($TAB == 'DNS') echo 'active' ?>" href="/list/dns/" title="<?=_('Domains');?>: <?=$panel[$user]['U_DNS_DOMAINS']?>&#13;<?=_('Limit')?>: <?=$panel[$user]['DNS_DOMAINS']=='unlimited' ? "∞" : $panel[$user]['DNS_DOMAINS']?>&#13;<?=_('Suspended');?>: <?=$panel[$user]['SUSPENDED_DNS']?>">
  136. <p class="main-menu-item-label"><?=_('DNS');?><i class="fas fa-book-atlas u-ml10"></i></p>
  137. <ul class="main-menu-stats">
  138. <li>
  139. <?=_('zones');?>: <span><?=$panel[$user]['U_DNS_DOMAINS']?> / <?=$panel[$user]['DNS_DOMAINS']=='unlimited' ? "<b>∞</b>" : $panel[$user]['DNS_DOMAINS']?> (<?=$panel[$user]['SUSPENDED_DNS']?>)</span>
  140. </li>
  141. <li>
  142. <?=_('records');?>: <span><?=$panel[$user]['U_DNS_RECORDS']?> / <?=$panel[$user]['DNS_RECORDS']=='unlimited' || $panel[$user]['DNS_DOMAINS']=='unlimited' ? "<b>∞</b>" : $panel[$user]['DNS_RECORDS'] * $panel[$user]['DNS_DOMAINS']?></span>
  143. </li>
  144. </ul>
  145. </a>
  146. </li>
  147. <?php } ?>
  148. <?php } ?>
  149. <!-- Mail tab -->
  150. <?php if ((isset($_SESSION['MAIL_SYSTEM'])) && (!empty($_SESSION['MAIL_SYSTEM']))) {?>
  151. <?php if($panel[$user]['MAIL_DOMAINS'] != "0") { ?>
  152. <li class="main-menu-item">
  153. <a class="main-menu-item-link <?php if($TAB == 'MAIL') echo 'active' ?>" href="/list/mail/" title="<?=_('Domains');?>: <?=$panel[$user]['U_MAIL_DOMAINS']?>&#13;<?=_('Limit')?>: <?=$panel[$user]['MAIL_DOMAINS']=='unlimited' ? "∞" : $panel[$user]['MAIL_DOMAINS']?>&#13;<?=_('Suspended');?>: <?=$panel[$user]['SUSPENDED_MAIL']?>">
  154. <p class="main-menu-item-label"><?=_('MAIL');?><i class="fas fa-envelopes-bulk u-ml10"></i></p>
  155. <ul class="main-menu-stats">
  156. <li>
  157. <?=_('domains');?>: <span><?=$panel[$user]['U_MAIL_DOMAINS']?> / <?=$panel[$user]['MAIL_DOMAINS']=='unlimited' ? "<b>∞</b>" : $panel[$user]['MAIL_DOMAINS']?> (<?=$panel[$user]['SUSPENDED_MAIL']?>)</span>
  158. </li>
  159. <li>
  160. <?=_('accounts');?>: <span><?=$panel[$user]['U_MAIL_ACCOUNTS']?> / <?=$panel[$user]['MAIL_ACCOUNTS']=='unlimited' || $panel[$user]['MAIL_DOMAINS']=='unlimited' ? "<b>∞</b>" : $panel[$user]['MAIL_ACCOUNTS'] * $panel[$user]['MAIL_DOMAINS']?></span>
  161. </li>
  162. </ul>
  163. </a>
  164. </li>
  165. <?php } ?>
  166. <?php } ?>
  167. <!-- Databases tab -->
  168. <?php if ((isset($_SESSION['DB_SYSTEM'])) && (!empty($_SESSION['DB_SYSTEM']))) {?>
  169. <?php if($panel[$user]['DATABASES'] != "0") { ?>
  170. <li class="main-menu-item">
  171. <a class="main-menu-item-link <?php if($TAB == 'DB') echo 'active' ?>" href="/list/db/" title="<?=_('Databases');?>: <?=$panel[$user]['U_DATABASES']?>&#13;<?=_('Limit')?>: <?=$panel[$user]['DATABASES']=='unlimited' ? "∞" : $panel[$user]['DATABASES']?>&#13;<?=_('Suspended');?>: <?=$panel[$user]['SUSPENDED_DB']?>">
  172. <p class="main-menu-item-label"><?=_('DB');?><i class="fas fa-database u-ml10"></i></p>
  173. <ul class="main-menu-stats">
  174. <li>
  175. <?=_('databases');?>: <span><?=$panel[$user]['U_DATABASES']?> / <?=$panel[$user]['DATABASES']=='unlimited' ? "<b>∞</b>" : $panel[$user]['DATABASES']?> (<?=$panel[$user]['SUSPENDED_DB']?>)</span>
  176. </li>
  177. </ul>
  178. </a>
  179. </li>
  180. <?php } ?>
  181. <?php } ?>
  182. <!-- Cron tab -->
  183. <?php if ((isset($_SESSION['CRON_SYSTEM'])) && (!empty($_SESSION['CRON_SYSTEM']))) {?>
  184. <?php if($panel[$user]['CRON_JOBS'] != "0") { ?>
  185. <li class="main-menu-item">
  186. <a class="main-menu-item-link <?php if($TAB == 'CRON') echo 'active' ?>" href="/list/cron/" title="<?=_('Jobs');?>: <?=$panel[$user]['U_WEB_DOMAINS']?>&#13;<?=_('Limit')?>: <?=$panel[$user]['CRON_JOBS']=='unlimited' ? "∞" : $panel[$user]['CRON_JOBS']?>&#13;<?=_('Suspended');?>: <?=$panel[$user]['SUSPENDED_CRON']?>">
  187. <p class="main-menu-item-label"><?=_('CRON');?><i class="fas fa-clock u-ml10"></i></p>
  188. <ul class="main-menu-stats">
  189. <li>
  190. <?=_('jobs');?>: <span><?=$panel[$user]['U_CRON_JOBS']?> / <?=$panel[$user]['CRON_JOBS']=='unlimited' ? "<b>∞</b>" : $panel[$user]['CRON_JOBS']?> (<?=$panel[$user]['SUSPENDED_CRON']?>)</span>
  191. </li>
  192. </ul>
  193. </a>
  194. </li>
  195. <?php } ?>
  196. <?php } ?>
  197. <!-- Backups tab -->
  198. <?php if ((isset($_SESSION['BACKUP_SYSTEM'])) && (!empty($_SESSION['BACKUP_SYSTEM']))) {?>
  199. <?php if($panel[$user]['BACKUPS'] != "0") { ?>
  200. <li class="main-menu-item">
  201. <a class="main-menu-item-link <?php if($TAB == 'BACKUP') echo 'active' ?>" href="/list/backup/" title="<?=_('Backups');?>: <?=$panel[$user]['U_BACKUPS']?>&#13;<?=_('Limit')?>: <?=$panel[$user]['BACKUPS']=='unlimited' ? "∞" : $panel[$user]['BACKUPS']?>">
  202. <p class="main-menu-item-label"><?=_('BACKUP');?><i class="fas fa-file-zipper u-ml10"></i></p>
  203. <ul class="main-menu-stats">
  204. <li>
  205. <?=_('backups');?>: <span><?=$panel[$user]['U_BACKUPS']?> / <?=$panel[$user]['BACKUPS']=='unlimited' ? "<b>∞</b>" : $panel[$user]['BACKUPS']?></span>
  206. </li>
  207. </ul>
  208. </a>
  209. </li>
  210. <?php } ?>
  211. <?php } ?>
  212. </ul>
  213. </nav>
  214. </div>