newera/init
Signed-off-by: Ari Archer <ari@ari.lt>
|
@ -1,19 +0,0 @@
|
||||||
---
|
|
||||||
BasedOnStyle: LLVM
|
|
||||||
IndentWidth: 4
|
|
||||||
SortIncludes: false
|
|
||||||
AlignConsecutiveAssignments: true
|
|
||||||
AlignConsecutiveBitFields: true
|
|
||||||
AlignConsecutiveMacros: true
|
|
||||||
AlignEscapedNewlines: true
|
|
||||||
AllowShortCaseLabelsOnASingleLine: true
|
|
||||||
AllowShortEnumsOnASingleLine: true
|
|
||||||
AllowShortFunctionsOnASingleLine: true
|
|
||||||
AllowShortLambdasOnASingleLine: true
|
|
||||||
BinPackParameters: false
|
|
||||||
IndentCaseBlocks: true
|
|
||||||
IndentCaseLabels: true
|
|
||||||
IndentExternBlock: true
|
|
||||||
IndentGotoLabels: true
|
|
||||||
---
|
|
||||||
|
|
13
.eslintrc.js
|
@ -1,13 +0,0 @@
|
||||||
module.exports = {
|
|
||||||
"env": {
|
|
||||||
"browser": true,
|
|
||||||
"es2021": true
|
|
||||||
},
|
|
||||||
"extends": "eslint:recommended",
|
|
||||||
"parserOptions": {
|
|
||||||
"ecmaVersion": "latest",
|
|
||||||
"sourceType": "module"
|
|
||||||
},
|
|
||||||
"rules": {
|
|
||||||
}
|
|
||||||
}
|
|
174
.gitignore
vendored
|
@ -1,7 +1,167 @@
|
||||||
_*.css
|
# Byte-compiled / optimized / DLL files
|
||||||
node_modules/
|
__pycache__/
|
||||||
*.min.*
|
*.py[cod]
|
||||||
/api/apis.json
|
*$py.class
|
||||||
/api/pages.json
|
|
||||||
/api_hash
|
# C extensions
|
||||||
!.minexclude
|
*.so
|
||||||
|
|
||||||
|
# Distribution / packaging
|
||||||
|
.Python
|
||||||
|
build/
|
||||||
|
develop-eggs/
|
||||||
|
dist/
|
||||||
|
downloads/
|
||||||
|
eggs/
|
||||||
|
.eggs/
|
||||||
|
lib/
|
||||||
|
lib64/
|
||||||
|
parts/
|
||||||
|
sdist/
|
||||||
|
var/
|
||||||
|
wheels/
|
||||||
|
share/python-wheels/
|
||||||
|
*.egg-info/
|
||||||
|
.installed.cfg
|
||||||
|
*.egg
|
||||||
|
MANIFEST
|
||||||
|
|
||||||
|
# PyInstaller
|
||||||
|
# Usually these files are written by a python script from a template
|
||||||
|
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||||
|
*.manifest
|
||||||
|
*.spec
|
||||||
|
|
||||||
|
# Installer logs
|
||||||
|
pip-log.txt
|
||||||
|
pip-delete-this-directory.txt
|
||||||
|
|
||||||
|
# Unit test / coverage reports
|
||||||
|
htmlcov/
|
||||||
|
.tox/
|
||||||
|
.nox/
|
||||||
|
.coverage
|
||||||
|
.coverage.*
|
||||||
|
.cache
|
||||||
|
nosetests.xml
|
||||||
|
coverage.xml
|
||||||
|
*.cover
|
||||||
|
*.py,cover
|
||||||
|
.hypothesis/
|
||||||
|
.pytest_cache/
|
||||||
|
cover/
|
||||||
|
|
||||||
|
# Translations
|
||||||
|
*.mo
|
||||||
|
*.pot
|
||||||
|
|
||||||
|
# Django stuff:
|
||||||
|
*.log
|
||||||
|
local_settings.py
|
||||||
|
db.sqlite3
|
||||||
|
db.sqlite3-journal
|
||||||
|
|
||||||
|
# Flask stuff:
|
||||||
|
instance/
|
||||||
|
.webassets-cache
|
||||||
|
|
||||||
|
# Scrapy stuff:
|
||||||
|
.scrapy
|
||||||
|
|
||||||
|
# Sphinx documentation
|
||||||
|
docs/_build/
|
||||||
|
|
||||||
|
# PyBuilder
|
||||||
|
.pybuilder/
|
||||||
|
target/
|
||||||
|
|
||||||
|
# Jupyter Notebook
|
||||||
|
.ipynb_checkpoints
|
||||||
|
|
||||||
|
# IPython
|
||||||
|
profile_default/
|
||||||
|
ipython_config.py
|
||||||
|
|
||||||
|
# pyenv
|
||||||
|
# For a library or package, you might want to ignore these files since the code is
|
||||||
|
# intended to run in multiple environments; otherwise, check them in:
|
||||||
|
# .python-version
|
||||||
|
|
||||||
|
# pipenv
|
||||||
|
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
||||||
|
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
||||||
|
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
||||||
|
# install all needed dependencies.
|
||||||
|
Pipfile.lock
|
||||||
|
|
||||||
|
# poetry
|
||||||
|
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
||||||
|
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
||||||
|
# commonly ignored for libraries.
|
||||||
|
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
||||||
|
poetry.lock
|
||||||
|
|
||||||
|
# pdm
|
||||||
|
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
||||||
|
pdm.lock
|
||||||
|
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
||||||
|
# in version control.
|
||||||
|
# https://pdm.fming.dev/#use-with-ide
|
||||||
|
.pdm.toml
|
||||||
|
|
||||||
|
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
||||||
|
__pypackages__/
|
||||||
|
|
||||||
|
# Celery stuff
|
||||||
|
celerybeat-schedule
|
||||||
|
celerybeat.pid
|
||||||
|
|
||||||
|
# SageMath parsed files
|
||||||
|
*.sage.py
|
||||||
|
|
||||||
|
# Environments
|
||||||
|
.env
|
||||||
|
.venv
|
||||||
|
env/
|
||||||
|
venv/
|
||||||
|
ENV/
|
||||||
|
env.bak/
|
||||||
|
venv.bak/
|
||||||
|
|
||||||
|
# Spyder project settings
|
||||||
|
.spyderproject
|
||||||
|
.spyproject
|
||||||
|
|
||||||
|
# Rope project settings
|
||||||
|
.ropeproject
|
||||||
|
|
||||||
|
# mkdocs documentation
|
||||||
|
/site
|
||||||
|
|
||||||
|
# mypy
|
||||||
|
.mypy_cache/
|
||||||
|
.dmypy.json
|
||||||
|
dmypy.json
|
||||||
|
|
||||||
|
# Pyre type checker
|
||||||
|
.pyre/
|
||||||
|
|
||||||
|
# pytype static type analyzer
|
||||||
|
.pytype/
|
||||||
|
|
||||||
|
# Cython debug symbols
|
||||||
|
cython_debug/
|
||||||
|
|
||||||
|
# PyCharm
|
||||||
|
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
||||||
|
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
||||||
|
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
||||||
|
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
||||||
|
.idea/
|
||||||
|
|
||||||
|
# Databases
|
||||||
|
*.db
|
||||||
|
|
||||||
|
# Other
|
||||||
|
.ccls-cache/
|
||||||
|
!py.typed
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
{
|
|
||||||
"m.homeserver": {
|
|
||||||
"base_url": "https://matrix.ari.lt"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
"m.server": "matrix.ari.lt:443"
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
"contacts": [
|
|
||||||
{
|
|
||||||
"matrix_id": "@ari:ari.lt",
|
|
||||||
"email_address": "ari@ari.lt",
|
|
||||||
"lt.ari.jabber_id": "ari@ari.lt",
|
|
||||||
"role": "m.role.admin",
|
|
||||||
"lt.ari.website": "https://ari.lt/"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"matrix_id": "@zayd:envs.net",
|
|
||||||
"email_address": "wanderer@envs.net",
|
|
||||||
"role": "m.role.mod",
|
|
||||||
"lt.ari.website": "https://wanderer.envs.net/"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"matrix_id": "@lda:a.freetards.xyz",
|
|
||||||
"role": "m.role.mod",
|
|
||||||
"lt.ari.website": "https://freetards.xyz/"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"matrix_id": "@fourier:ari.lt",
|
|
||||||
"role": "m.role.mod",
|
|
||||||
"lt.ari.website": "https://freetards.xyz/"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"support_page": "https://ari.lt/matrix",
|
|
||||||
"lt.ari.room": "#root:ari.lt",
|
|
||||||
"lt.ari.abuse": "#abuse:ari.lt"
|
|
||||||
}
|
|
|
@ -1,34 +0,0 @@
|
||||||
{
|
|
||||||
"server": "62.171.174.136",
|
|
||||||
"domain": "ari.lt",
|
|
||||||
"description": "Ari-web server",
|
|
||||||
"keywords": [
|
|
||||||
"ari-web",
|
|
||||||
"selfhosted",
|
|
||||||
"email",
|
|
||||||
"messaging",
|
|
||||||
"webapps",
|
|
||||||
"hosting"
|
|
||||||
],
|
|
||||||
"staff": [
|
|
||||||
{
|
|
||||||
"name": "Ari Archer",
|
|
||||||
"email": "ari@ari.lt",
|
|
||||||
"website": "https://ari.lt/",
|
|
||||||
"role": "owner",
|
|
||||||
"matrix": "@ari:ari.lt",
|
|
||||||
"xmpp": "ari@ari.lt",
|
|
||||||
"of": ["*"]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"name": "Ari::web -> Server",
|
|
||||||
"privacy": "https://ari.lt/privacy",
|
|
||||||
"terms": "https://ari.lt/tos",
|
|
||||||
"affiliated-with": ["pain.agency", "h2.gay"],
|
|
||||||
"hardware": {
|
|
||||||
"ram": 16,
|
|
||||||
"cpu": 6,
|
|
||||||
"storage": 400,
|
|
||||||
"network": 0.8
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,112 +0,0 @@
|
||||||
{
|
|
||||||
"matrix.ari.lt": {
|
|
||||||
"source": "https://matrix.ari.lt/git",
|
|
||||||
"description": "The ari.lt Matrix homeserver using Dendrite",
|
|
||||||
"license": "MIT",
|
|
||||||
"public": false,
|
|
||||||
"extra": "Required to contact admin for signup",
|
|
||||||
"keywords": ["ari-web", "matrix", "messaging", "im", "dendrite"],
|
|
||||||
"privacy": "https://ari.lt/matrix",
|
|
||||||
"terms": "https://ari.lt/matrix"
|
|
||||||
},
|
|
||||||
"vim-or-emacs.ari.lt": {
|
|
||||||
"source": "https://vim-or-emacs.ari.lt/git",
|
|
||||||
"description": "Vim or Emacs?",
|
|
||||||
"license": "GPL-3.0-or-later",
|
|
||||||
"public": true,
|
|
||||||
"keywords": ["ari-web", "poll", "statistics", "vim", "emacs"],
|
|
||||||
"privacy": "https://ari.lt/privacy",
|
|
||||||
"terms": "https://ari.lt/tos"
|
|
||||||
},
|
|
||||||
"git.ari.lt": {
|
|
||||||
"source": "https://git.ari.lt/git",
|
|
||||||
"description": "Ari-web forgejo instance",
|
|
||||||
"license": "MIT",
|
|
||||||
"public": true,
|
|
||||||
"extra": "Required to contact admin for signup",
|
|
||||||
"keywords": ["ari-web", "git", "forgejo"],
|
|
||||||
"privacy": "https://ari.lt/privacy",
|
|
||||||
"terms": "https://ari.lt/tos"
|
|
||||||
},
|
|
||||||
"searx.ari.lt": {
|
|
||||||
"source": "https://searx.ari.lt/git",
|
|
||||||
"description": "SearXNG instance by ari-web",
|
|
||||||
"license": "MIT",
|
|
||||||
"public": true,
|
|
||||||
"extra": "The instance may be slow, suggest to disable a couple of search engines in settings before using",
|
|
||||||
"keywords": ["ari-web", "searx", "search"],
|
|
||||||
"privacy": "https://ari.lt/privacy",
|
|
||||||
"terms": "https://ari.lt/tos"
|
|
||||||
},
|
|
||||||
"pad.ari.lt": {
|
|
||||||
"source": "https://pad.ari.lt/git",
|
|
||||||
"description": "Cryptpad instance: End-to-end encrypted collabware, hosted by ari-web",
|
|
||||||
"license": "MIT",
|
|
||||||
"public": true,
|
|
||||||
"keywords": ["ari-web", "e2ee", "cryptpad", "collabware"],
|
|
||||||
"privacy": "https://ari.lt/privacy",
|
|
||||||
"terms": "https://ari.lt/tos"
|
|
||||||
},
|
|
||||||
"mail.ari.lt": {
|
|
||||||
"source": "https://mail.ari.lt/git",
|
|
||||||
"description": "Ari-web mailcow instance",
|
|
||||||
"license": "MIT",
|
|
||||||
"public": false,
|
|
||||||
"extra": "Contact Admin for an address and its aliases",
|
|
||||||
"keywords": ["ari-web", "email", "mailcow"],
|
|
||||||
"privacy": "https://ari.lt/privacy",
|
|
||||||
"terms": "https://ari.lt/tos"
|
|
||||||
},
|
|
||||||
"rc.ari.lt": {
|
|
||||||
"source": "https://rc.ari.lt/git",
|
|
||||||
"description": "Ari-web roundcube mail instance",
|
|
||||||
"license": "MIT",
|
|
||||||
"public": true,
|
|
||||||
"keywords": [
|
|
||||||
"ari-web",
|
|
||||||
"email",
|
|
||||||
"mailcow",
|
|
||||||
"email client",
|
|
||||||
"roundcube"
|
|
||||||
],
|
|
||||||
"privacy": "https://ari.lt/privacy",
|
|
||||||
"terms": "https://ari.lt/tos"
|
|
||||||
},
|
|
||||||
"schildi.ari.lt": {
|
|
||||||
"source": "https://schildi.ari.lt/git",
|
|
||||||
"description": "Schildichat Matrix client instance by ari-web",
|
|
||||||
"license": "MIT",
|
|
||||||
"public": true,
|
|
||||||
"keywords": ["ari-web", "schildichat", "schildi", "matrix client"],
|
|
||||||
"privacy": "https://ari.lt/matrix",
|
|
||||||
"terms": "https://ari.lt/matrix"
|
|
||||||
},
|
|
||||||
"cinny.ari.lt": {
|
|
||||||
"source": "https://cinny.ari.lt/git",
|
|
||||||
"description": "Cinny Matrix client instance by ari-web",
|
|
||||||
"license": "MIT",
|
|
||||||
"public": true,
|
|
||||||
"keywords": ["ari-web", "cinny", "matrix client"],
|
|
||||||
"privacy": "https://ari.lt/matrix",
|
|
||||||
"terms": "https://ari.lt/matrix"
|
|
||||||
},
|
|
||||||
"pb.ari.lt": {
|
|
||||||
"source": "https://pb.ari.lt/git",
|
|
||||||
"description": "Ari-web privatebin instance: End-to-end encrypted pastebin",
|
|
||||||
"license": "MIT",
|
|
||||||
"public": true,
|
|
||||||
"keywords": ["ari-web", "privatebin", "pastebin", "e2ee"],
|
|
||||||
"privacy": "https://ari.lt/privacy",
|
|
||||||
"terms": "https://ari.lt/tos"
|
|
||||||
},
|
|
||||||
"xmpp.ari.lt": {
|
|
||||||
"source": "https://xmpp.ari.lt/git",
|
|
||||||
"description": "The ari-web XMPP server using prosody",
|
|
||||||
"license": "MIT",
|
|
||||||
"public": false,
|
|
||||||
"extra": "Required to contact admin for signup",
|
|
||||||
"keywords": ["ari-web", "e2ee", "prosody", "xmpp"],
|
|
||||||
"privacy": "https://ari.lt/xmpp",
|
|
||||||
"terms": "https://ari.lt/xmpp"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,26 +0,0 @@
|
||||||
UNLICENSE
|
|
||||||
|
|
||||||
This is free and unencumbered software released into the public domain.
|
|
||||||
|
|
||||||
Anyone is free to copy, modify, publish, use, compile, sell, or
|
|
||||||
distribute this software, either in source code form or as a compiled
|
|
||||||
binary, for any purpose, commercial or non-commercial, and by any
|
|
||||||
means.
|
|
||||||
|
|
||||||
In jurisdictions that recognize copyright laws, the author or authors
|
|
||||||
of this software dedicate any and all copyright interest in the
|
|
||||||
software to the public domain. We make this dedication for the benefit
|
|
||||||
of the public at large and to the detriment of our heirs and
|
|
||||||
successors. We intend this dedication to be an overt act of
|
|
||||||
relinquishment in perpetuity of all present and future rights to this
|
|
||||||
software under copyright law.
|
|
||||||
|
|
||||||
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 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.
|
|
||||||
|
|
||||||
For more information, please refer to <http://unlicense.org/>
|
|
18
Makefile
|
@ -1,18 +0,0 @@
|
||||||
build:
|
|
||||||
npm run build
|
|
||||||
|
|
||||||
netlifyapis:
|
|
||||||
sh ./scripts/netlifyapis.sh
|
|
||||||
|
|
||||||
clean:
|
|
||||||
[ -z "${CI}" ] || rm -rfv requirements.txt \
|
|
||||||
runtime.txt \
|
|
||||||
README.md \
|
|
||||||
git.sh \
|
|
||||||
scripts \
|
|
||||||
.vscode \
|
|
||||||
.github
|
|
||||||
|
|
||||||
netlify: build netlifyapis clean
|
|
||||||
|
|
||||||
.PHONY: build clean netlify
|
|
131
NETWORK.md
|
@ -1,131 +0,0 @@
|
||||||
# The network protocol
|
|
||||||
|
|
||||||
The network protocol consists of 2 different files:
|
|
||||||
|
|
||||||
- `.well-known/network/server.json` - defines the server information
|
|
||||||
- `.well-known/network/services.json` - defines the services information
|
|
||||||
|
|
||||||
All the servers and services must support HTTPS.
|
|
||||||
|
|
||||||
## Server
|
|
||||||
|
|
||||||
The server file, `.well-known/network/server.json`, has the following structure:
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"server": "62.171.174.136",
|
|
||||||
"domain": "ari.lt",
|
|
||||||
"description": "Ari-web server",
|
|
||||||
"keywords": [
|
|
||||||
"ari-web",
|
|
||||||
"selfhosted",
|
|
||||||
"email",
|
|
||||||
"messaging",
|
|
||||||
"webapps",
|
|
||||||
"hosting"
|
|
||||||
],
|
|
||||||
"staff": [
|
|
||||||
{
|
|
||||||
"name": "Ari Archer",
|
|
||||||
"email": "ari@ari.lt",
|
|
||||||
"website": "https://ari.lt/",
|
|
||||||
"role": "owner",
|
|
||||||
"matrix": "@ari:ari.lt",
|
|
||||||
"xmpp": "ari@ari.lt",
|
|
||||||
"of": ["*"]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"name": "Ari::web -> Server",
|
|
||||||
"privacy": "https://ari.lt/privacy",
|
|
||||||
"terms": "https://ari.lt/tos",
|
|
||||||
"affiliated-with": ["pain.agency", "h2.gay"],
|
|
||||||
"hardware": {
|
|
||||||
"ram": 16,
|
|
||||||
"cpu": 6,
|
|
||||||
"storage": 400,
|
|
||||||
"network": 0.8
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
(This is an example)
|
|
||||||
|
|
||||||
And this is what the fields mean:
|
|
||||||
|
|
||||||
\*required
|
|
||||||
|
|
||||||
- \*`server`: The server domain or IP address, a domain (or IP) that directly points to your server.
|
|
||||||
- \*`domain`: The representative domain of the server, does not have to run on the same server as `server`.
|
|
||||||
- \*`description`: The description of your server, usually small, up to 1024 characters.
|
|
||||||
- \*`keywords`: The keywords of your server. This is used for categorization and discovery of your server in the network. Up to 32 tags, of up to 32 characters each.
|
|
||||||
- \*`staff`: A list of staff contacts. See required entries below.
|
|
||||||
- `name`: The name of the staff member, may repeat to add alternative accounts.
|
|
||||||
- `email`: The email of the staff member.
|
|
||||||
- `role`: The role of the staff member, usually:
|
|
||||||
- `owner`
|
|
||||||
- `admin`
|
|
||||||
- `mod`
|
|
||||||
- `audit` (person who may review code, configurations, etc. from time to time)
|
|
||||||
- `of`: The list of services that this staff member _may_ manage. Globbing supported (such as `*.ari.lt`).
|
|
||||||
- Other keys will be listed as-is.
|
|
||||||
- \*`name`: The name of your server, any string up to 128 characters.
|
|
||||||
- `privacy`: General privacy statement of your server, such as logging,
|
|
||||||
- `terms`: General privacy statement of your server, such as logging,
|
|
||||||
- \*`affiliated-with`: The affiliated servers in your network. Your server won't be able to talk to other servers not listed in the this list.
|
|
||||||
- \*`hardware`: The hardware of your server, in gigabytes
|
|
||||||
- `ram`: The memory/RAM your server has in total, excluding swap.
|
|
||||||
- `cpu`: The CPU threads on your server.
|
|
||||||
- `storage`: The total storage your server has.
|
|
||||||
- `network`: The network speed in GBit/s. (for example 0.8 is 800 mbit/s)
|
|
||||||
|
|
||||||
That is all for the server configuration
|
|
||||||
|
|
||||||
This file should be served with the following HTTP headers:
|
|
||||||
|
|
||||||
- `Access-Control-Allow-Origin` = `*`
|
|
||||||
- `Access-Control-Allow-Methods` = `GET`
|
|
||||||
- `Content-Type` = `application/json`
|
|
||||||
|
|
||||||
## Services
|
|
||||||
|
|
||||||
The services configuration, `.well-known/network/server.json`, has the following structure:
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"matrix.ari.lt": {
|
|
||||||
"source": "https://matrix.ari.lt/git",
|
|
||||||
"description": "The ari.lt Matrix homeserver using Dendrite",
|
|
||||||
"license": "MIT",
|
|
||||||
"public": false,
|
|
||||||
"extra": "Required to contact admin for signup",
|
|
||||||
"keywords": ["ari-web", "matrix", "messaging", "im", "dendrite"],
|
|
||||||
"privacy": "https://ari.lt/matrix",
|
|
||||||
"terms": "https://ari.lt/matrix"
|
|
||||||
},
|
|
||||||
...
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
(This is an example)
|
|
||||||
|
|
||||||
This is what those fields mean:
|
|
||||||
|
|
||||||
\*required
|
|
||||||
|
|
||||||
- The keys of the object are the domain names used for the service hosting.
|
|
||||||
- `source`: The source code/configuration/etc. of your service.
|
|
||||||
- \*`description`: The description of your service. Up to 1024 characters.
|
|
||||||
- `license`: The license of your `source` or content on the page. Up to 128 characters.
|
|
||||||
- \*`public`: Whether or not any random passer-by can sign up and use this service without any extra steps.
|
|
||||||
- `extra`: Any extra information about the service. Up to 512 characters.
|
|
||||||
- \*`keywords`: The keywords for your service, used for discovery and categorization. Up to 32 tags, of up to 32 characters each.
|
|
||||||
- `privacy`: Privacy statement of your service.
|
|
||||||
- `terms`: Terms of your service.
|
|
||||||
|
|
||||||
You may add as many services as you want.
|
|
||||||
|
|
||||||
This file should be served with the following HTTP headers:
|
|
||||||
|
|
||||||
- `Access-Control-Allow-Origin` = `*`
|
|
||||||
- `Access-Control-Allow-Methods` = `GET`
|
|
||||||
- `Content-Type` = `application/json`
|
|
150
README.md
|
@ -1,150 +0,0 @@
|
||||||
<h1 align="center">Website</h1>
|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<img src="https://img.shields.io/github/last-commit/ari-lt/ari.lt?color=red&style=flat-square">
|
|
||||||
<img src="https://img.shields.io/github/repo-size/ari-lt/ari.lt?color=red&style=flat-square">
|
|
||||||
<img src="https://img.shields.io/github/issues/ari-lt/ari.lt?color=red&style=flat-square">
|
|
||||||
<img src="https://img.shields.io/github/stars/ari-lt/ari.lt?color=red&style=flat-square">
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<a href="https://app.netlify.com/sites/ari-lt/deploys">
|
|
||||||
<img alt="Netlify Status" src="https://api.netlify.com/api/v1/badges/d82361d9-c471-41d0-ba9b-b5fbe07ca843/deploy-status" /> </a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
### [My website's](https://www.ari.lt/) source code.
|
|
||||||
|
|
||||||
# Badge
|
|
||||||
|
|
||||||
the badge( s ) is licensed under UNLICENSE :
|
|
||||||
|
|
||||||
```
|
|
||||||
UNLICENSE
|
|
||||||
|
|
||||||
This is free and unencumbered software released into the public domain.
|
|
||||||
|
|
||||||
Anyone is free to copy, modify, publish, use, compile, sell, or
|
|
||||||
distribute this software, either in source code form or as a compiled
|
|
||||||
binary, for any purpose, commercial or non-commercial, and by any
|
|
||||||
means.
|
|
||||||
|
|
||||||
In jurisdictions that recognize copyright laws, the author or authors
|
|
||||||
of this software dedicate any and all copyright interest in the
|
|
||||||
software to the public domain. We make this dedication for the benefit
|
|
||||||
of the public at large and to the detriment of our heirs and
|
|
||||||
successors. We intend this dedication to be an overt act of
|
|
||||||
relinquishment in perpetuity of all present and future rights to this
|
|
||||||
software under copyright law.
|
|
||||||
|
|
||||||
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 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.
|
|
||||||
|
|
||||||
For more information, please refer to <http://unlicense.org/>
|
|
||||||
```
|
|
||||||
|
|
||||||
## original
|
|
||||||
|
|
||||||
author : Ari Archer - [@TruncatedDinosour](https://ari.lt/gh) - <https://ari.lt/> - <ari.web.xyz@gmail.com>
|
|
||||||
|
|
||||||
in html :
|
|
||||||
|
|
||||||
```html
|
|
||||||
<a href="https://ari.lt/"> <img src="https://ari.lt/badge.png" loading="lazy" alt="ari-web badge" height="31px" width="88px" /> </a>
|
|
||||||
```
|
|
||||||
|
|
||||||
in markdown :
|
|
||||||
|
|
||||||
```md
|
|
||||||
[![ari-web badge](https://ari.lt/badge.png)](https://ari.lt/)
|
|
||||||
```
|
|
||||||
|
|
||||||
[![ari-web badge](https://ari.lt/badge.png)](https://ari.lt/)
|
|
||||||
|
|
||||||
## yellow
|
|
||||||
|
|
||||||
author : Tobskep - <https://tobskep.com/>
|
|
||||||
|
|
||||||
in html :
|
|
||||||
|
|
||||||
```html
|
|
||||||
<a href="https://ari.lt/"> <img src="https://ari.lt/badge-yellow.png" loading="lazy" alt="ari-web badge" height="31px" width="88px" /> </a>
|
|
||||||
```
|
|
||||||
|
|
||||||
in markdown :
|
|
||||||
|
|
||||||
```md
|
|
||||||
[![ari-web badge](https://ari.lt/badge-yellow.png)](https://ari.lt/)
|
|
||||||
```
|
|
||||||
|
|
||||||
[![ari-web badge](https://ari.lt/badge-yellow.png)](https://ari.lt/)
|
|
||||||
|
|
||||||
# Customising when self-hosting
|
|
||||||
|
|
||||||
1. Clone the repository: `git clone https://ari.lt/git ari-web`
|
|
||||||
2. Enter the directory: `cd ari-web`
|
|
||||||
3. See the `/content/styles/config` and `/content/js/config` directories.
|
|
||||||
4. Open it in live server: `python3 -m http.server 5500`
|
|
||||||
5. Go to http://0.0.0.0:5500/ in your browser
|
|
||||||
6. Edit all stuff that is `ARI-WEB-SPECIFIC` in [netlify.toml](/netlify.toml)
|
|
||||||
7. Publish on [netlify](https://netlify.com/)
|
|
||||||
|
|
||||||
# API hashes
|
|
||||||
|
|
||||||
If you want to call to a very expensive API it might become
|
|
||||||
slow, so there's hashes for them, they are sha256 hashes of
|
|
||||||
those JSON files in the api
|
|
||||||
|
|
||||||
So what you do, replace all `.` in the API name with \_,
|
|
||||||
then make the request to `/api_hash/..._hash.txt` and you will
|
|
||||||
get the hash, for example: <https://www.ari.lt/api_hash/apis_json_hash.txt>
|
|
||||||
|
|
||||||
# Standard
|
|
||||||
|
|
||||||
See [the standard](/STANDARD.md) to see how ari-web is structured and
|
|
||||||
how to properly modify ari-web
|
|
||||||
|
|
||||||
# Usage API
|
|
||||||
|
|
||||||
The [usage api](https://www.ari.lt/api/usage.json)
|
|
||||||
has all the statistics I get from netlify, it serves as
|
|
||||||
an archive and growth monitor
|
|
||||||
|
|
||||||
Schema:
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"<YYYY-MM-DD>": {
|
|
||||||
"total": <total bandwidth used in MB>,
|
|
||||||
"top": {
|
|
||||||
"<top usage site 1>": <total bandwidth used in MB>,
|
|
||||||
"<top usage site 2>": <total bandwidth used in MB>,
|
|
||||||
"<top usage site 3>": <total bandwidth used in MB>
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
The date is the day I added those stats, total is total
|
|
||||||
bandwidth used up to that point, top is the top 3 site's
|
|
||||||
usage and its keys are the (sub)domain names and the values
|
|
||||||
of those keys are the used bandwidth out of the total
|
|
||||||
|
|
||||||
The bandwidth keys are all floats for easy parsing, they
|
|
||||||
represent the bandwidth used in MB
|
|
||||||
|
|
||||||
The top sites will most likely not have the total bandwidth
|
|
||||||
fully used, so as a measure you can use this formula to calculate
|
|
||||||
how much per avg sites are using:
|
|
||||||
|
|
||||||
```py
|
|
||||||
(data["<YYYY-MM-DD>"]["total"] - sum(data["<YYYY-MM-DD>"]["top"].values())) / (len(ari_web_sites) - 3)
|
|
||||||
```
|
|
||||||
|
|
||||||
# Subdomains
|
|
||||||
|
|
||||||
Check <https://ari.lt/lh>
|
|
86
STANDARD.md
|
@ -1,86 +0,0 @@
|
||||||
# ari-web standard
|
|
||||||
|
|
||||||
this document describes how ari-web is built, what rules
|
|
||||||
it follows and what standard it practices
|
|
||||||
|
|
||||||
- folder structure
|
|
||||||
- api
|
|
||||||
- 1 API route
|
|
||||||
- e.g. <https://blog.ari.lt/blog.json>, you can make the request to
|
|
||||||
that route and thats all, hashing of it works basically the same,
|
|
||||||
but wtihout `/api/` -- <https://blog.ari.lt/blog_json_hash.txt>
|
|
||||||
- \>1 API route
|
|
||||||
- use `/api` directory for APIs based on JSON if you have multiple ones
|
|
||||||
- `/api/*.json` is any API route
|
|
||||||
- `/api` purely should return a redirect to a JSON file in `/api` containing
|
|
||||||
an index of all API routes
|
|
||||||
- `/api_hash/*_json_hash.txt` where wildcard is api route name returns a sha256 sum
|
|
||||||
of that specific route
|
|
||||||
- `/content/`
|
|
||||||
- content includes all your content
|
|
||||||
- `img` -- images
|
|
||||||
- `js` -- javascript
|
|
||||||
- `styles` / `css` -- CSS ( or SCSS )
|
|
||||||
- `etc` -- other content
|
|
||||||
- `/favicons/`
|
|
||||||
- this directory should purely be on the parent level domain, e.g. `ari.lt`,
|
|
||||||
this should include all of your favicons and its versions / revisions you might
|
|
||||||
use
|
|
||||||
- `/page/`
|
|
||||||
- this should include all of your pages
|
|
||||||
- this directory should purely include directories and text files
|
|
||||||
use directories for pages and text files for pages that dont make
|
|
||||||
use of html ( e.g. <https://ari.lt/page/minimal.txt>, otherwise
|
|
||||||
you should have a subdirectory and in it you should have an `index.html`
|
|
||||||
file, e.g. <https://ari.lt/page/info/index.html>, which compresses
|
|
||||||
into <https://ari.lt/page/info/>
|
|
||||||
- `/index.html`
|
|
||||||
- as per HTTP this is just your home page -- `/`, you should not put it in
|
|
||||||
`/page/`, this should be in the root level directory
|
|
||||||
- `/robots.txt` and `/sitemap.xml`
|
|
||||||
- these once again should follow general format of robots and sitemap,
|
|
||||||
although this should purely be on the parent-level domain
|
|
||||||
- `/manifest.json`
|
|
||||||
- this is your site manifest, you should have it
|
|
||||||
- \*see redirects for all `parent-level` points
|
|
||||||
- licensing
|
|
||||||
- all of your code must be free and open source under a shareable license
|
|
||||||
- id suggest your license to be accessible through your site
|
|
||||||
- redirects
|
|
||||||
- `/404.html` must be a redirect to `/page/404/index.html`
|
|
||||||
- `/favicon.ico` should be a redirect to one of your favicons in the `/favicons/` directory
|
|
||||||
- `/git` should redirect to the source code on the website, preferably on git
|
|
||||||
- `/git/*` should also be redirected into the source code but with the splat appended to it
|
|
||||||
- `/*` should redirect to `/page/*` if `/*` does not exist
|
|
||||||
- `/*` should 'redirect' to `/page/404/index.html` with status code `404` if `/*` nor `/page/*` exists
|
|
||||||
- content
|
|
||||||
- content should preferably should be minified at build time on the build server
|
|
||||||
rather than in the source code, source code should be readable for a human reader
|
|
||||||
- all minified content should link to the source code through a human-readable comment
|
|
||||||
in the source code, for example HTML -- `<!-- source code @ /git -->` or similar
|
|
||||||
- your content should strive to be accessible for all people of different abilities,
|
|
||||||
for example, try if possible make it easy for blind readers, A11Y
|
|
||||||
- your content should strive to be portable for all browsers that have at least
|
|
||||||
a couple hundred users
|
|
||||||
- markup
|
|
||||||
- use semantic markup
|
|
||||||
- use JS licensing
|
|
||||||
- dont force JS on people, explain why you need it if its disabled
|
|
||||||
- all `script`s must be placed in the `head` element, use `defer` attribute
|
|
||||||
- make sure to specify `lang` attribute in your `html`
|
|
||||||
- escape all html-unsafe characters with escapes
|
|
||||||
- make sure to use `charset`, `X-UA-Compatible` and `viewport` meta tags
|
|
||||||
to make it easy for people
|
|
||||||
- `<meta charset="UTF-8" />`
|
|
||||||
- `<meta http-equiv="X-UA-Compatible" content="IE=edge" />`
|
|
||||||
- `<meta name="viewport" content="width=device-width, initial-scale=1.0" />`
|
|
||||||
- make sure to link to your `robots.txt` using the `meta` tag and `manifest.json`
|
|
||||||
using `link`
|
|
||||||
- `og:type` should have a defined value preferably
|
|
||||||
- `color-scheme` and `theme-color` should also preferably be defined
|
|
||||||
- textual content
|
|
||||||
- dates : `yyyy/mm/dd` for dates `yyyy-mm-dd` for timestamps
|
|
||||||
|
|
||||||
# changelog
|
|
||||||
|
|
||||||
- `2023-03-18` -- init
|
|
24
TODO.md
|
@ -1,24 +0,0 @@
|
||||||
- [x] Fac command: POST to https://elijah-dev.tk/fa.php with the fa parameter being some code
|
|
||||||
- Used to have it, removed it on 2022/10/20
|
|
||||||
- [x] Chat subdomain using WebRTC
|
|
||||||
- We have [CaO](https://user.ari.lt/), not going to implement
|
|
||||||
- [x] Store files in IndexedDB
|
|
||||||
- [Overly complex API, i dont want to deliver this much JS, i already deliver quite a package](https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API)
|
|
||||||
- [x] Export/Import
|
|
||||||
- [x] Python code runner
|
|
||||||
- `terminal` branch is not being worked on anymore
|
|
||||||
- [x] Minimal UI framework
|
|
||||||
- [x] Convert some of the pages to use that framework
|
|
||||||
- Stupid idea ngl
|
|
||||||
- [x] WASM
|
|
||||||
- Fun challenge, but will ruin browser support, although keeping this idea for some commands :)
|
|
||||||
- [x] Custom ari-web assembler ?
|
|
||||||
- Ari-web ASM -> (WAT ?) -> WASM -> run
|
|
||||||
- `terminal` branch is not being worked on anymore
|
|
||||||
- [ ] More theme generators
|
|
||||||
- [ ] ViM themes
|
|
||||||
- [ ] Suckless themes
|
|
||||||
- [ ] Dmenu
|
|
||||||
- [ ] St
|
|
||||||
- [ ] DWM
|
|
||||||
- [ ] Emacs themes
|
|
|
@ -1,51 +0,0 @@
|
||||||
{
|
|
||||||
"%android": {
|
|
||||||
"disallowed-android-versions": ["p", "pie", "9", "t", "13"]
|
|
||||||
},
|
|
||||||
"android": {
|
|
||||||
"Your GitHub username": {
|
|
||||||
"placeholder": "Your GitHub username",
|
|
||||||
"id": "gh-username"
|
|
||||||
},
|
|
||||||
"Android version": {
|
|
||||||
"placeholder": "The version of Android you are building",
|
|
||||||
"id": "and-version"
|
|
||||||
},
|
|
||||||
"Stock Android Version": {
|
|
||||||
"placeholder": "The latest version of Android your OEM has released. You may disregard this your issue isn't a bringup issue",
|
|
||||||
"id": "stock-and-version",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"ROM": {
|
|
||||||
"placeholder": "Provide the name of the ROM you are building AND a link to their GitHub organization",
|
|
||||||
"id": "rom-url"
|
|
||||||
},
|
|
||||||
"Device": {
|
|
||||||
"placeholder": "This must be YOUR tree that has been pushed to YOUR GitHub with all of your current changes",
|
|
||||||
"id": "dev-url"
|
|
||||||
},
|
|
||||||
"Kernel": {
|
|
||||||
"placeholder": "This must be YOUR tree that has been pushed to YOUR GitHub with all of your current changes.",
|
|
||||||
"id": "kern-url"
|
|
||||||
},
|
|
||||||
"Vendor": {
|
|
||||||
"placeholder": "This must be YOUR tree that has been pushed to YOUR GitHub with all of your current changes.",
|
|
||||||
"id": "ven-url"
|
|
||||||
},
|
|
||||||
"Common Tree(s)": {
|
|
||||||
"placeholder": "This must be YOUR tree that has been pushed to YOUR GitHub with all of your current changes. Disregard this if your device does not use any common trees",
|
|
||||||
"id": "ctree-url",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"Error Log URL": {
|
|
||||||
"placeholder": "Please only use hastebin.com, katb.in, nekob.in, or gist.github.com. Pastebin links will not be accepted.",
|
|
||||||
"id": "err-url"
|
|
||||||
},
|
|
||||||
"Additional notes": {
|
|
||||||
"placeholder": "Additional things you have tried to do",
|
|
||||||
"id": "additional",
|
|
||||||
"optional": true,
|
|
||||||
"textbox": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,6 +0,0 @@
|
||||||
[
|
|
||||||
"https://blog.ari-web.xyz/blog.json",
|
|
||||||
"https://files.ari-web.xyz/files.json",
|
|
||||||
"https://blog.ari.lt/blog.json",
|
|
||||||
"https://files.ari.lt/files.json"
|
|
||||||
]
|
|
|
@ -1,16 +0,0 @@
|
||||||
[
|
|
||||||
"www.ari-web.xyz",
|
|
||||||
"files.ari-web.xyz",
|
|
||||||
"blog.ari-web.xyz",
|
|
||||||
"legacy.blog.ari-web.xyz",
|
|
||||||
"school.ari-web.xyz",
|
|
||||||
"user.ari-web.xyz",
|
|
||||||
"etc.ari-web.xyz",
|
|
||||||
"www.ari.lt",
|
|
||||||
"files.ari.lt",
|
|
||||||
"blog.ari.lt",
|
|
||||||
"legacy.blog.ari.lt",
|
|
||||||
"school.ari.lt",
|
|
||||||
"us.ari.lt",
|
|
||||||
"etc.ari.lt"
|
|
||||||
]
|
|
178
api/usage.json
|
@ -1,178 +0,0 @@
|
||||||
{
|
|
||||||
"2022-08-17": {
|
|
||||||
"total": 137,
|
|
||||||
"top": {
|
|
||||||
"files.ari-web.xyz": 45.1,
|
|
||||||
"legacy.blog.ari-web.xyz": 31.8,
|
|
||||||
"ari-web.xyz": 29.9
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"2022-08-28": {
|
|
||||||
"total": 30,
|
|
||||||
"top": {
|
|
||||||
"legacy.blog.ari-web.xyz": 9.2,
|
|
||||||
"ari-web.xyz": 8.6,
|
|
||||||
"blog.ari-web.xyz": 7.3
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"2022-09-23": {
|
|
||||||
"total": 11,
|
|
||||||
"top": {
|
|
||||||
"ari-web.xyz": 3.4,
|
|
||||||
"blog.ari-web.xyz": 2.4,
|
|
||||||
"legacy.blog.ari-web.xyz": 2.2
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"2022-09-28": {
|
|
||||||
"total": 40,
|
|
||||||
"top": {
|
|
||||||
"files.ari-web.xyz": 19.8,
|
|
||||||
"blog.ari-web.xyz": 5.6,
|
|
||||||
"ari-web.xyz": 5.6
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"2022-11-13": {
|
|
||||||
"total": 90,
|
|
||||||
"top": {
|
|
||||||
"files.ari-web.xyz": 36.9,
|
|
||||||
"blog.ari-web.xyz": 24.3,
|
|
||||||
"ari-web.xyz": 20.3
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"2022-12-15": {
|
|
||||||
"total": 69,
|
|
||||||
"top": {
|
|
||||||
"blog.ari-web.xyz": 27.5,
|
|
||||||
"ari-web.xyz": 20.1,
|
|
||||||
"files.ari-web.xyz": 12.9
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"2023-02-03": {
|
|
||||||
"total": 69,
|
|
||||||
"top": {
|
|
||||||
"blog.ari-web.xyz": 45.5,
|
|
||||||
"legacy.blog.ari-web.xyz": 9.1,
|
|
||||||
"ari-web.xyz": 6.1
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"2023-02-06": {
|
|
||||||
"total": 82,
|
|
||||||
"top": {
|
|
||||||
"blog.ari-web.xyz": 49.1,
|
|
||||||
"legacy.blog.ari-web.xyz": 15.4,
|
|
||||||
"ari-web.xyz": 7.3
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"2023-02-16": {
|
|
||||||
"total": 131,
|
|
||||||
"top": {
|
|
||||||
"blog.ari-web.xyz": 84.1,
|
|
||||||
"legacy.blog.ari-web.xyz": 17.2,
|
|
||||||
"ari-web.xyz": 12.5
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"2023-04-04": {
|
|
||||||
"total": 116,
|
|
||||||
"top": {
|
|
||||||
"blog.ari-web.xyz": 31.4,
|
|
||||||
"user.ari-web.xyz": 29.8,
|
|
||||||
"ari-web.xyz": 21.4
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"2023-10-29": {
|
|
||||||
"total": 141,
|
|
||||||
"top": {
|
|
||||||
"blog.ari-web.xyz": 117.8,
|
|
||||||
"ari-web.xyz": 11.5,
|
|
||||||
"files.ari-web.xyz": 6.6
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"2024-01-10": {
|
|
||||||
"total": 687,
|
|
||||||
"top": {
|
|
||||||
"ari.lt": 456.5,
|
|
||||||
"blog.ari.lt": 192.8,
|
|
||||||
"legacy.blog.ari.lt": 12.2
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"2024-01-16": {
|
|
||||||
"total": 941,
|
|
||||||
"top": {
|
|
||||||
"ari.lt": 648.4,
|
|
||||||
"blog.ari.lt": 246.4,
|
|
||||||
"legacy.blog.ari.lt": 14.6
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"2024-01-29": {
|
|
||||||
"total": 464,
|
|
||||||
"top": {
|
|
||||||
"ari.lt": 355.1,
|
|
||||||
"blog.ari.lt": 69.5,
|
|
||||||
"files.ari.lt": 27.9
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"2024-02-06": {
|
|
||||||
"total": 1024,
|
|
||||||
"top": {
|
|
||||||
"ari.lt": 595.1,
|
|
||||||
"files.ari.lt": 374.8,
|
|
||||||
"blog.ari.lt": 124.2
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"2024-02-14": {
|
|
||||||
"total": 2048,
|
|
||||||
"top": {
|
|
||||||
"ari.lt": 869.9,
|
|
||||||
"files.ari.lt": 563.5,
|
|
||||||
"blog.ari.lt": 182
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"2024-02-16": {
|
|
||||||
"total": 2144,
|
|
||||||
"top": {
|
|
||||||
"ari.lt": 919.1,
|
|
||||||
"files.ari.lt": 606.2,
|
|
||||||
"blog.ari.lt": 196.7
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"2024-02-29": {
|
|
||||||
"total": 2512,
|
|
||||||
"top": {
|
|
||||||
"files.ari.lt": 1003.3,
|
|
||||||
"ari.lt": 514.9,
|
|
||||||
"blog.ari.lt": 128.3
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"2024-03-17": {
|
|
||||||
"total": 3172,
|
|
||||||
"top": {
|
|
||||||
"files.ari.lt": 1228.0,
|
|
||||||
"ari.lt": 1126.4,
|
|
||||||
"blog.ari.lt": 244.4
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"2024-03-29": {
|
|
||||||
"total": 820,
|
|
||||||
"top": {
|
|
||||||
"ari.lt": 500.7,
|
|
||||||
"files.ari.lt": 194.0,
|
|
||||||
"blog.ari.lt": 196.3
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"2024-04-05": {
|
|
||||||
"total": 1512,
|
|
||||||
"top": {
|
|
||||||
"ari.lt": 775.5,
|
|
||||||
"files.ari.lt": 259.6,
|
|
||||||
"blog.ari.lt": 170.9
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"2024-05-16": {
|
|
||||||
"total": 2148,
|
|
||||||
"top": {
|
|
||||||
"ari.lt": 1331.2,
|
|
||||||
"blog.ari.lt": 349.3,
|
|
||||||
"files.ari.lt": 228.6
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
BIN
badge-yellow.png
Before Width: | Height: | Size: 883 B |
BIN
badge.png
Before Width: | Height: | Size: 2.7 KiB |
|
@ -1,118 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
import TEST_OPTIONS from "./options.js";
|
|
||||||
|
|
||||||
function calculate_rarity() {
|
|
||||||
let test_div = document.getElementById("unique-test");
|
|
||||||
|
|
||||||
let score = [];
|
|
||||||
let exit = false;
|
|
||||||
|
|
||||||
Array.from(test_div.children).forEach((child) => {
|
|
||||||
if (exit) return;
|
|
||||||
|
|
||||||
let question_num = child.getAttribute("data-question");
|
|
||||||
let question_answer = null;
|
|
||||||
|
|
||||||
Array.from(child.children[1].children).forEach((answer) => {
|
|
||||||
if (
|
|
||||||
answer instanceof HTMLLabelElement ||
|
|
||||||
exit ||
|
|
||||||
question_answer !== null
|
|
||||||
)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (answer.checked) {
|
|
||||||
question_answer = parseFloat(
|
|
||||||
answer.getAttribute("data-rarity")
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if (question_answer === null) {
|
|
||||||
alert(`Unasnwered question: ${question_num}`);
|
|
||||||
exit = true;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
score.push(question_answer);
|
|
||||||
});
|
|
||||||
|
|
||||||
return score;
|
|
||||||
}
|
|
||||||
|
|
||||||
function display_score() {
|
|
||||||
let score = calculate_rarity();
|
|
||||||
let score_percent =
|
|
||||||
(score.reduce((partial, answer) => partial + answer, 0) /
|
|
||||||
score.length) *
|
|
||||||
100;
|
|
||||||
|
|
||||||
if (score.length === TEST_OPTIONS.length) {
|
|
||||||
let existing_answer_div = document.getElementById("score");
|
|
||||||
let answer_div = existing_answer_div
|
|
||||||
? existing_answer_div
|
|
||||||
: document.createElement("div");
|
|
||||||
|
|
||||||
answer_div.setAttribute("id", "score");
|
|
||||||
answer_div.onclick = () => {
|
|
||||||
answer_div.remove();
|
|
||||||
document.body.style.overflow = "initial";
|
|
||||||
};
|
|
||||||
|
|
||||||
let answer_h1 = document.createElement("h1");
|
|
||||||
answer_h1.innerText = `Your uniqueness% is: ${score_percent}%`;
|
|
||||||
|
|
||||||
answer_div.appendChild(answer_h1);
|
|
||||||
document.body.appendChild(answer_div);
|
|
||||||
|
|
||||||
document.body.style.overflow = "hidden";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function main() {
|
|
||||||
let test_div = document.getElementById("unique-test");
|
|
||||||
document.getElementById("unique-test-submit").onclick = () =>
|
|
||||||
display_score();
|
|
||||||
|
|
||||||
TEST_OPTIONS.forEach((qitem, qindex) => {
|
|
||||||
let question_div = document.createElement("div");
|
|
||||||
let question_title = document.createElement("h2");
|
|
||||||
let question_options = document.createElement("div");
|
|
||||||
|
|
||||||
question_div.setAttribute("data-question", qindex);
|
|
||||||
|
|
||||||
question_title.innerText = `#${qindex}: ${qitem["title"]}`;
|
|
||||||
|
|
||||||
qitem["options"].forEach((option, oindex) => {
|
|
||||||
let option_radio = document.createElement("input");
|
|
||||||
let option_label = document.createElement("label");
|
|
||||||
let radio_id = `${qindex}-${oindex}`;
|
|
||||||
|
|
||||||
let radio_options = {
|
|
||||||
type: "radio",
|
|
||||||
name: qindex,
|
|
||||||
id: radio_id,
|
|
||||||
"data-rarity": option["rarity"],
|
|
||||||
};
|
|
||||||
|
|
||||||
Object.keys(radio_options).forEach((attr) =>
|
|
||||||
option_radio.setAttribute(attr, radio_options[attr])
|
|
||||||
);
|
|
||||||
|
|
||||||
option_label.setAttribute("for", radio_id);
|
|
||||||
option_label.innerText = option["title"];
|
|
||||||
|
|
||||||
question_options.appendChild(option_radio);
|
|
||||||
question_options.appendChild(option_label);
|
|
||||||
});
|
|
||||||
|
|
||||||
question_div.appendChild(question_title);
|
|
||||||
question_div.appendChild(question_options);
|
|
||||||
|
|
||||||
test_div.appendChild(question_div);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", main);
|
|
|
@ -1,204 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
function make_range(from, to) {
|
|
||||||
return (from + to) / 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
function make_percent(percent) {
|
|
||||||
return (100 - percent) * 0.01;
|
|
||||||
}
|
|
||||||
|
|
||||||
function yes_no(percent) {
|
|
||||||
return [
|
|
||||||
{ title: "Yes", rarity: percent },
|
|
||||||
{ title: "No", rarity: 1 - percent },
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Rarity is between 0 and 1, to make it
|
|
||||||
* more human readable use make_percent() function
|
|
||||||
* for example make_percent(10) would return 0.9
|
|
||||||
* as if a thing affects 10% of the population
|
|
||||||
* 90% would be untouched by average
|
|
||||||
*
|
|
||||||
* If an option is in a range, for example from
|
|
||||||
* 55% to 79% use the make_range() function, for example:
|
|
||||||
* make_percent(make_range(55, 79)) would be 0.67 (67%)
|
|
||||||
* The percent should be how common a thing is, not
|
|
||||||
* how rare
|
|
||||||
*
|
|
||||||
* For a yes/no question use yes_no() function passing
|
|
||||||
* it in a percent value
|
|
||||||
*/
|
|
||||||
const TEST_OPTIONS = [
|
|
||||||
{
|
|
||||||
title: "What is your eye colour?",
|
|
||||||
options: [
|
|
||||||
{ title: "Blue", rarity: make_percent(1) },
|
|
||||||
{ title: "Brown", rarity: make_percent(make_range(55, 79)) },
|
|
||||||
{ title: "Grey", rarity: make_percent(1) },
|
|
||||||
{ title: "Green", rarity: make_percent(2) },
|
|
||||||
{ title: "Hazel", rarity: make_percent(10) },
|
|
||||||
{ title: "Red/violet", rarity: make_percent(1) },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "What is your natural hair colour?",
|
|
||||||
options: [
|
|
||||||
{ title: "Black", rarity: make_percent(make_range(75, 85)) },
|
|
||||||
{ title: "Brown", rarity: make_percent(11) },
|
|
||||||
{ title: "Blond", rarity: make_percent(3) },
|
|
||||||
{ title: "White", rarity: make_percent(1) },
|
|
||||||
{ title: "Red", rarity: make_percent(1) },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Are you a part of the LGBT community?",
|
|
||||||
options: yes_no(make_percent(make_range(1.2, 6.8))),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "What is your race?",
|
|
||||||
options: [
|
|
||||||
{ title: "White", rarity: make_percent(100 - 61.6) },
|
|
||||||
{ title: "Black", rarity: make_percent(16.72) },
|
|
||||||
{ title: "Hispanic", rarity: make_percent(8.42) },
|
|
||||||
{ title: "Asian", rarity: make_percent(59.76) },
|
|
||||||
{ title: "Other", rarity: make_percent(10.2) },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Do you have an ASD?",
|
|
||||||
options: yes_no(make_percent(1)),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "What continent do you live in?",
|
|
||||||
options: [
|
|
||||||
{ title: "Asia", rarity: make_percent(59.54) },
|
|
||||||
{ title: "Africa", rarity: make_percent(17.2) },
|
|
||||||
{ title: "Europe", rarity: make_percent(9.59) },
|
|
||||||
{ title: "North America", rarity: make_percent(7.6) },
|
|
||||||
{ title: "South America", rarity: make_percent(5.53) },
|
|
||||||
{ title: "Australia", rarity: make_percent(0.55) },
|
|
||||||
{ title: "Antarctica", rarity: make_percent(0) }, // ???
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Do you have children?",
|
|
||||||
options: yes_no(make_percent(80)),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Do you know more than one language?",
|
|
||||||
options: yes_no(make_percent(40)),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Are you vegetarian?",
|
|
||||||
options: yes_no(make_percent(22)),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Are you vegan?",
|
|
||||||
options: yes_no(make_percent(1)),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Do you have depression?",
|
|
||||||
options: yes_no(make_percent(make_percent(3.8))),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Do you have a job?",
|
|
||||||
options: yes_no(make_percent(make_percent(55.8))),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Do you have an eating disorder?",
|
|
||||||
options: yes_no(make_percent(make_percent(9))),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Are you left-handed?",
|
|
||||||
options: yes_no(make_percent(make_percent(10))),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Do you have diabetes?",
|
|
||||||
options: yes_no(make_percent(make_percent(10))),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Do you have social anxiety?",
|
|
||||||
options: yes_no(make_percent(make_percent(7.1))),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Do you have asthma?",
|
|
||||||
options: yes_no(make_percent(make_percent(make_range(5, 10)))),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Are you lactose intolerant?",
|
|
||||||
options: yes_no(make_percent(make_percent(68))),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Are you fatherless?",
|
|
||||||
options: yes_no(make_percent(33)),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Are you a virgin?",
|
|
||||||
options: yes_no(make_percent(make_range(0.3, 14))),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Do you use social media?",
|
|
||||||
options: yes_no(make_percent(58.4)),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Are you under 18?",
|
|
||||||
options: yes_no(make_percent(29.3)),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Do you have dimples?",
|
|
||||||
options: yes_no(make_percent(make_range(20, 30))),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Do you know how to code?",
|
|
||||||
options: yes_no(make_percent(0.5)),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Do you live in a city?",
|
|
||||||
options: yes_no(make_percent(55)),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Have you had COVID-19 in 2021",
|
|
||||||
options: yes_no(make_percent(43.9)),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Do you have heart problems?",
|
|
||||||
options: yes_no(make_percent(1.72)),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Do you have a chronic illness?",
|
|
||||||
options: yes_no(make_percent(95)),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Do you have mental issues and/or disorders?",
|
|
||||||
options: yes_no(make_percent(10.7)),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Do you have cancer?",
|
|
||||||
options: yes_no(make_percent(1.3)),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Do you have tatoos?",
|
|
||||||
options: yes_no(make_percent(38)),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Can you wiggle your ears?",
|
|
||||||
options: yes_no(make_percent(make_range(10, 20))),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Can you wiggle your nose?",
|
|
||||||
options: yes_no(make_percent(5)),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Do you have morton's toe?",
|
|
||||||
options: yes_no(make_percent(15)),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Do you have hypermobile joints?",
|
|
||||||
options: yes_no(make_percent(make_range(10, 25))),
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
export default TEST_OPTIONS;
|
|
|
@ -1,219 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
// Confetti.js source: https://www.cssscript.com/confetti-falling-animation/
|
|
||||||
|
|
||||||
let max_partics = 150; // set max confetti count
|
|
||||||
let partic_spd = 2; // set the particle animation speed
|
|
||||||
|
|
||||||
let confetti; // call to start confetti animation
|
|
||||||
let stop_confetti; // call to stop adding confetti
|
|
||||||
let rm_confetti; // call to stop the confetti animation and remove all confetti immediately
|
|
||||||
|
|
||||||
(function () {
|
|
||||||
confetti = start_confetti_inner;
|
|
||||||
stop_confetti = stop_confetti_inner;
|
|
||||||
rm_confetti = remove_confetti_inner;
|
|
||||||
|
|
||||||
let ctx, canvas;
|
|
||||||
let clrs = [
|
|
||||||
"DodgerBlue",
|
|
||||||
"OliveDrab",
|
|
||||||
"Gold",
|
|
||||||
"Pink",
|
|
||||||
"SlateBlue",
|
|
||||||
"LightBlue",
|
|
||||||
"Violet",
|
|
||||||
"PaleGreen",
|
|
||||||
"SteelBlue",
|
|
||||||
"SandyBrown",
|
|
||||||
"Chocolate",
|
|
||||||
"Crimson",
|
|
||||||
];
|
|
||||||
let confetti_on = false;
|
|
||||||
let anim_t = null;
|
|
||||||
let particles = [];
|
|
||||||
let wav_angle = 0;
|
|
||||||
|
|
||||||
function reset_particle(part, width, height) {
|
|
||||||
part.color = clrs[(Math.random() * clrs.length) | 0];
|
|
||||||
part.x = Math.random() * width;
|
|
||||||
part.y = Math.random() * height - height;
|
|
||||||
part.diameter = Math.random() * 10 + 5;
|
|
||||||
part.tilt = Math.random() * 10 - 10;
|
|
||||||
part.tiltAngleIncrement = Math.random() * 0.07 + 0.05;
|
|
||||||
part.tiltAngle = 0;
|
|
||||||
|
|
||||||
return part;
|
|
||||||
}
|
|
||||||
|
|
||||||
function stop_confetti_inner() {
|
|
||||||
confetti_on = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
function remove_confetti_inner() {
|
|
||||||
stop_confetti();
|
|
||||||
setTimeout(() => canvas.remove(), 500);
|
|
||||||
particles = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
function start_confetti_inner(text, textclr) {
|
|
||||||
let width = window.innerWidth;
|
|
||||||
let height = window.innerHeight;
|
|
||||||
|
|
||||||
window.req_animf = (function () {
|
|
||||||
return (
|
|
||||||
window.requestAnimationFrame ||
|
|
||||||
window.webkitRequestAnimationFrame ||
|
|
||||||
window.mozRequestAnimationFrame ||
|
|
||||||
window.oRequestAnimationFrame ||
|
|
||||||
window.msRequestAnimationFrame ||
|
|
||||||
function (callback) {
|
|
||||||
return window.setTimeout(callback, 16.6666667);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
})();
|
|
||||||
|
|
||||||
canvas = document.getElementById("c");
|
|
||||||
|
|
||||||
if (canvas === null) {
|
|
||||||
canvas = document.createElement("canvas");
|
|
||||||
canvas.setAttribute("id", "c");
|
|
||||||
canvas.setAttribute(
|
|
||||||
"style",
|
|
||||||
"display:block;z-index:999999;pointer-events:none;overflow-y:hidden;min-width:100%;min-height:100%;position:fixed;top:0;left:0;"
|
|
||||||
);
|
|
||||||
|
|
||||||
document.body.appendChild(canvas);
|
|
||||||
|
|
||||||
canvas.width = width;
|
|
||||||
canvas.height = height;
|
|
||||||
|
|
||||||
window.addEventListener(
|
|
||||||
"resize",
|
|
||||||
() => {
|
|
||||||
canvas.width = window.innerWidth;
|
|
||||||
canvas.height = window.innerHeight;
|
|
||||||
},
|
|
||||||
true
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
ctx = canvas.getContext("2d");
|
|
||||||
|
|
||||||
while (particles.length < max_partics)
|
|
||||||
particles.push(reset_particle({}, width, height));
|
|
||||||
|
|
||||||
confetti_on = true;
|
|
||||||
|
|
||||||
if (anim_t === null) {
|
|
||||||
(function anim() {
|
|
||||||
ctx.clearRect(0, 0, window.innerWidth, window.innerHeight);
|
|
||||||
|
|
||||||
if (particles.length === 0) {
|
|
||||||
anim_t = null;
|
|
||||||
ctx.clearRect(0, 0, window.innerWidth, window.innerHeight);
|
|
||||||
} else {
|
|
||||||
try {
|
|
||||||
upd_partics();
|
|
||||||
drw_partics();
|
|
||||||
|
|
||||||
anim_t = req_animf(anim);
|
|
||||||
|
|
||||||
ctx.textAlign = "center";
|
|
||||||
ctx.fillStyle = textclr;
|
|
||||||
ctx.font = "2em sans-serif";
|
|
||||||
|
|
||||||
ctx.fillText(text, canvas.width / 2, canvas.height / 2);
|
|
||||||
} catch (e) {
|
|
||||||
console.error(e);
|
|
||||||
|
|
||||||
alert(`\u{0001f389} ${text} \u{0001f389}`);
|
|
||||||
particles = [];
|
|
||||||
|
|
||||||
return stop_confetti();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function drw_partics() {
|
|
||||||
let part, x;
|
|
||||||
|
|
||||||
for (let i = 0; i < particles.length; i++) {
|
|
||||||
part = particles[i];
|
|
||||||
ctx.beginPath();
|
|
||||||
ctx.lineWidth = part.diameter;
|
|
||||||
ctx.strokeStyle = part.color;
|
|
||||||
|
|
||||||
x = part.x + part.tilt;
|
|
||||||
|
|
||||||
ctx.moveTo(x + part.diameter / 2, part.y);
|
|
||||||
ctx.lineTo(x, part.y + part.tilt + part.diameter / 2);
|
|
||||||
ctx.stroke();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function upd_partics() {
|
|
||||||
let width = window.innerWidth;
|
|
||||||
let height = window.innerHeight;
|
|
||||||
let part;
|
|
||||||
|
|
||||||
wav_angle += 0.01;
|
|
||||||
|
|
||||||
for (let i = 0; i < particles.length; i++) {
|
|
||||||
part = particles[i];
|
|
||||||
|
|
||||||
if (!confetti_on && part.y < -15) part.y = height + 100;
|
|
||||||
else {
|
|
||||||
part.tiltAngle += part.tiltAngleIncrement;
|
|
||||||
part.x += Math.sin(wav_angle);
|
|
||||||
part.y +=
|
|
||||||
(Math.cos(wav_angle) + part.diameter + partic_spd) * 0.5;
|
|
||||||
part.tilt = Math.sin(part.tiltAngle) * 15;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (part.x > width + 20 || part.x < -20 || part.y > height) {
|
|
||||||
if (confetti_on && particles.length <= max_partics)
|
|
||||||
reset_particle(part, width, height);
|
|
||||||
else {
|
|
||||||
particles.splice(i, 1);
|
|
||||||
i--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})();
|
|
||||||
|
|
||||||
function human_num(n) {
|
|
||||||
let tmp_numr = NUMERICS[n - 1];
|
|
||||||
return `${n}${tmp_numr ? tmp_numr : NUMERICS[NUMERICS.length - 1]}`;
|
|
||||||
}
|
|
||||||
|
|
||||||
function main() {
|
|
||||||
let ctime = new Date();
|
|
||||||
|
|
||||||
if (
|
|
||||||
BIRTHDAY.getDate() == ctime.getDate() &&
|
|
||||||
BIRTHDAY.getMonth() == ctime.getMonth() &&
|
|
||||||
BIRTHDAY.getFullYear() != ctime.getFullYear() &&
|
|
||||||
(!("bday" in window.localStorage) ||
|
|
||||||
window.localStorage["bday"] != ctime.getFullYear())
|
|
||||||
) {
|
|
||||||
let bday = ctime.getFullYear() - BIRTHDAY.getFullYear();
|
|
||||||
|
|
||||||
confetti(
|
|
||||||
`happy ${human_num(bday)} birthday, ${SITE_NAME} !`,
|
|
||||||
"#f0f7ff"
|
|
||||||
);
|
|
||||||
|
|
||||||
setTimeout(() => {
|
|
||||||
stop_confetti();
|
|
||||||
rm_confetti();
|
|
||||||
}, 5000);
|
|
||||||
|
|
||||||
window.localStorage.setItem("bday", ctime.getFullYear());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", main);
|
|
|
@ -1,192 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
const FORM_CHECKERS = {
|
|
||||||
android: (e, edata) => {
|
|
||||||
let data = Object.fromEntries(new FormData(e.target).entries());
|
|
||||||
|
|
||||||
function no_has_gh(str) {
|
|
||||||
return str.indexOf(data["gh-username"]) === -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!/^[0-9a-zA-Z]+$/.test(data["gh-username"]))
|
|
||||||
alert("Invalid github username");
|
|
||||||
else if (
|
|
||||||
edata["disallowed-android-versions"].includes(
|
|
||||||
data["and-version"].toLowerCase()
|
|
||||||
)
|
|
||||||
)
|
|
||||||
alert("Disallowed android version");
|
|
||||||
else if (data["ctree-url"])
|
|
||||||
if (no_has_gh(data["ctree-url"]))
|
|
||||||
alert(
|
|
||||||
"You have not provided any (valid) url from common trees"
|
|
||||||
);
|
|
||||||
else if (no_has_gh(data["dev-url"])) alert("No valid device url");
|
|
||||||
else if (data["err-url"].indexOf("pastebin.com") !== -1)
|
|
||||||
alert("Pastebin is not allowed");
|
|
||||||
else if (no_has_gh(data["kern-url"]))
|
|
||||||
alert("No valid kernel tree given");
|
|
||||||
else if (data["rom-url"].indexOf("github") === -1)
|
|
||||||
alert("No github url provided for the rom");
|
|
||||||
else if (no_has_gh(data["ven-url"]))
|
|
||||||
alert("No valid vendor url specified");
|
|
||||||
else return true;
|
|
||||||
|
|
||||||
return false;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function append_children(parent, ...children) {
|
|
||||||
for (let child of children) parent.appendChild(child);
|
|
||||||
}
|
|
||||||
|
|
||||||
function submit_btn() {
|
|
||||||
let submit = document.createElement("button");
|
|
||||||
submit.innerText = "Submit";
|
|
||||||
submit.id = "submit-button";
|
|
||||||
|
|
||||||
return submit;
|
|
||||||
}
|
|
||||||
|
|
||||||
function to_clipboard(text) {
|
|
||||||
if (window.clipboardData && window.clipboardData.setData) {
|
|
||||||
return window.clipboardData.setData("Text", text);
|
|
||||||
} else if (
|
|
||||||
document.queryCommandSupported &&
|
|
||||||
document.queryCommandSupported("copy")
|
|
||||||
) {
|
|
||||||
var textarea = document.createElement("textarea");
|
|
||||||
textarea.textContent = text;
|
|
||||||
textarea.style.position = "fixed";
|
|
||||||
document.body.appendChild(textarea);
|
|
||||||
textarea.select();
|
|
||||||
|
|
||||||
try {
|
|
||||||
return document.execCommand("copy");
|
|
||||||
} catch (ex) {
|
|
||||||
console.warn("Copy to clipboard failed.", ex);
|
|
||||||
return prompt("Copy to clipboard: Ctrl+C, Enter", text);
|
|
||||||
} finally {
|
|
||||||
document.body.removeChild(textarea);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function render_type(type, data) {
|
|
||||||
if (type.startsWith("%") || !(type in data)) {
|
|
||||||
document.body.innerHTML = "<h1>Not a valid type, not rendering</h1>";
|
|
||||||
setTimeout(() => (document.location = "."), 1000);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
document.body.innerHTML =
|
|
||||||
"<h1>Rendering form... (if this takes too long please see the dev console)</h1>";
|
|
||||||
|
|
||||||
let form = document.createElement("form");
|
|
||||||
form.id = "form";
|
|
||||||
|
|
||||||
for (let [key, value] of Object.entries(data[type])) {
|
|
||||||
let label = document.createElement("label");
|
|
||||||
label.innerText = key;
|
|
||||||
label.setAttribute("for", value.id);
|
|
||||||
|
|
||||||
let input = document.createElement(
|
|
||||||
value.textbox ? "textarea" : "input"
|
|
||||||
);
|
|
||||||
input.id = input.name = value.id;
|
|
||||||
input.placeholder = input.title = value.placeholder;
|
|
||||||
input.required = !value.optional;
|
|
||||||
|
|
||||||
append_children(form, input, label, document.createElement("br"));
|
|
||||||
}
|
|
||||||
|
|
||||||
form.appendChild(submit_btn());
|
|
||||||
document.body.innerHTML = "";
|
|
||||||
|
|
||||||
let title = document.createElement("h1");
|
|
||||||
title.innerText = `Error report form: ${type}`;
|
|
||||||
|
|
||||||
document.body.innerHTML = `${title.outerHTML}${form.outerHTML}`;
|
|
||||||
|
|
||||||
document.getElementById("form").addEventListener("submit", (e) => {
|
|
||||||
e.preventDefault();
|
|
||||||
let is_good = true;
|
|
||||||
|
|
||||||
if (type in FORM_CHECKERS)
|
|
||||||
is_good = FORM_CHECKERS[type](e, data[`%${type}`]);
|
|
||||||
|
|
||||||
if (is_good) {
|
|
||||||
let text = `Error submission form: ${type}
|
|
||||||
From: ${document.location}
|
|
||||||
|
|
||||||
`;
|
|
||||||
for (let [key, value] of new FormData(e.target).entries()) {
|
|
||||||
if (!value) continue;
|
|
||||||
|
|
||||||
text += `${
|
|
||||||
document.querySelector(`label[for="${key}"]`).innerText
|
|
||||||
}: ${value}\n`;
|
|
||||||
}
|
|
||||||
|
|
||||||
document.body.innerText = text;
|
|
||||||
document.body.onclick = () => {
|
|
||||||
to_clipboard(document.body.innerText);
|
|
||||||
alert("Copied to clipboard");
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function render_full(data) {
|
|
||||||
document.body.innerHTML = "<h1>Pick a type (no `t` GET param found)</h1>";
|
|
||||||
|
|
||||||
let label = document.createElement("label");
|
|
||||||
label.setAttribute("for", "types");
|
|
||||||
label.innerText = "Pick the error report type:";
|
|
||||||
|
|
||||||
let select = document.createElement("select");
|
|
||||||
select.name = "types";
|
|
||||||
select.id = "types";
|
|
||||||
|
|
||||||
let submit = submit_btn();
|
|
||||||
|
|
||||||
submit.onclick = () => {
|
|
||||||
let val = select.value;
|
|
||||||
if (!val) alert("Not a valid type :(");
|
|
||||||
|
|
||||||
render_type(val, data);
|
|
||||||
};
|
|
||||||
|
|
||||||
for (let key in data) {
|
|
||||||
if (key.startsWith("%")) continue;
|
|
||||||
|
|
||||||
let option = document.createElement("option");
|
|
||||||
option.value = key;
|
|
||||||
option.innerText = key;
|
|
||||||
|
|
||||||
select.appendChild(option);
|
|
||||||
}
|
|
||||||
|
|
||||||
append_children(document.body, label, select, submit);
|
|
||||||
}
|
|
||||||
|
|
||||||
function main() {
|
|
||||||
let type = new URL(document.location).searchParams.get("t");
|
|
||||||
|
|
||||||
fetch("/api/errtemplate.json")
|
|
||||||
.then((response) => {
|
|
||||||
return response.json();
|
|
||||||
})
|
|
||||||
.then((data) => {
|
|
||||||
if (type) render_type(type, data);
|
|
||||||
else render_full(data);
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
alert(`Error, please report it to ${document.domain}/git: ${err}`);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", main);
|
|
|
@ -1,46 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
const BLOG_SITE = "https://blog.ari.lt/";
|
|
||||||
const COMMENT_SITE = "https://user.ari.lt/";
|
|
||||||
|
|
||||||
const FETCH_BLOG_POSTS = () =>
|
|
||||||
fetch("https://blog.ari.lt/recents.json").then((r) => r.json());
|
|
||||||
|
|
||||||
const FETCH_COMMENTS = () => {
|
|
||||||
return fetch("https://server.ari.lt/total")
|
|
||||||
.then((r) => r.text())
|
|
||||||
.then((t) => {
|
|
||||||
let total = parseInt(t);
|
|
||||||
|
|
||||||
let fetch_from = total - 14;
|
|
||||||
if (fetch_from < 0) fetch_from = total;
|
|
||||||
|
|
||||||
return fetch(
|
|
||||||
`https://server.ari.lt/${fetch_from}/${total}`
|
|
||||||
).then((r) => r.json());
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
const FETCH_PAGES = () => fetch("/api/pages.json").then((r) => r.json());
|
|
||||||
|
|
||||||
// let dt = new Date();
|
|
||||||
// const BIRTHDAY = new Date(dt.getFullYear() - 2, dt.getMonth(), dt.getDate(), 0, 0, 0, 0);
|
|
||||||
const BIRTHDAY = new Date(2020, 9, 17, 0, 0, 0, 0); // ari-web start : 2020/10/17
|
|
||||||
const NUMERICS = ["st", "nd", "rd", "th"];
|
|
||||||
const SITE_NAME = "ari-web";
|
|
||||||
|
|
||||||
const EXTRA_PAGES = [
|
|
||||||
"/mr",
|
|
||||||
"/etc",
|
|
||||||
"/page/blog",
|
|
||||||
"/data",
|
|
||||||
"/gh",
|
|
||||||
"/overlay",
|
|
||||||
"/dotfiles",
|
|
||||||
"/tdotfiles",
|
|
||||||
"/git",
|
|
||||||
"/user",
|
|
||||||
"/btc",
|
|
||||||
];
|
|
||||||
|
|
||||||
const DO_FETCH = true;
|
|
|
@ -1,52 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
function main() {
|
|
||||||
document.getElementById("export-button").addEventListener("click", () => {
|
|
||||||
if (!window.localStorage.length) {
|
|
||||||
alert("No data to export");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
document.getElementById("export").value = btoa(
|
|
||||||
JSON.stringify(window.localStorage)
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
document.getElementById("import-button").addEventListener("click", () => {
|
|
||||||
let import_data = document.getElementById("import").value;
|
|
||||||
|
|
||||||
if (!import_data) {
|
|
||||||
alert("No import data provided");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
let data = JSON.parse(atob(import_data));
|
|
||||||
|
|
||||||
if (!Object.keys(data).length) {
|
|
||||||
alert("Cannot import no data");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!confirm("Are you sure you want to import this data?")) return;
|
|
||||||
|
|
||||||
if (
|
|
||||||
confirm(
|
|
||||||
"Do you want to overwrite your data fully (OK) or overwrite the parts that are in the data (CANCEL)"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
window.localStorage.clear();
|
|
||||||
|
|
||||||
Object.keys(data).forEach((k) => localStorage.setItem(k, data[k]));
|
|
||||||
|
|
||||||
alert("Data imported");
|
|
||||||
} catch (e) {
|
|
||||||
alert(`Invalid data provided: ${e}`);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
window.location.href = "/";
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", main);
|
|
|
@ -1,99 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
/* TODO comments ( us.ari.lt ) */
|
|
||||||
|
|
||||||
function resize_term() {
|
|
||||||
document.getElementById("term-wrap").style.width = `${
|
|
||||||
document.querySelector("article").offsetWidth
|
|
||||||
}px`;
|
|
||||||
}
|
|
||||||
|
|
||||||
async function main() {
|
|
||||||
window.addEventListener("resize", resize_term);
|
|
||||||
resize_term();
|
|
||||||
|
|
||||||
let blog = document.getElementById("blog-posts");
|
|
||||||
// let comment = document.getElementById("latest-comments");
|
|
||||||
let more = document.getElementById("discover");
|
|
||||||
|
|
||||||
let site = document.getElementById("site");
|
|
||||||
site.innerText = SITE_NAME;
|
|
||||||
|
|
||||||
site.onclick = () => {
|
|
||||||
if (window.term === undefined) window.term = 0;
|
|
||||||
|
|
||||||
if (window.getSelection) {
|
|
||||||
if (window.getSelection().empty) window.getSelection().empty();
|
|
||||||
else if (window.getSelection().removeAllRanges)
|
|
||||||
window.getSelection().removeAllRanges();
|
|
||||||
} else if (document.selection) document.selection.empty();
|
|
||||||
|
|
||||||
site.innerText += ` ${++window.term} :O`;
|
|
||||||
setTimeout(() => (site.innerText = SITE_NAME), 100);
|
|
||||||
|
|
||||||
loadterm();
|
|
||||||
};
|
|
||||||
|
|
||||||
document.getElementById("blog-link").href = BLOG_SITE;
|
|
||||||
document.getElementById("comments-link").href = COMMENT_SITE;
|
|
||||||
|
|
||||||
if (!DO_FETCH) return;
|
|
||||||
|
|
||||||
FETCH_BLOG_POSTS().then((j) => {
|
|
||||||
blog.innerText = "";
|
|
||||||
|
|
||||||
Object.entries(j).forEach((post) => {
|
|
||||||
let id = post[0];
|
|
||||||
post = post[1];
|
|
||||||
|
|
||||||
mkelem(
|
|
||||||
"li",
|
|
||||||
[
|
|
||||||
mkelem(
|
|
||||||
"a",
|
|
||||||
[
|
|
||||||
post["title"],
|
|
||||||
" -- ",
|
|
||||||
new Date(post["created"] * 1000).toUTCString(),
|
|
||||||
],
|
|
||||||
null,
|
|
||||||
{ href: `${BLOG_SITE}/b/${id}` },
|
|
||||||
),
|
|
||||||
mkelem("pre", linkify(post["content"]).concat([" ..."])),
|
|
||||||
],
|
|
||||||
blog,
|
|
||||||
);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// FETCH_COMMENTS().then((j) => {
|
|
||||||
// comment.innerText = "";
|
|
||||||
|
|
||||||
// Object.entries(j)
|
|
||||||
// .reverse()
|
|
||||||
// .forEach((post) => {
|
|
||||||
// let id = post[0];
|
|
||||||
// post = post[1];
|
|
||||||
|
|
||||||
// mkelem(
|
|
||||||
// "li",
|
|
||||||
// [
|
|
||||||
// mkelem("a", `#${id} by ${post[0]}`, null, {
|
|
||||||
// href: `${COMMENT_SITE}/#${id}`,
|
|
||||||
// }),
|
|
||||||
// mkelem("pre", linkify(post[1], COMMENT_SITE)),
|
|
||||||
// ],
|
|
||||||
// comment,
|
|
||||||
// );
|
|
||||||
// });
|
|
||||||
// });
|
|
||||||
|
|
||||||
FETCH_PAGES().then((j) => {
|
|
||||||
more.innerText = "";
|
|
||||||
|
|
||||||
for (let page of j.concat(EXTRA_PAGES))
|
|
||||||
mkelem("li", mkelem("a", page, null, { href: page }), more);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", main);
|
|
|
@ -1,16 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var scroll_element = 0;
|
|
||||||
const scroll_elements = document.getElementsByClassName("content");
|
|
||||||
|
|
||||||
function scrollDown() {
|
|
||||||
++scroll_element;
|
|
||||||
let elem = scroll_elements[scroll_element];
|
|
||||||
elem.scrollIntoView({ behavior: "smooth" });
|
|
||||||
if (elem) elem.scrollIntoView(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
function scrollUp() {
|
|
||||||
document.body.scrollTop = document.documentElement.scrollTop = 0;
|
|
||||||
scroll_element = 0;
|
|
||||||
}
|
|
|
@ -1,55 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var c = document.getElementById("matrix");
|
|
||||||
var ctx = c.getContext("2d");
|
|
||||||
|
|
||||||
//chinese characters - taken from the unicode charset
|
|
||||||
var chinese =
|
|
||||||
"田由甲申甴电甶男甸甹町画甼甽甾甿畀畁畂畃畄畅畆畇畈畉畊畋界畍畎畏畐畑 1234567890x_+=*&{}[]()%$";
|
|
||||||
//converting the string into an array of single characters
|
|
||||||
chinese = chinese.split("");
|
|
||||||
|
|
||||||
var font_size = 10;
|
|
||||||
var columns = c.width; //number of columns for the rain
|
|
||||||
//an array of drops - one per column
|
|
||||||
var drops = [];
|
|
||||||
//x below is the x coordinate
|
|
||||||
//1 = y co-ordinate of the drop(same for every drop initially)
|
|
||||||
for (var x = 0; x < columns; x++) drops[x] = 1;
|
|
||||||
|
|
||||||
function resize() {
|
|
||||||
c.height = window.innerHeight;
|
|
||||||
c.width = window.innerWidth;
|
|
||||||
}
|
|
||||||
|
|
||||||
resize();
|
|
||||||
|
|
||||||
//drawing the characters
|
|
||||||
function draw() {
|
|
||||||
//Black BG for the canvas
|
|
||||||
//translucent BG to show trail
|
|
||||||
ctx.fillStyle = "rgba(0, 0, 0, 0.08)";
|
|
||||||
ctx.fillRect(0, 0, c.width, c.height);
|
|
||||||
|
|
||||||
ctx.fillStyle = "#0F0"; //green text
|
|
||||||
ctx.font = font_size + "px arial";
|
|
||||||
|
|
||||||
//looping over drops
|
|
||||||
for (var i = 0; i < drops.length; i++) {
|
|
||||||
//a random chinese character to print
|
|
||||||
var text = chinese[Math.floor(Math.random() * chinese.length)];
|
|
||||||
// x = i*font_size, y = value of drops[i]*font_size
|
|
||||||
ctx.fillText(text, i * font_size, drops[i] * font_size);
|
|
||||||
|
|
||||||
//sending the drop back to the top randomly after it has crossed the screen
|
|
||||||
//adding a randomness to the reset to make the drops scattered on the Y axis
|
|
||||||
if (drops[i] * font_size > c.height && Math.random() > 0.975)
|
|
||||||
drops[i] = 0;
|
|
||||||
|
|
||||||
//incrementing Y coordinate
|
|
||||||
drops[i]++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
window.addEventListener("resize", resize);
|
|
||||||
setInterval(draw, 10);
|
|
|
@ -1,64 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
function cmd_help() {
|
|
||||||
let ul = document.createElement("ul");
|
|
||||||
|
|
||||||
Object.keys(window)
|
|
||||||
.filter((name) => name.startsWith("cmd_"))
|
|
||||||
.map((name) => name.slice(4))
|
|
||||||
.forEach((cmd) => mkelem("li", cmd, ul));
|
|
||||||
|
|
||||||
return [
|
|
||||||
"congratulations, you are now in the ari-web terminal\nheres some commands :\n\n",
|
|
||||||
ul,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
function cmd_exit(_, hist, term_wrap) {
|
|
||||||
term_wrap.style.display = "none";
|
|
||||||
hist.innerHTML = "";
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
|
|
||||||
function cmd_reboot() {
|
|
||||||
window.location.reload();
|
|
||||||
return ["rebooting ..."];
|
|
||||||
}
|
|
||||||
|
|
||||||
function cmd_clear(_, hist) {
|
|
||||||
hist.innerHTML = "";
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
|
|
||||||
function cmd_echo(args) {
|
|
||||||
return [args];
|
|
||||||
}
|
|
||||||
|
|
||||||
function cmd_webfetch() {
|
|
||||||
let head = `user@${SITE_NAME}`;
|
|
||||||
|
|
||||||
return [
|
|
||||||
`\`8.\`888b ,8' ${head}
|
|
||||||
\`8.\`888b ,8' ${"-".repeat(head.length)}
|
|
||||||
\`8.\`888b ,8' OS: WebOS
|
|
||||||
\`8.\`888b .b ,8' Kernel: Wkernel 1.0
|
|
||||||
\`8.\`888b 88b ,8' Shell: Wsh
|
|
||||||
\`8.\`888b .\`888b,8' Terminal: HTML
|
|
||||||
\`8.\`888b8.\`8888' CPU: ${SITE_NAME[0].toUpperCase()}${SITE_NAME.slice(
|
|
||||||
1
|
|
||||||
)} web cpu (1) @ 1GHz
|
|
||||||
\`8.\`888\`8.\`88' Memory: 2 B / 8B
|
|
||||||
\`8.\`8' \`8,\`' Init: WebRC
|
|
||||||
\`8.\` \`8' Packages: ${
|
|
||||||
document.scripts.length + document.styleSheets.length + 1
|
|
||||||
} (document)`,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
function cmd_rand() {
|
|
||||||
return ["" + Math.random() * 11e10];
|
|
||||||
}
|
|
||||||
|
|
||||||
function cmd_date() {
|
|
||||||
return new Date().toString();
|
|
||||||
}
|
|
|
@ -1,98 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
function loadterm() {
|
|
||||||
if (window.term >= 3) {
|
|
||||||
document.getElementById("term-wrap").style.display = "";
|
|
||||||
document.getElementById("term-input").focus();
|
|
||||||
window.term = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function sleep(ms) {
|
|
||||||
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
||||||
}
|
|
||||||
|
|
||||||
async function evaluate_command(command, output, hist, term_wrap) {
|
|
||||||
let cmd = await command.split(/ (.+)/);
|
|
||||||
if (cmd.lnegth >= 3) await cmd.pop();
|
|
||||||
|
|
||||||
let cmd_fn = window[`cmd_${cmd[0]}`];
|
|
||||||
|
|
||||||
if (!cmd_fn) {
|
|
||||||
output.innerText = `'${cmd[0]}' is not a valid command`;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let elem of await cmd_fn(
|
|
||||||
cmd.length > 1 ? cmd[1] : "",
|
|
||||||
hist,
|
|
||||||
term_wrap
|
|
||||||
)) {
|
|
||||||
switch (elem.constructor) {
|
|
||||||
case String:
|
|
||||||
for (let c of elem) {
|
|
||||||
let last = output.childNodes[output.childNodes.length - 1];
|
|
||||||
if (last instanceof Text) last.textContent += c;
|
|
||||||
else await output.appendChild(document.createTextNode(c));
|
|
||||||
await sleep(6);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
default: {
|
|
||||||
let load = document.createTextNode("...");
|
|
||||||
await output.appendChild(load);
|
|
||||||
await sleep(24);
|
|
||||||
load.remove();
|
|
||||||
await output.appendChild(elem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async function run_command(hist, input, input_wrap, term_wrap) {
|
|
||||||
let hist_wrap = document.createElement("div");
|
|
||||||
let hist_item = input_wrap.cloneNode(true);
|
|
||||||
|
|
||||||
hist_item.removeAttribute("id");
|
|
||||||
hist_item.children[0].removeAttribute("id");
|
|
||||||
hist_item.children[0].disabled = true;
|
|
||||||
|
|
||||||
let output = document.createElement("pre");
|
|
||||||
|
|
||||||
await hist_wrap.appendChild(hist_item);
|
|
||||||
hist_wrap.appendChild(output);
|
|
||||||
|
|
||||||
await hist.appendChild(hist_wrap);
|
|
||||||
|
|
||||||
new ResizeObserver((entries) => entries[0].target.scrollIntoView()).observe(
|
|
||||||
output
|
|
||||||
);
|
|
||||||
|
|
||||||
input.blur();
|
|
||||||
input_wrap.style.display = "none";
|
|
||||||
|
|
||||||
await evaluate_command(input.value, output, hist, term_wrap);
|
|
||||||
|
|
||||||
input.value = "";
|
|
||||||
input_wrap.style.display = "";
|
|
||||||
|
|
||||||
await input.focus();
|
|
||||||
await input.scrollIntoView();
|
|
||||||
}
|
|
||||||
|
|
||||||
function main() {
|
|
||||||
let term_wrap = document.getElementById("term-wrap");
|
|
||||||
let input = document.getElementById("term-input");
|
|
||||||
let hist = document.getElementById("term-hist");
|
|
||||||
let input_wrap = document.getElementById("input-wrap");
|
|
||||||
|
|
||||||
input.onkeypress = (e) => {
|
|
||||||
if (
|
|
||||||
(e.keyCode ? e.keyCode : e.which) === 13 &&
|
|
||||||
(input.value = input.value.trim())
|
|
||||||
)
|
|
||||||
run_command(hist, input, input_wrap, term_wrap);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", main);
|
|
|
@ -1,20 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
export var tty_clrs = {
|
|
||||||
black: { rgb: [0, 0, 0], mod: "0" },
|
|
||||||
red: { rgb: [170, 0, 0], mod: "1" },
|
|
||||||
green: { rgb: [0, 170, 0], mod: "2" },
|
|
||||||
brown: { rgb: [170, 85, 0], mod: "3" },
|
|
||||||
blue: { rgb: [0, 0, 170], mod: "4" },
|
|
||||||
magenta: { rgb: [170, 0, 170], mod: "5" },
|
|
||||||
cyan: { rgb: [0, 170, 170], mod: "6" },
|
|
||||||
light_gray: { rgb: [170, 170, 170], mod: "7" },
|
|
||||||
gray: { rgb: [85, 85, 85], mod: "8" },
|
|
||||||
bold_red: { rgb: [255, 85, 85], mod: "9" },
|
|
||||||
bold_green: { rgb: [85, 255, 85], mod: "A" },
|
|
||||||
bold_yellow: { rgb: [255, 255, 85], mod: "B" },
|
|
||||||
bold_blue: { rgb: [85, 85, 255], mod: "C" },
|
|
||||||
bold_magenta: { rgb: [255, 85, 255], mod: "D" },
|
|
||||||
bold_cyan: { rgb: [85, 255, 255], mod: "E" },
|
|
||||||
bold_white: { rgb: [255, 255, 255], mod: "F" },
|
|
||||||
};
|
|
|
@ -1,34 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
import {
|
|
||||||
clear_states,
|
|
||||||
generate_theme,
|
|
||||||
export_element_as_file,
|
|
||||||
copy_elem_to_clip,
|
|
||||||
} from "./menu.js";
|
|
||||||
|
|
||||||
const ONCLICK_EVENTS = {
|
|
||||||
"clear-states": () => {
|
|
||||||
clear_states();
|
|
||||||
window.location.reload();
|
|
||||||
},
|
|
||||||
"generate-theme": generate_theme,
|
|
||||||
"export-file": export_element_as_file,
|
|
||||||
copy: copy_elem_to_clip,
|
|
||||||
};
|
|
||||||
|
|
||||||
function main() {
|
|
||||||
for (let id in ONCLICK_EVENTS)
|
|
||||||
document.getElementById(id).addEventListener("click", async () => {
|
|
||||||
ONCLICK_EVENTS[id]();
|
|
||||||
|
|
||||||
let self_elem = document.getElementById(id);
|
|
||||||
let old_text = self_elem.innerText;
|
|
||||||
|
|
||||||
self_elem.innerText = "Done!";
|
|
||||||
await new Promise((r) => setTimeout(r, 800));
|
|
||||||
self_elem.innerText = old_text;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", main);
|
|
|
@ -1,166 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
import { gp, rgb_to_hex } from "../utils/index.js";
|
|
||||||
import { tty_clrs } from "./clrs.js";
|
|
||||||
|
|
||||||
const CLRS = ["r", "g", "b"];
|
|
||||||
|
|
||||||
function new_colourpicker(id, clr_map) {
|
|
||||||
let div = document.createElement("div");
|
|
||||||
|
|
||||||
div.id = id;
|
|
||||||
|
|
||||||
CLRS.forEach((item, index) => {
|
|
||||||
let clr = document.createElement("input");
|
|
||||||
|
|
||||||
clr.type = "range";
|
|
||||||
clr.min = 0;
|
|
||||||
clr.max = 255;
|
|
||||||
clr.name = item;
|
|
||||||
clr.value = clr_map[index];
|
|
||||||
clr.addEventListener("input", () => update_colour(id));
|
|
||||||
|
|
||||||
div.appendChild(clr);
|
|
||||||
});
|
|
||||||
|
|
||||||
return div;
|
|
||||||
}
|
|
||||||
|
|
||||||
function update_colour(id) {
|
|
||||||
let picker = document.getElementById(id);
|
|
||||||
let gc = (value) => Number(picker.children[value].value); // get colour
|
|
||||||
let rgb = [gc("r"), gc("g"), gc("b")];
|
|
||||||
|
|
||||||
picker.style.backgroundColor = `rgb(${rgb.join(",")})`;
|
|
||||||
localStorage.setItem(id, JSON.stringify({ rgb: rgb }));
|
|
||||||
|
|
||||||
tty_clrs[id].rgb = rgb;
|
|
||||||
generate_theme();
|
|
||||||
}
|
|
||||||
|
|
||||||
function load_from_localtorage() {
|
|
||||||
let keys = Object.keys(tty_clrs);
|
|
||||||
|
|
||||||
Object.keys(localStorage).forEach((key) => {
|
|
||||||
if (keys.includes(key))
|
|
||||||
tty_clrs[key].rgb = JSON.parse(localStorage.getItem(key))[
|
|
||||||
"rgb"
|
|
||||||
].map(Number);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
export function generate_theme(query = "#theme-output") {
|
|
||||||
document.body.style.backgroundColor = `rgb(${tty_clrs["black"].rgb.join(
|
|
||||||
","
|
|
||||||
)})`;
|
|
||||||
document.body.style.color = `rgb(${tty_clrs["light_gray"].rgb.join(",")})`;
|
|
||||||
|
|
||||||
for (let header of document.querySelectorAll("h1, h2:first-of-type"))
|
|
||||||
header.style.color = `rgb(${tty_clrs["bold_white"].rgb.join(",")})`;
|
|
||||||
|
|
||||||
let elem = document.querySelector(query);
|
|
||||||
if (!elem) throw ReferenceError(`${query} did not match any results`);
|
|
||||||
|
|
||||||
let text = `# Theme generated using: ${window.location.href}
|
|
||||||
# Installation: Just add these lines to your ~/.bashrc
|
|
||||||
|
|
||||||
__tty_theme() {
|
|
||||||
[ "$TERM" = 'linux' ] || return # Only run in a TTY
|
|
||||||
|
|
||||||
`;
|
|
||||||
|
|
||||||
for (let key in tty_clrs) {
|
|
||||||
let key_rgb = tty_clrs[key].rgb;
|
|
||||||
let key_hex = rgb_to_hex(key_rgb);
|
|
||||||
let rgb_str = `rgb(${key_rgb.join(", ")})`;
|
|
||||||
|
|
||||||
text += ` printf "\\e]P${tty_clrs[key].mod}${key_hex}" # ${key}${gp(
|
|
||||||
key,
|
|
||||||
14
|
|
||||||
)}${rgb_str}${gp(rgb_str, 20)}#${key_hex}\n`;
|
|
||||||
}
|
|
||||||
|
|
||||||
text += `
|
|
||||||
clear # To fix the background
|
|
||||||
}
|
|
||||||
|
|
||||||
__tty_theme
|
|
||||||
`;
|
|
||||||
elem.innerText = text;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function export_element_as_file(query = "#theme-output") {
|
|
||||||
generate_theme(query);
|
|
||||||
|
|
||||||
let blob = new Blob([document.querySelector(query).innerText], {
|
|
||||||
type: "text/plain",
|
|
||||||
});
|
|
||||||
|
|
||||||
if (window.navigator.msSaveOrOpenBlob)
|
|
||||||
window.navigator.msSaveBlob(blob, "ari_web_theme.bash");
|
|
||||||
else {
|
|
||||||
let elem = window.document.createElement("a");
|
|
||||||
|
|
||||||
elem.href = window.URL.createObjectURL(blob);
|
|
||||||
elem.download = "ari_web_theme.bash";
|
|
||||||
|
|
||||||
document.body.appendChild(elem);
|
|
||||||
elem.click();
|
|
||||||
document.body.removeChild(elem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export function clear_states() {
|
|
||||||
Object.keys(localStorage).forEach((key) => {
|
|
||||||
if (Object.keys(tty_clrs).includes(key)) localStorage.removeItem(key);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
export function copy_elem_to_clip(query = "#theme-output") {
|
|
||||||
let elem = document.querySelector(query);
|
|
||||||
if (!elem) throw ReferenceError(`Query '${query}' did not return anything`);
|
|
||||||
|
|
||||||
let text_area = document.createElement("textarea");
|
|
||||||
|
|
||||||
text_area.style.position = "fixed";
|
|
||||||
text_area.style.top = 0;
|
|
||||||
text_area.style.left = 0;
|
|
||||||
|
|
||||||
text_area.style.width = "2em";
|
|
||||||
text_area.style.height = "2em";
|
|
||||||
|
|
||||||
text_area.style.padding = 0;
|
|
||||||
|
|
||||||
text_area.style.border = "none";
|
|
||||||
text_area.style.outline = "none";
|
|
||||||
text_area.style.boxShadow = "none";
|
|
||||||
|
|
||||||
text_area.style.background = "transparent";
|
|
||||||
|
|
||||||
text_area.value = elem.innerText;
|
|
||||||
|
|
||||||
document.body.appendChild(text_area);
|
|
||||||
text_area.focus();
|
|
||||||
text_area.select();
|
|
||||||
|
|
||||||
document.execCommand("copy");
|
|
||||||
document.body.removeChild(text_area);
|
|
||||||
}
|
|
||||||
|
|
||||||
function main() {
|
|
||||||
load_from_localtorage();
|
|
||||||
let menu = document.getElementById("menu");
|
|
||||||
|
|
||||||
for (let key in tty_clrs) {
|
|
||||||
let [r, g, b] = tty_clrs[key].rgb;
|
|
||||||
let picker = new_colourpicker(key, [r, g, b]);
|
|
||||||
|
|
||||||
picker.style.backgroundColor = `rgb(${r}, ${g}, ${b})`;
|
|
||||||
|
|
||||||
menu.appendChild(picker);
|
|
||||||
}
|
|
||||||
|
|
||||||
generate_theme();
|
|
||||||
}
|
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", main);
|
|
|
@ -1,95 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
import { tty_clrs } from "./clrs.js";
|
|
||||||
import { rgb_to_hex } from "../utils/index.js";
|
|
||||||
|
|
||||||
const HEX_REGEX = /^#[0-9A-F]{6}$/i;
|
|
||||||
|
|
||||||
function change_clr(id) {
|
|
||||||
let box = document.getElementById(`${id}-box`);
|
|
||||||
let out = document.getElementById(id);
|
|
||||||
|
|
||||||
if (!box.value || !box.value.match(HEX_REGEX)) {
|
|
||||||
out.style.backgroundColor = document.body.style.backgroundColor;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
out.style.backgroundColor = box.value;
|
|
||||||
}
|
|
||||||
|
|
||||||
function hex_to_rgb(hex) {
|
|
||||||
if (hex.length != 7) throw SyntaxError("Invalid hex");
|
|
||||||
|
|
||||||
let rgb_hex = hex.substring(1).match(/.{1,2}/g);
|
|
||||||
return [
|
|
||||||
parseInt(rgb_hex[0], 16),
|
|
||||||
parseInt(rgb_hex[1], 16),
|
|
||||||
parseInt(rgb_hex[2], 16),
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
function commit(fields) {
|
|
||||||
Array.from(fields.children).forEach((item) => {
|
|
||||||
let clr_name = item.getAttribute("data-clr-name");
|
|
||||||
let clr = item.children[0].value;
|
|
||||||
|
|
||||||
if (clr_name && !clr && clr_name in localStorage)
|
|
||||||
localStorage.removeItem(clr_name);
|
|
||||||
|
|
||||||
if (!clr || !clr.match(HEX_REGEX)) return;
|
|
||||||
|
|
||||||
localStorage.setItem(
|
|
||||||
clr_name,
|
|
||||||
JSON.stringify({ rgb: hex_to_rgb(clr) })
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
alert("Settings saved!");
|
|
||||||
}
|
|
||||||
|
|
||||||
function load_local_storage() {
|
|
||||||
let keys = Object.keys(tty_clrs);
|
|
||||||
|
|
||||||
Object.keys(localStorage).forEach((key) => {
|
|
||||||
if (keys.includes(key)) {
|
|
||||||
let box = document.getElementById(`${key}-box`);
|
|
||||||
|
|
||||||
if (!box) return;
|
|
||||||
|
|
||||||
box.value = `#${rgb_to_hex(
|
|
||||||
JSON.parse(localStorage.getItem(key))["rgb"].map(Number)
|
|
||||||
)}`;
|
|
||||||
box.onkeyup();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function main() {
|
|
||||||
let clr_fields = document.getElementById("clr-fields");
|
|
||||||
document.getElementById("commit").onclick = () => commit(clr_fields);
|
|
||||||
|
|
||||||
for (const key in tty_clrs) {
|
|
||||||
let entry = document.createElement("li");
|
|
||||||
entry.setAttribute("data-clr-name", key);
|
|
||||||
|
|
||||||
let entry_box = document.createElement("input");
|
|
||||||
entry_box.type = "text";
|
|
||||||
entry_box.id = `${key}-box`;
|
|
||||||
entry_box.placeholder = `#${rgb_to_hex(tty_clrs[key].rgb)}`;
|
|
||||||
|
|
||||||
let entry_test = document.createElement("span");
|
|
||||||
entry_test.id = key;
|
|
||||||
entry_test.innerText = `Test: ${key}`;
|
|
||||||
|
|
||||||
entry_box.onkeyup = () => change_clr(key);
|
|
||||||
|
|
||||||
entry.appendChild(entry_box);
|
|
||||||
entry.appendChild(entry_test);
|
|
||||||
|
|
||||||
clr_fields.appendChild(entry);
|
|
||||||
}
|
|
||||||
|
|
||||||
load_local_storage();
|
|
||||||
}
|
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", main);
|
|
|
@ -1,27 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
function mkelem(elem, content, parent, attrs) {
|
|
||||||
let e = document.createElement(elem);
|
|
||||||
|
|
||||||
if (attrs) Object.keys(attrs).forEach((k) => e.setAttribute(k, attrs[k]));
|
|
||||||
|
|
||||||
switch (content.constructor) {
|
|
||||||
case String:
|
|
||||||
e.innerText = content;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Array:
|
|
||||||
for (let c of content)
|
|
||||||
e.appendChild(
|
|
||||||
c.constructor === String ? document.createTextNode(c) : c
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
e.appendChild(content);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
parent?.appendChild(e);
|
|
||||||
return e;
|
|
||||||
}
|
|
|
@ -1,21 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
// Get padding
|
|
||||||
export function gp(str, pad) {
|
|
||||||
let ammount = pad - str.length;
|
|
||||||
|
|
||||||
if (ammount <= 0) return "";
|
|
||||||
|
|
||||||
return " ".repeat(ammount);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function component_to_hex(c) {
|
|
||||||
let hex = c.toString(16);
|
|
||||||
return hex.length === 1 ? "0" + hex : hex;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function rgb_to_hex(rgb) {
|
|
||||||
let hex = "";
|
|
||||||
rgb.forEach((item) => (hex += component_to_hex(item)));
|
|
||||||
return hex;
|
|
||||||
}
|
|
|
@ -1,9 +0,0 @@
|
||||||
* {
|
|
||||||
font-family: sans-serif;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
margin: auto;
|
|
||||||
max-width: 1200px;
|
|
||||||
padding: 4em;
|
|
||||||
}
|
|
|
@ -1,128 +0,0 @@
|
||||||
*,
|
|
||||||
*::before,
|
|
||||||
*::after {
|
|
||||||
background-color: blue;
|
|
||||||
color: yellow;
|
|
||||||
text-shadow: 0px 0px 16px black;
|
|
||||||
|
|
||||||
font-weight: bold;
|
|
||||||
|
|
||||||
scrollbar-width: none;
|
|
||||||
-ms-overflow-style: none;
|
|
||||||
|
|
||||||
-webkit-box-sizing: border-box;
|
|
||||||
box-sizing: border-box;
|
|
||||||
|
|
||||||
word-wrap: break-word;
|
|
||||||
/* word-break: break-all; */
|
|
||||||
|
|
||||||
scroll-behavior: smooth;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-scrollbar {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
code,
|
|
||||||
code *,
|
|
||||||
pre,
|
|
||||||
pre * {
|
|
||||||
white-space: pre-wrap;
|
|
||||||
white-space: -moz-pre-wrap;
|
|
||||||
white-space: -pre-wrap;
|
|
||||||
white-space: -o-pre-wrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
margin: auto;
|
|
||||||
padding: 2rem;
|
|
||||||
min-height: 100vh;
|
|
||||||
max-width: 1500px;
|
|
||||||
text-rendering: optimizeSpeed;
|
|
||||||
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
text-align: center;
|
|
||||||
margin: 1em;
|
|
||||||
font-size: 2em;
|
|
||||||
background-color: green;
|
|
||||||
}
|
|
||||||
|
|
||||||
marquee {
|
|
||||||
background-color: green;
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
margin: 0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
code {
|
|
||||||
white-space: pre-wrap !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
font-size: 1.3em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.center {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.split {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: auto 40%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.split div:first-child {
|
|
||||||
margin-left: 4em;
|
|
||||||
margin-right: 4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: pink;
|
|
||||||
font-size: 1.3em;
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
list-style-type: square;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2,
|
|
||||||
h2 * {
|
|
||||||
text-align: center;
|
|
||||||
background-color: crimson;
|
|
||||||
}
|
|
||||||
|
|
||||||
footer {
|
|
||||||
margin-top: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (prefers-reduced-motion: reduce) {
|
|
||||||
*,
|
|
||||||
*::before,
|
|
||||||
*::after {
|
|
||||||
-webkit-animation-duration: 0.01ms !important;
|
|
||||||
animation-duration: 0.01ms !important;
|
|
||||||
|
|
||||||
-webkit-animation-iteration-count: 1 !important;
|
|
||||||
animation-iteration-count: 1 !important;
|
|
||||||
|
|
||||||
-webkit-transition-duration: 0.01ms !important;
|
|
||||||
-o-transition-duration: 0.01ms !important;
|
|
||||||
transition-duration: 0.01ms !important;
|
|
||||||
|
|
||||||
scroll-behavior: auto !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (prefers-contrast: more) {
|
|
||||||
*,
|
|
||||||
*::before,
|
|
||||||
*::after {
|
|
||||||
background-color: black !important;
|
|
||||||
color: white !important;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,90 +0,0 @@
|
||||||
*,
|
|
||||||
*::before,
|
|
||||||
*::after {
|
|
||||||
background-color: #181818;
|
|
||||||
color: whitesmoke;
|
|
||||||
font-family: sans-serif;
|
|
||||||
|
|
||||||
word-wrap: break-word;
|
|
||||||
word-break: break-all;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
padding: 2em;
|
|
||||||
margin: auto;
|
|
||||||
max-width: 1000px;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1,
|
|
||||||
h2:not(div[data-question] > h2) {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
div[data-question] h2 {
|
|
||||||
margin: 0.3em 0.1em 0.2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
header {
|
|
||||||
margin: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
input {
|
|
||||||
margin: initial;
|
|
||||||
padding: initial;
|
|
||||||
}
|
|
||||||
|
|
||||||
button {
|
|
||||||
margin: 1em;
|
|
||||||
width: 30%;
|
|
||||||
padding: 1em;
|
|
||||||
border-color: transparent;
|
|
||||||
border-radius: 3px;
|
|
||||||
background-color: #202020;
|
|
||||||
}
|
|
||||||
|
|
||||||
button:hover,
|
|
||||||
button:focus {
|
|
||||||
cursor: pointer;
|
|
||||||
background-color: #222222;
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
padding: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:hover,
|
|
||||||
a:focus {
|
|
||||||
color: ghostwhite;
|
|
||||||
}
|
|
||||||
|
|
||||||
input {
|
|
||||||
margin: 0 0.5em 0.1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#score {
|
|
||||||
position: fixed;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
background-color: #282828aa;
|
|
||||||
z-index: 2;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
#score h1 {
|
|
||||||
background-color: initial;
|
|
||||||
position: absolute;
|
|
||||||
top: 50%;
|
|
||||||
left: 50%;
|
|
||||||
-webkit-transform: translate(-50%, -50%);
|
|
||||||
-ms-transform: translate(-50%, -50%);
|
|
||||||
transform: translate(-50%, -50%);
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
|
@ -1,85 +0,0 @@
|
||||||
*,
|
|
||||||
*::before,
|
|
||||||
*::after {
|
|
||||||
background-color: #181818;
|
|
||||||
color: whitesmoke;
|
|
||||||
font-family: sans-serif;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
max-width: 1200px;
|
|
||||||
margin: auto;
|
|
||||||
padding: 4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1,
|
|
||||||
h2 {
|
|
||||||
margin-bottom: 0.7em;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
#types {
|
|
||||||
margin-left: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#types,
|
|
||||||
label[for="types"] {
|
|
||||||
font-weight: bold;
|
|
||||||
margin-top: 2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#submit-button {
|
|
||||||
display: block;
|
|
||||||
margin: 1em;
|
|
||||||
width: 20%;
|
|
||||||
border: none;
|
|
||||||
padding: 0.5em;
|
|
||||||
background-color: rgba(0, 0, 0, 0.3);
|
|
||||||
transition: background-color 0.4s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
#submit-button:focus,
|
|
||||||
#submit-button:hover {
|
|
||||||
cursor: pointer;
|
|
||||||
background-color: rgba(0, 0, 0, 0.8);
|
|
||||||
transition: background-color 0.4s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
label {
|
|
||||||
margin-left: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
form * {
|
|
||||||
margin-bottom: 0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
textarea {
|
|
||||||
resize: none;
|
|
||||||
height: 10em;
|
|
||||||
}
|
|
||||||
|
|
||||||
textarea,
|
|
||||||
input {
|
|
||||||
padding: 0.3em;
|
|
||||||
width: 60%;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: 800px) {
|
|
||||||
form * {
|
|
||||||
display: block;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
label::after {
|
|
||||||
content: "^";
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
padding: 2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#submit-button {
|
|
||||||
width: 100%;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,19 +0,0 @@
|
||||||
body {
|
|
||||||
line-height: 1.5;
|
|
||||||
background-color: #181818;
|
|
||||||
font-family: sans-serif;
|
|
||||||
color: whitesmoke;
|
|
||||||
padding: 2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
main {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
min-height: 100vh;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
margin-top: 1em;
|
|
||||||
}
|
|
|
@ -1,69 +0,0 @@
|
||||||
*,
|
|
||||||
::after,
|
|
||||||
::before {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
|
|
||||||
-webkit-box-sizing: border-box;
|
|
||||||
box-sizing: border-box;
|
|
||||||
|
|
||||||
scroll-behavior: smooth;
|
|
||||||
color-scheme: dark;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
-ms-overflow-style: none;
|
|
||||||
scrollbar-width: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
body::-webkit-scrollbar {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
ol[role="list"],
|
|
||||||
ul[role="list"] {
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
min-height: 100vh;
|
|
||||||
text-rendering: optimizeSpeed;
|
|
||||||
line-height: 1.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
img,
|
|
||||||
picture {
|
|
||||||
max-width: 100%;
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
button,
|
|
||||||
input,
|
|
||||||
select,
|
|
||||||
textarea {
|
|
||||||
font: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
label {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (prefers-reduced-motion: reduce) {
|
|
||||||
*,
|
|
||||||
::after,
|
|
||||||
::before {
|
|
||||||
scroll-behavior: auto;
|
|
||||||
|
|
||||||
-webkit-animation-duration: 0s !important;
|
|
||||||
animation-duration: 0s !important;
|
|
||||||
|
|
||||||
-webkit-animation-iteration-count: 1 !important;
|
|
||||||
animation-iteration-count: 1 !important;
|
|
||||||
|
|
||||||
-webkit-transition-duration: 0s !important;
|
|
||||||
-o-transition-duration: 0s !important;
|
|
||||||
transition-duration: 0s !important;
|
|
||||||
|
|
||||||
scroll-behavior: auto !important;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,10 +0,0 @@
|
||||||
$ok_colour: #0fd30f;
|
|
||||||
$warn_colour: #ffff00;
|
|
||||||
$error_colour: #ff0000;
|
|
||||||
$bg_colour: #070707;
|
|
||||||
$default_content_colour: #ffffff;
|
|
||||||
$boot_header_colour: #9acd32;
|
|
||||||
$font_default: monospace;
|
|
||||||
$boot_ver: "1.0";
|
|
||||||
$shell_colour: $ok_colour;
|
|
||||||
$shell_font_size: 1.7em;
|
|
|
@ -1,3 +0,0 @@
|
||||||
$default-font: sans-serif;
|
|
||||||
$bg: black;
|
|
||||||
$default-font-colour: white;
|
|
|
@ -1,84 +0,0 @@
|
||||||
@import "../config/_main.scss";
|
|
||||||
|
|
||||||
$bg1: lighten($bg_colour, 10%);
|
|
||||||
$bg2: lighten($bg1, 10%);
|
|
||||||
$bg3: lighten($bg2, 10%);
|
|
||||||
|
|
||||||
.editor {
|
|
||||||
position: fixed;
|
|
||||||
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
|
|
||||||
padding: 5em;
|
|
||||||
|
|
||||||
z-index: 999999;
|
|
||||||
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
|
|
||||||
padding: 2em;
|
|
||||||
|
|
||||||
background-color: $bg1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.editor textarea {
|
|
||||||
width: 50%;
|
|
||||||
height: 100%;
|
|
||||||
padding: 1em;
|
|
||||||
|
|
||||||
resize: none;
|
|
||||||
|
|
||||||
white-space: pre;
|
|
||||||
overflow-wrap: normal;
|
|
||||||
overflow: scroll;
|
|
||||||
|
|
||||||
outline: none;
|
|
||||||
border: none;
|
|
||||||
|
|
||||||
background-color: $bg2;
|
|
||||||
|
|
||||||
margin-right: 4em;
|
|
||||||
margin-left: 4em;
|
|
||||||
|
|
||||||
font-size: 1.3em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.editor .editor-buttons {
|
|
||||||
width: 8%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.editor .editor-buttons button {
|
|
||||||
display: block;
|
|
||||||
|
|
||||||
padding: 1em;
|
|
||||||
margin-bottom: 0.5em;
|
|
||||||
|
|
||||||
width: 100%;
|
|
||||||
|
|
||||||
border: none;
|
|
||||||
font-weight: bold;
|
|
||||||
|
|
||||||
background-color: $bg2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.editor .editor-buttons button:hover,
|
|
||||||
.editor .editor-buttons button:focus {
|
|
||||||
background-color: $bg3;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.editor h1 {
|
|
||||||
margin-bottom: 1em;
|
|
||||||
text-align: center;
|
|
||||||
|
|
||||||
width: 1ch;
|
|
||||||
|
|
||||||
word-wrap: break-word;
|
|
||||||
word-break: break-all;
|
|
||||||
}
|
|
|
@ -1,56 +0,0 @@
|
||||||
:root {
|
|
||||||
--switch-fg: #f9f6e8;
|
|
||||||
--switch-bg-inactive: #666c7f;
|
|
||||||
--switch-bg-active: #87afaf;
|
|
||||||
}
|
|
||||||
|
|
||||||
*,
|
|
||||||
*::before,
|
|
||||||
*::after {
|
|
||||||
background-color: #2b2e36;
|
|
||||||
color: #f9f6e8;
|
|
||||||
font-family: sans-serif;
|
|
||||||
}
|
|
||||||
|
|
||||||
label:not(label[for]) {
|
|
||||||
float: right;
|
|
||||||
padding: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
padding: 1em;
|
|
||||||
margin: auto;
|
|
||||||
max-width: 1000px;
|
|
||||||
min-height: 100vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
.switch {
|
|
||||||
padding: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content *, .content {
|
|
||||||
display: block
|
|
||||||
}
|
|
||||||
|
|
||||||
#pages {
|
|
||||||
display: grid;
|
|
||||||
height: 100%;
|
|
||||||
|
|
||||||
grid-template-rows: auto auto;
|
|
||||||
grid-gap: 1em;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pages div {
|
|
||||||
height: 100%;
|
|
||||||
padding: 4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pages div h2 {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
div .disabled {
|
|
||||||
z-index: 9999;
|
|
||||||
background-color: rgba(0, 0, 0, 0.5);
|
|
||||||
}
|
|
|
@ -1,72 +0,0 @@
|
||||||
/* :root {
|
|
||||||
--switch-fg: #f9f6e8;
|
|
||||||
--switch-bg-inactive: #666c7f;
|
|
||||||
--switch-bg-active: #87afaf;
|
|
||||||
} */
|
|
||||||
|
|
||||||
*,
|
|
||||||
*::before,
|
|
||||||
*::after {
|
|
||||||
background-color: #2b2e36;
|
|
||||||
color: #f9f6e8;
|
|
||||||
font-family: sans-serif;
|
|
||||||
}
|
|
||||||
|
|
||||||
label:not(label[for]) {
|
|
||||||
float: right;
|
|
||||||
padding: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
padding: 1em;
|
|
||||||
margin: auto;
|
|
||||||
max-width: 1000px;
|
|
||||||
height: 100vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* .switch {
|
|
||||||
padding: 1em;
|
|
||||||
} */
|
|
||||||
|
|
||||||
.content *,
|
|
||||||
.content {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pages {
|
|
||||||
display: grid;
|
|
||||||
height: 100%;
|
|
||||||
|
|
||||||
grid-template-rows: auto auto;
|
|
||||||
grid-gap: 1em;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pages > div {
|
|
||||||
height: 100%;
|
|
||||||
padding: 4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pages * h2 {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
textarea {
|
|
||||||
width: 100%;
|
|
||||||
height: 50%;
|
|
||||||
margin: 1em;
|
|
||||||
padding: 1em;
|
|
||||||
resize: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
button {
|
|
||||||
padding: 0.5em;
|
|
||||||
background-color: #666c7f;
|
|
||||||
border-color: transparent;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: background-color 0.2s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
button:hover, button:focus {
|
|
||||||
background-color: #87afaf;
|
|
||||||
}
|
|
|
@ -1,37 +0,0 @@
|
||||||
@import "../config/_main.scss";
|
|
||||||
|
|
||||||
:root {
|
|
||||||
color-scheme: dark;
|
|
||||||
}
|
|
||||||
|
|
||||||
*, *::before, *::after {
|
|
||||||
-webkit-box-sizing: border-box;
|
|
||||||
box-sizing: border-box;
|
|
||||||
|
|
||||||
font-family: $font_default;
|
|
||||||
color: $default_content_colour;
|
|
||||||
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
|
|
||||||
background-color: $bg_colour;
|
|
||||||
margin-bottom: 2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.iframe {
|
|
||||||
width: 50%;
|
|
||||||
min-width: 300px;
|
|
||||||
max-width: 1000px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.upload * {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.upload button {
|
|
||||||
padding: 0.3em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.upload button[disabled] {
|
|
||||||
color: darkgray;
|
|
||||||
}
|
|
|
@ -1,132 +0,0 @@
|
||||||
:root {
|
|
||||||
--bg: #121212;
|
|
||||||
--bg1: #101010;
|
|
||||||
--bg2: #424242;
|
|
||||||
--bg3: #151515;
|
|
||||||
|
|
||||||
--fg: #ffd700;
|
|
||||||
--fg1: #f9a602;
|
|
||||||
}
|
|
||||||
|
|
||||||
*,
|
|
||||||
*::before,
|
|
||||||
*::after {
|
|
||||||
font-family: sans-serif;
|
|
||||||
background-color: var(--bg);
|
|
||||||
}
|
|
||||||
|
|
||||||
pre {
|
|
||||||
padding: 0.5em;
|
|
||||||
margin: 0.2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
pre,
|
|
||||||
pre * {
|
|
||||||
background-color: var(--bg1);
|
|
||||||
}
|
|
||||||
|
|
||||||
main li,
|
|
||||||
main li *,
|
|
||||||
pre {
|
|
||||||
white-space: pre-wrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
main li,
|
|
||||||
header li {
|
|
||||||
margin-bottom: 0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile-only {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
main {
|
|
||||||
display: -ms-grid;
|
|
||||||
display: grid;
|
|
||||||
-ms-grid-columns: 2fr 2.5em 1fr;
|
|
||||||
grid-template-columns: 2fr 1fr;
|
|
||||||
grid-gap: 2.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
margin: auto;
|
|
||||||
max-width: 1450px;
|
|
||||||
padding: 3em;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
margin-bottom: 0.5em;
|
|
||||||
margin-top: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 > span {
|
|
||||||
color: var(--fg1);
|
|
||||||
cursor: pointer;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 > span::before {
|
|
||||||
content: "click me";
|
|
||||||
position: absolute;
|
|
||||||
top: -1.5ch;
|
|
||||||
background-color: transparent;
|
|
||||||
color: var(--bg2);
|
|
||||||
font-size: 0.5em;
|
|
||||||
letter-spacing: 0.5ch;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1::-moz-selection,
|
|
||||||
h1 *::-moz-selection {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1::-moz-selection,
|
|
||||||
h1 *::-moz-selection {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1::selection,
|
|
||||||
h1 *::selection {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: var(--fg);
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:hover,
|
|
||||||
a:focus {
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media only screen and (max-width: 830px) {
|
|
||||||
.mobile-only {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
nav > ul {
|
|
||||||
display: -webkit-box;
|
|
||||||
display: -ms-flexbox;
|
|
||||||
display: flex;
|
|
||||||
-webkit-box-orient: horizontal;
|
|
||||||
-webkit-box-direction: normal;
|
|
||||||
-ms-flex-direction: row;
|
|
||||||
flex-direction: row;
|
|
||||||
-ms-flex-pack: distribute;
|
|
||||||
justify-content: space-around;
|
|
||||||
margin-top: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
nav > ul > li {
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
main {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,47 +0,0 @@
|
||||||
*,
|
|
||||||
*::before,
|
|
||||||
*::after {
|
|
||||||
color: whitesmoke;
|
|
||||||
background-color: black;
|
|
||||||
line-height: 1.5;
|
|
||||||
font-family: sans-serif;
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
padding: 0.2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
*:not(h1) {
|
|
||||||
font-size: 1.08em;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul {
|
|
||||||
margin: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
text-align: center;
|
|
||||||
font-size: 2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
max-width: 1200px;
|
|
||||||
margin: auto;
|
|
||||||
padding: 2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: #b1b4c0;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:focus,
|
|
||||||
a:hover {
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
blockquote,
|
|
||||||
blockquote * {
|
|
||||||
line-height: 1;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
|
@ -1,25 +0,0 @@
|
||||||
:root {
|
|
||||||
--ns-bg: #af5f5f;
|
|
||||||
--ns-fg: #262220;
|
|
||||||
}
|
|
||||||
|
|
||||||
*[ns],
|
|
||||||
*[nsb],
|
|
||||||
*[nsb] *,
|
|
||||||
*[ns] * {
|
|
||||||
background-color: var(--ns-bg);
|
|
||||||
color: var(--ns-fg);
|
|
||||||
font-weight: bold;
|
|
||||||
line-height: 1.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
*[ns] {
|
|
||||||
padding: 0.2em;
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
|
|
||||||
*[nsb] {
|
|
||||||
display: block;
|
|
||||||
text-align: center;
|
|
||||||
padding: 2em;
|
|
||||||
}
|
|
|
@ -1,50 +0,0 @@
|
||||||
@import "../config/_novpn.scss";
|
|
||||||
|
|
||||||
* {
|
|
||||||
-webkit-box-sizing: border-box;
|
|
||||||
box-sizing: border-box;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
color: $default-font-colour;
|
|
||||||
font-family: $default-font;
|
|
||||||
scroll-behavior: smooth;
|
|
||||||
}
|
|
||||||
|
|
||||||
html,
|
|
||||||
body {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#matrix {
|
|
||||||
position: fixed;
|
|
||||||
display: block;
|
|
||||||
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
|
|
||||||
border-width: 1px;
|
|
||||||
border-style: solid;
|
|
||||||
|
|
||||||
border-color: $bg;
|
|
||||||
background-color: $bg;
|
|
||||||
|
|
||||||
z-index: -1;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
position: sticky;
|
|
||||||
display: block;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-intro {
|
|
||||||
position: absolute;
|
|
||||||
left: 50%;
|
|
||||||
top: 50%;
|
|
||||||
-webkit-transform: translate(-50%, -50%);
|
|
||||||
-ms-transform: translate(-50%, -50%);
|
|
||||||
transform: translate(-50%, -50%);
|
|
||||||
}
|
|
|
@ -1,41 +0,0 @@
|
||||||
#term-wrap {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
position: fixed;
|
|
||||||
bottom: 1em;
|
|
||||||
padding: 1em;
|
|
||||||
max-height: 50%;
|
|
||||||
min-height: 30%;
|
|
||||||
overflow-y: scroll;
|
|
||||||
box-shadow: 0 0 100px 40px var(--bg1);
|
|
||||||
}
|
|
||||||
|
|
||||||
#term-wrap,
|
|
||||||
#term-wrap > div,
|
|
||||||
#term-hist,
|
|
||||||
#term-hist > div,
|
|
||||||
#term-hist > div > div {
|
|
||||||
background-color: var(--bg3);
|
|
||||||
}
|
|
||||||
|
|
||||||
#term-hist {
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
#term-wrap:nth-child(2) {
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
#term-hist li {
|
|
||||||
list-style-position: inside;
|
|
||||||
}
|
|
||||||
|
|
||||||
.cmd {
|
|
||||||
width: 80%;
|
|
||||||
border: none;
|
|
||||||
outline: none;
|
|
||||||
margin-left: 0.5ch;
|
|
||||||
margin-top: 0.5em;
|
|
||||||
background-color: transparent;
|
|
||||||
padding: 0.1em;
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
span {
|
|
||||||
color: #7ed44c;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
padding: 2em;
|
|
||||||
margin: auto;
|
|
||||||
max-width: 1100px;
|
|
||||||
min-height: 100vh;
|
|
||||||
text-rendering: optimizeSpeed;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
i {
|
|
||||||
color: lightgray;
|
|
||||||
}
|
|
|
@ -1,84 +0,0 @@
|
||||||
:root {
|
|
||||||
--switch-fg: #ffffff;
|
|
||||||
|
|
||||||
--switch-bg-active: #2196f3;
|
|
||||||
--switch-bg-inactive: #cccccc;
|
|
||||||
|
|
||||||
--switch-transision-time: 0.2s;
|
|
||||||
|
|
||||||
--switch-width: 60px;
|
|
||||||
--switch-height: 34px;
|
|
||||||
|
|
||||||
--switch-slider-width: 26px;
|
|
||||||
--switch-slider-height: var(--switch-slider-width);
|
|
||||||
--switch-slider-left: 4px;
|
|
||||||
--switch-slider-bottom: var(--switch-slider-left);
|
|
||||||
}
|
|
||||||
|
|
||||||
.switch {
|
|
||||||
position: relative;
|
|
||||||
display: inline-block;
|
|
||||||
width: var(--switch-width);
|
|
||||||
height: var(--switch-height);
|
|
||||||
}
|
|
||||||
|
|
||||||
.switch input {
|
|
||||||
opacity: 0;
|
|
||||||
width: 0;
|
|
||||||
height: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.slider {
|
|
||||||
position: absolute;
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
|
|
||||||
background-color: var(--switch-bg-inactive);
|
|
||||||
-webkit-transition: var(--switch-transision-time);
|
|
||||||
-o-transition: var(--switch-transision-time);
|
|
||||||
transition: var(--switch-transision-time);
|
|
||||||
}
|
|
||||||
|
|
||||||
.slider:before {
|
|
||||||
position: absolute;
|
|
||||||
content: "";
|
|
||||||
|
|
||||||
width: var(--switch-slider-width);
|
|
||||||
height: var(--switch-slider-height);
|
|
||||||
|
|
||||||
left: var(--switch-slider-left);
|
|
||||||
bottom: var(--switch-slider-bottom);
|
|
||||||
|
|
||||||
background-color: var(--switch-fg);
|
|
||||||
|
|
||||||
-webkit-transition: var(--switch-transision-time);
|
|
||||||
-o-transition: var(--switch-transision-time);
|
|
||||||
transition: var(--switch-transision-time);
|
|
||||||
}
|
|
||||||
|
|
||||||
input:checked + .slider {
|
|
||||||
background-color: var(--switch-bg-active);
|
|
||||||
}
|
|
||||||
|
|
||||||
input:focus + .slider {
|
|
||||||
-webkit-box-shadow: 0 0 1px var(--switch-bg-active);
|
|
||||||
box-shadow: 0 0 1px var(--switch-bg-active);
|
|
||||||
}
|
|
||||||
|
|
||||||
input:checked + .slider:before {
|
|
||||||
-webkit-transform: translateX(26px);
|
|
||||||
-ms-transform: translateX(26px);
|
|
||||||
transform: translateX(26px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.slider.round {
|
|
||||||
border-radius: 34px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.slider.round:before {
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
|
@ -1,42 +0,0 @@
|
||||||
li[data-clr-name]::before {
|
|
||||||
content: attr(data-clr-name) ": ";
|
|
||||||
}
|
|
||||||
|
|
||||||
li[data-clr-name] {
|
|
||||||
margin-bottom: 0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
*,
|
|
||||||
*::before,
|
|
||||||
*::after {
|
|
||||||
background-color: #262220;
|
|
||||||
color: #f9f6e8;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
max-width: 1000px;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
margin-bottom: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
span {
|
|
||||||
padding-left: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
display: block;
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
li span {
|
|
||||||
float: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
#commit {
|
|
||||||
padding: 0.5em;
|
|
||||||
width: 30%;
|
|
||||||
margin: 0.3em;
|
|
||||||
float: right;
|
|
||||||
}
|
|
|
@ -1,101 +0,0 @@
|
||||||
@import url("https://cdn.jsdelivr.net/npm/hack-font@3/build/web/hack.min.css");
|
|
||||||
|
|
||||||
*,
|
|
||||||
*::before,
|
|
||||||
*::after {
|
|
||||||
font-family: sans-serif;
|
|
||||||
color: inherit;
|
|
||||||
scroll-behavior: smooth;
|
|
||||||
}
|
|
||||||
|
|
||||||
pre {
|
|
||||||
font-family: Hack, hack, monospace;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
padding: 2em;
|
|
||||||
max-width: 1600px;
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.split {
|
|
||||||
display: -ms-grid;
|
|
||||||
display: grid;
|
|
||||||
|
|
||||||
-ms-grid-columns: auto 4em auto;
|
|
||||||
grid-template-columns: auto auto;
|
|
||||||
|
|
||||||
grid-gap: 4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1,
|
|
||||||
h2 {
|
|
||||||
padding: 0.2em;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
padding-bottom: 2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nojs {
|
|
||||||
background-color: darkred !important;
|
|
||||||
padding: 1em !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nojs * {
|
|
||||||
color: whitesmoke !important;
|
|
||||||
font-weight: bold !important;
|
|
||||||
font-family: sans-serif !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.buttons {
|
|
||||||
padding: 1em;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.buttons button {
|
|
||||||
padding: 0.5em;
|
|
||||||
margin: 0.1em;
|
|
||||||
margin-bottom: 1em;
|
|
||||||
background-color: #404040;
|
|
||||||
color: #fcfcfc;
|
|
||||||
border: none;
|
|
||||||
|
|
||||||
-webkit-transition: 0.3s -webkit-filter ease-in-out;
|
|
||||||
transition: 0.3s -webkit-filter ease-in-out;
|
|
||||||
-o-transition: 0.3s filter ease-in-out;
|
|
||||||
transition: 0.3s filter ease-in-out;
|
|
||||||
transition: 0.3s filter ease-in-out, 0.3s -webkit-filter ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
button:hover,
|
|
||||||
button:focus {
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
-webkit-filter: brightness(120%);
|
|
||||||
filter: brightness(120%);
|
|
||||||
}
|
|
||||||
|
|
||||||
#menu {
|
|
||||||
text-align: center;
|
|
||||||
margin: 4em 0 4em 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#menu div input {
|
|
||||||
margin: 0.1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media only screen and (max-width: 1300px) {
|
|
||||||
.split {
|
|
||||||
display: block;
|
|
||||||
-ms-grid-columns: auto;
|
|
||||||
|
|
||||||
grid-template-columns: auto;
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 66 KiB |
139
index.html
|
@ -1,139 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>Ari::web -> Index</title>
|
|
||||||
|
|
||||||
<meta name="description" content="My personal website" />
|
|
||||||
<meta
|
|
||||||
name="keywords"
|
|
||||||
content="website, webdev, linux, programming, ari, ari-web, Ari Archer, terminal, dark, blog, javascript, opensource, free, index, comments, blogging, js, foss"
|
|
||||||
/>
|
|
||||||
<meta
|
|
||||||
name="robots"
|
|
||||||
content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"
|
|
||||||
/>
|
|
||||||
<meta property="og:type" content="website" />
|
|
||||||
|
|
||||||
<meta name="color-scheme" content="dark" />
|
|
||||||
<meta name="theme-color" content="#121212" />
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="/content/styles/generic/main.min.css" />
|
|
||||||
<link rel="stylesheet" href="/content/styles/clean/index.css" />
|
|
||||||
<link rel="stylesheet" href="/content/styles/index/index.css" />
|
|
||||||
<link rel="stylesheet" href="/content/styles/term/index.css" />
|
|
||||||
|
|
||||||
<link rel="manifest" href="/manifest.json" />
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
<!--//--><![CDATA[//><!--
|
|
||||||
/**
|
|
||||||
* @licstart The following is the entire license notice for the JavaScript
|
|
||||||
* code in this page.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2023 Ari Archer
|
|
||||||
*
|
|
||||||
* The JavaScript code in this page is free software: you can redistribute
|
|
||||||
* it and/or modify it under the terms of the GNU General Public License
|
|
||||||
* (GNU GPL) as published by the Free Software Foundation, either version 3
|
|
||||||
* of the License, or (at your option) any later version. The code is
|
|
||||||
* distributed WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU GPL
|
|
||||||
* for more details.
|
|
||||||
*
|
|
||||||
* As additional permission under GNU GPL version 3 section 7, you may
|
|
||||||
* distribute non-source (e.g., minimized or compacted) forms of that code
|
|
||||||
* without the copy of the GNU GPL normally required by section 4, provided
|
|
||||||
* you include this license notice and a URL through which recipients can
|
|
||||||
* access the Corresponding Source.
|
|
||||||
*
|
|
||||||
* @licend The above is the entire license notice for the JavaScript code
|
|
||||||
* in this page.
|
|
||||||
*/
|
|
||||||
|
|
||||||
//--><!]]>
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<script src="https://user.ari.lt/content/js/linkify.js"></script>
|
|
||||||
<script src="/content/js/config/index.js"></script>
|
|
||||||
<script src="/content/js/ui/index.js"></script>
|
|
||||||
|
|
||||||
<script src="/content/js/bday/index.js" defer></script>
|
|
||||||
<script src="/content/js/term/cmd.js" defer></script>
|
|
||||||
<script src="/content/js/term/index.js" defer></script>
|
|
||||||
<script src="/content/js/index/index.js" defer></script>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<article>
|
|
||||||
<header>
|
|
||||||
<h1>
|
|
||||||
welcome to the <a href="/git">open source</a> land of
|
|
||||||
<span id="site">...</span>, you are visitor number
|
|
||||||
<img id=visitors src="http://us.ari.lt/counter/@ari/kpnuBU0qISQlfR7cSNwwg9oW8654-RguVrXh9JOBGo3EP1-bm7aF9ROuQO6Jqesk.svg" style="display:inline;height:1em;vertical-align:top" alt="visitor count" /> !
|
|
||||||
brought to you by Ari Archer and <a href="/thanks">her supporters</a>
|
|
||||||
</h1>
|
|
||||||
|
|
||||||
<i>Here for the Matrix homeserver? See <a href="/matrix">/matrix</a></i>
|
|
||||||
|
|
||||||
<br/>
|
|
||||||
|
|
||||||
<iframe id="bucket-webring" style="width: 25%; height: 1.5rem; border: none;" src="https://webring.bucketfish.me/embed.html?name=ari dot lt"></iframe>
|
|
||||||
|
|
||||||
<br/>
|
|
||||||
|
|
||||||
<i><a href="https://webring.dinhe.net">dinhe.net webring</a> | <a href='https://webring.dinhe.net/prev/https://ari.lt/'>Previous</a> <a href='https://webring.dinhe.net/next/https://ari.lt/'>Next</a></i>
|
|
||||||
|
|
||||||
<nav class="mobile-only">
|
|
||||||
<ul>
|
|
||||||
<li><a href="#blog">latest blog posts</a></li>
|
|
||||||
<li><a href="#comments">latest comments</a></li>
|
|
||||||
<li><a href="#discover">more pages</a></li>
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<main>
|
|
||||||
<div id="blog">
|
|
||||||
<h2>latest <a id="blog-link">blog posts</a></h2>
|
|
||||||
<ul id="blog-posts">
|
|
||||||
loading blog posts ...
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<div id="comments">
|
|
||||||
<h2>latest <a id="comments-link">comments</a></h2>
|
|
||||||
<ul id="latest-comments">
|
|
||||||
loading comments ( TODO as the server is down ) ...
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="more">
|
|
||||||
<h2>discover more</h2>
|
|
||||||
<ul id="discover">
|
|
||||||
loading available pages ...
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</main>
|
|
||||||
|
|
||||||
<footer id="term-wrap" style="display: none">
|
|
||||||
<div id="term-hist"></div>
|
|
||||||
|
|
||||||
<div id="input-wrap">
|
|
||||||
$
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
placeholder="type `help` for help"
|
|
||||||
spellcheck="false"
|
|
||||||
id="term-input"
|
|
||||||
class="cmd"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
</article>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,15 +0,0 @@
|
||||||
{
|
|
||||||
"$schema": "https://json.schemastore.org/web-manifest-combined.json",
|
|
||||||
"short_name": "Ari-web",
|
|
||||||
"name": "Ari::web -> Index",
|
|
||||||
"description": "My personal website",
|
|
||||||
"icons": [{
|
|
||||||
"src": "/favicon.ico",
|
|
||||||
"sizes": "128x128",
|
|
||||||
"type": "image/png"
|
|
||||||
}],
|
|
||||||
"start_url": ".",
|
|
||||||
"display": "standalone",
|
|
||||||
"theme_color": "#fbfbfb",
|
|
||||||
"background_color": "#121212"
|
|
||||||
}
|
|
253
netlify.toml
|
@ -1,253 +0,0 @@
|
||||||
[build]
|
|
||||||
command = "make netlify"
|
|
||||||
|
|
||||||
[[redirects]]
|
|
||||||
from = "/404.html"
|
|
||||||
to = "/page/404/index.html"
|
|
||||||
status = 302
|
|
||||||
force = true
|
|
||||||
|
|
||||||
[[redirects]]
|
|
||||||
from = "/gentoo_stage3_nmor"
|
|
||||||
to = "https://mirror.eu.oneandone.net/linux/distributions/gentoo/gentoo/releases/amd64/autobuilds/current-stage3-amd64-nomultilib-openrc/"
|
|
||||||
status = 301
|
|
||||||
force = true
|
|
||||||
|
|
||||||
# used to be https://codeberg.org/Ashley/poketube
|
|
||||||
[[redirects]]
|
|
||||||
from = "/yt/*"
|
|
||||||
to = "https://www.youtube.com/:splat"
|
|
||||||
status = 302
|
|
||||||
force = true
|
|
||||||
|
|
||||||
[[redirects]]
|
|
||||||
from = "/m"
|
|
||||||
to = "/yt/watch?v=8MMa35B3HT8"
|
|
||||||
status = 302
|
|
||||||
force = true
|
|
||||||
|
|
||||||
# https://codeberg.org/teddit/teddit
|
|
||||||
[[redirects]]
|
|
||||||
from = "/r/*"
|
|
||||||
to = "https://teddit.net/r/:splat"
|
|
||||||
status = 302
|
|
||||||
force = true
|
|
||||||
|
|
||||||
[[redirects]]
|
|
||||||
from = "/api"
|
|
||||||
to = "/api/apis.json"
|
|
||||||
status = 302
|
|
||||||
force = true
|
|
||||||
|
|
||||||
# ARI-WEB-SPECIFIC #
|
|
||||||
|
|
||||||
[[redirects]]
|
|
||||||
from = "/favicon.ico"
|
|
||||||
to = "/favicons/ari-web-ukraine.ico"
|
|
||||||
status = 200
|
|
||||||
force = true
|
|
||||||
|
|
||||||
[[redirects]]
|
|
||||||
from = "/user"
|
|
||||||
to = "https://us.ari.lt/"
|
|
||||||
status = 301
|
|
||||||
force = true
|
|
||||||
|
|
||||||
[[redirects]]
|
|
||||||
from = "/git/*"
|
|
||||||
to = "/lh/ari.lt/:splat"
|
|
||||||
status = 301
|
|
||||||
force = true
|
|
||||||
|
|
||||||
[[redirects]]
|
|
||||||
from = "/dotfiles/*"
|
|
||||||
to = "/gh/dotfiles-cleaned/:splat"
|
|
||||||
status = 301
|
|
||||||
force = true
|
|
||||||
|
|
||||||
[[redirects]]
|
|
||||||
from = "/tdotfiles/*"
|
|
||||||
to = "/gh/dotfiles-termux/:splat"
|
|
||||||
status = 301
|
|
||||||
force = true
|
|
||||||
|
|
||||||
[[redirects]]
|
|
||||||
from = "/dotfile/:distro/*"
|
|
||||||
to = "/gh/dotfiles-cleaned/tree/:distro/:splat"
|
|
||||||
status = 301
|
|
||||||
force = true
|
|
||||||
|
|
||||||
[[redirects]]
|
|
||||||
from = "/overlay/*"
|
|
||||||
to = "/gh/dinolay/:splat"
|
|
||||||
status = 301
|
|
||||||
force = true
|
|
||||||
|
|
||||||
[[redirects]]
|
|
||||||
from = "/gentooatom/*"
|
|
||||||
to = "/gh/dinolay/tree/main/:splat"
|
|
||||||
status = 301
|
|
||||||
force = true
|
|
||||||
|
|
||||||
# https://answers.netlify.com/t/how-do-i-do-cross-domain-redirects-to-github-repositories-from-netlify/52258/2?u=b00bleatea
|
|
||||||
[[redirects]]
|
|
||||||
from = "/gh/*"
|
|
||||||
to = "https://github.com/TruncatedDinoSour/:splat"
|
|
||||||
status = 301
|
|
||||||
force = true
|
|
||||||
|
|
||||||
[[redirects]]
|
|
||||||
from = "/lh/*"
|
|
||||||
to = "https://github.com/ari-lt/:splat"
|
|
||||||
status = 301
|
|
||||||
force = true
|
|
||||||
|
|
||||||
## BACKWARDS COMPATIBILITY ##
|
|
||||||
|
|
||||||
[[redirects]]
|
|
||||||
from = "/data/*"
|
|
||||||
to = "https://files.ari.lt/files/:splat"
|
|
||||||
status = 301
|
|
||||||
force = true
|
|
||||||
|
|
||||||
[[redirects]]
|
|
||||||
from = "/page/blog/*"
|
|
||||||
to = "https://blog.ari.lt/:splat"
|
|
||||||
status = 301
|
|
||||||
force = true
|
|
||||||
|
|
||||||
[[redirects]]
|
|
||||||
from = "/page/blog"
|
|
||||||
to = "https://blog.ari.lt/"
|
|
||||||
status = 301
|
|
||||||
force = true
|
|
||||||
|
|
||||||
[[redirects]]
|
|
||||||
from = "/90s.html"
|
|
||||||
to = "/page/90s/index.html"
|
|
||||||
status = 301
|
|
||||||
force = true
|
|
||||||
|
|
||||||
[[redirects]]
|
|
||||||
from = "/etc"
|
|
||||||
to = "https://etc.ari.lt/"
|
|
||||||
status = 301
|
|
||||||
force = true
|
|
||||||
|
|
||||||
####################
|
|
||||||
|
|
||||||
[[redirects]]
|
|
||||||
from = "/gentoo_stage3_nmorh"
|
|
||||||
to = "https://mirror.eu.oneandone.net/linux/distributions/gentoo/gentoo/releases/amd64/autobuilds/current-stage3-amd64-hardened-nomultilib-openrc/"
|
|
||||||
status = 301
|
|
||||||
force = true
|
|
||||||
|
|
||||||
[[redirects]]
|
|
||||||
from = "/mp"
|
|
||||||
to = "https://www.youtube.com/playlist?list=PL7UuKajElTaChff3BkcJE6620lSuSUaDC"
|
|
||||||
status = 301
|
|
||||||
force = true
|
|
||||||
|
|
||||||
[[redirects]]
|
|
||||||
from = "/mr"
|
|
||||||
to = "https://blog.ari.lt/b/my-music-artist-recommendations/"
|
|
||||||
status = 301
|
|
||||||
force = true
|
|
||||||
|
|
||||||
[[redirects]]
|
|
||||||
from = "/btc"
|
|
||||||
to = "https://www.blockchain.com/explorer/addresses/btc/bc1qn3k75kmyvpw9sc58t63hk4ej4pc0d0w52tvj7w"
|
|
||||||
status = 301
|
|
||||||
force = true
|
|
||||||
|
|
||||||
[[redirects]]
|
|
||||||
from = "/xmr"
|
|
||||||
to = "https://moneroexplorer.org/search?value=451VZy8FPDXCVvKWkq5cby3V24ApLnjaTdwDgKG11uqbUJYjxQWZVKiiefi4HvFd7haeUtGFRBaxgKNTr3vR78pkMzgJaAZ"
|
|
||||||
status = 301
|
|
||||||
force = true
|
|
||||||
|
|
||||||
[[redirects]]
|
|
||||||
from = "/:page"
|
|
||||||
to = "/page/:page"
|
|
||||||
status = 302
|
|
||||||
force = false
|
|
||||||
|
|
||||||
[[redirects]]
|
|
||||||
from = "/*"
|
|
||||||
to = "/page/404/index.html"
|
|
||||||
status = 404
|
|
||||||
force = false
|
|
||||||
|
|
||||||
# Processing
|
|
||||||
[build.processing]
|
|
||||||
skip_processing = false
|
|
||||||
|
|
||||||
[build.processing.html]
|
|
||||||
pretty_urls = false
|
|
||||||
|
|
||||||
[build.processing.css]
|
|
||||||
bundle = true
|
|
||||||
minify = true
|
|
||||||
|
|
||||||
[build.processing.js]
|
|
||||||
bundle = false
|
|
||||||
minify = true
|
|
||||||
|
|
||||||
[build.processing.images]
|
|
||||||
compress = true
|
|
||||||
# --------------
|
|
||||||
|
|
||||||
[[headers]]
|
|
||||||
for = "/badge.png"
|
|
||||||
|
|
||||||
[headers.values]
|
|
||||||
Access-Control-Allow-Origin = "*"
|
|
||||||
Access-Control-Allow-Methods = "GET"
|
|
||||||
|
|
||||||
[[headers]]
|
|
||||||
for = "/api/*"
|
|
||||||
|
|
||||||
[headers.values]
|
|
||||||
Access-Control-Allow-Origin = "*"
|
|
||||||
Access-Control-Allow-Methods = "GET"
|
|
||||||
|
|
||||||
[[headers]]
|
|
||||||
for = "/api_hash/*"
|
|
||||||
|
|
||||||
[headers.values]
|
|
||||||
Access-Control-Allow-Origin = "*"
|
|
||||||
Access-Control-Allow-Methods = "GET"
|
|
||||||
|
|
||||||
[[headers]]
|
|
||||||
for = "/.well-known/network/*"
|
|
||||||
|
|
||||||
[headers.values]
|
|
||||||
Access-Control-Allow-Origin = "*"
|
|
||||||
Access-Control-Allow-Methods = "GET"
|
|
||||||
Content-Type = "application/json"
|
|
||||||
|
|
||||||
[[headers]]
|
|
||||||
for = "/.well-known/matrix/*"
|
|
||||||
|
|
||||||
[headers.values]
|
|
||||||
Access-Control-Allow-Origin = "*"
|
|
||||||
Access-Control-Allow-Methods = "GET"
|
|
||||||
Content-Type = "application/json"
|
|
||||||
|
|
||||||
[[headers]]
|
|
||||||
for = "/.well-known/*"
|
|
||||||
|
|
||||||
[headers.values]
|
|
||||||
Access-Control-Allow-Origin = "*"
|
|
||||||
Access-Control-Allow-Methods = "GET"
|
|
||||||
|
|
||||||
[[headers]]
|
|
||||||
for = "/*"
|
|
||||||
|
|
||||||
[headers.values]
|
|
||||||
Strict-Transport-Security = "max-age=63072000; includeSubDomains; preload"
|
|
||||||
X-Frame-Options = "deny"
|
|
||||||
X-Content-Type-Options = "nosniff"
|
|
||||||
Content-Security-Policy = "upgrade-insecure-requests"
|
|
||||||
X-Permitted-Cross-Domain-Policies = "none"
|
|
||||||
Referrer-Policy = "no-referrer"
|
|
11098
package-lock.json
generated
37
package.json
|
@ -1,37 +0,0 @@
|
||||||
{
|
|
||||||
"name": "ari.lt",
|
|
||||||
"version": "1.0.0",
|
|
||||||
"description": "My website's source code",
|
|
||||||
"scripts": {
|
|
||||||
"serve": "live-server --no-browser",
|
|
||||||
"build": "./scripts/build.sh"
|
|
||||||
},
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://ari.lt/gh/website.git"
|
|
||||||
},
|
|
||||||
"keywords": [
|
|
||||||
"website",
|
|
||||||
"terminal",
|
|
||||||
"ari-web",
|
|
||||||
"linux",
|
|
||||||
"shell",
|
|
||||||
"javascript",
|
|
||||||
"dark",
|
|
||||||
"sass"
|
|
||||||
],
|
|
||||||
"author": "Ari Archer <ari.web.xyz@gmail.com>",
|
|
||||||
"license": "SEE LICENSE IN LICENSE",
|
|
||||||
"bugs": {
|
|
||||||
"url": "https://ari.lt/git/issues"
|
|
||||||
},
|
|
||||||
"homepage": "https://ari.lt/git#readme",
|
|
||||||
"devDependencies": {
|
|
||||||
"autoprefixer-cli": "^1.0.0",
|
|
||||||
"eslint": "^8.14.0",
|
|
||||||
"html-minifier": "^4.0.0",
|
|
||||||
"live-server": "^1.2.2",
|
|
||||||
"node-sass": "^7.0.1",
|
|
||||||
"uglify-js": "^3.17.1"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,56 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>Ari::web -> 404</title>
|
|
||||||
|
|
||||||
<meta name="description" content="My personal website" />
|
|
||||||
<meta
|
|
||||||
name="keywords"
|
|
||||||
content="website, webdev, linux, programming, ari, terminal, dark, 404, not found, http 404"
|
|
||||||
/>
|
|
||||||
<meta
|
|
||||||
name="robots"
|
|
||||||
content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<meta property="og:type" content="website" />
|
|
||||||
<meta name="color-scheme" content="dark" />
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="/content/styles/generic/main.min.css" />
|
|
||||||
<link rel="stylesheet" href="/content/styles/404/index.css" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<h1 class="title">HTTP/404 ~ not found</h1>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
it was a beautiful day, and i decided to take a walk in the park, i
|
|
||||||
had my phone with me, and i thought it would be a great idea to
|
|
||||||
browse the internet while walking,
|
|
||||||
<a href="#!">i clicked on a link</a>, and suddenly, i found myself
|
|
||||||
lost !! the page i was looking for was not found, and i was stuck on
|
|
||||||
an HTTP/404 error page :( i tried to refresh the page, but it didnt
|
|
||||||
work, i felt lost and frustrated ...
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
as i walked around, i realized that i was actually lost in the park
|
|
||||||
! i had no idea where i was and i had no way of finding my way back,
|
|
||||||
i felt scared and alone, i wished i had paid more attention to my
|
|
||||||
surroundings instead of being so engrossed in my phone ...
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
i eventually found my <a href="/">way back</a>, but the experience
|
|
||||||
left me feeling emotional and sad, it made me realize how much we
|
|
||||||
rely on technology and how it can lead us astray :O from that day
|
|
||||||
on, i promised myself to be more present in the moment and not let
|
|
||||||
technology take over my life
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<img id=visitors src="http://us.ari.lt/counter/@ari/kpnuBU0qISQlfR7cSNwwg9oW8654-RguVrXh9JOBGo3EP1-bm7aF9ROuQO6Jqesk.svg" style="display:inline;height:1em;vertical-align:top" alt="visitor count" />
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,415 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
||||||
<!-- <meta name="viewport" content="width=device-width, initial-scale=1.0" /> -->
|
|
||||||
<title>Ari::web -> 90s</title>
|
|
||||||
|
|
||||||
<meta name="description" content="Ari-web if it was made in the 90s" />
|
|
||||||
<meta
|
|
||||||
name="keywords"
|
|
||||||
content="90s, ari-web, ari, ari archer, blog, design, ari web"
|
|
||||||
/>
|
|
||||||
<meta
|
|
||||||
name="robots"
|
|
||||||
content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"
|
|
||||||
/>
|
|
||||||
<meta property="og:type" content="website" />
|
|
||||||
|
|
||||||
<link rel="manifest" href="/manifest.json" />
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="/content/styles/90s/styles.css" />
|
|
||||||
|
|
||||||
<base target="_blank" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<h1><marquee>Ari-web!!</marquee></h1>
|
|
||||||
<h1>
|
|
||||||
This page has been started on 2022-09-03 for
|
|
||||||
<img id=visitors src="http://us.ari.lt/counter/@ari/kpnuBU0qISQlfR7cSNwwg9oW8654-RguVrXh9JOBGo3EP1-bm7aF9ROuQO6Jqesk.svg" style="display:inline;height:1em;vertical-align:top" alt="visitor count" />
|
|
||||||
people to see
|
|
||||||
</h1>
|
|
||||||
|
|
||||||
<div class="split">
|
|
||||||
<div>
|
|
||||||
<h2>Welcome to ari-web!!1!!11111111111;1!!</h2>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Hi queen, this is one of my webpages :D, I do stuff here ig
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h2>Who even are you?</h2>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
I'm Ari, an open source LGBT Lithuanian developer, I like
|
|
||||||
playing with code, It's my hobby, I also like cooking ig :)
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h2>Kay, so, what is this</h2>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
So basically, ari-web started as a personal site (well still
|
|
||||||
is), then it grew into a bigger project and it keeps groing
|
|
||||||
every day by me adding more features, pages and subdomains
|
|
||||||
to consume, add and modify content on!
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h2>Nono, what is *THIS*</h2>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Oh, this, idk tbh, I just wanted to make something for me to
|
|
||||||
have fun with, decided on a 90s aesthetic page, I got
|
|
||||||
everything from the bad HTML, CSS and colours to scrolling
|
|
||||||
text and even web buttons at the bottom of the page, the
|
|
||||||
footer
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h2>Nice, so what's up with the sidebar</h2>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
It's just a fun thing ig, actually has a lot of content
|
|
||||||
ari-web provides in there, might want to check it out, also
|
|
||||||
has some contanct information just in case you might want to
|
|
||||||
contact me
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h2>Anything else?</h2>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Nah, not really, I might update this page by adding some
|
|
||||||
events and shit xD
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<br />
|
|
||||||
<hr />
|
|
||||||
<br />
|
|
||||||
|
|
||||||
<h2>2022-05-30: A shitton of people visiting my website</h2>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
I even made a blog abt it
|
|
||||||
<a
|
|
||||||
href="https://blog.ari.lt/b/wtf-is-going-on-and-why-is-my-site-blowing-up/"
|
|
||||||
>here</a
|
|
||||||
>, was very exciting ig lol
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<h1>Pages and stuff</h1>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><a href="https://ari.lt/">Main page</a></li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<a href="https://blog.ari.lt/">Blog</a>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<a href="https://legacy.blog.ari.lt/"
|
|
||||||
>Legacy blog</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<a href="https://user.ari.lt/"
|
|
||||||
>Comments and opinions!11</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<a href="https://school.ari.lt/"
|
|
||||||
>School shit (very bad and cringe, also not GPL nor
|
|
||||||
foss!)</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<a href="https://files.ari.lt/"
|
|
||||||
>File hosting index :D</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<a href="https://etc.ari.lt/">Random stuff</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p>Contact me :D</p>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<a href="mailto:ari.web.xyz@gmail.com"
|
|
||||||
>E-mail</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="/gh">GitHub</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<p>
|
|
||||||
Plus I'm always going to answer in CaO
|
|
||||||
(Comments and opinions)
|
|
||||||
</p>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p>Source code</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<a href="https://ari.lt/git">Main page</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<a href="https://blog.ari.lt/git">Blog</a>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<a
|
|
||||||
href="https://legacy.blog.ari.lt/git"
|
|
||||||
>Legacy blog</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<a href="https://user.ari.lt/git"
|
|
||||||
>Comments and opinions!11</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<a href="https://files.ari.lt/git"
|
|
||||||
>File hosting index :D</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<a href="https://etc.ari.lt/git"
|
|
||||||
>Random stuff</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p>Pages</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><a href="/api">API</a></li>
|
|
||||||
<li><a href="/amiunique">Am I unique quiz</a></li>
|
|
||||||
<li>
|
|
||||||
<a href="/minimal.txt"
|
|
||||||
>Minimal and old deprecated text-based
|
|
||||||
page</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li><a href="/novpn">NoVPN</a></li>
|
|
||||||
<li><a href="/reset">Account reset</a></li>
|
|
||||||
<li>
|
|
||||||
<a href="/ttytheme"
|
|
||||||
>TTY theme generator for Loonix
|
|
||||||
<img
|
|
||||||
src="https://cdn.emojidex.com/emoji/hdpi/Tux.png"
|
|
||||||
/></a>
|
|
||||||
</li>
|
|
||||||
<li><a href="/be">Build error submission</a></li>
|
|
||||||
<li><a href="/info">Important ari-web info</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p>/dev/urandom</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><a href="/yt">A FOSS youtube solution</a></li>
|
|
||||||
<li><a href="/r">A FOSS reddit solution</a></li>
|
|
||||||
<li>
|
|
||||||
<a href="/favicon.ico"
|
|
||||||
>The icon!
|
|
||||||
<img src="/favicon.ico" width="30px"
|
|
||||||
/></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<p>Dotfiles</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<a href="/dotfiles"
|
|
||||||
>Current desktop dotfiles</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="/tdotfiles"
|
|
||||||
>Current mobile dotfiles</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="/overlay">Gentoo GNU/Linux overlay</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<p>Gentoo stage3s</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<a href="/gentoo_stage3_nmorh"
|
|
||||||
>Gentoo stage3 no-multilib OpenRC
|
|
||||||
(hardened)</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="/gentoo_stage3_nmor"
|
|
||||||
>Gentoo stage3 no-multilib OpenRC
|
|
||||||
(normal)</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<a href="/mp">Music playlist</a>
|
|
||||||
<ul>
|
|
||||||
<li><a href="/m">Favourite song</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<a
|
|
||||||
href="https://hstspreload.org/?domain=ari.lt"
|
|
||||||
>Yay! HSTS</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p>Favicons</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<a href="/favicons/ari-web-easter.ico"
|
|
||||||
>Easter</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="/favicons/ari-web-lgbt.ico"
|
|
||||||
>LGBT</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="/favicons/ari-web-normal.ico"
|
|
||||||
>Normal</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="/favicons/ari-web-ukraine.ico"
|
|
||||||
>Ukraine</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="/favicons/ari-web-hw.ico"
|
|
||||||
>Halloween</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a
|
|
||||||
href="/favicons/ari-web-christmas.ico"
|
|
||||||
>Christmas</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="/favicons/ari-web-love.ico"
|
|
||||||
>Love/valetine's day</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="/favicons/ari-web-down.ico"
|
|
||||||
>Down syndrome awareness day</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="/favicons/ari-web-blm.ico"
|
|
||||||
>Black lives matter</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p>Important stuff ig</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><a href="/LICENSE">License</a></li>
|
|
||||||
<li><a href="/robots.txt">Robots</a></li>
|
|
||||||
<li><a href="/sitemap.xml">Sitemap</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p>
|
|
||||||
More coming soon if I find it enough to index it
|
|
||||||
here
|
|
||||||
</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<!-- END -->
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<footer class="center">
|
|
||||||
<p>
|
|
||||||
<img
|
|
||||||
src="https://raw.githubusercontent.com/ro1y/88x31s/master/100hot%202.gif"
|
|
||||||
alt="100hot"
|
|
||||||
/>
|
|
||||||
<img
|
|
||||||
src="https://raw.githubusercontent.com/ro1y/88x31s/master/2cows.gif"
|
|
||||||
alt="2cows"
|
|
||||||
/>
|
|
||||||
<img
|
|
||||||
src="https://upload.wikimedia.org/wikipedia/commons/9/93/GPLv3_Logo.svg"
|
|
||||||
width="68px"
|
|
||||||
alt="GPLv3"
|
|
||||||
/>
|
|
||||||
<img
|
|
||||||
src="https://raw.githubusercontent.com/ro1y/88x31s/master/88x31_kill9.png"
|
|
||||||
alt="kill9"
|
|
||||||
/>
|
|
||||||
<img
|
|
||||||
src="https://raw.githubusercontent.com/ro1y/88x31s/master/acab2.gif"
|
|
||||||
alt="ACAB"
|
|
||||||
/>
|
|
||||||
<img
|
|
||||||
src="https://raw.githubusercontent.com/ro1y/88x31s/master/any88x31.gif"
|
|
||||||
alt="AnyBrowser"
|
|
||||||
/>
|
|
||||||
<img
|
|
||||||
src="https://raw.githubusercontent.com/ro1y/88x31s/master/clobber.gif"
|
|
||||||
alt="Smile"
|
|
||||||
/>
|
|
||||||
<img
|
|
||||||
src="https://raw.githubusercontent.com/ro1y/88x31s/master/coke.png"
|
|
||||||
alt="Coca-Cola"
|
|
||||||
/>
|
|
||||||
<img
|
|
||||||
src="https://kitecreature.net/assets/images/88x31/roly-saynotoweb3.gif"
|
|
||||||
alt="KeepTheWebFree"
|
|
||||||
/>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h2>
|
|
||||||
Thank u
|
|
||||||
<a href="https://kitecreature.net/" target="_blank">roly</a>
|
|
||||||
for the buttons <3
|
|
||||||
</h2>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,119 +0,0 @@
|
||||||
<!doctype html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>Ari::web -> UniquenessTest</title>
|
|
||||||
|
|
||||||
<meta
|
|
||||||
name="description"
|
|
||||||
content="How unique are you -- test by Ari::web"
|
|
||||||
/>
|
|
||||||
<meta
|
|
||||||
name="keywords"
|
|
||||||
content="personality, unique, rareness, personal, percent, math, test, tests, quiz"
|
|
||||||
/>
|
|
||||||
<meta
|
|
||||||
name="robots"
|
|
||||||
content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<meta property="og:type" content="website" />
|
|
||||||
<meta name="color-scheme" content="dark" />
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="/content/styles/clean/index.css" />
|
|
||||||
<link rel="stylesheet" href="/content/styles/amiunique/index.css" />
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
<!--//--><![CDATA[//><!--
|
|
||||||
/**
|
|
||||||
* @licstart The following is the entire license notice for the JavaScript
|
|
||||||
* code in this page.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2022 Ari Archer
|
|
||||||
*
|
|
||||||
* The JavaScript code in this page is free software: you can redistribute
|
|
||||||
* it and/or modify it under the terms of the GNU General Public License
|
|
||||||
* (GNU GPL) as published by the Free Software Foundation, either version 3
|
|
||||||
* of the License, or (at your option) any later version. The code is
|
|
||||||
* distributed WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU GPL
|
|
||||||
* for more details.
|
|
||||||
*
|
|
||||||
* As additional permission under GNU GPL version 3 section 7, you may
|
|
||||||
* distribute non-source (e.g., minimized or compacted) forms of that code
|
|
||||||
* without the copy of the GNU GPL normally required by section 4, provided
|
|
||||||
* you include this license notice and a URL through which recipients can
|
|
||||||
* access the Corresponding Source.
|
|
||||||
*
|
|
||||||
* @licend The above is the entire license notice for the JavaScript code
|
|
||||||
* in this page.
|
|
||||||
*/
|
|
||||||
|
|
||||||
//--><!]]>
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<script
|
|
||||||
type="module"
|
|
||||||
src="/content/js/amiunique/index.js"
|
|
||||||
defer
|
|
||||||
></script>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<article>
|
|
||||||
<header>
|
|
||||||
<h1>How unique are you statistically?</h1>
|
|
||||||
<h2>
|
|
||||||
Test by Ari::web for over
|
|
||||||
<img
|
|
||||||
id="visitors"
|
|
||||||
src="http://us.ari.lt/counter/@ari/kpnuBU0qISQlfR7cSNwwg9oW8654-RguVrXh9JOBGo3EP1-bm7aF9ROuQO6Jqesk.svg"
|
|
||||||
style="
|
|
||||||
display: inline;
|
|
||||||
height: 1em;
|
|
||||||
vertical-align: top;
|
|
||||||
"
|
|
||||||
alt="visitor count"
|
|
||||||
/>
|
|
||||||
people to see
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
None of your information is going to be stored, sent or seen
|
|
||||||
by anyone but you, this test is fully anonymous and
|
|
||||||
client-side only, if you don't want to trust me,
|
|
||||||
<a href="/git">the source code is open!</a>
|
|
||||||
Also it would be nice if you contributed and added more
|
|
||||||
questions :) see <code>options.js</code> file in
|
|
||||||
/content/js/amiunique/options.js
|
|
||||||
</p>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<main>
|
|
||||||
<noscript>
|
|
||||||
<h1>
|
|
||||||
This test requires
|
|
||||||
<a href="https://www.enable-javascript.com/"
|
|
||||||
>JavaScript to be enabled</a
|
|
||||||
>, if you just don't trust me, see the paragraph above
|
|
||||||
</h1>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
#test {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</noscript>
|
|
||||||
|
|
||||||
<div id="test">
|
|
||||||
<div id="unique-test"></div>
|
|
||||||
<button id="unique-test-submit">
|
|
||||||
Calculate my results
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</main>
|
|
||||||
</article>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,78 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>Ari::web -> Be</title>
|
|
||||||
|
|
||||||
<meta name="description" content="Error submission forms for ABOT" />
|
|
||||||
<meta
|
|
||||||
name="keywords"
|
|
||||||
content="ari, ari-web, form, page-form, android, linux, google, be, build error, building, error"
|
|
||||||
/>
|
|
||||||
<meta
|
|
||||||
name="robots"
|
|
||||||
content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"
|
|
||||||
/>
|
|
||||||
<meta property="og:type" content="website" />
|
|
||||||
|
|
||||||
<meta name="color-scheme" content="dark" />
|
|
||||||
<meta name="theme-color" content="#181818" />
|
|
||||||
|
|
||||||
<link rel="manifest" href="/manifest.json" />
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="/content/styles/clean/index.css" />
|
|
||||||
<link rel="stylesheet" href="/content/styles/be/index.css" />
|
|
||||||
<link rel="stylesheet" href="/content/styles/noscript/index.css" />
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
<!--//--><![CDATA[//><!--
|
|
||||||
/**
|
|
||||||
* @licstart The following is the entire license notice for the JavaScript
|
|
||||||
* code in this page.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2022 Ari Archer
|
|
||||||
*
|
|
||||||
* The JavaScript code in this page is free software: you can redistribute
|
|
||||||
* it and/or modify it under the terms of the GNU General Public License
|
|
||||||
* (GNU GPL) as published by the Free Software Foundation, either version 3
|
|
||||||
* of the License, or (at your option) any later version. The code is
|
|
||||||
* distributed WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU GPL
|
|
||||||
* for more details.
|
|
||||||
*
|
|
||||||
* As additional permission under GNU GPL version 3 section 7, you may
|
|
||||||
* distribute non-source (e.g., minimized or compacted) forms of that code
|
|
||||||
* without the copy of the GNU GPL normally required by section 4, provided
|
|
||||||
* you include this license notice and a URL through which recipients can
|
|
||||||
* access the Corresponding Source.
|
|
||||||
*
|
|
||||||
* @licend The above is the entire license notice for the JavaScript code
|
|
||||||
* in this page.
|
|
||||||
*/
|
|
||||||
|
|
||||||
//--><!]]>
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<script src="/content/js/be/index.js" defer></script>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<h1>
|
|
||||||
Please stand by while I'm fetching the required data...
|
|
||||||
<noscript>
|
|
||||||
<span ns>Failed, no JavaScript enabled</span>
|
|
||||||
</noscript>
|
|
||||||
</h1>
|
|
||||||
|
|
||||||
<noscript>
|
|
||||||
<div nsb ns>Don't trust me? <a href="/git">The code is FOSS</a></div>
|
|
||||||
</noscript>
|
|
||||||
|
|
||||||
<h2>
|
|
||||||
If this takes too long please check the dev tools using CTRL + SHIFT
|
|
||||||
+ I and opening the console, you are visitor <img id=visitors src="http://us.ari.lt/counter/@ari/kpnuBU0qISQlfR7cSNwwg9oW8654-RguVrXh9JOBGo3EP1-bm7aF9ROuQO6Jqesk.svg" style="display:inline;height:1em;vertical-align:top" alt="visitor count" />
|
|
||||||
</h2>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,54 +0,0 @@
|
||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
||||||
Comment: 4FAD 63E9 36B3 0590 6A6C 4894 A50D 5B4B 599A F8A2
|
|
||||||
Comment: Ari Archer (Ari Archer's GPG key pair) <ari@ari.lt>
|
|
||||||
|
|
||||||
xsFNBGGRbl4BEADDr+J9MKZLpaBBJUnv6UJU4WeplHaSTEUU5250TUtF4rl5frdv
|
|
||||||
VcCuM8RjghIhf+WfZyifD2OGXWd7Mmxx8luDVoYLpUtEir3M0GqeWyyUJI+euNNC
|
|
||||||
Nu7nGSullIta0xb09pST1epS2OEVmIG45YJKOuVmBogjld4miXX+tyUyVpukpgoK
|
|
||||||
6ixd3KhB2e944dED2sNPi4Gh1bqu0Na9fHf6osak5QRZ0SvEoDTZs711LHfd1pBA
|
|
||||||
aY5WO625Lx+jvWNkK70BglKqSTriZE780S7amw+x+O53cpM799Suc+7nl8PPT5C8
|
|
||||||
V+g1H6xES2DDCbpIw8yXfQk9dN+xVfnGOWgsI6gLjCNtBmDB5WSYhSsUYvOSKi6y
|
|
||||||
D8bcy4NXkZD2443kVDEBP4OxWAZT9fXKRN2G6h9c6XPZ2Cbr8hiiBogVsvpGK22H
|
|
||||||
6pf/53zgod6PSJ/3GxnHVARNZt0qdif/TpWmjBCjSQt++aouQuivkdKD4jKbZGZg
|
|
||||||
gIx+gnBQyRs4UB8+xRQNoLb/P2zVFAmGCa4ksXBbPVj6sO7BZp9NpYRXdq4zQ63x
|
|
||||||
/gKW0higCfnRoNAaSumn3wuj+OGmWYTh6XZSQ6qE/25aN3HLKVcljFK6VPLV55aw
|
|
||||||
+XZAUNKzgG6GCZCTv2gavfSJJjwE/EO6ckcv+tJ/ulEnGo/pGQszGH0pPwARAQAB
|
|
||||||
zTNBcmkgQXJjaGVyIChBcmkgQXJjaGVyJ3MgR1BHIGtleSBwYWlyKSA8YXJpQGFy
|
|
||||||
aS5sdD7CwZEEEwEIADsWIQRPrWPpNrMFkGpsSJSlDVtLWZr4ogUCZd5LcwIbAwUL
|
|
||||||
CQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAKCRClDVtLWZr4ogJXD/9zSv8oKfOo
|
|
||||||
EqlreluHHl1uFy44JA/1L/hks4+wGy32iCpey9f3dLLUWWAGqnbouvxImvKcduNE
|
|
||||||
hCs4xGBCYMTrGwBLcuBJ3/rEqZcf5nUvX91L29uafiMs/Vdsyhl+vdkZnZMCHYJ/
|
|
||||||
k7tz7K34ZFFgWWrurZrDTE/HsmYnoyayGcvNqvP5ry9giEU+4nbQX5r+FZTgD6Aa
|
|
||||||
AD+lCtPjmChUi8BHVGqN8LBkCGwlmCkUWcKCDBNpEGV2TiBqwbLVK7UOtKIxBCL6
|
|
||||||
TeWBfFkTAt8dicX/Y9cQdENMZF5btOfYlB72kM54MZFX3OeJT2zRrl3Zyj7OsXPM
|
|
||||||
IyDBXHkiouFY3nwqmvU4e6tJ68OA7igRjw6l6KqdtsJIUkg6b80tQJyILBkFxfUR
|
|
||||||
Slmc85O1bxIzkSrSe/xQjtGPIFtX9z9M5Y29EUrQA5Kkwqjm18jY/q67KZsLCCYP
|
|
||||||
HKGYsQK8ATTXBu1oFF+j3U4XAXBjZQykuweqaG6ia2IxsNIO3s/jpwomPcqdMmK7
|
|
||||||
yknXWLw30QjYI61J3CAyhZSe55ygsUtj50fs1mAAIiJa7Q1hLxGBZkx5pWZ9v65q
|
|
||||||
dajDoNM7NlXyLqc8Ip3n79ewxNduefdCIXtDbXKjzFPCxJundLRJ7QGsDvUkw1J+
|
|
||||||
XsnPppvn8ZGNq/5tW0zoN9AjJU40xUkmKs7BTQRhkW5eARAApX+rTwmC18YlSOGx
|
|
||||||
BHxNN74/FOHBcImvvud8xZEWHYzaZNwELji0CqaUDY+0qkeKEPi3qCy+r1uKs+bM
|
|
||||||
ENCg6EMVTbgNaYaViat8ZW+oDWLwRJRFPrI/ALByDi0CxJ9zws9V46fiM+K7B2xa
|
|
||||||
VUxJErLPWfDzc8PeKNYEul3LzHTmi2R2sbd3K/9P/5j0MiUiZSO+piyZGKbcP0pI
|
|
||||||
rm1elPvbP15U0YDuh2KcqDLNwgKAUxopmevu6DeN9BzaeSZhX1ixBOZMsCT1zXdO
|
|
||||||
VLIPZ+9IZJTiJTO+zihzRvyu0P1K+w2yRk7p2oHNgvLWl8cTyaWPAIzFhWfeSEkt
|
|
||||||
rsUVA2lFdXv1hDFLR/L6tz18fuvUoTrBSqrL2WSYjoTCyC8fyRJFRquqJ+38n3Kv
|
|
||||||
tNHvwrZQaNLziH8JqJxVrCnLm9LsGWjdb8tc2xMV8kmfbPIUu4WrbGEy6H92VvV5
|
|
||||||
0sE7HluHWCLeshl/OQIi1ECD5yTdcniH0hJXLO28yZydl8i4ft4lF9WF6nZD/xpy
|
|
||||||
ZsqgFS3e3rbGJnmO5NMWgng3uNv2pAH/N9xe7e9npVT5qI6NhQ6Wyf4Ujkqp9Bb7
|
|
||||||
gmHAPrtx8F5KU0opDnwPA+bJhZplGbDCE6bvGII469+aGYDi4ldFx2oPrYx2u8lm
|
|
||||||
W4X2lrHbBHrB6GHs+8d8/nyx11MAEQEAAcLBdgQYAQgAIBYhBE+tY+k2swWQamxI
|
|
||||||
lKUNW0tZmviiBQJhkW5eAhsMAAoJEKUNW0tZmviii8kP/12/xEoiPIGL2bhOS9RU
|
|
||||||
6eAESrl6nMfQlN6p65blVu0l5Zo5XLMRAqO6LhBt3OsdBl6zjHdHeAoTnmBqhyVl
|
|
||||||
wWMtyxs1KFEBzgzVEgq1Be3BFeSYu7jJA1XdJ4xOY70kJuYD5O8agCt5AsvF3Oj3
|
|
||||||
44bskb+A5SKi7UpYnnhOukNjrjF1rMWg8FEK2DBQiDjaIBtn8hLrpb8S4V7vhac/
|
|
||||||
cCmrUjDRQH4y5J3atlhKnpsQehpgfWI/5fq8m/fG0exoQfjtbfA/B1IvPpaJly0v
|
|
||||||
vNBDU+Y6jCX99CGxmU/IkGN/jeo+mqlVpE9Z4pBfI6PVjRJLztEQF7SLlqk1fM5N
|
|
||||||
2XEcijZpUWZLWF6VP6FGL6Vji94MBHqh1fZyAMjTcIf7rDC1SwYHwRn2F/g1kCHu
|
|
||||||
UEKZDgH8VcNmdJH98H4GdTru8DYV3ozF2ka7c12qpgmsUmMgkFJ2/nU4W9MTUr7Y
|
|
||||||
pjNvWLppgLdp7GEpg9E7JUdrMjCN+aZuKwVryUZohmTaRQEUjKkrWnTJ2iSt1oub
|
|
||||||
lqipwox5nmtZ2Ys1KBulkheaojLxMCCMlog/gJDjfkj+mbnoBGkLDbH0zaRmRp64
|
|
||||||
RkuPuqecrfZg7+UaZWabDGygu7rvO0T94AmDYPjAoYsrkjP19Rv/ozOV/1qvVipg
|
|
||||||
Rw0eY9UCvFf6RCIXT3ZOBR1V
|
|
||||||
=1eAh
|
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
|
@ -1,100 +0,0 @@
|
||||||
<!doctype html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>Warrant canary of ari.lt</title>
|
|
||||||
|
|
||||||
<meta name="description" content="The warrant canary of ari.lt" />
|
|
||||||
<meta
|
|
||||||
name="keywords"
|
|
||||||
content="warrant canary, communications service provider, secret government subpoena, transparency report, user data, government agency orders, warrants, subpoenas, government notices, confidential information, encryption keys, seizures, non-voluntary physical visits, law enforcement, gag orders, government surveillance tools, digital privacy, legal process, legitimation, unpublication, gpg signature, ari archer, ari-web, ari.lt"
|
|
||||||
/>
|
|
||||||
<meta
|
|
||||||
name="robots"
|
|
||||||
content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"
|
|
||||||
/>
|
|
||||||
<meta property="og:type" content="website" />
|
|
||||||
|
|
||||||
<meta name="color-scheme" content="dark" />
|
|
||||||
<meta name="theme-color" content="black" />
|
|
||||||
|
|
||||||
<link rel="manifest" href="/manifest.json" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<p>
|
|
||||||
A warrant canary is a method by which a communications service
|
|
||||||
provider reveals that it has been served with a secret government
|
|
||||||
subpoena, despite legal prohibitions against acknowledging the
|
|
||||||
existence of the subpoena. It publishes a regular transparency
|
|
||||||
report (the "canary") declaring that it has not received any such
|
|
||||||
subpoenas; if the report stops being published, users are left to
|
|
||||||
assume they have received such a subpoena.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>As of 2024-05-16, I declare the following:</p>
|
|
||||||
|
|
||||||
<ol>
|
|
||||||
<li>
|
|
||||||
Up until now, in the lifespan of ari.lt, we have not received
|
|
||||||
nor complied with any government agency orders to disclose user
|
|
||||||
data hosted on our servers.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
No warrants, subpoenas, or other government notices have been
|
|
||||||
served to us that compels us to disclose any confidential
|
|
||||||
information connected with our services, inclusive of the
|
|
||||||
sharing of the encryption keys.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
There have been no seizures or non-voluntary physical visits or
|
|
||||||
intrusions by law enforcement or government officials which
|
|
||||||
would affect the confidentiality of user data or interfere with
|
|
||||||
our services.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
We have not been subject to any gag orders which would prevent
|
|
||||||
us from stating that we have received legal process seeking
|
|
||||||
access to user data, nor have we been forced to install any
|
|
||||||
government surveillance tools onto our systems.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
If this message is not updated or removed it means that all the
|
|
||||||
above statements continue to be true.
|
|
||||||
</li>
|
|
||||||
</ol>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
We are dedicated to safeguarding the digital privacy and rights of
|
|
||||||
our users. If any of the above points is no longer true, we will
|
|
||||||
take down this message. While we cannot legally comment on the
|
|
||||||
received orders as directed by a court, the removal of this warrant
|
|
||||||
canary would indicate to users that a form of legal process has been
|
|
||||||
served.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Note: This warrant canary carries legitimation only up until the
|
|
||||||
unpublication of the statement or if it hasn't been updated in more
|
|
||||||
than <b>3 months</b>. A removal of this statement would be indicative of
|
|
||||||
instant expiry. The statements made do not include any personal
|
|
||||||
qualities of predictability and do not carry any future
|
|
||||||
implications.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>Last-updated: 2024-05-16 (see GPG signature)</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Signed-off-by: Ari Archer <<a href="mailto:ari@ari.lt"
|
|
||||||
>ari@ari.lt</a
|
|
||||||
>> using the GPG key
|
|
||||||
<a href="/page/canary/4FAD63E936B305906A6C4894A50D5B4B599AF8A2.asc"
|
|
||||||
>4FAD63E936B305906A6C4894A50D5B4B599AF8A2</a
|
|
||||||
>
|
|
||||||
with the signature
|
|
||||||
<a href="/page/canary/index.html.asc">index.html.asc</a>.
|
|
||||||
</p>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,16 +0,0 @@
|
||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
|
|
||||||
iQIzBAABCAAdFiEET61j6TazBZBqbEiUpQ1bS1ma+KIFAmZF+NMACgkQpQ1bS1ma
|
|
||||||
+KKZoQ/9GBp7qJu8Vq0xCK9duXWq73Rsy10nnAymSFd3a+h0qPxOz9Pgm7G3IXz5
|
|
||||||
q6o+gGi5U93RcW+N5HT4nW4Q31cb6hnqVWoue7E0sHe3OPE3yolWhoz22ZCIAr6k
|
|
||||||
g5+GFYvs4W+PyqTUd4cfy1FA9diIAU5IHPBcsFQZ64MYpxD5ewB6KUnE6Pcw+Slf
|
|
||||||
V+OutO6fV8Rjp2Stm0tyl3gxyQr+9blvzha3BKq6KARMyCDsQvaJbcvewqzryFd7
|
|
||||||
udSvFPZp5oCkAz0oYKG4+MUcPE3qrwWCmQc4fmbEc6Yu2BujHC1iKHmkt+aSN/8I
|
|
||||||
Sehiy5s+WVxJQ0Ybb9F3Yo7zlrNABM9OWZZQxlqgATpsA90fwElwcwvojFWRGvqn
|
|
||||||
9g8zWjj6/iKsL8hISRruvoEZBPHq3vlwUw7Cc+lyol6yDS4UukgfKVGI5xPZuory
|
|
||||||
gXBCbrjklwCF6xJbac6hCJ/t81cmqv02yo7i6YoEPVAW/PVs1ZFIOjY/bIfR1erk
|
|
||||||
P/RJCgdufKBx+h1RiGBUWkLgUX/03vWShrrYWTgxXSrF/O2KN2JA+9QZu46+1huA
|
|
||||||
GXfS9XeTUr35YaX1oGIPX6Gh4AxenwUX3CYpxu1syOKftRh+IEEDDwZh7vWMd2IA
|
|
||||||
KBgsqgDD8XTMXdSpQKd8WIuKYAvCHO/yPWE0R0Hw3uhIE1mLtpI=
|
|
||||||
=+TZ+
|
|
||||||
-----END PGP SIGNATURE-----
|
|
|
@ -1,10 +0,0 @@
|
||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
main() {
|
|
||||||
gpg --detach-sign --armor index.html
|
|
||||||
gpg --verify index.html.asc
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
|
@ -1,120 +0,0 @@
|
||||||
<!doctype html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>Ari::web -> Casey</title>
|
|
||||||
|
|
||||||
<meta name="description" content="dear casey," />
|
|
||||||
<meta name="keywords" content="ari, ari archer, best friend, friendship, online mother, thanks, gratitude, love, ari-web" />
|
|
||||||
<meta
|
|
||||||
name="robots"
|
|
||||||
content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"
|
|
||||||
/>
|
|
||||||
<meta property="og:type" content="website" />
|
|
||||||
|
|
||||||
<meta name="color-scheme" content="dark" />
|
|
||||||
<meta name="theme-color" content="#181818" />
|
|
||||||
|
|
||||||
<link rel="manifest" href="/manifest.json" />
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="/content/styles/clean/index.css" />
|
|
||||||
<link rel="stylesheet" href="/content/styles/thanks/index.css" />
|
|
||||||
<link rel="stylesheet" href="/content/styles/casey/index.css" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<main>
|
|
||||||
<article>
|
|
||||||
<h1>dear casey,</h1>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
i hope this open letter brings a smile to your face, as i
|
|
||||||
sit here, i am overwhelmed with the gratitude i feel towards
|
|
||||||
our friendship with have created over the past 5 years, you
|
|
||||||
have been there for me always, as if you were onlinne mother
|
|
||||||
and providing support for me that i cherish so deeply and am
|
|
||||||
very thankful for
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
our inside jokes and shared moments, experiences, etc have
|
|
||||||
truly been the highlight of my life, they are reminders of
|
|
||||||
the bond that we've created over the time we've been friends
|
|
||||||
for, they remind me of the tears and laughs we've had
|
|
||||||
together and reminds me of how much time we've spent
|
|
||||||
together,, i still remember the time we connected, purely by
|
|
||||||
chance seemingly xD, when i still used to use facebook and
|
|
||||||
my fb acc got hacked, at the time i was in some lgbt support
|
|
||||||
group and i wanted to add one person from that group, i
|
|
||||||
guess i must've mixed you up with someone from that group
|
|
||||||
and added you instead xDDD, well, little did i know that
|
|
||||||
this would blossom into a such a beautiful and meaningful
|
|
||||||
relationship xD
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
i remember one other thing related to facebook, when u
|
|
||||||
helped me to create a fake straight-looking facebook account
|
|
||||||
xD, because my mother kept on incisting on getting my social
|
|
||||||
media and stuff, i remember u helping me set up a password
|
|
||||||
on every app so if she tries to take my phone again and look
|
|
||||||
through it she couldn't do shit xD, you helped me to express
|
|
||||||
myself authentically without any fear of repercussions, you
|
|
||||||
have such an incredible character and a generous heart and i
|
|
||||||
dont think i will ever be able to repay for you for such
|
|
||||||
noble acts
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
as time passes, i realize how much you have impacted my life
|
|
||||||
and,, not only have you been an emotional pillar, but you've
|
|
||||||
also helped me understand and see the world of adulthood,
|
|
||||||
for example i remember the time when i was confused about
|
|
||||||
taxes and u explained it to me xDD, never have i thought i'd
|
|
||||||
be sitting and asking people about 'what are taxes like
|
|
||||||
actually xD', your wisdom has become invaluable to me, its
|
|
||||||
kinda sweet but bitter, bittersweet i think would b the best
|
|
||||||
word to describe it abt how i feel abt u getting older, its
|
|
||||||
nice that you're growing and developing an independent life
|
|
||||||
and going off studying in another country, but the thought
|
|
||||||
of never being able to meet you fills me with regret and
|
|
||||||
sadness, i hope i get to meet you before you move, i
|
|
||||||
remember the time when i felt bad abt meeting u on easter,
|
|
||||||
that honestly is one of my top regrets because
|
|
||||||
hjfewhewfihwiuehf xD, but i very much do cherish moments
|
|
||||||
we've spent together no matter the distance
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
ive recently noticed that i havent expressed my love for you
|
|
||||||
as i should have, recalling our conversations,, while i
|
|
||||||
think you understand how much i appriciate you and how much
|
|
||||||
i cherish you and all that, i think i should be more
|
|
||||||
explicit with my platonic towards you, this is why i begun
|
|
||||||
saying words 'i love you' more, as i can't show it much by
|
|
||||||
actions, i wish we lived closer to one another to see one
|
|
||||||
another more frequently, so i could express my love in other
|
|
||||||
ways, but for now i'm basically left with words, and that's
|
|
||||||
what i'm trying to do, your presence in my life is a gift
|
|
||||||
and i am eternally grateful to be a part of yours <3
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
thank you for being an amazing friend that you are, your
|
|
||||||
support, understanding and guidance have made a profound
|
|
||||||
impact on me,, whether we're laughing or having
|
|
||||||
heart-to-heart conversations, every moment with you is a
|
|
||||||
treasure, i am honored to call you my best friend
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>with all my love and gratitude and everything there is,</p>
|
|
||||||
|
|
||||||
<p>ari</p>
|
|
||||||
|
|
||||||
<p>2023/12/02</p>
|
|
||||||
</article>
|
|
||||||
</main>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,75 +0,0 @@
|
||||||
<!doctype html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>Ari::web -> Export</title>
|
|
||||||
|
|
||||||
<meta name="description" content="Export or import your ari-web data" />
|
|
||||||
<meta
|
|
||||||
name="keywords"
|
|
||||||
content="export, import, ari-web, ari, Ari Archer, dark, data, javascript"
|
|
||||||
/>
|
|
||||||
<meta
|
|
||||||
name="robots"
|
|
||||||
content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"
|
|
||||||
/>
|
|
||||||
<meta property="og:type" content="website" />
|
|
||||||
|
|
||||||
<meta name="color-scheme" content="dark" />
|
|
||||||
|
|
||||||
<link rel="manifest" href="/manifest.json" />
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="/content/styles/clean/index.css" />
|
|
||||||
<!-- <link rel="stylesheet" href="/content/styles/toggle/index.css" /> -->
|
|
||||||
<link rel="stylesheet" href="/content/styles/export/index.css" />
|
|
||||||
<link rel="stylesheet" href="/content/styles/noscript/index.css" />
|
|
||||||
|
|
||||||
<script src="/content/js/export/index.js" defer></script>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<div class="content">
|
|
||||||
<!-- <label id="x" class="switch">
|
|
||||||
<input type="checkbox" id="page-selector" />
|
|
||||||
<span class="slider"></span>
|
|
||||||
</label> -->
|
|
||||||
|
|
||||||
<h1>
|
|
||||||
Import/export
|
|
||||||
<img
|
|
||||||
id="visitors"
|
|
||||||
src="http://us.ari.lt/counter/@ari/kpnuBU0qISQlfR7cSNwwg9oW8654-RguVrXh9JOBGo3EP1-bm7aF9ROuQO6Jqesk.svg"
|
|
||||||
style="display: inline; height: 1em; vertical-align: top"
|
|
||||||
alt="visitor count"
|
|
||||||
/>'s data
|
|
||||||
<noscript>
|
|
||||||
<span ns
|
|
||||||
>(No JS enabled, will not work, although
|
|
||||||
<a href="/git">you can take a peet at the source code</a
|
|
||||||
>)</span
|
|
||||||
>
|
|
||||||
</noscript>
|
|
||||||
</h1>
|
|
||||||
|
|
||||||
<hr />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="pages">
|
|
||||||
<div>
|
|
||||||
<h2>Export ari-web data</h2>
|
|
||||||
|
|
||||||
<textarea readonly aria-readonly="true" id="export"></textarea>
|
|
||||||
<button id="export-button">Export my data</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<h2>Import ari-web data</h2>
|
|
||||||
|
|
||||||
<textarea id="import"></textarea>
|
|
||||||
<button id="import-button">Import my data</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,267 +0,0 @@
|
||||||
<!doctype html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>Ari::web -> Info</title>
|
|
||||||
|
|
||||||
<meta name="description" content="Important ari-web info" />
|
|
||||||
<meta
|
|
||||||
name="keywords"
|
|
||||||
content="website, ari, dark, blog, minimal, minimalism, opensource, free, info, important"
|
|
||||||
/>
|
|
||||||
<meta
|
|
||||||
name="robots"
|
|
||||||
content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"
|
|
||||||
/>
|
|
||||||
<meta property="og:type" content="website" />
|
|
||||||
|
|
||||||
<meta name="color-scheme" content="dark" />
|
|
||||||
<meta name="theme-color" content="black" />
|
|
||||||
|
|
||||||
<link rel="manifest" href="/manifest.json" />
|
|
||||||
<link rel="stylesheet" href="/content/styles/info/index.css" />
|
|
||||||
|
|
||||||
<base target="_blank" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<header>
|
|
||||||
<h1>Important ari-web info</h1>
|
|
||||||
|
|
||||||
<blockquote>
|
|
||||||
<a href="#!" target="_parent">This is a link</a>
|
|
||||||
<p>And this is text</p>
|
|
||||||
<p>
|
|
||||||
you are visitor
|
|
||||||
<img
|
|
||||||
id="visitors"
|
|
||||||
src="http://us.ari.lt/counter/@ari/kpnuBU0qISQlfR7cSNwwg9oW8654-RguVrXh9JOBGo3EP1-bm7aF9ROuQO6Jqesk.svg"
|
|
||||||
style="
|
|
||||||
display: inline;
|
|
||||||
height: 1em;
|
|
||||||
vertical-align: top;
|
|
||||||
"
|
|
||||||
alt="visitor count"
|
|
||||||
/>
|
|
||||||
</p>
|
|
||||||
</blockquote>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<hr />
|
|
||||||
|
|
||||||
<main>
|
|
||||||
<ul>
|
|
||||||
<!-- <li> : <a href=""></a></li> -->
|
|
||||||
<li>
|
|
||||||
Ari-web canary :
|
|
||||||
<a href="https://ari.lt/page/canary"
|
|
||||||
>https://ari.lt/page/canary</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
ari-web is moving to self-hosted services :
|
|
||||||
<a
|
|
||||||
href="https://blog.ari.lt/b/ariweb-moving-selfhosted-services/"
|
|
||||||
>https://blog.ari.lt/b/ariweb-moving-selfhosted-services/</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Matrix wiki (ari-web is / was involved) :
|
|
||||||
<a href="https://matrix.imwiki.org/wiki/Main_Page"
|
|
||||||
>https://matrix.imwiki.org/wiki/Main_Page</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
ari-web billing situation :
|
|
||||||
<a href="https://blog.ari.lt/b/ariweb-billing-situation/"
|
|
||||||
>https://blog.ari.lt/b/ariweb-billing-situation/</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
ari-web matrix homeserver :
|
|
||||||
<a href="https://blog.ari.lt/b/ariweb-matrix-homeserver/"
|
|
||||||
>https://blog.ari.lt/b/ariweb-matrix-homeserver/</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
domain and donations updates :
|
|
||||||
<a href="https://blog.ari.lt/b/domain-donations-updates/"
|
|
||||||
>https://blog.ari.lt/b/domain-donations-updates/</a
|
|
||||||
>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<del><a href="#/paypal">paypal</a> ( ari.web.xyz@gmail.com )<del>
|
|
||||||
</li>
|
|
||||||
<li><a href="/btc">bitcoin</a></li>
|
|
||||||
<li><a href="/xmr">monero</a></li>
|
|
||||||
<li><a href="/thanks">thanks</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
ari.lt -- new ari-web domain :
|
|
||||||
<a href="https://blog.ari.lt/b/arilt-new-ariweb-domain/"
|
|
||||||
>https://blog.ari.lt/b/arilt-new-ariweb-domain/</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
support ari-web :
|
|
||||||
<a href="https://blog.ari.lt/b/support-ariweb/"
|
|
||||||
>https://blog.ari.lt/b/support-ariweb/</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
notice : temporary shutdown of server.ari.lt :
|
|
||||||
<a
|
|
||||||
href="https://blog.ari.lt/b/notice-temporary-shutdown-serverariwebxyz/"
|
|
||||||
>https://blog.ari.lt/b/notice-temporary-shutdown-serverariwebxyz/</a
|
|
||||||
>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
update for this :
|
|
||||||
<a
|
|
||||||
href="https://blog.ari.lt/b/comparing-hosting-providers-serverariwebxyz/"
|
|
||||||
>https://blog.ari.lt/b/comparing-hosting-providers-serverariwebxyz/</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
update 2 :
|
|
||||||
<a
|
|
||||||
href="https://blog.ari.lt/b/ariweb-server-update-2/"
|
|
||||||
>https://blog.ari.lt/b/ariweb-server-update-2/</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
user.ari.lt situation ( 2023/04/10, harassment ) :
|
|
||||||
<a href="https://blog.ari.lt/b/userari-webxyz-situation/"
|
|
||||||
>https://blog.ari.lt/b/userari-webxyz-situation/</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
user.ari.lt attack by a nazi asshole :
|
|
||||||
<a
|
|
||||||
href="https://blog.ari.lt/b/serverari-webxyz-going-be-changed/"
|
|
||||||
>https://blog.ari.lt/b/serverari-webxyz-going-be-changed/</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
ari-web blog API change and new additions :
|
|
||||||
<a href="https://blog.ari.lt/b/ari-web-blog-api-change/"
|
|
||||||
>https://blog.ari.lt/b/ari-web-blog-api-change/</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
start of the DOML series :
|
|
||||||
<a href="https://blog.ari.lt/b/doml-1-2023-01-29"
|
|
||||||
>https://blog.ari.lt/b/doml-1-2023-01-29</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
contact me :
|
|
||||||
<a href="https://blog.ari.lt/b/contact-me/"
|
|
||||||
>https://blog.ari.lt/b/contact-me/</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
ari-web blog hyperlink redesign :
|
|
||||||
<a
|
|
||||||
href="https://blog.ari.lt/b/ari-web-blog-hyperlink-redesign/"
|
|
||||||
>https://blog.ari.lt/b/ari-web-blog-hyperlink-redesign/</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
happy 2nd birthday, ari-web :
|
|
||||||
<a href="https://blog.ari.lt/b/happy-2nd-birthday--ari-web/"
|
|
||||||
>https://blog.ari.lt/b/happy-2nd-birthday--ari-web/</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
old blog new design :
|
|
||||||
<a
|
|
||||||
href="https://legacy.blog.ari.lt/blogs/New-blog-design!_-9192801266"
|
|
||||||
>https://legacy.blog.ari.lt/blogs/New-blog-design!_-9192801266</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
legacy blog shutdown :
|
|
||||||
<a
|
|
||||||
href="https://legacy.blog.ari.lt/blogs/This-subdomain-is-no-longer-in-use_-7309129151"
|
|
||||||
>https://legacy.blog.ari.lt/blogs/This-subdomain-is-no-longer-in-use_-7309129151</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
new blog management system ! :
|
|
||||||
<a href="https://blog.ari.lt/b/new-blog-management-system-/"
|
|
||||||
>https://blog.ari.lt/b/new-blog-management-system-/</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
introducing the ari-web API :
|
|
||||||
<a
|
|
||||||
href="https://blog.ari.lt/b/introducing-the-ari-web-api-/"
|
|
||||||
>https://blog.ari.lt/b/introducing-the-ari-web-api-/</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
accesibility issues of ari-web :
|
|
||||||
<a
|
|
||||||
href="https://blog.ari.lt/b/accesibility-issues-of-ari-web/"
|
|
||||||
>https://blog.ari.lt/b/accesibility-issues-of-ari-web/</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
ari-web browser compatibility :
|
|
||||||
<a
|
|
||||||
href="https://blog.ari.lt/b/ari-web-browser-compatibility/"
|
|
||||||
>https://blog.ari.lt/b/ari-web-browser-compatibility/</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
ari-web APIs are going public :
|
|
||||||
<a
|
|
||||||
href="https://blog.ari.lt/b/ari-web-apis-are-going-public/"
|
|
||||||
>https://blog.ari.lt/b/ari-web-apis-are-going-public/</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
ari-web APIs: How to use them :
|
|
||||||
<a
|
|
||||||
href="https://blog.ari.lt/b/ari-web-apis--how-to-use-them/"
|
|
||||||
>https://blog.ari.lt/b/ari-web-apis--how-to-use-them/</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
ari-web now delivers minified content :
|
|
||||||
<a
|
|
||||||
href="https://blog.ari.lt/b/ari-web-now-delivers-minified-content/"
|
|
||||||
>https://blog.ari.lt/b/ari-web-now-delivers-minified-content/</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
the 'www' subdomain is no longer the default for ari.lt :
|
|
||||||
<a
|
|
||||||
href="https://blog.ari.lt/b/the--www--subdomain-is-no-longer-the-default-for-ari-web-xyz/"
|
|
||||||
>https://blog.ari.lt/b/the--www--subdomain-is-no-longer-the-default-for-ari-web-xyz/</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
ari-web restricted contributions :
|
|
||||||
<a
|
|
||||||
href="https://blog.ari.lt/b/restricting-contributions-on-ari-web/"
|
|
||||||
>https://blog.ari.lt/b/restricting-contributions-on-ari-web/</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
impersonation of me on the internet :
|
|
||||||
<a
|
|
||||||
href="https://blog.ari.lt/b/important--impersonation-of-me-on-the-internet/"
|
|
||||||
>https://blog.ari.lt/b/important--impersonation-of-me-on-the-internet/</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</main>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,876 +0,0 @@
|
||||||
<!doctype html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>Ari::web -> Matrix</title>
|
|
||||||
|
|
||||||
<meta
|
|
||||||
name="description"
|
|
||||||
content="Ari-web Matrix homeserver Sign-up requirements, Guidelines, Privacy policy, and Termination policy."
|
|
||||||
/>
|
|
||||||
<meta
|
|
||||||
name="keywords"
|
|
||||||
content="matrix, homeserver, matrix homeserver, ari-web, ari archer, open source, free speech, democracy, document, cc0, ee2e, legal, gdpr, dmca, rules, toc, email, contact, sign-up"
|
|
||||||
/>
|
|
||||||
<meta
|
|
||||||
name="robots"
|
|
||||||
content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"
|
|
||||||
/>
|
|
||||||
<meta property="og:type" content="article" />
|
|
||||||
|
|
||||||
<meta name="color-scheme" content="dark" />
|
|
||||||
<meta name="theme-color" content="black" />
|
|
||||||
|
|
||||||
<meta name="license" content="CC0" />
|
|
||||||
|
|
||||||
<link rel="manifest" href="/manifest.json" />
|
|
||||||
|
|
||||||
<link rel="canonical" href="https://ari.lt/page/matrix" />
|
|
||||||
|
|
||||||
<style>
|
|
||||||
* {
|
|
||||||
background-color: #000;
|
|
||||||
color: whitesmoke;
|
|
||||||
font-family: sans-serif;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: #87afaf;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
max-width: 1100px;
|
|
||||||
margin: auto;
|
|
||||||
padding: 2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
blockquote {
|
|
||||||
margin: 10px 0;
|
|
||||||
overflow: hidden;
|
|
||||||
padding: 0 0 0 20px;
|
|
||||||
font-weight: 100;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
blockquote:before {
|
|
||||||
content: "";
|
|
||||||
border-left: #e6e0c8 solid 2px;
|
|
||||||
position: absolute;
|
|
||||||
bottom: 14px;
|
|
||||||
top: 13px;
|
|
||||||
left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.skip {
|
|
||||||
position: absolute;
|
|
||||||
top: -40px;
|
|
||||||
left: 0;
|
|
||||||
background: #000;
|
|
||||||
color: white;
|
|
||||||
padding: 8px;
|
|
||||||
z-index: 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
.skip:focus {
|
|
||||||
top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
footer,
|
|
||||||
h1 {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<a class="skip" href="#main">Skip to main content</a>
|
|
||||||
|
|
||||||
<article>
|
|
||||||
<header>
|
|
||||||
<h1 id="ari-lt-matrix-homeserver">
|
|
||||||
<a href="https://ari.lt/">ari.lt</a> Matrix homeserver
|
|
||||||
</h1>
|
|
||||||
|
|
||||||
Visitor counter:
|
|
||||||
<img
|
|
||||||
id="visitors"
|
|
||||||
src="http://us.ari.lt/counter/@ari/kpnuBU0qISQlfR7cSNwwg9oW8654-RguVrXh9JOBGo3EP1-bm7aF9ROuQO6Jqesk.svg"
|
|
||||||
style="display: inline; height: 1rem; vertical-align: top"
|
|
||||||
alt="visitor count"
|
|
||||||
/>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<main id="main">
|
|
||||||
<div id="toc">
|
|
||||||
<p>Table Of Contents (<a href="#toc">ToC</a>):</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
Source code:
|
|
||||||
<a href="https://ari.lt/git">https://ari.lt/git</a>
|
|
||||||
</li>
|
|
||||||
<li>Introduction: <a href="#intro">#intro</a></li>
|
|
||||||
<li>
|
|
||||||
Registration:
|
|
||||||
<a href="#registration">#registration</a>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
Contacts: <a href="#contacts">#contacts</a>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
Administrators:
|
|
||||||
<a href="#administrators"
|
|
||||||
>#administrators</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Staff: <a href="#staff">#staff</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
"Freeze peach" (free speech):
|
|
||||||
<a href="#peach">#peach</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Privacy: <a href="#privacy">#privacy</a> (TL;DR:
|
|
||||||
<a href="#p-tldr">#p-tldr</a>)
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
GDPR compliance: <a href="#gdpr">#gdpr</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
DMCA compliance: <a href="#dmca">#dmca</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Termination:
|
|
||||||
<a href="#termination">#termination</a> (TL;DR:
|
|
||||||
<a href="#t-tldr">#t-tldr</a>)
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Guidelines:
|
|
||||||
<a href="#guidelines">#guidelines</a> (TL;DR:
|
|
||||||
<a href="#g-tldr">#g-tldr</a>)
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
License: <a href="#license-cc0">#license-cc0</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<i>Last updated: 2024-02-11</i>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="intro">
|
|
||||||
<h2><a href="#intro">#</a> Introduction</h2>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Hello! This is the
|
|
||||||
<a href="https://ari.lt/">ari.lt</a> Matrix homeserver's
|
|
||||||
home page. For those who are unaware -
|
|
||||||
<a
|
|
||||||
href="https://en.wikipedia.org/wiki/Matrix_(protocol)"
|
|
||||||
>Matrix</a
|
|
||||||
>
|
|
||||||
(Website:
|
|
||||||
<a href="https://matrix.org/">https://matrix.org/</a>)
|
|
||||||
is an end-to-end encrypted, decentralized, federated
|
|
||||||
messaging protocol, and I've been maining it for a while
|
|
||||||
now - that's exactly why I have spun up a
|
|
||||||
<a href="https://github.com/matrix-org/dendrite"
|
|
||||||
>Dendrite</a
|
|
||||||
>
|
|
||||||
homeserver, of which you can find the source
|
|
||||||
<i>configuration</i> (source code is unchanged) at
|
|
||||||
<a href="https://matrix.ari.lt/git"
|
|
||||||
>https://matrix.ari.lt/git</a
|
|
||||||
>. This document defines this homeserver's limits, data
|
|
||||||
processing, compliance, and main focuses of it:
|
|
||||||
democracy, freedom (free speech: see
|
|
||||||
<a href="#peach">"Freeze peach"</a>), and privacy.
|
|
||||||
Please take the time to read it and get familiar with
|
|
||||||
all of the rules, conditions and processes.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="registration">
|
|
||||||
<h2><a href="#registration">#</a> Registration</h2>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
The server is not <i>open registration</i> in a way
|
|
||||||
where you can just sign up at your own will instantly -
|
|
||||||
as to prevent spam, "alt" (alternative account) spam,
|
|
||||||
ban evasion, and attacks. So to say -- to provide a
|
|
||||||
smooth experience for people using this homeserver. If
|
|
||||||
you want an account on this homeserver (as in you want a
|
|
||||||
Matrix account on
|
|
||||||
<a href="https://ari.lt/">ari.lt</a> and your MXID
|
|
||||||
(Matrix ID, username) will appear as
|
|
||||||
@your_username:ari.lt) you have to contact one of the
|
|
||||||
<i
|
|
||||||
><b
|
|
||||||
><a href="#administrators">administrators</a></b
|
|
||||||
></i
|
|
||||||
>
|
|
||||||
through one of the following
|
|
||||||
<a href="#contacts">contacts</a> listed in
|
|
||||||
<a href="https://ari.lt/.well-known/matrix/support"
|
|
||||||
>the MSC1929 endpoint</a
|
|
||||||
>
|
|
||||||
and make sure to read
|
|
||||||
<a href="#notice">the notice below</a>:
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<ul id="contacts">
|
|
||||||
<li>
|
|
||||||
Administrators
|
|
||||||
|
|
||||||
<ul id="administrators">
|
|
||||||
<li>
|
|
||||||
Ari Archer: Owner and Administrator
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
Matrix ID:
|
|
||||||
<a
|
|
||||||
href="https://matrix.to/#/@ari:ari.lt"
|
|
||||||
>@ari:ari.lt</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
E-Mail:
|
|
||||||
<a
|
|
||||||
href="mailto:ari.web.xyz@gmail.com"
|
|
||||||
>ari.web.xyz@gmail.com</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Website:
|
|
||||||
<a href="https://ari.lt/"
|
|
||||||
>https://ari.lt/</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li id="staff">
|
|
||||||
Staff
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
Zayd: Moderator
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
Matrix ID:
|
|
||||||
<a
|
|
||||||
href="https://matrix.to/#/@zayd:envs.net"
|
|
||||||
>@zayd:envs.net</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
E-Mail:
|
|
||||||
<a href="mailto:wanderer@envs.net"
|
|
||||||
>wanderer@envs.net</a
|
|
||||||
>
|
|
||||||
(not preferred)
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Website:
|
|
||||||
<a href="https://wanderer.envs.net/"
|
|
||||||
>https://wanderer.envs.net/</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
LDA: Moderator
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
Matrix ID:
|
|
||||||
<a
|
|
||||||
href="https://matrix.to/#/@lda:a.freetards.xyz"
|
|
||||||
>@lda:a.freetards.xyz</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Website:
|
|
||||||
<a href="https://freetards.xyz/"
|
|
||||||
>https://freetards.xyz/</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
LDA (Fourier): Moderator (alt)
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
Matrix ID:
|
|
||||||
<a
|
|
||||||
href="https://matrix.to/#/@fourier:ari.lt"
|
|
||||||
>@fourier:ari.lt</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Website:
|
|
||||||
<a href="https://freetards.xyz/"
|
|
||||||
>https://freetards.xyz/</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
Main <a href="https://ari.lt/">ari.lt</a> room:
|
|
||||||
<a href="https://matrix.to/#/#root:ari.lt"
|
|
||||||
>#root:ari.lt</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Report/ACL
|
|
||||||
<a href="https://ari.lt/">ari.lt</a> room:
|
|
||||||
<a href="https://matrix.to/#/#abuse:ari.lt"
|
|
||||||
>#abuse:ari.lt</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<div id="notice">
|
|
||||||
<p>
|
|
||||||
Before contacting, please read
|
|
||||||
<a href="#privacy">Privacy</a>,
|
|
||||||
<a href="#guidelines">Guidelines</a>, and
|
|
||||||
<a href="#termination">Termination</a> sections, and
|
|
||||||
make sure, whenever you contact me for an account,
|
|
||||||
you add
|
|
||||||
<a href="#consent">this consent statement</a>
|
|
||||||
to your request:
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<blockquote id="consent">
|
|
||||||
<p>
|
|
||||||
<b>
|
|
||||||
I have read the Privacy and Termination
|
|
||||||
policies, along with the Guidelines of the
|
|
||||||
<a href="https://ari.lt/">ari.lt</a>
|
|
||||||
homeserver located on the
|
|
||||||
<a href="https://ari.lt/page/matrix"
|
|
||||||
>https://ari.lt/page/matrix</a
|
|
||||||
>
|
|
||||||
page and I understand and consent to the
|
|
||||||
policies and statements written in that
|
|
||||||
document.
|
|
||||||
</b>
|
|
||||||
</p>
|
|
||||||
</blockquote>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
In the request, send me the desired and not taken
|
|
||||||
username that you want. Also, optionally, specify
|
|
||||||
the reason of
|
|
||||||
<i>why</i> you want to join this homeserver, though
|
|
||||||
it is just novelty and not required. If the username
|
|
||||||
is taken - I will notify you. If not - I will create
|
|
||||||
your account and respond with your temporary
|
|
||||||
password, which I <b>highlighy</b> suggest changing
|
|
||||||
on login.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
All of this is done to prevent future confusion and
|
|
||||||
accusations that may or may not happen, speed up the
|
|
||||||
account creation process, and to note that I (the
|
|
||||||
owner of this homeserver)
|
|
||||||
<b>do not (don't)</b> take any accountability,
|
|
||||||
responsibility, or repercussions for the users of
|
|
||||||
this homeserver (<a href="https://ari.lt/">ari.lt</a
|
|
||||||
>), their actions, and the resulting consequences.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Also note that you'll be <i>auto-joined</i>
|
|
||||||
in the
|
|
||||||
<a href="https://matrix.to/#/#ari:ari.lt"
|
|
||||||
>#ari:ari.lt</a
|
|
||||||
>
|
|
||||||
space and the
|
|
||||||
<a href="https://matrix.to/#/#room:ari.lt"
|
|
||||||
>#root:ari.lt</a
|
|
||||||
>
|
|
||||||
room in that space.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="peach">
|
|
||||||
<h2><a href="#peach">#</a> "Freeze peach" (free speech)</h2>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Just because this homeserver is focused on freedom and
|
|
||||||
democracy, this does not mean total anarchy and zero
|
|
||||||
control. Many people nowadays misinterpret "free speech"
|
|
||||||
as total anarchy: allowing hate speech, spam, no banning
|
|
||||||
or termination, no warnings, etc. This is not this type
|
|
||||||
of homeserver. I have seen way too many of those and I
|
|
||||||
am tired of such homeservers. For this homeserver human
|
|
||||||
decency is a must and there's no way around that,
|
|
||||||
<a href="#guidelines">Guidelines</a>
|
|
||||||
go more in-depth on this.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>Please be a decent human.</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="privacy">
|
|
||||||
<h2><a href="#privacy">#</a> Privacy</h2>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
<a href="https://ari.lt/">ari.lt</a> does not collect
|
|
||||||
any identifiable information (not even
|
|
||||||
<a href="https://nginx.org/">nginx</a> logs!) about the
|
|
||||||
users of its services, except:
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<ul id="collection">
|
|
||||||
<li>
|
|
||||||
The default logging
|
|
||||||
<a href="https://github.com/matrix-org/dendrite"
|
|
||||||
>Dendrite</a
|
|
||||||
>
|
|
||||||
does by default (used for issue diagnostics and does
|
|
||||||
not include any identifiable information).
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="https://spec.matrix.org/latest/"
|
|
||||||
>Matrix data</a
|
|
||||||
>: messages, media (avatars, attachments), ... -
|
|
||||||
whatever you upload on the homeserver. (encryption
|
|
||||||
depends on whether or not encryption for the
|
|
||||||
specific resource is available and if so - was it
|
|
||||||
enabled? (for example private messages have
|
|
||||||
encryption, but public rooms do not)).
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
That's about it. This homeserver tries to keep logging
|
|
||||||
to a minimum to provide a private experience to its
|
|
||||||
users. You may also be interested in the following
|
|
||||||
statements:
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<div id="gdpr">
|
|
||||||
<h3><a href="#gdpr">#</a> GDPR compliance</h3>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
This homeserver is fully
|
|
||||||
<a href="https://gdpr.eu/what-is-gdpr/">GDPR</a>
|
|
||||||
compliant. I.e.:
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
Data is collected by your own explicit consent,
|
|
||||||
as you have to contact the owner ("me") to
|
|
||||||
create an account, having read all terms,
|
|
||||||
conditions, and statements.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Data is only collected for legitimate interest
|
|
||||||
as mentioned above (error diagnostics and data
|
|
||||||
storage).
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
No extra data is collected (no third-part
|
|
||||||
cookies, advertisements, analytics, etc.).
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Data is only processed to provide wanted
|
|
||||||
services (in this case - Matrix messaging,
|
|
||||||
attachments and avatars, etc. as defined and
|
|
||||||
implemented by
|
|
||||||
<a href="https://spec.matrix.org/latest/"
|
|
||||||
>the Matrix specification</a
|
|
||||||
>
|
|
||||||
and
|
|
||||||
<a href="https://github.com/matrix-org/dendrite"
|
|
||||||
>Dendrite Matrix homeserver
|
|
||||||
implementation</a
|
|
||||||
>). The data provider is
|
|
||||||
<a href="https://contabo.com/">Contabo GmbH</a>
|
|
||||||
and the server is hosted in Germany (Frankfurt),
|
|
||||||
see their privacy policy
|
|
||||||
<a href="https://contabo.com/en/legal/privacy/"
|
|
||||||
>here</a
|
|
||||||
>.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Disclosure to law enforcement - available data
|
|
||||||
will be disclosed to law enforcement agencies if
|
|
||||||
required to do so.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
You can request copies of your personal data and
|
|
||||||
request changes to the data.
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="dmca">
|
|
||||||
<h3><a href="#dmca">#</a> DMCA compliance</h3>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
This homeserver is not a breeding ground for DMCA
|
|
||||||
violations, all intellectual property rights of
|
|
||||||
others is respected. If you face any violations
|
|
||||||
please use
|
|
||||||
<a href="#contacts">the listed contacts</a> to
|
|
||||||
report it. In the report the following data will be
|
|
||||||
required:
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
Description of copyrighted data or intellectual
|
|
||||||
property
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Description of where the material is infringing
|
|
||||||
on your copyright
|
|
||||||
</li>
|
|
||||||
<li>Contact information</li>
|
|
||||||
<li>
|
|
||||||
Proof of infringement and belief that the
|
|
||||||
infringer is not authorized to use the
|
|
||||||
intellectual property at hand
|
|
||||||
</li>
|
|
||||||
<li>Proof of your copyright</li>
|
|
||||||
<li>Your electronic or physical signature</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<i id="p-tldr"
|
|
||||||
><a href="#p-tldr">TL;DR</a>? Privacy is a focus here,
|
|
||||||
though that does not absolve the users of repercussions
|
|
||||||
of their acts.</i
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="termination">
|
|
||||||
<h2><a href="#termination">#</a> Termination</h2>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Termination (deactivation - you won't be able to log in
|
|
||||||
or access any of your data after the act of
|
|
||||||
<i>deactivation</i>) of an account is depends a lot on
|
|
||||||
what you've been doing, the severity of what you've been
|
|
||||||
doing, how far you've went, and the warnings you've
|
|
||||||
gotten beforehand (if applicable):
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li id="law-violation">
|
|
||||||
Violation of
|
|
||||||
<a
|
|
||||||
href="https://europam.eu/?module=legislation&country=Lithuania"
|
|
||||||
>Lithuanian</a
|
|
||||||
>
|
|
||||||
and/or
|
|
||||||
<a
|
|
||||||
href="https://europam.eu/?module=legislation&country=Germany"
|
|
||||||
>German</a
|
|
||||||
>
|
|
||||||
law
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
If seen as minor: 12-hour notice before
|
|
||||||
termination
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
If seen as anything else besides minor:
|
|
||||||
instant termination
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li id="guideline-violation">
|
|
||||||
Violation of guidelines
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
Single minor violations of guidelines will
|
|
||||||
only get you a warning, with enough warnings
|
|
||||||
(say like 2 or 3), you will get a 1-day
|
|
||||||
notice to move away from this homeserver,
|
|
||||||
and your account will be terminated
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
If your violation of guidelines was medium
|
|
||||||
severity, you will get a 12-hour to 1-day
|
|
||||||
notice to move away from this homeserver,
|
|
||||||
then your account will be terminated
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
And finally, if your violation of guidelines
|
|
||||||
is seen as severe: you will get an instant
|
|
||||||
account termination with zero notice
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li id="user-reports">
|
|
||||||
Reports from users
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
If a lot of users report you (by any forms
|
|
||||||
of
|
|
||||||
<a href="#contacts">contacts listed above</a
|
|
||||||
>), showing unhappiness in your stay on the
|
|
||||||
homeserver, after a discussion along with
|
|
||||||
proof, and a talk with you: you may or may
|
|
||||||
not get terminated (of course, you will be
|
|
||||||
involved in the process, so you'll have
|
|
||||||
plenty of time to move on). At least a
|
|
||||||
warning is unavoidable.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
If the proof is severe enough and it
|
|
||||||
violates any
|
|
||||||
<a href="#guidelines">Guidelines</a>, the
|
|
||||||
termination policy for guideline violation
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li id="ban">
|
|
||||||
The administrators of the homeserver keep the right
|
|
||||||
to request a full homeserver or per-user ban off a
|
|
||||||
homeserver, room, space or any Matrix messaging unit
|
|
||||||
if they think it is in best interest of the users,
|
|
||||||
with or without notice.
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<i id="t-tldr"
|
|
||||||
><a href="#t-tldr">TL;DR</a>? Follow the law and be
|
|
||||||
human. Termination is dependent on your actions and
|
|
||||||
(optionally) given prior notice(s).</i
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="guidelines">
|
|
||||||
<h2><a href="#guidelines">#</a> Guidelines</h2>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
The activity of rooms and accounts on the
|
|
||||||
<a href="https://ari.lt/">ari.lt</a> homeserver, any
|
|
||||||
events sent over, etc. must follow and adhere to the
|
|
||||||
following guidelines. If any of the following guidelines
|
|
||||||
(rules) are broken
|
|
||||||
<a id="#termination">Termination policy</a> applies.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
You must follow all
|
|
||||||
<a
|
|
||||||
href="https://europam.eu/?module=legislation&country=Lithuania"
|
|
||||||
>Lithuanian</a
|
|
||||||
>
|
|
||||||
and
|
|
||||||
<a
|
|
||||||
href="https://europam.eu/?module=legislation&country=Germany"
|
|
||||||
>German</a
|
|
||||||
>
|
|
||||||
law
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Creating an unhealthy environment for
|
|
||||||
<a href="https://ari.lt/">ari.lt</a> homeserver or
|
|
||||||
not users (hate speech, harassment, ...) is not
|
|
||||||
allowed.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Human decency is a must, such as:
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>Tolerance</li>
|
|
||||||
<li>
|
|
||||||
Non-discrimination (For example (keep in
|
|
||||||
mind their derivatives too):
|
|
||||||
<a
|
|
||||||
href="https://en.wikipedia.org/wiki/Racism"
|
|
||||||
>Racism</a
|
|
||||||
>,
|
|
||||||
<a
|
|
||||||
href="https://en.wikipedia.org/wiki/Homophobia"
|
|
||||||
>Homophobia</a
|
|
||||||
>,
|
|
||||||
<a
|
|
||||||
href="https://en.wikipedia.org/wiki/Transphobia"
|
|
||||||
>Transphobia</a
|
|
||||||
>,
|
|
||||||
<a
|
|
||||||
href="https://en.wikipedia.org/wiki/Sexism"
|
|
||||||
>Sexism</a
|
|
||||||
>,
|
|
||||||
<a
|
|
||||||
href="https://en.wikipedia.org/wiki/Xenophobia"
|
|
||||||
>Xenophobia</a
|
|
||||||
>,
|
|
||||||
<a
|
|
||||||
href="https://en.wikipedia.org/wiki/Social_stigma_of_obesity"
|
|
||||||
>Fatphobia</a
|
|
||||||
>, etc.)
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Not spreading misinformation and/or
|
|
||||||
disinformation
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Taking responsibility and accountability for
|
|
||||||
your own actions
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Not spreading
|
|
||||||
<a
|
|
||||||
href="https://www.rainn.org/news/what-child-sexual-abuse-material-csam"
|
|
||||||
>CSAM (Child Sexual Abuse Material)</a
|
|
||||||
>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<a
|
|
||||||
href="https://en.wikipedia.org/wiki/Lolicon"
|
|
||||||
>Lolicon/Shoticon</a
|
|
||||||
>
|
|
||||||
also falls under this category. No
|
|
||||||
exceptions.
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li>Respect for other Matrix users</li>
|
|
||||||
<li>
|
|
||||||
Respect for server's resources: they are not
|
|
||||||
unlimited!
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Other basic human decency rules, which are
|
|
||||||
common knowledge ...
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Spreading personal information without the person's
|
|
||||||
(or self) consent, sometimes also known as
|
|
||||||
<a href="https://en.wikipedia.org/wiki/Doxing"
|
|
||||||
>Doxing</a
|
|
||||||
>
|
|
||||||
and its "minor" forms.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Content that violations the intellectual property
|
|
||||||
rights of others is disallowed, this also ties in
|
|
||||||
with law.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Sending bulk unsolicited messages to others (spam)
|
|
||||||
is disallowed.
|
|
||||||
</li>
|
|
||||||
<li>Harassing and stalking others is disallowed.</li>
|
|
||||||
<li>
|
|
||||||
Causing any other form of harm to other individuals,
|
|
||||||
jurisdictions, systems, etc. is also disallowed
|
|
||||||
(such as
|
|
||||||
<a
|
|
||||||
href="https://en.wikipedia.org/wiki/Denial-of-service_attack"
|
|
||||||
>(D)DoS attacks</a
|
|
||||||
>)
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Other acts which are seen as abusive by the
|
|
||||||
administrators of this homeserver is also seen as a
|
|
||||||
violation of the guidelines
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<i id="g-tldr"
|
|
||||||
><a href="#g-tldr">TL;DR</a>? Be decent, follow the law,
|
|
||||||
and don't abuse what you are given.</i
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
</main>
|
|
||||||
|
|
||||||
<footer id="license-cc0">
|
|
||||||
<p
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:dct="http://purl.org/dc/terms/"
|
|
||||||
id="license"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
property="dct:title"
|
|
||||||
rel="cc:attributionURL"
|
|
||||||
href="https://ari.lt/page/matrix"
|
|
||||||
>Ari-web Matrix homeserver (ari.lt/matrix.ari.lt)
|
|
||||||
statement document</a
|
|
||||||
>
|
|
||||||
by
|
|
||||||
<a
|
|
||||||
rel="cc:attributionURL dct:creator"
|
|
||||||
property="cc:attributionName"
|
|
||||||
href="https://ari.lt/"
|
|
||||||
>Ari Archer</a
|
|
||||||
>
|
|
||||||
is marked with
|
|
||||||
<a
|
|
||||||
href="http://creativecommons.org/publicdomain/zero/1.0?ref=chooser-v1"
|
|
||||||
target="_blank"
|
|
||||||
rel="license noopener noreferrer"
|
|
||||||
style="display: inline-block"
|
|
||||||
>
|
|
||||||
CC0 1.0 Universal
|
|
||||||
<img
|
|
||||||
style="
|
|
||||||
height: 22px !important;
|
|
||||||
margin-left: 3px;
|
|
||||||
vertical-align: text-bottom;
|
|
||||||
"
|
|
||||||
src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1"
|
|
||||||
/>
|
|
||||||
<img
|
|
||||||
style="
|
|
||||||
height: 22px !important;
|
|
||||||
margin-left: 3px;
|
|
||||||
vertical-align: text-bottom;
|
|
||||||
"
|
|
||||||
src="https://mirrors.creativecommons.org/presskit/icons/zero.svg?ref=chooser-v1"
|
|
||||||
/>
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
<a href="https://ari.lt/"
|
|
||||||
><img
|
|
||||||
src="https://ari.lt/badge.png"
|
|
||||||
loading="lazy"
|
|
||||||
alt="ari-web badge"
|
|
||||||
height="31px"
|
|
||||||
width="88px"
|
|
||||||
/></a>
|
|
||||||
</footer>
|
|
||||||
</article>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,92 +0,0 @@
|
||||||
[*] WELCOME TO THE I N T E R N E T...
|
|
||||||
|
|
||||||
+=================== WHY DOES THIS PAGE EVEN EXIST? =====================+
|
|
||||||
|| For short: to fill up my website. ||
|
|
||||||
|| ||
|
|
||||||
|| This page is completely accesible to anyone, any system can handle text. ||
|
|
||||||
|| Sometimes I wanna get a break from all of those <tags/> and CSS and stuff. ||
|
|
||||||
|| I also want more content on this website so I decided to make this. ||
|
|
||||||
|| People using a browser like links can also easily view this page. ||
|
|
||||||
|| ||
|
|
||||||
|| This page isn't meant to look pretty, it's just meant to.. do almost nothing, ||
|
|
||||||
|| that's the point of this page. ||
|
|
||||||
|| I will try to keep updating this page when I'm out of ideas heh. ||
|
|
||||||
+=================================================================================+
|
|
||||||
|
|
||||||
|
|
||||||
-********************************************- [BLOGS] -***********************************************-
|
|
||||||
|
|
||||||
2021.08.07, 17:35 EEST [YYYY/MM/DD]
|
|
||||||
Hey, sorry for not updating y'all, today was a very calm day. It's cold here.
|
|
||||||
I like days like this, I've been laying in bed all day hah..
|
|
||||||
To be honest it's so weird talking about myself, I don't really know what to say lol,
|
|
||||||
I'm really boring haha. to be honest I'm thinking of remaking this site with a backend,
|
|
||||||
or maybe I'll just add a space for comments using disqus, but I'm worries about y'all's privacy
|
|
||||||
and in general bloat. If you'd like me to add it make a new issue in https://github.com/TruncatedDinosour/website/issues
|
|
||||||
and I'll add it :).
|
|
||||||
|
|
||||||
I have been not wanting to code lately, I just have been watching some youtuve videos hah,
|
|
||||||
though for the past two days I wanted to do these two things in C++:
|
|
||||||
* "Play with memory" game
|
|
||||||
* Playing around with classes w/ fake crypto currency
|
|
||||||
it sounds kinda fun hah.
|
|
||||||
|
|
||||||
I restyled the minimal page and I think it looks pretty good now hah, it's nice.
|
|
||||||
well have a nice day and listen to what the little cow says:
|
|
||||||
______________________________________
|
|
||||||
/ Stay healthy, wear a mask and have a \
|
|
||||||
\ nice day :) /
|
|
||||||
--------------------------------------
|
|
||||||
\ ^__^
|
|
||||||
\ (oo)\_______
|
|
||||||
(__)\ )\/\
|
|
||||||
||----w |
|
|
||||||
|| ||
|
|
||||||
- Ari
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
2021.08.10, 17:00 EEST [YYYY/MM/DD]
|
|
||||||
Hey, my site is now on wiby! wiby is a search engine for minimal sites and one of them
|
|
||||||
is mine :) you can find my pages by looking up "ari-web" on wiby: https://wiby.me/?q=ari%2Dweb .
|
|
||||||
It's quite a cool thing and you can discover nice and intresting things there hah.
|
|
||||||
|
|
||||||
The web was supposed to be minimal and now as we have more resources developers
|
|
||||||
don't care as much to make it minimal, wiby tries to accomplish this and it's doing a good job at it.
|
|
||||||
|
|
||||||
I also have discoved few minimal protocols: gopher and gemini.
|
|
||||||
Gopher is a text-only minimal protocol and is faily old, even older than http and https,
|
|
||||||
it's really light, but it really lacks some stuff like pictures for example, but
|
|
||||||
that's where gemini comes in, it has more support for "fancy" stuff when still staying pretty light
|
|
||||||
and it's also faily new, it came out in 2019 and it's still being developed, I'd suggest you to try it.
|
|
||||||
A good browser I found for gopher, http, https and gemini is kristall, it's pretty cool.
|
|
||||||
|
|
||||||
anyway, Try to keep the web minimal and use as little as you can until you make it look the way you want,
|
|
||||||
have a nice day.
|
|
||||||
|
|
||||||
- Ari
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
2021.10.04, 22:55 EEST [YYYY/MM/DD]
|
|
||||||
Lol, today is a crazy day... python 3.10 has been released, android 12A has
|
|
||||||
been released and facebook + all its services have gone down. I'm kinda happy
|
|
||||||
that facebook and all of its services gone down lol - less spyware on the
|
|
||||||
internet heh.
|
|
||||||
|
|
||||||
Though it also has affected me negatively, all spyware consuming normies
|
|
||||||
started signing up for telegram lol and it got pretty slow so it's annoying
|
|
||||||
me. It takes like 8 seconds to send one message heh, so yeah, annoying. I
|
|
||||||
might even switch to another messenger if this doesn't stop or gets worse.
|
|
||||||
|
|
||||||
Also one exciting thing - python 3.10 released! it seems pretty cool. The
|
|
||||||
`match` statement seems nice and I can see it reducing my code size, might do
|
|
||||||
some refactoring when it gets put on gentoo repos, but eh, idrk.
|
|
||||||
|
|
||||||
Anyway, thanks for listening to my rant :) See you in the next blog post in
|
|
||||||
like 2 months xD
|
|
||||||
|
|
||||||
- Ari
|
|
||||||
|
|
||||||
-********************************************-_________-***********************************************-
|
|
||||||
|
|
|
@ -1,298 +0,0 @@
|
||||||
<!doctype html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<meta
|
|
||||||
name="keywords"
|
|
||||||
content="linux, website, vpn, privacy, novpn, security, money, trust, programming, ari, terminal, dark, opensource"
|
|
||||||
/>
|
|
||||||
<meta name="description" content="NoVPN - Why you shouldn't use VPNs" />
|
|
||||||
<meta
|
|
||||||
name="robots"
|
|
||||||
content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<meta property="og:type" content="website" />
|
|
||||||
<meta name="color-scheme" content="dark" />
|
|
||||||
|
|
||||||
<title>Ari::web -> NoVPN</title>
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="/content/styles/clean/index.min.css" />
|
|
||||||
<link rel="stylesheet" href="/content/styles/novpn/index.min.css" />
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="/content/styles/noscript/index.css" />
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
<!--//--><![CDATA[//><!--
|
|
||||||
/**
|
|
||||||
* @licstart The following is the entire license notice for the JavaScript
|
|
||||||
* code in this page.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2022 Ari Archer
|
|
||||||
*
|
|
||||||
* The JavaScript code in this page is free software: you can redistribute
|
|
||||||
* it and/or modify it under the terms of the GNU General Public License
|
|
||||||
* (GNU GPL) as published by the Free Software Foundation, either version 3
|
|
||||||
* of the License, or (at your option) any later version. The code is
|
|
||||||
* distributed WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU GPL
|
|
||||||
* for more details.
|
|
||||||
*
|
|
||||||
* As additional permission under GNU GPL version 3 section 7, you may
|
|
||||||
* distribute non-source (e.g., minimized or compacted) forms of that code
|
|
||||||
* without the copy of the GNU GPL normally required by section 4, provided
|
|
||||||
* you include this license notice and a URL through which recipients can
|
|
||||||
* access the Corresponding Source.
|
|
||||||
*
|
|
||||||
* @licend The above is the entire license notice for the JavaScript code
|
|
||||||
* in this page.
|
|
||||||
*/
|
|
||||||
|
|
||||||
//--><!]]>
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<script src="/content/js/novpn/matrix.js" defer></script>
|
|
||||||
<script src="/content/js/novpn/index.js" defer></script>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<canvas id="matrix"></canvas>
|
|
||||||
|
|
||||||
<div class="content">
|
|
||||||
<div class="page-intro">
|
|
||||||
<h1>
|
|
||||||
NoVPN - fast, private, secure and free
|
|
||||||
<noscript>
|
|
||||||
<span ns
|
|
||||||
>(No JS version (go to <a href="/git">/git</a> for
|
|
||||||
the source code if you want))</span
|
|
||||||
>
|
|
||||||
</noscript>
|
|
||||||
</h1>
|
|
||||||
<br />
|
|
||||||
<p>
|
|
||||||
Tired of companies spying on you? NoVPN might be the "VPN"
|
|
||||||
for you, visitor
|
|
||||||
<img
|
|
||||||
id="visitors"
|
|
||||||
src="http://us.ari.lt/counter/@ari/kpnuBU0qISQlfR7cSNwwg9oW8654-RguVrXh9JOBGo3EP1-bm7aF9ROuQO6Jqesk.svg"
|
|
||||||
style="
|
|
||||||
display: inline;
|
|
||||||
height: 1em;
|
|
||||||
vertical-align: top;
|
|
||||||
"
|
|
||||||
alt="visitor count"
|
|
||||||
/>.
|
|
||||||
<a href="#!" onclick="scrollDown();">Read more.</a>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<br />
|
|
||||||
|
|
||||||
<div class="content">
|
|
||||||
<div class="page-intro">
|
|
||||||
<h1>What is NoVPN?</h1>
|
|
||||||
<br />
|
|
||||||
<p>
|
|
||||||
NoVPN is a
|
|
||||||
<a href="/" target="_blank">page on my website</a> to
|
|
||||||
encourage people to not use VPNs if they don't have a use
|
|
||||||
for them.
|
|
||||||
<a href="#!" onclick="scrollDown();">Read more.</a>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="content">
|
|
||||||
<div class="page-intro">
|
|
||||||
<h1>I use ExpressVPN, NordVPN, etc. are these good options?</h1>
|
|
||||||
<br />
|
|
||||||
<p>
|
|
||||||
No. These VPNs collect enourmous ammount of your data and
|
|
||||||
sell it. ExpressVPN
|
|
||||||
<a
|
|
||||||
href="//english.almayadeen.net/articles/analysis/exclusive:-expressvpn-insider-tells-all-on-companys-israelua"
|
|
||||||
target="_blank"
|
|
||||||
>hires literal spies</a
|
|
||||||
>
|
|
||||||
and NordVPN had
|
|
||||||
<a
|
|
||||||
href="//blog.malwarebytes.com/cybercrime/privacy/2021/03/21-million-free-vpn-users-data-exposed"
|
|
||||||
target="_blank"
|
|
||||||
>a huge data breach</a
|
|
||||||
>. These are just two examples, most proprietary VPNs are or
|
|
||||||
have faced this sort of issue.
|
|
||||||
<a href="#!" onclick="scrollDown();">Read more.</a>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="content">
|
|
||||||
<div class="page-intro">
|
|
||||||
<h1>
|
|
||||||
But people, my friends and my favourite creators are telling
|
|
||||||
me that my data will be exposed otherwise
|
|
||||||
</h1>
|
|
||||||
<br />
|
|
||||||
<p>
|
|
||||||
That can technically happen, BUT, most sites use
|
|
||||||
<a href="//en.wikipedia.org/wiki/HTTPS" target="_blank"
|
|
||||||
>the HTTPS protocol</a
|
|
||||||
>
|
|
||||||
which is very secure and it's very unlikely your data will
|
|
||||||
be exposed while visiting HTTPS sites. But if you use
|
|
||||||
<a
|
|
||||||
href="//en.wikipedia.org/wiki/Hypertext_Transfer_Protocol"
|
|
||||||
target="_blank"
|
|
||||||
>only HTTP</a
|
|
||||||
>
|
|
||||||
which is not secure and someone is targeting you, yes they
|
|
||||||
will get your data, but most HTTP sites are very simple and
|
|
||||||
don't even give you the option to put in any details. And
|
|
||||||
please remember that your favourite creators are paid to lie
|
|
||||||
to you and they probably themselves don't know what they're
|
|
||||||
saying so before you believe someone think to yourself "was
|
|
||||||
there money involved" and "is there a chance that they
|
|
||||||
actually know what they're talking about". Don't trust
|
|
||||||
anyone.
|
|
||||||
<a href="#!" onclick="scrollDown();">Read more.</a>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="content">
|
|
||||||
<div class="page-intro">
|
|
||||||
<h1>
|
|
||||||
Hm okay, but what about open source VPNs like riseup or
|
|
||||||
proton VPN
|
|
||||||
</h1>
|
|
||||||
<br />
|
|
||||||
<p>
|
|
||||||
VPNs without a use... well are just useless... Don't use a
|
|
||||||
VPN if you don't have a use. Because:
|
|
||||||
|
|
||||||
<br />
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>It slows down your connection</li>
|
|
||||||
<li>You're trusting someone else with your data</li>
|
|
||||||
<li>
|
|
||||||
If you're using only a free trial - you're also wasting
|
|
||||||
money
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
It gives you a
|
|
||||||
<a
|
|
||||||
href="//www.merriam-webster.com/dictionary/false%20sense%20of%20security"
|
|
||||||
target="_blank"
|
|
||||||
>false sense of security</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
It
|
|
||||||
<a href="//tech.co/vpn/are-vpns-legal" target="_blank"
|
|
||||||
>could be illegal in your country</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<br />
|
|
||||||
|
|
||||||
Please think about if you <b>REALLY</b> need a VPN or are you
|
|
||||||
just getting it just to waste money, bandwidth and your
|
|
||||||
privacy...
|
|
||||||
<a href="#!" onclick="scrollDown();">Read more.</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="content">
|
|
||||||
<div class="page-intro">
|
|
||||||
<h1>What are good use cases of VPNs</h1>
|
|
||||||
<br />
|
|
||||||
<p></p>
|
|
||||||
<ul>
|
|
||||||
<li>Bypassing your countie's restrictions</li>
|
|
||||||
<li>Pirating content off the internet</li>
|
|
||||||
<li>
|
|
||||||
A site that is connected through a VPN to access
|
|
||||||
restricted content (e.g
|
|
||||||
<a href="//www.hackthebox.com/" target="_blank"
|
|
||||||
>Hack The Box</a
|
|
||||||
>)
|
|
||||||
</li>
|
|
||||||
<li>Bypassing IP range bans</li>
|
|
||||||
<li>
|
|
||||||
Bypassing sites restricting certain features if you're
|
|
||||||
in a certain region
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<a href="#!" onclick="scrollDown();">Read more.</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="content">
|
|
||||||
<div class="page-intro">
|
|
||||||
<h1>
|
|
||||||
You're telling us "not to trust anyone", does that include
|
|
||||||
you?
|
|
||||||
</h1>
|
|
||||||
<br />
|
|
||||||
<p>
|
|
||||||
Yes. You should not trust me or anyone, you should do your
|
|
||||||
own research on unbias sources.
|
|
||||||
<a href="#!" onclick="scrollDown();">Read more.</a>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="content">
|
|
||||||
<div class="page-intro">
|
|
||||||
<h1>
|
|
||||||
Why do people use VPNs so much without knowing what it is,
|
|
||||||
does or is running
|
|
||||||
</h1>
|
|
||||||
<br />
|
|
||||||
<p>
|
|
||||||
They are being influenced by their favourite content
|
|
||||||
creators on social media and then they influence their
|
|
||||||
friend and they their friends and so on. But one friend
|
|
||||||
eventually realised it's bullshit and doesn't spread it,
|
|
||||||
which is when it stops, be the person who stops the
|
|
||||||
spreading of this bs and stop giving companies data to sell.
|
|
||||||
<a href="#!" onclick="scrollDown();">Read more.</a>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="content">
|
|
||||||
<div class="page-intro">
|
|
||||||
<h1>Why did you even call it a "VPN" in the beginning</h1>
|
|
||||||
<br />
|
|
||||||
<p>
|
|
||||||
To get your or anyone who acrosses this attention.
|
|
||||||
<a href="#!" onclick="scrollDown();">Read more.</a>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="content">
|
|
||||||
<div class="page-intro">
|
|
||||||
<h1>Finalizing</h1>
|
|
||||||
<br />
|
|
||||||
<p></p>
|
|
||||||
<ul>
|
|
||||||
<li>Don't use proprietary VPNs</li>
|
|
||||||
<li>Don't use VPNs without a proper use</li>
|
|
||||||
<li>Don't fall for bias people's sugartalk</li>
|
|
||||||
<li>Don't trust anyone</li>
|
|
||||||
<li><a href="https://www.privacyguides.org/en/vpn/">Check this article out by privacyguides.org</a></li>
|
|
||||||
</ul>
|
|
||||||
<a href="#!" onclick="scrollUp();">Back to top.</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,111 +0,0 @@
|
||||||
<!doctype html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>Ari::web -> Reset</title>
|
|
||||||
|
|
||||||
<meta property="og:type" content="website" />
|
|
||||||
<meta name="color-scheme" content="dark" />
|
|
||||||
|
|
||||||
<meta name="description" content="My personal website" />
|
|
||||||
<meta
|
|
||||||
name="keywords"
|
|
||||||
content="website, webdev, linux, programming, ari, terminal, dark, account"
|
|
||||||
/>
|
|
||||||
<meta
|
|
||||||
name="robots"
|
|
||||||
content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="/content/styles/generic/main.min.css" />
|
|
||||||
<link rel="stylesheet" href="/content/styles/noscript/index.css" />
|
|
||||||
<link rel="stylesheet" href="/content/styles/clean/index.css" />
|
|
||||||
|
|
||||||
<style>
|
|
||||||
*,
|
|
||||||
*::before,
|
|
||||||
*::after {
|
|
||||||
scroll-behavior: smooth !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.title {
|
|
||||||
text-align: center;
|
|
||||||
margin: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.buttons * {
|
|
||||||
color: white;
|
|
||||||
padding: 1em;
|
|
||||||
font-size: 1.4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.buttons {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
<!--//--><![CDATA[//><!--
|
|
||||||
/**
|
|
||||||
* @licstart The following is the entire license notice for the JavaScript
|
|
||||||
* code in this page.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2022 Ari Archer
|
|
||||||
*
|
|
||||||
* The JavaScript code in this page is free software: you can redistribute
|
|
||||||
* it and/or modify it under the terms of the GNU General Public License
|
|
||||||
* (GNU GPL) as published by the Free Software Foundation, either version 3
|
|
||||||
* of the License, or (at your option) any later version. The code is
|
|
||||||
* distributed WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU GPL
|
|
||||||
* for more details.
|
|
||||||
*
|
|
||||||
* As additional permission under GNU GPL version 3 section 7, you may
|
|
||||||
* distribute non-source (e.g., minimized or compacted) forms of that code
|
|
||||||
* without the copy of the GNU GPL normally required by section 4, provided
|
|
||||||
* you include this license notice and a URL through which recipients can
|
|
||||||
* access the Corresponding Source.
|
|
||||||
*
|
|
||||||
* @licend The above is the entire license notice for the JavaScript code
|
|
||||||
* in this page.
|
|
||||||
*/
|
|
||||||
|
|
||||||
//--><!]]>
|
|
||||||
</script>
|
|
||||||
<script>
|
|
||||||
function reset() {
|
|
||||||
if (
|
|
||||||
confirm("Are you sure that you want to reset your account?")
|
|
||||||
) {
|
|
||||||
window.localStorage.clear();
|
|
||||||
alert("Your accout has been reset");
|
|
||||||
window.location = "/";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<h1 class="title">
|
|
||||||
Do you want to reset your account,
|
|
||||||
<img
|
|
||||||
id="visitors"
|
|
||||||
src="http://us.ari.lt/counter/@ari/kpnuBU0qISQlfR7cSNwwg9oW8654-RguVrXh9JOBGo3EP1-bm7aF9ROuQO6Jqesk.svg"
|
|
||||||
style="display: inline; height: 1em; vertical-align: top"
|
|
||||||
alt="visitor count"
|
|
||||||
/>?
|
|
||||||
<noscript>
|
|
||||||
<span ns
|
|
||||||
>(No JS enabled, will not work, although if this is just a
|
|
||||||
trust thing, <a href="/git">see the source code</a>)</span
|
|
||||||
>
|
|
||||||
</noscript>
|
|
||||||
</h1>
|
|
||||||
<div class="buttons">
|
|
||||||
<button onclick="reset();">Yes</button>
|
|
||||||
<button onclick="window.location = '/';">No</button>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,167 +0,0 @@
|
||||||
<!doctype html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>Ari::web -> Thanks</title>
|
|
||||||
|
|
||||||
<meta name="description" content="Thank you, my supporters" />
|
|
||||||
<meta
|
|
||||||
name="keywords"
|
|
||||||
content="thanks, donations, ari-web, bitcoin, paypal, thank you for donating, gratitude, open source, foss, free, website, ari archer, personal website"
|
|
||||||
/>
|
|
||||||
<meta
|
|
||||||
name="robots"
|
|
||||||
content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"
|
|
||||||
/>
|
|
||||||
<meta property="og:type" content="article" />
|
|
||||||
|
|
||||||
<meta name="color-scheme" content="dark" />
|
|
||||||
<meta name="theme-color" content="#121212" />
|
|
||||||
|
|
||||||
<link rel="manifest" href="/manifest.json" />
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="/content/styles/clean/index.css" />
|
|
||||||
<link rel="stylesheet" href="/content/styles/index/index.css" />
|
|
||||||
<link rel="stylesheet" href="/content/styles/thanks/index.css" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<header>
|
|
||||||
<h1>thank you for supporting,</h1>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<br />
|
|
||||||
|
|
||||||
<article>
|
|
||||||
<ul id="thanks">
|
|
||||||
<li>
|
|
||||||
<b>2023/11/24</b> : <b>Casey, my best friend</b> for buying
|
|
||||||
me
|
|
||||||
<b
|
|
||||||
><a href="https://ari.lt/">ari.lt</a> for
|
|
||||||
<span>11.99 euro</span></b
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<b>2023/12/26</b> : <b>Marco G.</b> for a <span>5 euro</span> donation with message
|
|
||||||
<b>"Some moneyz💜"</b> on <b>paypal</b>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<b>2023/11/30</b> : <b>Mario G.</b> for an
|
|
||||||
<span>80 euro cent, 42 cent excluding fees</span> ( the
|
|
||||||
answer to life !! ) donation on
|
|
||||||
<b>paypal</b>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<b>2024/05/05</b> : <b>???</b> for a
|
|
||||||
<span>0.0019 XMR</span> ( 23 euro cent ) donation on
|
|
||||||
<b>monero</b>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h2>where is this money being used ?</h2>
|
|
||||||
|
|
||||||
<ul id="usage">
|
|
||||||
<li>
|
|
||||||
pay for <a href="https://ari.lt/">ari.lt</a>,
|
|
||||||
<span>11.99 euro yearly</span>
|
|
||||||
since 2023, hostinger
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
pay for
|
|
||||||
<a href="http://62.171.174.136/">62.171.174.136</a> contabo
|
|
||||||
VPS, <span><del>5.45</del> 11.9 euro monthly</span> since <del>2023/10/14</del> 2024/01/14
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
other misc charges, around <span>12 euro yearly</span> since
|
|
||||||
2020 or so ( tools, taxes, irl requirements to run this
|
|
||||||
website for me )
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span>13.37 USD ( 12.77 EUR ) donation</span> for
|
|
||||||
<a
|
|
||||||
href="https://psfmember.org/civicrm/contribute/transact/?reset=1&id=49"
|
|
||||||
>python software foundation ( psf )</a
|
|
||||||
>
|
|
||||||
on 2023/12/24 to give back to the open source community and
|
|
||||||
support tools ari-web uses, 1337 for the funny number
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span>2 USD cents</span> sent to a
|
|
||||||
<a href="https://us.ari.lt/@nsa">@nsa's on ari-web</a>
|
|
||||||
friend, as a joke, but i did get something in return -- meme
|
|
||||||
information about icann on 2023/12/09 [note : coming from
|
|
||||||
<a href="https://matrix.to/#/#lounge:envs.net"
|
|
||||||
>#lounge:envs.net</a
|
|
||||||
>, a community im a part of]
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span
|
|
||||||
>4 EUR cents ( converted to 2 USD cents with taxes
|
|
||||||
)</span
|
|
||||||
>
|
|
||||||
sent to support
|
|
||||||
<a href="https://pain.agency/">pain.agency</a>, bc i thought
|
|
||||||
it may b funny lmao on 2023/12/09 [note : coming from
|
|
||||||
<a href="https://matrix.to/#/#lounge:envs.net"
|
|
||||||
>#lounge:envs.net</a
|
|
||||||
>, a community im a part of]
|
|
||||||
</li>
|
|
||||||
<li><span>32.67 EUR</span> for <a href="https://ari.lt/">ari.lt</a> domain til 2027/11/25, paid on 2024/01/09</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<br />
|
|
||||||
|
|
||||||
<p>
|
|
||||||
in general, ari-web takes around
|
|
||||||
<span>100 euro to maintain yearly</span>, a lot of it coming
|
|
||||||
from my own pocket as a barely-working 16 year old student, i've
|
|
||||||
only started documenting where i spend the money since
|
|
||||||
2023/11/24 or so, here are some undisclosed expenses from when i
|
|
||||||
wasnnt documenting it :
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<br />
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
domain expenses for ari-web.xyz ( no longer in use, should
|
|
||||||
expire in 2025 )
|
|
||||||
</li>
|
|
||||||
<li>linode VPS costs</li>
|
|
||||||
<li>
|
|
||||||
still those misc charges that come up ( tools, taxes, irl
|
|
||||||
requirements to run this website for me )
|
|
||||||
</li>
|
|
||||||
<li>probs other stuff i cant remember lol</li>
|
|
||||||
</ul>
|
|
||||||
</article>
|
|
||||||
|
|
||||||
<br />
|
|
||||||
|
|
||||||
<footer>
|
|
||||||
<p>
|
|
||||||
i appriciate and value these donations a lot, thank you for
|
|
||||||
supporting me and this project <3
|
|
||||||
<a href="https://ari.lt/">
|
|
||||||
<img
|
|
||||||
src="https://ari.lt/badge.png"
|
|
||||||
loading="lazy"
|
|
||||||
alt="ari-web badge"
|
|
||||||
height="31px"
|
|
||||||
width="88px"
|
|
||||||
/>
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<br />
|
|
||||||
|
|
||||||
<i>
|
|
||||||
feel free to support me on <del>paypal ( ari.web.xyz@gmail.com ) ( not here anymore )</del>, <a href="/btc">bitcoin</a>, <a href="/xmr">monero</a> or <a href="/git">code :)</a>,
|
|
||||||
when donating feel free to specify a note to possibly link to your own website, or social media or anything :) ( or email it to me when not possible )
|
|
||||||
</i>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,110 +0,0 @@
|
||||||
<!doctype html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>Ari::web -> TTY</title>
|
|
||||||
|
|
||||||
<meta name="description" content="TTY theme generator by ari-web" />
|
|
||||||
<meta
|
|
||||||
name="keywords"
|
|
||||||
content="tty, theme, linux, cli, terminal, generator, theme-generator, foss, unlicense"
|
|
||||||
/>
|
|
||||||
<meta
|
|
||||||
name="robots"
|
|
||||||
content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<meta property="og:type" content="website" />
|
|
||||||
<meta name="color-scheme" content="dark" />
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
<!--//--><![CDATA[//><!--
|
|
||||||
/**
|
|
||||||
* @licstart The following is the entire license notice for the JavaScript
|
|
||||||
* code in this page.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2022 Ari Archer
|
|
||||||
*
|
|
||||||
* The JavaScript code in this page is free software: you can redistribute
|
|
||||||
* it and/or modify it under the terms of the GNU General Public License
|
|
||||||
* (GNU GPL) as published by the Free Software Foundation, either version 3
|
|
||||||
* of the License, or (at your option) any later version. The code is
|
|
||||||
* distributed WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU GPL
|
|
||||||
* for more details.
|
|
||||||
*
|
|
||||||
* As additional permission under GNU GPL version 3 section 7, you may
|
|
||||||
* distribute non-source (e.g., minimized or compacted) forms of that code
|
|
||||||
* without the copy of the GNU GPL normally required by section 4, provided
|
|
||||||
* you include this license notice and a URL through which recipients can
|
|
||||||
* access the Corresponding Source.
|
|
||||||
*
|
|
||||||
* @licend The above is the entire license notice for the JavaScript code
|
|
||||||
* in this page.
|
|
||||||
*/
|
|
||||||
|
|
||||||
//--><!]]>
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<script
|
|
||||||
type="module"
|
|
||||||
src="/content/js/ttytheme/events.js"
|
|
||||||
defer
|
|
||||||
></script>
|
|
||||||
<script type="module" src="/content/js/ttytheme/menu.js" defer></script>
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="/content/styles/clean/index.css" />
|
|
||||||
<link rel="stylesheet" href="/content/styles/ttytheme/styles.css" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<h1>
|
|
||||||
Linux TTY theme generator by Ari::web for over
|
|
||||||
<img
|
|
||||||
id="visitors"
|
|
||||||
src="http://us.ari.lt/counter/@ari/kpnuBU0qISQlfR7cSNwwg9oW8654-RguVrXh9JOBGo3EP1-bm7aF9ROuQO6Jqesk.svg"
|
|
||||||
style="display: inline; height: 1em; vertical-align: top"
|
|
||||||
alt="visitor count"
|
|
||||||
/>
|
|
||||||
people to see
|
|
||||||
</h1>
|
|
||||||
<h2>
|
|
||||||
For faster theming see
|
|
||||||
<a href="/page/ttytheme/settings">settings</a>
|
|
||||||
</h2>
|
|
||||||
<h2>
|
|
||||||
All themes generated here are under
|
|
||||||
<a href="https://unlicense.org/" target="_blank">unlicense</a>, but
|
|
||||||
credit is appriciated :), source code:
|
|
||||||
<a href="/git" target="_blank">git</a>
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<noscript>
|
|
||||||
<div class="nojs">
|
|
||||||
<h1>This generator won't work without JavaScript enabled :(</h1>
|
|
||||||
<h1>
|
|
||||||
If you don't trust me, check the JavaScript yourself
|
|
||||||
<a
|
|
||||||
href="https://github.com/TruncatedDinosour/website/tree/terminal/content/js/ttytheme"
|
|
||||||
target="_blank"
|
|
||||||
>on GitHub</a
|
|
||||||
>
|
|
||||||
</h1>
|
|
||||||
</div>
|
|
||||||
</noscript>
|
|
||||||
|
|
||||||
<div class="buttons">
|
|
||||||
<button id="clear-states">Clear saved slider states</button>
|
|
||||||
<button id="generate-theme">Generate (refresh) theme</button>
|
|
||||||
<button id="export-file">Export theme as file</button>
|
|
||||||
<button id="copy">Copy to clipboard</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="split">
|
|
||||||
<div id="menu"></div>
|
|
||||||
<pre id="theme-output" class="output"></pre>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,96 +0,0 @@
|
||||||
<!doctype html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>Ari::web -> TTYSettings</title>
|
|
||||||
|
|
||||||
<meta
|
|
||||||
name="description"
|
|
||||||
content="TTY theme generator's by ari-web settings"
|
|
||||||
/>
|
|
||||||
<meta
|
|
||||||
name="keywords"
|
|
||||||
content="tty, theme, linux, cli, terminal, generator, theme-generator, foss, unlicense, settings"
|
|
||||||
/>
|
|
||||||
<meta
|
|
||||||
name="robots"
|
|
||||||
content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<meta property="og:type" content="website" />
|
|
||||||
<meta name="color-scheme" content="dark" />
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
<!--//--><![CDATA[//><!--
|
|
||||||
/**
|
|
||||||
* @licstart The following is the entire license notice for the JavaScript
|
|
||||||
* code in this page.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2022 Ari Archer
|
|
||||||
*
|
|
||||||
* The JavaScript code in this page is free software: you can redistribute
|
|
||||||
* it and/or modify it under the terms of the GNU General Public License
|
|
||||||
* (GNU GPL) as published by the Free Software Foundation, either version 3
|
|
||||||
* of the License, or (at your option) any later version. The code is
|
|
||||||
* distributed WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU GPL
|
|
||||||
* for more details.
|
|
||||||
*
|
|
||||||
* As additional permission under GNU GPL version 3 section 7, you may
|
|
||||||
* distribute non-source (e.g., minimized or compacted) forms of that code
|
|
||||||
* without the copy of the GNU GPL normally required by section 4, provided
|
|
||||||
* you include this license notice and a URL through which recipients can
|
|
||||||
* access the Corresponding Source.
|
|
||||||
*
|
|
||||||
* @licend The above is the entire license notice for the JavaScript code
|
|
||||||
* in this page.
|
|
||||||
*/
|
|
||||||
|
|
||||||
//--><!]]>
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<script
|
|
||||||
type="module"
|
|
||||||
src="/content/js/ttytheme/settings.js"
|
|
||||||
defer
|
|
||||||
></script>
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="/content/styles/clean/index.css" />
|
|
||||||
<link rel="stylesheet" href="/content/styles/ttytheme/styles.css" />
|
|
||||||
<link rel="stylesheet" href="/content/styles/ttytheme/settings.css" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<h1>
|
|
||||||
Linux TTY theme generator by Ari::web settings for visitor
|
|
||||||
<img
|
|
||||||
id="visitors"
|
|
||||||
src="http://us.ari.lt/counter/@ari/kpnuBU0qISQlfR7cSNwwg9oW8654-RguVrXh9JOBGo3EP1-bm7aF9ROuQO6Jqesk.svg"
|
|
||||||
style="display: inline; height: 1em; vertical-align: top"
|
|
||||||
alt="visitor count"
|
|
||||||
/>
|
|
||||||
</h1>
|
|
||||||
<h3><a href="/page/ttytheme">TTYTheme home</a></h3>
|
|
||||||
<br />
|
|
||||||
|
|
||||||
<noscript>
|
|
||||||
<div class="nojs">
|
|
||||||
<h1>This generator won't work without JavaScript enabled :(</h1>
|
|
||||||
<h1>
|
|
||||||
If you don't trust me, check the JavaScript yourself
|
|
||||||
<a
|
|
||||||
href="https://github.com/TruncatedDinosour/website/tree/terminal/content/js/ttytheme"
|
|
||||||
target="_blank"
|
|
||||||
>on GitHub</a
|
|
||||||
>
|
|
||||||
</h1>
|
|
||||||
</div>
|
|
||||||
</noscript>
|
|
||||||
|
|
||||||
<ul id="clr-fields"></ul>
|
|
||||||
|
|
||||||
<button id="commit">Commit</button>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
21
pyproject.toml
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
[tool.pyright]
|
||||||
|
pythonVersion = "3.10"
|
||||||
|
exclude = [
|
||||||
|
"venv",
|
||||||
|
"**/node_modules",
|
||||||
|
"**/__pycache__",
|
||||||
|
".git"
|
||||||
|
]
|
||||||
|
include = ["src", "scripts"]
|
||||||
|
venv = "venv"
|
||||||
|
stubPath = "src/stubs"
|
||||||
|
typeCheckingMode = "strict"
|
||||||
|
useLibraryCodeForTypes = true
|
||||||
|
reportMissingTypeStubs = true
|
||||||
|
|
||||||
|
[tool.mypy]
|
||||||
|
exclude = [
|
||||||
|
"^venv/.*",
|
||||||
|
"^node_modules/.*",
|
||||||
|
"^__pycache__/.*",
|
||||||
|
]
|
20
robots.txt
|
@ -1,20 +0,0 @@
|
||||||
# Block AI
|
|
||||||
User-agent: ChatGPT-User
|
|
||||||
User-agent: CCBot
|
|
||||||
User-agent: ClaudeBot
|
|
||||||
User-agent: Claude-Web
|
|
||||||
User-agent: cohere-ai
|
|
||||||
User-agent: anthropic-ai
|
|
||||||
User-agent: Amazonbot
|
|
||||||
User-agent: Diffbot
|
|
||||||
User-agent: Google-Extended
|
|
||||||
User-agent: GPTBot
|
|
||||||
User-agent: magpie-crawler
|
|
||||||
User-agent: PerplexityBot
|
|
||||||
Disallow: /
|
|
||||||
|
|
||||||
# Allow everything else :)
|
|
||||||
User-agent: *
|
|
||||||
Allow: /
|
|
||||||
|
|
||||||
Sitemap: https://ari.lt/sitemap.xml
|
|
|
@ -1,46 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
mkdata() {
|
|
||||||
while read -r line; do
|
|
||||||
printf '"%s",' "$line"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
main() {
|
|
||||||
printf ' * %s... ' 'Generating pages api'
|
|
||||||
|
|
||||||
{
|
|
||||||
printf '%s' '['
|
|
||||||
for page in page/*; do
|
|
||||||
echo "/$page"
|
|
||||||
done | mkdata | sed 's/,$//'
|
|
||||||
echo ']'
|
|
||||||
} >api/pages.json
|
|
||||||
|
|
||||||
printf ' * %s... ' 'Generating api list'
|
|
||||||
|
|
||||||
# shellcheck disable=SC2094
|
|
||||||
{
|
|
||||||
printf '%s' '['
|
|
||||||
find api -type f -exec basename {} \; | mkdata | sed 's/,$//'
|
|
||||||
echo ']'
|
|
||||||
} >api/apis.json
|
|
||||||
|
|
||||||
echo 'done'
|
|
||||||
|
|
||||||
printf ' * %s... ' 'Generating api hashes'
|
|
||||||
|
|
||||||
mkdir -p -- api_hash
|
|
||||||
rm -rf -- api_hash/*
|
|
||||||
|
|
||||||
for api in api/*; do
|
|
||||||
api_base="${api##*/}"
|
|
||||||
sha256sum "$api" | awk '{ print $1 }' | tr -d '\n' >"api_hash/${api_base//./_}_hash.txt"
|
|
||||||
done
|
|
||||||
|
|
||||||
echo 'done'
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
|
@ -1,19 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
S='./scripts'
|
|
||||||
SCRIPTS=(sass minjs minhtml apis)
|
|
||||||
|
|
||||||
main() {
|
|
||||||
for script in "${SCRIPTS[@]}"; do
|
|
||||||
_s="$S/$script.sh"
|
|
||||||
|
|
||||||
chmod +x -- "$_s"
|
|
||||||
"$_s" &
|
|
||||||
done
|
|
||||||
|
|
||||||
wait
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
|
@ -1,10 +0,0 @@
|
||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
main() {
|
|
||||||
echo '>> Removing all .min.css files'
|
|
||||||
find content/ -not -ipath "./node_modules/*" -name '*.min.css' -type f -exec rm -rfv {} \;
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
|
@ -1,16 +0,0 @@
|
||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
main() {
|
|
||||||
printf '%s' 'Make sure you added an entry to api/usage.json'
|
|
||||||
read -r _
|
|
||||||
|
|
||||||
git diff >/tmp/ari-web.diff
|
|
||||||
|
|
||||||
git add -A
|
|
||||||
git commit -sa
|
|
||||||
git push -u origin "$(git rev-parse --abbrev-ref HEAD)"
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
|
@ -1,19 +0,0 @@
|
||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
main() {
|
|
||||||
if [ "$CI" ]; then
|
|
||||||
echo 'Minifying all HTML'
|
|
||||||
|
|
||||||
find . -not -ipath "./node_modules/*" -type d -exec sh -c 'find {} -maxdepth 0 -name ".minexclude"' \; -prune -o -type f -name "*.html" \
|
|
||||||
-exec html-minifier --collapse-whitespace -o {}.min {} \; \
|
|
||||||
-exec rm {} \; \
|
|
||||||
-exec mv {}.min {} \; \
|
|
||||||
-exec sh -c "printf '\n\n%s\n' '<!-- source code @ /git -->' >>\"\$1\"" -- {} \;
|
|
||||||
else
|
|
||||||
echo 'Not minifying HTML in non-CI mode'
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
|
@ -1,19 +0,0 @@
|
||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
main() {
|
|
||||||
if [ "$CI" ]; then
|
|
||||||
echo 'Minifying all JavaScript'
|
|
||||||
|
|
||||||
find content/js/ -not -ipath "./node_modules/*" -type f \
|
|
||||||
-name "*.js" ! -name "*.min.*" ! -name "vfs_fonts*" \
|
|
||||||
-exec uglifyjs --compress sequences=true,conditionals=true,booleans=true -o {}.min {} \; \
|
|
||||||
-exec rm {} \; \
|
|
||||||
-exec mv {}.min {} \;
|
|
||||||
else
|
|
||||||
echo 'Not in CI mode, skipping JS minification'
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
|
@ -1,18 +0,0 @@
|
||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
main() {
|
|
||||||
if [ "$CI" ]; then
|
|
||||||
echo 'Minifying APIs'
|
|
||||||
|
|
||||||
for api in api/*; do
|
|
||||||
api_cont="$(sed 's/^\s*//g; s/: /:/g' "$api" | tr -d '\n')"
|
|
||||||
printf '%s' "$api_cont" >"$api"
|
|
||||||
done
|
|
||||||
else
|
|
||||||
echo 'Not minifying APIs as not in CI mode'
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|