Improving cat, implementing wget (thanks tragic0mic)

This commit is contained in:
BlackLight 2011-02-04 11:16:41 +01:00
parent b1b6206baa
commit 66562780cf
7 changed files with 99 additions and 5 deletions

View file

@ -35,7 +35,10 @@
} else if ( dir[i].link_to && dir[i].link_to.length > 0 ) { } else if ( dir[i].link_to && dir[i].link_to.length > 0 ) {
return this.action ( dir[i].link_to ); return this.action ( dir[i].link_to );
} else if ( dir[i].content ) { } else if ( dir[i].content ) {
return '<pre>' + dir[i].content + "</pre>"; var replaced=dir[i].content.replace(/(https?:\/\/(www\.)?[0-9a-zA-Z-_\.\/:]*)/g, "<a href='$1'>$1</a>");
replaced = replaced.replace(".'>", "'>");
replaced = replaced.replace(".</a>", "</a>.");
return "<pre>"+replaced+"</pre>";
} }
} }
} }

16
commands/chown.js Normal file
View file

@ -0,0 +1,16 @@
{
"name" : "chown",
"info" : {
"syntax" : "chown &lt;new_user&gt; &lt;file|directory&gt;",
"brief" : "Change the access permissions to a file or directory for one or more users or groups, example: \"chmod user1,user2,@group1,@group2+r /path\", \"chmod @all+rw /path\""
},
"action" : function ( arg )
{
var out = '';
if ( !arg.match ( /^\s*([^+|-]*)(\+|\-)((r|w)+)\s+(.+)\s*$/ ))
{
return "Usage: " + this.info.syntax + "<br/>\n";
}

58
commands/wget.json Normal file
View file

@ -0,0 +1,58 @@
{
"name" : "wget",
"info" : {
"syntax" : "wget &lt;file&gt;",
"brief" : "Creates a static textual version of the selected file, suitable for download",
},
"action" : function ( arg )
{
var out = '';
var found = false;
var dir = shell.files;
if ( !arg || arg.length == 0 )
{
return "Argument required<br/>\n";
}
arg = shell.expandPath ( arg );
for ( var i=0; i < dir.length && !found; i++ )
{
if ( dir[i].path == arg )
{
found = true;
if ( dir[i].type == 'directory' )
{
return "wget: " + dir[i].path + ": Is a directory<br/>\n";
} else {
if ( dir[i].content ) {
var wgetWin = window.open("_blank","");
if(wgetWin)
{
wgetWin.document.write(dir[i].content);
return "<br />";
}
else
return "wget: cannot open new window.<br />";
}
}
}
}
if ( !found )
{
arg = arg.replace ( '<', '&lt;' );
arg = arg.replace ( '>', '&gt;' );
return "wget: " + arg + ": No such file or directory<br/>\n";
}
out = out.replace ( /<br\/?>\s*$/, '' );
return out;
}
}

View file

@ -1,6 +1,6 @@
<html> <html>
<head> <head>
<title>Blash - An AJAX interactive shell emulator for web browsing</title> <title>blash</title>
<script type="text/javascript" language="javascript" src="system/blash.js"></script> <script type="text/javascript" language="javascript" src="system/blash.js"></script>
<script type="text/javascript" language="javascript" src="system/md5.js"></script> <script type="text/javascript" language="javascript" src="system/md5.js"></script>
<link rel="stylesheet" href="blash.css" type="text/css"> <link rel="stylesheet" href="blash.css" type="text/css">

View file

@ -850,6 +850,25 @@ function blash ()
} }
} }
if ( arg.match ( /\*/ ))
{
args = shell.expandStar ( arg );
if ( args.length == 1 )
{
return args[0].path;
} else {
var out = '';
for ( var i in args )
{
out += args[i].path + ' ';
}
return out;
}
}
return arg; return arg;
} }

View file

@ -78,6 +78,7 @@
"useradd", "useradd",
"userdel", "userdel",
"users", "users",
"wget",
"whoami" "whoami"
] ]
} }

View file

@ -10,9 +10,6 @@ $files_json = <<<JSON
, {"path": "/software", "type": "directory"} , {"path": "/software", "type": "directory"}
, {"path": "/etc", "type": "directory"} , {"path": "/etc", "type": "directory"}
, {"path": "/home", "type": "directory"} , {"path": "/home", "type": "directory"}
, {"path": "/blog/post1", "type": "file", "content": "This is my first post"}
, {"path": "/blog/post2", "type": "file", "content": "This is my second post"}
, {"path": "/blog/post3", "type": "file", "content": "This is my third post"}
, {"path": "/etc/blashrc", "type": "file", "content": "This is the default blash configuration file"} , {"path": "/etc/blashrc", "type": "file", "content": "This is the default blash configuration file"}
, {"path": "/forum/post1", "type": "file", "content": "lol"} , {"path": "/forum/post1", "type": "file", "content": "lol"}
, {"path": "/forum/post2", "type": "file", "content": "lol"} , {"path": "/forum/post2", "type": "file", "content": "lol"}