lib/ronin/remote_file.rb in ronin-1.0.0.pre3 vs lib/ronin/remote_file.rb in ronin-1.0.0.pre4
- old
+ new
@@ -1,23 +1,22 @@
#
-# Ronin - A Ruby platform for exploit development and security research.
+# Copyright (c) 2006-2011 Hal Brodigan (postmodern.mod3 at gmail.com)
#
-# Copyright (c) 2006-2010 Hal Brodigan (postmodern.mod3 at gmail.com)
+# This file is part of Ronin.
#
-# This program is free software; you can redistribute it and/or modify
+# Ronin is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
+# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
-# This program is distributed in the hope that it will be useful,
+# Ronin is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+# along with Ronin. If not, see <http://www.gnu.org/licenses/>.
#
require 'ronin/target'
require 'ronin/model'
require 'ronin/extensions/file'
@@ -34,25 +33,27 @@
# Primary key of the remote file
property :id, Serial
# Remote path of the file
property :remote_path, String, :required => true,
- :index => true,
- :unique => :target_remote_path
+ :index => true
# The target the file was recovered from
- belongs_to :target, :unique => :target_remote_path
+ belongs_to :target
# The address the file was recovered from
has 1, :address, :through => :target
# Tracks when the remote file was first recovered
timestamps :created_at
# Tags
has_tags_on :tags
+ # Validates the uniqueness of the remote_path and the target.
+ validates_uniqueness_of :remote_path, :scope => [:target]
+
#
# Searches for all remote files with the basename.
#
# @param [String] basename
# The basename of the file.
@@ -61,10 +62,11 @@
# The matching remote files.
#
# @since 1.0.0
#
def self.named(basename)
- all(:remote_path => basename) | all(:remote_path.like => "%/#{basename}")
+ all(:remote_path => basename) |
+ all(:remote_path.like => "%/#{basename}")
end
#
# Searches for all remote files with the file name extension.
#