Compare commits
10 Commits
dev
...
renovate/s
Author | SHA1 | Date | |
---|---|---|---|
74f7dd78ce | |||
91a11e4611
|
|||
13a703352b
|
|||
2c5388bcce
|
|||
f053b93c24
|
|||
babbe50c00
|
|||
92f594f27f
|
|||
cb5f5628a3
|
|||
8adbc9d354
|
|||
8a084c4e95
|
14
.gitignore
vendored
14
.gitignore
vendored
@@ -1,11 +1,7 @@
|
||||
# docker(-compose) stuff
|
||||
data.db
|
||||
*.yaml
|
||||
*.yml
|
||||
docker-compose.yaml
|
||||
docker-compose.yml
|
||||
compose.yaml
|
||||
compose.yml
|
||||
*.env
|
||||
|
||||
# don't ignore example deployment stuff
|
||||
!deploy/*
|
||||
!.github/*
|
||||
!.gitea/*
|
||||
!.github/*/*
|
||||
!.gitea/*/*
|
||||
|
@@ -1,5 +1,5 @@
|
||||
# build the application with node
|
||||
FROM node:23.11.1 AS build
|
||||
FROM node:24.4.1 AS build
|
||||
|
||||
ARG WEBSITE_REPORT_URL
|
||||
ARG WEBSITE_SOURCE_URL
|
||||
@@ -16,7 +16,6 @@ ENV WEBSITE_API_PATH=$WEBSITE_API_PATH
|
||||
WORKDIR /app
|
||||
COPY . /app
|
||||
|
||||
RUN apt install -y make sed wget
|
||||
RUN npm install
|
||||
RUN make
|
||||
|
||||
|
6
app/package-lock.json
generated
6
app/package-lock.json
generated
@@ -536,9 +536,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@sveltejs/kit": {
|
||||
"version": "2.25.1",
|
||||
"resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.25.1.tgz",
|
||||
"integrity": "sha512-8H+fxDEp7Xq6tLFdrGdS5fLu6ONDQQ9DgyjboXpChubuFdfH9QoFX09ypssBpyNkJNZFt9eW3yLmXIc9CesPCA==",
|
||||
"version": "2.26.0",
|
||||
"resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.26.0.tgz",
|
||||
"integrity": "sha512-TUxMYoK6Yim4uRIW0L7TXtlEtyLchy90PmInI7d1lPAPMchkBEvN3nVMkn5iTMUobxdLE5nR/YEU/4aYqezMuQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
|
@@ -17,10 +17,11 @@
|
||||
justify-content: space-between;
|
||||
align-items: end;
|
||||
background: var(--transparent);
|
||||
height: 250px;
|
||||
}
|
||||
|
||||
header div {
|
||||
padding: 100px 40px 10px 40px;
|
||||
padding: 0 40px 10px 40px;
|
||||
color: var(--color);
|
||||
font-size: var(--size-6);
|
||||
font-family:
|
||||
@@ -50,10 +51,20 @@
|
||||
|
||||
header img {
|
||||
width: 220px;
|
||||
padding: 50px 50px 0 50px;
|
||||
padding: 0 50px;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 900px) {
|
||||
header {
|
||||
height: 180px;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
header div {
|
||||
padding: 30px 20px 20px 20px;
|
||||
}
|
||||
|
||||
header img {
|
||||
display: none;
|
||||
}
|
||||
|
@@ -9,7 +9,7 @@
|
||||
}
|
||||
</script>
|
||||
|
||||
<form action="/" method="get" {onsubmit}>
|
||||
<form method="get" {onsubmit}>
|
||||
<input type="hidden" name="l" value={$next.code} />
|
||||
<button type="submit">{$next.icon}</button>
|
||||
</form>
|
||||
|
@@ -13,16 +13,18 @@
|
||||
</div>
|
||||
<ul>
|
||||
<li><a href={service.clear}> Clear</a></li>
|
||||
<span>|</span>
|
||||
<li><a href={service.onion}>TOR</a></li>
|
||||
<span>|</span>
|
||||
<li><a href={service.i2p}> I2P</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="check">
|
||||
<h1>
|
||||
<p>
|
||||
{$_("services.last", {
|
||||
time: time_from_ts(service.check_time),
|
||||
})}
|
||||
</h1>
|
||||
</p>
|
||||
{#if service.check_res == 0}
|
||||
<span style="background: var(--white-2)">
|
||||
{$_("services.status.down")}
|
||||
@@ -48,7 +50,7 @@
|
||||
border: solid 1px var(--black-3);
|
||||
text-align: left;
|
||||
|
||||
flex-grow: 1;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
main .info {
|
||||
@@ -82,12 +84,6 @@
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
main .info ul li:not(:last-of-type)::after {
|
||||
content: " / ";
|
||||
color: var(--white-3);
|
||||
font-weight: 900;
|
||||
}
|
||||
|
||||
main .info li a {
|
||||
color: var(--color);
|
||||
text-decoration: none;
|
||||
@@ -110,6 +106,10 @@
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
main .info ul span {
|
||||
color: var(--white-3);
|
||||
}
|
||||
|
||||
main .check {
|
||||
border-top: solid 1px var(--black-3);
|
||||
display: flex;
|
||||
@@ -119,12 +119,15 @@
|
||||
color: var(--white-1);
|
||||
}
|
||||
|
||||
main .check h1 {
|
||||
main .check p {
|
||||
font-size: var(--size-2);
|
||||
font-weight: 100;
|
||||
|
||||
color: var(--white-2);
|
||||
padding: 5px 18px;
|
||||
|
||||
word-break: keep-all;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
main .check span {
|
||||
|
@@ -65,7 +65,7 @@ class Locale {
|
||||
for (let i = 0; i < links.length; i++) {
|
||||
let link = links[i][0];
|
||||
let name = link.match(/(?<=\[).*?(?=])/g);
|
||||
let url = link.match(/(?<=\()[^ ]*(?=\))/g);
|
||||
let url = link.match(/(?<=\]\()[^ ]*(?=\))/g);
|
||||
|
||||
// if we fail to extract the link name and/or URL, skip this match
|
||||
if (null === name || null === url) continue;
|
||||
|
98
app/src/locales/en.yaml
Normal file
98
app/src/locales/en.yaml
Normal file
@@ -0,0 +1,98 @@
|
||||
navbar:
|
||||
home: home
|
||||
services: services
|
||||
donate: donate
|
||||
|
||||
home:
|
||||
title: hello world!
|
||||
welcome:
|
||||
title: about
|
||||
desc: |
|
||||
Welcome to my personal website, I'm ngn. You might also know me as ngn13.
|
||||
I am a security, privacy and freedom advocate high-school student from
|
||||
Turkey. I'm mainly interesed in software development and system security,
|
||||
so I usually spend my free time writing [Free/Libre
|
||||
software](https://www.gnu.org/philosophy/free-sw.html), solving
|
||||
[CTF](https://en.wikipedia.org/wiki/Capture_the_flag_(cybersecurity))s and
|
||||
learning new things.
|
||||
thanks: |
|
||||
I have few personal software projects and I host web based services. If
|
||||
you would like to check them out, see the sections below. Thank you for
|
||||
visiting my website and I hope you have a good rest of your day!
|
||||
|
||||
projects:
|
||||
title: projects
|
||||
desc: |
|
||||
I develop and work on Free/Libre software. I don't work on massive
|
||||
projects and I'm not a professional but I do enjoy it. Here are some of my
|
||||
more popular projects that you might find interesting
|
||||
|
||||
services:
|
||||
title: services
|
||||
desc: |
|
||||
I host web based services. Most of these services provide front-end or
|
||||
alternatives to already existing popular web services. Here are all the
|
||||
details
|
||||
speed: All of these services are available over an 1 Gbit interface
|
||||
security: All use SSL encrypted connection and they respect your privacy and freedom
|
||||
blocks: |
|
||||
Accessible from clearnet, [TOR](https://www.torproject.org/) and
|
||||
[I2P](https://geti2p.net/en/) - no region or network blocks
|
||||
bullshit: No CDNs, no cloudflare, no CAPTCHA, no analytics, no bullshit
|
||||
link: See all the services!
|
||||
|
||||
contact:
|
||||
title: contact
|
||||
desc: |
|
||||
If you have question or a suggestion, or if you simply want to chat, feel
|
||||
free to send me an email at **ngn [at] ngn.tf**. You can use my [PGP
|
||||
key](https://keyoxide.org/F9E70878C2FB389AEC2BA34CA3654DF5AD9F641D) to
|
||||
send me an encrypted email, which I would highly prefer. My PGP key also
|
||||
includes identity claims, which you can use to verify my public profiles.
|
||||
mastodon: |
|
||||
I'm also on [mastodon](https://defcon.social/@ngn) where I mainly post
|
||||
Turkish stuff.
|
||||
|
||||
services:
|
||||
title: service status
|
||||
desc: |
|
||||
Here you can find a list of all the publicly accessible services I host. I
|
||||
have periodic status check for clearnet addresses: A request is sent to the
|
||||
clearnet address the status of the service is reported based on the
|
||||
response. The latest reported status is displayed next to the time of the
|
||||
report. If you experience any issues with a service even though the status
|
||||
is displayed as up, please [contact me](/#contact) to report this issue.
|
||||
feed: |
|
||||
I also have an [1:Atom feed] that you can follow to get the latest news and
|
||||
updates about the changes made to the different services.
|
||||
last: Last checked at {time}
|
||||
status:
|
||||
up: Up
|
||||
down: Down
|
||||
slow: Slow
|
||||
|
||||
donate:
|
||||
title: donate!
|
||||
desc: |
|
||||
If you like my work or if you are feeling generous, you can financially
|
||||
support me. I spend around $15 every month to maintain everything, so even a
|
||||
small donation would be highly appreciated and it would help me keep
|
||||
everything up and running.
|
||||
info: |
|
||||
Currently I only accept donations with [Monero
|
||||
(XMR)](https://www.getmonero.org/). Here is my monero address
|
||||
thanks: |
|
||||
Also I would like to thank everyone who has donated so far. I really
|
||||
appreciate it!
|
||||
|
||||
error:
|
||||
title: something went wrong!
|
||||
report: Report this issue
|
||||
|
||||
footer:
|
||||
source: Source
|
||||
license: License
|
||||
privacy: Privacy
|
||||
number: Visited {total} times since {since}
|
||||
wow: wow!!
|
||||
render: Rendered on {time} just for you
|
103
app/src/locales/tr.yaml
Normal file
103
app/src/locales/tr.yaml
Normal file
@@ -0,0 +1,103 @@
|
||||
navbar:
|
||||
home: anasayfa
|
||||
services: servisler
|
||||
donate: bağış
|
||||
|
||||
home:
|
||||
title: merhaba dünya!
|
||||
welcome:
|
||||
title: hakkımda
|
||||
desc: |
|
||||
Kişisel websiteme hoşgeldiniz, ben ngn. Beni ngn13 olarak da
|
||||
bilebilirsiniz. Türkiye'den güvenlik, gizlilik ve özgürlük savunucusu bir
|
||||
liseliyim. Genel olarak yazılım geliştirme ve sistem güvenliği ile
|
||||
ilgileniyorum, o yüzden boş zamanımın çoğunu
|
||||
[Özgür yazılım](https://www.gnu.org/philosophy/free-sw.tr.html) yazarak,
|
||||
[CTF](https://wikipedia.org/wiki/Capture_the_flag_(cybersecurity)) çözerek
|
||||
ve yeni şeyler öğrenerek harcıyorum.
|
||||
thanks: |
|
||||
Birkaç kişisel yazılım projem var ve web tabanlı servisler barındırıyorum.
|
||||
Eğer bunları incelemek isterseniz, aşağıdaki bölümlere bakın. Websitemi
|
||||
ziyaret ettiğiniz için teşekkür ederim ve size iyi günler dilerim!
|
||||
|
||||
projects:
|
||||
title: projeler
|
||||
desc: |
|
||||
Özgür yazılım geliştiriyorum ve üzerinde çalışıyorum. Devasa projelerde
|
||||
çalışmıyorum ve profesyonel değilim ama hoşuma gidiyor. İşte biraz daha
|
||||
popüler olan ve ilginç bulabileceğiniz bazı projelerim
|
||||
|
||||
services:
|
||||
title: servisler
|
||||
desc: |
|
||||
Web tabanlı servisler host ediyorum. Bu servislerin çoğu zaten mevcut
|
||||
popüler web servislerine arayüz ya da alternatifler sağlıyor. İşte tüm
|
||||
detaylar
|
||||
speed: Tüm servisler 1 Gbit ağ arayüzü üzerinden erişilebilir
|
||||
security: |
|
||||
Hepsi SSL şifreli bağlantı kullanıyor ve mahremiyetinize ve özgürlüğünüze
|
||||
saygı gösteriyor
|
||||
blocks: |
|
||||
Açık ağdan, [TOR](https://www.torproject.org/tr/) ve
|
||||
[I2P](https://geti2p.net/tr/)'den erişilebilirler, bölge ya da ağ blokları
|
||||
yok
|
||||
bullshit: CDN yok, cloudflare yok, CAPTCHA yok, analitikler ve diğer saçmalıklar yok
|
||||
link: Tüm servisleri görüntüle!
|
||||
|
||||
contact:
|
||||
title: contact
|
||||
desc: |
|
||||
Eğer bir sorunuz ya da öneriniz varsa, ya da basitçe muhabbet etmek
|
||||
istiyorsanız, bana **ngn [at] ngn.tf** adresinden bir e-posta göndermekten
|
||||
çekinmeyin. [PGP anahtarımı
|
||||
](https://keyoxide.org/F9E70878C2FB389AEC2BA34CA3654DF5AD9F641D) bana
|
||||
tercihim olan şifreli e-postalar göndermek için kullanabilirsiniz. PGP
|
||||
anahtarım aynı zamanda identity claim'leri içeriyor, bunları internete
|
||||
açık profillerimi doğrulamak için kullanabilirisniz.
|
||||
mastodon: |
|
||||
Aynı zamanda [mastodon'dayım](https://defcon.social/@ngn),
|
||||
çoğunlukla Türkçe olan paylaşımlar yapıyorum.
|
||||
|
||||
services:
|
||||
title: servis durumu
|
||||
desc: |
|
||||
Burada barındırdığım internete açık tüm servislerin bir listesini
|
||||
bulabilirsiniz. Açık ağ adresleri için periyodik bir durum kontrolü mevcut:
|
||||
Açık ağ adresine bir istek gönderiliyor ve servisin durumu verilen cevaba
|
||||
göre raporlanıyor. En son raporlanan durum raporun zamanının yanında
|
||||
görüntüleniyor. Bir servisin durumu çalışıyor olarak görünmesine rağmen
|
||||
servisle alakalı sorunlar yaşıyorsanız, lütfen bu sorunları raporlamak için
|
||||
[bana ulaşın](/#contact).
|
||||
feed: |
|
||||
Farklı servislere yapılan değişiklikler hakkında güncellemeleri ve
|
||||
haberleri görmek adına takip edebileceğiniz bir [1:Atom beslemesi] de
|
||||
mevcut.
|
||||
last: Son kontrol zamanı {time}
|
||||
status:
|
||||
up: Çalışıyor
|
||||
down: Kapalı
|
||||
slow: Yavaş
|
||||
|
||||
donate:
|
||||
title: bağış yap!
|
||||
desc: |
|
||||
Eğer emeğimi seviyorsanız ya da kendinizi cömert hissediyorsanız, beni
|
||||
finansal olarak destekleyebilirsiniz. Herşeyi yönetmek adına her yaklaşık
|
||||
$15 harcıyorum, o yüzden küçük bir bağış bile oldukça faydalı olacaktır ve
|
||||
herşeyi ayakta tutmama yardım eder.
|
||||
info: |
|
||||
Şuan sadece [Monero (XMR)](https://www.getmonero.org/tr/) ile bağış kabul
|
||||
ediyorum. İşte monero adresim
|
||||
thanks: Ayrıca şuana kadar bağış yapan herkese çok teşekkür ederim.
|
||||
|
||||
error:
|
||||
title: birşeyler yanlış gitti!
|
||||
report: Bu hatayı raporla
|
||||
|
||||
footer:
|
||||
source: Kaynak
|
||||
license: Lisans
|
||||
privacy: Gizlilik
|
||||
number: "{since} tarihinden beri {total} kez ziyaret edildi"
|
||||
wow: vay be!
|
||||
render: Sizin için {time} tarihinde işlendi
|
@@ -12,7 +12,7 @@ export async function load({ cookies, request, url }) {
|
||||
|
||||
if (locale) {
|
||||
set_locale(cookies, locale);
|
||||
return redirect(307, "/");
|
||||
return redirect(307, url.pathname);
|
||||
}
|
||||
|
||||
// attempt get the preferred locale from cookies
|
||||
|
@@ -54,12 +54,15 @@
|
||||
}
|
||||
|
||||
main .services {
|
||||
border-top: solid 1px var(--white-3);
|
||||
padding-top: 20px;
|
||||
margin-top: 15px;
|
||||
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
align-items: stretch;
|
||||
gap: 28px;
|
||||
color: var(--white-3);
|
||||
gap: 15px;
|
||||
}
|
||||
</style>
|
||||
|
Reference in New Issue
Block a user