<%@LANGUAGE="VBSCRIPT"%> <% '===================================================== ' _json_Replication.asp ' Ajax support Package Replication Operations ' '===================================================== %> <% Option explicit ' Essential to get UTF through all the hoops. ie: VÄSTTRAFIK (VTK) Response.ContentType = "text/html" Response.AddHeader "Content-Type", "text/html;charset=UTF-8" Response.CodePage = 65001 Response.CharSet = "UTF-8" %> <% '------------ ACCESS CONTROL ------------------ %> <% '------------ Variable Definition ------------- Dim parOpr Dim result Dim SqlQry Dim rsQry parOpr = QStrPar("Opr") ' Init the output JSON class ' Operations can add data ' Default data will be added at the end Dim oJSON Set oJSON = New aspJSON Dim newitem Function canModify(cname) canModify = canActionControl(cname) If NOT canModify Then result = -4 oJSON.data("error") = 1 oJSON.data("emsgSummary") = "Permission denied" oJSON.data("emsgDetails") = oJSON.data("emsgSummary") End If End Function ' ' Prefill error indications ' result = -1 oJSON.data("emsgSummary") = "JSON Operation:" & parOpr oJSON.data("emsgDetails") = "Internal Problem. Error not reported" ' ' Perform the body of the operations within a Sub and use ' On Error Resule Next to catch errors that accur in the code ' On Error Resume Next If (parOpr = "EnableProject") Then If canModify("ConfigureReplication") Then EnableProject ElseIf (parOpr = "RemoveProject") Then If canModify("ConfigureReplication") Then RemoveProject ElseIf (parOpr = "AddProject") Then If canModify("ConfigureReplication") Then AddProject ElseIf (parOpr = "EnableRelease") Then If canModify("ConfigureReplication") Then EnableRelease ElseIf (parOpr = "RemoveRelease") Then If canModify("ConfigureReplication") Then RemoveRelease ElseIf (parOpr = "AddRelease") Then If canModify("ConfigureReplication") Then AddRelease Else oJSON.data("error") = 1 oJSON.data("emsgSummary") = "Unknown JSON Operation" oJSON.data("emsgDetails") = "JSON operation is not supported: " & parOpr End If ' SQL error detection and reporting If objEH.LastOraFailed Then oJSON.data("error") = 1 result = -1 oJSON.data("emsgSummary") = objEH.MessageSummary oJSON.data("emsgDetails") = objEH.MessageDetails oJSON.data("SqlQry") = SqlQry ' ' Detect program errors ElseIf Err.number <> 0 Then result = -3 oJSON.data("error") = 2 oJSON.data("errnum") = Err.number oJSON.data("errtxt") = Err.description oJSON.data("errsrc") = Err.source oJSON.data("emsgSummary") = "Internal VBScript Error:" oJSON.data("emsgDetails") = Err.number & ":" & Err.description End If On error goto 0 'Write single value oJSON.data("result") = result If result = 0 Then oJSON.data.Remove("emsgSummary") oJSON.data.Remove("emsgDetails") End If 'function Sleep(seconds) ' dim oshell, cmd ' set oShell = CreateObject("Wscript.Shell") ' cmd = "cmd.exe /c timeout " & seconds & " /nobreak" ' oShell.Run cmd,0,1 'End function ' 'Sleep(2) ' DEBUG: A Hash of the user provided requests 'Return the object Response.Write oJSON.JSONoutput() Set oJSON = Nothing Call Destroy_All_Objects %> <% '------------------------------------------------- ' Function: EnableProject ' Description: Set the enabled state of a Project Replica for a specified target ' server_id - Id of the BLAT replica server ' user_id - user_id requesting the operation ' proj_id - proj_id of the project entry to modify ' new_state - New state Sub EnableProject Dim parServerId : parServerId = QStrPar("server_id") Dim parUserId : parUserId = QStrPar("user_id") Dim parProjId : parProjId = QStrPar("proj_id") Dim parState : parState = QStrPar("new_state") If parServerId <> "" AND parUserId<> "" AND parProjId <> "" AND parState <> "" Then If parState <> "Y" and parState <> "N" Then oJSON.data("emsgSummary") = "EnableProject" oJSON.data("emsgDetails") = "Invalid State" Exit Sub End If objEH.ErrorRedirect = FALSE objEH.TryORA ( OraSession ) On Error Resume Next OraDatabase.Parameters.Add "USER_ID", parUserId, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "PROJ_ID", parProjId, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "SERVER_ID", parServerId, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "STATE", parState, ORAPARM_INPUT, ORATYPE_NUMBER SqlQry = "UPDATE BLAT_PROJECTS SET BP_ENABLED = :STATE where BLAT_ID = :SERVER_ID and PROJ_ID = :PROJ_ID" OraDatabase.ExecuteSQL SqlQry OraDatabase.ExecuteSQL ("BEGIN PK_BLATAPI.set_pkg_replica_changed(:SERVER_ID); END; ") OraDatabase.Parameters.Remove "USER_ID_LIST" OraDatabase.Parameters.Remove "PROJ_ID" OraDatabase.Parameters.Remove "SERVER_ID" OraDatabase.Parameters.Remove "STATE" objEH.CatchORA ( OraSession ) result = 0 Else oJSON.data("emsgSummary") = "EnableProject" oJSON.data("emsgDetails") = "Insufficient arguments" End If End Sub '------------------------------------------------- ' Function: RemoveProject ' Description: Remove a Project Replica for a specified target ' server_id - Id of the BLAT replica server ' user_id - user_id requesting the operation ' proj_id - proj_id of the project entry to modify Sub RemoveProject Dim parServerId : parServerId = QStrPar("server_id") Dim parUserId : parUserId = QStrPar("user_id") Dim parProjId : parProjId = QStrPar("proj_id") If parServerId <> "" AND parUserId<> "" AND parProjId <> "" Then objEH.ErrorRedirect = FALSE objEH.TryORA ( OraSession ) On Error Resume Next OraDatabase.Parameters.Add "USER_ID", parUserId, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "PROJ_ID", parProjId, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "SERVER_ID", parServerId, ORAPARM_INPUT, ORATYPE_NUMBER SqlQry = "DELETE FROM BLAT_PROJECTS where BLAT_ID = :SERVER_ID and PROJ_ID = :PROJ_ID" OraDatabase.ExecuteSQL SqlQry OraDatabase.ExecuteSQL ("BEGIN PK_BLATAPI.set_pkg_replica_changed(:SERVER_ID); END; ") OraDatabase.Parameters.Remove "USER_ID_LIST" OraDatabase.Parameters.Remove "PROJ_ID" OraDatabase.Parameters.Remove "SERVER_ID" objEH.CatchORA ( OraSession ) result = 0 Else oJSON.data("emsgSummary") = "EnableProject" oJSON.data("emsgDetails") = "Insufficient arguments" End If End Sub '------------------------------------------------- ' Function: AddProject ' Description: Add a Project Replica for a specified target ' server_id - Id of the BLAT replica server ' user_id - user_id requesting the operation ' proj_id - proj_id of the project entry to modify Sub AddProject Dim parServerId : parServerId = QStrPar("server_id") Dim parUserId : parUserId = QStrPar("user_id") Dim parProjId : parProjId = QStrPar("proj_id") If parServerId <> "" AND parUserId<> "" AND parProjId <> "" Then objEH.ErrorRedirect = FALSE objEH.TryORA ( OraSession ) On Error Resume Next OraDatabase.Parameters.Add "USER_ID", parUserId, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "PROJ_ID", parProjId, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "SERVER_ID", parServerId, ORAPARM_INPUT, ORATYPE_NUMBER SqlQry = "INSERT INTO BLAT_PROJECTS (BLAT_ID,proj_id) VALUES( :SERVER_ID, :PROJ_ID)" OraDatabase.ExecuteSQL SqlQry OraDatabase.ExecuteSQL ("BEGIN PK_BLATAPI.set_pkg_replica_changed(:SERVER_ID); END; ") OraDatabase.Parameters.Remove "USER_ID_LIST" OraDatabase.Parameters.Remove "PROJ_ID" OraDatabase.Parameters.Remove "SERVER_ID" objEH.CatchORA ( OraSession ) result = 0 Else oJSON.data("emsgSummary") = "EnableProject" oJSON.data("emsgDetails") = "Insufficient arguments" End If End Sub '------------------------------------------------- ' Function: EnableRelease ' Description: Set the enabled state of a Release Replica for a specified target ' server_id - Id of the BLAT replica server ' user_id - user_id requesting the operation ' rtag_id - rtag_id of the release entry to modify ' new_state - New state Sub EnableRelease Dim parServerId : parServerId = QStrPar("server_id") Dim parUserId : parUserId = QStrPar("user_id") Dim parRtagId : parRtagId = QStrPar("rtag_id") Dim parState : parState = QStrPar("new_state") If parServerId <> "" AND parUserId<> "" AND parRtagId <> "" AND parState <> "" Then If parState <> "Y" and parState <> "N" Then oJSON.data("emsgSummary") = "EnableProject" oJSON.data("emsgDetails") = "Invalid State" Exit Sub End If objEH.ErrorRedirect = FALSE objEH.TryORA ( OraSession ) On Error Resume Next OraDatabase.Parameters.Add "USER_ID", parUserId, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "RTAG_ID", parRtagId, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "SERVER_ID", parServerId, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "STATE", parState, ORAPARM_INPUT, ORATYPE_NUMBER SqlQry = "UPDATE BLAT_RELEASES SET BR_ENABLED = :STATE where BLAT_ID = :SERVER_ID and RTAG_ID = :RTAG_ID" OraDatabase.ExecuteSQL SqlQry OraDatabase.ExecuteSQL ("BEGIN PK_BLATAPI.set_pkg_replica_changed(:SERVER_ID); END; ") OraDatabase.Parameters.Remove "USER_ID_LIST" OraDatabase.Parameters.Remove "RTAG_ID" OraDatabase.Parameters.Remove "SERVER_ID" OraDatabase.Parameters.Remove "STATE" objEH.CatchORA ( OraSession ) result = 0 Else oJSON.data("emsgSummary") = "EnableProject" oJSON.data("emsgDetails") = "Insufficient arguments" End If End Sub '------------------------------------------------- ' Function: RemoveRelease ' Description: Remove a Release Replica for a specified target ' server_id - Id of the BLAT replica server ' user_id - user_id requesting the operation ' rtag_id - rtag_id of the release entry to modify Sub RemoveRelease Dim parServerId : parServerId = QStrPar("server_id") Dim parUserId : parUserId = QStrPar("user_id") Dim parRtagId : parRtagId = QStrPar("rtag_id") If parServerId <> "" AND parUserId<> "" AND parRtagId <> "" Then objEH.ErrorRedirect = FALSE objEH.TryORA ( OraSession ) On Error Resume Next OraDatabase.Parameters.Add "USER_ID", parUserId, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "RTAG_ID", parRtagId, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "SERVER_ID", parServerId, ORAPARM_INPUT, ORATYPE_NUMBER SqlQry = "DELETE FROM BLAT_RELEASES where BLAT_ID = :SERVER_ID and RTAG_ID = :RTAG_ID" OraDatabase.ExecuteSQL SqlQry OraDatabase.ExecuteSQL ("BEGIN PK_BLATAPI.set_pkg_replica_changed(:SERVER_ID); END; ") OraDatabase.Parameters.Remove "USER_ID_LIST" OraDatabase.Parameters.Remove "RTAG_ID" OraDatabase.Parameters.Remove "SERVER_ID" objEH.CatchORA ( OraSession ) result = 0 Else oJSON.data("emsgSummary") = "EnableProject" oJSON.data("emsgDetails") = "Insufficient arguments" End If End Sub '------------------------------------------------- ' Function: AddRelease ' Description: Add a Release Replica for a specified target ' server_id - Id of the BLAT replica server ' user_id - user_id requesting the operation ' rtag_id - rtag_id of the release entry to modify Sub AddRelease Dim parServerId : parServerId = QStrPar("server_id") Dim parUserId : parUserId = QStrPar("user_id") Dim parRtagId : parRtagId = QStrPar("rtag_id") If parServerId <> "" AND parUserId<> "" AND parRtagId <> "" Then objEH.ErrorRedirect = FALSE objEH.TryORA ( OraSession ) On Error Resume Next OraDatabase.Parameters.Add "USER_ID", parUserId, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "RTAG_ID", parRtagId, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "SERVER_ID", parServerId, ORAPARM_INPUT, ORATYPE_NUMBER SqlQry = "INSERT INTO BLAT_RELEASES (BLAT_ID,rtag_id) VALUES( :SERVER_ID, :RTAG_ID)" OraDatabase.ExecuteSQL SqlQry OraDatabase.ExecuteSQL ("BEGIN PK_BLATAPI.set_pkg_replica_changed(:SERVER_ID); END; ") OraDatabase.Parameters.Remove "USER_ID_LIST" OraDatabase.Parameters.Remove "RTAG_ID" OraDatabase.Parameters.Remove "SERVER_ID" objEH.CatchORA ( OraSession ) result = 0 Else oJSON.data("emsgSummary") = "EnableProject" oJSON.data("emsgDetails") = "Insufficient arguments" End If End Sub %>