{ "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.files_json = window.location.href; if ( shell.has_users ) { shell.files_json = shell.files_json.replace ( /\/([a-zA-Z_\.]+)$/, '/modules/users/files.php' ); } else { shell.files_json = shell.files_json.replace ( /\/([a-zA-Z_\.]+)$/, '/system/files.json' ); } var http3 = new XMLHttpRequest(); http3.open ( "GET", shell.files_json, true ); http3.onreadystatechange = function () { if ( http3.readyState == 4 && http3.status == 200 ) { shell.files = eval ( '(' + http3.responseText + ')' ); blashrcIndex = -1; // Index of .blashrc file stylercIndex = -1; // Index of .stylerc file for ( var i in shell.files ) { if ( shell.files[i].path.match ( new RegExp ( '^' + shell.home + '/.blashrc$' ))) { blashrcIndex = i; } if ( shell.files[i].path.match ( new RegExp ( '^' + shell.home + '/.stylerc$' ))) { stylercIndex = i; } if ( blashrcIndex >= 0 && stylercIndex >= 0 ) { break; } } if ( blashrcIndex > 0 ) { var blashrc = shell.files[blashrcIndex].content.replace ( //g, ' ' ); blashrc = eval ( '(' + blashrc + ')' ); if ( !blashrc ) { return false; } for ( var i in blashrc ) { shell.json[i] = blashrc[i]; } } if ( stylercIndex > 0 ) { var cur_style = document.getElementsByTagName ( 'link' ); for ( var i in cur_style ) { if ( cur_style[i].getAttribute ) { if ( cur_style[i].getAttribute ( 'rel' ) && cur_style[i].getAttribute ( 'href' )) { if ( cur_style[i].getAttribute ( 'rel' ) == 'stylesheet' && cur_style[i].getAttribute ( 'href' ).match ( /blash\.css$/ )) { var parent = cur_style[i].parentNode; cur_style[i].parentNode.removeChild ( cur_style[i] ); var stylerc = document.createElement ( 'style', { type: 'text/css' }); stylerc.innerHTML = shell.files[stylercIndex].content.replace ( //g, ' ' ); parent.appendChild ( stylerc ); } } } } } } } http3.send ( null ); } } xml2.send ( params ); } 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 = ''; } }, }