Compare commits

..

No commits in common. "main" and "master" have entirely different histories.
main ... master

60 changed files with 144 additions and 2978 deletions

View file

@ -1,36 +0,0 @@
name: Build
on:
push:
branches:
- 'main'
paths:
- flake.*
- src/**/*
- .forgejo/**/*
- mkdocs.yml
jobs:
# Build it locally, this helps caching for later
build:
runs-on: nix
steps:
# get the repo first
- uses: https://code.forgejo.org/actions/checkout@v4
- uses: https://forgejo.skynet.ie/Skynet/actions-deploy-to-skynet/get_lfs@v3
with:
repository: ${{ gitea.repository }}
ref_name: ${{ gitea.ref_name }}
- name: "Build the Wiki"
run: nix build --verbose
# deploy it upstream
deploy:
runs-on: docker
needs: [ build ]
steps:
- uses: https://forgejo.skynet.ie/Skynet/actions-deploy-to-skynet/deploy@v3
with:
input: 'skynet_website_wiki'
token: ${{ secrets.API_TOKEN_FORGEJO }}

59
.gitattributes vendored
View file

@ -1,59 +0,0 @@
# set line endings
eol=lf
# Documents
*.pdf filter=lfs diff=lfs merge=lfs -text
*.doc filter=lfs diff=lfs merge=lfs -text
*.docx filter=lfs diff=lfs merge=lfs -text
# Excel
*.xls filter=lfs diff=lfs merge=lfs -text
*.xlsx filter=lfs diff=lfs merge=lfs -text
*.xlsm filter=lfs diff=lfs merge=lfs -text
# Powerpoints
*.ppt filter=lfs diff=lfs merge=lfs -text
*.pptx filter=lfs diff=lfs merge=lfs -text
*.ppsx filter=lfs diff=lfs merge=lfs -text
# Images
*.png filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
*.ico filter=lfs diff=lfs merge=lfs -text
# Fonts
*.ttf filter=lfs diff=lfs merge=lfs -text
*.eot filter=lfs diff=lfs merge=lfs -text
*.woff filter=lfs diff=lfs merge=lfs -text
*.woff2 filter=lfs diff=lfs merge=lfs -text
# Video
*.mkv filter=lfs diff=lfs merge=lfs -text
*.mp4 filter=lfs diff=lfs merge=lfs -text
*.wmv filter=lfs diff=lfs merge=lfs -text
# Misc
*.zip filter=lfs diff=lfs merge=lfs -text
*.tar.gz filter=lfs diff=lfs merge=lfs -text
# ET4011
*.cbe filter=lfs diff=lfs merge=lfs -text
*.pbs filter=lfs diff=lfs merge=lfs -text
# Open/Libre office
# from https://www.libreoffice.org/discover/what-is-opendocument/
*.odt filter=lfs diff=lfs merge=lfs -text
*.ods filter=lfs diff=lfs merge=lfs -text
*.odp filter=lfs diff=lfs merge=lfs -text
*.odg filter=lfs diff=lfs merge=lfs -text
# QT
*.ui filter=lfs diff=lfs merge=lfs -text

View file

@ -1,3 +0,0 @@
#!/bin/sh
command -v git-lfs >/dev/null 2>&1 || { echo >&2 "\nThis repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting the 'post-checkout' file in the hooks directory (set by 'core.hookspath'; usually '.git/hooks').\n"; exit 2; }
git lfs post-checkout "$@"

View file

@ -1,3 +0,0 @@
#!/bin/sh
command -v git-lfs >/dev/null 2>&1 || { echo >&2 "\nThis repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting the 'post-commit' file in the hooks directory (set by 'core.hookspath'; usually '.git/hooks').\n"; exit 2; }
git lfs post-commit "$@"

View file

@ -1,3 +0,0 @@
#!/bin/sh
command -v git-lfs >/dev/null 2>&1 || { echo >&2 "\nThis repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting the 'post-merge' file in the hooks directory (set by 'core.hookspath'; usually '.git/hooks').\n"; exit 2; }
git lfs post-merge "$@"

View file

@ -1,4 +0,0 @@
#!/usr/bin/env bash
tar czf _git.tar.gz --exclude .git/lfs .git
git add _git.tar.gz

View file

@ -1,3 +0,0 @@
#!/bin/sh
command -v git-lfs >/dev/null 2>&1 || { echo >&2 "\nThis repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting the 'pre-push' file in the hooks directory (set by 'core.hookspath'; usually '.git/hooks').\n"; exit 2; }
git lfs pre-push "$@"

35
.gitignore vendored
View file

@ -1,35 +0,0 @@
# IDE folder
/.idea
# Microsoft office Lockfiles
~$*
*.tmp
# Test files
test.*
*.test.*
/test
# Output of compiling
/out
/build
/target
/cmake-build-debug
# for QT, both as single directory and as subfolders
/build-*-*
/*/build-*-*
# Dealing with BlueJ
*.bluej
*.out
*.ctxt
# Dealing with Mac users
.DS_Store
# Nix
result
/result
# Mkdocs
/site

View file

@ -1,9 +0,0 @@
MIT License
Copyright (c) 2024 Skynet
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View file

@ -1,17 +1,4 @@
# Skynet Wiki
[Wiki for Skynet][1]
# skynet.ie-renew
Webpage explaining membership options to Alumni members
Uses [mkdocs][2] to generate the site.
[1]: https://wiki.skynet.ie
[2]: https://www.mkdocs.org
## Hooks
Run this command to set up the hooks properly so teh git information can be stored within the repo
```bash
git config --local core.hooksPath .githooks/
```
Currrently living at http://skynet.ie/renew

BIN
_git.tar.gz (Stored with Git LFS)

Binary file not shown.

View file

@ -1,151 +0,0 @@
{
"nodes": {
"alejandra": {
"inputs": {
"fenix": "fenix",
"flakeCompat": "flakeCompat",
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1719514321,
"narHash": "sha256-ys1nJdZ8zB8JlpUbQmnj0hZalg03bEPgQdZN30DhETE=",
"owner": "kamadorueda",
"repo": "alejandra",
"rev": "d7552fef2ccf1bbf0d36b27f6fddb19073f205b7",
"type": "github"
},
"original": {
"owner": "kamadorueda",
"repo": "alejandra",
"type": "github"
}
},
"fenix": {
"inputs": {
"nixpkgs": [
"alejandra",
"nixpkgs"
],
"rust-analyzer-src": "rust-analyzer-src"
},
"locked": {
"lastModified": 1668234453,
"narHash": "sha256-FmuZThToBvRsqCauYJ3l8HJoGLAY5cMULeYEKIaGrRw=",
"owner": "nix-community",
"repo": "fenix",
"rev": "8f219f6b36e8d0d56afa7f67e6e3df63ef013cdb",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "fenix",
"type": "github"
}
},
"flakeCompat": {
"flake": false,
"locked": {
"lastModified": 1650374568,
"narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "b4a34015c698c7793d592d66adbab377907a2be8",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1668226844,
"narHash": "sha256-G/S4FBWDAqHeBS/hfXwUCJbnaKnrQFoeeKwzvZEOgxM=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "dd4767bf613bf9553eee6ff37c0996b9c876e7d8",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable-small",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1724395761,
"narHash": "sha256-zRkDV/nbrnp3Y8oCADf5ETl1sDrdmAW6/bBVJ8EbIdQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "ae815cee91b417be55d43781eb4b73ae1ecc396c",
"type": "github"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"root": {
"inputs": {
"alejandra": "alejandra",
"nixpkgs": "nixpkgs_2",
"utils": "utils"
}
},
"rust-analyzer-src": {
"flake": false,
"locked": {
"lastModified": 1668182250,
"narHash": "sha256-PYGaOCiFvnJdVz+ZCaKF8geGdffXjJUNcMwaBHv0FT4=",
"owner": "rust-lang",
"repo": "rust-analyzer",
"rev": "45ec315e01dc8dd1146dfeb65f0ef6e5c2efed78",
"type": "github"
},
"original": {
"owner": "rust-lang",
"ref": "nightly",
"repo": "rust-analyzer",
"type": "github"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

View file

@ -1,41 +0,0 @@
{
description = "Skynet Wiki";
inputs = {
utils.url = "github:numtide/flake-utils";
alejandra.url = "github:kamadorueda/alejandra";
};
outputs = {
self,
nixpkgs,
utils,
alejandra,
}:
utils.lib.eachDefaultSystem (
system: let
pkgs = nixpkgs.legacyPackages."${system}";
# find these here https://search.nixos.org/packages?channel=unstable&from=0&size=50&sort=relevance&type=packages&query=python312Packages.mkdocs
packages = with pkgs.python3Packages; [
mkdocs
mkdocs-material
mkdocs-git-authors-plugin
mkdocs-git-revision-date-localized-plugin
];
in {
formatter = alejandra.defaultPackage.${system};
defaultPackage = pkgs.stdenv.mkDerivation {
name = "skynet-wiki";
src = self;
buildInputs = packages;
buildPhase = "tar -zxf _git.tar.gz && mkdocs build";
installPhase = "mkdir -p $out; cp -R site/* $out;";
};
devShells.default = pkgs.mkShell {
name = "Skynet Wiki env";
packages = packages;
};
}
);
}

BIN
img/renew1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
img/renew2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
img/renew3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
img/renew4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
img/renew5.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
img/renew6.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

79
index.html Normal file
View file

@ -0,0 +1,79 @@
<! DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Skynet membership</title>
<link rel="stylesheet" href="main.css">
</head>
<body>
<h1>How to renew your skynet membership!</h1>
<h2>Dear Alumnus; welcome,</h2>
<p>Thank you for all your continued support throughout the years. Your contribution and the contribution of many others have made it possible for us to buy more servers which we use to give you the best service we can. With our new servers, we hope to improve the quality for our users and have less downtime.
<p>You can now purchase a 5-year subscription for €40. This subscription is for a multi-year limited alumni membership of the Computer Society (This type of membership does not entitle you to society subsidies or places on trips). You must hold a Computer Society membership in order to hold a Skynet account.</p>
<p>If there has been no payment made passed the point of expiration on your membership, Your Skynet account will freeze. You must pay for membership to unfreeze your account.</p>
<p>Below are instructions on how to renew your subscription. Until you make both an account and pay membership, you will not have renewed your subscription. Once you have completed the steps below, you will have renewed your subscription and will be issued a receipt.</p>
<p>When requesting membership, You have the option to pay online or pay cash. If you are paying online you can only pay for one year's membership.</p>
<h5 class="p1">IMPORTANT!!</h5>
<p class="p1">If you are looking to avail of the 5-year membership it is important to note that you can no longer pay for this on the Ul wolves site. Please select the pay with cash option and transfer the multi-year fee to the bank account shown below. </p>
<p class="p1">Also please note that you do not need a UL student E-mail address to sign up!</p>
<h1>Steps</h1>
<ol>
<li>Go to <a href="https://ulwolves.ie/">ULWolves.ie</a></li>
<p></p>
<img src="./img/renew1.jpg" alt="UL wolves site">
<p></p>
<li>Enter your email address and click Log In/Register</li>
<li>Select the appropriate option (UL Alumni Member)</li>
<p></p>
<img src="./img/renew2.png">
<p></p>
<li>Fill in your personal information on the next page.</li> <li>Verify your email address</li>
<p></p>
<img src="./img/renew3.png">
<p></p>
<li>Log back in</li>
<p></p>
<img src="./img/renew4.png">
<p></p>
<li>Scroll to find Computer under the Societies section</li>
<p></p>
<img src="./img/renew5.jpg">
<p></p>
<li>Click Request Membership</li>
<img src="./img/renew6.jpg">
<p></p>
<li>Fill out details and submit request.</li>
<li>Transfer €40 to our bank account:</li>
<p>BIC: <b>BOFIIE2D</b></p>
<p>IBAN: <b>IBANIE31BOFI90595047627767</b> </p>
<p>Please put your name in the reference.</p>
<p>If you are having trouble with this or want to arrange another payment method, get in touch.</p>
<li>Email the accounts team (accounts@skynet.ie) with:
<ul>The name on the UL Wolves account you created</ul>
<ul>your Skynet username and</ul>
<ul>the reference on the bank transfer.</ul>
</li>
</ol>
</body>
</html>

39
main.css Normal file
View file

@ -0,0 +1,39 @@
html {
background: #008B8B;
;
background-image: linear-gradient(270deg, rgb(230, 233, 233) 0%, rgb(216, 221, 221) 100%);
-webkit-font-smoothing: antialiased;
}
body {
background: #008B8B;
;
box-shadow: 0 0 2px rgba(0, 0, 0, 0.06);
color: #F0FFFF;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 16px;
line-height: 1.5;
margin: 0 auto;
max-width: 800px;
padding: 2em 2em 4em;
}
h1, h2 {
color: #F0FFFF;
font-weight: 600;
line-height: 1.3;
}
.p1 {
color: #FFFF00
}
img {
animation: colorize 2s cubic-bezier(0, 0, .78, .36) 1;
background: transparent;
border: 10px solid rgba(0, 0, 0, 0.12);
border-radius: 4px;
display: block;
margin: 1.3em auto;
max-width: 95%;
}

View file

@ -1,36 +0,0 @@
site_name: Skynet Wiki
site_url: https://wiki.skynet.ie
repo_url: https://forgejo.skynet.ie/Skynet/wiki
edit_uri: src/branch/main/src
docs_dir: ./src/
theme:
name: material
palette:
# Palette toggle for light mode
- scheme: default
toggle:
icon: material/brightness-7
name: Switch to dark mode
# Palette toggle for dark mode
- scheme: slate
toggle:
icon: material/brightness-4
name: Switch to light mode
features:
- search.suggest
- search.highlight
- navigation.expand
- content.action.view
icon:
view: material/eye
plugins:
- search
- git-authors:
show_email_address: false
- git-revision-date-localized:
enable_creation_date: true
markdown_extensions:
- tables
- pymdownx.caret
- pymdownx.mark
- pymdownx.tilde

BIN
src/assets/backgroundsharkycoin.png (Stored with Git LFS)

Binary file not shown.

BIN
src/assets/favicon/favicon-16x16.png (Stored with Git LFS)

Binary file not shown.

File diff suppressed because one or more lines are too long

View file

@ -1 +0,0 @@
pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#1d1f21;color:#c5c8c6}.hljs span::selection,.hljs::selection{background:#373b41}.hljs span::-moz-selection,.hljs::-moz-selection{background:#373b41}.hljs-name,.hljs-title{color:#f0c674}.hljs-comment,.hljs-meta,.hljs-meta .hljs-keyword{color:#707880}.hljs-deletion,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol{color:#c66}.hljs-addition,.hljs-doctag,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-string{color:#b5bd68}.hljs-attribute,.hljs-code,.hljs-selector-id{color:#b294bb}.hljs-bullet,.hljs-keyword,.hljs-selector-tag,.hljs-tag{color:#81a2be}.hljs-subst,.hljs-template-tag,.hljs-template-variable,.hljs-variable{color:#8abeb7}.hljs-built_in,.hljs-quote,.hljs-section,.hljs-selector-class,.hljs-type{color:#de935f}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}

View file

@ -1,100 +0,0 @@
html {
background: #008B8B url(./backgroundsharkycoin.png);
-webkit-font-smoothing: antialiased;
}
body {
text-align: left;
background: #008B8B;
box-shadow: 0 0 2px rgba(0, 0, 0, 0.06);
color: #F0FFFF;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 16px;
line-height: 1.5;
margin: 0 auto;
max-width: 800px;
padding: 2em 2em 1em;
}
h1, h2 {
color: #F0FFFF;
font-weight: 600;
line-height: 1.3;
}
.p1 {
color: #FFFF00
}
/* Title bar */
header {
display: inline-flex;
align-items: center;
justify-content: center;
height: auto;
}
header img {
float: left;
}
.boxes {
display: -moz-flex;
background-color: #008B8B;
margin-left: 20%;
margin-right: 20%;
margin-bottom: 3%;
}
#table {
display: inline;
}
/*
Sticky Footer
https://developer.mozilla.org/en-US/docs/Web/CSS/Layout_cookbook/Sticky_footers
*/
html, body {
box-sizing: border-box;
min-height: 100%;
}
.wrapper {
box-sizing: border-box;
min-height: 100%;
display: flex;
flex-direction: column;
}
.page-header, .page-footer {
flex-grow: 0;
flex-shrink: 0;
}
.page-body {
flex-grow: 1;
background-color: #008B8B;
}
/*
Spacing in lists
*/
li p {
margin: 0;
}
/*This page only*/
.p1 {
color: #FFFF00
}
img {
animation: colorize 2s cubic-bezier(0, 0, .78, .36) 1;
background: transparent;
display: block;
margin: 1.3em auto;
max-width: 95%;
}

View file

@ -1,193 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
viewBox="0 0 980.7 549.1" style="enable-background:new 0 0 980.7 549.1;" xml:space="preserve">
<style type="text/css">
.st0{fill:#0B0B0B;}
.st1{fill:#7F7F7F;}
.st2{fill:#F9F9F9;}
</style>
<g id="XMLID_1_">
<path id="XMLID_138_" class="st0" d="M246.1,481.3c2.9,8.5,6.7,16.7,7.7,25.7c0.2,2,0.2,4-0.2,5.9c-1.5,8.1-6.5,10.7-13.7,6.9
c-8.2-4.3-13.9-11.3-19.6-18.3c-1.1-1.4-2.3-2.7-4.3-5.1c0.4,5.1,0.6,8.9,1,12.8c0.3,3.3,0.5,6.6-0.2,9.9
c-1.4,6.8-5.4,9.5-12.3,8.1c-6.7-1.4-12.4-5-17.8-8.9c-10.2-7.2-20.2-14.8-28-24.7c-1.9-2.4-3.6-1.5-5.7-0.9
c-27.4,7.7-55.1,14.1-83.4,17.4c-13.9,1.6-27.9,2.2-41.6-2.1c-14.7-4.7-22.3-15-23-30.3c-0.8-16.5,3.5-31.6,11.8-45.7
c14.6-24.8,34.1-45.5,54.6-65.4c6-5.8,6.2-5.7,0.3-11.5c-1.1-1.1-2.1-2.1-3.1-3.2c-6.2-7.2-4.5-17.4,4-21.9
c2.4-1.3,4.9-1.5,7.6-0.1c5.6,2.9,10.3,6.9,14,11.8c2.1,2.8,3.2,2.3,5.7,0.4c24.3-18.1,48-37.1,74.7-51.7c4.1-2.2,8.3-4.2,12.5-6.2
c1.6-0.8,2.8-1.3,1.7-3.6c-8.8-18.2-7-36.9-1.7-55.5c6-21.1,17.6-39.4,30.5-56.8c6-8,14.1-13.7,22.5-18.8
c21.7-13,41.8-10.2,59.4,8.6c3.1,3.3,4.7,3.3,7.5-0.1c3.4-4.1,7.6-7.4,11.9-10.6c16.6-12.3,34-10.7,51.3-2.1
c10.7,5.4,19,14,26.7,23.1c3.4,4,11.6,3.6,14.3-1c4.5-7.6,8.7-15.3,13.4-23.5c-3.9,0.3-7-0.5-9.2-3.7c-1.9-2.9-2.7-6-2.9-9.4
c-0.8-15.1-8.1-25.7-22.1-31.6c-4-1.7-8.1-1.6-12.3-1.1c-2.1,0.3-4.3,0.4-6.5,0.7c-7.2,0.8-14-6.4-11.5-14.5
c3.3-10.3,14.4-21,24.8-21c10.9,0,19.4,5.6,26,13.9c9.4,11.9,13,26,15.5,40.6c1.1,6.5,1.8,13.1,1.8,20c4.2-6.3,8.4-12.6,12.5-19
c23.4-36.2,52.8-66.4,90-88.5c20.9-12.4,44.2-18.1,67.8-22.5C614.1,5,629.4,5,644.7,9.1c0.6,0.2,1.2,0.5,2.3,0.9
c-3.6,6.9-8.3,12.8-12.9,18.8c-15.3,20.2-26.5,42.4-34,66.8c-10.6,34.4-10.7,68.4,0.2,102.6c0.2,0.5,0.4,1,0.4,1.4
c0.9,12.3,8.3,19.1,18.7,25c33.7,19.4,63.8,44.1,96,65.7c17.6,11.8,36.2,21.7,56.1,29.3c23.7,9,45.8,8.3,68.3-5
c39.3-23.2,80.5-42.7,121.8-62c4.7-2.2,9.7-3.3,15.3-4c-4.8,4.3-9.3,9-14.3,13c-27.7,22-49.2,49-66,80c-6.6,12.1-13.2,24.3-20.4,36
c-12.2,19.8-9.6,38.7,1.7,57.9c12.2,20.7,28.2,38.3,44.3,55.8c14.7,16.1,29.7,32.1,39.7,51.7c0.3,0.5,1,1,0.3,2.1
c-10.9-0.5-21.6-3.4-31.2-8.6c-37-20.4-72.1-43.7-101.6-74.3c-5.3-5.5-9.6-11.9-14.9-17.5c-15.6-16.4-34.5-19.8-56.7-10.7
c-3.2,1.3-6.3,3.3-9.6,4.2c-6.2,1.6-7.1,5.6-6.3,11.1c1.1,7.7,1.1,15.6,0.8,23.4c-0.2,5.6-2.4,10-7.8,12.4
c-5.3,2.3-10.1,1-14.4-2.5c-4.4-3.6-7-8.4-10.1-13c-0.5-0.8-0.8-2-2.1-1.6c-1,0.3-0.7,1.4-0.9,2.1c-0.1,0.3-0.2,0.6-0.2,1
c-1.2,4.8-2.4,9.7-8,11.1c-6,1.5-10.4-1.7-13.9-5.9c-4.8-5.8-9.2-11.8-12.7-18.5c-0.8-1.6-1.3-3.3-3.8-3.3c-11,0.1-22,0.2-33-0.1
c-11-0.3-21.9-1.2-33.3-1.9c1.1,3.8,3.5,6.1,5.5,8.6c11.6,14,26.5,24.2,40.9,35c9.2,6.9,19.2,12.6,27.6,20.6c1.1,1,2.1,2.1,2.9,3.4
c6.4,10.3,4.3,15.5-7.9,18.7c-10,2.6-19.8,0-29.6-1.7c-18.6-3.2-34.3-13.3-50.8-21.6c-27-13.6-51.5-31.2-75.8-49
c-3-2.2-5.9-2.9-9.6-2.9c-14.6,0.1-29.3,0.8-44-0.6c-5.8-0.5-5.9-0.5-5.1,5.5c1.2,8.4,4,16.1,10,22.4c7.1,7.5,13.4,15.7,21,22.8
c1.5,1.4,3,3.2,2.4,5.1c-0.7,2.1-3.1,2-5.1,2.1c-4.2,0.2-8.3-0.1-12.3-1.5c-18.1-6.2-35.7-13.8-52.3-23.4
c-12.2-7-21.1-17.3-26.8-30.1c-3.5-8-9-14.8-13.6-22.1c-1.2-1.9-2.9-2.7-5-2.9c-7.6-0.9-15.3,0.6-22.9-1c-2.4-0.5-1.5,1.5-1.4,2.7
c0.5,4.5,1,8.9,1.6,13.4c0.5,3.8-1,5.3-4.9,5.6c-6.8,0.5-12.3-2.6-17.5-6.1c-3.6-2.4-6-2.2-9.6,0.4c-6.5,4.7-12.4,10.1-17.3,16.4
c-1.8,2.3-2.5,4.5-2.3,7.3c0.5,9.1,0.8,18.3,1.3,27.4c0.3,5.7-3.3,8.4-8.7,6.3c-5.1-2-9.9-4.9-14.2-8.2
c-10.6-8.3-21.2-16.7-31.8-25c-0.5-0.3-1-0.6-1.4-0.9C245.2,480,245.6,480.7,246.1,481.3z M403.9,316.5c-0.6-0.1-1.5-0.6-1.7-0.4
c-0.6,0.8,0.4,1,0.8,1.3c4.6,4.8,9.2,9.7,13.7,14.5c3.8,4,7.4,8.2,8.5,13.9c0.3,1.3,1,3.3-1.1,3.8c-2.3,0.6-2.2-1.5-2.4-2.9
c-0.5-3.2-1.9-6.1-4.1-8.5c-6.4-7-13-13.8-19.5-20.7c-1.7-1.8-3-1.7-4.3,0.4c-2,3.3-3.9,6.6-6.2,9.6c-2,2.6-2,4.1,0.7,6.4
c9.6,8,18.7,16.6,27.1,25.8c7.4,8.1,12.4,17.4,10.1,29c-1.4,6.8-5.9,11.9-12.5,12.6c-11.8,1.3-22.7-0.9-30.1-11.5
c-5.5-7.8-12.5-14.3-19.4-20.8c-4.6-4.3-10.3-5.9-16.5-6.1c-4.9-0.1-10.5,5.7-9.6,10c3.5,18.1,6.9,36.3,10.6,54.4
c1.8,9.1,2,9,11,9.7c8.2,0.7,16.6-1.1,24.5,2.9c21.5,10.8,44.9,14.4,68.2,18.3c17,2.8,34.2,2.2,51.3,2.3c4.5,0,5.8-1.3,3.8-5.8
c-1.9-4.4-2.4-9.3-2.3-14.2c0.2-7,2.3-13.4,7-18.8c0.8-0.9,1.5-2.9,3-1.9c1.8,1.2-0.4,2.1-0.9,3.2c-0.1,0.1-0.2,0.3-0.3,0.4
c-8.8,11.1-6.9,23-2.8,35.1c0.4,1.2,1.5,1.7,2.5,2.4c24,17.4,48,34.8,74.3,48.8c22.8,12.1,45.1,25.2,72,26.7
c6.3,0.3,11.8-0.9,17.3-3.5c3.1-1.5,3.3-3.6,2.2-6.6c-1.9-5.1-5.3-8.8-9.6-11.8c-7.4-5.2-14.8-10.2-22.1-15.5
c-15-11.1-30.4-21.7-42.3-36.3c-6.2-7.6-11-15.3-8.6-25.8c1.4-6.3-0.8-11.9-5.7-16.7c-10.4-10.5-23.1-12.3-36.9-10.9
c-7.1,0.7-14,2.7-20.9,4.6c-1,0.3-2.5,1.4-2.9-0.3c-0.4-1.7,1.4-1.5,2.4-1.8c2.5-0.8,5.1-1.6,7.7-2.3c13.5-3.4,26.9-4.7,40.2,0.6
c13,5.1,19.4,15.1,18.5,29c-0.2,2.7-0.1,5.3-0.2,8c-0.1,2.1,0.7,2.8,2.9,2.9c23.5,0.5,46.9,2.1,70.4,1.4
c14.5-0.4,28.8-2.4,43.1-5.2c15.3-2.9,28.9-9.9,43.1-15.7c23.8-9.8,45.6-4.2,61.9,15.5c8,9.6,16,19.2,25.4,27.5
c18.5,16.4,38.6,30.7,59.3,44c13.6,8.7,27.2,17.6,43,21.8c2.8,0.7,5.5,2.1,9,1.4c-0.7-1.3-1.2-2.4-1.8-3.3
c-10-15.8-22.3-29.9-35-43.6c-15.3-16.5-30.3-33.2-42.5-52.2c-14.4-22.5-17.9-44.9-2.6-68.7c8.1-12.6,14.8-26.1,22.3-39
c14-24,30.2-46.3,51.6-64.5c4-3.4,7.8-7.1,12.3-11.2c-4.3-0.5-6.6,1.8-9.1,3.1c-17.2,8.8-35.3,15.6-52.4,24.8
c-22.7,12.2-45.6,24.2-68.3,36.6c-13.3,7.3-27.2,8.4-41.7,5.5c-20.6-4.2-39.4-13.1-57.5-23.5c-26.5-15.2-50.2-34.5-75.3-51.8
c-35.7-24.6-72.1-48.1-113.4-62.5c-30.2-10.6-60.9-19.4-93.3-20.3c-15.9-0.4-31.5,1.1-47.5,5.2c1.4,2,2.4,3.6,3.6,5.2
c5.8,7.5,10.6,15.5,12.4,24.8c3.5,17.7,3.2,35.5,0.4,53.2c-2.8,17.5-10.2,33.3-18.5,48.8c-0.9,1.7-3.1,3.4,0.8,4.7
c13.6,4.3,25.5,12.1,37.6,19.4c12.6,7.6,24.2,16.7,31.9,29.6c10.5,17.5,8.3,32.8-6.7,46.6c-21.2,19.4-64.2,26.3-94.5,7.2
c-1.7-1-3-2.6-4.3-4.1c-0.8-0.8-1.6-2-0.3-3c1.3-1.1,2.1-0.1,2.9,0.9c2.1,2.7,5,4.3,8,5.8c26.6,12.7,52.8,10.8,78-3.5
c11.2-6.3,19.8-15.7,19.8-29.8c0-9.5-4.4-17.8-10.4-24.9C447.2,337.2,425.8,326.5,403.9,316.5z M8.5,472.9
c0,20.6,7.6,29.8,27.7,33.9c9.1,1.8,18.2,1.5,27.4,0.8c17-1.5,33.5-5.1,50.2-8.4c37.8-7.4,73.7-20.6,108.6-36.6
c34.6-15.9,64.3-38.8,91-65.8c8.2-8.3,14.7-17.6,20.7-27.4c7.5-12.3,17.5-14,28.9-5c3.3,2.6,6.3,5.5,9.3,8.3
c7.5,6.8,13.4,15.3,21.6,21.5c6.4,4.8,18.7,5.4,24.4,0.8c5.1-4,5.9-12.6,2-20.8c-3.3-6.9-7.9-12.7-13.4-17.9
c-33.7-32.2-71.5-57.5-117.1-69.8c-17.7-4.8-35.5-9-53.8-10.3c-19-1.3-35.9,5.6-52.5,13.7c-29.8,14.6-55.2,35.9-81.9,55.3
c-2.2,1.6-2.3,3.1-1,5.4c3.8,6.9,7,14,9.7,21.4c1.3,3.5,2.3,7,2.1,10.7c-0.3,3.5-1,7.2-4.9,8.5c-3.9,1.4-7.3-0.2-9.9-3.1
c-2.9-3.2-5.1-7-7.1-10.9c-2.1-4.2-5.1-7.8-8.1-11.3c-1.6-1.9-2.9-2.1-4.9-0.2c-18.6,18-36.6,36.5-51.2,57.9
C16,438.3,8.1,454.2,8.5,472.9z M599.5,212.1c0.1-1.3,0.2-1.8,0.1-2.2c-1.1-4.5-1.9-9.1-3.3-13.6c-15.7-49.7-6-96.3,16.8-141.4
c6.7-13.3,16-24.9,24.8-36.9c4.6-6.3,4.7-6.3-3.1-7.7c-18.1-3.3-35.8,0.3-53.4,4.1c-35.8,7.6-65.7,26.4-92,50.9
c-30.6,28.4-52.5,63.5-72.9,99.5c-1.8,3.2-0.7,3.6,2.4,3.3c5.1-0.6,10.3-1,15.4-1.3c37.3-2.2,72.6,7,107.4,19.1
C561.6,192.8,580.7,201.3,599.5,212.1z M311.5,226.2c3.8,0,7.6-0.2,11.4-0.8c28-4.3,55.4-10.9,82.7-18.3c9.1-2.5,9.2-2.4,5.4-11
c-0.2-0.5-0.5-0.9-0.7-1.3c-8.5-15.9-18.6-30.4-33.3-41.1c-20.6-15-42.9-17.2-62.8,2.1c-15.3,14.9-26,33.1-35.6,52
c-2.1,4.2-0.8,6.6,2.5,9.1C290.1,223.7,300.4,226.1,311.5,226.2z M273.8,215c-0.8,3-1.4,5.1-1.9,7.2c-4,16.7-8.6,33.2-7.2,50.6
c0.2,2.7,0.8,3.9,3.8,4.5c40.4,8.6,77.4,24.9,110.7,49.4c2.6,1.9,3.9,1.7,5.7-1.1c8-12.1,15.2-24.6,21.1-37.9
c1.9-4.3,4.1-8.6,4.8-13.3c-1.4-0.3-2.2,0.5-2.9,1c-14.6,10.1-30.8,14.4-48.5,13.8c-5.5-0.2-10.5-1.7-15-4.8
c-11.9-8.3-17.5-19.4-16.2-34.2c0.7-7.1,2.1-14.1,3.4-21.6C310.7,231.1,290.6,231.3,273.8,215z M243.3,207.1
c7.4,0.3,17.5-0.3,27.6-1.1c3-0.2,4.7-1.3,6.2-3.9c5.6-9.8,11.1-19.8,17.8-28.9c7.6-10.3,8.4-7.3-1.5-16.5
c-11.4-10.6-24.3-14.8-39.4-9.8c-7.2,2.4-13.6,6.2-19.8,10.5c-13.8,9.5-21.9,23.5-30,37.5c-3.6,6.3-3,7.8,4,10.2
c1.3,0.4,2.6,0.6,3.9,0.9C221.5,207.8,231,206.9,243.3,207.1z M232.8,461.6c1.2,1.3,2,2.1,2.8,3c11.8,12.5,25.8,22.6,39,33.4
c5.6,4.6,11.6,8.9,18.4,11.8c5.4,2.3,5.8,2,5.6-4c0-1.7-0.1-3.3-0.1-5c-0.4-19.8-2.8-39.5-1.6-59.3c0.2-3-0.6-4.4-3.1-5.8
c-10.3-5.9-10.3-6.1-19.5,1.2C261.8,447,247.2,453.6,232.8,461.6z M486.6,517.4c-7.5-7.1-13.2-15-20-21.7
c-8.1-8.1-12.4-17.6-13.5-28.7c-0.4-3.4-1.6-4.8-5.1-5.3c-15.3-2.2-30.5-5-45.2-9.9c-5.6-1.9-11.1-4.1-16.6-6.1
c3.9,7.2,8.2,13.6,11.4,20.8c4.9,10.9,12.7,19.7,22.9,25.8c16.3,9.8,33.8,17.3,51.7,23.6C476.4,517.4,480.9,518.8,486.6,517.4z
M223,211.1c-7-0.4-14.2-0.8-20-4.9c-4.1-2.8-5.3-1.2-6.6,2.2c-4.3,11.5-9,22.9-9.8,35.4c-0.8,11.7-0.7,23.3,4.4,34.2
c1.2,2.6,2.2,3.4,5.2,2c8.8-4.1,18.1-6.4,27.8-7.1c9.5-0.7,19,0.3,29.4,0.9C225.8,259.1,218.4,243.5,223,211.1z M285.4,427.4
c17.9,9.9,35.4,19.5,52.9,29.1c1.6,0.9,3.3,1.7,5,2.1c4.5,1.1,5.7,0,5.3-4.6c-1.2-17-5.6-33.4-8.6-50.1c-1.7-9.1-3.4-18.2-5.1-27.3
C322.5,397.7,302.3,410.8,285.4,427.4z M160.2,491.1c9.5,10.8,20.4,19.3,31.9,26.9c3.9,2.6,7.9,4.9,12.5,6c5.8,1.3,8.4-0.2,8.9-6
c0.6-7.3,0-14.6-1.4-21.8c-1.5-7.7-7.2-12.1-12.2-17.2c-0.9-0.9-1.8-1.2-3.1-0.8C184.9,482.5,172.8,486.7,160.2,491.1z
M201.8,476.4c9.9,9,17.6,19.1,25.9,28.9c3.9,4.7,8.2,9.2,13.9,11.9c4.9,2.3,7.5,1.1,8.7-4.2c0.7-3.1,0.6-6.3-0.1-9.4
c-2.3-10.2-6.6-19.8-10.6-29.5c-1.7-4.1-5.7-6.4-8.6-9.6c-1.2-1.3-2.4-0.5-3.6,0.1C219.1,468.5,210.8,472.3,201.8,476.4z
M739.7,465.9c-0.1,0-0.1,0-0.2,0c-0.3-6.1-0.8-12.3-0.9-18.4c-0.1-3.2-1-4.2-4.2-3c-6.9,2.5-13.9,4.4-21.1,5.6
c-2.4,0.4-3.6,1.5-3.9,4.2c-0.6,7.5,8.7,24.4,15.5,27.5c6.6,3,12.4,0.2,13.9-7C739.5,471.9,739.4,468.9,739.7,465.9z M674.1,455
c5.8,8,9.6,16,16.3,21.8c5.4,4.7,10.7,2.9,12.6-3.7c1.8-5.9,2.1-12.1,2.8-18.2c0.4-3.1-1.3-3.4-3.6-2.9
C693.5,453.9,684.5,454.5,674.1,455z M300.6,470.1c5.5-7.6,11.9-12.9,18.9-17.5c1.2-0.8,1.3-1.9-0.1-2.7
c-6.1-3.3-12.1-6.6-18.8-10.2C300.6,449.9,300.6,459.3,300.6,470.1z M961.2,257.6c-0.1-0.1-0.2-0.3-0.3-0.3c-0.1,0-0.2,0.2-0.4,0.3
c0.1,0.1,0.2,0.3,0.3,0.3C961,257.9,961.1,257.7,961.2,257.6z M411.2,273.6c-0.1-0.1-0.2-0.2-0.2-0.3c-0.1,0.1-0.2,0.2-0.2,0.3
s0.1,0.2,0.2,0.3C411.1,273.7,411.1,273.7,411.2,273.6z"/>
<path id="XMLID_137_" class="st0" d="M154.7,142.2c0.3-14.5,4.3-27.9,12.5-39.8c8.1-11.8,19.5-18.5,33.8-19.3
c11.2-0.6,18.4,7,17.3,17.5c-0.3,3.3-1.6,5.7-5.1,6.5c-2.1,0.5-4.1,1.4-6.2,1.7c-20.6,2.5-35.4,16.6-38.6,36.9
c-0.6,3.6-1.1,7.3-2.7,10.6c-1,2-2.1,3.8-4.7,3.9c-2.6,0-3.2-2.1-4-3.8C154.8,151.9,154.5,147.1,154.7,142.2z"/>
<path id="XMLID_134_" class="st1" d="M403.9,316.5c21.9,10,43.3,20.7,59.3,39.5c6,7.1,10.4,15.4,10.4,24.9
c0,14.1-8.7,23.4-19.8,29.8c-25.2,14.3-51.4,16.2-78,3.5c-3-1.4-5.9-3.1-8-5.8c-0.7-0.9-1.6-1.9-2.9-0.9c-1.3,1.1-0.5,2.2,0.3,3
c1.3,1.5,2.7,3.1,4.3,4.1c30.3,19.1,73.2,12.2,94.5-7.2c15.1-13.8,17.2-29.1,6.7-46.6c-7.8-12.9-19.3-22-31.9-29.6
c-12.1-7.3-24-15.1-37.6-19.4c-3.9-1.2-1.7-2.9-0.8-4.7c8.3-15.5,15.8-31.3,18.5-48.8c2.8-17.7,3.1-35.5-0.4-53.2
c-1.8-9.3-6.6-17.3-12.4-24.8c-1.2-1.6-2.2-3.2-3.6-5.2c16-4,31.6-5.6,47.5-5.2c32.4,0.9,63,9.8,93.3,20.3
c41.3,14.4,77.7,37.9,113.4,62.5c25.1,17.3,48.8,36.6,75.3,51.8c18.1,10.4,36.9,19.3,57.5,23.5c14.4,2.9,28.4,1.8,41.7-5.5
c22.6-12.4,45.5-24.4,68.3-36.6c17-9.1,35.2-16,52.4-24.8c2.5-1.3,4.8-3.6,9.1-3.1c-4.5,4.1-8.3,7.8-12.3,11.2
c-21.4,18.1-37.5,40.5-51.6,64.5c-7.6,12.9-14.2,26.4-22.3,39c-15.3,23.7-11.9,46.1,2.6,68.7c12.2,19.1,27.2,35.7,42.5,52.2
c12.7,13.7,25,27.7,35,43.6c0.6,1,1.1,2,1.8,3.3c-3.5,0.7-6.2-0.7-9-1.4c-15.9-4.2-29.5-13.1-43-21.8c-20.7-13.3-40.8-27.6-59.3-44
c-9.4-8.3-17.4-17.9-25.4-27.5c-16.3-19.7-38.2-25.2-61.9-15.5c-14.2,5.8-27.8,12.7-43.1,15.7c-14.3,2.8-28.6,4.8-43.1,5.2
c-23.5,0.7-46.9-0.9-70.4-1.4c-2.2,0-3-0.8-2.9-2.9c0.1-2.7,0-5.3,0.2-8c0.9-13.9-5.4-23.9-18.5-29c-13.3-5.2-26.8-4-40.2-0.6
c-2.6,0.7-5.1,1.4-7.7,2.3c-1,0.3-2.8,0.1-2.4,1.8c0.5,1.8,1.9,0.6,2.9,0.3c6.9-1.8,13.8-3.8,20.9-4.6c13.8-1.4,26.5,0.4,36.9,10.9
c4.8,4.8,7.1,10.4,5.7,16.7c-2.4,10.6,2.4,18.3,8.6,25.8c12,14.6,27.3,25.3,42.3,36.3c7.2,5.3,14.7,10.4,22.1,15.5
c4.3,3,7.7,6.7,9.6,11.8c1.1,3,0.9,5.1-2.2,6.6c-5.5,2.7-11,3.9-17.3,3.5c-26.8-1.5-49.2-14.6-72-26.7
c-26.3-13.9-50.3-31.4-74.3-48.8c-0.9-0.7-2.1-1.1-2.5-2.4c-4.1-12.1-6-24,2.8-35.1c0.1-0.1,0.2-0.2,0.3-0.4c0.5-1,2.6-2,0.9-3.2
c-1.5-1-2.1,1-3,1.9c-4.7,5.4-6.8,11.8-7,18.8c-0.1,4.9,0.3,9.8,2.3,14.2c1.9,4.5,0.6,5.8-3.8,5.8c-17.1,0-34.3,0.6-51.3-2.3
c-23.3-3.9-46.8-7.5-68.2-18.3c-7.9-4-16.3-2.2-24.5-2.9c-9-0.8-9.2-0.7-11-9.7c-3.6-18.1-7.1-36.3-10.6-54.4
c-0.8-4.3,4.8-10.1,9.6-10c6.2,0.1,11.9,1.7,16.5,6.1c6.9,6.5,13.9,12.9,19.4,20.8c7.4,10.6,18.3,12.7,30.1,11.5
c6.6-0.7,11.1-5.7,12.5-12.6c2.3-11.6-2.7-20.9-10.1-29c-8.4-9.2-17.6-17.8-27.1-25.8c-2.7-2.3-2.7-3.8-0.7-6.4
c2.3-3,4.2-6.4,6.2-9.6c1.3-2.1,2.6-2.2,4.3-0.4c6.5,6.9,13.1,13.8,19.5,20.7c2.2,2.4,3.5,5.2,4.1,8.5c0.2,1.4,0.1,3.4,2.4,2.9
c2.1-0.5,1.3-2.5,1.1-3.8c-1.1-5.6-4.7-9.8-8.5-13.9c-4.5-4.9-9.1-9.7-13.7-14.5C403.3,317.2,403.6,316.8,403.9,316.5z
M499.8,357.2c-0.2-0.2-0.4-0.4-0.6-0.6c1-9.4,1.6-18.9,3-28.3c2.1-13.2,1.7-25.6-8.3-35.9c-1.1-1.2-2-3.9-4.2-2.2
c-2,1.6,0.5,2.9,1.4,4c4.8,6.1,9.3,12.2,8.6,20.6c-1.2,12.9-1.7,25.9-4,38.7c-1.1,6.5-2.2,12.9-3.4,19.4c13-15.6,22.8-32.5,26-52.6
c0.4-2.6-0.2-7,2.5-7.1c2.8-0.1,3.6,4.3,4.4,7.2c3.3,10.9,2.5,22,1.9,33.2c-0.4,7-0.3,14-0.3,21c0,3.7,1.7,3.7,4.5,2.2
c4.2-2.4,5.9-6.7,8.1-10.5c8.1-14.2,7.5-29.7,6.8-45.3c-0.1-1.6,0.7-4.3-2.2-4c-2.5,0.3-1.5,2.7-1.3,4.1c1.1,8.2,0.7,16.3-0.3,24.4
c-1.1,10.1-5.2,18.9-11.5,26.9c-0.3-7.4-0.9-14.6-0.1-21.8c1.1-9.7,0.7-19.3-1.5-28.8c-1.3-5.6-4-10.6-8.4-14.5
c-1.9-1.7-3.1-1.8-3.6,1.1c-0.6,3.1-1.5,6.2-2,9.3C512.9,331.9,508.5,345.4,499.8,357.2z"/>
<path id="XMLID_131_" class="st1" d="M8.5,472.9c-0.4-18.7,7.5-34.7,17.7-49.5c14.6-21.4,32.7-39.9,51.2-57.9
c1.9-1.9,3.2-1.7,4.9,0.2c3,3.5,6,7.2,8.1,11.3c2,3.9,4.2,7.6,7.1,10.9c2.6,2.9,6,4.5,9.9,3.1c3.9-1.4,4.7-5,4.9-8.5
c0.3-3.7-0.8-7.3-2.1-10.7c-2.7-7.4-5.9-14.5-9.7-21.4c-1.3-2.4-1.2-3.8,1-5.4c26.6-19.4,52-40.7,81.9-55.3
c16.5-8.1,33.5-15,52.5-13.7c18.4,1.3,36.1,5.5,53.8,10.3c45.6,12.3,83.4,37.6,117.1,69.8c5.4,5.2,10.1,11,13.4,17.9
c3.9,8.2,3.1,16.7-2,20.8c-5.8,4.6-18.1,4.1-24.4-0.8c-8.2-6.2-14-14.7-21.6-21.5c-3.1-2.8-6.1-5.7-9.3-8.3
c-11.3-8.9-21.3-7.3-28.9,5c-6,9.9-12.5,19.2-20.7,27.4c-26.7,27-56.4,49.9-91,65.8c-34.8,16-70.7,29.2-108.6,36.6
c-16.7,3.3-33.3,6.9-50.2,8.4c-9.1,0.8-18.3,1-27.4-0.8C16.1,502.8,8.5,493.5,8.5,472.9z M174.5,335.7c-6.8,0.1-13.1,2.9-18.4,7.3
c-13.7,11.3-20.9,26.1-22.3,43.7c-0.5,6.4,4,12.7,9.3,13.9c5.3,1.2,9.6-1.9,12.4-9.2c1.5-4,2.9-8.2,3.8-12.4
c2.5-10.6,8.5-16.8,19.7-18.2c7.3-0.9,12-6.8,11.8-13.3c-0.2-5.9-5.1-10.5-12.5-11.5C177.2,335.8,176,335.8,174.5,335.7z"/>
<path id="XMLID_130_" class="st1" d="M599.5,212.1c-18.8-10.8-38-19.3-57.7-26.2c-34.7-12.1-70.1-21.3-107.4-19.1
c-5.1,0.3-10.3,0.7-15.4,1.3c-3,0.3-4.2-0.1-2.4-3.3c20.4-36.1,42.3-71.1,72.9-99.5c26.3-24.4,56.2-43.2,92-50.9
c17.6-3.7,35.2-7.4,53.4-4.1c7.8,1.4,7.6,1.5,3.1,7.7c-8.8,11.9-18,23.6-24.8,36.9c-22.9,45-32.6,91.7-16.8,141.4
c1.4,4.4,2.3,9,3.3,13.6C599.7,210.3,599.6,210.8,599.5,212.1z"/>
<path id="XMLID_129_" class="st1" d="M311.5,226.2c-11.1-0.1-21.4-2.5-30.4-9.3c-3.3-2.5-4.7-4.9-2.5-9.1
c9.6-18.9,20.3-37.2,35.6-52c19.9-19.3,42.3-17.1,62.8-2.1c14.7,10.7,24.9,25.3,33.3,41.1c0.2,0.4,0.5,0.9,0.7,1.3
c3.8,8.6,3.8,8.5-5.4,11c-27.3,7.4-54.7,14-82.7,18.3C319.1,226,315.3,226.2,311.5,226.2z"/>
<path id="XMLID_128_" class="st2" d="M273.8,215c16.7,16.3,36.9,16.1,57.7,13.7c-1.4,7.6-2.8,14.5-3.4,21.6
c-1.4,14.7,4.2,25.9,16.2,34.2c4.5,3.1,9.5,4.6,15,4.8c17.7,0.6,33.9-3.7,48.5-13.8c0.8-0.5,1.5-1.4,2.9-1c-0.7,4.8-2.9,9-4.8,13.3
c-5.9,13.3-13.1,25.8-21.1,37.9c-1.8,2.8-3.1,3-5.7,1.1c-33.3-24.5-70.3-40.9-110.7-49.4c-3-0.6-3.5-1.8-3.8-4.5
c-1.4-17.4,3.2-34,7.2-50.6C272.4,220.1,273,218,273.8,215z"/>
<path id="XMLID_127_" class="st1" d="M243.3,207.1c-12.3-0.3-21.8,0.6-31.2-1.2c-1.3-0.2-2.6-0.5-3.9-0.9c-7-2.3-7.6-3.8-4-10.2
c8.1-14,16.1-28,30-37.5c6.2-4.2,12.6-8.1,19.8-10.5c15.2-5,28.1-0.8,39.4,9.8c9.8,9.2,9.1,6.2,1.5,16.5
c-6.7,9.2-12.2,19.1-17.8,28.9c-1.5,2.6-3.1,3.7-6.2,3.9C260.8,206.9,250.6,207.4,243.3,207.1z"/>
<path id="XMLID_126_" class="st2" d="M232.8,461.6c14.4-8,29-14.6,41.5-24.7c9.2-7.3,9.2-7.2,19.5-1.2c2.5,1.4,3.3,2.8,3.1,5.8
c-1.3,19.8,1.2,39.5,1.6,59.3c0,1.7,0,3.3,0.1,5c0.2,5.9-0.3,6.3-5.6,4c-6.8-2.9-12.8-7.2-18.4-11.8c-13.2-10.9-27.2-20.9-39-33.4
C234.8,463.7,234,462.9,232.8,461.6z"/>
<path id="XMLID_125_" class="st1" d="M486.6,517.4c-5.7,1.3-10.2,0-14.5-1.6c-17.9-6.4-35.4-13.8-51.7-23.6
c-10.2-6.2-17.9-14.9-22.9-25.8c-3.2-7.1-7.5-13.6-11.4-20.8c5.5,2.1,11,4.3,16.6,6.1c14.7,4.9,29.9,7.8,45.2,9.9
c3.5,0.5,4.7,1.9,5.1,5.3c1.2,11.1,5.4,20.7,13.5,28.7C473.4,502.5,479.1,510.3,486.6,517.4z"/>
<path id="XMLID_124_" class="st2" d="M223,211.1c-4.6,32.4,2.8,48,30.4,62.7c-10.5-0.5-19.9-1.6-29.4-0.9c-9.7,0.7-19,3-27.8,7.1
c-3,1.4-4,0.6-5.2-2c-5.1-11-5.2-22.5-4.4-34.2c0.9-12.5,5.5-23.9,9.8-35.4c1.3-3.4,2.5-5,6.6-2.2
C208.9,210.3,216.1,210.7,223,211.1z"/>
<path id="XMLID_123_" class="st2" d="M285.4,427.4c17-16.6,37.1-29.7,49.5-50.8c1.7,9.1,3.4,18.2,5.1,27.3
c3,16.7,7.5,33.1,8.6,50.1c0.3,4.6-0.9,5.7-5.3,4.6c-1.7-0.4-3.4-1.3-5-2.1C320.8,447,303.3,437.3,285.4,427.4z"/>
<path id="XMLID_122_" class="st2" d="M160.2,491.1c12.6-4.4,24.6-8.6,36.7-12.9c1.3-0.5,2.2-0.2,3.1,0.8c5,5.1,10.6,9.5,12.2,17.2
c1.4,7.3,2,14.5,1.4,21.8c-0.5,5.8-3.1,7.3-8.9,6c-4.6-1.1-8.7-3.4-12.5-6C180.6,510.4,169.8,501.9,160.2,491.1z"/>
<path id="XMLID_121_" class="st2" d="M201.8,476.4c9.1-4.1,17.3-7.9,25.6-11.7c1.2-0.6,2.4-1.4,3.6-0.1c2.9,3.2,6.9,5.5,8.6,9.6
c4,9.7,8.2,19.2,10.6,29.5c0.7,3.1,0.9,6.3,0.1,9.4c-1.3,5.2-3.8,6.5-8.7,4.2c-5.7-2.7-9.9-7.3-13.9-11.9
C219.4,495.6,211.7,485.4,201.8,476.4z"/>
<path id="XMLID_120_" class="st1" d="M739.7,465.9c-0.3,3-0.2,6-0.8,8.9c-1.5,7.2-7.3,10-13.9,7c-6.8-3.1-16.1-20-15.5-27.5
c0.2-2.7,1.5-3.8,3.9-4.2c7.2-1.3,14.3-3.1,21.1-5.6c3.1-1.2,4.1-0.2,4.2,3c0.1,6.1,0.6,12.3,0.9,18.4
C739.5,465.9,739.6,465.9,739.7,465.9z"/>
<path id="XMLID_119_" class="st1" d="M674.1,455c10.4-0.5,19.3-1.1,28.1-2.9c2.3-0.5,4-0.2,3.6,2.9c-0.7,6.1-1.1,12.3-2.8,18.2
c-2,6.6-7.2,8.4-12.6,3.7C683.7,471,679.9,462.9,674.1,455z"/>
<path id="XMLID_118_" class="st1" d="M300.6,470.1c0-10.7,0-20.1,0-30.4c6.6,3.6,12.7,6.9,18.8,10.2c1.5,0.8,1.4,1.9,0.1,2.7
C312.5,457.2,306.2,462.5,300.6,470.1z"/>
<path id="XMLID_117_" class="st1" d="M403,317.5c-0.4-0.4-1.4-0.6-0.8-1.3c0.1-0.2,1.1,0.2,1.7,0.4
C403.6,316.8,403.3,317.2,403,317.5z"/>
<path id="XMLID_116_" class="st2" d="M246.1,481.3c-0.5-0.6-0.9-1.3-0.4-2.1c0.5,0.3,1,0.6,1.4,0.9
C246.8,480.5,246.4,480.9,246.1,481.3z"/>
<path id="XMLID_115_" class="st1" d="M961.2,257.6c-0.1,0.1-0.3,0.3-0.4,0.3c-0.1,0-0.2-0.2-0.3-0.3c0.1-0.1,0.3-0.3,0.4-0.3
C961,257.2,961.1,257.4,961.2,257.6z"/>
<path id="XMLID_114_" class="st2" d="M411.2,273.6c-0.1,0.1-0.2,0.2-0.3,0.3c-0.1-0.1-0.2-0.2-0.2-0.3s0.2-0.2,0.2-0.3
C411.1,273.4,411.2,273.5,411.2,273.6z"/>
<path id="XMLID_113_" class="st0" d="M499.8,357.2c8.7-11.8,13.1-25.3,15.6-39.5c0.5-3.1,1.4-6.2,2-9.3c0.5-2.9,1.7-2.8,3.6-1.1
c4.4,3.9,7.1,8.8,8.4,14.5c2.2,9.5,2.6,19.1,1.5,28.8c-0.8,7.3-0.2,14.5,0.1,21.8c6.3-8,10.4-16.8,11.5-26.9
c0.9-8.1,1.3-16.3,0.3-24.4c-0.2-1.4-1.2-3.9,1.3-4.1c2.9-0.3,2.2,2.4,2.2,4c0.7,15.5,1.3,31.1-6.8,45.3c-2.2,3.8-3.9,8.2-8.1,10.5
c-2.7,1.5-4.5,1.5-4.5-2.2c0.1-7-0.1-14,0.3-21c0.6-11.2,1.4-22.3-1.9-33.2c-0.9-2.8-1.6-7.2-4.4-7.2c-2.7,0.1-2.1,4.5-2.5,7.1
c-3.2,20.2-13,37.1-26,52.6c1.1-6.5,2.2-12.9,3.4-19.4c2.3-12.8,2.8-25.8,4-38.7c0.8-8.4-3.8-14.5-8.6-20.6c-0.9-1.1-3.4-2.4-1.4-4
c2.1-1.7,3.1,1,4.2,2.2c9.9,10.3,10.3,22.7,8.3,35.9c-1.5,9.4-2.1,18.8-3,28.3c-0.1,0.6-0.2,1.1-0.3,1.7
C499.8,358.4,499.5,357.6,499.8,357.2z"/>
<path id="XMLID_112_" class="st0" d="M174.5,335.7c1.5,0.1,2.7,0.1,3.8,0.3c7.3,1,12.3,5.6,12.5,11.5c0.2,6.5-4.5,12.4-11.8,13.3
c-11.1,1.4-17.2,7.6-19.7,18.2c-1,4.2-2.3,8.4-3.8,12.4c-2.8,7.3-7.1,10.4-12.4,9.2c-5.3-1.2-9.8-7.5-9.3-13.9
c1.3-17.6,8.6-32.4,22.3-43.7C161.4,338.6,167.7,335.8,174.5,335.7z"/>
<path id="XMLID_111_" class="st1" d="M499.8,357.2c-0.3,0.4,0,1.2-0.9,1.1c0.1-0.5,0.2-1.1,0.3-1.7
C499.4,356.8,499.6,357,499.8,357.2z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 20 KiB

BIN
src/img/favicon.ico (Stored with Git LFS)

Binary file not shown.

View file

@ -1,3 +0,0 @@
# Welcome
Here you can find useful information about the Skynet Cluster

View file

@ -1,28 +0,0 @@
# GPG Keys
GPG keys are a way to verify who you are online.
They can be integrated with git and dev tools such as Jetbrain's IDE's
## Using Keys
### Command Line
This site is a good site for info. https://gock.net/blog/2020/gpg-cheat-sheet
### GUI tools
I use Kleopatra as a GUI tool.
It has Windows and Linux versions (including NixOS)
### Security
{Add section on keeping keys secure ehre, such as only using subkeys on devices}
## Open Governance Signing
{add stuff about open governance signing here}
## Troubleshooting
### Forgejo GPG verification failure
If you are trying to verify a gpg key on Forgejo and it keeps failing it may be because your key has more than one subkey.
The solution is:
01. Make a backup of your gpg key.
02. Delete all but one subkey
* This key must be a signing key
03. Run the command Forgejo gives ye
04. Restore the original key (if ye desire)

View file

@ -1,244 +0,0 @@
# Nix/NixOS
The [Skynet Cluster][nixos_skynet] is (for the most part) running on a Linux variant called NixOS.
This article aims to introduce you to Nix and Nixos in order to get you up to speed to administer the cluster.
## What it is
### Nix
#### Package Manager
The word Nix refers to two things: a language and a package manager.
These are deeply interlinked together with the language being how the package manager is able to do its job.
Nix grew out of a [PhD by Eelco Dolstra][nix_paper] wherein he proposes a slightly different way to manage dependencies on a system.
For most Linux systems programs make use of other software installed on the computer, for the most part this works fine.
Where issue may arise is if one program needs to update one of these dependencies, specifically a minor or major patch where backwards compatibility is not guaranteed.
If another program is using this (system-wide) dependency then it may run into interface issues when using it.
In a sense updating one program can break another on the system.
The route the Nix package manager takes is it treats each program as a function.
Using the Nix language a function for that package is created which states what inputs are required, what is needed to turn those inputs into the program as well as the name for the output.
The output is then saved in a read only location in the format of ``/nix/store/$hash-program-name-version``.
This output can either be used as the input of another program or be used as is by the system/user.
Using this format means that any change in the inputs or the program itself will result in a different output.
This means that multiple versions of the program (some even the same version but different commit) can co-exist on the one system.
An example using different versions of Firefox:
![img.png](nix/firefox_co-existing.png)
##### Example
An example of packaging an application can be found here:
[Sieve Editor GUI on Nixpkgs][nix_pkgs_sieve]
This is packaging up a GUI node.js application.
The application itself allows the user to edit sieve scripts.
Once you have [downloaded and installed](#how-we-use-it) Nix you will be able to install and run it like so:
```shell
nix-shell -p sieve-editor-gui
sieve-editor-gui .
```
#### Language
There are two partially difficult problems in computer science:
1. Off-by-one errors
2. Caching
3. Naming things
Nix falls into this last pitfall.
The programming language used by the Nix package manager is called Nix, not NixLang (as like Erlang) but rather the same name as primary tool that uses it.
For clarity for the remainder of this subsection we are only talking about Nix the language.
The Nix Package manager is sometimes known as CppNix for reasons we will get into later.
Nix is a lazily evaluated functional language which also has REPL (Read, Evaluate, Print, and Loop) capability like what you would see in Python.
As a whole it takes strong influences from OCaml and other ML derived languages.
##### Types
It has most of the normal types that you would expect of a programming language, along with a few extra to deal with the filesystem:
```nix
a = 1 # int
b = 1.001 # float
c = /path/to/thing # path
d = "42" # string
e = true # boolean
```
Of these the ``path`` type will be new to most people.
This can take either an absolute or relative path.
##### Functions
If you look at the section below it will seem that these are another type of assignment to a variable.
That is half right, these are akin to function pointers that you would see in C or C++.
Functions in Nix do not have types for either parameters or return.
This is due to it being lazily evaluated, like Python or Javascript.
As such the ``double`` function will accept any numeric value
```nix
double = x: x*2
mul = a: b: a*b
double 2
double 4.2
mul 7 6
```
##### Attribute Sets
In most languages the way to group data would be either an Object or a Struct.
Nix has a similar data structure:
```nix
s = { foo = "bar"; biz = "baz"; }
s.foo # bar
s.biz # baz
```
##### More data
This is a rough quickstart introduction to Nix.
For more detailed information I recommend these resources.
* [Official Guide][nix_guide_official]
* [Nix Pills][nix_guide_pills]
### Flakes
A Flake is one of the best ways of interacting with nix.
Despite it having some issues and still being marked as experimental it has become a de-facto standard.
This is also the format that we use in Skynet.
The [Official Wiki Page][nix_flake] will be more informative than what can be shoved into this article.
### Nixos
With the package manager we are able to create packages in a deterministic manner and store them in a way that does not suffer path conflicts.
Some (possibly crazy) folks saw this and decided to apply this to an entire operating system.
The advantages are clear, the required programs are added to the path for the current iteration of the system.
If any error arises the system can be rolled back to a previous config.
Configuration is done via ``*.nix`` files, which are then converted into the native config for the application in question.
For example [this file][nix_dns] turns a list of attributes.
```nix
{
record = "forgejo";
r_type = "CNAME";
value = "glados.skynet.ie";
}
```
Into a config usable by the BIND DNS server.
### Lix
Nix is an old enough project now, and as such has accumulated crust over the years.
This is a combination of technical and societal/governance.
On the technical side nix is built using c++ and a max of build systems that make it hard to expand it.
For a good long time the nix binary used in the package manager was locked at v2.18 due to issues.
It took most of a year for a higher version to be used on an official basis.
Regarding governance there has been several attempts to make it better for folks to contribute and to decouple everything from requiring Eelco to have an input.
Those attempts did not succeed.
The final straw for some of the more technical core contributors was Eelco's forming a company, hiding it from the community and trying to get military sponsorship.
This did not vibe well with folks.
Due to all of this many core maintainers forked Nix at 2.18 and started working to apply fixes for both code and organisational.
The result of their efforts is [Lix][nix_lix].
For a full explanation of its key features I would like to point you to the [Lix About page][nix_lix_about].
We use Lix instead of CppNix as the goals of Lix align with the viewpoints and ideologies that our members hold and what we want to represent as a (computer) society.
## Why we use it
Back in [January 2023 we got disconnected from the internet][skynet_disconnect].
For the purposes of this document the root cause is not of importance.
What *is* the mad Indian Jones ~~treasure~~ config hunt that it triggered.
![Brendan delving for configs][skynet_disconnect_reenactment]
Additionally, ITD require us to update our systems regularly (as they should be).
Technically this config delving is an ongoing effort, the old hard drives are occasionally connected up and raided.
As you would imagine this is not ideal, an exasperating factor was that many programs had changed both the location and format of their configuration over the decades that Skynet has been using them.
This is where the strengths of NixOS lie.
The config for the entire cluster is located in a singular location.
Using modules which work as a translation layer if the requirements for the programs change this don't impact us.
Not to mention we can fearlessly (and regularly) update our systems it is a match made is heaven.
Currently, the Skynet cluster comprises 15 servers which have NixOS on them.
A combination of LXC's (Linux Containers) and physical bare metal servers.
Since these systems share a base config (with their individual applications layered on top) we are able to efficiently build them, building a package for one will also build it for other servers.
Combine that with the ability to deploy them via our own self-hosted CI/CD we have a strong foundation to work off of.
## How we use it
Nix cannot run on Windows, though it cna be installed into WSL.
Please refer to the below downloads to get a base system up and running
* [Git][git_git]
* As we are using a git repo this is a hard requirement.
* [Git LFS][git_lfs]
* For storing non text files such as images.
* [Nix][nix_install]
* Cant really use nix without thi installed.
### Dev Shell
After cloning the repo use ``nix develop`` to set up a terminal shell with the environment for working with Skynet NixOS.
It (currently) adds [Colmena][dev_colmena], [Agenix][dev_agenix] and [Attic][dev_attic].
Another example of a dev shell can be [our discord bot][dev_discord-bot].
This one sets up a rust environment.
Of course, you can also look at the dev shell for this [wiki][dev_wiki].
For the wiki we need to ensure that the dependencies for building it are present for all users so they don't have to figure out how to manually install them.
### Colmena
[Colmena][dev_colmena] is our build and deployment tool.
Building is pretty easy, just run ``colmena build``.
Downside of that command is it will try to build everything all at once which is a *lot*.
A more practical approach is to build a single server or a group of servers.
```shell
# build the Skynet server, names can be found in the flake.nix
colmena build --on skynet
# build a group of servers, in this case any one with the tag of active-core
colmena build --on @active-core
```
To be able to deploy to Skynet two things are required:
* Be on the UL network
* This can also be accomplished by being on the VPN.
* Have an ssh key configured that can access the servers
* TLDR be an admin.
### Agenix
[Agenix][dev_agenix] is our secrets manager.
To be able to use this tool your pub ssh key must be in ``secrets/secrets.nix``.
As you would expect this is an admin only tool.
This file also defines the names and permissions for each secret.
```shell
# have to be in the secrets folder for all these commands.
cd secrets
# edit the secret
agenix -e path/to/secret.age
# re-key all secrets, this is done when a new key is added or removed.
agenix -r
```
### Attic
[Attic][dev_attic] is the tool that we use for our nix cache (hosted at <vhttps://nix-cache.skynet.ie/>).
It is not often used by the developer/admin and its own [documentation][dev_attic_docs] covers it best.
[nixos_skynet]: https://forgejo.skynet.ie/Skynet/nixos
[nix_paper]: https://edolstra.github.io/pubs/nspfssd-lisa2004-final.pdf
[nix_guide_official]: https://nix.dev/tutorials/first-steps/
[nix_guide_pills]: https://nixos.org/guides/nix-pills/#
[nix_pkgs_sieve]: https://github.com/NixOS/nixpkgs/blob/a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c/pkgs/by-name/si/sieve-editor-gui/package.nix
[nix_flake]: https://wiki.nixos.org/wiki/Flakes
[nix_dns]: https://forgejo.skynet.ie/Skynet/nixos/src/branch/main/applications/dns/dns.nix
[nix_lix]: https://lix.systems/
[nix_lix_about]: https://lix.systems/about/
[skynet_disconnect]: https://public.skynet.ie/postmortem/2023-01-12_Loss-of-network-access.html
[skynet_disconnect_reenactment]: https://forgejo.skynet.ie/Computer_Society/presentations_compsoc/media/branch/main/src/slides/skynet/0_intro_img1.png
[git_git]: https://git-scm.com/downloads
[git_lfs]: https://git-lfs.com/
[nix_install]: https://nixos.org/download/
[dev_colmena]: https://colmena.cli.rs/unstable/
[dev_agenix]: https://github.com/ryantm/agenix
[dev_attic]: https://github.com/zhaofengli/attic
[dev_attic_docs]: https://docs.attic.rs/introduction.html
[dev_discord-bot]: https://forgejo.skynet.ie/Skynet/discord-bot/src/commit/80c9191eeec29ba20ef4084713eca7fe0cab7412/flake.nix#L65
[dev_wiki]: https://forgejo.skynet.ie/Skynet/wiki/src/commit/ab0add44756d4992fc2b2da4eba163016ccb3d1c/flake.nix#L35

BIN
src/skynet/nix/firefox_co-existing.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,49 +0,0 @@
# Skynet account
A Skynet account provides access to all the services listed in this wiki.
To manage the account we have a self-service way to sign up for an account, change password, add ssh keys and more.
## Committee/Admins
Committee and Skynet Admins are required to have a Skynet account in order to have access to internal materials.
## Sign up
#### <https://account.skynet.ie/signup>
A Computer Society member is able to use this page to sign up for a Skynet account.
By entering the email address used for Wolves they will be sent a mail with instructions on how to proceed.
## Modify
Various aspects of the account can be modified, such as:
### Password
#### <https://account.skynet.ie/password>
If you know your existing password it can be changed here.
### SSH Keys
#### <https://account.skynet.ie/modify_ssh>
SSH keys are used for accessing the [Skynet Webserver](./skynet.md).
If you are on campus they are also usable for the [Forgejo instance](./forgejo.md).
You can have multiple keys associated with your account.
### User Information
#### <https://account.skynet.ie/modify>
On Signup details such as email, first name and surname are pulled from UL Wolves, which itself pulls (for students) from UL.
This means that for some members their names does not match reality and this allows them to correct that.
It also allows members upon graduation to switch to their own email address for Wolves instead of the UL provided email.
## Recovery
Shit happens, memory fades, bits flip and ye find yourself unable to login.
### Username
#### <https://account.skynet.ie/recovery/username>
If you have forgotten your username a reminder can be sent to the email linked to your account.
### Password
#### <https://account.skynet.ie/recovery/password>
If you forget your password a reset link can be sent to the email linked to your account.

View file

@ -1,11 +0,0 @@
# Discord
### <https://discord.skynet.ie>
While we dont host our Discord server it is one fo the services we have for members.
We used to have an [IRC](https://en.wikipedia.org/wiki/IRC) server, however that had a high onboarding cost for users and it was shut down a few years ago.
The modern equivalent would be Matrix, of which we could have a Discord bridge to keep the two communities connected.
## Bot
### <https://forgejo.skynet.ie/Skynet/discord-bot>
We have a discord bot to manage membership on the discord, as well as manage the Minecraft Whitelist.

View file

@ -1,43 +0,0 @@
# Email
Skynet offers an email to all members.
It is ``username@skynet.ie``
## Login
### Roundcube
#### <https://mail.skynet.ie>
Use your Skynet ``username@skynet.ie`` and ``password`` to login.
### Nextcloud
#### <https://nextcloud.skynet.ie/apps/mail/>
Our [Nextcloud instance](./nextcloud.md) has an inbuilt mail module.
See [Nextcloud](./nextcloud.md) page for more info on logging in.
### Thunderbird
#### <https://www.thunderbird.net>
Thunderbird is an email client made by Mozilla.
Honestly it is one of the best email clients out there.
They are working on exchange (Outlook/Office 365) support so ye will be able to use it for your UL email.
This work is being done with Rust.
Use your Skynet ``username@skynet.ie`` and ``password`` to login.
## Sieve Scripts
Sieve scripts allow you to sort and manage yer email in a programmatic way.
Recommended tool: <https://github.com/thsmi/sieve>
Small tutorial will follow later.
### ``.forwards`` replacement
Since we no longer support ``.forwards`` this is the sieve script counterpart.
It copies all incoming mail to the target address.
```sieve
require "copy";
redirect :copy "sending_mail_to@example.ie";
```
### Committee/Admins
There is an inbuilt sieve script that passes mail from committee/admin addresses into a folder in their Skynet inbox.

View file

@ -1,15 +0,0 @@
# Forgejo
### <https://forgejo.skynet.ie>
Forgejo is an online git repo host.
Like [Gitlab](./gitlab.md) it is self hostable meaning that Skynet has its own instance of it.
Structure wise it has more in common with Github with teh flatter ``owner/repo`` structure as well as being compatible with Github Actions
Honestly I (@silver) just love the slogan of Forgejo:
> Beyond coding. We Forge.
## Login
Use your Skynet ``username`` and ``password`` to login.
## Administration
Skynet Admins are automatically granted admin rights on Forgejo, this is done via LDAP

View file

@ -1,19 +0,0 @@
# Gitlab
### <https://gitlab.skynet.ie>
Gitlab is an online git repo hosting service.
Access to these repos is provided via SSH and HTTP (Although only HTTP is available off campus).
It has a solid CI/CD platform which uses its own YAML based config system.
Finally it has "folders" such as ``owner/folder/repo`` and ``owner/as/many/folders/as/ye/want/repo`` which allows for hierarchical grouping of repos.
## Depreciation
Skynet currently hosts a Gitlab instance, however it is currently being depreciated in favor of [Forgejo](./forgejo.md).
This is largely due to the administrative overhead involved in running a Gitlab CE instance.
Much of the LDAP based tools are locked behind the Enterprise (EE) licence.
These tools come automatically with Forgejo.
Forgejo has another advantage of being able to use Github actions, which more folks are familiar with over Gitlab.
One final reason is that the resources required to host Forgejo and its runner are far less than what are required to host Gitlab and its runner.

View file

@ -1,12 +0,0 @@
# Nextcloud
#### <https://nextcloud.skynet.ie>
Nextcloud is ``What if Google but not Evil?``.
It consists of file storage, email client, web documents and more.
## Login
Use your Skynet ``username`` and ``password`` to login.
## Committee/Admins
Committee and Admins have access to group folders which contain our long term data storage.

View file

@ -1,26 +0,0 @@
# Skynet
We provide a linux webserver for member use.
It could be considered akin to the [Tildeverse](https://tildeverse.org/), named as such for the way each member's site was displayed (``https://skynet.ie/~username``).
Now that will redirect to ``https://username.users.skynet.ie`` we home to have preserved the same vibe.
## Name
The main user facing server of the cluster has always been called Skynet, the cluster is named after this server.
You can find more of the history here: <https://2009.skynet.ie/history.html>
## Login
Login is done via ssh and ssh keys.
## SSH Keys
[See the tutorial on SSH keys for more info](../../tutorials/skynet/create_ssh.md)
### Logging in
In any terminal do this:
```bash
ssh username@skynet.skynet.ie
```
And you will be in!
## Website
[See the tutorial on the website for more info](../../tutorials/skynet/create_website.md)

View file

@ -1,19 +0,0 @@
# Wolves Account Migration
In order to keep the same Wolves account a few simple steps must be followed to migrate it away from your studentmail.
This is especially important if you have a Skynet account linked with your wolves account.
<h2 class="p1">Important: this must be completed while you still have access to your studentmail.</h2>
* Go to the Wolves account page: [https://ulwolves.ie/memberships/profile][0]
* Change your ``Preferred Contact Email`` to your personal address.
!["Set Preferred Contact Email"][1]
* In the ``Login Email`` section (pictured) click on the Red Incorrect button and change to your personal address.
!["Change Login Email"][2]
* In the popup enter in your personal address and set the reason to be something like ``Alumni``
!["Change Login Email and Reason"][3]
* You are done, the office will update the details shortly.
[0]: https://ulwolves.ie/memberships/profile
[1]: ./migration/img.png
[2]: ./migration/img_1.png
[3]: ./migration/img_2.png

BIN
src/support/migration/img.png (Stored with Git LFS)

Binary file not shown.

BIN
src/support/migration/img_1.png (Stored with Git LFS)

Binary file not shown.

BIN
src/support/migration/img_2.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,121 +0,0 @@
# Skynet Account Recovery
## Jan 2023 Downtime & Account Recovery
In Jan 2023 we had extended downtime, for more information checkout [this link][0].
The next section will outline the changes that have been made in the last year while the subsequent one will deal with Account Recovery.
[0]: https://public.skynet.ie/postmortem/2023-01-12_Loss-of-network-access.html
### Service Changes
As a result of the upgrade/migration/downtime there have been several changes to services.
Some of these are due to security requirements, others are due to some old software being difficult to source, some are because we have worked with UL Wolves to create a new API to automate many processes.
#### Additions
* Account self management page: [https://account.skynet.ie][account]
This allows new members to sign up, existing members to change account details (password, contact email, ssh keys), and for password resets.
* [https://gitlab.skynet.ie][2]
Our own Gitlab instance with runners, the cluster config and pipelines are [here][3].
User: ``$username``
Pass: ``$password``
* [https://nextcloud.skynet.ie/][4]
A replacement for Google Drive, has Open Office, maps and a good email suite.
User: ``$username`` or ``$username@skynet.ie``
Pass: ``$password``
* A [Discord Bot][5] to manage the roles of members in our [Discord][discord]
[account]: https://account.skynet.ie
[2]: https://gitlab.skynet.ie
[3]: https://gitlab.skynet.ie/compsoc1/skynet/nixos
[4]: https://nextcloud.skynet.ie
[5]: https://gitlab.skynet.ie/compsoc1/skynet/discord-bot
[discord]: https://discord.skynet.ie
#### Changes
* Usernames have been converted to comply with modern linux standards.
Usernames with uppercase have been converted to lowercase.
Usernames starting with a number have been prefixed by a ``_``
* ``UserName`` is now ``username``
* ``0username`` is now ``_0username``
* Webmail is now available at [https://mail.skynet.ie][7]
Still roundcube which should be familiar.
User: ``$username@skynet.ie``
Pass: ``$password``
* For Thunderbird use these:
User: ``$username@skynet.ie``
Pass: ``$password``
* SSH now requires an ssh key (can be set in the account page above)
* SSH access is now on ``skynet.skynet.ie``
* Personal sites are now accessible as ``$username.users.skynet.ie`` (new format) as opposed to ``skynet.ie/~$username`` (old format)
Any old format links will redirect to the new format for compatability.
This gives us separation from the core Skynet site.
* Old home data can be found in ``/skynet_old/home/$username``
* Old emails (prior to 2023-01-12) can be found in the ``skynet_old`` folder in your mail account.
[7]: https://mail.skynet.ie
#### Email Aliases
* We are currently working on associating aliases with the Skynet account they are for.
* This creates a separate mail account that shares the same password as the base Skynet account.
* If you believe an alias is missing please get in contact with us (Details are below)
* Currently, no new aliases are planned, but this may change in the future.
#### Removals
* Lifetime and 10 year memberships ceased to exist in 2019.
* Email terminal clients are no longer available.
### Account Recovery
<p class="p1">
<!-- this is in html in order to have the yellow colour highlighting-->
Reminder:
<br />
To hold a Skynet account you must be a current member of the UL Computer society.
<br/>
This is done through UL Wolves (<a href="https://ulwolves.ie" target="_blank" rel="noopener">https://ulwolves.ie</a>).
<br/>
There are no exceptions to this.
</p>
There are 5 possible workflows for getting back up and running again:
* You know your Skynet ``user/pass`` and your UL Wolves ``user/pass``.
* You know your Skynet ``user/pass`` but not your UL Wolves ``user/pass``.
* You know your Skynet ``user/pass`` but do not have a UL Wolves account.
* You know your UL Wolves ``user/pass`` but not your Skynet ``user/pass``.
* You do not know your Skynet ``user/pass`` and your UL Wolves ``user/pass``.
#### You do not know your UL Wolves ``user/pass``
* If you signed up with a non UL/Skynet account there is a password reset process: [https://ulwolves.ie/login/help][8]
* If you forgot your UL Wolves username Contact Us (see below) and we may be able to inform you what username(s) you had used.
* If you forgot your UL Wolves password and your UL Wolves username was a ``@skynet.ie`` email then follow steps below to create a new account.
[8]: https://ulwolves.ie/login/help
#### You do not have a UL Wolves account.
* Follow steps 1-6 on [https://renew.skynet.ie][renew]
[renew]: https://renew.skynet.ie
#### You know your UL Wolves ``user/pass``
* On our Society page ([https://ulwolves.ie/society/computer][wolves]) Request Membership
(steps 7-8 on [https://renew.skynet.ie][renew])
* Either pay €10 for 1 year online (we can approve instantly once we see the request).
Or pay €40 for 5 years following steps 9-11 on [https://renew.skynet.ie][renew].
(May take a little while to verify with the bank account.)
* Go to the account page: [https://ulwolves.ie/memberships/profile][wolves_profile]
* For the ``Preferred Contact Email`` set a <b>NON-Skynet</b> Email
[wolves]: https://ulwolves.ie/society/computer
[wolves_profile]: https://ulwolves.ie/memberships/profile
#### You know your Skynet ``user/pass``
* Go to [https://account.skynet.ie/modify][account_modify]
* Set the ``Email`` to be the ``Preferred Contact Email`` from wolves
* If you want to ssh in also set an ssh key.
[account_modify]: https://account.skynet.ie/modify
#### You do not know your Skynet ``user/pass``
* Get in contact with us and we will see what we can do.
We have a few methods that may be able to link your Skynet account with an address you currently possess.
#### Contact us
* Email: ``compsoc[at]skynet.ie``
* Discord: ping @committee on [our discord][discord] (there is a ``#help-and-support`` channel).

View file

@ -1,74 +0,0 @@
# Alumni Renewal
## How to renew your Skynet membership!
### Dear Alumnus; welcome,
Thank you for all your continued support throughout the years.
Your contribution and the contribution of many others have made it possible for us to buy more servers which we use to give you the best service we can.
With our new servers, we hope to improve the quality for our users and have less downtime.
You can now purchase a 5-year subscription for €40.
This subscription is for a multi-year limited alumni membership of the Computer Society (This type of membership does not entitle you to society subsidies or places on trips).
You must hold a Computer Society membership in order to hold a Skynet account.
If there has been no payment made passed the point of expiration on your membership, your Skynet account will freeze.
You must pay for membership to unfreeze your account.
Below are instructions on how to renew your subscription.
Until you make both an account and pay membership, you will not have renewed your subscription.
Once you have completed the steps below, you will have renewed your subscription and will be issued a receipt.
When requesting membership, you have the option to pay online or pay cash.
If you are paying online you can only pay for one year's membership.
<div class="p1">
<h5>IMPORTANT!!</h5>
<p>
If you are looking to avail of the 5-year membership it is important to note that you can no longer pay for this on the Ul wolves site.
<br />
Please select the pay with cash option and transfer the multi-year fee to the bank account shown below.
</p>
<p>
Also please note that you do not need a UL student E-mail address to sign up!
</p>
</div>
### Steps
1. Go to <a href="https://ulwolves.ie/">ULWolves.ie</a>
![UL wolves site][0]
2. Enter your email address and click Log In/Register
3. Select the appropriate option (UL Alumni Member)
![Account type Section][1]
4. Fill in your personal information on the next page.
5. Verify your email address
![Verification Email][2]
6. Log back in
![Sign in][3]
7. Scroll to find Computer under the Societies section
![Societies section][4]
8. Click Request Membership
![Request Membership][5]
9. Fill out details. When asked to pay online or pay in cash, **select pay online for 1 year membership.**
**Select PAY CASH/OTHER for 5 year membership.**
Note it will say it will expire in one year but upon transfer of the money to our account it will be accepted as a 5 year membership.
![PAY BY CASH][6]
10. Transfer &euro;40 to our bank account:
* BIC: ``BOFIIE2DXXX``
* IBAN: ``IE31BOFI90595047627767``
Please put your name in the reference.
If you are having trouble with this or want to arrange another payment method, get in touch.
11. Email the accounts team (``compsoc[at]skynet.ie``) with:
* The name on the UL Wolves account you created
* Skynet username
* The reference on the bank transfer.
You may want to ping @committee on [our discord][discord].
[0]: ./renewal/renew1.jpg
[1]: ./renewal/renew2.png
[2]: ./renewal/renew3.png
[3]: ./renewal/renew4.png
[4]: ./renewal/renew5.jpg
[5]: ./renewal/renew6.jpg
[6]: ./renewal/renew7.png
[discord]: https://discord.skynet.ie

BIN
src/support/renewal/renew1.jpg (Stored with Git LFS)

Binary file not shown.

BIN
src/support/renewal/renew2.png (Stored with Git LFS)

Binary file not shown.

BIN
src/support/renewal/renew3.png (Stored with Git LFS)

Binary file not shown.

BIN
src/support/renewal/renew4.png (Stored with Git LFS)

Binary file not shown.

BIN
src/support/renewal/renew5.jpg (Stored with Git LFS)

Binary file not shown.

BIN
src/support/renewal/renew6.jpg (Stored with Git LFS)

Binary file not shown.

BIN
src/support/renewal/renew7.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,24 +0,0 @@
# Personal Access Tokens
## Assumptions
* [Git installed](https://git-scm.com/downloads)
* [Skynet / Forgejo account](https://forgejo.skynet.ie/user/login)
### Why
The usual way of authentication when working with remote git repositories
is SSH, unfortunately we aren't able to do that with our git server. You could use username and password
however that is less secure and inconvenient, personal access tokens on the other hand are a more convenient and secure alternative.
Personal access tokens make it so you don't have to use username / password
to authenticate, you can authenticate **once** when **cloning** and that's it.
### How
Go to [this page and click generate token](https://forgejo.skynet.ie/user/settings/applications)
Give it a name and select read and write for repository permissions
Copy it once its generated
**Note : Do not share your access token with anyone, if its compromised delete it, this can be done easily
[here](https://forgejo.skynet.ie/user/settings/applications) and prevents it from being used.**
When cloning a repository, use the token like so..
```git clone https://<token>@forgejo.skynet.ie/<repo>```
You now should be able to push to the repository without being prompted for username / password.

View file

@ -1,39 +0,0 @@
# Create Skynet Account
## New Members
1. Be a fully paid up member of UL Computer Society.
* [Signup at UL Wolves][wolves].
2. Go to [our Skynet signup page][signup].
3. Enter the same email used for UL Wolves.
* This is the ``Preferred Contact Email`` on your [profile page][profile].
4. You will get an email to verify your address, follow the link in the email.
* You may need to check teh spam folder.
* It may also take up to 15 min to be delivered.
5. Choose a ``username`` and ``password``.
Congrats! You are in!
_heist music_
## Returning Members
1. Please go to [the profile modification page][modify].
2. Enter the same email used for UL Wolves.
* This is the ``Preferred Contact Email`` on your [profile page][profile].
### If you have forgotten your ``username``.
Use [recover username][recover_username].
### If you have forgotten your ``password``.
Use [reset password][recover_password].
### If the above doesn't work
Contact the nearest Skynet person, either in person or at ``contact[at]skynet.ie``.
[wolves]: https://ulwolves.ie/society/computer
[signup]: https://account.skynet.ie/signup
[profile]: https://ulwolves.ie/memberships/profile
[modify]: https://account.skynet.ie/modify
[recover_username]: https://account.skynet.ie/recover/username
[recover_password]: https://account.skynet.ie/recover/password

View file

@ -1,88 +0,0 @@
# Setup SSH Keys
To be able to gain remote access to the Skynet.
``$USERNAME`` Refers to your Skynet username, for example I would replace ``$USERNAME`` with ``silver``
## Create Key
First we set up the ssh folder and create a skynet folder within it for neatness
```bash
mkdir -f -p ~/.ssh/skynet
cd ~/.ssh/skynet
```
Now we will create the ssh key itself.
Location: ``$USERNAME``, your skynet username.
Password: Press Enter twice for no password on the key.
```bash
ssh-keygen -t ed25519 -C "<comment>"
```
It will create two files: ``$USERNAME`` and ``$USERNAME.pub`` inside ``~/.ssh/skynet``
### Linux Only
Openssh will complain if the keys permissions are too permissive.
To fix this use
```bash
chmod 600 $USERNAME
# or
chmod 600 ~/.ssh/skynet/$USERNAME
```
## Create Config
Above we created a folder for Skynet keys.
Ye can do the same with Gitlab/Github/... in the future.
The only downside is that we now have to tell ssh what key to use in what situation.
Back up to the ``.ssh`` folder.
```bash
cd ../
# or
cd ~/.ssh
```
Now we have to create the config file.
Notice how it has no extension.
### Windows
```powershell
"" > config
```
Open it up in any text editor available to you.
### Linux
```bash
touch config
```
You can edit it from command line using nano
```bash
nano config
```
Or open up in a text editor.
### Windows/Linux
This is what we want to have in teh file.
```
Host *.skynet.ie
User $USERNAME
IdentityFile ~/.ssh/skynet/$USERNAME
IdentitiesOnly yes
```
## Add key to account
Go to [the modify SSH page](https://account.skynet.ie/modify_ssh) and paste in teh contents of ``$USERNAME.pub``.
You will now be able to SSH into Skynet like so:
```bash
ssh $USERNAME@skynet.skynet.ie
```

View file

@ -1,26 +0,0 @@
# Create your own website on Skynet
## Login
Once ye have [logged in](./create_ssh.md) you will be able to create a website on Skynet.
## Website
### Manually
In your home folder follow these commands to create the folder that can be used to host a website
```bash
mkdir ~/public_html
chmod 711 ~
chmod -R 755 ~/public_html
cd ~/public_html
```
To transfer files graphically you can use these programs:
* WinSCP
* FileZilla
Anything put there will be accessible under ``https://$USERNAME.users.skynet.ie``.
For backwards compatability ``https://skynet.ie/~$USERNAME`` will redirect to ``https://$USERNAME.users.skynet.ie``.
## More info
There is a slideshow that might be of use to you: <https://public.skynet.ie/slides/skynet/1_setup.html>

View file

@ -1,30 +0,0 @@
# Verify Membership on Discord
In order to get the ``Member`` role on [Discord][0] you have to link your Wolves account.
This is only done once and works for any server that the Skynet Bot is on.
This process ensures that personal information does not get exposed.
## Commands
### Linking
In any channel use ``/link_wolves`` and enter the email you use for Wolves.
This is the ``Peferred Contact Email`` on the [profile][1] page.
An email will be sent to this address in order to prove that it is yours.
You may need to check the Spam folder.
![Linking.png](verify_discord/linking.png)
### Verify
Once you have gotten the email you will now submit the verification code.
It is in the form of ``/verify code: ABCDEFG`` and is tied to your account.
Enter this in Discord and you will be verified.
## Troubleshooting
[0]: https://discord.skynet.ie
[1]: https://ulwolves.ie/memberships/profile

Binary file not shown.

View file

@ -0,0 +1,23 @@
#! /bin/sh -e
# keep the files in renew up to date with git repo
# this script will be called from a cronjob every 7 days
# cwalsh 2020-10-10
# ensure we are in the correct directory
cd /var/www/html/renew
# check the repo is available
git ls-remote http://github.com/ULCompSoc/skynet.ie-renew.git -q || { echo 'Repo not available' ; exit 1; }
# delete all files in directory except for this script
ls | grep -v update-renew-from-github.sh | xargs rm -rf --
# clone renew directory
git clone http://github.com/ULCompSoc/skynet.ie-renew.git
# copy files from git repo to main directory
cp -r skynet.ie-renew/* .
# remove the git repo from the directory
rm -rf skynet.ie-renew