💾 Archived View for vigrey.com › privacy captured on 2023-04-26 at 12:54:36. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2023-03-20)

➡️ Next capture (2023-05-24)

-=-=-=-=-=-=-

Privacy Policy

Created 2023-02-17 (Last Updated 2023-03-07)

IMPORTANT: THIS IS NOT A LEGAL DOCUMENT. I AM NOT MAKING PROMISES. I'M JUST VOLUNTARILY STATING WHAT I'M DOING ON THIS HTTP/GEMINI/GOPHER SERVER IN GOOD FAITH FOR THE SAKE OF TRANSPARENCY.

TL;DR

IP Retention Policy

Every request over the IP (Internet Protocol) contains the source IP address of the request. That's part of how the Internet is able to work in the first place. This means that all TCP/IP requests to the HTTP, Gemini, and Gopher version of this site along with all requests to my Finger server will include your IP address.

I do not store any of those IP addresses and do not physically look at the IP addresses. If you were to ask me to find a single IP address that has visited the site, I would only be able to point you to IP addresses that I have control of, because I already know those IP addresses and know that I visit my own site.

Nginx Logging

While my HTTP/Gemini/Gopher/Finger server is written from scratch, I use Nginx in a proxy layer so the site server can run on localhost ports as a non-root user. Nginx also handles TLS for the HTTP part of the site's server.

I set the "access_log" directive to "off" in the http section of my nginx.conf file. The "access_log" directive does not apply to stream servers (which I am using to proxy gemini and gopher requests from the outside internet to the localhost ports I am running them on) at the time of writing this. The "access_log" directive currently only works in the http section of nginx.conf with the version of Nginx I am using, so placing it in the stream server sections won't do anything at the moment as the stream server sections aren't able to collect access log data. The stream server sections are used for Gemini, Gopher, and Finger server support currently. This all means that the access log data is not stored on the harddrive.

I set the "error_log" path to "/dev/null" in my nginx.conf file. I also set a symbolic link from "/dev/null" to "/var/log/nginx/error.log" to prevent Nginx from writing any potential error data there. This means I am unable to see the error log data and the error log data is not stored on the harddrive.

Resource Request Retention Policy

Currently I do not track or store how many times a page or resource was requested. At some point in the future, I may want to add a "hit counter" to show how many views a particular page has gotten, but I haven't decided one way or another on that yet. If I do decide to track how many requests happen to pages, I will be sure to update this page. This page and others would have a hit counter on it as well, at least for the HTTP version of the site.

HTTP Header Retention Policy

Every HTTP request includes some information, including whether the request method was a "GET", "POST", "DELETE", etc... request. This also includes data about the browser called the "User-Agent". For instance, the User-Agent of Chrome version 110 on Windows 10 64-bit edition is "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36".

I do not track, store, or look at the User-Agent of requests.

Javascript Usage (HTTP Site)

The HTTP version of site uses some Javascript to allow for CSS theme switching. The Javascript is completely "client-side" and does not "phone home" in any capacity. My server does not know if or how you are using the Javascript.

The HTTP and CSS of this site will still function with Javascript turned off.

<script> Section 1 Explained

<script>
  var themeName = localStorage.getItem("theme")
  if (themeName != null) {
    document.body.classList.add(themeName)
  }
  var themeTerminal = localStorage.getItem("theme-terminal")
  if (themeTerminal != null) {
    document.body.classList.add(themeTerminal)
  }
</script>

In essense, this script figures out if a particular theme has been previously saved by the user, and if so, switches to that theme. This lets the theme be consistent among browsing sessions if the tab or browser is closed.

<script> Section 2 Explained

<script>
  var themeDarkLightButton = document.createElement("button");
  themeDarkLightButton.id = "theme_dark_light";
  themeDarkLightButton.alt = "Toggle dark/light mode"
  themeDarkLightButton.title = "Toggle dark/light mode"
  themeDarkLightButton.onclick = function (e) {
    if (getComputedStyle(e.target).backgroundImage.includes("light")) {
      document.body.classList.add("light");
      document.body.classList.remove("dark");
      localStorage.setItem("theme", "light")
    } else if (getComputedStyle(e.target).backgroundImage.includes("dark")) {
      document.body.classList.add("dark");
      document.body.classList.remove("light");
      localStorage.setItem("theme", "dark")
    }
  }
  var themeTerminalButton = document.createElement("button");
  themeTerminalButton.id = "theme_terminal";
  themeTerminalButton.alt = "Toggle terminal layout mode"
  themeTerminalButton.title = themeTerminalButton.alt;
  themeTerminalButton.onclick = function (e) {
    if (document.body.classList.contains("terminal")) {
      document.body.classList.remove("terminal");
      localStorage.removeItem("theme-terminal");
    } else {
      document.body.classList.add("terminal");
      localStorage.setItem("theme-terminal", "terminal");
    }
  }
  document.getElementById("top_bar").appendChild(themeTerminalButton)
  document.getElementById("top_bar").appendChild(themeDarkLightButton)
</script>

There are more lines of Javascript in this bit.

In essence, this script creates 2 buttons, one that handles toggling dark and light mode and the other that handles toggling the terminal layout mode. After both buttons are created, they are added to the top of the web page so they can be clicked on.