Skip to content

Instantly share code, notes, and snippets.

@jikamens
jikamens / nas-botnet-complaint.pl
Created March 21, 2025 21:59
script for generating complaints about botnets attacking a Synology NAS
#!/usr/bin/env perl
# Script for pulling "admin" login failure logs from a Synology NAS and
# generating complaint emails to the abuse contacts for the IP addresses in the
# logs.
#
# You need to have the NAS set up so that you can SSH into it as root to be
# able to use this script. Follow the instructions here to enable SSH to the
# admin accounts:
# https://kb.synology.com/en-us/DSM/tutorial/How_to_login_to_DSM_with_root_permission_via_SSH_Telnet
@jikamens
jikamens / cups_conf.py
Created December 29, 2024 02:04
Ansible module for editing CUPS config files such as printers.conf
#!/usr/bin/python3
# Copyright (c) 2024, Jonathan Kamens <[email protected]>
# GNU General Public License v3.0+
# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
import copy
import os
import re

The canonical location of this list has moved here.

@jikamens
jikamens / browserAction.html
Created September 18, 2023 18:56
messenger.mailTabs.getSelectedMessages() demo
<!DOCTYPE html>
<html>
<body>
<div id="messageList">
</div>
<script src="browserAction.js"></script>
</body>
</html>
@jikamens
jikamens / bitwarden-backup.py
Last active August 27, 2025 15:37
Simple script for backing up your Bitwarden vault using the Bitwarden CLI
#!/usr/bin/env python3
# Simple script for backing up your Bitwarden vault using the Bitwarden CLI
#
# Copyright 2021 Jonathan Kamens <[email protected]>
#
# This program is free software: you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation, either version 3 of the License, or (at your option) any later
# version.
@jikamens
jikamens / server-sucker.el
Last active August 27, 2025 15:33
Keep the Emacs server running in the Emacs in the current active systemd session
;; Copyright 2023 Jonathan Kamens <[email protected]>.
;;
;; This program is free software: you can redistribute it and/or modify it
;; under the terms of the GNU General Public License as published by the Free
;; Software Foundation, either version 3 of the License, or (at your option)
;; any later version. See <https://www.gnu.org/licenses/>.
;;
;; This program is distributed in the hope that it will be useful, but WITHOUT
;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
@jikamens
jikamens / perlmod_install_info.py
Last active August 10, 2024 18:05
Ansible module to figure out from where to install Perl modules
#!/usr/bin/python
# Copyright (c) 2023, Jonathan Kamens <[email protected]>
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
# pylint: disable=missing-module-docstring
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
@jikamens
jikamens / namecheap-dns.py
Last active August 14, 2025 03:03
namecheap-dns.py - Export/import DNS records from/to Namecheap
#!/usr/bin/env python3
"""
namecheap-dns.py - Export/import DNS records from/to Namecheap
This script can export DNS records from a domain in Namecheap to a YAML file or
import records from a YAML file in the same format into Namecheap. I use this
script to maintain my Namecheap DNS records in a source repository with change
history, i.e., "configuration as code" for my Namecheap DNS records.
@jikamens
jikamens / toodledo-agenda.py
Last active August 27, 2025 15:34
toodledo-agenda.py - Prepare your daily agenda in Toodledo
#!/usr/bin/env python3
'''toodledo-agenda.py - Prepare your daily agenda in Toodledo
Toodldeo doesn't _quite_ do the right thing, at least for me, whether I sort by
date and then priority, or by priority and then date.
* If I sort by date first, then top-priority items that aren't due by a
specific date get pushed all the way to the bottom of my to-do list and I
never see them.
@jikamens
jikamens / wayback-check.py
Last active December 24, 2022 16:10
Script for filtering URLs before submitting them to the Wayback Machine for archiving
#!/usr/bin/env python3
# This script filters a list of URLs to determine which of them should be
# submitted to the Internet Archive's Wayback Machine for archiving because
# they are valid URLs and/or they aren't already archived in the Wayback
# Machine.
#
# To check for and filter out URLs which are invalid, specify --check on the
# command line. To filter out URLs that are already archived in the Wayback
# Machine, specify --check-archive on the command line. You must specify either