windows-nt/Source/XPSP1/NT/inetsrv/iis/utils/metautil/metaedit/simpedit.frm
2020-09-26 16:20:57 +08:00

551 lines
15 KiB
Plaintext

VERSION 5.00
Begin VB.Form SimpleEditForm
BorderStyle = 3 'Fixed Dialog
Caption = "Edit Metabase Data"
ClientHeight = 3585
ClientLeft = 45
ClientTop = 330
ClientWidth = 5310
Icon = "SimpEdit.frx":0000
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 3585
ScaleWidth = 5310
ShowInTaskbar = 0 'False
StartUpPosition = 3 'Windows Default
Begin VB.ComboBox NameCombo
Height = 315
Left = 1320
Sorted = -1 'True
Style = 2 'Dropdown List
TabIndex = 17
Top = 240
Width = 2535
End
Begin VB.TextBox IdText
Height = 285
Left = 3960
TabIndex = 16
Top = 240
Width = 1215
End
Begin VB.CommandButton OkButton
Caption = "OK"
Default = -1 'True
Height = 345
Left = 2520
TabIndex = 15
Top = 3120
Width = 1260
End
Begin VB.CommandButton CancelButton
Caption = "Cancel"
Height = 345
Left = 3960
TabIndex = 14
Top = 3120
Width = 1260
End
Begin VB.CheckBox InsertPathCheck
Caption = "Insert Path"
Height = 255
Left = 2640
TabIndex = 13
Top = 1200
Width = 1215
End
Begin VB.CheckBox VolatileCheck
Caption = "Volatile"
Height = 255
Left = 1320
TabIndex = 12
Top = 1200
Width = 1215
End
Begin VB.CheckBox ReferenceCheck
Caption = "Reference"
Height = 255
Left = 3960
TabIndex = 11
Top = 720
Width = 1215
End
Begin VB.CheckBox SecureCheck
Caption = "Secure"
Height = 255
Left = 2640
TabIndex = 10
Top = 720
Width = 1215
End
Begin VB.CheckBox InheritCheck
Caption = "Inherit"
Height = 255
Left = 1320
TabIndex = 9
Top = 720
Width = 1215
End
Begin VB.ComboBox DataTypeCombo
Height = 315
Left = 1320
Style = 2 'Dropdown List
TabIndex = 8
Top = 2160
Width = 2535
End
Begin VB.TextBox UserTypeText
Enabled = 0 'False
Height = 285
Left = 3960
TabIndex = 7
Top = 1680
Width = 1215
End
Begin VB.ComboBox UserTypeCombo
Height = 315
Left = 1320
Sorted = -1 'True
Style = 2 'Dropdown List
TabIndex = 6
Top = 1680
Width = 2535
End
Begin VB.TextBox DataText
Height = 285
Left = 1320
TabIndex = 0
Top = 2640
Width = 3855
End
Begin VB.Label Label5
Caption = "Data:"
Height = 255
Left = 120
TabIndex = 5
Top = 2640
Width = 975
End
Begin VB.Label Label4
Caption = "Data Type:"
Height = 255
Left = 120
TabIndex = 4
Top = 2160
Width = 975
End
Begin VB.Label Label3
Caption = "User Type:"
Height = 255
Left = 120
TabIndex = 3
Top = 1680
Width = 975
End
Begin VB.Label Label2
Caption = "Atributes:"
Height = 255
Left = 120
TabIndex = 2
Top = 720
Width = 975
End
Begin VB.Label Label1
Caption = "Id:"
Height = 255
Left = 120
TabIndex = 1
Top = 240
Width = 975
End
End
Attribute VB_Name = "SimpleEditForm"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
DefInt A-Z
'Form parameters
Public Machine As String
Public Key As String
Public Id As Long '0 = New
Public NewDataType As String 'New only
'Metabase Constants
Const METADATA_NO_ATTRIBUTES = &H0
Const METADATA_INHERIT = &H1
Const METADATA_PARTIAL_PATH = &H2
Const METADATA_SECURE = &H4
Const METADATA_REFERENCE = &H8
Const METADATA_VOLATILE = &H10
Const METADATA_ISINHERITED = &H20
Const METADATA_INSERT_PATH = &H40
Const IIS_MD_UT_SERVER = 1
Const IIS_MD_UT_FILE = 2
Const IIS_MD_UT_WAM = 100
Const ASP_MD_UT_APP = 101
Const ALL_METADATA = 0
Const DWORD_METADATA = 1
Const STRING_METADATA = 2
Const BINARY_METADATA = 3
Const EXPANDSZ_METADATA = 4
Const MULTISZ_METADATA = 5
Private Sub Form_Load()
'Init UserTypeCombo
UserTypeCombo.Clear
UserTypeCombo.AddItem "Server"
UserTypeCombo.AddItem "File"
UserTypeCombo.AddItem "WAM"
UserTypeCombo.AddItem "ASP App"
UserTypeCombo.AddItem "Other"
UserTypeCombo.Text = "Server"
'Init DataTypeCombo
DataTypeCombo.Clear
DataTypeCombo.AddItem "DWord"
DataTypeCombo.AddItem "String"
DataTypeCombo.AddItem "Binary"
DataTypeCombo.AddItem "Expand String"
DataTypeCombo.Text = "DWord"
End Sub
Private Sub LoadPropertyNames()
On Error GoTo LError
Dim NameProperty As Variant
For Each NameProperty In MainForm.MetaUtilObj.EnumProperties(Machine + "\Schema\Properties\Names")
NameCombo.AddItem NameProperty.Data
Next
LError:
End Sub
Public Sub Init()
Dim Property As Object
Dim Attributes As Long
Dim UserType As Long
Dim DataType As Long
If Id = 0 Then
'New data
'Load the Names
NameCombo.Clear
LoadPropertyNames
NameCombo.AddItem "Other"
NameCombo.Text = "Other"
NameCombo.Enabled = True
'Set Id to 0
IdText.Enabled = True
IdText.Text = "0"
'Clear all flags
InheritCheck.Value = vbUnchecked
SecureCheck.Value = vbUnchecked
ReferenceCheck.Value = vbUnchecked
VolatileCheck.Value = vbUnchecked
InsertPathCheck.Value = vbUnchecked
'Set UserType to Server
UserTypeCombo.Text = "Server"
'Set DataType
If NewDataType = DWORD_METADATA Then
DataTypeCombo.Text = "DWord"
ElseIf NewDataType = STRING_METADATA Then
DataTypeCombo.Text = "String"
ElseIf NewDataType = BINARY_METADATA Then
DataTypeCombo.Text = "Binary"
ElseIf NewDataType = EXPANDSZ_METADATA Then
DataTypeCombo.Text = "Expand String"
End If
'Set Data to empty
DataText.Text = ""
Else
'Edit existing
Set Property = MainForm.MetaUtilObj.GetProperty(Key, Id)
'Set the Name
NameCombo.Clear
If Property.Name <> "" Then
NameCombo.AddItem Property.Name
NameCombo.Text = Property.Name
Else
NameCombo.AddItem "Other"
NameCombo.Text = "Other"
End If
NameCombo.Enabled = False
'Set Id
IdText.Enabled = False
IdText.Text = Str(Property.Id)
'Set attributes
Attributes = Property.Attributes
If (Attributes And METADATA_INHERIT) = METADATA_INHERIT Then
InheritCheck.Value = vbChecked
Else
InheritCheck.Value = vbUnchecked
End If
If (Attributes And METADATA_SECURE) = METADATA_SECURE Then
SecureCheck.Value = vbChecked
Else
SecureCheck.Value = vbUnchecked
End If
If (Attributes And METADATA_REFERENCE) = METADATA_REFERENCE Then
ReferenceCheck.Value = vbChecked
Else
ReferenceCheck.Value = vbUnchecked
End If
If (Attributes And METADATA_VOLATILE) = METADATA_VOLATILE Then
VolatileCheck.Value = vbChecked
Else
VolatileCheck.Value = vbUnchecked
End If
If (Attributes And METADATA_INSERT_PATH) = METADATA_INSERT_PATH Then
InsertPathCheck.Value = vbChecked
Else
InsertPathCheck.Value = vbUnchecked
End If
'Set UserType
UserType = Property.UserType
If UserType = IIS_MD_UT_SERVER Then
UserTypeCombo.Text = "Server"
ElseIf UserType = IIS_MD_UT_FILE Then
UserTypeCombo.Text = "File"
ElseIf UserType = IIS_MD_UT_WAM Then
UserTypeCombo.Text = "WAM"
ElseIf UserType = ASP_MD_UT_APP Then
UserTypeCombo.Text = "ASP App"
Else
UserTypeCombo.Text = "Other"
UserTypeText.Text = Str(UserType)
End If
'Set DataType
DataType = Property.DataType
If DataType = DWORD_METADATA Then
DataTypeCombo.Text = "DWord"
ElseIf DataType = STRING_METADATA Then
DataTypeCombo.Text = "String"
ElseIf DataType = BINARY_METADATA Then
DataTypeCombo.Text = "Binary"
ElseIf DataType = EXPANDSZ_METADATA Then
DataTypeCombo.Text = "Expand String"
End If
'Set Data
If DataType = BINARY_METADATA Then
LoadBinaryData Property
Else
DataText.Text = CStr(Property.Data)
End If
End If
End Sub
Private Sub LoadBinaryData(Property As Object)
Dim DataStr As String
Dim DataBStr As String
Dim i As Long
Dim DataByte As Integer
'Display as a list of bytes
DataStr = ""
DataBStr = Property.Data
For i = 1 To LenB(DataBStr)
DataByte = AscB(MidB(DataBStr, i, 1))
If DataByte < 16 Then
DataStr = DataStr & "0" & Hex(AscB(MidB(DataBStr, i, 1))) & " "
Else
DataStr = DataStr & Hex(AscB(MidB(DataBStr, i, 1))) & " "
End If
Next
DataText.Text = DataStr
End Sub
Private Function HexVal(ByVal HexStr As String) As Integer
Dim Ret As Integer
Ret = 0
Do While HexStr <> ""
Ret = Ret * 16
If Right(HexStr, 1) = "1" Then
Ret = Ret + 1
ElseIf Right(HexStr, 1) = "2" Then
Ret = Ret + 2
ElseIf Right(HexStr, 1) = "3" Then
Ret = Ret + 3
ElseIf Right(HexStr, 1) = "4" Then
Ret = Ret + 4
ElseIf Right(HexStr, 1) = "5" Then
Ret = Ret + 5
ElseIf Right(HexStr, 1) = "6" Then
Ret = Ret + 6
ElseIf Right(HexStr, 1) = "7" Then
Ret = Ret + 7
ElseIf Right(HexStr, 1) = "8" Then
Ret = Ret + 8
ElseIf Right(HexStr, 1) = "9" Then
Ret = Ret + 9
ElseIf Right(HexStr, 1) = "A" Then
Ret = Ret + 10
ElseIf Right(HexStr, 1) = "B" Then
Ret = Ret + 11
ElseIf Right(HexStr, 1) = "C" Then
Ret = Ret + 12
ElseIf Right(HexStr, 1) = "D" Then
Ret = Ret + 13
ElseIf Right(HexStr, 1) = "E" Then
Ret = Ret + 14
ElseIf Right(HexStr, 1) = "F" Then
Ret = Ret + 15
End If
HexStr = Right(HexStr, Len(HexStr) - 1)
Loop
HexVal = Ret
End Function
Private Sub SaveBinaryData(Property As Object)
Dim WorkStr As String
Dim OutBStr As String
Dim i As Long
Dim CurByte As String
WorkStr = DataText.Text
OutBStr = ""
Do While WorkStr <> ""
'Skip leading spaces
Do While Left(WorkStr, 1) = " "
WorkStr = Right(WorkStr, Len(WorkStr) - 1)
Loop
'Get a byte
i = 0
CurByte = Left(WorkStr, 1)
Do While (CurByte <> "") And (CurByte <> " ")
i = i + 1
CurByte = Mid(WorkStr, i + 1, 1)
Loop
If i > 0 Then
OutBStr = OutBStr + ChrB(HexVal(Left(WorkStr, i)))
End If
WorkStr = Right(WorkStr, Len(WorkStr) - i)
Loop
Property.Data = OutBStr
End Sub
Private Sub NameCombo_Click()
If NameCombo.Text <> "Other" Then
IdText.Enabled = False
IdText.Text = Str(MainForm.MetaUtilObj.PropNameToId(Key, NameCombo.Text))
Else
IdText.Enabled = True
End If
End Sub
Private Sub UserTypeCombo_Click()
If UserTypeCombo.Text = "Other" Then
UserTypeText.Enabled = True
UserTypeText.Text = ""
UserTypeText.SetFocus
Else
UserTypeText.Enabled = False
If UserTypeCombo.Text = "Server" Then
UserTypeText.Text = Str(IIS_MD_UT_SERVER)
ElseIf UserTypeCombo.Text = "File" Then
UserTypeText.Text = Str(IIS_MD_UT_FILE)
ElseIf UserTypeCombo.Text = "WAM" Then
UserTypeText.Text = Str(IIS_MD_UT_WAM)
ElseIf UserTypeCombo.Text = "ASP App" Then
UserTypeText.Text = Str(ASP_MD_UT_APP)
Else
UserTypeText = "0"
End If
End If
End Sub
Private Sub OkButton_Click()
'On Error GoTo LError:
Dim Property As Object
Dim Attributes As Long
'Check fields
If CLng(IdText.Text) = 0 Then
MsgBox "Id must be nonzero", _
vbExclamation + vbOKOnly, "Edit Metabase Data"
Exit Sub
End If
'Write data
If Id = 0 Then
Set Property = MainForm.MetaUtilObj.CreateProperty(Key, CLng(IdText.Text))
Else
Set Property = MainForm.MetaUtilObj.GetProperty(Key, CLng(IdText.Text))
End If
Attributes = METADATA_NO_ATTRIBUTES
If InheritCheck.Value = vbChecked Then
Attributes = Attributes + METADATA_INHERIT
ElseIf SecureCheck.Value = vbChecked Then
Attributes = Attributes + METADATA_SECURE
ElseIf ReferenceCheck.Value = vbChecked Then
Attributes = Attributes + METADATA_REFERENCE
ElseIf VolatileCheck.Value = vbChecked Then
Attributes = Attributes + METADATA_VOLATILE
ElseIf InsertPathCheck.Value = vbChecked Then
Attributes = Attributes + METADATA_INSERT_PATH
End If
Property.Attributes = Attributes
Property.UserType = CLng(UserTypeText.Text)
If DataTypeCombo.Text = "DWord" Then
Property.DataType = DWORD_METADATA
Property.Data = CLng(DataText.Text)
ElseIf DataTypeCombo.Text = "String" Then
Property.DataType = STRING_METADATA
Property.Data = DataText.Text
ElseIf DataTypeCombo.Text = "Binary" Then
Property.DataType = BINARY_METADATA
SaveBinaryData Property
ElseIf DataTypeCombo.Text = "Expand String" Then
Property.DataType = EXPANDSZ_METADATA
Property.Data = DataText.Text
End If
Property.Write
'Clean up
Me.Hide
Exit Sub
LError:
MsgBox "Failure to write property: " & Err.Description, _
vbExclamation + vbOKOnly, "Edit Metabase Data"
End Sub
Private Sub CancelButton_Click()
Me.Hide
End Sub