{ "name" : "su", "info" : { "syntax" : "su [username]", "brief" : "Change user ID or become superuser", }, "action" : function ( arg ) { var out = ''; if ( !shell.has_users ) { return "Users module not enabled
\n"; } if ( !arg || arg.length == 0 ) { arg = 'root'; } if ( shell.__first_cmd ) { shell.cmdOut.innerHTML = '
Password: ' + '
'; shell.__first_cmd = false; } else { shell.cmdOut.innerHTML = 'Password: ' + '
'; } shell.getPassword = this.getPassword; shell.newuser = arg; shell.auto_prompt_focus = false; shell.auto_prompt_refresh = false; this.password = document.getElementsByName ( "password" )[0]; this.password.focus(); return out; }, "getPassword" : function ( e ) { var evt = ( window.event ) ? window.event : e; var key = ( evt.charCode ) ? evt.charCode : evt.keyCode; var password = document.getElementsByName ( "password" )[0]; if ( key == 13 && password.value.length > 0 ) { var users_php = window.location.href; users_php = users_php.replace ( /\/([a-zA-Z\.]+)$/, '/modules/users/users.php' ); params = 'action=login&user=' + escape ( shell.newuser ) + '&pass=' + md5 ( password.value ); var http = new XMLHttpRequest(); http.open ( "POST", users_php, true ); http.setRequestHeader ( "Content-type", "application/x-www-form-urlencoded" ); http.setRequestHeader ( "Content-length", params.length ); http.setRequestHeader ( "Connection", "close" ); http.onreadystatechange = function () { if ( http.readyState == 4 && http.status == 200 ) { if ( http.responseText.match ( /^Successfully logged in as '(.+?)'/i )) { var user = RegExp.$1; shell.user = user; var files_config = window.location.href; files_config = files_config.replace ( /\/([a-zA-Z\.]+)$/, '/modules/users/files.php' ); var http2 = new XMLHttpRequest(); http2.open ( "GET", files_config, true ); http2.onreadystatechange = function () { if ( http2.readyState == 4 && http2.status == 200 ) { shell.files = eval ( '(' + http2.responseText + ')' ); // Remove duplicates var tmp = new Array(); for ( var i in shell.files ) { var contains = false; for ( var j=0; j < tmp.length && !contains; j++ ) { if ( shell.files[i].path == tmp[j].path ) { contains = true; } } if ( !contains ) { tmp.push ( shell.files[i] ); } } shell.files = tmp; } } http2.send ( null ); var xml2 = new XMLHttpRequest(); xml2.open ( "POST", users_php, true ); xml2.setRequestHeader ( "Content-type", "application/x-www-form-urlencoded" ); xml2.setRequestHeader ( "Content-length", params.length ); xml2.setRequestHeader ( "Connection", "close" ); params = 'action=gethome'; xml2.onreadystatechange = function () { if ( xml2.readyState == 4 && xml2.status == 200 ) { if ( xml2.responseText.length > 0 ) { shell.home = xml2.responseText; shell.path = shell.home; } else { shell.user = shell.json.user; } shell.auto_prompt_focus = true; shell.auto_prompt_refresh = true; shell.refreshPrompt ( false, false ); } } xml2.send ( params ); shell.cmdOut.innerHTML = http.responseText; } else { shell.cmdOut.innerHTML = http.responseText; shell.auto_prompt_focus = true; shell.auto_prompt_refresh = true; shell.refreshPrompt ( false, false ); } } } http.send ( params ); shell.cmdOut.innerHTML = ''; // shell.auto_prompt_focus = true; // shell.auto_prompt_refresh = true; // shell.refreshPrompt ( false, false ); } }, }