Merge branch 'master' of github.com:rapid7/metasploit-framework
commit
f677f51319
|
@ -307,6 +307,7 @@ class Console::CommandDispatcher::Stdapi::Fs
|
||||||
path = args[0] || client.fs.dir.getwd
|
path = args[0] || client.fs.dir.getwd
|
||||||
tbl = Rex::Ui::Text::Table.new(
|
tbl = Rex::Ui::Text::Table.new(
|
||||||
'Header' => "Listing: #{path}",
|
'Header' => "Listing: #{path}",
|
||||||
|
'SortIndex' => 4,
|
||||||
'Columns' =>
|
'Columns' =>
|
||||||
[
|
[
|
||||||
'Mode',
|
'Mode',
|
||||||
|
@ -319,7 +320,8 @@ class Console::CommandDispatcher::Stdapi::Fs
|
||||||
items = 0
|
items = 0
|
||||||
|
|
||||||
# Enumerate each item...
|
# Enumerate each item...
|
||||||
client.fs.dir.entries_with_info(path).sort { |a,b| a['FileName'] <=> b['FileName'] }.each { |p|
|
# No need to sort as Table will do it for us
|
||||||
|
client.fs.dir.entries_with_info(path).each { |p|
|
||||||
|
|
||||||
tbl <<
|
tbl <<
|
||||||
[
|
[
|
||||||
|
|
|
@ -68,6 +68,8 @@ class Table
|
||||||
self.postfix = opts['Postfix'] || ''
|
self.postfix = opts['Postfix'] || ''
|
||||||
self.colprops = []
|
self.colprops = []
|
||||||
|
|
||||||
|
self.sort_index = opts['SortIndex'] || 0
|
||||||
|
|
||||||
# Default column properties
|
# Default column properties
|
||||||
self.columns.length.times { |idx|
|
self.columns.length.times { |idx|
|
||||||
self.colprops[idx] = {}
|
self.colprops[idx] = {}
|
||||||
|
@ -100,7 +102,7 @@ class Table
|
||||||
str << columns_to_s || ''
|
str << columns_to_s || ''
|
||||||
str << hr_to_s || ''
|
str << hr_to_s || ''
|
||||||
|
|
||||||
sort_rows(0)
|
sort_rows
|
||||||
rows.each { |row|
|
rows.each { |row|
|
||||||
if (is_hr(row))
|
if (is_hr(row))
|
||||||
str << hr_to_s
|
str << hr_to_s
|
||||||
|
@ -180,7 +182,7 @@ class Table
|
||||||
# If the supplied index is an IPv4 address, handle it differently, but
|
# If the supplied index is an IPv4 address, handle it differently, but
|
||||||
# avoid actually resolving domain names.
|
# avoid actually resolving domain names.
|
||||||
#
|
#
|
||||||
def sort_rows(index=0)
|
def sort_rows(index=sort_index)
|
||||||
return unless rows
|
return unless rows
|
||||||
rows.sort! do |a,b|
|
rows.sort! do |a,b|
|
||||||
if a[index].nil?
|
if a[index].nil?
|
||||||
|
@ -189,6 +191,8 @@ class Table
|
||||||
1
|
1
|
||||||
elsif Rex::Socket.dotted_ip?(a[index]) and Rex::Socket.dotted_ip?(b[index])
|
elsif Rex::Socket.dotted_ip?(a[index]) and Rex::Socket.dotted_ip?(b[index])
|
||||||
Rex::Socket::addr_atoi(a[index]) <=> Rex::Socket::addr_atoi(b[index])
|
Rex::Socket::addr_atoi(a[index]) <=> Rex::Socket::addr_atoi(b[index])
|
||||||
|
elsif a[index] =~ /^[0-9]+$/ and b[index] =~ /^[0-9]+$/
|
||||||
|
a[index].to_i <=> b[index].to_i
|
||||||
else
|
else
|
||||||
a[index] <=> b[index] # assumes otherwise comparable.
|
a[index] <=> b[index] # assumes otherwise comparable.
|
||||||
end
|
end
|
||||||
|
@ -208,6 +212,7 @@ class Table
|
||||||
attr_accessor :columns, :rows, :colprops # :nodoc:
|
attr_accessor :columns, :rows, :colprops # :nodoc:
|
||||||
attr_accessor :width, :indent, :cellpad # :nodoc:
|
attr_accessor :width, :indent, :cellpad # :nodoc:
|
||||||
attr_accessor :prefix, :postfix # :nodoc:
|
attr_accessor :prefix, :postfix # :nodoc:
|
||||||
|
attr_accessor :sort_index # :nodoc:
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue