| |
| OPTION EXPLICIT |
| DIM ICSSC_DEFAULT, CONNECTION_PUBLIC, CONNECTION_PRIVATE, CONNECTION_ALL |
| DIM NetSharingManager |
| DIM PublicConnection, PrivateConnection |
| DIM EveryConnectionCollection |
| DIM objArgs |
| DIM priv_con, publ_con |
| DIM switch |
| ICSSC_DEFAULT = 0 |
| CONNECTION_PUBLIC = 0 |
| CONNECTION_PRIVATE = 1 |
| CONNECTION_ALL = 2 |
| |
| Main() |
| |
| sub Main( ) |
| Set objArgs = WScript.Arguments |
| if objArgs.Count = 3 then |
| priv_con = objArgs(0) |
| publ_con = objArgs(1) |
| switch = objArgs(2) |
| if Initialize() = TRUE then |
| GetConnectionObjects() |
| FirewallTestByDeviceName priv_con,publ_con |
| end if |
| else |
| if Initialize() = TRUE then |
| GetConnectionObjects() |
| FirewallTestByDeviceName "list","list" |
| end if |
| end if |
| end sub |
| |
| sub FirewallTestByDeviceName(con1,con2) |
| on error resume next |
| DIM Item |
| DIM EveryConnection |
| DIM objNCProps |
| DIM szMsg |
| DIM bFound1,bFound2 |
| |
| WScript.echo(vbCRLF) |
| bFound1 = false |
| bFound2 = false |
| for each Item in EveryConnectionCollection |
| set EveryConnection = NetSharingManager.INetSharingConfigurationForINetConnection(Item) |
| set objNCProps = NetSharingManager.NetConnectionProps(Item) |
| szMsg = "Name: " & objNCProps.Name & vbCRLF & _ |
| "Guid: " & objNCProps.Guid & vbCRLF & _ |
| "DeviceName: " & objNCProps.DeviceName & vbCRLF & _ |
| "Status: " & objNCProps.Status & vbCRLF & _ |
| "MediaType: " & objNCProps.MediaType |
| if EveryConnection.SharingEnabled then |
| szMsg = szMsg & vbCRLF & _ |
| "SharingEnabled" & vbCRLF & _ |
| "SharingType: " & ConvertConnectionTypeToString(EveryConnection.SharingConnectionType) |
| end if |
| |
| if objNCProps.DeviceName = con1 then |
| bFound1 = true |
| if EveryConnection.SharingEnabled = False and switch="on" then |
| szMsg = szMsg & vbCRLF & "Not Shared... Enabling private connection share..." |
| EveryConnection.EnableSharing CONNECTION_PRIVATE |
| end if |
| if switch="off" then |
| szMsg = szMsg & vbCRLF & "Shared... DisEnabling private connection share..." |
| EveryConnection.EnableSharing CONNECTION_ALL |
| end if |
| end if |
| |
| if objNCProps.Name = con2 then |
| bFound2 = true |
| if EveryConnection.SharingEnabled = False and switch="on" then |
| szMsg = szMsg & vbCRLF & "Not Shared... Enabling public connection share..." |
| EveryConnection.EnableSharing CONNECTION_PUBLIC |
| end if |
| if switch="off" then |
| szMsg = szMsg & vbCRLF & "Shared... DisEnabling public connection share..." |
| EveryConnection.EnableSharing CONNECTION_ALL |
| end if |
| end if |
| WScript.Echo(szMsg & vbCRLF) |
| next |
| |
| if( con1 <> "list" ) then |
| if( bFound1 = false ) then |
| WScript.Echo( "Connection " & chr(34) & con1 & chr(34) & " was not found" ) |
| end if |
| if( bFound2 = false ) then |
| WScript.Echo( "Connection " & chr(34) & con2 & chr(34) & " was not found" ) |
| end if |
| end if |
| end sub |
| |
| function Initialize() |
| DIM bReturn |
| bReturn = FALSE |
| |
| set NetSharingManager = Wscript.CreateObject("HNetCfg.HNetShare.1") |
| if (IsObject(NetSharingManager)) = FALSE then |
| Wscript.Echo("Unable to get the HNetCfg.HnetShare.1 object") |
| else |
| if (IsNull(NetSharingManager.SharingInstalled) = TRUE) then |
| Wscript.Echo("Sharing isn't available on this platform.") |
| else |
| bReturn = TRUE |
| end if |
| end if |
| Initialize = bReturn |
| end function |
| |
| function GetConnectionObjects() |
| DIM bReturn |
| DIM Item |
| |
| bReturn = TRUE |
| |
| if GetConnection(CONNECTION_PUBLIC) = FALSE then |
| bReturn = FALSE |
| end if |
| |
| if GetConnection(CONNECTION_PRIVATE) = FALSE then |
| bReturn = FALSE |
| end if |
| |
| if GetConnection(CONNECTION_ALL) = FALSE then |
| bReturn = FALSE |
| end if |
| |
| GetConnectionObjects = bReturn |
| |
| end function |
| |
| |
| function GetConnection(CONNECTION_TYPE) |
| DIM bReturn |
| DIM Connection |
| DIM Item |
| bReturn = TRUE |
| |
| if (CONNECTION_PUBLIC = CONNECTION_TYPE) then |
| set Connection = NetSharingManager.EnumPublicConnections(ICSSC_DEFAULT) |
| if (Connection.Count > 0) and (Connection.Count < 2) then |
| for each Item in Connection |
| set PublicConnection = NetSharingManager.INetSharingConfigurationForINetConnection(Item) |
| next |
| else |
| bReturn = FALSE |
| end if |
| elseif (CONNECTION_PRIVATE = CONNECTION_TYPE) then |
| set Connection = NetSharingManager.EnumPrivateConnections(ICSSC_DEFAULT) |
| if (Connection.Count > 0) and (Connection.Count < 2) then |
| for each Item in Connection |
| set PrivateConnection = NetSharingManager.INetSharingConfigurationForINetConnection(Item) |
| next |
| else |
| bReturn = FALSE |
| end if |
| elseif (CONNECTION_ALL = CONNECTION_TYPE) then |
| set Connection = NetSharingManager.EnumEveryConnection |
| if (Connection.Count > 0) then |
| set EveryConnectionCollection = Connection |
| else |
| bReturn = FALSE |
| end if |
| else |
| bReturn = FALSE |
| end if |
| |
| if (TRUE = bReturn) then |
| if (Connection.Count = 0) then |
| Wscript.Echo("No " + CStr(ConvertConnectionTypeToString(CONNECTION_TYPE)) + " connections exist (Connection.Count gave us 0)") |
| bReturn = FALSE |
| |
| elseif (Connection.Count > 1) and (CONNECTION_ALL <> CONNECTION_TYPE) then |
| Wscript.Echo("ERROR: There was more than one " + ConvertConnectionTypeToString(CONNECTION_TYPE) + " connection (" + CStr(Connection.Count) + ")") |
| bReturn = FALSE |
| end if |
| end if |
| Wscript.Echo(CStr(Connection.Count) + " objects for connection type " + ConvertConnectionTypeToString(CONNECTION_TYPE)) |
| |
| GetConnection = bReturn |
| end function |
| |
| function ConvertConnectionTypeToString(ConnectionID) |
| DIM ConnectionString |
| |
| if (ConnectionID = CONNECTION_PUBLIC) then |
| ConnectionString = "public" |
| elseif (ConnectionID = CONNECTION_PRIVATE) then |
| ConnectionString = "private" |
| elseif (ConnectionID = CONNECTION_ALL) then |
| ConnectionString = "all" |
| else |
| ConnectionString = "Unknown: " + CStr(ConnectionID) |
| end if |
| |
| ConvertConnectionTypeToString = ConnectionString |
| end functionCOPY |