Compare commits

..

2 Commits

Author SHA1 Message Date
httpjamesm 72c2888541 fix: set logo alt on question.html to "AnonymousOverflow home" 2024-05-05 15:22:24 -04:00
httpjamesm 371d149a5b fix: remove alt from homepage logo, add "logo" alt to question header 2024-04-25 05:14:25 +00:00
10 changed files with 78 additions and 273 deletions
+14 -12
View File
@@ -2,32 +2,34 @@
name: Bug report
about: 'Create a report to help us improve'
title: ''
labels: 'bug'
labels: ''
assignees: ''
---
Please make sure you're on the latest version before submitting.
# What's Happening?
# What's Happening?
<!-- Describe here -->
## How to reproduce:
<!-- Describe here -->
## Affected Platforms:
- [ ] macOS
- [ ] Windows
- [ ] Linux (Specify)
- [ ] iOS
- [ ] Android
- [ ] macOS
- [ ] Windows
- [ ] Linux (Specify)
- [ ] iOS
- [ ] Android
Version:
Version:
## Browser:
- [ ] Chromium-based (ex: Brave or Chrome)
- [ ] Webkit-based (ex: Safari)
- [ ] Gecko-based (ex: Firefox)
- [ ] Chromium-based (ex: Brave or Chrome)
- [ ] Webkit-based (ex: Safari)
- [ ] Gecko-based (ex: Firefox)
-15
View File
@@ -1,15 +0,0 @@
---
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 -->
+12
View File
@@ -0,0 +1,12 @@
---
name: New Instance
about: 'Add my public instance to the list'
title: "[INSTANCE] New public instance"
labels: ''
assignees: ''
---
Instance URL:
Region (Written Out - ex United States):
Operated by (Link to your site):
+40 -2
View File
@@ -12,9 +12,47 @@ This project is super lightweight by design. The UI is simple and the frontend i
![Answer](./docs/screenshots/answers_light.webp)
## Instances
## Clearnet Instances
Visit the [AnonymousOverflow Hub](https://aohub.httpjames.space) for a list of instances.
| Instance URL | Region | Notes |
| ----------------------------------------------------------------------------------------- | ---------------------------- | ------------------------------------------------------------------------------------------------ |
| [code.whatever.social](https://code.whatever.social) | Germany | Operated by [Whatever Social](https://whatever.social) and [http.james](https://httpjames.space) |
| [ao.vern.cc](https://ao.vern.cc) | United States | Operated by [vern.cc](https://vern.cc) |
| [overflow.smnz.de](https://overflow.smnz.de) | Germany | Operated by [smnz.de](https://smnz.de) |
| [overflow.lunar.icu](https://overflow.lunar.icu) | Germany | Operated by [lunar.icu](https://lunar.icu/) |
| [overflow.adminforge.de](https://overflow.adminforge.de/) | Germany | Operated by [adminForge](https://adminforge.de/) |
| [overflow.hostux.net](https://overflow.hostux.net/) | France | Operated by [Hostux](https://hostux.net/) |
| [overflow.projectsegfau.lt](https://overflow.projectsegfau.lt/) | United States, Germany, India | Operated by [Project Segfault](https://projectsegfau.lt/) |
| [code.xbdm.fun](https://code.xbdm.fun) | Germany | Operated by [xbdm.fun](https://xbdm.fun) |
| [overflow.fascinated.cc](https://overflow.fascinated.cc/) | Germany | Operated by [fascinated.cc](https://fascinated.cc/) |
| [ao.bloat.cat](https://ao.bloat.cat) | Romania | Operated by [bloat.cat](https://bloat.cat) |
| [anonoverflow.frontendfriendly.xyz](https://anonoverflow.frontendfriendly.xyz/) | United States | Operated by [frontendfriendly.xyz](https://frontendfriendly.xyz/) |
| [ao.owo.si](https://ao.owo.si/) | Germany | Operated by [owo.si](https://owo.si/) |
| [overflow.datura.network](https://overflow.datura.network/) | Germany | Operated by [datura.network](https://datura.network) |
| [overflow.freedit.eu](overflow.freedit.eu) | United States | Operated by [freedit.eu](https://freedit.eu) |
| [ao.ftw.lol](https://ao.ftw.lol) | Germany | Operated by [ftw.lol](https://ftw.lol) |
| [anonoverflow.hyperreal.coffee](https://anonoverflow.hyperreal.coffee) | United States | Operated by [hyperreal.coffee](https://hyperreal.coffee) |
| [overflow.sudovanilla.com](https://overflow.sudovanilla.com) | United States | Operated by [SudoVanilla](https://sudovanilla.com) |
| [anonymousoverflow.privacyfucking.rocks](https://anonymousoverflow.privacyfucking.rocks/) | Germany | Operated by [privacyfucking.rocks](https://privacyfucking.rocks) |
| [exchange.seitan-ayoub.lol](https://exchange.seitan-ayoub.lol) | Germany | Operated by [Seitan Ayoub](https://seitan-ayoub.lol) |
| [overflow.r4fo.com](https://overflow.r4fo.com) | The Netherlands | Operated by [r4fo.com](https://r4fo.com) |
| [overflow.ducks.party](https://overflow.ducks.party) | The Netherlands | Operated by [ducks.party](https://ducks.party) |
| [ao.ngn.tf](https://ao.ngn.tf) | Turkey | Operated by [ngn](https://ngn.tf) |
| [overflow.snine.nl](https://overflow.snine.nl) | The Netherlands | Operated by [snine](https://snine.nl) |
| [anonymousoverflow.privacyredirect.com](https://anonymousoverflow.privacyredirect.com) | Finland | Operated by [privacyredirect.com](https://privacyredirect.com/) |
| [soflow.nerdvpn.de](https://soflow.nerdvpn.de) | Ukraine | Operated by [Sommerwiesel](https://github.com/Sommerwiesel) |
## Other Instances
| Instance URL | Region | Notes |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------- | --------------------------------------------------------- |
| [ao.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion](http://ao.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion) | United States | Operated by [vern.cc](https://vern.cc) |
| [vernmzgraj6aaoafmehupvtkkynpaa67rxcdj2kinwiy6konn6rq.b32.i2p](http://vernmzgraj6aaoafmehupvtkkynpaa67rxcdj2kinwiy6konn6rq.b32.i2p) | United States | Operated by [vern.cc](https://vern.cc) |
| [overflow.pjsfkvpxlinjamtawaksbnnaqs2fc2mtvmozrzckxh7f3kis6yea25ad.onion](http://overflow.pjsfkvpxlinjamtawaksbnnaqs2fc2mtvmozrzckxh7f3kis6yea25ad.onion/) | Germany | Operated by [Project Segfault](https://projectsegfau.lt/) |
| [overflow.daturab6drmkhyeia4ch5gvfc2f3wgo6bhjrv3pz6n7kxmvoznlkq4yd.onion](http://overflow.daturab6drmkhyeia4ch5gvfc2f3wgo6bhjrv3pz6n7kxmvoznlkq4yd.onion/) | Germany | Operated by [datura.network](https://datura.network) |
| [ao.pk47sgwhncn5cgidm7bofngmh7lc7ukjdpk5bjwfemmyp27ovl25ikyd.onion](http://ao.pk47sgwhncn5cgidm7bofngmh7lc7ukjdpk5bjwfemmyp27ovl25ikyd.onion/) | Germany | Operated by [owo.si](https://owo.si/) |
| [ay7akchgdh76r4lc62hzd52z6xqoh67loototsetvqxo5o7ngo5q.b32.i2p](http://ay7akchgdh76r4lc62hzd52z6xqoh67loototsetvqxo5o7ngo5q.b32.i2p/) | Germany | Operated by [owo.si](https://owo.si/) |
| [overflow.r4focoma7gu2zdwwcjjad47ysxt634lg73sxmdbkdozanwqslho5ohyd.onion](http://overflow.r4focoma7gu2zdwwcjjad47ysxt634lg73sxmdbkdozanwqslho5ohyd.onion) | The Netherlands | Operated by [r4fo.com](https://r4fo.com) |
## Why use AnonymousOverflow over StackOverflow?
+1 -1
View File
@@ -1,3 +1,3 @@
package config
var Version = "1.13.0"
var Version = "1.12.1"
-207
View File
@@ -1,207 +0,0 @@
{
"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.ftw.lol",
"regions": ["Germany"],
"operators": ["https://ftw.lol"]
},
{
"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://github.com/Sommerwiesel"]
},
{
"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"]
}
],
"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"]
}
]
}
+9 -17
View File
@@ -55,23 +55,6 @@ func main() {
r.GET("/q/:id", routes.RedirectShortenedOverflowURL)
r.GET("/q/:id/:answerId", routes.RedirectShortenedOverflowURL)
exchangeRouter := r.Group("/exchange/:sub")
{
exchangeRouter.GET("/questions/:id/:title", routes.ViewQuestion)
exchangeRouter.GET("/questions/:id", func(c *gin.Context) {
// redirect user to the question with the title
c.Redirect(302, fmt.Sprintf("/exchange/%s/questions/%s/placeholder", c.Param("sub"), c.Param("id")))
})
exchangeRouter.GET("/questions/:id/:title/:answerId", func(c *gin.Context) {
// redirect user to the answer with the title
c.Redirect(302, fmt.Sprintf("/exchange/%s/questions/%s/%s#%s", c.Param("sub"), c.Param("id"), c.Param("title"), c.Param("answerId")))
})
exchangeRouter.GET("/q/:id/:answerId", routes.RedirectShortenedOverflowURL)
exchangeRouter.GET("/q/:id", routes.RedirectShortenedOverflowURL)
exchangeRouter.GET("/a/:id/:answerId", routes.RedirectShortenedOverflowURL)
exchangeRouter.GET("/a/:id", routes.RedirectShortenedOverflowURL)
}
r.GET("/questions/:id", func(c *gin.Context) {
// redirect user to the question with the title
c.Redirect(302, fmt.Sprintf("/questions/%s/placeholder", c.Param("id")))
@@ -81,6 +64,15 @@ func main() {
// redirect user to the answer with the title
c.Redirect(302, fmt.Sprintf("/questions/%s/%s#%s", c.Param("id"), c.Param("title"), c.Param("answerId")))
})
r.GET("/exchange/:sub/questions/:id/:title", routes.ViewQuestion)
r.GET("/exchange/:sub/questions/:id", func(c *gin.Context) {
// redirect user to the question with the title
c.Redirect(302, fmt.Sprintf("/exchange/%s/questions/%s/placeholder", c.Param("sub"), c.Param("id")))
})
r.GET("/exchange/:sub/questions/:id/:title/:answerId", func(c *gin.Context) {
// redirect user to the answer with the title
c.Redirect(302, fmt.Sprintf("/exchange/%s/questions/%s/%s#%s", c.Param("sub"), c.Param("id"), c.Param("title"), c.Param("answerId")))
})
r.GET("/proxy", routes.GetImage)
-2
View File
@@ -250,8 +250,6 @@ func extractAnswersData(doc *goquery.Document, domain string) ([]types.FilteredA
processedAnswerBody := utils.ProcessHTMLBody(answerBodyHTML)
answer.Body = template.HTML(processedAnswerBody)
answer.Comments = utils.FindAndReturnComments(answerBodyHTML, domain, postLayout)
// Extract author information and timestamp.
extractAnswerAuthorInfo(s, &answer, domain)
+2 -15
View File
@@ -4,7 +4,6 @@ import (
"fmt"
"net/http"
"os"
"strings"
"github.com/gin-gonic/gin"
"github.com/go-resty/resty/v2"
@@ -13,7 +12,6 @@ import (
func RedirectShortenedOverflowURL(c *gin.Context) {
id := c.Param("id")
answerId := c.Param("answerId")
sub := c.Param("sub")
// fetch the stack overflow URL
client := resty.New()
@@ -23,13 +21,7 @@ func RedirectShortenedOverflowURL(c *gin.Context) {
}),
)
domain := "www.stackoverflow.com"
if strings.Contains(sub, ".") {
domain = sub
} else if sub != "" {
domain = fmt.Sprintf("%s.stackexchange.com", sub)
}
resp, err := client.R().Get(fmt.Sprintf("https://%s/a/%s/%s", domain, id, answerId))
resp, err := client.R().Get(fmt.Sprintf("https://www.stackoverflow.com/a/%s/%s", id, answerId))
if err != nil {
c.HTML(400, "home.html", gin.H{
"errorMessage": "Unable to fetch stack overflow URL",
@@ -49,10 +41,5 @@ func RedirectShortenedOverflowURL(c *gin.Context) {
// get the redirect URL
location := resp.Header().Get("Location")
redirectPrefix := os.Getenv("APP_URL")
if sub != "" {
redirectPrefix += fmt.Sprintf("/exchange/%s", sub)
}
c.Redirect(302, fmt.Sprintf("%s%s", redirectPrefix, location))
c.Redirect(302, fmt.Sprintf("%s%s", os.Getenv("APP_URL"), location))
}
-2
View File
@@ -45,7 +45,6 @@
{{ if .question.Comments }} {{ template "comments.html"
.question }} {{end}}
</div>
{{ if .answers }}
<hr class="post-divider" />
<div class="answers-header">
<h2>Answers</h2>
@@ -90,7 +89,6 @@
{{end}}
</div>
{{ end }}
{{ end }}
</body>
</html>