add a vanity page of sorts

This commit is contained in:
stupidcomputer 2024-10-09 10:46:22 -05:00
parent 1dc13010e5
commit e26b3cdfbc
10 changed files with 687 additions and 7 deletions

View File

@ -1,19 +1,34 @@
from flask import Flask from flask import Flask, request, redirect, abort, render_template
from flask import request
from flask import redirect
from flask import abort
import requests import requests
from .webgit import Gitea, Github from .webgit import Gitea, Github
from .utils import issue_sentinel, generate_sentinel, create_signature from .utils import issue_sentinel, generate_sentinel, create_signature
app = Flask(__name__) app = Flask(
__name__,
static_url_path="/bridge/static",
static_folder="./static"
)
app.config.from_envvar('GIT_BRIDGE_SETTINGS') app.config.from_envvar('GIT_BRIDGE_SETTINGS')
@app.route("/bridge") @app.route("/bridge")
def index(): def index():
return "you've reached the main page for an internal service. congrats!" gitea = Gitea(
api_token=app.config["GITEA_ACCESS_TOKEN"],
instance_name=app.config["GITEA_INSTANCE_DOMAIN"],
)
repos = gitea.get_user_repos().json()
output = []
for repo in repos:
if not repo["private"]:
output.append({
"name": repo["name"],
"desc": repo["description"],
"url": repo["html_url"],
})
return render_template("index.html", repos=output)
@app.route("/bridge/endpoints/gitea/repo", methods=["POST"]) @app.route("/bridge/endpoints/gitea/repo", methods=["POST"])
def gitea_handle_repo_action(): def gitea_handle_repo_action():

151
bridge/static/logo.svg Normal file
View File

@ -0,0 +1,151 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="100mm"
height="100mm"
viewBox="0 0 100 100"
version="1.1"
id="svg1"
xml:space="preserve"
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
sodipodi:docname="logo.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"><sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="0.92381453"
inkscape:cx="361.0032"
inkscape:cy="323.65804"
inkscape:window-width="1920"
inkscape:window-height="1080"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" /><defs
id="defs1"><pattern
inkscape:collect="always"
xlink:href="#pattern2853"
id="pattern2864"
patternTransform="translate(42.23939,37.38575)" /><pattern
inkscape:collect="always"
xlink:href="#pattern2838"
id="pattern2845"
patternTransform="translate(44.04167,18.04166)" /><linearGradient
id="linearGradient2826"><stop
style="stop-color:#dfb585;stop-opacity:1;"
offset="0"
id="stop2828" /><stop
style="stop-color:black;stop-opacity:1;"
offset="1"
id="stop2830" /></linearGradient><linearGradient
id="linearGradient2791"><stop
style="stop-color:#4d95ee;stop-opacity:1;"
offset="0"
id="stop2793" /><stop
style="stop-color:black;stop-opacity:1;"
offset="1"
id="stop2795" /></linearGradient><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2791"
id="linearGradient2797"
x1="213.11461"
y1="113.20445"
x2="213.11461"
y2="351.95709"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,6)" /><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2826"
id="linearGradient2832"
x1="193.60881"
y1="116.54642"
x2="193.60881"
y2="345.21436"
gradientUnits="userSpaceOnUse" /><pattern
patternUnits="userSpaceOnUse"
width="31.916666"
height="9.916667"
patternTransform="translate(19.375,-47.29167)"
id="pattern2838"><rect
y="0.625"
x="0.625"
height="8.666667"
width="30.666666"
id="rect2836"
style="opacity:1;fill:#7b6c52;fill-opacity:1;fill-rule:nonzero;stroke:#2d271e;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /></pattern><pattern
patternUnits="userSpaceOnUse"
width="34.958335"
height="9.916667"
patternTransform="translate(44.04167,18.04167)"
id="pattern2853"><g
id="g2849"
transform="translate(-44.04167,-18.04167)"><rect
style="fill:url(#pattern2845);stroke:none"
width="31.916666"
height="9.916667"
x="44.041668"
y="18.041666"
id="rect2841" /><rect
style="opacity:0;fill:#00cd0f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2847"
width="9.166667"
height="2.5833333"
x="69.833336"
y="21.916666" /></g></pattern></defs><g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"><g
id="g4"
transform="matrix(0.15875,0,0,0.15875,-3.8018304,-0.36145313)"> <path
id="teabag"
style="fill:#ffffff"
d="M 395.9,484.2 269,423.2 c -12.5,-6 -17.9,-21.2 -11.8,-33.8 l 61,-126.9 c 6,-12.5 21.2,-17.9 33.8,-11.8 17.2,8.3 27.1,13 27.1,13 l -0.1,-109.2 16.7,-0.1 0.1,117.1 c 0,0 57.4,24.2 83.1,40.1 3.7,2.3 10.2,6.8 12.9,14.4 2.1,6.1 2,13.1 -1,19.3 l -61,126.9 c -6.2,12.7 -21.4,18.1 -33.9,12 z" /> <g
id="g3"
transform="translate(-3.8,-19.6)"> <g
id="g2"> <path
style="fill:#609926"
d="m 622.7,149.8 c -4.1,-4.1 -9.6,-4 -9.6,-4 0,0 -117.2,6.6 -177.9,8 -13.3,0.3 -26.5,0.6 -39.6,0.7 0,39.1 0,78.2 0,117.2 -5.5,-2.6 -11.1,-5.3 -16.6,-7.9 0,-36.4 -0.1,-109.2 -0.1,-109.2 -29,0.4 -89.2,-2.2 -89.2,-2.2 0,0 -141.4,-7.1 -156.8,-8.5 -9.8,-0.6 -22.5,-2.1 -39,1.5 -8.7,1.8 -33.5,7.4 -53.8,26.9 -45,40.1 -33.5,103.9 -32.1,113.5 1.7,11.7 6.9,44.2 31.7,72.5 45.8,56.1 144.4,54.8 144.4,54.8 0,0 12.1,28.9 30.6,55.5 25,33.1 50.7,58.9 75.7,62 63,0 188.9,-0.1 188.9,-0.1 0,0 12,0.1 28.3,-10.3 14,-8.5 26.5,-23.4 26.5,-23.4 0,0 12.9,-13.8 30.9,-45.3 5.5,-9.7 10.1,-19.1 14.1,-28 0,0 55.2,-117.1 55.2,-231.1 -1.1,-34.5 -9.6,-40.6 -11.6,-42.6 z M 125.6,353.9 c -25.9,-8.5 -36.9,-18.7 -36.9,-18.7 0,0 -19.1,-13.4 -28.7,-39.8 -16.5,-44.2 -1.4,-71.2 -1.4,-71.2 0,0 8.4,-22.5 38.5,-30 13.8,-3.7 31,-3.1 31,-3.1 0,0 7.1,59.4 15.7,94.2 7.2,29.2 24.8,77.7 24.8,77.7 0,0 -26.1,-3.1 -43,-9.1 z m 300.3,107.6 c 0,0 -6.1,14.5 -19.6,15.4 -5.8,0.4 -10.3,-1.2 -10.3,-1.2 0,0 -0.3,-0.1 -5.3,-2.1 l -112.9,-55 c 0,0 -10.9,-5.7 -12.8,-15.6 -2.2,-8.1 2.7,-18.1 2.7,-18.1 L 322,273 c 0,0 4.8,-9.7 12.2,-13 0.6,-0.3 2.3,-1 4.5,-1.5 8.1,-2.1 18,2.8 18,2.8 L 467.4,315 c 0,0 12.6,5.7 15.3,16.2 1.9,7.4 -0.5,14 -1.8,17.2 -6.3,15.4 -55,113.1 -55,113.1 z"
id="path1" /> <path
style="fill:#609926"
d="m 326.8,380.1 c -8.2,0.1 -15.4,5.8 -17.3,13.8 -1.9,8 2,16.3 9.1,20 7.7,4 17.5,1.8 22.7,-5.4 5.1,-7.1 4.3,-16.9 -1.8,-23.1 l 24,-49.1 c 1.5,0.1 3.7,0.2 6.2,-0.5 4.1,-0.9 7.1,-3.6 7.1,-3.6 4.2,1.8 8.6,3.8 13.2,6.1 4.8,2.4 9.3,4.9 13.4,7.3 0.9,0.5 1.8,1.1 2.8,1.9 1.6,1.3 3.4,3.1 4.7,5.5 1.9,5.5 -1.9,14.9 -1.9,14.9 -2.3,7.6 -18.4,40.6 -18.4,40.6 -8.1,-0.2 -15.3,5 -17.7,12.5 -2.6,8.1 1.1,17.3 8.9,21.3 7.8,4 17.4,1.7 22.5,-5.3 5,-6.8 4.6,-16.3 -1.1,-22.6 1.9,-3.7 3.7,-7.4 5.6,-11.3 5,-10.4 13.5,-30.4 13.5,-30.4 0.9,-1.7 5.7,-10.3 2.7,-21.3 -2.5,-11.4 -12.6,-16.7 -12.6,-16.7 -12.2,-7.9 -29.2,-15.2 -29.2,-15.2 0,0 0,-4.1 -1.1,-7.1 -1.1,-3.1 -2.8,-5.1 -3.9,-6.3 4.7,-9.7 9.4,-19.3 14.1,-29 -4.1,-2 -8.1,-4 -12.2,-6.1 -4.8,9.8 -9.7,19.7 -14.5,29.5 -6.7,-0.1 -12.9,3.5 -16.1,9.4 -3.4,6.3 -2.7,14.1 1.9,19.8 -8.2,16.8 -16.4,33.6 -24.6,50.4 z"
id="path2" /> </g> </g> </g><g
id="g1"
transform="matrix(0.50182484,0,0,0.35249319,-51.630035,18.972095)"><path
id="path2799"
style="fill:#7b6c52;fill-opacity:1;fill-rule:nonzero;stroke:#2d271e;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="m 341.66665,225.23539 c 0,-12.89512 0,-90.69934 0,-105.23535 0,-29.072012 23.59467,-52.666688 52.66669,-52.666688 29.07201,0 52.66668,23.594676 52.66668,52.666688 L 418.05691,30.666667 H -18.056812 L -47.00002,120.00004 c 0,-29.072012 23.594674,-52.666688 52.666691,-52.666688 29.07201,0 52.66668,23.594676 52.66668,52.666688 0,14.53601 0,92.94011 0,105.23535 m 24.222179,0 c 0,-12.89512 0,-90.69934 0,-105.23535 0,-29.072012 23.59467,-52.666688 52.66669,-52.666688 29.07201,0 52.66668,23.594676 52.66668,52.666688 0,14.53601 0,92.94011 0,105.23535 m 24.22219,0 c 0,-12.89512 0,-90.69934 0,-105.23535 0,-29.072012 23.59467,-52.666688 52.66669,-52.666688 29.07201,0 52.66668,23.594676 52.66668,52.666688 0,14.53601 0,92.94011 0,105.23535"
sodipodi:nodetypes="cssccccssccsssccsssc" /><path
style="opacity:0.7;fill:url(#linearGradient2797);fill-opacity:1;fill-rule:evenodd;stroke:#447cc1;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m -6.6627813,217.65413 c 0,-28.37004 -13.1115797,-86.58823 0.4458511,-86.32344 84.6560832,1.65344 142.3439102,8.5 158.4814802,9.29365 32.27513,1.5873 58.20106,-4.23281 97.8836,-6.34921 39.68254,-2.1164 74.60317,3.70371 107.93651,3.17461 33.33333,-0.52911 37.43386,-3.96826 49.73545,-2.64551 24.08055,2.58931 3.8201,42.09524 3.8201,86.01059"
id="path1884"
sodipodi:nodetypes="csssssc" /><path
style="fill:url(#linearGradient2832);fill-opacity:1;fill-rule:evenodd;stroke:#784e1f;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 421.31443,97.523845 c 0,45.301975 0.5609,104.044905 0.5609,134.045145 -16.37801,0 -353.393449,-0.38532 -443.099849,-0.38532 0,-56.46314 2.984043,-109.38808 2.984043,-131.793769 18.28607177,11.882619 77.988729,47.037439 100.205554,47.891979 20.738622,0.25077 67.905562,22.79584 87.636022,28.15857 27.56341,2.34862 53.84138,-12.31897 81.50416,-8.10339 24.90771,1.58959 53.62348,2.5399 72.71854,-17.45229 15.32619,-12.89213 35.5339,-14.37299 53.87064,-18.56564 13.90946,-6.12504 36.38842,-20.82213 43.61999,-33.795285 z"
id="path1875"
sodipodi:nodetypes="cccccccccc" /><rect
style="opacity:1;fill:url(#pattern2864);fill-opacity:1;fill-rule:nonzero;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2834"
width="445.33334"
height="10"
x="-24.468958"
y="17.34409" /></g></g><metadata
id="metadata1"><rdf:RDF><cc:Work
rdf:about=""><cc:license
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" /></cc:Work><cc:License
rdf:about="http://creativecommons.org/publicdomain/zero/1.0/"><cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /></cc:License></rdf:RDF></metadata></svg>

After

Width:  |  Height:  |  Size: 10 KiB

130
bridge/static/main.css Normal file
View File

@ -0,0 +1,130 @@
:root { /* stolen from gitea */
--bg-color: rgb(32, 36, 48);
--lighter-bg: rgb(48, 51, 64);
--top-bar: rgb(35, 40, 52);
--reg-text: rgb(203, 208, 218);
--links: rgb(135, 171, 99);
--border-color: rgb(82, 87, 103);
--fonts-regular: -apple-system, "Segoe UI", system-ui, Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", "Twemoji Mozilla"
}
div#navbar {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
background-color: var(--top-bar);
border-style: solid;
border-width: 0px 0px 0.9px 0px;
border-bottom-color: var(--border-color);
gap: 0.5em;
padding-left: 0.5em;
}
div#container {
display: flex;
flex-direction: column;
margin-left: 0.5em;
margin-right: 0.5em;
margin-bottom: 0.5em;
padding: 0.25em;
gap: 0.5em;
}
img {
height: 3em;
}
.navelem {
margin: 0.4em;
display: flex;
justify-content: center;
align-items: center;
}
body {
background-color: var(--bg-color);
color: var(--reg-text);
font-family: var(--fonts-regular);
margin: 0px;
display: flex;
flex-direction: column;
}
a {
color: var(--links);
text-decoration: none;
}
a:hover {
text-decoration: underline dotted;
}
.repodisplay {
display: flex;
flex-direction: row;
background-color: var(--lighter-bg);
padding: 0.5em;
border: 0.9px;
border-style: solid;
border-radius: 5px;
border-color: var(--border-color);
gap: 2px;
}
div.navelem {
padding-left: 0.5em;
padding-right: 0.5em;
border-radius: 5px;
}
div.navelem > a {
color: var(--reg-text);
}
div.navelem > a:hover {
text-decoration: none;
}
div.navelem:hover {
color: var(--reg-text);
background-color: rgba(255, 255, 255, 0.55);
}
#title {
font-size: 4em;
font-weight: 400;
text-align: center;
}
#small {
vertical-align: top;
}
#titlespan {
width: 100%;
padding-top: 0.5em;
}
.reponame {
font-size: 2em;
}
.mainrepoinfo {
display: flex;
flex-direction: column;
}
.repostatusarea {
margin-left: auto;
display: flex;
flex-direction: column;
}

View File

@ -0,0 +1,24 @@
<!DOCTYPE html>
<html>
<head>
<title>gitweb bridge</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta charset="UTF-8" />
<link rel="stylesheet" href="{{ url_for('static', filename='main.css') }}">
</head>
<body>
<div id="navbar">
<div class="navelem">
<a href="/bridge">
<img src="{{ url_for('static', filename='logo.svg') }}" />
</a>
</div>
<div class="navelem">
<a href="/">Back to Gitea</a>
</div>
</div>
<div id="container">
{% block content %}{% endblock %}
</div>
</body>
</html>

View File

@ -0,0 +1,26 @@
{% extends 'base.html' %}
{% block content %}
<div id="titlespan">
<span id="title">bridge</span> <span id="small"><a href="https://git.beepboop.systems/stupidcomputer/gitea-github-sync"><i>[what is this?]</i></a></span>
</div>
{% for repo in repos %}
<div class="repodisplay">
<div class="mainrepoinfo">
<a href="{{ repo.url }}"><span class="reponame">{{ repo.name }}</span></a>
<span class="repodescription"><i>{{ repo.desc }}</i></span>
</div>
<div class="repostatusarea">
<span class="repostatus">active</span>
<a href="/bridge/{{ repo.name }}">[status]</a>
</div>
</div>
{% endfor %}
{% endblock %}

View File

@ -36,6 +36,8 @@ class WebgitClient:
self._post_request(r) self._post_request(r)
return r return r
def get(self, *args, **kwargs):
return self._request_wrapper("GET", *args, **kwargs)
def post(self, *args, **kwargs): def post(self, *args, **kwargs):
return self._request_wrapper("POST", *args, **kwargs) return self._request_wrapper("POST", *args, **kwargs)
@ -192,3 +194,8 @@ class Gitea(WebgitClient):
"type": "gitea", "type": "gitea",
}, },
) )
def get_user_repos(self):
return self.get(
self.api_prefix + "/user/repos"
)

167
icon/Bridge_drawing.svg Normal file
View File

@ -0,0 +1,167 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2"
sodipodi:version="0.32"
inkscape:version="0.44"
width="400"
height="200"
version="1.0"
sodipodi:docbase="D:\wiki_svg"
sodipodi:docname="Bridgedrawing.png.svg">
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs5">
<pattern
inkscape:collect="always"
xlink:href="#pattern2853"
id="pattern2864"
patternTransform="translate(42.23939,37.38575)" />
<pattern
inkscape:collect="always"
xlink:href="#pattern2838"
id="pattern2845"
patternTransform="translate(44.04167,18.04166)" />
<linearGradient
id="linearGradient2826">
<stop
style="stop-color:#dfb585;stop-opacity:1;"
offset="0"
id="stop2828" />
<stop
style="stop-color:black;stop-opacity:1;"
offset="1"
id="stop2830" />
</linearGradient>
<linearGradient
id="linearGradient2791">
<stop
style="stop-color:#4d95ee;stop-opacity:1;"
offset="0"
id="stop2793" />
<stop
style="stop-color:black;stop-opacity:1;"
offset="1"
id="stop2795" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2791"
id="linearGradient2797"
x1="213.11461"
y1="113.20445"
x2="213.11461"
y2="351.95709"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,6)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2826"
id="linearGradient2832"
x1="193.60881"
y1="116.54642"
x2="193.60881"
y2="345.21436"
gradientUnits="userSpaceOnUse" />
<pattern
patternUnits="userSpaceOnUse"
width="31.916666"
height="9.916667"
patternTransform="translate(19.375,-47.29167)"
id="pattern2838">
<rect
y="0.625"
x="0.625"
height="8.666667"
width="30.666666"
id="rect2836"
style="opacity:1;fill:#7b6c52;fill-opacity:1;fill-rule:nonzero;stroke:#2d271e;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</pattern>
<pattern
patternUnits="userSpaceOnUse"
width="34.958335"
height="9.916667"
patternTransform="translate(44.04167,18.04167)"
id="pattern2853">
<g
id="g2849"
transform="translate(-44.04167,-18.04167)">
<rect
style="fill:url(#pattern2845);stroke:none"
width="31.916666"
height="9.916667"
x="44.041668"
y="18.041666"
id="rect2841" />
<rect
style="opacity:0;fill:#00cd0f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2847"
width="9.166667"
height="2.5833333"
x="69.833336"
y="21.916666" />
</g>
</pattern>
</defs>
<sodipodi:namedview
inkscape:window-height="632"
inkscape:window-width="853"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
guidetolerance="10.0"
gridtolerance="10.0"
objecttolerance="10.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
showborder="true"
borderlayer="true"
inkscape:showpageshadow="false"
inkscape:zoom="0.1875"
inkscape:cx="173.32657"
inkscape:cy="364.01333"
inkscape:window-x="3"
inkscape:window-y="60"
inkscape:current-layer="svg2" />
<path
id="path2799"
style="fill:#7b6c52;fill-opacity:1;fill-rule:nonzero;stroke:#2d271e;stroke-width:1.2500006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 341.66665,225.23539 C 341.66665,212.34027 341.66665,134.53605 341.66665,120.00004 C 341.66665,90.928028 365.26132,67.333352 394.33334,67.333352 C 423.40535,67.333352 447.00002,90.928028 447.00002,120.00004 L 418.05691,30.666667 L -18.056812,30.666667 L -47.00002,120.00004 C -47.00002,90.928028 -23.405346,67.333352 5.666671,67.333352 C 34.738681,67.333352 58.333351,90.928028 58.333351,120.00004 C 58.333351,134.53605 58.333351,212.94015 58.333351,225.23539 M 82.55553,225.23539 C 82.55553,212.34027 82.55553,134.53605 82.55553,120.00004 C 82.55553,90.928028 106.1502,67.333352 135.22222,67.333352 C 164.29423,67.333352 187.8889,90.928028 187.8889,120.00004 C 187.8889,134.53605 187.8889,212.94015 187.8889,225.23539 M 212.11109,225.23539 C 212.11109,212.34027 212.11109,134.53605 212.11109,120.00004 C 212.11109,90.928028 235.70576,67.333352 264.77778,67.333352 C 293.84979,67.333352 317.44446,90.928028 317.44446,120.00004 C 317.44446,134.53605 317.44446,212.94015 317.44446,225.23539"
sodipodi:nodetypes="cssccccssccsssccsssc" />
<path
style="opacity:0.7;fill:url(#linearGradient2797);fill-opacity:1;fill-rule:evenodd;stroke:#447cc1;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M -6.6627813,217.65413 C -6.6627813,189.28409 -19.774361,131.0659 -6.2169302,131.33069 C 78.439153,132.98413 136.12698,139.83069 152.26455,140.62434 C 184.53968,142.21164 210.46561,136.39153 250.14815,134.27513 C 289.83069,132.15873 324.75132,137.97884 358.08466,137.44974 C 391.41799,136.92063 395.51852,133.48148 407.82011,134.80423 C 431.90066,137.39354 411.64021,176.89947 411.64021,220.81482"
id="path1884"
sodipodi:nodetypes="csssssc" />
<path
style="fill:url(#linearGradient2832);fill-opacity:1.0;fill-rule:evenodd;stroke:#784e1f;stroke-width:1.00000012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 421.31443,97.523845 C 421.31443,142.82582 421.87533,201.56875 421.87533,231.56899 C 405.49732,231.56899 68.481881,231.18367 -21.224519,231.18367 C -21.224519,174.72053 -18.240476,121.79559 -18.240476,99.389901 C 0.045595773,111.27252 59.748253,146.42734 81.965078,147.28188 C 102.7037,147.53265 149.87064,170.07772 169.6011,175.44045 C 197.16451,177.78907 223.44248,163.12148 251.10526,167.33706 C 276.01297,168.92665 304.72874,169.87696 323.8238,149.88477 C 339.14999,136.99264 359.3577,135.51178 377.69444,131.31913 C 391.6039,125.19409 414.08286,110.497 421.31443,97.523845 z "
id="path1875"
sodipodi:nodetypes="cccccccccc" />
<rect
style="opacity:1;fill:url(#pattern2864);fill-opacity:1;fill-rule:nonzero;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2834"
width="445.33334"
height="10"
x="-24.468958"
y="17.34409" />
</svg>

After

Width:  |  Height:  |  Size: 7.4 KiB

1
icon/Gitea_Logo.svg Normal file
View File

@ -0,0 +1 @@
<svg version="1.1" id="main_outline" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" style="enable-background:new 0 0 640 640;" xml:space="preserve" viewBox="5.67 143.05 628.65 387.55"> <g> <path id="teabag" style="fill:#FFFFFF" d="M395.9,484.2l-126.9-61c-12.5-6-17.9-21.2-11.8-33.8l61-126.9c6-12.5,21.2-17.9,33.8-11.8 c17.2,8.3,27.1,13,27.1,13l-0.1-109.2l16.7-0.1l0.1,117.1c0,0,57.4,24.2,83.1,40.1c3.7,2.3,10.2,6.8,12.9,14.4 c2.1,6.1,2,13.1-1,19.3l-61,126.9C423.6,484.9,408.4,490.3,395.9,484.2z"></path> <g> <g> <path style="fill:#609926" d="M622.7,149.8c-4.1-4.1-9.6-4-9.6-4s-117.2,6.6-177.9,8c-13.3,0.3-26.5,0.6-39.6,0.7c0,39.1,0,78.2,0,117.2 c-5.5-2.6-11.1-5.3-16.6-7.9c0-36.4-0.1-109.2-0.1-109.2c-29,0.4-89.2-2.2-89.2-2.2s-141.4-7.1-156.8-8.5 c-9.8-0.6-22.5-2.1-39,1.5c-8.7,1.8-33.5,7.4-53.8,26.9C-4.9,212.4,6.6,276.2,8,285.8c1.7,11.7,6.9,44.2,31.7,72.5 c45.8,56.1,144.4,54.8,144.4,54.8s12.1,28.9,30.6,55.5c25,33.1,50.7,58.9,75.7,62c63,0,188.9-0.1,188.9-0.1s12,0.1,28.3-10.3 c14-8.5,26.5-23.4,26.5-23.4s12.9-13.8,30.9-45.3c5.5-9.7,10.1-19.1,14.1-28c0,0,55.2-117.1,55.2-231.1 C633.2,157.9,624.7,151.8,622.7,149.8z M125.6,353.9c-25.9-8.5-36.9-18.7-36.9-18.7S69.6,321.8,60,295.4 c-16.5-44.2-1.4-71.2-1.4-71.2s8.4-22.5,38.5-30c13.8-3.7,31-3.1,31-3.1s7.1,59.4,15.7,94.2c7.2,29.2,24.8,77.7,24.8,77.7 S142.5,359.9,125.6,353.9z M425.9,461.5c0,0-6.1,14.5-19.6,15.4c-5.8,0.4-10.3-1.2-10.3-1.2s-0.3-0.1-5.3-2.1l-112.9-55 c0,0-10.9-5.7-12.8-15.6c-2.2-8.1,2.7-18.1,2.7-18.1L322,273c0,0,4.8-9.7,12.2-13c0.6-0.3,2.3-1,4.5-1.5c8.1-2.1,18,2.8,18,2.8 l110.7,53.7c0,0,12.6,5.7,15.3,16.2c1.9,7.4-0.5,14-1.8,17.2C474.6,363.8,425.9,461.5,425.9,461.5z"></path> <path style="fill:#609926" d="M326.8,380.1c-8.2,0.1-15.4,5.8-17.3,13.8c-1.9,8,2,16.3,9.1,20c7.7,4,17.5,1.8,22.7-5.4 c5.1-7.1,4.3-16.9-1.8-23.1l24-49.1c1.5,0.1,3.7,0.2,6.2-0.5c4.1-0.9,7.1-3.6,7.1-3.6c4.2,1.8,8.6,3.8,13.2,6.1 c4.8,2.4,9.3,4.9,13.4,7.3c0.9,0.5,1.8,1.1,2.8,1.9c1.6,1.3,3.4,3.1,4.7,5.5c1.9,5.5-1.9,14.9-1.9,14.9 c-2.3,7.6-18.4,40.6-18.4,40.6c-8.1-0.2-15.3,5-17.7,12.5c-2.6,8.1,1.1,17.3,8.9,21.3c7.8,4,17.4,1.7,22.5-5.3 c5-6.8,4.6-16.3-1.1-22.6c1.9-3.7,3.7-7.4,5.6-11.3c5-10.4,13.5-30.4,13.5-30.4c0.9-1.7,5.7-10.3,2.7-21.3 c-2.5-11.4-12.6-16.7-12.6-16.7c-12.2-7.9-29.2-15.2-29.2-15.2s0-4.1-1.1-7.1c-1.1-3.1-2.8-5.1-3.9-6.3c4.7-9.7,9.4-19.3,14.1-29 c-4.1-2-8.1-4-12.2-6.1c-4.8,9.8-9.7,19.7-14.5,29.5c-6.7-0.1-12.9,3.5-16.1,9.4c-3.4,6.3-2.7,14.1,1.9,19.8 C343.2,346.5,335,363.3,326.8,380.1z"></path> </g> </g> </g> </svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -0,0 +1,8 @@
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" width="560" height="162" fill="none" stroke="#000">
<clipPath id="c"><path d="m20,110q76,0 128-90 130,154 260,0 52,92 128,90"/></clipPath>
<path stroke-width="100" stroke-dasharray="1,9" clip-path="url(#c)"
d="m23,70h120m10,0h250m10,0h120"/>
<path stroke-width="10" d="m148,18v124m260,0V18"/>
<path stroke-width="2" d="m20,110q76,0 128-90 130,154 260,0 52,92 128,90H20m0,2h516"/>
</svg>

After

Width:  |  Height:  |  Size: 448 B

151
icon/logo.svg Normal file
View File

@ -0,0 +1,151 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="100mm"
height="100mm"
viewBox="0 0 100 100"
version="1.1"
id="svg1"
xml:space="preserve"
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
sodipodi:docname="logo.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"><sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="0.92381453"
inkscape:cx="361.0032"
inkscape:cy="323.65804"
inkscape:window-width="1920"
inkscape:window-height="1080"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" /><defs
id="defs1"><pattern
inkscape:collect="always"
xlink:href="#pattern2853"
id="pattern2864"
patternTransform="translate(42.23939,37.38575)" /><pattern
inkscape:collect="always"
xlink:href="#pattern2838"
id="pattern2845"
patternTransform="translate(44.04167,18.04166)" /><linearGradient
id="linearGradient2826"><stop
style="stop-color:#dfb585;stop-opacity:1;"
offset="0"
id="stop2828" /><stop
style="stop-color:black;stop-opacity:1;"
offset="1"
id="stop2830" /></linearGradient><linearGradient
id="linearGradient2791"><stop
style="stop-color:#4d95ee;stop-opacity:1;"
offset="0"
id="stop2793" /><stop
style="stop-color:black;stop-opacity:1;"
offset="1"
id="stop2795" /></linearGradient><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2791"
id="linearGradient2797"
x1="213.11461"
y1="113.20445"
x2="213.11461"
y2="351.95709"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,6)" /><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2826"
id="linearGradient2832"
x1="193.60881"
y1="116.54642"
x2="193.60881"
y2="345.21436"
gradientUnits="userSpaceOnUse" /><pattern
patternUnits="userSpaceOnUse"
width="31.916666"
height="9.916667"
patternTransform="translate(19.375,-47.29167)"
id="pattern2838"><rect
y="0.625"
x="0.625"
height="8.666667"
width="30.666666"
id="rect2836"
style="opacity:1;fill:#7b6c52;fill-opacity:1;fill-rule:nonzero;stroke:#2d271e;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /></pattern><pattern
patternUnits="userSpaceOnUse"
width="34.958335"
height="9.916667"
patternTransform="translate(44.04167,18.04167)"
id="pattern2853"><g
id="g2849"
transform="translate(-44.04167,-18.04167)"><rect
style="fill:url(#pattern2845);stroke:none"
width="31.916666"
height="9.916667"
x="44.041668"
y="18.041666"
id="rect2841" /><rect
style="opacity:0;fill:#00cd0f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2847"
width="9.166667"
height="2.5833333"
x="69.833336"
y="21.916666" /></g></pattern></defs><g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"><g
id="g4"
transform="matrix(0.15875,0,0,0.15875,-3.8018304,-0.36145313)"> <path
id="teabag"
style="fill:#ffffff"
d="M 395.9,484.2 269,423.2 c -12.5,-6 -17.9,-21.2 -11.8,-33.8 l 61,-126.9 c 6,-12.5 21.2,-17.9 33.8,-11.8 17.2,8.3 27.1,13 27.1,13 l -0.1,-109.2 16.7,-0.1 0.1,117.1 c 0,0 57.4,24.2 83.1,40.1 3.7,2.3 10.2,6.8 12.9,14.4 2.1,6.1 2,13.1 -1,19.3 l -61,126.9 c -6.2,12.7 -21.4,18.1 -33.9,12 z" /> <g
id="g3"
transform="translate(-3.8,-19.6)"> <g
id="g2"> <path
style="fill:#609926"
d="m 622.7,149.8 c -4.1,-4.1 -9.6,-4 -9.6,-4 0,0 -117.2,6.6 -177.9,8 -13.3,0.3 -26.5,0.6 -39.6,0.7 0,39.1 0,78.2 0,117.2 -5.5,-2.6 -11.1,-5.3 -16.6,-7.9 0,-36.4 -0.1,-109.2 -0.1,-109.2 -29,0.4 -89.2,-2.2 -89.2,-2.2 0,0 -141.4,-7.1 -156.8,-8.5 -9.8,-0.6 -22.5,-2.1 -39,1.5 -8.7,1.8 -33.5,7.4 -53.8,26.9 -45,40.1 -33.5,103.9 -32.1,113.5 1.7,11.7 6.9,44.2 31.7,72.5 45.8,56.1 144.4,54.8 144.4,54.8 0,0 12.1,28.9 30.6,55.5 25,33.1 50.7,58.9 75.7,62 63,0 188.9,-0.1 188.9,-0.1 0,0 12,0.1 28.3,-10.3 14,-8.5 26.5,-23.4 26.5,-23.4 0,0 12.9,-13.8 30.9,-45.3 5.5,-9.7 10.1,-19.1 14.1,-28 0,0 55.2,-117.1 55.2,-231.1 -1.1,-34.5 -9.6,-40.6 -11.6,-42.6 z M 125.6,353.9 c -25.9,-8.5 -36.9,-18.7 -36.9,-18.7 0,0 -19.1,-13.4 -28.7,-39.8 -16.5,-44.2 -1.4,-71.2 -1.4,-71.2 0,0 8.4,-22.5 38.5,-30 13.8,-3.7 31,-3.1 31,-3.1 0,0 7.1,59.4 15.7,94.2 7.2,29.2 24.8,77.7 24.8,77.7 0,0 -26.1,-3.1 -43,-9.1 z m 300.3,107.6 c 0,0 -6.1,14.5 -19.6,15.4 -5.8,0.4 -10.3,-1.2 -10.3,-1.2 0,0 -0.3,-0.1 -5.3,-2.1 l -112.9,-55 c 0,0 -10.9,-5.7 -12.8,-15.6 -2.2,-8.1 2.7,-18.1 2.7,-18.1 L 322,273 c 0,0 4.8,-9.7 12.2,-13 0.6,-0.3 2.3,-1 4.5,-1.5 8.1,-2.1 18,2.8 18,2.8 L 467.4,315 c 0,0 12.6,5.7 15.3,16.2 1.9,7.4 -0.5,14 -1.8,17.2 -6.3,15.4 -55,113.1 -55,113.1 z"
id="path1" /> <path
style="fill:#609926"
d="m 326.8,380.1 c -8.2,0.1 -15.4,5.8 -17.3,13.8 -1.9,8 2,16.3 9.1,20 7.7,4 17.5,1.8 22.7,-5.4 5.1,-7.1 4.3,-16.9 -1.8,-23.1 l 24,-49.1 c 1.5,0.1 3.7,0.2 6.2,-0.5 4.1,-0.9 7.1,-3.6 7.1,-3.6 4.2,1.8 8.6,3.8 13.2,6.1 4.8,2.4 9.3,4.9 13.4,7.3 0.9,0.5 1.8,1.1 2.8,1.9 1.6,1.3 3.4,3.1 4.7,5.5 1.9,5.5 -1.9,14.9 -1.9,14.9 -2.3,7.6 -18.4,40.6 -18.4,40.6 -8.1,-0.2 -15.3,5 -17.7,12.5 -2.6,8.1 1.1,17.3 8.9,21.3 7.8,4 17.4,1.7 22.5,-5.3 5,-6.8 4.6,-16.3 -1.1,-22.6 1.9,-3.7 3.7,-7.4 5.6,-11.3 5,-10.4 13.5,-30.4 13.5,-30.4 0.9,-1.7 5.7,-10.3 2.7,-21.3 -2.5,-11.4 -12.6,-16.7 -12.6,-16.7 -12.2,-7.9 -29.2,-15.2 -29.2,-15.2 0,0 0,-4.1 -1.1,-7.1 -1.1,-3.1 -2.8,-5.1 -3.9,-6.3 4.7,-9.7 9.4,-19.3 14.1,-29 -4.1,-2 -8.1,-4 -12.2,-6.1 -4.8,9.8 -9.7,19.7 -14.5,29.5 -6.7,-0.1 -12.9,3.5 -16.1,9.4 -3.4,6.3 -2.7,14.1 1.9,19.8 -8.2,16.8 -16.4,33.6 -24.6,50.4 z"
id="path2" /> </g> </g> </g><g
id="g1"
transform="matrix(0.50182484,0,0,0.35249319,-51.630035,18.972095)"><path
id="path2799"
style="fill:#7b6c52;fill-opacity:1;fill-rule:nonzero;stroke:#2d271e;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="m 341.66665,225.23539 c 0,-12.89512 0,-90.69934 0,-105.23535 0,-29.072012 23.59467,-52.666688 52.66669,-52.666688 29.07201,0 52.66668,23.594676 52.66668,52.666688 L 418.05691,30.666667 H -18.056812 L -47.00002,120.00004 c 0,-29.072012 23.594674,-52.666688 52.666691,-52.666688 29.07201,0 52.66668,23.594676 52.66668,52.666688 0,14.53601 0,92.94011 0,105.23535 m 24.222179,0 c 0,-12.89512 0,-90.69934 0,-105.23535 0,-29.072012 23.59467,-52.666688 52.66669,-52.666688 29.07201,0 52.66668,23.594676 52.66668,52.666688 0,14.53601 0,92.94011 0,105.23535 m 24.22219,0 c 0,-12.89512 0,-90.69934 0,-105.23535 0,-29.072012 23.59467,-52.666688 52.66669,-52.666688 29.07201,0 52.66668,23.594676 52.66668,52.666688 0,14.53601 0,92.94011 0,105.23535"
sodipodi:nodetypes="cssccccssccsssccsssc" /><path
style="opacity:0.7;fill:url(#linearGradient2797);fill-opacity:1;fill-rule:evenodd;stroke:#447cc1;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m -6.6627813,217.65413 c 0,-28.37004 -13.1115797,-86.58823 0.4458511,-86.32344 84.6560832,1.65344 142.3439102,8.5 158.4814802,9.29365 32.27513,1.5873 58.20106,-4.23281 97.8836,-6.34921 39.68254,-2.1164 74.60317,3.70371 107.93651,3.17461 33.33333,-0.52911 37.43386,-3.96826 49.73545,-2.64551 24.08055,2.58931 3.8201,42.09524 3.8201,86.01059"
id="path1884"
sodipodi:nodetypes="csssssc" /><path
style="fill:url(#linearGradient2832);fill-opacity:1;fill-rule:evenodd;stroke:#784e1f;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 421.31443,97.523845 c 0,45.301975 0.5609,104.044905 0.5609,134.045145 -16.37801,0 -353.393449,-0.38532 -443.099849,-0.38532 0,-56.46314 2.984043,-109.38808 2.984043,-131.793769 18.28607177,11.882619 77.988729,47.037439 100.205554,47.891979 20.738622,0.25077 67.905562,22.79584 87.636022,28.15857 27.56341,2.34862 53.84138,-12.31897 81.50416,-8.10339 24.90771,1.58959 53.62348,2.5399 72.71854,-17.45229 15.32619,-12.89213 35.5339,-14.37299 53.87064,-18.56564 13.90946,-6.12504 36.38842,-20.82213 43.61999,-33.795285 z"
id="path1875"
sodipodi:nodetypes="cccccccccc" /><rect
style="opacity:1;fill:url(#pattern2864);fill-opacity:1;fill-rule:nonzero;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2834"
width="445.33334"
height="10"
x="-24.468958"
y="17.34409" /></g></g><metadata
id="metadata1"><rdf:RDF><cc:Work
rdf:about=""><cc:license
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" /></cc:Work><cc:License
rdf:about="http://creativecommons.org/publicdomain/zero/1.0/"><cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /></cc:License></rdf:RDF></metadata></svg>

After

Width:  |  Height:  |  Size: 10 KiB