20 Commits

Author SHA1 Message Date
Sweetbread e5bfcdfe3f Add otoring
Docker Build and Push / build-and-push (push) Successful in 1m4s
2026-01-13 16:10:47 +03:00
Sweetbread e1f4021ed5 Add mock email 2026-01-13 16:10:47 +03:00
Sweetbread c806dfff6c Change to new domain 2026-01-13 16:10:47 +03:00
Sweetbread 000465079b Add altfronts block 2026-01-13 16:10:47 +03:00
Sweetbread 97280e2d7c ci: remove per commit images 2026-01-13 16:10:47 +03:00
Sweetbread 25edd56306 Remove typos in host 2026-01-13 16:10:47 +03:00
Sweetbread e776f09b0f Remove whitespaces before sending 2026-01-13 16:10:47 +03:00
Sweetbread c0dc079a71 Add some services 2026-01-13 14:58:10 +03:00
Sweetbread 0a5807e62e Change host info 2026-01-13 14:58:10 +03:00
Sweetbread f60a1940ac Improve style
- Add more depth to .block
- Make footer lighter
- Stylize scrollbar
2026-01-13 14:58:10 +03:00
Sweetbread 7351e28bcd Add mine page 2026-01-13 14:58:10 +03:00
Sweetbread 74afee8f5b style: change sizes to rem 2026-01-13 14:58:10 +03:00
Sweetbread 5f417b433e style: decrease margins 2026-01-13 14:58:10 +03:00
Sweetbread 39d6f469cb feat: add tracker script 2026-01-13 14:58:10 +03:00
Sweetbread 78f658241c update host specs 2026-01-13 14:58:10 +03:00
Sweetbread 4622e730c1 l10n: add en, de, ja and fr 2026-01-13 14:58:10 +03:00
Sweetbread e6ba705862 sec: add production server 2026-01-13 14:58:09 +03:00
Sweetbread cfd81884db ci: add docker-build 2026-01-13 14:58:09 +03:00
Sweetbread 8c75448836 feat: add dockerfile 2026-01-13 14:58:09 +03:00
Sweetbread f5afca83d2 Init commit 2026-01-13 14:58:09 +03:00
16 changed files with 78 additions and 36 deletions
+2 -4
View File
@@ -14,7 +14,7 @@ jobs:
- name: Login to Docker Registry - name: Login to Docker Registry
uses: docker/login-action@v2 uses: docker/login-action@v2
with: with:
registry: g.codrs.ru registry: g.lair.moe
username: ${{ vars.DOCKER_USERNAME }} username: ${{ vars.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }} password: ${{ secrets.DOCKER_PASSWORD }}
@@ -26,8 +26,6 @@ jobs:
with: with:
context: . context: .
push: ${{ github.event_name == 'push' }} push: ${{ github.event_name == 'push' }}
tags: | tags: g.lair.moe/${{ vars.DOCKER_USERNAME }}/lair.moe:latest
g.codrs.ru/${{ vars.DOCKER_USERNAME }}/codrs.ru:latest
g.codrs.ru/${{ vars.DOCKER_USERNAME }}/codrs.ru:${{ github.sha }}
cache-from: type=gha cache-from: type=gha
cache-to: type=gha,mode=max cache-to: type=gha,mode=max
+5 -4
View File
@@ -1,5 +1,6 @@
from os import system as console from os import system as console
from configparser import ConfigParser from configparser import ConfigParser
from htmlmin import minify
from flask import ( from flask import (
Flask, Flask,
g, g,
@@ -63,16 +64,16 @@ if app.debug:
@app.route("/") @app.route("/")
def index(): def index():
return render_template('index.html') return minify(render_template('index.html'), remove_empty_space=True)
@app.route("/host") @app.route("/host")
def host(): def host():
return render_template('host.html') return minify(render_template('host.html'), remove_empty_space=True)
@app.route("/us") @app.route("/us")
def us(): def us():
return render_template('us.html') return minify(render_template('us.html'), remove_empty_space=True)
@app.route("/risdeveau") @app.route("/risdeveau")
def risdeveau(): def risdeveau():
return render_template('personal/risdeveau.html') return minify(render_template('personal/risdeveau.html'), remove_empty_space=True)
+3
View File
@@ -7,6 +7,7 @@ about host = Über Server
[index] [index]
altfronts = Altfronts
bottom_text = Außerdem bieten wir {glitchtip}, {baikal} und {freshrss} für Mitglieder unserer Gruppe an! bottom_text = Außerdem bieten wir {glitchtip}, {baikal} und {freshrss} für Mitglieder unserer Gruppe an!
[index.descr] [index.descr]
@@ -17,6 +18,8 @@ copyparty = Cloud-Dateispeicher
4get = Proxy-Suchmaschine 4get = Proxy-Suchmaschine
tools = Satz verschiedener Werkzeuge tools = Satz verschiedener Werkzeuge
vert = Dateiumwandler vert = Dateiumwandler
tl = Altfront für beliebte Suchmaschinen
lyr = Altfront für Genius
[host] [host]
+3
View File
@@ -7,6 +7,7 @@ about host = About host
[index] [index]
altfronts = Altfronts
bottom_text = We also have {glitchtip}, {baikal} and {freshrss} for members of our squad! bottom_text = We also have {glitchtip}, {baikal} and {freshrss} for members of our squad!
[index.descr] [index.descr]
@@ -17,6 +18,8 @@ copyparty = cloud file storage
4get = proxy search engine 4get = proxy search engine
tools = set of various tools tools = set of various tools
vert = file converter vert = file converter
tl = altfront for popular search engines
lyr = altfront for Genius
[host] [host]
+3
View File
@@ -7,6 +7,7 @@ about host = À propos de serveur
[index] [index]
altfronts = Altfronts
bottom_text = On a aussi {glitchtip}, {baikal} et {freshrss} pour les membres du groupe ! bottom_text = On a aussi {glitchtip}, {baikal} et {freshrss} pour les membres du groupe !
[index.descr] [index.descr]
@@ -17,6 +18,8 @@ copyparty = Stockage de fichiers en cloud
4get = Moteur de recherche proxy 4get = Moteur de recherche proxy
tools = ensemble d'outils variés tools = ensemble d'outils variés
vert = convertisseur de fichiers vert = convertisseur de fichiers
tl = altfront pour les moteurs de recherche populaires
lyr = altfront pour Genius
[host] [host]
+3
View File
@@ -7,6 +7,7 @@ about host = サーバーについて
[index] [index]
altfronts = 代替フロントエンド
bottom_text = メンバーには {glitchtip}、{baikal}、{freshrss} も使えるよ! bottom_text = メンバーには {glitchtip}、{baikal}、{freshrss} も使えるよ!
[index.descr] [index.descr]
@@ -17,6 +18,8 @@ copyparty = クラウドファイルストレージ
4get = プロキシ検索エンジン 4get = プロキシ検索エンジン
tools = 様々なツールのセット tools = 様々なツールのセット
vert = ファイル変換ツール vert = ファイル変換ツール
tl = 人気検索エンジン向けの代替フロントエンド
lyr = Genius向けの代替フロントエンド
[host] [host]
+3
View File
@@ -7,6 +7,7 @@ about host = О хосте
[index] [index]
altfronts = Альтфронты
bottom_text = Ещё у нас есть {glitchtip}, {baikal} и {freshrss} для участников нашей группы! bottom_text = Ещё у нас есть {glitchtip}, {baikal} и {freshrss} для участников нашей группы!
[index.descr] [index.descr]
@@ -17,6 +18,8 @@ copyparty = облачное хранилище файлов
4get = прокси-поисковик 4get = прокси-поисковик
tools = набор разнообразных утилит tools = набор разнообразных утилит
vert = конвертация файлов vert = конвертация файлов
tl = альтфронт для популярных поисковиков
lyr = альтфронт для Genius
[host] [host]
+1
View File
@@ -1,2 +1,3 @@
Flask==3.1.1 Flask==3.1.1
gunicorn gunicorn
htmlmin2
+2 -3
View File
@@ -3,17 +3,16 @@ let
pypkgs = pkgs.python3Packages; pypkgs = pkgs.python3Packages;
in in
pkgs.mkShell { pkgs.mkShell {
name = "codrs.ru"; name = "lair.moe";
buildInputs = with pypkgs; [ buildInputs = with pypkgs; [
python python
virtualenv virtualenv
# pkgs.nodejs
pkgs.nodePackages.sass pkgs.nodePackages.sass
]; ];
shellHook = '' shellHook = ''
if [ ! -d "venv" ]; then if [ ! -d ".venv" ]; then
python -m venv .venv python -m venv .venv
fi fi
+15
View File
@@ -95,6 +95,10 @@ header {
background-color: $mantle; background-color: $mantle;
padding: .5rem; padding: .5rem;
font-size: larger; font-size: larger;
.header-links * + * {
padding-left: 1ch;
}
} }
footer { footer {
@@ -190,6 +194,17 @@ footer {
border-radius: .2em; border-radius: .2em;
} }
.webring {
margin-top: 1rem;
display: flex;
justify-content: center;
a {
padding: .5rem 1rem;
margin: .1rem !important;
border-radius: 0;
}
}
::-webkit-scrollbar { ::-webkit-scrollbar {
width: .5rem; width: .5rem;
+3 -2
View File
@@ -1,17 +1,18 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<title>Coders Squad</title> <title>Lair</title>
<link rel="stylesheet" href="/static/style/main.css"> <link rel="stylesheet" href="/static/style/main.css">
<link rel="icon" type="image/webp" href="/static/icon/codrs.webp" /> <link rel="icon" type="image/webp" href="/static/icon/codrs.webp" />
<script src="/static/script/copy-mono.js"> </script> <script src="/static/script/copy-mono.js"> </script>
<script <script
src="https://track.codrs.ru/api/script.js" src="https://track.lair.moe/api/script.js"
data-site-id="1" data-site-id="1"
defer defer
></script> ></script>
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="mock-email" content="admin@example.com">
</head> </head>
<body> <body>
{% include 'header.tmpl' %} {% include 'header.tmpl' %}
+3 -3
View File
@@ -1,5 +1,5 @@
<footer> <footer>
<div>codrs.ru &#169; 2025</div> <div>lair.moe &#169; 2025</div>
<div><a href="https://g.codrs.ru/Sweetbread/codrs.ru">{{ _('site source') }}</a></div> <div><a href="https://g.lair.moe/Sweetbread/lair.moe">{{ _('site source') }}</a></div>
<div>{{ _('contact us') }}: <a href="mailto:admin@codrs.ru">admin@codrs.ru</a></div> <div>{{ _('contact us') }}: <a href="mailto:admin@lair.moe">admin@lair.moe</a></div>
</footer> </footer>
+1 -1
View File
@@ -1,6 +1,6 @@
<header> <header>
{%- if request.path != url_for('index') %} {%- if request.path != url_for('index') %}
<a href="{{ url_for('index') }}">Coders Squad</a> <a href="{{ url_for('index') }}">Lair</a>
{%- else %} {%- else %}
<div></div> <div></div>
{%- endif %} {%- endif %}
+3 -3
View File
@@ -11,11 +11,11 @@
<div class="block"> <div class="block">
<strong>{{ _("host:specifications") }}</strong>: <strong>{{ _("host:specifications") }}</strong>:
<ul> <ul>
<li>CPU: Ryzen i9@3.4GHz (4 cores)</li> <li>CPU: Ryzen 9@3.4GHz (4 cores)</li>
<li>RAM: 8 GiB</li> <li>RAM: 8 GB</li>
<li>SSD: 150 GB</li> <li>SSD: 150 GB</li>
<li>ETH: 500Mb/s</li> <li>ETH: 500Mb/s</li>
<li>Loc: Deutchland, Frankfurt am Mein</li> <li>Loc: Deutschland, Frankfurt am Main</li>
</ul> </ul>
</div> </div>
{% endblock %} {% endblock %}
+23 -11
View File
@@ -2,18 +2,18 @@
{% block title %} {% block title %}
<img src="/static/icon/codrs.webp" class="icon" /> <img src="/static/icon/codrs.webp" class="icon" />
Coders Squad Lair
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<a href="https://b.codrs.ru" target="_blank" class="block"> <a href="https://b.lair.moe" target="_blank" class="block">
<div class="header"> <div class="header">
<img src="/static/icon/service/sharkey.webp" class="icon"/> <img src="/static/icon/service/sharkey.webp" class="icon"/>
<strong>Sharkey</strong> <strong>Sharkey</strong>
</div> </div>
<p>{{ _('index.descr:sharkey') }}</p> <p>{{ _('index.descr:sharkey') }}</p>
</a> </a>
<a href="https://g.codrs.ru" target="_blank" class="block"> <a href="https://g.lair.moe" target="_blank" class="block">
<div class="header"> <div class="header">
<img src="/static/icon/service/gitea.webp" class="icon"/> <img src="/static/icon/service/gitea.webp" class="icon"/>
<strong>Gitea</strong> <strong>Gitea</strong>
@@ -23,10 +23,16 @@
<div class="block"> <div class="block">
<p><a href="https://m.codrs.ru" target="_blank"><strong>Matrix</strong></a> &mdash; {{ _('index.descr:matrix') }}</p> <p><a href="https://m.codrs.ru" target="_blank"><strong>Matrix</strong></a> &mdash; {{ _('index.descr:matrix') }}</p>
<p><a href="https://c.codrs.ru" target="_blank"><strong>Copyparty</strong></a> &mdash; {{ _('index.descr:copyparty') }}</p> <p><a href="https://c.lair.moe" target="_blank"><strong>Copyparty</strong></a> &mdash; {{ _('index.descr:copyparty') }}</p>
<p><a href="https://s.codrs.ru" target="_blank"><strong>4get</strong></a> &mdash; {{ _('index.descr:4get') }}</p> <p><a href="https://tools.lair.moe" target="_blank"><strong>IT-tools</strong></a> &mdash; {{ _('index.descr:tools') }}</p>
<p><a href="https://tools.codrs.ru" target="_blank"><strong>IT-tools</strong></a> &mdash; {{ _('index.descr:tools') }}</p> <p><a href="https://vert.lair.moe" target="_blank"><strong>Vert</strong></a> &mdash; {{ _('index.descr:vert') }}</p>
<p><a href="https://vert.codrs.ru" target="_blank"><strong>Vert</strong></a> &mdash; {{ _('index.descr:vert') }}</p> </div>
<div class="block">
<strong>{{ _('index:altfronts') }}</strong>
<p><a href="https://s.lair.moe" target="_blank"><strong>4get</strong></a> &mdash; {{ _('index.descr:4get') }}</p>
<p><a href="https://tl.lair.moe" target="_blank"><strong>TransLite</strong></a> &mdash; {{ _('index.descr:tl') }}</p>
<p><a href="https://lyr.lair.moe" target="_blank"><strong>Intellectual</strong></a> &mdash; {{ _('index.descr:lyr') }}</p>
</div> </div>
<div class="block"> <div class="block">
@@ -34,8 +40,8 @@
<strong>DNS</strong>: <strong>DNS</strong>:
<ul> <ul>
<li><span class="mono">64.188.64.176</span></li> <li><span class="mono">64.188.64.176</span></li>
<li>DoT: <span class="mono">codrs.ru:853</span></li> <li>DoT: <span class="mono">lair.moe:853</span></li>
<li>DoH: <span class="mono">dns.codrs.ru</span></li> <li>DoH: <span class="mono">dns.lair.moe</span></li>
</ul> </ul>
</div> </div>
<p> <p>
@@ -48,9 +54,15 @@
{{ {{
_('index:bottom_text', _('index:bottom_text',
glitchtip='<a href="https://bug.codrs.ru" target="_blank"><strong>GlitchTip</strong></a>', glitchtip='<a href="https://bug.codrs.ru" target="_blank"><strong>GlitchTip</strong></a>',
baikal='<a href="https://dav.codrs.ru" target="_blank"><strong>Baikal</strong></a>', baikal='<a href="https://dav.lair.moe" target="_blank"><strong>Baikal</strong></a>',
freshrss='<a href="https://rss.codrs.ru" target="_blank"><strong>FreshRSS</strong></a>', freshrss='<a href="https://rss.lair.moe" target="_blank"><strong>FreshRSS</strong></a>',
) | safe ) | safe
}} }}
</div> </div>
<div class="webring">
<a class="block" href="https://webring.otomir23.me/lair/prev">&lt;</a>
<a class="block" href="https://webring.otomir23.me/">Otoring</a>
<a class="block" href="https://webring.otomir23.me/lair/next">&gt;</a>
</div>
{% endblock %} {% endblock %}
+5 -5
View File
@@ -7,7 +7,7 @@
<link rel="stylesheet" href="/static/style/risdeveau.css"> <link rel="stylesheet" href="/static/style/risdeveau.css">
<link rel="icon" type="image/webp" href="/static/icon/us/risdeveau.webp" /> <link rel="icon" type="image/webp" href="/static/icon/us/risdeveau.webp" />
<script <script
src="https://track.codrs.ru/api/script.js" src="https://track.lair.moe/api/script.js"
data-site-id="1" data-site-id="1"
defer defer
></script> ></script>
@@ -15,13 +15,13 @@
</head> </head>
<body> <body>
<header> <header>
<a href="{{ url_for('index') }}">Coders Squad</a> <a href="{{ url_for('index') }}">Lair</a>
</header> </header>
<main> <main>
<h3>Development</h3> <h3>Development</h3>
<div class="blocks badges"> <div class="blocks badges">
<a class="block" href="//g.codrs.ru/Sweetbread"> <a class="block" href="//g.lair.moe/Sweetbread">
<img class="icon" src="/static/icon/service/gitea.webp" /> <img class="icon" src="/static/icon/service/gitea.webp" />
Gitea Gitea
</a> </a>
@@ -41,7 +41,7 @@
<img class="icon" src="https://matrix.org/assets/favicon.ico" /> <img class="icon" src="https://matrix.org/assets/favicon.ico" />
Matrix Matrix
</a> </a>
<a class="block" href="//b.codrs.ru/@risdeveau"> <a class="block" href="//b.lair.moe/@risdeveau">
<img class="icon" src="/static/icon/service/sharkey.webp" /> <img class="icon" src="/static/icon/service/sharkey.webp" />
Fediverse Fediverse
</a> </a>
@@ -49,7 +49,7 @@
<img class="icon" src="https://cdn.prod.website-files.com/6257adef93867e50d84d30e2/66e3d80db9971f10a9757c99_Symbol.svg" /> <img class="icon" src="https://cdn.prod.website-files.com/6257adef93867e50d84d30e2/66e3d80db9971f10a9757c99_Symbol.svg" />
Discord Discord
</a> </a>
<a class="block" href="mailto:risdeveau@codrs.ru"> <a class="block" href="mailto:risdeveau@lair.moe">
Mail Mail
</a> </a>
</div> </div>