2 Replies Latest reply on Nov 26, 2013 10:16 AM by uidzer0

    Application name macro


      I'm hoping someone out there has some answers.   The last couple weeks I've been in some development of a custom HTTP handler to capitalize of the use of these macros Solar winds provides, like ${NodeName} to extend the usefulness of User Link widgets.  For example i pass in http://solarwinds/QueryServer.handler?ServerName=${NodeName}&QueryType=Documentation and the handler will then perform a client direct to the location of the documentation specific for that server.  This is all working great.  I've even extended tools links for things like the VMConsole and RDP.


      Now to the problem.. I moved on to applications.  I could have sworn i tested the existance of a macro variable that expands into a Application Name, when viewing a note with a bound Application item.  Here's the URL:  /Orion/APM/ApplicationDetails.aspx?netobject=


      The things I've tried:


      ${Application}  - This only gets application information about Solarwinds itself.

      ${APM.ApplicationItem.Name} - Tried the table name because documentation said i should

      ${ApplicationItem.Name} - Seemed logical.

      Plus 20-30 others, but wanted to list the obvious.


      If someone knows of the magic bullet here, it'd be appreciated.


      Tried to work around the problem in other ways too.  Since i knew i could markup these links with html code.  I attempted to inject a <script>document.write(document.url)</script> in the link, because the NetObjectID in the displayed url is enough, combined with the working macros to figure out where to redirect a user and more importantly to determine the application name.  But this was presented with an error (BTW, good job solarwinds) basically of the parsing engine protecting itself.  Here's the summary of the error: 


      URL: https://solarwinds.<redacted>.com:443/Orion/APM/NetPerfMon/Resources/Misc/<script>document.write(document.url)</script>

      Referrer: https://solarwinds.<redacted>.com:443/Orion/APM/NetPerfMon/Resources/Misc/<script>document.write(document.url)</script>

      Message: A potentially dangerous Request.Path value was detected from the client (<).

      ErrorSite: System.Web.HttpRequest.ValidateInputIfRequiredByConfig

      ErrorType: System.Web.HttpException


      at System.Web.HttpRequest.ValidateInputIfRequiredByConfig()

      at System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context)



      Next question:   This line in the error messages alludes to an override of sorts to allow me to do what i want  ValidateInputIfRequiredByConfig - But i didn't want to willy-nilly start tripping around finding where to insert the change. 


      Other food for throught:  There seems to be a single Regex line in a .cs file (CommonWebHelper.cs), which i believe is the http processor for solarwinds.. that control what tags may be used.

      Here's the line:  static string _tagsToEncodeReg = "<(?!br|/br|p|/p|span|/span|div|/div|table|/table|tr|/tr|td|/td|a|/a|b|/b|i(?!nput)|/i(?!nput))(?:[^\">]|\"[^\"]*\")*>"


      Again, i didn't want to dink with those pieces of code that were mine.  The objective was to extend what's allowed in Solarwinds.  But if some dev has a magic answer here.. i'd be helpful.


      Rambled a bit, but i've spent some time looking for this answer and it's a lynch pin for me to help this organization bring home the "Single Pane of Glass" mentality by intelligently locating their scattered data, but organized data based on a display context in solarwinds (Server's or Applications)