<% ' Initialize error handling Call InitializeErrorHandling("saveprinter.asp") ' Get and validate all inputs Dim modelid, serialnumber, ipaddress, fqdn, printercsfname, printerwindowsname, machineid modelid = Trim(Request.Form("modelid")) serialnumber = Trim(Request.Form("serialnumber")) ipaddress = Trim(Request.Form("ipaddress")) fqdn = Trim(Request.Form("fqdn")) printercsfname = Trim(Request.Form("printercsfname")) printerwindowsname = Trim(Request.Form("printerwindowsname")) machineid = Trim(Request.Form("machineid")) ' Validate required fields If Not ValidateID(modelid) Then Call HandleValidationError("addprinter.asp", "INVALID_ID") End If If Not ValidateID(machineid) Then Call HandleValidationError("addprinter.asp", "INVALID_ID") End If If serialnumber = "" Then Call HandleValidationError("addprinter.asp", "INVALID_INPUT") End If If ipaddress = "" Then Call HandleValidationError("addprinter.asp", "INVALID_INPUT") End If If printerwindowsname = "" Then Call HandleValidationError("addprinter.asp", "INVALID_INPUT") End If ' Validate IP address format If Not ValidateIPAddress(ipaddress) Then Call HandleValidationError("addprinter.asp", "INVALID_IP") End If ' Validate serial number format If Not ValidateSerialNumber(serialnumber) Then Call HandleValidationError("addprinter.asp", "INVALID_SERIAL") End If ' Validate field lengths If Len(serialnumber) > 100 Then Call HandleValidationError("addprinter.asp", "INVALID_INPUT") End If If Len(fqdn) > 255 Then Call HandleValidationError("addprinter.asp", "INVALID_INPUT") End If If Len(printercsfname) > 50 Then Call HandleValidationError("addprinter.asp", "INVALID_INPUT") End If If Len(printerwindowsname) > 255 Then Call HandleValidationError("addprinter.asp", "INVALID_INPUT") End If ' Check if printer with same IP already exists Dim checkSQL, rsCheck checkSQL = "SELECT COUNT(*) as cnt FROM printers WHERE ipaddress = ? AND isactive = 1" Set rsCheck = ExecuteParameterizedQuery(objConn, checkSQL, Array(ipaddress)) If Not rsCheck.EOF Then If Not IsNull(rsCheck("cnt")) Then If CLng(rsCheck("cnt")) > 0 Then rsCheck.Close Set rsCheck = Nothing Response.Write("
Error: A printer with IP address '" & Server.HTMLEncode(ipaddress) & "' already exists.
") Response.Write("Go back") Call CleanupResources() Response.End End If End If End If rsCheck.Close Set rsCheck = Nothing ' Execute parameterized INSERT query strSQL = "INSERT INTO printers (modelid, serialnumber, ipaddress, fqdn, printercsfname, printerwindowsname, machineid, isactive) " &_ "VALUES (?, ?, ?, ?, ?, ?, ?, ?)" Dim recordsAffected recordsAffected = ExecuteParameterizedInsert(objConn, strSQL, Array(modelid, serialnumber, ipaddress, fqdn, printercsfname, printerwindowsname, machineid, 1)) ' Get the new printer ID Dim newPrinterId Set rsCheck = objConn.Execute("SELECT LAST_INSERT_ID() as newid") newPrinterId = 0 If Not rsCheck.EOF Then If Not IsNull(rsCheck("newid")) Then newPrinterId = CLng(rsCheck("newid")) End If End If rsCheck.Close Set rsCheck = Nothing ' Cleanup resources Call CleanupResources() ' Redirect to display page If recordsAffected > 0 And newPrinterId > 0 Then %> <% Else Response.Write("Error: Printer was not added successfully.") End If %>