1+ <!doctype html>
2+ <html>
3+ <head>
4+ <meta charset="utf-8">
5+ <link rel="icon" href="/images/favicon.ico" type="image/x-icon">
6+ <title>Hestia - <?= __ ($ TAB )?> </title>
7+ <link rel="stylesheet" href="/css/styles.min.css?1446554103">
8+ <link type="text/css" href="/css/jquery-custom-dialogs.css?1446554103" rel="stylesheet" />
9+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
10+ <script>
11+ //
12+ // GLOBAL SETTINGS
13+ //
14+ var GLOBAL = {};
15+ GLOBAL.FTP_USER_PREFIX = 'admin_';
16+ GLOBAL.DB_USER_PREFIX = 'admin_';
17+ GLOBAL.DB_DBNAME_PREFIX = 'admin_';
18+ GLOBAL.AJAX_URL = '';
19+ </script>
20+ </head>
21+ <body class="body-<?= strtolower ($ TAB )?> lang-<?= $ _SESSION ['language ' ]?> ">
22+ root@web02:/usr/local/hestia/web# nano mail/index.php ^C
23+ root@web02:/usr/local/hestia/web# cat login/index.php
124<?php
225
326define ('NO_AUTH_REQUIRED ' ,true );
3457 if (isset ($ _SESSION ['token ' ]) && isset ($ _POST ['token ' ]) && $ _POST ['token ' ] == $ _SESSION ['token ' ]) {
3558 $ v_user = escapeshellarg ($ _POST ['user ' ]);
3659 $ v_ip = escapeshellarg ($ _SERVER ['REMOTE_ADDR ' ]);
60+ if (isset ($ _POST ['twofa ' ])) {
61+ $ v_twofa = escapeshellarg ($ _POST ['twofa ' ]);
62+ }
3763
3864 // Get user's salt
3965 $ output = '' ;
83109 exec (HESTIA_CMD . "v-list-user " .$ v_user ." json " , $ output , $ return_var );
84110 $ data = json_decode (implode ('' , $ output ), true );
85111
86- // Define session user
87- $ _SESSION ['user ' ] = key ($ data );
88- $ v_user = $ _SESSION ['user ' ];
89-
90- // Get user favorites
91- get_favourites ();
92-
93- // Define language
94- $ output = '' ;
95- exec (HESTIA_CMD ."v-list-sys-languages json " , $ output , $ return_var );
96- $ languages = json_decode (implode ('' , $ output ), true );
97- if (in_array ($ data [$ v_user ]['LANGUAGE ' ], $ languages )){
98- $ _SESSION ['language ' ] = $ data [$ v_user ]['LANGUAGE ' ];
99- } else {
100- $ _SESSION ['language ' ] = 'en ' ;
112+ // Check if 2FA is active
113+ if ($ data [$ _POST ['user ' ]]['TWOFA ' ] != '' ) {
114+ if (isset ($ v_twofa )){
115+ exec (HESTIA_CMD ."v-check-user-2fa " .$ v_user ." " .$ v_twofa , $ output , $ return_var );
116+ unset($ output );
117+ if ( $ return_var > 0 ) {
118+ $ ERROR = "<a class= \"error \"> " .__ ('Invalid or missing 2FA token ' )."</a> " ;
119+ }
120+ } else {
121+ $ ERROR = "<a class= \"error \"> " .__ ('Invalid or missing 2FA token ' )."</a> " ;
122+ }
101123 }
102124
103- // Regenerate session id to prevent session fixation
104- session_regenerate_id ();
105-
106- // Redirect request to control panel interface
107- if (!empty ($ _SESSION ['request_uri ' ])) {
108- header ("Location: " .$ _SESSION ['request_uri ' ]);
109- unset($ _SESSION ['request_uri ' ]);
110- exit ;
111- } else {
112- header ("Location: /list/user/ " );
113- exit ;
125+ // Check if 2FA was successfully
126+ if ( ! isset ($ v_twofa ) || $ ERROR == '' ) {
127+ // Define session user
128+ $ _SESSION ['user ' ] = key ($ data );
129+ $ v_user = $ _SESSION ['user ' ];
130+
131+ // Get user favorites
132+ get_favourites ();
133+
134+ // Define language
135+ $ output = '' ;
136+ exec (HESTIA_CMD ."v-list-sys-languages json " , $ output , $ return_var );
137+ $ languages = json_decode (implode ('' , $ output ), true );
138+ if (in_array ($ data [$ v_user ]['LANGUAGE ' ], $ languages )){
139+ $ _SESSION ['language ' ] = $ data [$ v_user ]['LANGUAGE ' ];
140+ } else {
141+ $ _SESSION ['language ' ] = 'en ' ;
142+ }
143+
144+ // Regenerate session id to prevent session fixation
145+ session_regenerate_id ();
146+
147+ // Redirect request to control panel interface
148+ if (!empty ($ _SESSION ['request_uri ' ])) {
149+ header ("Location: " .$ _SESSION ['request_uri ' ]);
150+ unset($ _SESSION ['request_uri ' ]);
151+ exit ;
152+ } else {
153+ header ("Location: /list/user/ " );
154+ exit ;
155+ }
114156 }
115157 }
116158 }
150192
151193require_once ($ _SERVER ['DOCUMENT_ROOT ' ].'/inc/i18n/ ' .$ _SESSION ['language ' ].'.php ' );
152194require_once ('../templates/header.html ' );
153- require_once ('../templates/login.html ' );
195+ require_once ('../templates/login.html ' );
0 commit comments