panel.html 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  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. <div 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 u-noselect">
  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-tasks panel-icon"></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 panel-icon"></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 panel-icon"></i><?=_('Statistics');?></a></div>
  28. </div>
  29. </div>
  30. <!-- Right Menu -->
  31. <div class="l-profile u-noselect">
  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-hdd 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-exchange-alt 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');?>" 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. </div>
  56. <?php } ?>
  57. <!-- Server Settings -->
  58. <?php if (($_SESSION['userContext'] === 'admin') && ($_SESSION['POLICY_SYSTEM_HIDE_SERVICES'] !== 'yes') || ($_SESSION['user'] === 'admin')) {?>
  59. <?php if (($_SESSION['userContext'] === 'admin') && (!empty($_SESSION['look']))) {?>
  60. <!-- Hide 'Server Settings' button when impersonating 'admin' or other users -->
  61. <?php } else { ?>
  62. <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-cog"></i></a></div>
  63. <?php } ?>
  64. <?php } ?>
  65. <!-- Edit User -->
  66. <?php if (($_SESSION['userContext'] === 'admin') && (isset($_SESSION['look']) && ($user == 'admin'))) {?>
  67. <!-- Hide 'edit user' entry point from other administrators for default 'admin' account-->
  68. <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-history"></i></a></div>
  69. <?php } else { ?>
  70. <?php if ($panel[$user]['SUSPENDED'] === 'no') {?>
  71. <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-user-circle"></i></a></div>
  72. <?php } ?>
  73. <?php } ?>
  74. <!-- Help / Documentation-->
  75. <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-question-circle"></i></a></div>
  76. <!-- Logout -->
  77. <?php if (isset($_SESSION['look']) && (!empty($_SESSION['look']))) { ?>
  78. <div class="l-menu__item"><a href="/logout/?token=<?=$_SESSION['token']?>" title="<?=_('Log out');?> (<?=$user?>)" class="l-profile__logout"><i class="fas fa-arrow-alt-circle-up"></i></a></div>
  79. <?php } else { ?>
  80. <div class="l-menu__item"><a href="/logout/?token=<?=$_SESSION['token']?>" title="<?=_('Log out');?>" class="l-profile__logout"><i class="fas fa-sign-out-alt"></i></a></div>
  81. <?php } ?>
  82. </div>
  83. </div>
  84. </div>
  85. <ul class="notification-container u-hidden animate__animated animate__fadeIn"></ul>
  86. <div class="l-content">
  87. <div class="l-center">
  88. <div class="l-stat">
  89. <!-- Users tab -->
  90. <?php if (($_SESSION['userContext'] == 'admin') && (empty($_SESSION['look']))) {?>
  91. <?php
  92. if (($_SESSION['user'] !== 'admin') && ($_SESSION['POLICY_SYSTEM_HIDE_ADMIN'] === 'yes')) {
  93. $user_count = $panel[$user]['U_USERS'] - 1;
  94. } else {
  95. $user_count = $panel[$user]['U_USERS'];
  96. }
  97. ?>
  98. <div class="l-stat__col <?php if(in_array($TAB, ['USER', 'LOG'])) echo 'l-stat__col--active' ?>">
  99. <a href="/list/user/" title="<?=_('Users');?>: <?=$user_count;?>&#13;<?=_('Suspended');?>: <?=$panel[$user]['SUSPENDED_USERS']?>">
  100. <div class="l-stat__col-title"><?=_('USER');?>&nbsp;&nbsp;<i class="fas fa-users"></i></div>
  101. <ul>
  102. <li><?=_('users');?>: <span><?=htmlspecialchars($user_count);?></span></li>
  103. <li><?=_('spnd');?>: <span><?=$panel[$user]['SUSPENDED_USERS']?></span></li>
  104. </ul>
  105. </a>
  106. </div>
  107. <?php } ?>
  108. <!-- Web tab -->
  109. <?php if ((isset($_SESSION['WEB_SYSTEM'])) && (!empty($_SESSION['WEB_SYSTEM']))) {?>
  110. <?php if($panel[$user]['WEB_DOMAINS'] != "0") { ?>
  111. <div class="l-stat__col <?php if($TAB == 'WEB') echo 'l-stat__col--active' ?>">
  112. <a 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']?>">
  113. <div class="l-stat__col-title"><?=_('WEB');?>&nbsp;&nbsp;<i class="fas fa-globe-americas"></i></div>
  114. <ul>
  115. <li><?=_('domains');?>: <span><?=$panel[$user]['U_WEB_DOMAINS']?> / <?=$panel[$user]['WEB_DOMAINS']=='unlimited' ? "<b>∞</b>" : $panel[$user]['WEB_DOMAINS']?> (<?=$panel[$user]['SUSPENDED_WEB']?>)</span></li>
  116. <li><?=_('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></li>
  117. </ul>
  118. </a>
  119. </div>
  120. <?php } ?>
  121. <?php } ?>
  122. <!-- DNS tab -->
  123. <?php if ((isset($_SESSION['DNS_SYSTEM'])) && (!empty($_SESSION['DNS_SYSTEM']))) {?>
  124. <?php if($panel[$user]['DNS_DOMAINS'] != "0") { ?>
  125. <div class="l-stat__col <?php if($TAB == 'DNS') echo 'l-stat__col--active' ?>">
  126. <a 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']?>">
  127. <div class="l-stat__col-title"><?=_('DNS');?>&nbsp;&nbsp;<i class="fas fa-atlas"></i></div>
  128. <ul>
  129. <li><?=_('zones');?>: <span><?=$panel[$user]['U_DNS_DOMAINS']?> / <?=$panel[$user]['DNS_DOMAINS']=='unlimited' ? "<b>∞</b>" : $panel[$user]['DNS_DOMAINS']?> (<?=$panel[$user]['SUSPENDED_DNS']?>)</span></li>
  130. <li><?=_('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></li>
  131. </ul>
  132. </a>
  133. </div>
  134. <?php } ?>
  135. <?php } ?>
  136. <!-- Mail tab -->
  137. <?php if ((isset($_SESSION['MAIL_SYSTEM'])) && (!empty($_SESSION['MAIL_SYSTEM']))) {?>
  138. <?php if($panel[$user]['MAIL_DOMAINS'] != "0") { ?>
  139. <div class="l-stat__col <?php if($TAB == 'MAIL') echo 'l-stat__col--active' ?>">
  140. <a 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']?>">
  141. <div class="l-stat__col-title"><?=_('MAIL');?>&nbsp;&nbsp;<i class="fas fa-mail-bulk"></i></div>
  142. <ul>
  143. <li><?=_('domains');?>: <span><?=$panel[$user]['U_MAIL_DOMAINS']?> / <?=$panel[$user]['MAIL_DOMAINS']=='unlimited' ? "<b>∞</b>" : $panel[$user]['MAIL_DOMAINS']?> (<?=$panel[$user]['SUSPENDED_MAIL']?>)</span></li>
  144. <li><?=_('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></li>
  145. </ul>
  146. </a>
  147. </div>
  148. <?php } ?>
  149. <?php } ?>
  150. <!-- Databases tab -->
  151. <?php if ((isset($_SESSION['DB_SYSTEM'])) && (!empty($_SESSION['DB_SYSTEM']))) {?>
  152. <?php if($panel[$user]['DATABASES'] != "0") { ?>
  153. <div class="l-stat__col <?php if($TAB == 'DB') echo 'l-stat__col--active' ?>">
  154. <a href="/list/db/" title="<?=_('Databases');?>: <?=$panel[$user]['U_DATABASES']?>&#13;<?=_('Limit')?>: <?=$panel[$user]['DATABASES']=='unlimited' ? "∞" : $panel[$user]['DATABASES']?>&#13;<?=_('Suspended');?>: <?=$panel[$user]['SUSPENDED_DB']?>">
  155. <div class="l-stat__col-title"><?=_('DB');?>&nbsp;&nbsp;<i class="fas fa-database"></i></div>
  156. <ul>
  157. <li><?=_('databases');?>: <span><?=$panel[$user]['U_DATABASES']?> / <?=$panel[$user]['DATABASES']=='unlimited' ? "<b>∞</b>" : $panel[$user]['DATABASES']?> (<?=$panel[$user]['SUSPENDED_DB']?>)</span></li>
  158. </ul>
  159. </a>
  160. </div>
  161. <?php } ?>
  162. <?php } ?>
  163. <!-- Cron tab -->
  164. <?php if ((isset($_SESSION['CRON_SYSTEM'])) && (!empty($_SESSION['CRON_SYSTEM']))) {?>
  165. <?php if($panel[$user]['CRON_JOBS'] != "0") { ?>
  166. <div class="l-stat__col <?php if($TAB == 'CRON') echo 'l-stat__col--active' ?>">
  167. <a 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']?>">
  168. <div class="l-stat__col-title"><?=_('CRON');?>&nbsp;&nbsp;<i class="fas fa-clock"></i></div>
  169. <ul>
  170. <li><?=_('jobs');?>: <span><?=$panel[$user]['U_CRON_JOBS']?> / <?=$panel[$user]['CRON_JOBS']=='unlimited' ? "<b>∞</b>" : $panel[$user]['CRON_JOBS']?> (<?=$panel[$user]['SUSPENDED_CRON']?>)</span></li>
  171. </ul>
  172. </a>
  173. </div>
  174. <?php } ?>
  175. <?php } ?>
  176. <!-- Backups tab -->
  177. <?php if ((isset($_SESSION['BACKUP_SYSTEM'])) && (!empty($_SESSION['BACKUP_SYSTEM']))) {?>
  178. <?php if($panel[$user]['BACKUPS'] != "0") { ?>
  179. <div class="l-stat__col <?php if($TAB == 'BACKUP') echo 'l-stat__col--active' ?>">
  180. <a href="/list/backup/" title="<?=_('Backups');?>: <?=$panel[$user]['U_BACKUPS']?>&#13;<?=_('Limit')?>: <?=$panel[$user]['BACKUPS']=='unlimited' ? "∞" : $panel[$user]['BACKUPS']?>">
  181. <div class="l-stat__col-title"><?=_('BACKUP');?>&nbsp;&nbsp;<i class="fas fa-file-archive"></i></div>
  182. <ul>
  183. <li><?=_('backups');?>: <span><?=$panel[$user]['U_BACKUPS']?> / <?=$panel[$user]['BACKUPS']=='unlimited' ? "<b>∞</b>" : $panel[$user]['BACKUPS']?></span></li>
  184. </ul>
  185. </a>
  186. </div>
  187. <?php } ?>
  188. <?php } ?>
  189. </div>
  190. </div>