Class: SmbRpc::Srvsvc
- Defined in:
- lib/smbRpc/srvsvc.rb,
lib/smbRpc/srvsvc/netShareEnum.rb,
lib/smbRpc/srvsvc/serverGetInfo.rb
Defined Under Namespace
Classes: NetShareEnumReq, NetShareEnumRes, NetnameRemark, NetrServerGetInfoReq, NetrServerGetInfoRes, Server_info_101, Share_enum_struct, Share_info_0, Share_info_0_container, Share_info_1, Share_info_1_container
Instance Attribute Summary
Attributes inherited from Rpc
Instance Method Summary collapse
-
#initialize(**argv) ⇒ Srvsvc
constructor
A new instance of Srvsvc.
- #netShareEnum(serverName: @ip) ⇒ Object
- #serverGetInfo(serverName: @ip) ⇒ Object
Methods inherited from Rpc
Constructor Details
#initialize(**argv) ⇒ Srvsvc
Returns a new instance of Srvsvc.
6 7 8 9 10 |
# File 'lib/smbRpc/srvsvc.rb', line 6 def initialize(**argv) super(argv) self.connect self.bind(pipe:"srvsvc") end |
Instance Method Details
#netShareEnum(serverName: @ip) ⇒ Object
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/smbRpc/srvsvc/netShareEnum.rb', line 86 def netShareEnum(serverName:@ip) shareEnumReq = NetShareEnumReq.new(:srvName=> serverName, shareLevel:1) shareEnumRes = @file.ioctl_send_recv(shareEnumReq).buffer shares = NetShareEnumRes.read(shareEnumRes) out = [] numShare = shares.share_enum_struct.share_info_container.entriesRead shi1_container = shares.share_enum_struct.share_info_container numShare.times do |i| type = shi1_container.share_info_entries.shi1_type[i] shareName = shi1_container.share_info_entries.netname_remark[i].netname.str.unpack("v*").pack("c*").chop remark = shi1_container.share_info_entries.netname_remark[i].remark.str.unpack("v*").pack("c*").chop out << {shareName:shareName, remark:remark, type:type} end return out end |
#serverGetInfo(serverName: @ip) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/smbRpc/srvsvc/serverGetInfo.rb', line 40 def serverGetInfo(serverName:@ip) netrServerGetInfoReq = NetrServerGetInfoReq.new(:srvName=> serverName) netrServerGetInfoRes = @file.ioctl_send_recv(netrServerGetInfoReq).buffer netrServerGetInfoRes.raise_not_error_success("serverGetInfo") netrServerGetInfoRes = NetrServerGetInfoRes.read(netrServerGetInfoRes) info = netrServerGetInfoRes.infoStruct h = { :platform_id => info.sv101_platform_id, :version_major => info.sv101_version_major, :version_minor => info.sv101_version_minor, :type => info.serverType, :name => info.nameNdr.str.unpack("v*").pack("c*").chop, :comment => info.commentNdr.str.unpack("v*").pack("c*").chop } return h end |