General Computing

Google search results showing incorrect date stamps and calandar

I run into this a lot when I travel, or live in different parts of the world for a little bit. Example, my search results are showing up as BE while I am in Thailand.

This is actually a pretty easy fix. In chrome, while logged into my Google account, I go to Protip, set your homepage to ncr, as that will not give you a region lock either:

Then click on settings, then Search settings.

Once there, scroll to the bottom and you will see the option for region settings. The default is current region, which picks up where you are based on IP address most likely, I have not investigated how it picks that region up.

Click on the show more option to show all of the other countries.

My preference is the United States, I select that and click save.

Once that is done, you are good to go. Your Google search results should always show your preferred date and calendar.


Google Pixel 6 Pro Case vs Pixel 7 Pro Case

I really disliked what happened to my Google 6 Pro Case that I purchased direct from Google Store when the 6 pro was released. So it has about 12 months of daily driving use on it. It slowly started warping on the edges and flexing everywhere. Then it started to peal away from the inner plastic case. It was a shame. I was a huge fan of the Google Pixel 4 fabric cases, and they’ve since discontinued them. The good news is the Pixel 7 Pro case looks much better.


Setting up openVPN client on your pfSense (Surfshark)

Surfshark provides a cheap VPN service that allows unlimited number of devices with ad blocking. In this tutorial we are going to configure pfSense with Surfshark and assign an interface to it so that we can route it to other services.

Surfshark information

The first step is getting your Surfshark credentials. Go to the login page at  and log in. Next, go to Advanced >> Devices >> Manual, scroll down to the bottom of the page and take note of your service credentials.

On the same page of your account, you will find the list of all configuration files and domain name of their servers grouped by country/continent. Take this opportunity and copy the domain URL of the locations you want to use later on.

pfSense configuration

Once you are logged in on your pfSense, go to System >> Cert. Manager >> CAs and click on Add to create a new Certificate Authority as follows:

Descriptive Name: Surfshark_VPN
Method: Import an existing Certificate Authority
Certificate data:


Once you are done, click on Save.

The next step is creating the VPN client connection. Navigate to VPN >> OpenVPN >> Clients and press Add.

General Information

Disable this client: leave unchecked
Server mode: Peer to Peer (SSL/TLS)
Protocol: UDP on IPv4 only (you can also use TCP)
Device mode: tun – Layer 3 Tunnel Mode
Interface: WAN
Local port: leave blank;
Server host or address: The server address that you want to connect (e.g.
Server port: 1194 (use 1443 if you use TCP)
Proxy host or address: leave blank
Proxy port: leave blank
Proxy Authentication: None
Description: Any name you like (e.g. Surfshark US Seattle)

User Authentication Settings

Username: Username from Surfshark account
Password: Password from Surfshark account
Authentication Retry: unchecked

Cryptographic Settings

TLS Configuration: Check
Automatically generate a TLS Key: Uncheck
TLS Key:

-----BEGIN OpenVPN Static key V1-----
-----END OpenVPN Static key V1-----

TLS Key Usage Mode: TLS Authentication
Peer certificate authority: Surfshark_VPN
Peer Certificate Revocation list: do not define

Client certificate: webConfigurator default
Encryption Algorithm: AES-256-GCM
Enable NCP: Check
NCP Algorithms: AES-256-GCM and AES-256-CBC
Auth digest algorithm: SHA512 (512-bit)
Hardware Crypto: No hardware crypto acceleration

Tunnel Settings

IPv4 tunnel network: leave blank
IPv6 tunnel network: leave blank
IPv4 remote network(s): leave blank
IPv6 remote network(s): leave blank
Limit outgoing bandwidth: leave blank
Compression: Omit Preference (Use OpenVPN Default)
Topology: Subnet – One IP address per client in a common subnet
Type-of-service: leave unchecked
Don’t pull routes: checked
Don’t add/remove routes: checked

Ping settings

Inactive: 0
Ping method: keepalive
Interval: 10
Timeout: 60

Advanced Configuration

Custom options: paste the contents below

tun-mtu 1500;
tun-mtu-extra 32;
mssfix 1400;
reneg-sec 0;
remote-cert-tls server;

UDP FAST I/O: leave unchecked
Send/Receive Buffer: Default
Gateway creation: IPv4 only
Verbosity level: 3 (recommended)

Press Save at the bottom of the page and Apply changes at the top of the page. Navigate to Status >> OpenVPN to verify your VPN Client is working. Check Client Instance Statistics and verify your new VPN Client connection is listed and that the Status is up.

Using mssfix 1450 as recommended by Surfshark caused constant connection drops. In this post we also checked both Don’t pull routes and Don’t add/remove routes boxes and created manual firewall rules to fit our scenario with multiple LANs, VLANs, etc.

Assigning interface to the VPN client connection

Navigate to Interfaces >> Interface Assignments and Add Surfshark VPN interface.

Press on the OPT1 to the left of your assigned interface and fill in the following information:

Enable: check
Description: Surfshark VPN
MAC Address: leave blank
MTU: leave blank
MSS: leave blank

Do not change anything else. Just scroll down to the bottom and press Save and Apply Changes.

Configuring DNS

This section will assume your DNS is already configured through a previous post. The next steps are just additional setting to include the VPN client on a working DNS Resolver instance.

Navigate to Services >> DNS Resolver >> General Settings and make sure that at Outgoing Network interfaces you either select All or also append your new VPN client interface as an outgoing interface. Do not remove any other interface from this list!

Enable: must already be checked
Outgoing Network Interfaces: Surfshark VPN
Register connected OpenVPN clients in the DNS Resolver: checked

Click Save and Apply Changes.

Configuring NAT

Navigate to Firewall >> NAT -> Outbound and select Hybrid Outbound NAT rule generation. (Automatic Outbound NAT + rules below). Press Save and Apply Changes. Now we can create our rules for the new VPN client by clicking on Add (down arrow):

Edit Advanced Outbound NAT Entry
Interface: SurfsharkVPN or whatever you called it
 your LAN network (e.g.
Description: A nice name, such as NAT outbound for Surfshark US Seattle

Press Save and Apply changes.
Now click on Add (down arrow) again to create one more rule for ISAKMP IPsec VPN traffic:

Edit Advanced Outbound NAT Entry
Interface: Surfshark VPN or whatever you called it
 same LAN network from previous rule (e.g.
Destination >> Port or Range: 500
Port or Range >> Static Port: checked
Description: A nice name, such as Manually created for ISAKMP – Surfshark US Seattle

Press Save and Apply changes.

Note that if you have multiple LANs, like me, you will need to repeat this process for each one.

Configuring Firewall

Navigate to Firewall >> Rules page and click on the Interface name you created in the previous steps. Next, click on Add to create a new firewall rule that allows any traffic to go through:

Action: Pass
Address Family: IPv4 (I am not using IPv6 on my homelab yet)
Protocol: Any
Destination: Any

Press Save and Apply changes.

You can repeat the steps above for different Server locations from Surfshark.

Now that everything is done, let’s test it. Navigate to Diagnostics >> ping:

IP Protocol: IPv4
Source Address: Select the VPN Client interface
Maximum number of pings: 3

Click Ping and check the results. Should be something like

PING ( 56 data bytes
64 bytes from icmp_seq=0 ttl=120 time=1.978ms
64 bytes from icmp_seq=1 ttl=120 time=2.670ms
64 bytes from icmp_seq=2 ttl=120 time=1.940ms

--- ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 1.940/2.196/2.670/0.336 ms

Passing traffic through the VPN

At this point, your VPN connection is up and running, but not really in use by pfSense. There are a couple options in how to start using the VPN. In this post I will cover how to:

  1. Configure the VPN connection as the default gateway, so all traffic from your home goes through it
  2. Configure the VPN connection for specific IPs, so that only these ones goes through the new VPN client connection

Option 1: Using VPN connection as your default gateway

Navigate to Firewall >> Rules >> LAN and edit the default IPv4 rule, that is the rule that allows all traffic on your network. Its description will probably be something like Default allow LAN to any rule.

Scroll down to the bottom and press on Display Advanced at the Extra Options tab. Change Gateway to Surfshark VPN and click Save followed by Apply Changes.

Option 2: Configuring specific IPs to use the VPN

In order to use this approach, you need to reserve IP for the device(s) you want to route through the VPN. Navigate to Services >> DHCP Server >> LAN scroll down to DHCP Static Mappings for this Interface, click on Add and do as follows:

Static DHCP Mapping on LAN

  • MAC Address: xx:xx:xx:xx:xx:xx
    • You can find this at Status >> DHCP Leases page
  • Client identifier: The name that will show up in the DHCP lease page
    • You can use the hostname
  • IP Address: The static IP to use (e.g.
  • Hostname: The device host name
  • Description: A friendly description to identify the device

Click Save and Apply changes. Next, disconnect and reconnect the network cable of this device so that it can take the new IP. Repeat this steps for each device you want to put under the VPN.

Now that your devices have a static IP, navigate to Firewall >> Aliases >> IP and click on Add and do as follows:


  • Description: Devices which are required to go through a USA OpenVPN client connection
  • Type: Host(s)


  • IP or FQDN: <IP you want to put under the VPN> (e.g.
  • The hostname or description to help identifying the device

If you want to add more devices (hosts), click on Add Host and add the IP/FQDN + a description for each device.

When you are done, click on Save and Apply changes.

If you don’t have an alias called RFC1918 or Private_IPv4s created in previous posts, you will need to create it now. The goal for it is to help us identify what networks/IPs belong to your LAN and which belong to Internet (aka those not listed in RFC1918 or Private_IPv4s alias). Click on Add again and do as follows:

  • Properties
    • NameRFC1918 or Private_IPv4s
    • Description: All private IPv4 networks
    • Type: Networks
  • Network(s)

Press Save and Apply changes.

Lastly, we need to update the firewall rule so that it redirects clients to the VPN based on the alias we just created. The current rule must be something like “accept any connection coming from any device going to any destination and use the default gateway (your WAN connection) for them”. What we want is: If the incoming devices belong to the alias we created, use the VPN as gateway. Otherwise, use the default gateway. Note we need two rules and they must appear in this order.

Go to Firewall >> Rules >> LAN and click on copy icon of the default IPv4 rule, that is the rule that allows all traffic on your network to for from * (any) to * (any). Its description will probably be something like Default allow LAN to any rule.

A new window will open with the same settings as the rule used as base, which you need to change the following:


  • Invert match: unchecked
  • any: change it to Single host or alias
  • Source address: VPNCLIENT_USA_DEVICES (this is the first alias name)


  • Invert match: checked
  • any: change it to Single host or alias
  • Destination address: RFC1918 (this is the second alias name)

Extra Options

  • Description: Allow VPNCLIENT_USA_DEVICES to Internet rule through VPNClient_USA (assuming this is how you named your VPN interface)
  • Click on Display Advanced.

Advanced Options

  • Gateway: Select the interface you assigned to your VPN client connection

Click on Save. You probably have to move (drag and drop) the new rule before the one you copied it from. The rule that redirects traffic to the VPN must come before the default rule. Click on Save and Apply changes.

Optional: Using Surfshark’s DNS servers

As an additional step to protect your network, you can use Surfshark’s DNS server. For such, go to System >> General Setup >> DNS Server Settings and fill in:

DNS Server 1:
DNS Hostname: empty
Gateway: empty

DNS Server 2:
DNS Hostname: empty
Gateway: empty

Click Save and you are good to go. Test your anonymity by visiting and have fun!

ps: If DNSSec support is enabled on your DNS Resolver configuration, you may have a false DNS leak report. You can disable DNSSec support, do the test and re-enable later.

This is shamelessly taken from, but because his website kept going down I copy and pasted it so I can reference it here and share his lovely writeup.


stuck at cisco rommon or switch: prompt and wanted to revert a bad upgrade in ios?

I didn’t know this was a thing I wanted to do, but while upgrading a few Cisco 3650’s I accidentally threw on the wrong bin file. I pointed to the wrong bin file and rebooted. Luckily I had a console cable plugged in and ready already. I knew the previous image was good, so now that I am stuck at rommon, or a switch: prompt I was able to enter this and it booted right into the old and good ios:

boot flash:packages.conf

I don’t know why this was so hard to find, but googling for ios upgrade revert rommon, hopefully this comes up and saves you some looking!


librenms and oxidized plugin SSH issues

I was setting up LibreNMS (version 22.2.1 at time of writing) and found out that it also has a plugin called oxidized (version 0.28.0 at time of writing) that allows you to do back ups of configuration files. So I figured why not, let’s replace my dated rconfig setup. In my opinion oxidized is a bit archaic, but it seems to be based on an old tool called RANCID. So long story short, it is a bit on the YAML heavy side, it takes some manual configuration in shell. My oxidized config looks like this, for example:

# - keyboard-interactive

groups: {}
models: {}
pid: /home/oxidized/.config/oxidized/pid
  default: ssh
  debug: false
    secure: false
  default: file
    directory: /home/oxidized/.config/oxidized/configs
  default: csv
    file: /home/oxidized/.config/oxidized/router.db
    delimiter: !ruby/regexp /:/
      name: 0
      ip: 1
      model: 2
      username: 3
      password: 4
      ssh_kex: 5
      ssh_host_key: 6
      ssh_hmac: 7
      ssh_encryption: 8
      enable: 9
    gpg: false
  cisco: ios
  juniper: junos
  asa: asa

I kept getting KEX errors for my ASA when it was trying to log in:

raised Net::SSH::Exception (rescued RuntimeError) with msg "could not settle on kex algorithm"

My ASA router.db line looked like this (replacing xxxxx with actual passwords):


I knew this was a good KEX (diffie-hellman-group1-sha1), as I forced it via the ASA, and SSH worked via putty, or other switches on the network. It also worked for my cisco switches via oxidizer. For reference, my ASA is running 9.16(2)14 ASA and ASDM 7.17(1)152. I wanted to see what other options exist, so I ran show ssh:

madfw5# show ssh
Idle Timeout: 60 minutes
Version allowed: 2
Cipher encryption algorithms enabled: aes256-ctr aes256-cbc aes192-ctr aes192-cbc aes128-ctr aes128-cbc
Cipher integrity algorithms enabled: hmac-sha2-256

and my KEX checked my KEX:

madfw5#  sh run ssh
ssh stricthostkeycheck
ssh timeout 60
ssh version 2
ssh key-exchange group dh-group14-sha256

But I kept getting the error. Doing some digging, I saw oxidizer uses NET:SSH perl module, and their GIT is pretty updated, and it showed what algorithms were currently supported:

I saw ecdh-sha2-nistp256 was allowed and supported, which worked on the ASA, by tabbing out the option:

madfw5(config)# ssh key-exchange group ?

configure mode commands/options:
  curve25519-sha256   Diffie-Hellman group-31-sha256
  dh-group1-sha1      Diffie-Hellman group 2 (DEPRECATED)
  dh-group14-sha1     Diffie-Hellman group-14-sha1
  dh-group14-sha256   Diffie-Hellman group-14-sha256
  ecdh-sha2-nistp256  Diffie-Hellman group-19-sha256

Then forced it by finishing out the command in configure terminal mode:

madfw5# conf t
madfw5(config)# ssh key-exchange group ecdh-sha2-nistp256

so now it shows:

madfw5(config)# sh run ssh
ssh stricthostkeycheck
ssh timeout 60
ssh version 2
ssh key-exchange group ecdh-sha2-nistp256

good to go, now the ASA is backing up and running oxidizer, huzzah! I am still learning what else oxidizer can do. My next step is to enable git, so it will automatically upload new versions of the configuration files it backs up.

Computer Hardware Gaming General Computing

Steelseries GG sucks – get the last version of engine

As most people seem to be aware, the Steelseries GG software sucks, and those of us who just needed Engine, are forced to upgrade. So I dug around for the last version of Engine only, none of the GG bloat and this was it: SteelSeriesEngine3.20.0Setup.exe

This is the direct link, while it works to steelseries’ website:

If they pull it, you can download here:

If you download it from steelseries or, these are the hashes:

MD5: E0828A3D321418513CEC2B273CF33607
SHA1: 5B1E48E51C02C685B236199C1A71F07E0396780E
SHA256: 7527895C81CB5C42CE51F5463FA7FAB79766952E1F8F34B5E6F1268CD2681EA0
SHA512: 534C496B597DF513863CC004BF4F413E3CDE6830748D2EF03897C7049075E381DADFCBD968B5A298D1F845DF9D6658555133A469D0D40E3D46F768920B15DC0F

If you were forced to upgrade to GG, make sure to uninstall and then install this version of Engine. This is currently working fine for my Windows 10 Pro 21H2 patched PC.


How to Install or Update PHP to 7.4 with ioncube on CentOS 7

I needed to upgrade my WHMCS host server to utilize PHP 7.4. I am coming from PHP7.3 and found it pretty straight forward of an upgrade. Also, 7.3 is end of life and only on security updates right now.

Step 1: First thing I would do is back up your server you are updating. If you can, do a snapshot.

Step 2: Update your server

yum install epel-release yum-utils -y
yum update -y

Step 3: Check the version of the PHP that is currently running.

php -v

Step 4: List all the PHP packages you have installed into a file, so you can refer to it to install all those packages in PHP 7.4

rpm -qa | grep php > /home/php_rpm_originals.txt

Step 5: Remove all the installed PHP packages

yum remove "php*" -y

Step 6: Install the updated Remi repository if it is not already installed.

yum install -y

Step 7: Enable the PHP 7.4 repository, install the core and required PHP packages. You can also refer to step 4 for the previously required packages.

yum --enablerepo=remi-php74 install php php-pdo php-fpm php-gd php-mbstring php-mysql php-curl php-mcrypt php-json php-bcmath php-tidy php-tcpdf php-xmlrpc -y

Step 8: Check the updated PHP version.

php -v

PHP 7.4.27 (cli) (built: Dec 14 2021 17:17:06) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
Step 9: Restart Apache to use the newly installed PHP 7.4

systemctl restart httpd

Step 10: Check what architecture you are running – in my case it was 64bit

uname -a

Linux 3.10.0-1160.53.1.el7.x86_64 #1 SMP Fri Jan 14 13:59:45 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
Step 11: Download your version of the ioncube loaders

——————– For 64-bit System ——————–

cd /tmp


——————– For 32-bit System ——————–

cd /tmp


Step 12: unzip and move into the directory

tar -zxvf ioncube_loaders_lin_x86*
cd ioncube/
ls -ltrh

Step 13: Obtain your PHP location for modules.

php -i | grep extension_dir

extension_dir => /usr/lib64/php/modules => /usr/lib64/php/modules
Step 14: Copy the files you need, in our case it was 7.4.

cp /usr/lib64/php/modules

Step 15: Modify your php.ini file to include ioncube. I added mine at the top right below [PHP]. The line you want to add is:

zend_extension = /usr/lib64/php/modules/

vi /etc/php.ini

Once done editing, hit ESC and then type in :X and hit ENTER

Step 16: Restart apache or nginx/php-fpm servers
——————– Start Apache Web Server ——————–

systemctl restart httpd

——————– Start Nginx + PHP-FPM Server —————-

systemctl restart nginx
systemctl restart php-fpm

Verify install:

php -v

PHP 7.4.27 (cli) (built: Dec 14 2021 17:17:06) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with the ionCube PHP Loader + ionCube24 v11.0.1, Copyright (c) 2002-2022, by ionCube Ltd


EVGA 10% off discount code – associates code

UPDATE: This program has been discontinued by EVGA, sorry all! I don’t think the discount works any more.

Warning, this is purely an ad post for my associates code. Good news is it can get you up to 10% off any hardware at and it’s store. When you go to check out, just punch in this associates code during checkout: I6AM2ZPP7846RU5

That is it! Should save you up to 10%. Otherwise here’s the total savings per product type:

Product Type

Capture Device



Gaming Keyboards

Gaming Mice



Power Supplies

I appreciate you for using my code!


Having issues upgrading APC 9640 Network Manager card 3

Of course this is still a thing. Even though when you log into the management page, you can click firmware upgrade, it fails to upload throwing:

Trying numerous browsers, the upgrade always fails via the browser for my AP9640/41/42 APC Network Management Cards. So just like I experienced before with the AP9617/18/19 cards, you have to drop into FTP to successfully upgrade. The process is one of a few options pulled from APC’s website:

Before upgrading, make sure you pulled down the Bin file, which as of this posting (November 2021) was: apc_hw21_su_1-5-1-1.nmc3 You can find it by downloading the latest file from apc’s website and running the exe file. Then dive into the directories to C:\apc_hw21_su_1-5-1-1\Bins . If for some reason this file doesn’t exist anymore, you can pull it down from here:

SHA256 HASH: 2D68A703308F222E453BA525816B544635DE03D451D406BB52A856CD0920F1A9

This is what you have to do to upgrade:

Manual (via FTP) – Network Management Card 3

1. To perform a firmware flash with this method the Management Card must have been previously configured with a System IP, Subnet Mask, and Default Gateway and attached to the network. In addition, FTP Server must be enabled.

2. Open an MS-DOS command prompt window on a PC which is connected to the network. Change to the directory which contains the firmware upgrade files. Some example commands which need to be entered are shown in bold in order to change directoriesPlease note, this is just an example. You may need to enter a full path to a directory which requires different syntax.
C:\>cd apc

3. Open an FTP client session.

C:\apc>ftp ( being the IP address of the web card)

4. Log in as Administrator (apc is the default user name and password).

5. Upgrade the firmware:

ftp>bin(specifies binary transfer mode which is required)
ftp> hash (optional – enables hash mark printing as a way of monitoring file transfer progress)
ftp>put apc_hw21_SU_XXXX.nmc3(XXX being the version number downloaded)
6. When FTP confirms the transfer, type quit to close the session.

7. Wait about 20 – 30 seconds.

That is it, APC Network Manager will reboot and you’ll be upgraded.

General Computing

SABnzbd 3.4.1 Windows – Untrusted certificate

Interesting issue that popped up right after upgrading. My SABNZB started throwing cert errors on all of my usenet servers. Too much of a coincidence, and it looks like there was an expired cert. The error SabNZB kept spitting out was:

Server blablabla uses an untrusted certificate [Certificate not valid. This is most probably a server issue.]

This is a shameless pull from /u/MonstaGraphics on reddit who posted the fix.

  1. Press the Windows/Start button, Type MMC and press enter.
  2. Press Ctrl+M.
  3. Double-click on “Certificates” in the left list, then click the “Finish” button. Click “OK” to close the window.
  4. Expand “Certificates – Current User”, then expand “Intermediate Certificate Authorities”, then click “Certificates”.
  5. Find the expired certificate titled “R3”, and delete it. Close the Window, you don’t need to save anything once prompted.