git commit -m 'gay'
All of the blunderous commit messages from John.
Added Cloudflare Analytics script to the end of the index.html page.
Added a discovery and collection script for XIQ switch port status. The discovery script tunes out APs and switches that are not currently connected since their ports will always be down. For switches that are active, ports translate their status to an integer for LogicMonitor with 1 being up, 2 being administratively disabled, and 3 being down.
Added the EXOSSWITCH and XR600P devices models for the aggregate data. Modified the Active Discovery details to use the device model as the description in LogicMonitor.
Fixed a bug in both scripts where I was accidentally calling the non-existant os.exit() method rather than sys.exit() to close the script.
Added a second script to the repository to process agent and account metrics only for the previous month. This will allow for the metrics in the yearly script to be built upon in an ongoing basis. It will write agent and account .csv files named with the year and month combination of the data gathered.
Updated the README to actually say what the heck the purpose of this repo is.
Modified the handling of the received token to leverage the .accessToken() method on it. Passing this value to the request for user data is successful rather than passing the entire IAuthenticationResult object.
Added a second variant of the script that uses the exact same function as the sample Java code from Microsoft other than not containing global variables, but it generates the same issue with the JWT. Also verified that intentionally flubbing the client ID, tenant ID, secret, or scope generates a specific error for that piece of information.
Added functions for getting an authentication token and then querying for the AAD users. Functions are complete, but there's currently an issue with retrieving a valid JWT.
Added a call to Math.round() for the available licenses since Groovy was setting the difference of the subtraction to a float. The operand for the total licenses will always be a whole number, but the number of consumed licenses can be a decimal depending on the collection metrics returned from the /graphs/ endpoint.
Added calculations for the percentage of free licenses for an rXg instance. Printed the percentage, total licenses, and total consumed licenses to standard out for LogicMonitor. The calculations and comparisons of the different levels may need to be modified further once a clustered implementation is available for testing.
Cleaned up formatting and comments. Modified the final println calls to the key-value pair format expected by LogicMonitor.
Added the basic code with the Grape statement and msal4j import from the Maven repository, along with the method imports. Added the code for importing the AAD-specific information from a local JSON file. Created a .gitignore to keep the .json file and Vim .swp files from accidentally being included in the GitHub repo.
Added switch model X435_24P_4S to the keys.
Modified the URL to query to account for the different cloud providers that may be hosting the instance; the value for the URL base is specified as a property on the resource in LogicMonitor.
Added the moving of each valid health notice into a list of dictionaries. The list is then parsed to JSON and printed to standard out for LogicMonitor to ingest each item in the list as an event. Also cleaned up the comments and test code, specifying the production values.
Renamed the file for health notices to reflect that was the use. Replaced the conditional logic from the last commit for removing the : from the timezone offset in the creation timestamp for each notice with a regex.
Created a DataSource for getting the health notices from an rXg. Implemented the ability to query for all notices, along with code to reformat the creation date timestamp and parse to a Date object for comparison.
Added the basline code for querying the total number of concurrent licenses on the platform. Checks if the licensing is standalone or clustered. Captures the peak concurrent usage over the past 10 minutes and reports on the highest value.
Created a script to parse out the certificate details for an rXg. The end date of the certificate's validity is compared to the current date, and the number of days remaining (or passed) are reported to LogicMonitor for alerting.
Added a discovery script to exclude APs and get only switches from XIQ. The device IDs are passed to a collector script which then dumps the switch configuration into LogicMonitor.
Modified the URL parsing for the script getting the SSID config of each device to match the parsing for the device discovery so that each cloud host and VIQID is accounted for.
Updated the URL from being hard-coded to account for both the cloud hosting the XIQ instance and applying the appropriate VIQID needed for all calls.
Merge branch 'master' of https://github.com/jfabry-noc/jfabry-noc.github.io
Modified the first paragraph to match the content at https://unusually.pink/about/
Added a new conditonal for a specific customer match to check data regardless of modem status.
Moved the writing of the .csv files to a function. Added an additional function to handle the deletion of existing .csv files prior to writing new ones to avoid manual cleanup prior to subsequent runs of the script.
Moved both accounts and agents to use the same object type. Added code to write a .csv file for each of the 4 lists created if the list contains content. Placed those into a results folder which has been excluded in the .gitignore file.
Added logic for tickets matching the first comparison year to gather account and agent details for each, including the ability to account for tickets where account or agent information wasn't supplied.
Added a function to iterate through all pages to return every ticket in the instance.
Added an untracked file for the API configuration. Created a function for POSTing to Desk to get an authentication token that will be used with subsequent queries.
Modified the recipient email to the DL which will receive the messages long-term. Updated the filtering of the accounts to prevent the inclusion of known service accounts that are accessed via delegation rather than direct login.
Manually removed the __pycache__ directory since I forgot to do it when I added it to the .gitignore file.
Added __pycache__/ to the .gitignore.
Added additional checks for whether the account is a guest and if it has licensing assigned. The licensing assignment check weeds out shared mailboxes and resource mailboxes. Added an import for my send_email function from an external module and added code leveraging that to send an email with a table of results to a recipient value.
Added a function to query for the single audit log entry for each user. Added code to parse together the HTML body for the email that would be sent in an instance where there is a hit. The audit log is finite, so accounts with no audit log entry are set to the maximum audit log threshold of 90 days.
Replaced a standardized email address for ticket filtering with an updated one the customer is now using.
Added code for logging the activity of the script since it will run unattended as a cron job once completed. Included supplementary function for backing up the log file on the local file system once it grows too large. Added functions for getting an authentication token from the Microsoft Graph and validating that token. Created a function for querying the Graph for data, and then code calling that function to return the entire list of users in the tenant.
Added a baseline .gitignore file for Python projects.
Also modified the relative link to the header image in the 2020 page.
Fixed the relative links to the CSS in the 2020 page.
Copied all 2020 commits to a dedicated 2020 page. Removed the 2020 commit content from the main page and changed the heading to indicate that it was for 2021 commits. Added links to the 2020 and 2021 commits in the footer. Modified the image at the top of the page to link to the main index.