Sha256: 73b343283cd143988b6a4a98b9081150afae1bd48ea3614b0fb57c3cac69d18d

Contents?: true

Size: 1.71 KB

Versions: 38

Compression:

Stored size: 1.71 KB

Contents

module RubySMB
  module Dcerpc
    module Drsr

      # [5.39 DRS_EXTENSIONS_INT](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-drsr/3ee529b1-23db-4996-948a-042f04998e91)
      class DrsExtensionsInt < Ndr::NdrStruct
        default_parameter byte_align: 4
        endian :little

        ndr_uint32 :cb, initial_value: -> { num_bytes - 4 }
        ndr_uint32 :dw_flags
        uuid       :site_obj_guid
        int32      :pid, byte_align: 4
        ndr_uint32 :dw_repl_epoch
        ndr_uint32 :dw_flags_ext
        uuid       :config_obj_guid
        ndr_uint32 :dw_ext_caps
      end

      # [5.38 DRS_EXTENSIONS](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-drsr/ed0c5dc1-7566-48b3-be08-4c5e26ba60c4)
      class DrsExtensions < Ndr::NdrStruct
        default_parameter byte_align: 4
        endian :little

        ndr_uint32     :cb, initial_value: -> { self.rgb.size }
        ndr_conf_array :rgb, type: :ndr_uint8

        def assign(val)
          case val
          when String
            self.rgb.assign(val.bytes)
          when Array
            self.rgb.assign(val.to_ary)
          when DrsExtensionsInt
            self.rgb.assign(val.to_binary_s[4..-1].bytes)
          when Hash
            if (field_names & val.keys).empty?
              # Cannot assign this hash to the structrue, it is likely
              # DrsExtensionsInt hash values we need to transform in byte array.
              drs_ext = DrsExtensionsInt.new(val).to_binary_s
              self.rgb.assign(drs_ext[4..-1].bytes)
            end
          else
            super
          end
        end
      end

      class DrsExtensionsPtr < DrsExtensions
        extend Ndr::PointerClassPlugin
      end

    end
  end
end

Version data entries

38 entries across 38 versions & 1 rubygems

Version Path
ruby_smb-3.3.13 lib/ruby_smb/dcerpc/drsr/drs_extensions.rb
ruby_smb-3.3.12 lib/ruby_smb/dcerpc/drsr/drs_extensions.rb
ruby_smb-3.3.11 lib/ruby_smb/dcerpc/drsr/drs_extensions.rb
ruby_smb-3.3.10 lib/ruby_smb/dcerpc/drsr/drs_extensions.rb
ruby_smb-3.3.9 lib/ruby_smb/dcerpc/drsr/drs_extensions.rb
ruby_smb-3.3.7 lib/ruby_smb/dcerpc/drsr/drs_extensions.rb
ruby_smb-3.3.6 lib/ruby_smb/dcerpc/drsr/drs_extensions.rb
ruby_smb-3.3.5 lib/ruby_smb/dcerpc/drsr/drs_extensions.rb
ruby_smb-3.3.4 lib/ruby_smb/dcerpc/drsr/drs_extensions.rb
ruby_smb-3.3.3 lib/ruby_smb/dcerpc/drsr/drs_extensions.rb
ruby_smb-3.3.2 lib/ruby_smb/dcerpc/drsr/drs_extensions.rb
ruby_smb-3.3.1 lib/ruby_smb/dcerpc/drsr/drs_extensions.rb
ruby_smb-3.3.0 lib/ruby_smb/dcerpc/drsr/drs_extensions.rb
ruby_smb-3.2.8 lib/ruby_smb/dcerpc/drsr/drs_extensions.rb
ruby_smb-3.2.7 lib/ruby_smb/dcerpc/drsr/drs_extensions.rb
ruby_smb-3.2.6 lib/ruby_smb/dcerpc/drsr/drs_extensions.rb
ruby_smb-3.2.5 lib/ruby_smb/dcerpc/drsr/drs_extensions.rb
ruby_smb-3.2.4 lib/ruby_smb/dcerpc/drsr/drs_extensions.rb
ruby_smb-3.2.3 lib/ruby_smb/dcerpc/drsr/drs_extensions.rb
ruby_smb-3.2.2 lib/ruby_smb/dcerpc/drsr/drs_extensions.rb