Rev 6773 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<%@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 = 65001Response.CharSet = "UTF-8"%><!--#include file="common/conf.asp"--><!--#include file="common/globals.asp"--><!--#include file="common/qstr.asp"--><!--#include file="common/common_subs.asp"--><% '------------ ACCESS CONTROL ------------------ %><!--#include file="_access_control_login_optional.asp"--><!--#include file="_access_control_general.asp"--><SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="class/classaspJSON.vbs"></SCRIPT><%'------------ Variable Definition -------------Dim parOprDim resultDim SqlQryDim rsQryparOpr = QStrPar("Opr")' Init the output JSON class' Operations can add data' Default data will be added at the endDim oJSONSet oJSON = New aspJSONDim newitemFunction canModifycanModify = canActionInProject()If NOT canModify Thenresult = -4oJSON.data("error") = 1oJSON.data("emsgSummary") = "Permission denied"oJSON.data("emsgDetails") = oJSON.data("emsgSummary")End IfEnd Function'' Prefill error indications'result = -1oJSON.data("emsgSummary") = "JSON Operation:" & parOproJSON.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 NextIf (parOpr = "EnableProject") ThenIf canModify() Then EnableProjectElseIf (parOpr = "RemoveProject") ThenIf canModify() Then RemoveProjectElseIf (parOpr = "AddProject") ThenIf canModify() Then AddProjectElseIf (parOpr = "EnableRelease") ThenIf canModify() Then EnableReleaseElseIf (parOpr = "RemoveRelease") ThenIf canModify() Then RemoveReleaseElseIf (parOpr = "AddRelease") ThenIf canModify() Then AddReleaseElseoJSON.data("error") = 1oJSON.data("emsgSummary") = "Unknown JSON Operation"oJSON.data("emsgDetails") = "JSON operation is not supported: " & parOprEnd If' SQL error detection and reportingIf objEH.LastOraFailed ThenoJSON.data("error") = 1result = -1oJSON.data("emsgSummary") = objEH.MessageSummaryoJSON.data("emsgDetails") = objEH.MessageDetailsoJSON.data("SqlQry") = SqlQry'' Detect program errorsElseIf Err.number <> 0 Thenresult = -3oJSON.data("error") = 2oJSON.data("errnum") = Err.numberoJSON.data("errtxt") = Err.descriptionoJSON.data("errsrc") = Err.sourceoJSON.data("emsgSummary") = "Internal VBScript Error:"oJSON.data("emsgDetails") = Err.number & ":" & Err.descriptionEnd IfOn error goto 0'Write single valueoJSON.data("result") = resultIf result = 0 ThenoJSON.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<!--oJSON.data("QueryString") = Request.QueryString --><!-- --><!--Dim requestSet : Set requestSet = oJSON.Collection() --><!--Set oJSON.data("Request") = requestSet --><!--Dim variableName --><!--for each variableName in Request.QueryString --><!-- requestSet.add variableName, Request(variableName)--><!--next --><!--for each variableName in Request.Form --><!-- requestSet.add variableName, Request(variableName)--><!--next -->'Return the objectResponse.Write oJSON.JSONoutput()Set oJSON = NothingCall 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 stateSub EnableProjectDim 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 <> "" ThenIf parState <> "Y" and parState <> "N" ThenoJSON.data("emsgSummary") = "EnableProject"oJSON.data("emsgDetails") = "Invalid State"Exit SubEnd IfobjEH.ErrorRedirect = FALSEobjEH.TryORA ( OraSession )On Error Resume NextOraDatabase.Parameters.Add "USER_ID", parUserId, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "PROJ_ID", parProjId, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "SERVER_ID", parServerId, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "STATE", parState, ORAPARM_INPUT, ORATYPE_NUMBERSqlQry = "UPDATE BLAT_PROJECTS SET BP_ENABLED = :STATE where BLAT_ID = :SERVER_ID and PROJ_ID = :PROJ_ID"OraDatabase.ExecuteSQL SqlQryOraDatabase.Parameters.Remove "USER_ID_LIST"OraDatabase.Parameters.Remove "PROJ_ID"OraDatabase.Parameters.Remove "SERVER_ID"OraDatabase.Parameters.Remove "STATE"objEH.CatchORA ( OraSession )result = 0ElseoJSON.data("emsgSummary") = "EnableProject"oJSON.data("emsgDetails") = "Insufficient arguments"End IfEnd 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 modifySub RemoveProjectDim parServerId : parServerId = QStrPar("server_id")Dim parUserId : parUserId = QStrPar("user_id")Dim parProjId : parProjId = QStrPar("proj_id")If parServerId <> "" AND parUserId<> "" AND parProjId <> "" ThenobjEH.ErrorRedirect = FALSEobjEH.TryORA ( OraSession )On Error Resume NextOraDatabase.Parameters.Add "USER_ID", parUserId, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "PROJ_ID", parProjId, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "SERVER_ID", parServerId, ORAPARM_INPUT, ORATYPE_NUMBERSqlQry = "DELETE FROM BLAT_PROJECTS where BLAT_ID = :SERVER_ID and PROJ_ID = :PROJ_ID"OraDatabase.ExecuteSQL SqlQryOraDatabase.Parameters.Remove "USER_ID_LIST"OraDatabase.Parameters.Remove "PROJ_ID"OraDatabase.Parameters.Remove "SERVER_ID"objEH.CatchORA ( OraSession )result = 0ElseoJSON.data("emsgSummary") = "EnableProject"oJSON.data("emsgDetails") = "Insufficient arguments"End IfEnd 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 modifySub AddProjectDim parServerId : parServerId = QStrPar("server_id")Dim parUserId : parUserId = QStrPar("user_id")Dim parProjId : parProjId = QStrPar("proj_id")If parServerId <> "" AND parUserId<> "" AND parProjId <> "" ThenobjEH.ErrorRedirect = FALSEobjEH.TryORA ( OraSession )On Error Resume NextOraDatabase.Parameters.Add "USER_ID", parUserId, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "PROJ_ID", parProjId, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "SERVER_ID", parServerId, ORAPARM_INPUT, ORATYPE_NUMBERSqlQry = "INSERT INTO BLAT_PROJECTS (BLAT_ID,proj_id) VALUES( :SERVER_ID, :PROJ_ID)"OraDatabase.ExecuteSQL SqlQryOraDatabase.Parameters.Remove "USER_ID_LIST"OraDatabase.Parameters.Remove "PROJ_ID"OraDatabase.Parameters.Remove "SERVER_ID"objEH.CatchORA ( OraSession )result = 0ElseoJSON.data("emsgSummary") = "EnableProject"oJSON.data("emsgDetails") = "Insufficient arguments"End IfEnd 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 stateSub EnableReleaseDim 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 <> "" ThenIf parState <> "Y" and parState <> "N" ThenoJSON.data("emsgSummary") = "EnableProject"oJSON.data("emsgDetails") = "Invalid State"Exit SubEnd IfobjEH.ErrorRedirect = FALSEobjEH.TryORA ( OraSession )On Error Resume NextOraDatabase.Parameters.Add "USER_ID", parUserId, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "RTAG_ID", parRtagId, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "SERVER_ID", parServerId, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "STATE", parState, ORAPARM_INPUT, ORATYPE_NUMBERSqlQry = "UPDATE BLAT_RELEASES SET BR_ENABLED = :STATE where BLAT_ID = :SERVER_ID and RTAG_ID = :RTAG_ID"OraDatabase.ExecuteSQL SqlQryOraDatabase.Parameters.Remove "USER_ID_LIST"OraDatabase.Parameters.Remove "RTAG_ID"OraDatabase.Parameters.Remove "SERVER_ID"OraDatabase.Parameters.Remove "STATE"objEH.CatchORA ( OraSession )result = 0ElseoJSON.data("emsgSummary") = "EnableProject"oJSON.data("emsgDetails") = "Insufficient arguments"End IfEnd 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 modifySub RemoveReleaseDim parServerId : parServerId = QStrPar("server_id")Dim parUserId : parUserId = QStrPar("user_id")Dim parRtagId : parRtagId = QStrPar("rtag_id")If parServerId <> "" AND parUserId<> "" AND parRtagId <> "" ThenobjEH.ErrorRedirect = FALSEobjEH.TryORA ( OraSession )On Error Resume NextOraDatabase.Parameters.Add "USER_ID", parUserId, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "RTAG_ID", parRtagId, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "SERVER_ID", parServerId, ORAPARM_INPUT, ORATYPE_NUMBERSqlQry = "DELETE FROM BLAT_RELEASES where BLAT_ID = :SERVER_ID and RTAG_ID = :RTAG_ID"OraDatabase.ExecuteSQL SqlQryOraDatabase.Parameters.Remove "USER_ID_LIST"OraDatabase.Parameters.Remove "RTAG_ID"OraDatabase.Parameters.Remove "SERVER_ID"objEH.CatchORA ( OraSession )result = 0ElseoJSON.data("emsgSummary") = "EnableProject"oJSON.data("emsgDetails") = "Insufficient arguments"End IfEnd 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 modifySub AddReleaseDim parServerId : parServerId = QStrPar("server_id")Dim parUserId : parUserId = QStrPar("user_id")Dim parRtagId : parRtagId = QStrPar("rtag_id")If parServerId <> "" AND parUserId<> "" AND parRtagId <> "" ThenobjEH.ErrorRedirect = FALSEobjEH.TryORA ( OraSession )On Error Resume NextOraDatabase.Parameters.Add "USER_ID", parUserId, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "RTAG_ID", parRtagId, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "SERVER_ID", parServerId, ORAPARM_INPUT, ORATYPE_NUMBERSqlQry = "INSERT INTO BLAT_RELEASES (BLAT_ID,rtag_id) VALUES( :SERVER_ID, :RTAG_ID)"OraDatabase.ExecuteSQL SqlQryOraDatabase.Parameters.Remove "USER_ID_LIST"OraDatabase.Parameters.Remove "RTAG_ID"OraDatabase.Parameters.Remove "SERVER_ID"objEH.CatchORA ( OraSession )result = 0ElseoJSON.data("emsgSummary") = "EnableProject"oJSON.data("emsgDetails") = "Insufficient arguments"End IfEnd Sub%>