Compare commits
No commits in common. "94b940d1865b2260a65ae4f0f5c950b3a821e272" and "9babb62afc777b8d33268cf00afadcf7e4585f7a" have entirely different histories.
94b940d186
...
9babb62afc
@ -1,29 +0,0 @@
|
|||||||
name: Build and publish the docker image
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: ["custom"]
|
|
||||||
|
|
||||||
env:
|
|
||||||
REGISTRY: git.ngn.tf
|
|
||||||
IMAGE: ${{gitea.repository}}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: "https://github.com/actions/checkout@v4"
|
|
||||||
|
|
||||||
- name: Login to container repo
|
|
||||||
uses: "https://github.com/docker/login-action@v1"
|
|
||||||
with:
|
|
||||||
registry: ${{env.REGISTRY}}
|
|
||||||
username: ${{gitea.actor}}
|
|
||||||
password: ${{secrets.GITEA_TOKEN}}
|
|
||||||
|
|
||||||
- name: Build image
|
|
||||||
run: |
|
|
||||||
docker build . --tag ${{env.REGISTRY}}/${{env.IMAGE}}:latest --tag ${{env.REGISTRY}}/${{env.IMAGE}}:${GITEA_REF##*/}
|
|
||||||
docker push ${{env.REGISTRY}}/${{env.IMAGE}}:${GITEA_REF##*/}
|
|
||||||
docker push ${{env.REGISTRY}}/${{env.IMAGE}}:latest
|
|
33
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
33
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
name: Bug report
|
||||||
|
about: 'Create a report to help us improve'
|
||||||
|
title: ''
|
||||||
|
labels: 'bug'
|
||||||
|
assignees: ''
|
||||||
|
---
|
||||||
|
|
||||||
|
Please make sure you're on the latest version before submitting.
|
||||||
|
|
||||||
|
# What's Happening?
|
||||||
|
|
||||||
|
<!-- Describe here -->
|
||||||
|
|
||||||
|
## How to reproduce:
|
||||||
|
|
||||||
|
<!-- Describe here -->
|
||||||
|
|
||||||
|
## Affected Platforms:
|
||||||
|
|
||||||
|
- [ ] macOS
|
||||||
|
- [ ] Windows
|
||||||
|
- [ ] Linux (Specify)
|
||||||
|
- [ ] iOS
|
||||||
|
- [ ] Android
|
||||||
|
|
||||||
|
Version:
|
||||||
|
|
||||||
|
## Browser:
|
||||||
|
|
||||||
|
- [ ] Chromium-based (ex: Brave or Chrome)
|
||||||
|
- [ ] Webkit-based (ex: Safari)
|
||||||
|
- [ ] Gecko-based (ex: Firefox)
|
15
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
15
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
name: Feature Request
|
||||||
|
about: 'Suggest a specific feature or enhancement'
|
||||||
|
title: ''
|
||||||
|
labels: 'enhancement'
|
||||||
|
assignees: ''
|
||||||
|
---
|
||||||
|
|
||||||
|
# What does the feature entail?
|
||||||
|
|
||||||
|
<!-- Describe here -->
|
||||||
|
|
||||||
|
# Why is this feature important?
|
||||||
|
|
||||||
|
<!-- Describe here -->
|
52
.github/workflows/docker-image.yml
vendored
Normal file
52
.github/workflows/docker-image.yml
vendored
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
name: Create and publish a Docker image
|
||||||
|
|
||||||
|
# Configures this workflow to run every time a change is pushed to the branch called `release`.
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: ['release']
|
||||||
|
|
||||||
|
# Defines two custom environment variables for the workflow. These are used for the Container registry domain, and a name for the Docker image that this workflow builds.
|
||||||
|
env:
|
||||||
|
REGISTRY: ghcr.io
|
||||||
|
IMAGE_NAME: ${{ github.repository }}
|
||||||
|
|
||||||
|
# There is a single job in this workflow. It's configured to run on the latest available version of Ubuntu.
|
||||||
|
jobs:
|
||||||
|
build-and-push-image:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
# Sets the permissions granted to the `GITHUB_TOKEN` for the actions in this job.
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
packages: write
|
||||||
|
#
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v3
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
# Uses the `docker/login-action` action to log in to the Container registry registry using the account and password that will publish the packages. Once published, the packages are scoped to the account defined here.
|
||||||
|
- name: Log in to the Container registry
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: ${{ env.REGISTRY }}
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
# This step uses [docker/metadata-action](https://github.com/docker/metadata-action#about) to extract tags and labels that will be applied to the specified image. The `id` "meta" allows the output of this step to be referenced in a subsequent step. The `images` value provides the base name for the tags and labels.
|
||||||
|
- name: Extract metadata (tags, labels) for Docker
|
||||||
|
id: meta
|
||||||
|
uses: docker/metadata-action@v5
|
||||||
|
with:
|
||||||
|
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||||
|
# This step uses the `docker/build-push-action` action to build the image, based on your repository's `Dockerfile`. If the build succeeds, it pushes the image to GitHub Packages.
|
||||||
|
# It uses the `context` parameter to define the build's context as the set of files located in the specified path. For more information, see "[Usage](https://github.com/docker/build-push-action#usage)" in the README of the `docker/build-push-action` repository.
|
||||||
|
# It uses the `tags` and `labels` parameters to tag and label the image with the output from the "meta" step.
|
||||||
|
- name: Build and push Docker image
|
||||||
|
uses: docker/build-push-action@v6
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
push: true
|
||||||
|
platforms: linux/amd64,linux/arm64
|
||||||
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
|
labels: ${{ steps.meta.outputs.labels }}
|
19
Dockerfile
19
Dockerfile
@ -1,4 +1,4 @@
|
|||||||
FROM golang:1.23.4-alpine3.19 AS build
|
FROM golang:1.22.1-alpine3.19 AS build
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
@ -9,16 +9,23 @@ RUN go mod download
|
|||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
ENV CGO_ENABLED=0 GOOS=linux GOARCH=amd64
|
# Architecture and OS are set dynamically (by BuildKit)
|
||||||
RUN go build -o anonymousoverflow
|
ARG TARGETOS
|
||||||
|
ARG TARGETARCH
|
||||||
|
ENV CGO_ENABLED=0 GOOS=$TARGETOS GOARCH=$TARGETARCH
|
||||||
|
|
||||||
|
RUN go build -o anonymousoverflow && go build -o healthcheck ./src/healthcheck
|
||||||
|
|
||||||
FROM scratch
|
FROM scratch
|
||||||
|
|
||||||
COPY --from=build /app/anonymousoverflow /anonymousoverflow
|
COPY --from=build /app/anonymousoverflow /anonymousoverflow
|
||||||
COPY --from=build /etc/ssl/certs /etc/ssl/certs
|
COPY --from=build /app/healthcheck /healthcheck
|
||||||
|
|
||||||
COPY templates /templates
|
COPY templates /templates
|
||||||
COPY public /public
|
COPY public /public
|
||||||
|
COPY --from=build /etc/ssl/certs /etc/ssl/certs
|
||||||
|
|
||||||
|
HEALTHCHECK --interval=60s --timeout=5s --start-period=2s --retries=3 CMD [ "/healthcheck","http://localhost:8080/healthz" ]
|
||||||
|
|
||||||
EXPOSE 8080
|
EXPOSE 8080
|
||||||
|
|
||||||
CMD ["/anonymousoverflow"]
|
CMD ["/anonymousoverflow"]
|
95
README.md
95
README.md
@ -1,2 +1,93 @@
|
|||||||
# [ngn.tf] | AnonymousOverflow
|
# AnonymousOverflow
|
||||||
A fork of the [AnonymousOverflow](https://github.com/httpjamesm/AnonymousOverflow) project, with my personal changes.
|
|
||||||
|
AnonymousOverflow allows you to view StackOverflow threads without the cluttered interface and exposing your IP address, browsing habits and other browser fingerprint data to StackOverflow.
|
||||||
|
|
||||||
|
This project is super lightweight by design. The UI is simple and the frontend is served as an SSR HTML requiring no JavaScript.
|
||||||
|
|
||||||
|
## Screenshots
|
||||||
|
|
||||||
|
![Home](./docs/screenshots/home_dark.webp)
|
||||||
|
|
||||||
|
![Question](./docs/screenshots/question_dark.webp)
|
||||||
|
|
||||||
|
![Answer](./docs/screenshots/answers_light.webp)
|
||||||
|
|
||||||
|
## Instances
|
||||||
|
|
||||||
|
Visit the [AnonymousOverflow Hub](https://aohub.httpjames.space) for a list of instances.
|
||||||
|
|
||||||
|
## Why use AnonymousOverflow over StackOverflow?
|
||||||
|
|
||||||
|
- StackOverflow collects a lot of information
|
||||||
|
|
||||||
|
While it's understandable that StackOverflow collects a lot of technical data for product development, debugging and to serve the best experience to its users, not everyone wants their
|
||||||
|
|
||||||
|
> internet protocol (IP) address, [...] browser type and version, time zone setting and location, browser plug-in types and versions, operating system, and platform [...] data
|
||||||
|
|
||||||
|
to be collected and stored.
|
||||||
|
|
||||||
|
- StackOverflow shares your information with third-parties
|
||||||
|
|
||||||
|
StackOverflow does not sell your information, but it does share it with third-parties, including conglomerates.
|
||||||
|
|
||||||
|
> We also partner with other third parties, such as Google Ads and Microsoft Bing, to serve advertising content and manage advertising campaigns. When we use Google Ads or Microsoft Bing Customer Match for advertising campaigns, your personal data will be protected using hashed codes.
|
||||||
|
> Google users can control the ads that they see on Google services, including Customer Match ads, in their Google Ads Settings.
|
||||||
|
|
||||||
|
Their main website also [contains trackers from Alphabet](https://themarkup.org/blacklight?url=stackoverflow.com).
|
||||||
|
|
||||||
|
- Reduced clutter
|
||||||
|
|
||||||
|
StackOverflow has a cluttered UI that might distract you from the content you're trying to find. AnonymousOverflow simplifies the interface to make it easier to read and navigate.
|
||||||
|
|
||||||
|
## How to make Stack Overflow links take you to AnonymousOverflow automatically
|
||||||
|
|
||||||
|
The open-source [Libredirect](https://github.com/libredirect/libredirect) extension for Firefox and Chromium-based desktop browsers has support for redirections to AnonymousOverflow. To enable this, simply open the extension settings, click on Stack Overflow, then toggle "Enable". That's it, now Stack Overflow links will go to AnonymousOverflow.
|
||||||
|
|
||||||
|
The open-source [Proxy_Redirect](https://openuserjs.org/scripts/sjehuda/Proxy_Redirect) user.js script for web browsers with userscript support. You can install it with a web extension like [Greasemonkey](https://greasespot.net/), [Tampermonkey](https://tampermonkey.net/) or [Violentmonkey](https://violentmonkey.github.io/). Once installed, Stack Overflow links will go to AnonymousOverflow.
|
||||||
|
|
||||||
|
## How it works
|
||||||
|
|
||||||
|
AnonymousOverflow uses the existing question endpoint that StackOverflow uses. Simply replace the domain name in the URL with the domain name of the AnonymousOverflow instance you're using and you'll be able to view the question anonymously.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```
|
||||||
|
https://stackoverflow.com/questions/43743250/using-libsodium-xchacha20-poly1305-for-large-files
|
||||||
|
```
|
||||||
|
|
||||||
|
becomes
|
||||||
|
|
||||||
|
```
|
||||||
|
${instanceURL}/questions/43743250/using-libsodium-xchacha20-poly1305-for-large-files
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bookmark Conversion Tool
|
||||||
|
|
||||||
|
You can easily convert StackOverflow URLs to AnonymousOverflow ones by adding the following code as a bookmark in your web browser:
|
||||||
|
|
||||||
|
```js
|
||||||
|
javascript: (function () {
|
||||||
|
window.location = window.location
|
||||||
|
.toString()
|
||||||
|
.replace(/stackoverflow\.com/, 'code.whatever.social')
|
||||||
|
})()
|
||||||
|
```
|
||||||
|
|
||||||
|
Replace `code.whatever.social` with the domain name of the instance you're using if needed.
|
||||||
|
|
||||||
|
You can run this bookmarklet on any StackOverflow page to view it anonymously.
|
||||||
|
|
||||||
|
Thanks to [Manav from ente.io](https://ente.io/about) for the handy tool.
|
||||||
|
|
||||||
|
## How to deploy
|
||||||
|
|
||||||
|
Read the [wiki page](https://github.com/httpjamesm/AnonymousOverflow/wiki/Deployment).
|
||||||
|
|
||||||
|
## Attribution
|
||||||
|
|
||||||
|
- Icons provided by [heroicons](https://heroicons.com) under the [MIT License](https://choosealicense.com/licenses/mit/)
|
||||||
|
- [Gin](https://github.com/gin-gonic/gin) under the [MIT License](https://github.com/gin-gonic/gin/blob/master/LICENSE)
|
||||||
|
- [goquery](https://github.com/PuerkitoBio/goquery) under the [BSD 3-Clause License](https://github.com/PuerkitoBio/goquery/blob/master/LICENSE)
|
||||||
|
- [resty](https://github.com/go-resty/resty) under the [MIT License](https://github.com/go-resty/resty/blob/master/LICENSE)
|
||||||
|
- [Chroma](https://github.com/alecthomas/chroma) under the [MIT License](https://github.com/alecthomas/chroma/blob/master/COPYING)
|
||||||
|
- [KaTeX](https://github.com/KaTeX/KaTeX) under the [MIT License](https://github.com/KaTeX/KaTeX/blob/main/LICENSE)
|
||||||
|
BIN
docs/screenshots/answers_light.webp
Normal file
BIN
docs/screenshots/answers_light.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 50 KiB |
BIN
docs/screenshots/home_dark.webp
Normal file
BIN
docs/screenshots/home_dark.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 31 KiB |
BIN
docs/screenshots/question_dark.webp
Normal file
BIN
docs/screenshots/question_dark.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 59 KiB |
212
instances.json
Normal file
212
instances.json
Normal file
@ -0,0 +1,212 @@
|
|||||||
|
{
|
||||||
|
"clearnet": [
|
||||||
|
{
|
||||||
|
"url": "https://code.whatever.social",
|
||||||
|
"regions": ["Germany"],
|
||||||
|
"operators": ["https://whatever.social", "https://httpjames.space"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://ao.vern.cc",
|
||||||
|
"regions": ["United States"],
|
||||||
|
"operators": ["https://vern.cc"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://overflow.smnz.de",
|
||||||
|
"regions": ["Germany"],
|
||||||
|
"operators": ["https://smnz.de"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://overflow.lunar.icu",
|
||||||
|
"regions": ["Germany"],
|
||||||
|
"operators": ["https://lunar.icu/"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://overflow.adminforge.de/",
|
||||||
|
"regions": ["Germany"],
|
||||||
|
"operators": ["https://adminforge.de/"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://overflow.hostux.net/",
|
||||||
|
"regions": ["France"],
|
||||||
|
"operators": ["https://hostux.net/"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://overflow.projectsegfau.lt/",
|
||||||
|
"regions": ["United States", "Germany", "India"],
|
||||||
|
"operators": ["https://projectsegfau.lt/"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://code.xbdm.fun",
|
||||||
|
"regions": ["Germany"],
|
||||||
|
"operators": ["https://xbdm.fun"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://overflow.fascinated.cc/",
|
||||||
|
"regions": ["Germany"],
|
||||||
|
"operators": ["https://fascinated.cc/"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://ao.bloat.cat",
|
||||||
|
"regions": ["Romania"],
|
||||||
|
"operators": ["https://bloat.cat"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://anonoverflow.frontendfriendly.xyz/",
|
||||||
|
"regions": ["United States"],
|
||||||
|
"operators": ["https://frontendfriendly.xyz/"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://ao.owo.si/",
|
||||||
|
"regions": ["Germany"],
|
||||||
|
"operators": ["https://owo.si/"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://overflow.datura.network/",
|
||||||
|
"regions": ["Germany"],
|
||||||
|
"operators": ["https://datura.network"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://overflow.freedit.eu",
|
||||||
|
"regions": ["United States"],
|
||||||
|
"operators": ["https://freedit.eu"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://ao.rootdo.com",
|
||||||
|
"regions": ["Germany"],
|
||||||
|
"operators": ["https://rootdo.com"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://anonoverflow.nirn.quest",
|
||||||
|
"regions": ["Canada"],
|
||||||
|
"operators": ["https://nirn.quest", "https://hyperreal.coffee"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://overflow.sudovanilla.com",
|
||||||
|
"regions": ["United States"],
|
||||||
|
"operators": ["https://sudovanilla.com"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://anonymousoverflow.privacyfucking.rocks/",
|
||||||
|
"regions": ["Germany"],
|
||||||
|
"operators": ["https://privacyfucking.rocks"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://exchange.seitan-ayoub.lol",
|
||||||
|
"regions": ["Germany"],
|
||||||
|
"operators": ["https://seitan-ayoub.lol"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://overflow.r4fo.com",
|
||||||
|
"regions": ["The Netherlands"],
|
||||||
|
"operators": ["https://r4fo.com"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://overflow.ducks.party",
|
||||||
|
"regions": ["The Netherlands"],
|
||||||
|
"operators": ["https://ducks.party"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://ao.ngn.tf",
|
||||||
|
"regions": ["Turkey"],
|
||||||
|
"operators": ["https://ngn.tf"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://overflow.snine.nl",
|
||||||
|
"regions": ["The Netherlands"],
|
||||||
|
"operators": ["https://snine.nl"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://anonymousoverflow.privacyredirect.com",
|
||||||
|
"regions": ["Finland"],
|
||||||
|
"operators": ["https://privacyredirect.com/"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://soflow.nerdvpn.de",
|
||||||
|
"regions": ["Ukraine"],
|
||||||
|
"operators": ["https://nerdvpn.de"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://overflow.einfachzocken.eu/",
|
||||||
|
"regions": ["Germany"],
|
||||||
|
"operators": ["https://einfachzocken.eu"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://overflow.seasi.dev/",
|
||||||
|
"regions": ["Singapore"],
|
||||||
|
"operators": ["https://seasi.dev/"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://anonymousoverflow.catsarch.com",
|
||||||
|
"regions": ["United States"],
|
||||||
|
"operators": ["https://catsarch.com"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://overflow.darkness.services/",
|
||||||
|
"regions": ["United States"],
|
||||||
|
"operators": ["https://zzz.darkness.services"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://anonflow.aketawi.space/",
|
||||||
|
"regions": ["Russia"],
|
||||||
|
"operators": ["https://www.aketawi.space/"]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
"onion": [
|
||||||
|
{
|
||||||
|
"url": "http://ao.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion",
|
||||||
|
"regions": ["United States"],
|
||||||
|
"operators": ["https://vern.cc"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "http://overflow.pjsfkvpxlinjamtawaksbnnaqs2fc2mtvmozrzckxh7f3kis6yea25ad.onion/",
|
||||||
|
"regions": ["Germany"],
|
||||||
|
"operators": ["https://projectsegfau.lt/"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "http://overflow.daturab6drmkhyeia4ch5gvfc2f3wgo6bhjrv3pz6n7kxmvoznlkq4yd.onion/",
|
||||||
|
"regions": ["Germany"],
|
||||||
|
"operators": ["https://datura.network"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "http://ao.pk47sgwhncn5cgidm7bofngmh7lc7ukjdpk5bjwfemmyp27ovl25ikyd.onion/",
|
||||||
|
"regions": ["Germany"],
|
||||||
|
"operators": ["https://owo.si/"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "http://overflow.r4focoma7gu2zdwwcjjad47ysxt634lg73sxmdbkdozanwqslho5ohyd.onion",
|
||||||
|
"regions": ["The Netherlands"],
|
||||||
|
"operators": ["https://r4fo.com"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "http://anonymousoverflow.catsarchywsyuss6jdxlypsw5dc7owd5u5tr6bujxb7o6xw2hipqehyd.onion/",
|
||||||
|
"regions": ["United States"],
|
||||||
|
"operators": ["https://catsarch.com"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "http://overflow.darknessrdor43qkl2ngwitj72zdavfz2cead4t5ed72bybgauww5lyd.onion/",
|
||||||
|
"regions": ["United States"],
|
||||||
|
"operators": [
|
||||||
|
"http://darknessrdor43qkl2ngwitj72zdavfz2cead4t5ed72bybgauww5lyd.onion/"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
"i2p": [
|
||||||
|
{
|
||||||
|
"url": "http://vernmzgraj6aaoafmehupvtkkynpaa67rxcdj2kinwiy6konn6rq.b32.i2p",
|
||||||
|
"regions": ["United States"],
|
||||||
|
"operators": ["https://vern.cc"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "http://ay7akchgdh76r4lc62hzd52z6xqoh67loototsetvqxo5o7ngo5q.b32.i2p/",
|
||||||
|
"regions": ["Germany"],
|
||||||
|
"operators": ["https://owo.si/"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "http://ocp7zhdsbl2mjabv5ma5jvbzg2dqzglieayjvyj4j2r7qvsqlboa.b32.i2p/",
|
||||||
|
"regions": ["United States"],
|
||||||
|
"operators": ["https://catsarch.com"]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -1,6 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 49 48">
|
|
||||||
<circle cx="14.5" cy="33.5" r="14.5" fill="#8cffc0"/>
|
|
||||||
<circle cx="14.5" cy="14.5" r="14.5" fill="#fff"/>
|
|
||||||
<circle cx="34.5" cy="14.5" r="14.5" fill="#8cffc0"/>
|
|
||||||
<circle cx="34.5" cy="33.5" r="14.5" fill="#fff"/>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 294 B |
Binary file not shown.
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 9.3 KiB |
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
:root,
|
:root,
|
||||||
[data-theme="dark"] {
|
[data-theme="dark"] {
|
||||||
--main-bg: #000;
|
--main-bg: #1b1f26;
|
||||||
--text-color: #fff;
|
--text-color: #fff;
|
||||||
--muted-text-color: #b3b3b3;
|
--muted-text-color: #b3b3b3;
|
||||||
--input-bg: #2b303b;
|
--input-bg: #2b303b;
|
||||||
@ -41,7 +41,6 @@
|
|||||||
|
|
||||||
a {
|
a {
|
||||||
color: var(--link-color);
|
color: var(--link-color);
|
||||||
word-wrap: break-word;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
html {
|
html {
|
||||||
|
20
src/healthcheck/healthcheck.go
Normal file
20
src/healthcheck/healthcheck.go
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"net/http"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
if len(os.Args) < 2 {
|
||||||
|
log.Fatal("Expected URL as command-line argument")
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
url := os.Args[1]
|
||||||
|
fmt.Println(url)
|
||||||
|
if _, err := http.Get(url); err != nil {
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
}
|
@ -6,7 +6,6 @@
|
|||||||
<link rel="stylesheet" href="/static/home.css" />
|
<link rel="stylesheet" href="/static/home.css" />
|
||||||
<meta http-equiv="Content-Security-Policy"
|
<meta http-equiv="Content-Security-Policy"
|
||||||
content="default-src 'none'; style-src 'self'; script-src 'none'; img-src 'self';" />
|
content="default-src 'none'; style-src 'self'; script-src 'none'; img-src 'self';" />
|
||||||
<link rel="icon" href="/static/codecircles.svg" />
|
|
||||||
<link rel="icon" href="/static/codecircles.webp" />
|
<link rel="icon" href="/static/codecircles.webp" />
|
||||||
<meta name="description" content="View StackOverflow threads in privacy and without the clutter." />
|
<meta name="description" content="View StackOverflow threads in privacy and without the clutter." />
|
||||||
{{ template "sharedHead.html" }}
|
{{ template "sharedHead.html" }}
|
||||||
@ -15,7 +14,7 @@
|
|||||||
<body>
|
<body>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<img class="logo" src="/static/codecircles.svg" alt="" />
|
<img class="logo" src="/static/codecircles.webp" alt="" />
|
||||||
<h1>Anonymous­Overflow</h1>
|
<h1>Anonymous­Overflow</h1>
|
||||||
</div>
|
</div>
|
||||||
<h2>Get programming help without compromising your privacy.</h2>
|
<h2>Get programming help without compromising your privacy.</h2>
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
<body>
|
<body>
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<a href="/" class="logo-link">
|
<a href="/" class="logo-link">
|
||||||
<img class="logo" src="/static/codecircles.svg" alt="AnonymousOverflow home" />
|
<img class="logo" src="/static/codecircles.webp" alt="AnonymousOverflow home" />
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="card">
|
<div class="card">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user