Starting Foundation automation

This commit is contained in:
DarkFeather 2022-07-02 10:24:10 -05:00
parent 59b54619f7
commit 94f546a7be
Signed by: DarkFeather
GPG Key ID: 1CC1E3F4ED06F296
90 changed files with 4162 additions and 48 deletions

View File

@ -38,6 +38,7 @@ all:
static: true
sslidentity: aninix.net-0001
secdetection: true
iptv_location: Milwaukee
Node0:
ipinterface: enp1s0f0
ip: 10.0.1.4

View File

@ -0,0 +1,57 @@
#!/bin/bash
set -x
URI=https://foundation.aninix.net/assets/css/theme-arc-green.css
# Gitea arc-green palette
BOLDTEXT='#87ab63'
TEXT='#9e9e9e'
BGCOLOR='#383c4a'
ACCENTBG='#353945'
HEADERBG='#404552'
ROW='#2a2e3a'
HOVER='#a0cc75'
NAV='#2e323e'
# AniNIX palette
ANINIXBOLD='#df0000'
ANINIXTEXT='#ffffff'
ANINIXBG='#000000'
ANINIXACCENTBG='#303030'
ANINIXHEADERBG='#151515'
ANINIXROW='#2a2a2a'
ANINIXHOVER='#af0000'
ANINIXNAV='#000000'
(curl -ks "$URI"; echo; echo ".home a {
color: $ANINIXBOLD;
}
.bounding {
border: 1px solid #FFF;
border-radius: 15px;
margin: 0;
margin-top: 20px;
padding: 10px;
background-color: #000;
margin-bottom: 30px;
display: block;
}
") \
| sed "s/$BOLDTEXT/$ANINIXBOLD/gI" \
| sed "s/$TEXT/$ANINIXTEXT/gI" \
| sed "s/$ACCENTBG/$ANINIXACCENTBG/gI" \
| sed "s/$HEADERBG/$ANINIXHEADERBG/gI" \
| sed "s/$ROW/$ANINIXROW/gI" \
| sed "s/$NAV/$ANINIXNAV/gI" \
| sed "s/$HOVER/$ANINIXHOVER/gI" \
| sed "s/$BGCOLOR/$ANINIXBG/gI" > /var/lib/gitea/custom/public/css/theme-aninix.css
cd /var/lib/gitea/web-snippets
head="$(curl -ks https://aninix.net/ | egrep -B 99999 '^<div class="home"')"
foot="$(curl -ks https://aninix.net/ | egrep -A 99999 '<footer>')"
for i in `find . -type f`; do
(echo "$head"
cat "$i"
echo "$foot") > /var/lib/gitea/custom/public/"$i".html
done

View File

@ -0,0 +1,32 @@
<?php
/*
* Build a sitemap dynamically.
* Update Gitea's sitemap with: `php ./sitemap.php > /var/lib/gitea/custom/sitemap.xml`
*
* Builds according to https://www.sitemaps.org/protocol.html
*/
/* Globals */
$path="/srv/http/aninix.net/";
echo '<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
';
exec("(echo /srv/http/aninix.net/index.php; find /srv/http/aninix.net/pages -type f; find /srv/http/aninix.net/martialarts/ -type f) | egrep \.php\$ | egrep -v ^./unlisted\|^./errors/\|head.php\|foot.php\|test\|Template\|darknet", $output);
foreach ($output as &$file) {
echo ' <url>
';
echo ' <loc>https://aninix.net/'.substr($file,strlen($path)).'</loc>
';
echo ' <lastmod>'.date('Y-m-d',filemtime($file)).'</lastmod>
';
echo ' </url>
';
}
/* Print footer */
echo '</urlset>
';
?>

View File

@ -0,0 +1,7 @@
#e11d21 Blocked ; There are functional or technical reasons this can't be implemented yet
#eb6420 Duplicate ; Another issue or PR already describes this issue
#bfd4f2 On-hold ; Evaluated but not enough resources to complete now
#009800 Peer-review ; Being reviewed for quality prior to merge
#207de5 RFC ; More information and feedback is needed
#fbca04 Wontfix ; Not a bug -- way it works
#9c4ac2 In-progress ; Being worked.

View File

@ -0,0 +1,31 @@
# http://www.wtfpl.net/about/
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.
ANINIX ADDENDUM
Trademark 2017 (https://aninix.net/)
The "AniNIX" name and |> logo are trademarked as of 2017/11/21.
AniNIX materials may be reproduced and re-used (though you must
contact the admins of the network to get written permission to use
the AniNIX name or logo) so long as such reproduction or re-use
does not inhibit the original AniNIX use of the same.
Attribution is appreciated for other materials but not legally
required or necessary.
"AniNIX" trademark serial: 87177883
|> Logo trademark serial: 87177887

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,13 @@
// Thanks to https://stackoverflow.com/questions/31060722/cordova-refuse-to-execute-inline-event-handler-because-it-violates-the-followi
document.addEventListener('DOMContentLoaded', function () {
document.querySelector('img').addEventListener('click', clickHandler);
main();
});
function clickHandler(element) {
document.getElementById("adhan").play();
}
function main() {
}

Binary file not shown.

View File

@ -0,0 +1,28 @@
<html>
<head>
<title>AniNIX::Adhan \\ Call to prayer</title>
<link rel="icon" type="image/png" href="/adhan/AdhanIcon.png">
<link rel='apple-touch-icon' sizes='180x180' href='/adhan/AdhanIcon.png' />
<script src="/adhan/adhan.js" type="text/javascript"></script>
<meta name='apple-mobile-web-app-capable' content='yes' />
</head>
<body bgcolor="#000">
<center>
<p style="color: #AAA;">Click to play</p>
<!--image-->
<img src="./subhanallah.jpg" style="width:auto; height:100%" id="adhanimg" />
<!-- HTML5/back compatibility for desktops -->
<audio id=adhan>
<source src="./adhan.mp3" type="audio/mpeg">
<object>
<param name="autostart" value="false">
<param name="src" value="./adhan.mp3">
<param name="autoplay" value="false">
<param name="controller" value="false">
<embed src="./adhan.mp3" controller="false" autoplay="false" autostart="false" type="audio/mpeg"></embed>
</object>
</audio>
</center>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

View File

@ -0,0 +1,135 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<title>AniNIX | News</title>
<icon>https://foundation.aninix.net/assets/img/AniNIX.png</icon>
<logo>https://foundation.aninix.net/assets/img/AniNIX.png</logo>
<link rel="self" href="https://aninix.net/" />
<link href="https://aninix.net/" />
<updated>2019-12-10T12:28:00Z</updated>
<author>
<name>AniNIX</name>
</author>
<id></id>
<entry>
<title>IoT Security</title>
<link href="https://www.banfacialrecognition.com/">https://www.banfacialrecognition.com/</link>
<updated>2019-12-23T12:40:00Z</updated>
<summary>
<p>The AniNIX uses IoT devices as part of the Geth automation project, and as such we're watching IoT security threads. If folks aren't aware, there's a fight brewing between FFTF / EFF and facial recognition, and they're going after Ring hard.<br/>
<ul>
<li> Countries like China (and America a little bit) are looking at using facial recognition for a social credit score a la "Black Mirror". https://www.youtube.com/watch?v=CLo3e1Pak-Y
</li><li> Ring started a campaign to get police officers to push Ring cameras in homes in return for access to their Neighbors community. https://www.eff.org/deeplinks/2019/08/five-concerns-about-amazon-rings-deals-police
</li><li> FFTF started a campaign to ban facial recognition. https://www.banfacialrecognition.com/
</li><li> The rest of the security community has also found facial recognition unreliable. https://www.securityweek.com/massive-errors-found-facial-recognition-tech-us-study
</li><li> Ring was exposed as having issues with bootstrapping and other security issues. https://www.vice.com/en_us/article/epg4xm/amazon-ring-camera-security
</li><li> Some Ring accounts were breached with credential stuffing. https://latesthackingnews.com/2019/12/23/hackers-continue-to-dump-weak-ring-doorbell-credentials-online/
</li><li> FFTF started a No-Ring campaign. https://www.ringsafetywarning.com/
</li><li> EFF has issued a formal rebuff. https://www.eff.org/deeplinks/2019/12/ring-throws-customers-under-bus-after-data-breach</li>
</ul>
</p>
<p>This is likely to get worse before it gets better. If you are deploying Ring cameras (like we did before all this dropped), make sure you're at least following a few good practices. (More here: https://www.businessinsider.com/how-to-protect-amazon-ring-against-hackers-spying-2019-12#7-make-sure-your-ring-software-is-up-to-date-7)
<ul>
<li> Only deploy the Ring cameras external to the home.
</li><li> Turn on 2FA.
</li><li> Isolate your cameras on a guest wifi network.
</li><li> Make sure your Ring account's email is signed up on https://haveibeenpwned.com/. </li>
</ul>
</p>
</summary>
</entry>
<entry>
<title>Warrant Canary</title>
<link href="https://foundation.aninix.net/AniNIX/WarrantCanary">https://foundation.aninix.net/AniNIX/WarrantCanary</link>
<updated>2019-12-10T12:28:00Z</updated>
<summary>We want everyone to know that, despite recent law enforcement and Senate cries that they can't do their job without backdoors into encrypted communications (source: https://www.eff.org/deeplinks/2019/12/senate-judiciary-committee-wants-everyone-know-its-concerned-about-encryption), the AniNIX is committed to protecting your communications with our network.<br/><br/>
We do offer proxies of some semipublic information to outside sources -- Discord and GitHub (http://github.com/AniNIX) -- but our internal services over SSH, IRCS, and HTTPS are hardened and audited. <br/><br/>
We are now additionally offering a warrant canary. This is a GPG-based device for users to know that our communications have not been compromised. If you are cybersecurity-minded, please watch the linked repo.</summary>
</entry>
<entry>
<title>FFTF Security Pledge</title>
<link href="https://www.securitypledge.com/">https://www.securitypledge.com/</link>
<updated>2018-04-06T14:30:00Z</updated>
<summary>Fight for the Future and Demand Progress have published a Security Pledge in the wake of the Facebook failures. This pledge includes the following tenants: give users access and control over their data, strong data protections, limit data collection, equal protections for all, and resist improper government access and surveillance. The AniNIX will be taking on this pledge.</summary>
</entry>
<entry>
<title>Recent WebSec Audit</title>
<link href="https://www.htbridge.com/websec/?id=C8qMLuWD">https://www.htbridge.com/websec/?id=C8qMLuWD</link>
<updated>2018-03-17T02:46:00Z</updated>
<summary>We recently underwent a security audit with High-Tech Bridge's free Web Security suite. With some remediation, we now earn an A- on Web security and an A+ on SSL security. If you're looking for a free method to test your webserver, take a look at them. Please be aware that they don't respect Let's Encrypt, so be aware your scores may suffer.<a href="https://www.htbridge.com/ssl/?id=bu1sLh7n">Click here for the SSL scan report.</a></summary>
</entry>
<entry>
<title>Hardware Diagnostics</title>
<link href="https://discordapp.com/channels/@me">https://discordapp.com/channels/@me</link>
<updated>2018-02-07T13:23:00Z</updated>
<summary>We are noticing significant performance degradation from the integrated Marvell controller on the AniNIX::Forge2 frame. Due to cost reasons, the AniNIX is not locally highly available for some components -- we don't have another hypervisor to transfer VM's to. As such, the AniNIX services will be offline from 1700 to 2000 CST today while we route around the failing controller. We thank you for your patience, and we will be online from Discord to answer questions.</summary>
</entry>
<entry>
<title>Congressional Resolution of Disapproval</title>
<link href="https://www.markey.senate.gov/news/press-releases/markey-net-neutrality-resolution-reaches-40-vote-milestone-in-the-senate">https://www.markey.senate.gov/news/press-releases/markey-net-neutrality-resolution-reaches-40-vote-milestone-in-the-senate</link>
<updated>2018-01-16T00:00:00Z</updated>
<summary>In the resistance to the FCC vote, we have a foothold in the Senate. Watch Markey's resolution of dissatisfaction in the FCC as it passes through the Senate. Remember: You are the resistance.</summary>
</entry>
<entry>
<title>Spectre/Meltdown Patching</title>
<link href="https://meltdownattack.com">https://meltdownattack.com</link>
<updated>2018-01-05T12:30:10Z</updated>
<summary>Meltdown and Spectre are nasty speculative-execution vulnerabilities impacting most processors from ARM, Intel, and AMD -- patches are just now being released by the distributions. We are taking emergency patching tonight around 2200 Central. Patch your systems regularly over the next couple months, and insure IoT devices are behind a Geth overlay or some similar barrier.</summary>
</entry>
<entry>
<title>Licensing Under WTFPL</title>
<link href="https://aninix.net/wiki/AniNIX::Wiki:Copyrights">https://aninix.net/wiki/AniNIX::Wiki:Copyrights</link>
<updated>2017-05-31T12:30:10Z</updated>
<summary>The AniNIX is now licensed under WTFPL. Feel free to redistribute our products as you'd like. Only the AniNIX name and core icon are not covered by this license.</summary>
</entry>
<entry>
<title>Wannacry Has Changed</title>
<link href="https://aninix.net/cgit/cgit.cgi/ExploitChecks/tree/wannacry.ps1">https://aninix.net/cgit/cgit.cgi/ExploitChecks/tree/wannacry.ps1</link>
<updated>2017-05-19T12:30:10Z</updated>
<summary>WannaCry Ransomware is now infecting thousands upon thousands of Windows systems. Most researchers are recommending disabling SMBv1, even though some killswitches and decryption software exist. We now provide a PowerShell script in the ExploitChecks repository to identify if SMBv1 is still enabled. If you need a decryption package, see Wanakiwi. <a href="https://github.com/gentilkiwi/wanakiwi/releases">Download here.</a></summary>
</entry>
<entry>
<title>IDS Changes</title>
<link href="https://aninix.net/wiki/Cerberus">https://aninix.net/wiki/Cerberus</link>
<updated>2017-02-17T14:10:00Z</updated>
<summary>We will be updating our intrusion detection paradigm with experimental Cerberus prevention. Attacks against the aninix.net domain will result in permanent and complete firewall bans at the network edge. Make sure your attack tools ignore this domain if you want to access our services.</summary>
</entry>
<entry>
<title>CVE-2016-4484</title>
<link href="http://hmarco.org/bugs/CVE-2016-4484/CVE-2016-4484_cryptsetup_initrd_shell.html">http://hmarco.org/bugs/CVE-2016-4484/CVE-2016-4484_cryptsetup_initrd_shell.html</link>
<updated>2016-11-16T16:26:00Z</updated>
<summary>This bug allows an attacker with physical or remote access to grab a root shell via attacking dm-crypt. Use the following one-liner to patch. "sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="/GRUB_CMDLINE_LINUX_DEFAULT="panic=5 /' /etc/default/grub; grub-mkconfig -o /boot/grub/grub.cfg; grub-install --target=i386-pc /dev/sda"</summary>
</entry>
<entry>
<title>Rule 41</title>
<link href="https://www.eff.org/deeplinks/2016/04/rule-41-little-known-committee-proposes-grant-new-hacking-powers-government">https://www.eff.org/deeplinks/2016/04/rule-41-little-known-committee-proposes-grant-new-hacking-powers-government</link>
<updated>2016-9-23T16:00:00Z</updated>
<summary>The EFF has identified a provision in recent legislation that would allow US federal government to search for warrants in any district that may have carried the communication. This means the federal government can search for a favorable judge to go after Tor users and other privacy advocates. This legislation for Tor users and those running Tor, VPN, or remote-access services. The warrants could be used to hack into private machines and rummage for incriminating evidence. Join the fight to stop this legislation.</summary>
</entry>
<entry>
<title>Trademarking</title>
<link href="https://aninix.net/wiki/AniNIX::Wiki:General_disclaimer">https://aninix.net/wiki/AniNIX::Wiki:General_disclaimer</link>
<updated>2016-9-13T16:00:00Z</updated>
<summary>The AniNIX is currently filing for Class 009, 038, and 041 trademarks for the name and logo. Please do not create or distribute new products using this name without prior written permission from the admins.</summary>
</entry>
<entry>
<title>Caution on Windows!</title>
<link href="http://www.omgubuntu.co.uk/2016/08/windows-10-anniversary-update-delete-partition">http://www.omgubuntu.co.uk/2016/08/windows-10-anniversary-update-delete-partition</link>
<updated>2016-8-3T16:00:00Z</updated>
<summary>Be careful installing Windows 10 Updates, particularly the Anniversary Update. It may delete your Linux installs! The AniNIX has disabled the Windows Update service on all Windows hosts and will only update immediately after a backup cycle.</summary>
</entry>
</feed>

View File

@ -0,0 +1,472 @@
/* Borrowed from https://rawgit.com/BenZuser/Emby-Web-Dark-Themes-CSS/master/RED/theme.css */
/*
_________________________________________________________________________
------------------------- COLOR HEX & RGB CODES -------------------------
RED : #E81123 & (232, 17, 35)
DARK COLOR : #94131E
ORANGE : #FF8000 & (255, 128, 0)
DARK COLOR : #BF6000
ORANGE PLEX : #CC7B19 & (204, 123, 25)
DARK COLOR : #B35A00
YELLOW : #BDBD00 & (189, 189, 0)
DARK COLOR : #757500
GREEN : #52B54B & (82, 181, 75)
DARK COLOR : #3E8437
BLUE : #4285F4 & (66, 133, 244)
DARK COLOR : #0C57D6
BLUE DARK : #3367d6 & (51,103,214)
BLUE DARK (DARK) : #1f4698
PURPLE : #673AB7 & (103, 58, 183)
DARK COLOR : #3F2471
GRAY : #7F7F7F & (127, 127, 127)
DARK COLOR : #535353
PINK : #F707DF & (247, 7, 223)
DARK COLOR : #C604B3
*/
/*
_________________________________________________________________________
----------------------- EMBY THEME : ACCENT COLORS ----------------------
---------- Table of Contents ----------
1. ACCENT COLORS
1.1 Buttons
1.1.1 Checkboxes
1.1.2 Rectangles
1.1.3 Links & Text buttons
1.1.4 Others
1.2 Details
1.2.1 Circles
1.2.2 Indicators
1.2.3 Fonts
1.2.4 Icons
1.2.5 Dialogs & Action Sheets
1.2.6 Others
1.3 Fixes
2. MISCELLANEOUS MODIFICATIONS
2.1 Buttons
2.2 Details
2.2.1 Scrollbars
2.2.2 Logos
2.2.3 Others
2.3 Fixes
2.3.1 Dark Colors
*/
/* ------------------------ 1. ACCENT COLORS ------------------------- */
/* ----- 1.1 Buttons ----- */
/* 1.1.1 Checkboxes */
.emby-checkbox:checked + span + span + .checkboxOutline > .checkboxOutlineTick {
background-color: #E81123 !important; }
.emby-checkbox:checked + span + span + .checkboxOutline,
.progressring-spiner {
border-color: #E81123 !important; }
.emby-checkbox:focus + span + .emby-checkbox-focushelper {
background-color: #E81123 !important;
opacity: 0.26 !important; }
/* 1.1.2 Rectangles */
.raised {
background: #404040 !important;
color: #fff !important; }
.button-submit, .button-accent {
background: #E81123 !important;
color: #fff; }
.raised-mini.emby-button {
background: #E81123 !important;
color: #ffffff !important; }
/* Restart */
.btnRestartContainer.emby-button {
background: #E81123 !important;
color: #fff; }
/* Play & Resume */
.btnPlaySimple.emby-button {
background: #E81123 !important;
color: #fff; }
.btnResume.emby-button {
background: #94131E !important;
color: #fff; }
/* 1.1.3 Links & Text buttons */
.button-link, .button-flat-accent, .button-accent-flat,
.textlink {
color: #E81123 !important; }
.button-link:hover, .button-flat-accent:hover,
.button-accent-flat:hover, .textlink:hover {
color: #9b9b9b !important; }
.button-link:active, .button-flat-accent:active,
.button-accent-flat:active, .textlink:active {
color: #94131E !important; }
/* Top Header */
.emby-tab-button-active {
color: #E81123 !important; }
/* 1.1.4 Others */
/* Alpha Picker */
.alphaPickerButton-selected, .alphaPickerButton-tv:focus {
background-color: #E81123 !important;
color: #fff !important; }
/* Radio Buttons */
.mdl-radio__inner-circle {
background: #E81123 !important; }
.mdl-radio__button:checked + .mdl-radio__label + .mdl-radio__outer-circle {
border: 2px solid #E81123 !important; }
.mdl-radio__button:checked:focus + .mdl-radio__label + .mdl-radio__outer-circle + .mdl-radio__inner-circle {
-webkit-box-shadow: 0 0 0 10px rgba(232, 17, 35, 0.26) !important;
box-shadow: 0 0 0 10px rgba(232, 17, 35, 0.26) !important; }
/* Control Group Buttons */
div[data-role="controlgroup"] a.ui-btn-active[data-role='button'] {
background: #E81123 !important;
color: #ffffff !important; }
/* ----- 1.2 Details ----- */
/* 1.2.1 Circles */
/*.listItemIcon:not(.listItemIcon-transparent) {
background-color: $accent-color !important; }*/
.dashboardSection i.listItemIcon.md-icon {
background-color: #E81123 !important; }
.scheduledTaskPaperIconItem[data-status="Running"] i.listItemIcon.md-icon {
background-color: #94131E !important; }
/* Focus Helper circles */
.paper-icon-button-light:focus {
color: #E81123 !important; }
/* 1.2.2 Indicators */
.countIndicator, .playedIndicator {
background: #E81123 !important; }
.levelNormal {
background-color: #E81123 !important; }
.fullSyncIndicator {
background: #E81123 !important;
color: #fff; }
.playstatebutton-played i, .ratingbutton-withrating i {
color: #E81123 !important; }
p#pUpToDate i.md-icon {
background-color: #E81123 !important; }
/* Loading Spinners */
.mdl-spinner__layer-1, .mdl-spinner__layer-2, .mdl-spinner__layer-3,
.mdl-spinner__layer-4 {
border-color: #E81123 !important; }
.progressring-spiner {
border: 0.25em solid #E81123 !important; }
/* 1.2.3 Fonts */
.selectLabelFocused, .textareaLabelFocused, .inputLabelFocused {
color: #E81123 !important; }
.secondary.listItemBodyText span, div#divRunningTasks span {
color: #E81123 !important; }
/* 1.2.4 Icons */
.starIcon, .mediaInfoTimerIcon {
color: #E81123 !important; }
/* Top Header */
.btnActiveCast {
color: #E81123 !important; }
/* Now Playing Bar & Now Playing Page */
.repeatActive,
button.btnCommand.repeatToggleButton.autoSize.nowPlayingPageRepeatActive {
color: #E81123 !important; }
/* 1.2.5 Dialogs & Action Sheets */
/* 1.2.6 Others */
/* General Accent Color Modifications */
:focus {
outline: #E81123 auto 5px; }
select:focus {
border-color: #E81123 !important; }
::selection {
background-color: #94131E !important; }
.emby-input:focus, .emby-textarea:focus {
border-color: #E81123 !important; }
/* Google Now Playing Bar & Now Playing Page */
.iconOsdProgressInner, .mdl-slider__background-lower, .sliderBubble,
.mdl-slider::-webkit-slider-thumb {
background: #E81123 !important; }
.mdl-slider:focus::-webkit-slider-thumb {
-webkit-box-shadow: 0 0 0 10px rgba(232, 17, 35, 0.26);
box-shadow: 0 0 0 10px rgba(232, 17, 35, 0.26) !important; }
/* Firefox Now Playing Bar & Now Playing Page */
.mdl-slider::-moz-range-thumb, .mdl-slider::-moz-range-progress {
background: #E81123 !important; }
.mdl-slider:focus::-moz-range-thumb {
box-shadow: 0 0 0 10px rgba(232, 17, 35, 0.26) !important; }
/* Progress Bars */
.itemProgressBarForeground {
background-color: #E81123 !important; }
.taskProgressInner {
background: #E81123 !important; }
/* Google Progress Bars */
progress::-webkit-progress-value {
background: #E81123 !important; }
/* Firefox Progress Bars */
progress::-moz-progress-bar {
background: #E81123 !important; }
/* Edge Progress Bars */
progress {
background: #E81123 !important; }
/* Main Drawers */
.navMenuDivider {
background: #262626 !important; }
.adminDrawerLogo {
border-bottom: 1px solid #262626 !important; }
.mainDrawer {
background: #181818 !important; }
.sidebarHeader {
color: #bbbbbb !important; }
.navMenuOption {
color: #ffffff !important; }
.navMenuOption.navMenuOption-selected {
background: #252528 !important;
color: #E81123 !important; }
.navMenuOption:hover {
background: #252528 !important;
color: #9b9b9b !important; }
/* Metadata Editor */
div.jstree-wholerow.jstree-wholerow-clicked:hover,
div.jstree-wholerow.jstree-wholerow-clicked,
div.jstree-wholerow.jstree-wholerow-hovered {
background: #252528 !important; }
.jstree-anchor.jstree-clicked,
.jstree-anchor.jstree-clicked.jstree-hovered {
background: #252528 !important;
color: #E81123 !important; }
/* Multi-select */
.itemSelectionPanel {
border: 1px solid #E81123 !important; }
.selectionCommandsPanel {
background: #E81123 !important;
color: #fff; }
/* upNextDialog */
.upNextDialog-countdownText {
color: #E81123 !important; }
/* Selection Bars */
.emby-select-selectionbar, .emby-textarea-selectionbar,
.emby-input-selectionbar {
background-color: #E81123 !important; }
/* Media Info Detail Image */
.itemDetailImage.loaded:hover {
border: 1px solid #E81123 !important; }
/* 1.3 Fixes */
/* ------------------ 2. MISCELLANEOUS MODIFICATIONS ----------------- */
/* ----- 2.1 Buttons ----- */
/* Circles */
.fab {
background-color: transparent !important;
-webkit-box-shadow: none !important;
box-shadow: none !important;
-webkit-transition: none !important;
-o-transition: none !important;
transition: none !important; }
/* ----- 2.2 Details ----- */
/* 2.2.1 Scrollbars */
/* Google Chrome */
::-webkit-scrollbar-corner {
background-color: #3B3B3B; }
::-webkit-scrollbar {
width: 10px;
height: 10px;
background-color: #3B3B3B; }
::-webkit-scrollbar-thumb {
-webkit-border-radius: 2px;
border-radius: 2px;
background: #888888; }
/* Google Chrome - Dashboard Drawer */
div.scrollContainer.smoothScrollY::-webkit-scrollbar-corner {
background-color: transparent !important; }
div.scrollContainer.smoothScrollY::-webkit-scrollbar {
width: 2px;
height: 2px;
background-color: transparent !important; }
div.scrollContainer.smoothScrollY::-webkit-scrollbar-thumb {
-webkit-border-radius: 2px;
border-radius: 2px;
background: #888888; }
/* Google Chrome - Filter Dialog */
.dynamicFilterDialog::-webkit-scrollbar-corner {
background-color: transparent !important; }
.dynamicFilterDialog::-webkit-scrollbar {
width: 2px;
height: 2px;
background-color: transparent !important; }
.dynamicFilterDialog::-webkit-scrollbar-thumb {
-webkit-border-radius: 2px;
border-radius: 2px;
background: #888888; }
/* 2.2.2 Logos */
/* Login Page */
.imgLogoIcon {
content: url(https://cdn.rawgit.com/BenZuser/Emby-Dark-Themes-Resources/master/images/logos-and-icons/RED/logo.png) !important; }
/* Main Drawer Mobile */
.adminDrawerLogo img {
content: url(https://cdn.rawgit.com/BenZuser/Emby-Dark-Themes-Resources/master/images/logos-and-icons/RED/logo.png) !important; }
/* Home Page */
.pageTitleWithLogo {
background-image: url(https://cdn.rawgit.com/BenZuser/Emby-Dark-Themes-Resources/master/images/logos-and-icons/RED/logo.png) !important; }
/* 2.2.3 Others */
/* CSS Box */
#txtCustomCss {
height: 300px !important;
overflow-y: scroll !important; }
/* Select Box */
select option {
background-color: #2b2b2b !important;
color: #ffffff !important; }
/* Dialogs */
.formDialogHeader:not(.formDialogHeader-clear),
.formDialogFooter:not(.formDialogFooter-clear) {
background-color: #121212 !important;
color: #fff; }
/* Headers */
.skinHeader {
background-color: #080808 !important;
color: #fff !important; }
.skinHeader-withBackground {
background-color: #080808 !important; }
@supports (backdrop-filter: blur(1.5em)) or (-webkit-backdrop-filter: blur(1.5em)) {
.skinHeader-blurred {
background: rgba(20, 20, 20, 0.7) !important;
-webkit-backdrop-filter: blur(1.5em) !important;
backdrop-filter: blur(1.5em) !important; } }
.skinHeader.semiTransparent {
-webkit-backdrop-filter: none !important;
backdrop-filter: none !important;
background-color: rgba(0, 0, 0, 0.4) !important;
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(10%, rgba(0, 0, 0, 0.7)), color-stop(10%, transparent)) !important;
background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.7) 10%, transparent) !important;
background-image: -moz-linear-gradient(top, rgba(0, 0, 0, 0.7) 10%, transparent) !important;
background-image: -o-linear-gradient(top, rgba(0, 0, 0, 0.7) 10%, transparent) !important;
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.7) 10%, transparent) !important; }
.appfooter {
background: #080808 !important;
color: #fff !important; }
@supports (backdrop-filter: blur(10px)) or (-webkit-backdrop-filter: blur(10px)) {
.appfooter-blurred {
background: rgba(24, 24, 24, 0.7) !important;
-webkit-backdrop-filter: blur(20px) !important;
backdrop-filter: blur(20px) !important; } }
/* TV Global Modifications */
.emby-tab-button-active.emby-button-tv {
color: #fff !important; }
.guide-channelHeaderCell, .guide-channelTimeslotHeader {
background: #2e2e2e !important; }
.guide-programTextIcon {
color: #1e1e1e !important;
background: #555 !important; }
.guide-headerTimeslots {
color: #ccc !important; }
/* ----- 2.3 Fixes ----- */
/* 2.3.1 Dark Colors */
.autoorganizetable tbody tr:nth-child(odd) td, .autoorganizetable tbody tr:nth-child(odd) th {
background-color: #222326 !important; }
.autoorganizetable > .table > tbody > tr {
border: 1px solid #222326 !important; }
/*
_____________________________________________________________________
Emby Dark Themes is maintained by Ben Z (BenZuser)
with the contribution of Happy2Play.
_____________________________________________________________________
*/
/* TEMPORARY FIXES */
/* Links */
.searchSuggestionsList a, .noItemsMessage a, a.lnkPremiere {
color: #E81123 !important; }
.searchSuggestionsList a:hover, .noItemsMessage a:hover,
a.lnkPremiere:hover {
color: #9b9b9b !important; }
.searchSuggestionsList a:active, .noItemsMessage a:active,
a.lnkPremiere:active {
color: #94131E !important; }

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

View File

@ -0,0 +1 @@
AniNIX.png

View File

@ -0,0 +1 @@
AniNIX.png

View File

@ -0,0 +1 @@
AniNIX.png

View File

@ -0,0 +1 @@
AniNIX.png

View File

@ -0,0 +1 @@
/srv/yggdrasil/Pictures/AniNIX/Icons/

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 614 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 657 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 439 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 KiB

View File

@ -0,0 +1,558 @@
<!DOCTYPE html>
<html lang="en-US" class="theme-">
<head data-suburl="">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title> AniNIX </title>
<link rel="manifest" href="data:application/json;base64,eyJuYW1lIjoiQW5pTklYIiwic2hvcnRfbmFtZSI6IkFuaU5JWCIsInN0YXJ0X3VybCI6Imh0dHBzOi8vZm91bmRhdGlvbi5hbmluaXgubmV0LyIsImljb25zIjpbeyJzcmMiOiJodHRwczovL2ZvdW5kYXRpb24uYW5pbml4Lm5ldC9hc3NldHMvaW1nL2xvZ28ucG5nIiwidHlwZSI6ImltYWdlL3BuZyIsInNpemVzIjoiNTEyeDUxMiJ9LHsic3JjIjoiaHR0cHM6Ly9mb3VuZGF0aW9uLmFuaW5peC5uZXQvYXNzZXRzL2ltZy9sb2dvLnN2ZyIsInR5cGUiOiJpbWFnZS9zdmcreG1sIiwic2l6ZXMiOiI1MTJ4NTEyIn1dfQ=="/>
<meta name="theme-color" content="#ff0000">
<meta name="default-theme" content="aninix" />
<meta name="author" content="AniNIX::Foundation" />
<meta name="description" content="AniNIX::Foundation \\ Code, documentation, and information sharing powered by Gitea (git with a cup of tea)" />
<meta name="keywords" content="go,git,self-hosted,gitea,aninix,aninix::foundation">
<meta name="referrer" content="no-referrer" />
<meta name="_csrf" content="Zy1wOJHiu0JeIfnxtOvKihasTFw6MTYzODQ5MTU0MzAzMzAwMTg1NA" />
<script>
window.config = {
AppVer: '1.15.6',
AppSubUrl: '',
AssetUrlPrefix: '\/assets',
CustomEmojis: {"codeberg":":codeberg:","git":":git:","gitea":":gitea:","github":":github:","gitlab":":gitlab:","gogs":":gogs:"},
UseServiceWorker: true ,
csrf: 'Zy1wOJHiu0JeIfnxtOvKihasTFw6MTYzODQ5MTU0MzAzMzAwMTg1NA',
HighlightJS: false,
SimpleMDE: false,
Tribute: false,
NotificationSettings: {
MinTimeout: 10000 ,
TimeoutStep: 10000 ,
MaxTimeout: 60000 ,
EventSourceUpdateTime: 10000 ,
},
EnableTimetracking: true,
PageIsProjects: false,
};
</script>
<link rel="icon" href="/assets/img/logo.svg" type="image/svg+xml">
<link rel="alternate icon" href="/assets/img/favicon.png" type="image/png">
<link rel="stylesheet" href="/assets/css/index.css?v=a4b678d242d5a62868dcb904e8959b4e">
<noscript>
<style>
.dropdown:hover > .menu { display: block; }
.ui.secondary.menu .dropdown.item > .menu { margin-top: 0; }
</style>
</noscript>
<style class="list-search-style"></style>
<meta property="og:title" content="AniNIX">
<meta property="og:type" content="website" />
<meta property="og:image" content="/assets/img/logo.png" />
<meta property="og:url" content="https://foundation.aninix.net/" />
<meta property="og:description" content="AniNIX::Foundation \\ Code, documentation, and information sharing powered by Gitea (git with a cup of tea)">
<meta property="og:site_name" content="AniNIX" />
<link rel="stylesheet" href="/assets/css/theme-aninix.css?v=a4b678d242d5a62868dcb904e8959b4e">
<link rel="icon" type="image/png" href="/img/AniNIX.png" />
<link rel="alternate" type="application/rss+xml" title="AniNIX::RSS" href="/aninix.xml" />
<link rel='apple-touch-icon' sizes='180x180' href='/img/AniNIX.png' />
<meta name='apple-mobile-web-app-capable' content='yes' />
</head>
<body>
<div class="full height">
<noscript>This website works better with JavaScript.</noscript>
<div class="ui top secondary stackable main menu following bar light">
<div class="ui container" id="navbar">
<div class="item brand" style="justify-content: space-between;">
<a href="/">
<img class="ui mini image" width="30" height="30" src="/assets/img/logo.svg">
</a>
<div class="ui basic icon button mobile-only" id="navbar-expand-toggle">
<i class="sidebar icon"></i>
</div>
</div>
<a class="item active" href="/">Home</a>
<a class="item " href="/explore/repos">Explore</a>
<a class="item" target="_blank" id="chat" href="https://irc.aninix.net/">Chat</a>
<a class="item" target="_blank" id="pwdchange" href="https://password.aninix.net/">Change Password</a>
<a class="item" id="martialarts" href="/martialarts/">Martial Arts</a>
<a class="item" target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io">Help</a>
<div class="right stackable menu">
<a class="item" href="/user/sign_up">
<svg viewBox="0 0 16 16" class="svg octicon-person" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M10.5 5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0zm.061 3.073a4 4 0 1 0-5.123 0 6.004 6.004 0 0 0-3.431 5.142.75.75 0 0 0 1.498.07 4.5 4.5 0 0 1 8.99 0 .75.75 0 1 0 1.498-.07 6.005 6.005 0 0 0-3.432-5.142z"/></svg> Register
</a>
<a class="item" rel="nofollow" href="/user/login?redirect_to=%2f">
<svg viewBox="0 0 16 16" class="svg octicon-sign-in" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2 2.75C2 1.784 2.784 1 3.75 1h2.5a.75.75 0 0 1 0 1.5h-2.5a.25.25 0 0 0-.25.25v10.5c0 .138.112.25.25.25h2.5a.75.75 0 0 1 0 1.5h-2.5A1.75 1.75 0 0 1 2 13.25V2.75zm6.56 4.5 1.97-1.97a.75.75 0 1 0-1.06-1.06L6.22 7.47a.75.75 0 0 0 0 1.06l3.25 3.25a.75.75 0 1 0 1.06-1.06L8.56 8.75h5.69a.75.75 0 0 0 0-1.5H8.56z"/></svg> Sign In
</a>
</div>
</div>
</div>
<div class="home">
<div class="ui stackable middle very relaxed page grid">
<div class="sixteen wide center aligned centered column">
<div class="ui negative message"><p>We are open despite COVID-19 -- those attending in person will need to sign a waiver of health and follow all state requirements, including wearing a mask.</p></div>
<div>
<img class="logo" src="/assets/img/icons/MartialArtsIcon.png" />
</div>
<div class="hero">
<h1 class="ui icon header title">
AniNIX Martial Arts
</h1>
<h2>Open-source, research-driven self-defense and personal health</h2>
<p>AniNIX Martial Arts is a small martial arts collective focusing on research-driven martial arts. Our core style is USHF HapKiDo, but we are influenced by HEMA, Razmafzar, Kali, Shaolin, Silat, JKD, BJJ, and many other systems. We are a research-driven group -- we encourage cross-training with other systems and will bring in new concepts regularly. The class is open to all experience levels, gender identity, gender expression, sexual orientation, religious or cultural identity, socioecomic status, or age (above 14), in Southcentral Wisconsin -- we will fit your training to your needs and goals.</p><p>Drop-ins are welcome, and registration is cheap. We hope you'll give us a chance to show you what we can do.</p>
</div>
</div>
</div>
<div class="ui stackable middle very relaxed page grid">
<div class="eight wide center column">
<h1 class="hero ui icon header">
<img width=20px height=20px src='/assets/img/icons/FoundationIcon.png'/>
<a href="/user/login?redirect_to=%2fAniNIX_Martial_Arts">Open-source</a>
</h1>
<p class="large">
We want your training with our system to become a part of your life. This means that we provide access to a revision-controlled copy of our notes that all our students can download, keep, and contribute to. We're tired of the old era where how the system works is kept hidden from students and piecemealed out as a marketing ploy -- we want to be as trasparent as possible in how our program and our martial art function. Transparency keeps our instructors honest and our students engaged -- this means a better martial arts experience for everyone.
</p>
</div>
<div class="eight wide center column">
<h1 class="hero ui icon header">
<img width=20px height=20px src='/assets/img/ushf.jpg'/>
<a href='https://ushapkidofederation.wordpress.com/'>Research-driven</a>
</h1>
<p class="large">
Our system is always growing. We are a United States HapKiDo Federation (USHF) school, and that gives us access to high-quality instructors and seminar material each year from across the US. We also maintain good relationships with other schools in our area -- we want our students to examine what they're learing and make sure that it works, and that means looking at different perspectives.
</p> </div>
</div>
<div class="ui stackable middle very relaxed page grid">
<div class="eight wide center column">
<h1 class="hero ui icon header">
<img width=20px height=20px src="/assets/img/icons/MartialArtsIcon.png"/>
<a href="/martialarts/index.html#storefront">Low-cost</a>
</h1>
<p class="large">We are non-profit group -- we train because we feel like it makes life better, not to make money. As such, our costs are publicly documented and our rates match the same. Classes will be informed of potential changes to costs well in advance, and we use recurring payments. We want you thinking about your training, not how you're going to pay for it.</p>
<p class="large">
<ul style="text-align: left;">
<li><b>Cost:</b> $10 per month in-person; $5 per month livestream -- pay below.</li>
<li><b>Lessons:</b>Mondays and Thursdays 7-8:30 p.m.</li>
<li><b>Sparring:</b> Mondays and Thursdays 6-7 p.m.</li>
<li><b>Shaolin Workouts:</b> Saturday mornings at 8 a.m. by livestream only</li>
<li><b>Location:</b> <a href="https://g.page/aninix-martial-arts?share">225 Blaser Drive, Belleville, WI</a></li>
<li><b>What to bring:</b> Exercise clothes and water</li>
</ul></p>
</div>
<div class="eight wide center column">
<h1 class="hero ui icon header">
<img width=20px height=20x src="/assets/img/icons/IRCIcon.png"/>
<a href="/martialarts/index.html#social">Real-life First</a>
</h1>
<p class="large">
Everyone is welcome! Class attendance is not mandated and belt-testing is not required to train. As a courtesy, please inform the class of your absence or intended late arrival -- real-life comes first, and we're happy to work with your needs. As long as one person shows, we'll have class -- the smaller the class, the more tailored it is, but the bigger classes mean more partners and body types.</p>
<p class="large">
Our focus is also on what you will actually use. While we appreciate traditional and esoteric training for self-development, our weekly classes are focused on modern techniques and training methods so that you get the most out of your time. Our goal is to help create a community of prepared and healthy citizens, and we believe martial arts helps build that in a way no other activity can.
</p>
</div>
</div>
<hr style="margin-top: 50px;" />
<div class="ui stackable middle very relaxed page grid" id="social">
<div class="sixteen wide center aligned centered column">
<div class="hero">
<h2 id=social>Follow us on social media</h2>
<p class=large>We want to stay in touch with you, so we are present on the social media platforms we find applicable.<br/> Have one you want us on? Contact us and let us know!</p>
</div>
<div class="ui stackable middle very relaxed page grid" id="social">
<div class="two wide center column"><p>&nbsp;</p></div>
<div class="two wide center column"><a title=RSS href="/martialarts/maqotw.xml"><img style="width: 50px; height:auto; margin: 0; padding: 0 auto;" alt=RSS src="/assets/img/social/rss.png" /></a></div>
<div class="two wide center column"><a title=Discord href="https://discord.gg/2bmggfR"><img alt=Discord style="width: 50px; height:auto; margin: 0; padding: 0 auto;" src="/assets/img/social/discord.ico" /></a></div>
<div class="two wide center column"><a title=NextDoor href="https://nextdoor.com/news_feed/?post=112835813"><img alt=NextDoor src="/assets/img/social/nextdoor.png" style="width: 50px; height:auto; margin: 0; padding: 0 auto;" /></a></div>
<div class="two wide center column"><a title=YouTube href="https://www.youtube.com/channel/UCVAkee-WaInnZbPn16bqzrw/about?view_as=subscriber"><img src="/assets/img/social/youtube.png" style="width: 50px; height:auto; margin: 0; padding: 0 auto;" /></a></div>
<div class="two wide center column"><a title=Gitea href="/AniNIX_Martial_Arts"><img style="width: 50px; height:auto; margin: 0; padding: 0 auto;" src="/assets/img/gitea-lg.png" /></a></div>
<div class="two wide center column"><a title=Facebook href="https://www.facebook.com/groups/aninixmartialarts/"><img style="width: 50px; height:auto; margin: 0; padding: 0 auto;" src="/assets/img/social/facebook.png" /></a></div>
<div class="two wide center column"><p>&nbsp;</p></div>
</div>
</div>
</div>
<hr style="margin-top: 50px;" />
<div class="ui stackable middle very relaxed page grid">
<script src="https://js.stripe.com/v3"></script>
<div class="sixteen wide center aligned centered column">
<div class="hero">
<h2 id="storefront">Our storefront</h2>
<p>AniNIX Martial Arts has to charge some fees in order to operate. We hope you find these reasonable -- we do our best to keep costs as low as possible and <a href="https://aninix.net/mawiki/Wiki/src/branch/main/Budget.md">our budget is public</a>. Please reach out on Discord or IRC if you have questions or concerns.</p>
<p>We really don't like talking about money -- we're here to help people learn, not make a buck. So, all of our class signups are recurring charges each month -- that way, we don't have to pester you. You're welcome to cancel at any time. To cancel, just contact us on <a href="/martialarts/index.html#social">any platform</a> and an admin will take care of it for you.</p>
<p><b>Current students:</b> Because our space is currently limited, please make sure to note which days and times you're coming on-site at the <a href="https://aninix.net/user/login?redirect_to=%2fmawiki%2fHapKiDo%2fsrc%2fbranch%2fmain%2fSignup.md">sign-up page</a>.</p>
<p>&nbsp;<br/></p>
</div>
</div>
</div>
</div>
<div class="ui stackable middle very relaxed page grid">
<div class="eight wide center column" style="border: 1px solid #FFF;">
<h1 class="hero ui icon header">
<img width=20px height=20px src='/assets/img/icons/MartialArtsIcon.png'/>
On-site classes
</h1>
<p class="large">On-site classes are $10 a month, plus the minimal transaction fee -- you'll be charged automatically each month so you don't have to worry about it. These funds go to pay for insurance, HVAC, mats, cleaning supplies, etc. This subscription covers on-site training on any of our listed times and access to our livestream and media library.</p>
<p class="large">Your first class with us is <b>free</b> -- please come try us out before you put any money down.</p>
<p class="large">
<!-- START STRIPE CODE -->
<button
style="background-color:#6772E5;color:#FFF;padding:8px 12px;border:0;border-radius:4px;font-size:1em"
id="checkout-button-price_1HTuhvI49P1uFPoXXoSjPm2w"
role="link"
type="button"
>
Checkout
</button>
<div id="error-message"></div>
<script>
(function() {
var stripe = Stripe('pk_live_51HThYnI49P1uFPoX5ARnHSpT9D08Gbfux6O25waFLpPBsnZoLDuqopFAZeLfu0CbbICxEnPZOOLkDLTlcNjkazs100ElKcF2QX');
var checkoutButton = document.getElementById('checkout-button-price_1HTuhvI49P1uFPoXXoSjPm2w');
checkoutButton.addEventListener('click', function () {
// When the customer clicks on the button, redirect
// them to Checkout.
stripe.redirectToCheckout({
lineItems: [{price: 'price_1HTuhvI49P1uFPoXXoSjPm2w', quantity: 1}],
mode: 'subscription',
// Do not rely on the redirect to the successUrl for fulfilling
// purchases, customers may not always reach the success_url after
// a successful payment.
// Instead use one of the strategies described in
// https://stripe.com/docs/payments/checkout/fulfill-orders
successUrl: window.location.protocol + '//aninix.net/pay/thank-you.html',
cancelUrl: window.location.protocol + '//aninix.net/martialarts/index.html',
})
.then(function (result) {
if (result.error) {
// If `redirectToCheckout` fails due to a browser or network
// error, display the localized error message to your customer.
var displayError = document.getElementById('error-message');
displayError.textContent = result.error.message;
}
});
});
})();
</script>
<! -- END STRIPE CODE -->
</p>
</div>
<div class="eight wide center column" style="border: 1px solid #FFF;">
<h1 class="hero ui icon header">
<img width=20px height=20px src='/assets/img/icons/MartialArtsIcon.png'/>
Remote classes
</h1>
<p class="large">Remote-only classes are available at $5/month for prior students. This gets you access to our livestream classes and our media library of prior classes. This helps offset the upkeep costs for our web hosting and offers some parity with our on-site students.</p>
<p class="large">These are intended as a continuing-education option for students with background in martial arts who aren't able to attend classes in-person due to distance or schedule -- they are <b>not</b> a substitute for in-person training.</p>
<p class="large">
<!-- START STRIPE CODE -->
<button
style="background-color:#6772E5;color:#FFF;padding:8px 12px;border:0;border-radius:4px;font-size:1em"
id="checkout-button-price_1HThmcI49P1uFPoXMDCRVXTl"
role="link"
type="button"
>
Checkout
</button>
<div id="error-message"></div>
<script>
(function() {
var stripe = Stripe('pk_live_51HThYnI49P1uFPoX5ARnHSpT9D08Gbfux6O25waFLpPBsnZoLDuqopFAZeLfu0CbbICxEnPZOOLkDLTlcNjkazs100ElKcF2QX');
var checkoutButton = document.getElementById('checkout-button-price_1HThmcI49P1uFPoXMDCRVXTl');
checkoutButton.addEventListener('click', function () {
// When the customer clicks on the button, redirect
// them to Checkout.
stripe.redirectToCheckout({
lineItems: [{price: 'price_1HThmcI49P1uFPoXMDCRVXTl', quantity: 1}],
mode: 'subscription',
// Do not rely on the redirect to the successUrl for fulfilling
// purchases, customers may not always reach the success_url after
// a successful payment.
// Instead use one of the strategies described in
// https://stripe.com/docs/payments/checkout/fulfill-orders
successUrl: window.location.protocol + '//aninix.net/pay/thank-you.html',
cancelUrl: window.location.protocol + '//aninix.net/martialarts/index.html',
})
.then(function (result) {
if (result.error) {
// If `redirectToCheckout` fails due to a browser or network
// error, display the localized error message to your customer.
var displayError = document.getElementById('error-message');
displayError.textContent = result.error.message;
}
});
});
})();
</script>
<! -- END STRIPE CODE -->
</p> </div>
</div>
<div class="ui stackable middle very relaxed page grid">
<div class="eight wide center column" style="border: 1px solid #FFF;">
<h1 class="hero ui icon header">
<img width=20px height=20px src="/assets/img/icons/MartialArtsIcon.png"/>
T-Shirt
</h1>
<p class="large">T-shirts are $25 each -- they're made of a light, breathable black fabric with our logo across the back. Please contact an administrator on <a href="/#social">Discord or Facebook</a> with your size.</p>
<p class="large">T-Shirts are limited quantity -- we currently have 2 Medium and 1 Small in stock. T-shirt runs are only done on class request for cost reasons.</p>
<p class="large">
<!-- START STRIPE CODE -->
<!-- Create a button that your customers click to complete their purchase. Customize the styling to suit your branding. -->
<button
style="background-color:#6772E5;color:#FFF;padding:8px 12px;border:0;border-radius:4px;font-size:1em"
id="checkout-button-price_1HTucZI49P1uFPoXshtbIl8W"
role="link"
type="button"
>
Checkout
</button>
<div id="error-message"></div>
<script>
(function() {
var stripe = Stripe('pk_live_51HThYnI49P1uFPoX5ARnHSpT9D08Gbfux6O25waFLpPBsnZoLDuqopFAZeLfu0CbbICxEnPZOOLkDLTlcNjkazs100ElKcF2QX');
var checkoutButton = document.getElementById('checkout-button-price_1HTucZI49P1uFPoXshtbIl8W');
checkoutButton.addEventListener('click', function () {
// When the customer clicks on the button, redirect
// them to Checkout.
stripe.redirectToCheckout({
lineItems: [{price: 'price_1HTucZI49P1uFPoXshtbIl8W', quantity: 1}],
mode: 'payment',
// Do not rely on the redirect to the successUrl for fulfilling
// purchases, customers may not always reach the success_url after
// a successful payment.
// Instead use one of the strategies described in
// https://stripe.com/docs/payments/checkout/fulfill-orders
successUrl: window.location.protocol + '//aninix.net/pay/thank-you.html',
cancelUrl: window.location.protocol + '//aninix.net/martialarts/index.html',
})
.then(function (result) {
if (result.error) {
// If `redirectToCheckout` fails due to a browser or network
// error, display the localized error message to your customer.
var displayError = document.getElementById('error-message');
displayError.textContent = result.error.message;
}
});
});
})();
</script>
<! -- END STRIPE CODE -->
</p>
</div>
<div class="eight wide center column" style="border: 1px solid #FFF;">
<h1 class="hero ui icon header">
<img width=20px height=20x src="/assets/img/icons/MartialArtsIcon.png"/>
Patch
</h1>
<p class="large">Patches are $5 -- they're meant to be sewn or ironed onto gis, gear bags, backpacks, etc. They're a great way to show off your loyalty to the group and pride in your hard work!</p>
<p class="large">
<form action="./index.html" id="patches">
<label for="patchcount">Number:</label>
<select name="patchcount" id="patchescount">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
<br/>
</form>
</p>
<p class="large">
<!-- START STRIPE CODE -->
<button
style="background-color:#6772E5;color:#FFF;padding:8px 12px;border:0;border-radius:4px;font-size:1em"
id="checkout-button-price_1HTuYII49P1uFPoXaIk9puyu"
role="link"
type="button"
>
Checkout
</button>
<div id="error-message"></div>
<script>
(function() {
var stripe = Stripe('pk_live_51HThYnI49P1uFPoX5ARnHSpT9D08Gbfux6O25waFLpPBsnZoLDuqopFAZeLfu0CbbICxEnPZOOLkDLTlcNjkazs100ElKcF2QX');
var checkoutButton = document.getElementById('checkout-button-price_1HTuYII49P1uFPoXaIk9puyu');
checkoutButton.addEventListener('click', function () {
// When the customer clicks on the button, redirect
// them to Checkout.
stripe.redirectToCheckout({
lineItems: [{price: 'price_1HTuYII49P1uFPoXaIk9puyu', quantity: parseInt(document.getElementById('patchescount').value) }],
mode: 'payment',
// Do not rely on the redirect to the successUrl for fulfilling
// purchases, customers may not always reach the success_url after
// a successful payment.
// Instead use one of the strategies described in
// https://stripe.com/docs/payments/checkout/fulfill-orders
successUrl: window.location.protocol + '//aninix.net/pay/thank-you.html',
cancelUrl: window.location.protocol + '//aninix.net/martialarts/index.html',
})
.then(function (result) {
if (result.error) {
// If `redirectToCheckout` fails due to a browser or network
// error, display the localized error message to your customer.
var displayError = document.getElementById('error-message');
displayError.textContent = result.error.message;
}
});
});
})();
</script>
<! -- END STRIPE CODE -->
</div>
</div>
<hr style="margin-top: 50px;" />
</div>
<footer>
<div class="ui container">
<div class="ui left">
Powered by Gitea Page: <strong>0ms</strong> Template: <strong>0ms</strong>
</div>
<div class="ui right links">
<div class="ui language bottom floating slide up dropdown link item">
<svg viewBox="0 0 16 16" class="svg octicon-globe" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.543 7.25h2.733c.144-2.074.866-3.756 1.58-4.948.12-.197.237-.381.353-.552a6.506 6.506 0 0 0-4.666 5.5zm2.733 1.5H1.543a6.506 6.506 0 0 0 4.666 5.5 11.13 11.13 0 0 1-.352-.552c-.715-1.192-1.437-2.874-1.581-4.948zm1.504 0h4.44a9.637 9.637 0 0 1-1.363 4.177c-.306.51-.612.919-.857 1.215a9.978 9.978 0 0 1-.857-1.215A9.637 9.637 0 0 1 5.78 8.75zm4.44-1.5H5.78a9.637 9.637 0 0 1 1.363-4.177c.306-.51.612-.919.857-1.215.245.296.55.705.857 1.215A9.638 9.638 0 0 1 10.22 7.25zm1.504 1.5c-.144 2.074-.866 3.756-1.58 4.948-.12.197-.237.381-.353.552a6.506 6.506 0 0 0 4.666-5.5h-2.733zm2.733-1.5h-2.733c-.144-2.074-.866-3.756-1.58-4.948a11.738 11.738 0 0 0-.353-.552 6.506 6.506 0 0 1 4.666 5.5zM8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0z"/></svg>
<div class="text">English</div>
<div class="menu language-menu">
<a lang="en-US" data-url="/?lang=en-US" class="item active selected">English</a>
<a lang="zh-CN" data-url="/?lang=zh-CN" class="item ">简体中文</a>
<a lang="zh-HK" data-url="/?lang=zh-HK" class="item ">繁體中文(香港)</a>
<a lang="zh-TW" data-url="/?lang=zh-TW" class="item ">繁體中文(台灣)</a>
<a lang="de-DE" data-url="/?lang=de-DE" class="item ">Deutsch</a>
<a lang="fr-FR" data-url="/?lang=fr-FR" class="item ">français</a>
<a lang="nl-NL" data-url="/?lang=nl-NL" class="item ">Nederlands</a>
<a lang="lv-LV" data-url="/?lang=lv-LV" class="item ">latviešu</a>
<a lang="ru-RU" data-url="/?lang=ru-RU" class="item ">русский</a>
<a lang="uk-UA" data-url="/?lang=uk-UA" class="item ">Українська</a>
<a lang="ja-JP" data-url="/?lang=ja-JP" class="item ">日本語</a>
<a lang="es-ES" data-url="/?lang=es-ES" class="item ">español</a>
<a lang="pt-BR" data-url="/?lang=pt-BR" class="item ">português do Brasil</a>
<a lang="pl-PL" data-url="/?lang=pl-PL" class="item ">polski</a>
<a lang="bg-BG" data-url="/?lang=bg-BG" class="item ">български</a>
<a lang="it-IT" data-url="/?lang=it-IT" class="item ">italiano</a>
<a lang="fi-FI" data-url="/?lang=fi-FI" class="item ">suomi</a>
<a lang="tr-TR" data-url="/?lang=tr-TR" class="item ">Türkçe</a>
<a lang="cs-CZ" data-url="/?lang=cs-CZ" class="item ">čeština</a>
<a lang="sr-SP" data-url="/?lang=sr-SP" class="item ">српски</a>
<a lang="sv-SE" data-url="/?lang=sv-SE" class="item ">svenska</a>
<a lang="ko-KR" data-url="/?lang=ko-KR" class="item ">한국어</a>
</div>
</div>
<a href="/assets/js/licenses.txt">Licenses</a>
<a href="/api/swagger">API</a>
<a target="_blank" rel="noopener noreferrer" href="https://gitea.io">Website</a>
</div>
</div>
</footer>
<script src="/assets/js/index.js?v=a4b678d242d5a62868dcb904e8959b4e"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-18148792-3']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<script type="text/javascript">
document.getElementsByClassName('brand')[0].children[0].children[0].src="/img/AniNIX.png";
$('meta[property=og\\:image]').attr('content', '/img/AniNIX.png');
$('link[rel="mask-icon"]').attr('href', '/img/AniNIX.png');
$('link[rel="mask-icon"]').attr('color', '#000000');
document.getElementById("pwdchange").setAttribute("target","_blank");
document.getElementById("chat").setAttribute("target","_blank");
</script>
</body>
</html>

View File

@ -0,0 +1,581 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<title>AniNIX::WebServer\\ Martial Arts Quote of the Week</title>
<icon>https://aninix.net/mediawiki/images/9/9b/MartialArtsIcon.png</icon>
<logo>https://aninix.net/mediawiki/images/9/9b/MartialArtsIcon.png</logo>
<link rel="self" href="https://aninix.net/martialarts/maqotw.xml" />
<link href="https://aninix.net/martialarts/info.php" />
<updated>2013-12-31T12:00:02Z</updated>
<author>
<name>Connor Ford</name>
</author>
<id>https://aninix.net/martialarts/maqotw.xml</id>
<entry>
<id>https://aninix.net/martialarts/classes2019p2</id>
<link href="https://aninix.net/martialarts/"></link>
<author>
<name>Connor Ford</name>
</author>
<title>Registration Open for 2019 Session 2</title>
<updated>2019-02-26T00:00:00Z</updated>
<content type="text">2019 Session 2 links are now available on the homepage. Please register to keep the cost low and ensure we keep the space!</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/classes</id>
<link href="https://aninix.net/martialarts/"></link>
<author>
<name>Connor Ford</name>
</author>
<title>Classes Resume 9/17/2018</title>
<updated>2018-08-15T00:00:00Z</updated>
<content type="text">AniNIX Martial Arts is now open for business again. We are accepting registration through our wonderful hosts Belleville Community Education. Cost is $45 for adults ($35 ages 14-18) per session of 7 or 8 weeks. That's $4 per hour of training for a great program in a great space. We need YOU, though: 10 adults to hold our times. Register today -- links on our homepage! https://aninix.net/martialarts/</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/cardillo</id>
<link href="https://aninix.net/martialarts/"></link>
<author>
<name>Connor Ford</name>
</author>
<title>Joseph Cardillo Quote</title>
<updated>2018-01-09T00:00:00Z</updated>
<content type="text">One of the greatest gifts of the martial arts is that they ultimately guide us to new levels of spirituality. -- Joseph Cardillo</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/hiatus</id>
<link href="https://aninix.net/irc/"></link>
<author>
<name>Connor Ford</name>
</author>
<title>AniNIX Martial Arts on Hiatus</title>
<updated>2017-11-27T10:44:00</updated>
<content type="text">We are on hiatus for the winter -- we didn't have enough support to hold our space at VACT. We're in talks with Iron Pagoda and may have options in Belleville. Keep in touch -- we'll post any seminars we'll be attending. If anyone is looking for an immediate martial arts home, please join #martialarts on IRC, and I'll help you find a place.</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/paulatted</id>
<link href="https://aninix.net/wiki/Martial_Arts_Lectures"></link>
<author>
<name>Paul McCarthy at TED</name>
</author>
<title>Paul McCarthy at TED</title>
<updated>2016-09-07T06:00:00Z</updated>
<content type="text">I just came across a TED talk from a martial arts instructor Ive had the privilege of training with a couple times, the last time in a seminar of mental plasticity and martial arts. In this talk, Mr. McCarthy posits that martial arts (or dance or music or any other art that encourages movement and creativity) is a key part of your health and that it has a place in the healthcare industry. As we also work in the healthcare industry, I thought folks might find this interesting. Enjoy!
</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/may16sem</id>
<link href="https://aninix.net/martialarts/seminar.php" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>May Seminar Details Up!</title>
<updated>2016-04-19T06:00:00Z</updated>
<content type="text">New seminar details have been posted to the seminar page. We have a HapKiDo/Silat seminar available May 7th.</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/s16sem</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Spring Seminar Details Up!</title>
<updated>2016-03-02T06:00:00Z</updated>
<content type="text">New seminar details have been posted to the seminar page. We have Arnis and HapKiDo seminars available April 9th.</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/irc</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>IRC Channel now available!</title>
<updated>2014-11-02T06:00:00Z</updated>
<content type="text">We now have an IRC channel, #martialarts, on irc.aninix.net for anyone who'd like to come by.</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/pacq</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Manny Pacquiao</title>
<updated>2014-11-02T06:00:00Z</updated>
<content type="text">In honor of Manny's recent bout, I offer a quote from him. "Life is meant to be a challenge, because challenges are what make you grow."</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/napoleon</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>From Napoleon</title>
<updated>2014-04-06T06:00:00Z</updated>
<content type="text">Napoleon: "Never interrupt your enemy when he is making a mistake."</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/twowolves</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Two Wolves</title>
<updated>2014-04-06T06:00:00Z</updated>
<content type="text">ONE EVENING, AN ELDERLY
CHEROKEE BRAVE TOLD HIS
GRANDSON ABOUT A BATTLE THAT
GOES ON INSIDE PEOPLE.
HE SAID "MY SON, THE BATTLE IS
BETWEEN TWO 'WOLVES' INSIDE US ALL.
ONE IS EVIL. IT IS ANGER,
ENVY, JEALOUSY, SORROW,
REGRET, GREED, ARROGANCE,
SELF-PITY, GUILT, RESENTMENT,
INFERIORITY, LIES, FALSE PRIDE,
SUPERIORITY, AND EGO.
THE OTHER IS GOOD.
IT IS JOY, PEACE LOVE, HOPE SERENITY,
HUMILITY, KINDNESS, BENEVOLENCE,
EMPATHY, GENEROSITY,
TRUTH, COMPASSION AND FAITH."
THE GRANDSON THOUGH ABOUT
IT FOR A MINUTE AND THEN ASKED
HIS GRANDFATHER:
"WHICH WOLF WINS?..."
THE OLD CHEROKEE SIMPLY REPLIED,
"THE ONE THAT YOU FEED"</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/roosevelt</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>From Roosevelt</title>
<updated>2014-04-06T06:00:00Z</updated>
<content type="text">Theodore Roosevelt: "Don't hit at all if it is honorably possible to avoid hitting; but never hit softly."</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Ip Man and Inner Demons</title>
<updated>2014-04-06T06:00:00Z</updated>
<content type="text">Ip Man: "We all have inner demons to fight. We call these demons 'fear', and 'hatred', and 'anger'. If you don't conquer them, then a life of a hundred years is a tragedy. If you do, a life of a single day can be a triumph."</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/anger</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Anger and Water</title>
<updated>2014-11-02T06:00:00Z</updated>
<content type="text">Koichi Tohei in "Ki in Daily Life": "Pour some water into a tub and stir it up. Now try as hard as you can to calm the water with your hands; you will succeed in agitating it further. Let it stand undisturbed a while, and it will calm down by itself. The human brain works much the same way."</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/gandhi</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Gandi on Violence</title>
<updated>2014-09-07T06:00:00Z</updated>
<content type="text">"I do believe that, where there is only a choice between cowardice and violence, I would advise violence... I would rather have India resort to arms in order to defend her honour than that she should, in a cowardly manner, become or remain a helpless witness to her own dishonor. But I believe that nonviolence is infinitely superior to violence, forgiveness is more manly than punishment. Forgiveness adorns a soldier...But abstinence is forgiveness only when there is the power to punish; it is meaningless when it pretends to proceed from a helpless creature." ~Gandhi
</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/canvswill</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Can vs. Will</title>
<updated>2014-08-31T06:00:00Z</updated>
<content type="text">"It's not that I can and other's can't; it's that I will and others won't." What makes an exceptional martial artist is not his innate talents. It's his or her constant drive to improve, to never settle for what is.</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/weakestofall</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Weakest of All</title>
<updated>2014-08-24T06:00:00Z</updated>
<content type="text">Mark Twain: "The weakest of all weak things is a virtue that has not been tested in the fire." Motions in space do not improve our knowledge of martial arts, if they are not also tested with people you can trust and train with. This working with people is the best way to increase our understanding of the form, function, and interactions.</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/persistence</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Persistence</title>
<updated>2014-08-17T06:00:00Z</updated>
<content type="text">Calvin Coolidge: "Nothing in this world can take the place of persistence. Talent will not: nothing is more common than unsuccessful men with talent. Genius will not; unrewarded genius is almost a proverb. Education will not: the world is full of educated derelicts. Persistence and determination alone are omnipotent." Something to ponder.</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/helpingweakness</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Helping Weakness</title>
<updated>2014-08-10T06:00:00Z</updated>
<content type="text">Jackie Chan: "We learn martial arts as helping weakness. You never fight for people to get hurt. You're always helping people." This must be the foundation of our martial arts; even the most destructive martial technique must be based in the desire to improve the lives of others, or we become no more than brigands.</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/nations</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Nations</title>
<updated>2014-08-03T06:00:00Z</updated>
<content type="text">William Francis Butler: "The nation that will insist upon drawing a broad line of demarcation between the fighting man and the thinking man is liable to find its fighting done by fools and its thinking by cowards."</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/learningandpain</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Learning and Pain</title>
<updated>2014-07-27T06:00:00Z</updated>
<content type="text">Anonymous: "Learning is a gift, even when pain is your teacher."</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/sphereofstrength</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Sphere of Strength</title>
<updated>2014-07-20T06:00:00Z</updated>
<content type="text">Morihei Ueshiba in "The Art of Peace": "Even the most powerful human being has a limited sphere of strength. Draw him outside of that sphere and into your own, and his strength will dissipate."</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/whatsuseful</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>What's Useful</title>
<updated>2014-05-11T06:00:00Z</updated>
<content type="text">Bruce Lee - "Absorb what is useful, discard what is not, and add what is uniquely your own." This should be everyone's approach to our practices. The techniques that work for me may not work for you, so you will always need to adapt your martial arts to fit what is useful for you. This is why none of our sessions are required - I want you to train what will help you grow, not what I might think will be helpful for you.
</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/cliff</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Never-ending Cliff</title>
<updated>2014-05-04T06:00:00Z</updated>
<content type="text">"To follow the path of Martial Arts is like climbing on a cliff that never ends. It demads absolute devotion for the task to be executed." -- Masutatsu Oyama, founder of Kyokushin Karate. As we've learned with groundwork, martial arts is a never-ending process of learning, self-dedication, and refinement. Let's not forget to maintain our drive for perfection, whether we have three weeks or thirty years experience.
</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/ueshiba</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>O-Sensei Ueshiba</title>
<updated>2014-04-13T06:00:00Z</updated>
<content type="text">"Those who are skilled in combat do not become angered, and those who are skilled at winning do not become afraid. Thus the wise win before the fight, while the ignorant fight to win." -- O Sensei Ueshiba, founder of Aikido. This one is a thinker, and I'll let you come to your own conclusions. Hint: calm beats rage.</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/swingsword</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Swing of the Sword</title>
<updated>2014-04-06T06:00:00Z</updated>
<content type="text">"It is easy to kill someone with a slash of a sword. It is hard to be impossible for others to cut down" - Yagyu Munenori. In the same vein as the pacifist quote last week, we want to remember that our goal is not to be as destructive as possible; the goal is to be as indesctructible as possible. We want ourselves and our loved ones to be safe; the reason we call our fighting stance our "fence" is because that is limit in which I care what other people are doing. Inside my fence, I have myself and my loved ones as my priority. So long as what happens outside my fence does not affect what is inside, I need not use martial technique.
</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/pacifism</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Pacifism</title>
<updated>2014-03-30T06:00:00Z</updated>
<content type="text">Another informal tag line in some martial arts is "only a warrior can choose pacifism." There is much debate among different martial arts about this, but to my mind a warrior is the only person who can choose not to fight. They have the option of using combative technique, and that alone is often enough of a deterrent to combat to allow a warrior to never need to fight. That being said, someone untrained in combat will always be at the mercy of those who are trained, simply because they have no leverage against such foes. Something to consider.</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/blackandwhite</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Black and White</title>
<updated>2014-03-23T06:00:00Z</updated>
<content type="text">There's an informal tag line that's occasionally thrown around martial arts: a black belt is a white belt who never quit. Everyone who's ever earned a black belt started as a white belt, and they decided that any weakness in their technique, conditioning, or personality wasn't going to keep them from reaching the level of a black belt. Make sure you do the same -- the journey begins!</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/seals</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Motto of the SEALS</title>
<updated>2014-03-16T06:00:00Z</updated>
<content type="text">The US Navy SEALS have a motto: The more you sweat in training, the less you bleed in battle. The Israelis take a similar approach with Krav Maga, and I am a firm believer in it. Regardless of one's experience level, the harder you train and the more you prepare for what the fight will actually be, the easier the fight will end up being. True, there will be always be someone better, but this is your best way to minimize that gap.</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/discipline</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Fruit of Discipline</title>
<updated>2014-03-10T06:00:00Z</updated>
<content type="text">"Self-respect is the fruit of discipline." - Abraham J. Heschel. I know we do a lot of push-ups, crunches, cardio, etc. And we spend a lot of time doing reps on a given technique, almost to the point of boredom. We come out every week and grind away on these techniques. The primary reason for wanting to do this is the technique's becoming ingrained in muscle memory. However, the discipline required of this pursuit is valuable.</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/lion</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Lion or Elephant</title>
<updated>2014-03-02T06:00:00Z</updated>
<content type="text">Anderson Silva raises a valid point about the application of strength in martial arts. "I don't think strength plays that big of a difference. If it's that big of a difference, then the elephant would be king of the jungle, not the lion," he says. The value of this is that in martial arts, it's the proper application of a technique that contains our opponent, not the raw application of force.</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/walk</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Walk in Peace</title>
<updated>2014-02-23T06:00:00Z</updated>
<content type="text">Rickson Gracie of the Gracie brothers is one of the founding figures in modern Brazilian jiu-jitsu. I admire one of his quotes, because it should apply to all martial arts, regardless of creed. "The biggest gift I received as a martial artist is without a question the capacity to be in peace," he said. This is something we should all take to heart.</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/krav+founder</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Founder of Krav Maga</title>
<updated>2014-02-23T05:00:00Z</updated>
<content type="text">Imi Lichtenfeld founded Krav Maga. Growing up in Germany in the 30's, he was in danger of attacks by the Nazis. He said, "I began fighting anti-Semitism in the '30s. When the Hitler youth gangs used to single out Jewish young men on the streets, it was either hit or run. I found the hitting more satisfying." This philosophy became Imi's focus when he began training the Israeli military, and now it is the foundation of Israel's hand-to-hand combat system.</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/combat+and+art</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>In combat, it's no longer art</title>
<updated>2014-02-16T06:00:00Z</updated>
<content type="text">This week's quote is from the Night Angel trilogy by Brent Weeks. One of the martial masters in that book said, "[Hit] a man twenty times ... and let him collapse. Then finish him. We're making [defeated enemies], not art." While I would not want this to be a primary philosophy of martial concepts for our group, it speaks to a very real martial truth: that on the combat field, once engaged, we have to be first and foremost taking care of ourselves. This means taking the safe strikes, rather than going for the one-thrust finish. If you can hit without being hit, you will win.</content></entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/ali</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>The Great Ali</title>
<updated>2014-02-09T06:00:00Z</updated>
<content type="text">This week's quote is from the great boxer, Muhammad Ali. "Float like a butterfly; sting like a bee." This applies to all martial arts -- fluidity and relaxed muscle groups respond faster both to throwing strikes and grabs and to allowing the feet to move to fit the situation. The sting is from explosiveness -- good technique launches from good footing and quick reflexes to land where it needs to. Try thinking about that when you're working on your fence -- relax the shoulders, and get that back heel off the ground.</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/safe</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Safe... Or is it?</title>
<updated>2014-02-02T06:00:00Z</updated>
<content type="text">This week's quote builds on the last: "No place is more dangerous than a place of safety." We tend to go into "White" mode when we think we're safe, and this can make us complacent. Complacency is not our friend. This quote comes from Robert Ferrigno's "Prayers for the Assassin", found on Amazon at http://www.amazon.com/Prayers-Assassin-Novel-Robert-Ferrigno/dp/141650768X/ref=pd_bxgy_b_img_z</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/awareness</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Awareness</title>
<updated>2014-01-26T06:00:00Z</updated>
<content type="text">In all CCW classes, we are taught the Cooper Code, pioneered by Jeff Cooper. "White" is no awareness of one's surroundings at all. "Yellow" is casual alertness -- one is neither actively looking for a threat nor easily blindsided by one. "Orange" is being aware of a specific threat and analyzing ways to avoid or defeat it. "Red" is engaged in fight. Code "Yellow" is where we want to stay: unthreatened but alert. Since martial artists have the training to deal with threats on some level, there is no reason for us to ever be caught at "White", nor should we be finding ourselves in "Red" too often. Something to ponder.</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/learning</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Learning</title>
<updated>2014-01-12T06:00:00Z</updated>
<content type="text"> Today's quote is about the value of learning. In Book 2 Chapter 11 of the Analects, Confucius says that "if a man keeps cherishing his old knowledge so as continually to be acquiring new, he may be a teacher of others." This is a reminder that we are never perfect and must always seek out new knowledge. Every art has some lesson to teach and some concept we can integrate into our own knowledge.</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/feints</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Feints</title>
<updated>2014-01-05T06:40:31Z</updated>
<content type="text">This week's quote is a little more literal than those previous. In all his travels and with all the martial arts he studied, Bruce Lee came to a simple conclusion: "Between two evenly-matched fighters, the one is the master of the feint will be the winner." Feints are a use of one of the most basic tactical concepts: action beats reaction. So, if you can make your opponent believe something and then hit him before he realizes his error, the victory is yours!</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/humility</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Humility in Competition</title>
<updated>2013-12-30T06:40:31Z</updated>
<content type="text">This week's quote comes from Confucius's "Analects". In Book 3 Chapter 7, it is written, "The Master said, `The student of virtue has no contentions. If it be said he cannot avoid them, shall this be in archery? But he bows complaisantly to his competitors; thus he ascends the hall, descends, and exacts the forfeit of drinking. In his contention, he is still the Chun-tsze.'" The term Chun-tsze is used to the Confucian concept of the master-scholar, which also applies to martial arts. In our martial arts, when we are training, we should give it our all, but when we run into a constraint, we should understand this is to improve our character and help our growth.</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/vessels</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Emptiness and Form</title>
<updated>2013-12-18T12:00:02Z</updated>
<content type="text">Our quote of the week comes from the "Tao Te Ching": "vessels are fashioned from empty clay; it is on their hollowness that their use depends." Just a small reminder that going into a fight with a specific plan usually starts more problems than it solves. Being fluid, flexible, and responsive is your greatest asset.</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/final+goal</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>The Final Goal</title>
<updated>2013-12-10T12:00:02Z</updated>
<content type="text"> The quote this week comes from the 17th-century Japanese text, the "Shoninki", by Natori Masazumi. It states that "destroying a man takes us away from the goal we seek to achieve". This statement is deceptively simple but very nuanced in its context; it is not saying that one shouldn't cause damage in the pursuit of self defense. What it is saying is that we should only supply enough force to stop the threat to our person. Once that threat is eliminated, we should make sure to supply aid and rehabilitation where the situation allows. Not only does this help to reduce future attacks, it will help you if you have to appear in court ((read this as "when you appear in court")). Something to think about.</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/water</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Water</title>
<updated>2013-12-04T12:00:02Z</updated>
<content type="text">Yes, yes, this is the generic Bruce Lee water quote. "Be like water, my friends." Despite how oft-used this quote is, the beautiful simplicity masks a martial arts truth -- relaxed and fluid beats stiff and strong in every engagment. That same fluidity applied mentally will give you an edge in learning and retaining new techniques.</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/protracted</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Protracted Conflict</title>
<updated>2013-11-25T12:00:02Z</updated>
<content type="text">The quote this week is again from Sun Tzu in the "Art of War": There "has never been a protracted war from which a country has benefited." This reminds us to neither start a conflict nor protract it when we should be able to leave.</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/martial+scholar</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Public Duty</title>
<updated>2013-11-19T12:00:02Z</updated>
<content type="text">Confucius leaves us this in his "Analects": "The scholar, trained for public duty, seeing threatening danger, is prepared to sacrifice his life. When the opportunity of gain is presented to him, he thinks of righteousness. In sacrificing, his thoughts are reverential. In mourning, his thoughts are about the grief which he should feel. Such a man commands our approbation indeed." Confucius wrote of the merits of the education, discipline, and wisdom; these are needed even in martial arts.</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/armed+and+unarmed</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Armed or Unarmed</title>
<updated>2013-11-12T12:00:02Z</updated>
<content type="text">This week's quote is from Machiavelli's "The Prince", Chapter 14. "It is not reasonable to suppose that one who is armed will obey willingly one who is unarmed, or that any unarmed man will remain safe among armed servants." In the case of a martial artist, the weapons is the martial artist himself or herself. Training hones that weapon to efficiency. On the other hand, this should remind us that we should not rely exclusively on others for our safety, which is yet another reason we train.</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/brandishing</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Bushido</title>
<updated>2013-10-21T12:00:02Z</updated>
<content type="text">The martial arts quote of the week is by Inazo Nitobe, who wrote the book "Bushido". "A dastard or a braggart was he who brandished his weapon on undeserved occasions." I've given you gys some small tricks to talk about martial arts with friends and such, but the main point of our discussion was that we shouldn't train martial arts looking to start fights, end fights, go out to bars and join fights, etc. Martial arts are comprised of many devastating techniques, and so we must be careful of when we use it. Moreover, from a tactical perspective, using martial arts publicly too often, without cause, or any combination thereof can cause the martial artist to become a target for challengers. We should train hard and often but fight rarely and only in the required defense of ourselves and those we care about. Just my two cents.</content>
</entry>
<entry>
<id>https://aninix.net/martialarts/maqotw.xml/i+have+gung+fu</id>
<link href="https://aninix.net/martialarts/maqotw.xml" rel="self"></link>
<author>
<name>Epic Martial Arts Group</name>
</author>
<title>Gungfu</title>
<updated>2013-10-14T12:00:02Z</updated>
<content type="text">The quote for this week is from Bruce Lee: "The baker has gungfu; the butcher has gungfu. Everyone has gungfu." As a commentary, remember that gungfu means mastery; the challenge for this week is to search for the mastery in others this week.</content>
</entry>
</feed>

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 378 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

View File

@ -0,0 +1,317 @@
<!DOCTYPE html>
<html lang="en-US" class="theme-">
<head data-suburl="">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title> AniNIX </title>
<link rel="manifest" href="data:application/json;base64,eyJuYW1lIjoiQW5pTklYIiwic2hvcnRfbmFtZSI6IkFuaU5JWCIsInN0YXJ0X3VybCI6Imh0dHBzOi8vZm91bmRhdGlvbi5hbmluaXgubmV0LyIsImljb25zIjpbeyJzcmMiOiJodHRwczovL2ZvdW5kYXRpb24uYW5pbml4Lm5ldC9hc3NldHMvaW1nL2xvZ28ucG5nIiwidHlwZSI6ImltYWdlL3BuZyIsInNpemVzIjoiNTEyeDUxMiJ9LHsic3JjIjoiaHR0cHM6Ly9mb3VuZGF0aW9uLmFuaW5peC5uZXQvYXNzZXRzL2ltZy9sb2dvLnN2ZyIsInR5cGUiOiJpbWFnZS9zdmcreG1sIiwic2l6ZXMiOiI1MTJ4NTEyIn1dfQ=="/>
<meta name="theme-color" content="#ff0000">
<meta name="default-theme" content="aninix" />
<meta name="author" content="AniNIX::Foundation" />
<meta name="description" content="AniNIX::Foundation \\ Code, documentation, and information sharing powered by Gitea (git with a cup of tea)" />
<meta name="keywords" content="go,git,self-hosted,gitea,aninix,aninix::foundation">
<meta name="referrer" content="no-referrer" />
<meta name="_csrf" content="Zy1wOJHiu0JeIfnxtOvKihasTFw6MTYzODQ5MTU0MzAzMzAwMTg1NA" />
<script>
window.config = {
AppVer: '1.15.6',
AppSubUrl: '',
AssetUrlPrefix: '\/assets',
CustomEmojis: {"codeberg":":codeberg:","git":":git:","gitea":":gitea:","github":":github:","gitlab":":gitlab:","gogs":":gogs:"},
UseServiceWorker: true ,
csrf: 'Zy1wOJHiu0JeIfnxtOvKihasTFw6MTYzODQ5MTU0MzAzMzAwMTg1NA',
HighlightJS: false,
SimpleMDE: false,
Tribute: false,
NotificationSettings: {
MinTimeout: 10000 ,
TimeoutStep: 10000 ,
MaxTimeout: 60000 ,
EventSourceUpdateTime: 10000 ,
},
EnableTimetracking: true,
PageIsProjects: false,
};
</script>
<link rel="icon" href="/assets/img/logo.svg" type="image/svg+xml">
<link rel="alternate icon" href="/assets/img/favicon.png" type="image/png">
<link rel="stylesheet" href="/assets/css/index.css?v=a4b678d242d5a62868dcb904e8959b4e">
<noscript>
<style>
.dropdown:hover > .menu { display: block; }
.ui.secondary.menu .dropdown.item > .menu { margin-top: 0; }
</style>
</noscript>
<style class="list-search-style"></style>
<meta property="og:title" content="AniNIX">
<meta property="og:type" content="website" />
<meta property="og:image" content="/assets/img/logo.png" />
<meta property="og:url" content="https://foundation.aninix.net/" />
<meta property="og:description" content="AniNIX::Foundation \\ Code, documentation, and information sharing powered by Gitea (git with a cup of tea)">
<meta property="og:site_name" content="AniNIX" />
<link rel="stylesheet" href="/assets/css/theme-aninix.css?v=a4b678d242d5a62868dcb904e8959b4e">
<link rel="icon" type="image/png" href="/img/AniNIX.png" />
<link rel="alternate" type="application/rss+xml" title="AniNIX::RSS" href="/aninix.xml" />
<link rel='apple-touch-icon' sizes='180x180' href='/img/AniNIX.png' />
<meta name='apple-mobile-web-app-capable' content='yes' />
</head>
<body>
<div class="full height">
<noscript>This website works better with JavaScript.</noscript>
<div class="ui top secondary stackable main menu following bar light">
<div class="ui container" id="navbar">
<div class="item brand" style="justify-content: space-between;">
<a href="/">
<img class="ui mini image" width="30" height="30" src="/assets/img/logo.svg">
</a>
<div class="ui basic icon button mobile-only" id="navbar-expand-toggle">
<i class="sidebar icon"></i>
</div>
</div>
<a class="item active" href="/">Home</a>
<a class="item " href="/explore/repos">Explore</a>
<a class="item" target="_blank" id="chat" href="https://irc.aninix.net/">Chat</a>
<a class="item" target="_blank" id="pwdchange" href="https://password.aninix.net/">Change Password</a>
<a class="item" id="martialarts" href="/martialarts/">Martial Arts</a>
<a class="item" target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io">Help</a>
<div class="right stackable menu">
<a class="item" href="/user/sign_up">
<svg viewBox="0 0 16 16" class="svg octicon-person" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M10.5 5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0zm.061 3.073a4 4 0 1 0-5.123 0 6.004 6.004 0 0 0-3.431 5.142.75.75 0 0 0 1.498.07 4.5 4.5 0 0 1 8.99 0 .75.75 0 1 0 1.498-.07 6.005 6.005 0 0 0-3.432-5.142z"/></svg> Register
</a>
<a class="item" rel="nofollow" href="/user/login?redirect_to=%2f">
<svg viewBox="0 0 16 16" class="svg octicon-sign-in" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2 2.75C2 1.784 2.784 1 3.75 1h2.5a.75.75 0 0 1 0 1.5h-2.5a.25.25 0 0 0-.25.25v10.5c0 .138.112.25.25.25h2.5a.75.75 0 0 1 0 1.5h-2.5A1.75 1.75 0 0 1 2 13.25V2.75zm6.56 4.5 1.97-1.97a.75.75 0 1 0-1.06-1.06L6.22 7.47a.75.75 0 0 0 0 1.06l3.25 3.25a.75.75 0 1 0 1.06-1.06L8.56 8.75h5.69a.75.75 0 0 0 0-1.5H8.56z"/></svg> Sign In
</a>
</div>
</div>
</div>
<div class="home">
<div class="ui stackable middle very relaxed page grid">
<script src="https://js.stripe.com/v3"></script>
<div class="sixteen wide center aligned centered column">
<h1 class="ui icon header title">
AniNIX
</h1>
<h2>Our Storefront</h2>
<p>We have limited service offerings available. Please contact an admin on IRC first to arrange the contract, then use the item below to pay the invoice.</p>
</div>
</div>
</div>
<div class="ui stackable middle very relaxed page grid">
<div class="sixteen wide center column" >
<h1 class="hero ui icon header">
<img width=20px height=20px src='/img/icons/CoreIcon.png'/>
Cybersecurity Consulting
</h1>
<p class="large">The AniNIX offers cybersecurity consulting and advice services on a limited basis. We bill at $20 an hour -- please select your need below after negotiating with an admin.</p>
<p class="large">
<form action="./storefront.html" id="hours">
<label for="hourcount">Hours required</label>
<select name="hourcount" id="hourscount">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
</select>
<br/>
</form>
<!-- START STRIPE CODE -->
<!-- Create a button that your customers click to complete their purchase. Customize the styling to suit your branding. -->
<button
style="background-color:#6772E5;color:#FFF;padding:8px 12px;border:0;border-radius:4px;font-size:1em"
id="checkout-button-price_1HTuehI49P1uFPoXCW9pJg5E"
role="link"
type="button"
>
Checkout
</button>
<div id="error-message"></div>
<script>
(function() {
var stripe = Stripe('pk_live_51HThYnI49P1uFPoX5ARnHSpT9D08Gbfux6O25waFLpPBsnZoLDuqopFAZeLfu0CbbICxEnPZOOLkDLTlcNjkazs100ElKcF2QX');
var checkoutButton = document.getElementById('checkout-button-price_1HTuehI49P1uFPoXCW9pJg5E');
checkoutButton.addEventListener('click', function () {
// When the customer clicks on the button, redirect
// them to Checkout.
stripe.redirectToCheckout({
lineItems: [{price: 'price_1HTuehI49P1uFPoXCW9pJg5E', quantity: parseInt(document.getElementById('hourscount').value)}],
mode: 'payment',
// Do not rely on the redirect to the successUrl for fulfilling
// purchases, customers may not always reach the success_url after
// a successful payment.
// Instead use one of the strategies described in
// https://stripe.com/docs/payments/checkout/fulfill-orders
successUrl: window.location.protocol + '//aninix.net/pay/thank-you.html',
cancelUrl: window.location.protocol + '//aninix.net/pay/storefront.html',
})
.then(function (result) {
if (result.error) {
// If `redirectToCheckout` fails due to a browser or network
// error, display the localized error message to your customer.
var displayError = document.getElementById('error-message');
displayError.textContent = result.error.message;
}
});
});
})();
</script>
<! -- END STRIPE CODE -->
</p>
</div>
<hr style="margin-top: 50px;" />
</div>
<footer>
<div class="ui container">
<div class="ui left">
Powered by Gitea Page: <strong>0ms</strong> Template: <strong>0ms</strong>
</div>
<div class="ui right links">
<div class="ui language bottom floating slide up dropdown link item">
<svg viewBox="0 0 16 16" class="svg octicon-globe" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.543 7.25h2.733c.144-2.074.866-3.756 1.58-4.948.12-.197.237-.381.353-.552a6.506 6.506 0 0 0-4.666 5.5zm2.733 1.5H1.543a6.506 6.506 0 0 0 4.666 5.5 11.13 11.13 0 0 1-.352-.552c-.715-1.192-1.437-2.874-1.581-4.948zm1.504 0h4.44a9.637 9.637 0 0 1-1.363 4.177c-.306.51-.612.919-.857 1.215a9.978 9.978 0 0 1-.857-1.215A9.637 9.637 0 0 1 5.78 8.75zm4.44-1.5H5.78a9.637 9.637 0 0 1 1.363-4.177c.306-.51.612-.919.857-1.215.245.296.55.705.857 1.215A9.638 9.638 0 0 1 10.22 7.25zm1.504 1.5c-.144 2.074-.866 3.756-1.58 4.948-.12.197-.237.381-.353.552a6.506 6.506 0 0 0 4.666-5.5h-2.733zm2.733-1.5h-2.733c-.144-2.074-.866-3.756-1.58-4.948a11.738 11.738 0 0 0-.353-.552 6.506 6.506 0 0 1 4.666 5.5zM8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0z"/></svg>
<div class="text">English</div>
<div class="menu language-menu">
<a lang="en-US" data-url="/?lang=en-US" class="item active selected">English</a>
<a lang="zh-CN" data-url="/?lang=zh-CN" class="item ">简体中文</a>
<a lang="zh-HK" data-url="/?lang=zh-HK" class="item ">繁體中文(香港)</a>
<a lang="zh-TW" data-url="/?lang=zh-TW" class="item ">繁體中文(台灣)</a>
<a lang="de-DE" data-url="/?lang=de-DE" class="item ">Deutsch</a>
<a lang="fr-FR" data-url="/?lang=fr-FR" class="item ">français</a>
<a lang="nl-NL" data-url="/?lang=nl-NL" class="item ">Nederlands</a>
<a lang="lv-LV" data-url="/?lang=lv-LV" class="item ">latviešu</a>
<a lang="ru-RU" data-url="/?lang=ru-RU" class="item ">русский</a>
<a lang="uk-UA" data-url="/?lang=uk-UA" class="item ">Українська</a>
<a lang="ja-JP" data-url="/?lang=ja-JP" class="item ">日本語</a>
<a lang="es-ES" data-url="/?lang=es-ES" class="item ">español</a>
<a lang="pt-BR" data-url="/?lang=pt-BR" class="item ">português do Brasil</a>
<a lang="pl-PL" data-url="/?lang=pl-PL" class="item ">polski</a>
<a lang="bg-BG" data-url="/?lang=bg-BG" class="item ">български</a>
<a lang="it-IT" data-url="/?lang=it-IT" class="item ">italiano</a>
<a lang="fi-FI" data-url="/?lang=fi-FI" class="item ">suomi</a>
<a lang="tr-TR" data-url="/?lang=tr-TR" class="item ">Türkçe</a>
<a lang="cs-CZ" data-url="/?lang=cs-CZ" class="item ">čeština</a>
<a lang="sr-SP" data-url="/?lang=sr-SP" class="item ">српски</a>
<a lang="sv-SE" data-url="/?lang=sv-SE" class="item ">svenska</a>
<a lang="ko-KR" data-url="/?lang=ko-KR" class="item ">한국어</a>
</div>
</div>
<a href="/assets/js/licenses.txt">Licenses</a>
<a href="/api/swagger">API</a>
<a target="_blank" rel="noopener noreferrer" href="https://gitea.io">Website</a>
</div>
</div>
</footer>
<script src="/assets/js/index.js?v=a4b678d242d5a62868dcb904e8959b4e"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-18148792-3']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<script type="text/javascript">
document.getElementsByClassName('brand')[0].children[0].children[0].src="/img/AniNIX.png";
$('meta[property=og\\:image]').attr('content', '/img/AniNIX.png');
$('link[rel="mask-icon"]').attr('href', '/img/AniNIX.png');
$('link[rel="mask-icon"]').attr('color', '#000000');
document.getElementById("pwdchange").setAttribute("target","_blank");
document.getElementById("chat").setAttribute("target","_blank");
</script>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,234 @@
<!DOCTYPE html>
<html lang="en-US" class="theme-">
<head data-suburl="">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title> AniNIX </title>
<link rel="manifest" href="data:application/json;base64,eyJuYW1lIjoiQW5pTklYIiwic2hvcnRfbmFtZSI6IkFuaU5JWCIsInN0YXJ0X3VybCI6Imh0dHBzOi8vZm91bmRhdGlvbi5hbmluaXgubmV0LyIsImljb25zIjpbeyJzcmMiOiJodHRwczovL2ZvdW5kYXRpb24uYW5pbml4Lm5ldC9hc3NldHMvaW1nL2xvZ28ucG5nIiwidHlwZSI6ImltYWdlL3BuZyIsInNpemVzIjoiNTEyeDUxMiJ9LHsic3JjIjoiaHR0cHM6Ly9mb3VuZGF0aW9uLmFuaW5peC5uZXQvYXNzZXRzL2ltZy9sb2dvLnN2ZyIsInR5cGUiOiJpbWFnZS9zdmcreG1sIiwic2l6ZXMiOiI1MTJ4NTEyIn1dfQ=="/>
<meta name="theme-color" content="#ff0000">
<meta name="default-theme" content="aninix" />
<meta name="author" content="AniNIX::Foundation" />
<meta name="description" content="AniNIX::Foundation \\ Code, documentation, and information sharing powered by Gitea (git with a cup of tea)" />
<meta name="keywords" content="go,git,self-hosted,gitea,aninix,aninix::foundation">
<meta name="referrer" content="no-referrer" />
<meta name="_csrf" content="Zy1wOJHiu0JeIfnxtOvKihasTFw6MTYzODQ5MTU0MzAzMzAwMTg1NA" />
<script>
window.config = {
AppVer: '1.15.6',
AppSubUrl: '',
AssetUrlPrefix: '\/assets',
CustomEmojis: {"codeberg":":codeberg:","git":":git:","gitea":":gitea:","github":":github:","gitlab":":gitlab:","gogs":":gogs:"},
UseServiceWorker: true ,
csrf: 'Zy1wOJHiu0JeIfnxtOvKihasTFw6MTYzODQ5MTU0MzAzMzAwMTg1NA',
HighlightJS: false,
SimpleMDE: false,
Tribute: false,
NotificationSettings: {
MinTimeout: 10000 ,
TimeoutStep: 10000 ,
MaxTimeout: 60000 ,
EventSourceUpdateTime: 10000 ,
},
EnableTimetracking: true,
PageIsProjects: false,
};
</script>
<link rel="icon" href="/assets/img/logo.svg" type="image/svg+xml">
<link rel="alternate icon" href="/assets/img/favicon.png" type="image/png">
<link rel="stylesheet" href="/assets/css/index.css?v=a4b678d242d5a62868dcb904e8959b4e">
<noscript>
<style>
.dropdown:hover > .menu { display: block; }
.ui.secondary.menu .dropdown.item > .menu { margin-top: 0; }
</style>
</noscript>
<style class="list-search-style"></style>
<meta property="og:title" content="AniNIX">
<meta property="og:type" content="website" />
<meta property="og:image" content="/assets/img/logo.png" />
<meta property="og:url" content="https://foundation.aninix.net/" />
<meta property="og:description" content="AniNIX::Foundation \\ Code, documentation, and information sharing powered by Gitea (git with a cup of tea)">
<meta property="og:site_name" content="AniNIX" />
<link rel="stylesheet" href="/assets/css/theme-aninix.css?v=a4b678d242d5a62868dcb904e8959b4e">
<link rel="icon" type="image/png" href="/img/AniNIX.png" />
<link rel="alternate" type="application/rss+xml" title="AniNIX::RSS" href="/aninix.xml" />
<link rel='apple-touch-icon' sizes='180x180' href='/img/AniNIX.png' />
<meta name='apple-mobile-web-app-capable' content='yes' />
</head>
<body>
<div class="full height">
<noscript>This website works better with JavaScript.</noscript>
<div class="ui top secondary stackable main menu following bar light">
<div class="ui container" id="navbar">
<div class="item brand" style="justify-content: space-between;">
<a href="/">
<img class="ui mini image" width="30" height="30" src="/assets/img/logo.svg">
</a>
<div class="ui basic icon button mobile-only" id="navbar-expand-toggle">
<i class="sidebar icon"></i>
</div>
</div>
<a class="item active" href="/">Home</a>
<a class="item " href="/explore/repos">Explore</a>
<a class="item" target="_blank" id="chat" href="https://irc.aninix.net/">Chat</a>
<a class="item" target="_blank" id="pwdchange" href="https://password.aninix.net/">Change Password</a>
<a class="item" id="martialarts" href="/martialarts/">Martial Arts</a>
<a class="item" target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io">Help</a>
<div class="right stackable menu">
<a class="item" href="/user/sign_up">
<svg viewBox="0 0 16 16" class="svg octicon-person" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M10.5 5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0zm.061 3.073a4 4 0 1 0-5.123 0 6.004 6.004 0 0 0-3.431 5.142.75.75 0 0 0 1.498.07 4.5 4.5 0 0 1 8.99 0 .75.75 0 1 0 1.498-.07 6.005 6.005 0 0 0-3.432-5.142z"/></svg> Register
</a>
<a class="item" rel="nofollow" href="/user/login?redirect_to=%2f">
<svg viewBox="0 0 16 16" class="svg octicon-sign-in" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2 2.75C2 1.784 2.784 1 3.75 1h2.5a.75.75 0 0 1 0 1.5h-2.5a.25.25 0 0 0-.25.25v10.5c0 .138.112.25.25.25h2.5a.75.75 0 0 1 0 1.5h-2.5A1.75 1.75 0 0 1 2 13.25V2.75zm6.56 4.5 1.97-1.97a.75.75 0 1 0-1.06-1.06L6.22 7.47a.75.75 0 0 0 0 1.06l3.25 3.25a.75.75 0 1 0 1.06-1.06L8.56 8.75h5.69a.75.75 0 0 0 0-1.5H8.56z"/></svg> Sign In
</a>
</div>
</div>
</div>
<div class="home">
<div class="ui stackable middle very relaxed page grid">
<div class="sixteen wide center aligned centered column">
<div>
<img class="logo" src="/img/icons/CoreIcon.png" />
</div>
<div class="hero">
<h2 class="ui icon header title">
Thank you for your purchase!
</h2>
</div>
</div>
</div>
<footer>
<div class="ui container">
<div class="ui left">
Powered by Gitea Page: <strong>0ms</strong> Template: <strong>0ms</strong>
</div>
<div class="ui right links">
<div class="ui language bottom floating slide up dropdown link item">
<svg viewBox="0 0 16 16" class="svg octicon-globe" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.543 7.25h2.733c.144-2.074.866-3.756 1.58-4.948.12-.197.237-.381.353-.552a6.506 6.506 0 0 0-4.666 5.5zm2.733 1.5H1.543a6.506 6.506 0 0 0 4.666 5.5 11.13 11.13 0 0 1-.352-.552c-.715-1.192-1.437-2.874-1.581-4.948zm1.504 0h4.44a9.637 9.637 0 0 1-1.363 4.177c-.306.51-.612.919-.857 1.215a9.978 9.978 0 0 1-.857-1.215A9.637 9.637 0 0 1 5.78 8.75zm4.44-1.5H5.78a9.637 9.637 0 0 1 1.363-4.177c.306-.51.612-.919.857-1.215.245.296.55.705.857 1.215A9.638 9.638 0 0 1 10.22 7.25zm1.504 1.5c-.144 2.074-.866 3.756-1.58 4.948-.12.197-.237.381-.353.552a6.506 6.506 0 0 0 4.666-5.5h-2.733zm2.733-1.5h-2.733c-.144-2.074-.866-3.756-1.58-4.948a11.738 11.738 0 0 0-.353-.552 6.506 6.506 0 0 1 4.666 5.5zM8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0z"/></svg>
<div class="text">English</div>
<div class="menu language-menu">
<a lang="en-US" data-url="/?lang=en-US" class="item active selected">English</a>
<a lang="zh-CN" data-url="/?lang=zh-CN" class="item ">简体中文</a>
<a lang="zh-HK" data-url="/?lang=zh-HK" class="item ">繁體中文(香港)</a>
<a lang="zh-TW" data-url="/?lang=zh-TW" class="item ">繁體中文(台灣)</a>
<a lang="de-DE" data-url="/?lang=de-DE" class="item ">Deutsch</a>
<a lang="fr-FR" data-url="/?lang=fr-FR" class="item ">français</a>
<a lang="nl-NL" data-url="/?lang=nl-NL" class="item ">Nederlands</a>
<a lang="lv-LV" data-url="/?lang=lv-LV" class="item ">latviešu</a>
<a lang="ru-RU" data-url="/?lang=ru-RU" class="item ">русский</a>
<a lang="uk-UA" data-url="/?lang=uk-UA" class="item ">Українська</a>
<a lang="ja-JP" data-url="/?lang=ja-JP" class="item ">日本語</a>
<a lang="es-ES" data-url="/?lang=es-ES" class="item ">español</a>
<a lang="pt-BR" data-url="/?lang=pt-BR" class="item ">português do Brasil</a>
<a lang="pl-PL" data-url="/?lang=pl-PL" class="item ">polski</a>
<a lang="bg-BG" data-url="/?lang=bg-BG" class="item ">български</a>
<a lang="it-IT" data-url="/?lang=it-IT" class="item ">italiano</a>
<a lang="fi-FI" data-url="/?lang=fi-FI" class="item ">suomi</a>
<a lang="tr-TR" data-url="/?lang=tr-TR" class="item ">Türkçe</a>
<a lang="cs-CZ" data-url="/?lang=cs-CZ" class="item ">čeština</a>
<a lang="sr-SP" data-url="/?lang=sr-SP" class="item ">српски</a>
<a lang="sv-SE" data-url="/?lang=sv-SE" class="item ">svenska</a>
<a lang="ko-KR" data-url="/?lang=ko-KR" class="item ">한국어</a>
</div>
</div>
<a href="/assets/js/licenses.txt">Licenses</a>
<a href="/api/swagger">API</a>
<a target="_blank" rel="noopener noreferrer" href="https://gitea.io">Website</a>
</div>
</div>
</footer>
<script src="/assets/js/index.js?v=a4b678d242d5a62868dcb904e8959b4e"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-18148792-3']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<script type="text/javascript">
document.getElementsByClassName('brand')[0].children[0].children[0].src="/img/AniNIX.png";
$('meta[property=og\\:image]').attr('content', '/img/AniNIX.png');
$('link[rel="mask-icon"]').attr('href', '/img/AniNIX.png');
$('link[rel="mask-icon"]').attr('color', '#000000');
document.getElementById("pwdchange").setAttribute("target","_blank");
document.getElementById("chat").setAttribute("target","_blank");
</script>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -0,0 +1,322 @@
#!/bin/bash
function header () {
tput setaf 1
tput bold
echo $@
tput sgr0
return
}
function help() {
echo Usage: ${0} '[OPTIONS]'
echo '\-A -- Audio optimizations from the Arch Wiki'
echo '\-d DISK -- Use the disk.'
echo '\-e -- Encrypt the root partition'
echo '\-g -- GUI packages and setup'
echo '\-h -- This helptext'
echo '\-k -- Kali Linux-like package additions'
echo '\-l FILE -- Log to a file'
echo '\-p -- Productivity package additions'
echo '\-P -- Power saving for laptops'
echo '\-s -- Create a layout for an AniNIX::Spartacus'
echo '\-m -- Skip disk operations and assume storage is mounted on /mnt'
echo '\-v -- Verbose output.'
echo '\-z -- Try to add all the packages on AniNIX::Core'
exit 1;
}
# Partition controls
efipart=2;
bootpart=3;
rootpart=4;
partpoint=1;
partedcmd='mklabel gpt\nmkpart primary ext2 0 1MiB\nset 1 bios_grub on\n';
function addNextPartition() {
partsize="$1"
parttype="$2"
partfs="$3"
nextpartpoint=$(( $partpoint + $partsize ))
partedcmd="${partedcmd}mkpart $parttype $partfs ${partpoint}MiB ${nextpartpoint}MiB"'\n'
partpoint=$nextpartpoint
}
disk="/dev/sda"
bootsize=500; # Size in MB for /boot
# TODO Add LVM as an argument
while getopts "d:egkl:pmsvz" OPTION
do
case $OPTION in
A) audio=1 ;;
d) disk=${OPTARG} ;;
e) encrypt=1 ;;
g) gui=1 ;;
k) kali=1 ;;
l) exec script -e -f -c "/bin/bash $0 $(echo $@ | sed "s#-l ${OPTARG}##")" "${OPTARG}" ;;
p) productivity=1; gui=1 ;;
P) powersave=1 ;;
m) nodiskbuild=1 ;;
s) spartacus=1 ;;
v) set -x ;;
z) kitchensink=1 ;;
*) help
esac
done
header Confirm options:
echo Spartacus set to: $spartacus
echo Encryption set to: $encrypt
echo GUI: $gui
echo Productivity: $productivity
echo Kali tools: $kali
echo All Core packages: $kitchensink
echo Disk to use: $disk \(Skip disk building? $nodiskbuild \)
printf "Is this OK? Type YES to continue: "
read answer
if [ "$answer" != "YES" ]; then
echo User did not confirm.
exit 1;
fi
# TODO Until Maat is back
# echo >> /etc/pacman.conf << EOM
# [AniNIX]
# SigLevel = Optional TrustAll
# Server = https://aninix.net/maat/
# EOM
pacman -Syy
if [ -z "$nodiskbuild" ]; then
header Allocating space
dd if=/dev/zero of="$disk" bs=1M count=1000
if [ ! -z "$spartacus" ]; then
# Insert an ExFAT data partition ahead of the rest.
export datapart=$efipart;
export efipart=$((efipart+1))
export bootpart=$((bootpart+1))
export rootpart=$(($rootpart+1))
# Break the disk up into 4ths -- 2/4 go to data, 1/4 go to boot, and 1/4 to root
export disksize=$(($(fdisk -l $disk | head -n 1 | cut -f 5 -d ' ') / 1048576)) # Return disk size in MB
if [ "$disksize" == "" ]; then echo "Can't identify disk size"; exit 1; fi
if [ "$disksize" -lt 7788 ]; then echo "This drive is too small to be a Spartacus."; exit 1; fi # Must be 8GB or more to have 2GB root.
export bootsize=$(($disksize / 4))
export datasize=$(($disksize / 2))
addNextPartition $datasize primary ext4
fi
# 550MiB for EFI with boot toggle
addNextPartition 550 primary fat32
partedcmd="${partedcmd}toggle $efipart boot"'\n'
# /boot
addNextPartition $bootsize primary fat32
# / (root)
partedcmd="${partedcmd}mkpart primary ext4 ${partpoint}MiB 100%%FREE"'\nquit\n\n'
printf "$partedcmd" | parted "$disk"
if [ ! -z "$spartacus" ]; then
#create data partition
pacman -S exfat-utils --noconfirm
mkfs.exfat "$disk""$datapart"
exfatlabel "$disk""$datapart" "AS-XPLATFRM"
fi
header Making fat esp partition on "$disk""$efipart"
mkfs.fat -F32 "$disk""$efipart"
header Making boot partition on "$disk""$bootpart"
mkfs.vfat "$disk""$bootpart"
header Making root and mountpoints
if [ ! -z "$encrypt" ]; then
header Making encrypted root on "$disk""$rootpart"
modprobe dm-crypt
modprobe serpent_generic
header Formatting root -- make sure to enter YES followed by a strong passphrase.
cryptsetup luksFormat -c serpent-xts-plain64 -h sha512 --key-size 512 "$disk""$rootpart"
header Unlocking root
cryptsetup luksOpen "$disk""$rootpart" cryptroot
mkfs.xfs -f /dev/mapper/cryptroot
xfs_admin -L ROOT /dev/mapper/cryptroot
mount /dev/mapper/cryptroot /mnt
if [ $? -ne 0 ]; then header ERROR: Cannot continue; exit 1; fi
else
header Making root on "$disk""$rootpart"
mkfs.xfs -f "$disk""$rootpart"
xfs_admin -L ROOT "$disk""$rootpart"
mount "$disk""$rootpart" /mnt
if [ $? -ne 0 ]; then header ERROR: Cannot continue; exit 1; fi
fi
mkdir /mnt/boot
mount "$disk""$bootpart" /mnt/boot
if [ "$?" -ne 0 ]; then header ERROR: Cannot continue; exit 1; fi
mkdir /mnt/boot/efi
mount "$disk""$efipart" /mnt/boot/efi
if [ "$?" -ne 0 ]; then header ERROR: Cannot continue; exit 1; fi
fi
# Install ArchLinux with basic clients for the AniNIX Services.
# * git for Foundation
# * elinks for WebServer and Wiki
# * openssh for SSH/SFTP
# * weechat for IRC
# * make for source packages
# * tor for anonymity
header Installing ArchLinux to device\(s\) on /mnt
export pkglist="base linux base-devel parted net-tools bind-tools git openssh make elinks weechat vim wget tor torsocks grub os-prober rsync openntpd tmux efibootmgr netctl dhcpcd" # shadowarch" TODO
if [ ! -z "$gui" ]; then
export pkglist="$pkglist"" xorg-server xfce4 chromium conky tigervnc xscreensaver"
fi
if [ ! -z "$spartacus" ]; then
export pkglist="$pkglist"" exfat-utils"
fi
if [ ! -z "$productivity" ]; then
export pkglist="$pkglist"" libreoffice-still gimp feh vlc evince openshot"
fi
if [ ! -z "$kali" ]; then
export pkglist="$pkglist"" extundelete testdisk nmap tcpdump hexedit dcfldd"
if [ ! -z "$gui" ]; then
export pkglist="$pkglist"" wireshark-gtk"
else
export pkglist="$pkglist"" wireshark-cli"
fi
fi
if [ ! -z "$kitchensink" ]; then
export pkglist="base base-devel $(wget -q -O - 'https://aninix.net/installed-packages.txt' | cut -f 1 -d ' ' | tr '\n' ' ')"
fi
yes "" | pacstrap -i /mnt $pkglist
if [ $? -ne 0 ]; then header ERROR: Cannot continue -- pacstrap failed; exit 1; fi
header Create FSTAB
genfstab -U /mnt >> /mnt/etc/fstab
header Set time
sed -i 's/#en_US.UTF-8/en_US.UTF-8/' /mnt/etc/locale.gen
arch-chroot /mnt locale-gen
ln -sf /usr/share/zoneinfo/America/Chicago /mnt/etc/localtime
arch-chroot /mnt hwclock --systohc --utc
header Setup bootloader
if [ -z "$nodiskbuild" ]; then
export rootuuid="$(blkid "$disk""$rootpart" | cut -f 2 -d '"')"
if [ ! -z "$encrypt" ]; then
export hookstring="$(grep 'HOOKS=' /mnt/etc/mkinitcpio.conf | grep -v '#')"
sed -i 's#'"$hookstring"'#HOOKS="base udev autodetect modconf block encrypt filesystems keyboard fsck"#' /mnt/etc/mkinitcpio.conf
sed -i 's#GRUB_CMDLINE_LINUX=""#GRUB_CMDLINE_LINUX="cryptdevice=UUID='$rootuuid':cryptroot"#' /mnt/etc/default/grub
sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="/GRUB_CMDLINE_LINUX_DEFAULT="panic=5 /' /etc/default/grub # Fix for CVE-2016-4484
fi
fi
arch-chroot /mnt mkinitcpio -p linux
if [ $? -ne 0 ]; then header ERROR: Cannot continue; exit 1; fi
if [ -z "$nodiskbuild" ]; then
arch-chroot /mnt grub-install --target=x86_64-efi --removable --bootloader-id=grub --efi-directory /boot "$disk"
if [ $? -ne 0 ]; then header ERROR: Cannot continue; exit 1; fi
arch-chroot /mnt grub-install --target=i386-pc "$disk"
if [ $? -ne 0 ]; then header ERROR: Cannot continue; exit 1; fi
fi
arch-chroot /mnt grub-mkconfig -o /boot/grub/grub.cfg
if [ $? -ne 0 ]; then header ERROR: Cannot continue; exit 1; fi
header Set networking
arch-chroot /mnt systemctl enable openntpd
arch-chroot /mnt systemctl enable netctl
export interface=$(ip link list | grep "state" | cut -f 2 -d ":" | cut -f 2 -d " " | grep -v lo)
cp /mnt/etc/netctl/examples/ethernet-dhcp /mnt/etc/netctl/$interface
sed -i 's/eth0/'$interface'/' /mnt/etc/netctl/$interface
echo 'DNSSearch="aninix.net"' >> /mnt/etc/netctl/$interface
arch-chroot /mnt systemctl enable netctl
arch-chroot /mnt netctl enable $interface
# Vim cleanup for SSH
arch-chroot /mnt mkdir -p /usr/share/vim/vimfiles/plugin
arch-chroot /mnt printf 'set mouse-=a\n' > /usr/share/vim/vimfiles/plugin/shadowarch.vim
ln -sf /etc/skel/.bashrc /mnt/root/.bashrc
# Clone ConfigPackags from AniNIX::Foundation
arch-chroot /mnt git -C /usr/local/src/ clone https://aninix.net/foundation/ConfigPackages
arch-chroot /mnt git -C /usr/local/src/ clone https://aninix.net/foundation/MiscScripts
arch-chroot /mnt make -C /usr/local/src/MiscScripts/Shared install
arch-chroot /mnt make -C /usr/local/src/MiscScripts/Admin install
arch-chroot /mnt make -C /usr/local/src/MiscScripts/ShadowArch install
arch-chroot /mnt git -C /usr/local/src/ clone https://aur.archlinux.org/cower.git
arch-chroot /mnt groupadd tty-allow
arch-chroot /mnt useradd -u 1001 -G tty-allow -m depriv
arch-chroot /mnt usermod -G "$(getent group | grep root | cut -f 1 -d ':' | tr '\n' ',')""tty-allow" root
arch-chroot /mnt /bin/bash -c 'line="$(grep -E root"[[:space:]]"ALL /etc/sudoers)"; sed -i "s/$line/$line\ndepriv ALL=(ALL) ALL/" /etc/sudoers'
# Handle AUR Packages
if [ ! -z "$kali" ]; then
arch-chroot /mnt git -C /usr/local/src/ clone https://aur.archlinux.org/autopsy.git
fi
# Optimizations from https://wiki.archlinux.org/index.php/Power_management
if [ ! -z "$powersave" ]; then
if [ `lspci | grep -i intel | grep -ic audio` -eq 1 ]; then
echo 'options snd_hda_intel power_save=1' > /mnt/etc/modprobe.d/audio_powersave.conf
else
echo 'options snd_ac97_codec power_save=1' > /mnt/etc/modprobe.d/audio_powersave.conf
fi
arch-chroot /mnt pacman -S rfkill cpupower --noconfirm
arch-chroot /mnt systemctl enable rfkill-block@.service
echo 'kernel.nmi_watchdog = 0' > /mnt/etc/sysctl.d/disable_watchdog.conf
echo 'vm.dirty_writeback_centisecs = 6000' > /mnt/etc/sysctl.d/dirty_writes.conf
echo 'vm.laptop_mode = 5' > /mnt/etc/sysctl.d/laptop.conf
echo 'ACTION=="add", SUBSYSTEM=="net", KERNEL=="wlan*", RUN+="/usr/bin/iw dev %k set power_save on"' > /mnt/etc/udev/rules.d/70-wifi-powersave.rules
echo 'blacklist uvcvideo' > /mnt/etc/modprobe.d/no-camera.conf
fi
# Thanks to https://wiki.archlinux.org/index.php/Professional_audio
if [ ! -z "$audio" ]; then
sed -i 's#GRUB_CMDLINE_LINUX_DEFAULT="#GRUB_CMDLINE_LINUX_DEFAULT="threadirqs #' /mnt/etc/default/grub
arch-chroot /mnt grub-mkconfig -o /boot/grub/grub.cfg
printf 'vm.swappiness = 10\nfs.inotify.max_user_watches = 524288\n' > /mnt/etc/sysctl.d/99-audio-tuning.conf
setpci -v -d *:* latency_timer=b0
for SOUND_CARD_PCI_ID in `lspci | grep -i audio | cut -f 1 -d ' '`; do
setpci -v -s $SOUND_CARD_PCI_ID latency_timer=ff;
done
printf 'echo 2048 > /sys/class/rtc/rtc0/max_user_freq\necho 2048 > /proc/sys/dev/hpet/max-user-freq\n' >> /mnt/etc/rc.local
fi
# Set password
header Set new root passphrase and depriviledged user '(depriv)' password.
arch-chroot /mnt passwd
arch-chroot /mnt passwd depriv
arch-chroot /mnt chown -R depriv:depriv /usr/local/src/
# Set SSH host keys
arch-chroot /mnt ssh-keygen -A
cp /root/shadowarch /mnt/root/shadowarch.installer."$(date +%F-%R)"
if [ ! -z "$gui" ]; then
echo "Remember to install your graphics drivers!
For NVidia, look at xf86-video-nouveau
For AMD, look at xf86-video-amdgpu
For Hyper-V, look at xf86-video-fbdev
For Virtual Box, look at virtualbox-guest-utils
For VMware, look at open-vm-tools"
fi
# Set hostname
header Set hostname
printf "What is your fully-qualified hostname? (i.e. Core.AniNIX.net) "
read hostname
echo "$hostname" > /mnt/etc/hostname
hostname "$hostname"
header Installed ShadowArch on `hostname -s`\!
if [ ! -z "$nodiskbuild" ]; then
header Remember to run grub-install and set up your bootloader.
echo 'https://wiki.archlinux.org/index.php/Installation_guide#Boot_loader'
else
header Press enter to reboot.
read
# Reboot
shutdown -r now
fi

View File

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://aninix.net/</loc>
<lastmod>2020-09-20</lastmod>
</url>
<url>
<loc>https://aninix.net/martialarts/index.html</loc>
<lastmod>2020-09-20</lastmod>
</url>
<url>
<loc>https://foundation.aninix.net/</loc>
<lastmod>2020-09-20</lastmod>
</url>
<url>
<loc>https://foundation.aninix.net/explore/repos</loc>
<lastmod>2020-09-20</lastmod>
</url>
<url>
<loc>https://foundation.aninix.net/AniNIX/Wiki</loc>
<lastmod>2020-09-20</lastmod>
</url>
<url>
<loc>https://irc.aninix.net/</loc>
<lastmod>2020-09-20</lastmod>
</url>
<url>
<loc>https://password.aninix.net/</loc>
<lastmod>2020-09-20</lastmod>
</url>
<url>
<loc>https://maat.aninix.net/index.html</loc>
<lastmod>2020-09-20</lastmod>
</url>
<url>
<loc>https://singularity.aninix.net/</loc>
<lastmod>2020-09-20</lastmod>
</url>
<url>
<loc>https://wolfpack.aninix.net/</loc>
<lastmod>2020-09-20</lastmod>
</url>
<url>
<loc>https://yggdrasil.aninix.net/</loc>
<lastmod>2020-09-20</lastmod>
</url>
<url>
<loc>https://sharingan.aninix.net</loc>
<lastmod>2020-09-20</lastmod>
</url>
<!-- Unlisted:
lykos.aninix.net
adhan.aninix.net
-->
</urlset>

View File

@ -0,0 +1,271 @@
<!DOCTYPE html>
<html lang="en-US" class="theme-">
<head data-suburl="">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title> AniNIX </title>
<link rel="manifest" href="/manifest.json" crossorigin="use-credentials">
<meta name="theme-color" content="#ff0000">
<meta name="author" content="AniNIX::Foundation" />
<meta name="description" content="AniNIX::Foundation \\ Code, documentation, and information sharing powered by Gitea (git with a cup of tea)" />
<meta name="keywords" content="go,git,self-hosted,gitea,aninix,aninix::foundation">
<meta name="referrer" content="no-referrer" />
<meta name="_csrf" content="iI1Kkrppem-yCnHGCll-UshSK6A6MTYwMDcwNjM3MTUxOTU5NzYxNg" />
<script>
/*
@licstart The following is the entire license notice for the
JavaScript code in this page.
Copyright (c) 2016 The Gitea Authors
Copyright (c) 2015 The Gogs Authors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
---
Licensing information for additional javascript libraries can be found at:
{{StaticUrlPrefix}}/vendor/librejs.html
@licend The above is the entire license notice
for the JavaScript code in this page.
*/
</script>
<script>
window.config = {
AppVer: '1.12.4',
AppSubUrl: '',
StaticUrlPrefix: '',
UseServiceWorker: true ,
csrf: 'iI1Kkrppem-yCnHGCll-UshSK6A6MTYwMDcwNjM3MTUxOTU5NzYxNg',
HighlightJS: false,
Minicolors: false,
SimpleMDE: false,
Tribute: false,
U2F: false,
Heatmap: false,
heatmapUser: null,
NotificationSettings: {
MinTimeout: 10000 ,
TimeoutStep: 10000 ,
MaxTimeout: 60000 ,
EventSourceUpdateTime: 10000 ,
},
};
</script>
<link rel="shortcut icon" href="/img/favicon.png">
<link rel="mask-icon" href="/img/gitea-safari.svg" color="#609926">
<link rel="fluid-icon" href="/img/gitea-lg.png" title="AniNIX">
<link rel="stylesheet" href="/vendor/assets/font-awesome/css/font-awesome.min.css">
<link rel="stylesheet" href="/fomantic/semantic.min.css?v=d8d448774563cec3783c3b65d4e914b6">
<link rel="stylesheet" href="/css/index.css?v=d8d448774563cec3783c3b65d4e914b6">
<noscript>
<style>
.dropdown:hover > .menu { display: block; }
.ui.secondary.menu .dropdown.item > .menu { margin-top: 0; }
</style>
</noscript>
<style class="list-search-style"></style>
<meta property="og:title" content="AniNIX">
<meta property="og:type" content="website" />
<meta property="og:image" content="/img/gitea-lg.png" />
<meta property="og:url" content="https://foundation.aninix.net/" />
<meta property="og:description" content="AniNIX::Foundation \\ Code, documentation, and information sharing powered by Gitea (git with a cup of tea)">
<meta property="og:site_name" content="AniNIX" />
<link rel="stylesheet" href="/css/theme-aninix.css?v=d8d448774563cec3783c3b65d4e914b6">
<link rel="icon" type="image/png" href="/img/AniNIX.png" />
<link rel="alternate" type="application/rss+xml" title="AniNIX::RSS" href="/aninix.xml" />
<link rel='apple-touch-icon' sizes='180x180' href='/img/AniNIX.png' />
<meta name='apple-mobile-web-app-capable' content='yes' />
</head>
<body>
<div class="full height">
<noscript>This website works better with JavaScript.</noscript>
<div class="ui top secondary stackable main menu following bar light">
<div class="ui container" id="navbar">
<div class="item brand" style="justify-content: space-between;">
<a href="/">
<img class="ui mini image" src="/img/gitea-sm.png">
</a>
<div class="ui basic icon button mobile-only" id="navbar-expand-toggle">
<i class="sidebar icon"></i>
</div>
</div>
<a class="item active" href="/">Home</a>
<a class="item " href="/explore/repos">Explore</a>
<a class="item" target="_blank" id="chat" href="https://irc.aninix.net/">Chat</a>
<a class="item" target="_blank" id="pwdchange" href="https://password.aninix.net/">Change Password</a>
<a class="item" id="martialarts" href="/martialarts/">Martial Arts</a>
<a class="item" target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io">Help</a>
<div class="right stackable menu">
<a class="item" href="/user/sign_up">
<svg class="svg octicon-person" width="16" height="16" aria-hidden="true"><use xlink:href="#octicon-person" /></svg> Register
</a>
<a class="item" rel="nofollow" href="/user/login?redirect_to=">
<svg class="svg octicon-sign-in" width="16" height="16" aria-hidden="true"><use xlink:href="#octicon-sign-in" /></svg> Sign In
</a>
</div>
</div>
</div>
<div class="home">
<h2>Thank you for your purchase!</h2>
<footer>
<div class="ui container">
<div class="ui left">
Powered by Gitea Page: <strong>0ms</strong> Template: <strong>0ms</strong>
</div>
<div class="ui right links">
<div class="ui language bottom floating slide up dropdown link item">
<i class="world icon"></i>
<div class="text">English</div>
<div class="menu">
<a lang="en-US" class="item active selected" href="#">English</a>
<a lang="zh-CN" class="item " href="?lang=zh-CN">简体中文</a>
<a lang="zh-HK" class="item " href="?lang=zh-HK">繁體中文(香港)</a>
<a lang="zh-TW" class="item " href="?lang=zh-TW">繁體中文(台灣)</a>
<a lang="de-DE" class="item " href="?lang=de-DE">Deutsch</a>
<a lang="fr-FR" class="item " href="?lang=fr-FR">français</a>
<a lang="nl-NL" class="item " href="?lang=nl-NL">Nederlands</a>
<a lang="lv-LV" class="item " href="?lang=lv-LV">latviešu</a>
<a lang="ru-RU" class="item " href="?lang=ru-RU">русский</a>
<a lang="uk-UA" class="item " href="?lang=uk-UA">Українська</a>
<a lang="ja-JP" class="item " href="?lang=ja-JP">日本語</a>
<a lang="es-ES" class="item " href="?lang=es-ES">español</a>
<a lang="pt-BR" class="item " href="?lang=pt-BR">português do Brasil</a>
<a lang="pl-PL" class="item " href="?lang=pl-PL">polski</a>
<a lang="bg-BG" class="item " href="?lang=bg-BG">български</a>
<a lang="it-IT" class="item " href="?lang=it-IT">italiano</a>
<a lang="fi-FI" class="item " href="?lang=fi-FI">suomi</a>
<a lang="tr-TR" class="item " href="?lang=tr-TR">Türkçe</a>
<a lang="cs-CZ" class="item " href="?lang=cs-CZ">čeština</a>
<a lang="sr-SP" class="item " href="?lang=sr-SP">српски</a>
<a lang="sv-SE" class="item " href="?lang=sv-SE">svenska</a>
<a lang="ko-KR" class="item " href="?lang=ko-KR">한국어</a>
</div>
</div>
<a href="/vendor/librejs.html" data-jslicense="1">JavaScript licenses</a>
<a href="/api/swagger">API</a>
<a target="_blank" rel="noopener noreferrer" href="https://gitea.io">Website</a>
</div>
</div>
</footer>
<script src="/js/jquery.js?v=d8d448774563cec3783c3b65d4e914b6"></script>
<script src="/fomantic/semantic.min.js?v=d8d448774563cec3783c3b65d4e914b6"></script>
<script src="/js/index.js?v=d8d448774563cec3783c3b65d4e914b6"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-18148792-3']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<script src="https://redalert.battleforthenet.com/widget.js" async></script>
<script type="text/javascript">
document.getElementsByClassName('brand')[0].children[0].children[0].src="/img/AniNIX.png";
$('meta[property=og\\:image]').attr('content', '/img/AniNIX.png');
$('link[rel="mask-icon"]').attr('href', '/img/AniNIX.png');
$('link[rel="mask-icon"]').attr('color', '#000000');
document.getElementsById("pwdchange").setAttribute("target","_blank");
document.getElementsById("chat").setAttribute("target","_blank");
</script>
</body>
</html>

View File

@ -0,0 +1,9 @@
User-agent: *
Allow: /$
Allow: /issues
Allow: /pulls
Allow: /explore
Allow: /AniNIX/
Allow: /martialarts/
Allow: /sitemap.xml
Disallow: /

View File

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://aninix.net/index.php</loc>
<lastmod>2019-10-24</lastmod>
</url>
<url>
<loc>https://aninix.net/pages/legal.php</loc>
<lastmod>2018-01-24</lastmod>
</url>
<url>
<loc>https://aninix.net/pages/wiki.php</loc>
<lastmod>2017-05-09</lastmod>
</url>
<url>
<loc>https://aninix.net/pages/martialarts.php</loc>
<lastmod>2018-09-18</lastmod>
</url>
<url>
<loc>https://aninix.net/pages/qr.php</loc>
<lastmod>2016-11-01</lastmod>
</url>
<url>
<loc>https://aninix.net/pages/social.php</loc>
<lastmod>2019-10-04</lastmod>
</url>
<url>
<loc>https://aninix.net/pages/webapps.php</loc>
<lastmod>2018-10-11</lastmod>
</url>
<url>
<loc>https://aninix.net/pages/downloads.php</loc>
<lastmod>2018-04-06</lastmod>
</url>
<url>
<loc>https://aninix.net/pages/charity.php</loc>
<lastmod>2018-04-06</lastmod>
</url>
<url>
<loc>https://aninix.net/pages/chatroom.php</loc>
<lastmod>2017-05-09</lastmod>
</url>
<url>
<loc>https://aninix.net/martialarts/index.php</loc>
<lastmod>2019-08-26</lastmod>
</url>
</urlset>

View File

@ -0,0 +1,3 @@
<a class="item" target="_blank" id="chat" href="https://irc.aninix.net/">Chat</a>
<a class="item" target="_blank" id="pwdchange" href="https://password.aninix.net/">Change Password</a>
<a class="item" id="martialarts" href="{{AppSubUrl}}/martialarts/">Martial Arts</a>

View File

@ -0,0 +1,24 @@
<!-- Google Analytics -->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-18148792-3']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<!-- Replace Gitea icon with AniNIX -->
<script type="text/javascript">
document.getElementsByClassName('brand')[0].children[0].children[0].src="/assets/img/AniNIX.png";
$('meta[property=og\\:image]').attr('content', '/assets/img/AniNIX.png');
$('link[rel="mask-icon"]').attr('href', '/assets/img/AniNIX.png');
$('link[rel="mask-icon"]').attr('color', '#000000');
document.getElementById("pwdchange").setAttribute("target","_blank");
document.getElementById("chat").setAttribute("target","_blank");
</script>

View File

@ -0,0 +1,4 @@
<link rel="icon" type="image/png" href="/assets/img/AniNIX.png" />
<link rel="alternate" type="application/rss+xml" title="AniNIX/RSS" href="/aninix.xml" />
<link rel='apple-touch-icon' sizes='180x180' href='/assets/img/AniNIX.png' />
<meta name='apple-mobile-web-app-capable' content='yes' />

View File

@ -0,0 +1,88 @@
{{template "base/head" .}}
<!-- BEGIN CUSTOM HOME -->
<div class="home">
<div class="ui stackable middle very relaxed page grid">
<div class="sixteen wide center aligned centered column">
<div>
<img class="logo" src="{{AppSubUrl}}/assets/img/avatar_default.png" />
</div>
<div class="hero">
<h1 class="ui icon header title">
AniNIX
</h1>
<h2>Welcome to the network</h2>
</div>
</div>
</div>
<div class="ui stackable middle very relaxed page grid">
<div class="eight wide center column">
<h1 class="hero ui icon header">
<img width=20px height=20px src='/assets/img/icons/FoundationIcon.png'/>
<a href="https://foundation.aninix.net/explore/repos">Open source security</a>
</h1>
<p class="large">
The AniNIX's primary goal is to ensure everyone has access to the knowledge they need to build a low-cost, secure platform. We make all our source-code accessible and open-source.
</p>
</div>
<div class="eight wide center column">
<h1 class="hero ui icon header">
<img width=20px height=20px src='/assets/img/icons/IRCIcon.png'/>
<a href='ircs://aninix.net:6697/#lobby'>Contact us anytime</a>
</h1>
<p class="large">
We run an open IRC network -- we'd love to connect with you there. Not familiar with IRC? No worries -- we have a <a href="https://irc.aninix.net/" target=_blank alt="AniNIX/IRC (Web)" id="webchat">webchat</a> available.
</p> </div>
</div>
<div class="ui stackable middle very relaxed page grid">
<div class="eight wide center column">
<h1 class="hero ui icon header">
<img width=20px height=20px src="/assets/img/icons/WikiIcon.png"/>
<a href="/AniNIX/Wiki">Open documentation</a>
</h1>
<p class="large">
We maintain a Wiki to document how and why we do what we do. Hopefully, it can both help others to learn more about computing and spark discussion with the community at large.
</p>
</div>
<div class="eight wide center column">
<h1 class="hero ui icon header">
<img width=20px height=20x src="/assets/img/icons/MaatIcon.png"/>
<a href="https://maat.aninix.net/">Downloads</a>
</h1>
<p class="large">
We offer downloads from our AniNIX::Maat continuous-deployment system, including static files and packages for <a href="https://archlinux.org/">ArchLinux-style distributions.</a>
</p>
</div>
</div>
<hr style="margin-top: 50px;" />
<div class="sixteen wide center aligned centered column">
<div class="hero">
<h2>Webapps</h2>
<p>We host a number of web apps to make our users' lives easier.
</div>
<div class="ui stackable middle very relaxed page grid">
<div class="four wide center column"><a title="AniNIX/Singularity" href="https://singularity.aninix.net"><img style="width: 50px; height:auto; margin: 0; padding: 0 auto;" alt=RSS src="/assets/img/icons/SingularityIcon.png" /><p>AniNIX/Singularity (News powered by TT-RSS)</p></a></div>
<div class="four wide center column"><a title="AniNIX/Yggdrasil" href="https://yggdrasil.aninix.net"><img style="width: 50px; height:auto; margin: 0; padding: 0 auto;" src="/assets/img/icons/YggdrasilIcon.png" /><p>AniNIX/Yggdrasil (Media powered by Emby)</p></a></div>
<div class="four wide center column"><a title="AniNIX/Sharingan" href="https://sharingan.aninix.net"><img src="/assets/img/icons/SharinganIcon.png" style="width: 50px; height:auto; margin: 0; padding: 0 auto;" /><p>AniNIX/Sharingan (Monitoring powered by Nagios)</p></a></div>
<div class="four wide center column"><a title="AniNIX/WolfPack" href="https://wolfpack.aninix.net"><img src="/assets/img/icons/WolfPackIcon.png" style="width: 50px; height:auto; margin: 0; padding: 0 auto;" /><p>AniNIX/WolfPack (Botnet download results)</p></a></div>
</div>
</div>
<hr style="margin-top: 50px;" />
<div class="sixteen wide center aligned centered column">
<div class="hero">
<h2>Follow us on social media</h2>
<p>We want to stay in touch with you, so we are present on the social media platforms we find applicable.<br/> Have one you want us on? Contact us and let us know!</p>
</div>
<div class="ui stackable middle very relaxed page grid">
<div class="two wide center column"><!--placeholder--><p>&nbsp;</p></div>
<div class="two wide center column"><a title=AniNIX/RSS href="/assets/aninix.xml"><img style="width: 50px; height:auto; margin: 0; padding: 0 auto;" alt=RSS src="/assets/img/social/rss.png" /></a></div>
<div class="two wide center column"><a title=Discord href="https://discord.gg/2bmggfR"><img alt=Discord style="width: 50px; height:auto; margin: 0; padding: 0 auto;" src="/assets/img/social/discord.ico" /></a></div>
<div class="two wide center column"><a title=GitHub href="https://github.com/AniNIX"><img alt=GitHub src="/assets/img/social/github.png" style="width: 50px; height:auto; margin: 0; padding: 0 auto;" /></a></div>
<div class="two wide center column"><a title=YouTube href="https://www.youtube.com/channel/UCe-WNM2mbI51xoVZp3K_wFQ"><img src="/assets/img/social/youtube.png" style="width: 50px; height:auto; margin: 0; padding: 0 auto;" /></a></div>
<div class="two wide center column"><a title=LinkedIn href="https://www.linkedin.com/groups/13577720"><img style="width: 50px; height:auto; margin: 0; padding: 0 auto;" src="/assets/img/social/linkedin.png" /></a></div>
<div class="two wide center column"><a title=Facebook href="https://facebook.com/aninixnetwork"><img style="width: 50px; height:auto; margin: 0; padding: 0 auto;" src="/assets/img/social/facebook.png" /></a></div>
<div class="two wide center column"><!--placeholder--><p>&nbsp;</p></div>
</div>
</div>
</div>
<!-- END CUSTOM HOME -->
{{template "base/footer" .}}

View File

@ -0,0 +1,51 @@
[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
After=mysqld.service
After=postgresql.service
After=memcached.service
After=redis.service
[Service]
User=gitea
Group=gitea
Type=simple
WorkingDirectory=~
RuntimeDirectory=gitea
LogsDirectory=gitea
StateDirectory=gitea
Environment=USER=gitea HOME=/var/lib/gitea GITEA_WORK_DIR=/var/lib/gitea GITEA_CUSTOM=/var/lib/gitea/custom/
ExecStart=/usr/bin/gitea web -c /var/lib/gitea/custom/conf/app.ini --custom-path=/var/lib/gitea/custom/
Restart=always
RestartSec=2s
ReadWritePaths=/var/lib/gitea/custom/conf/app.ini
AmbientCapabilities=
CapabilityBoundingSet=
LockPersonality=true
#Required by commit search
#MemoryDenyWriteExecute=true
NoNewPrivileges=True
#SecureBits=noroot-locked
PrivateDevices=true
PrivateTmp=true
PrivateUsers=true
ProtectClock=true
ProtectControlGroups=true
ProtectHome=true
ProtectHostname=true
ProtectKernelLogs=true
ProtectKernelModules=true
ProtectKernelTunables=true
ProtectProc=invisible
ProtectSystem=strict
RestrictAddressFamilies=AF_INET AF_INET6 AF_NETLINK AF_UNIX
RestrictNamespaces=true
RestrictRealtime=true
RestrictSUIDSGID=true
SystemCallArchitectures=native
SystemCallFilter=@system-service
SystemCallErrorNumber=EPERM
[Install]
WantedBy=multi-user.target

View File

@ -0,0 +1,10 @@
[Trigger]
Operation = Install
Operation = Upgrade
Type = Package
Target = gitea
[Action]
Description = Updating Gitea Custom Pages
When = PostTransaction
Exec = /usr/bin/runuser -u http -- /usr/bin/bash /var/lib/gitea/custom/bin/gen-aninix-custom

View File

@ -0,0 +1,336 @@
<div class="ui stackable middle very relaxed page grid">
<div class="sixteen wide center aligned centered column">
<div class="ui negative message"><p>We are open despite COVID-19 -- those attending in person will need to sign a waiver of health and follow all state requirements, including wearing a mask.</p></div>
<div>
<img class="logo" src="/assets/img/icons/MartialArtsIcon.png" />
</div>
<div class="hero">
<h1 class="ui icon header title">
AniNIX Martial Arts
</h1>
<h2>Open-source, research-driven self-defense and personal health</h2>
<p>AniNIX Martial Arts is a small martial arts collective focusing on research-driven martial arts. Our core style is USHF HapKiDo, but we are influenced by HEMA, Razmafzar, Kali, Shaolin, Silat, JKD, BJJ, and many other systems. We are a research-driven group -- we encourage cross-training with other systems and will bring in new concepts regularly. The class is open to all experience levels, gender identity, gender expression, sexual orientation, religious or cultural identity, socioecomic status, or age (above 14), in Southcentral Wisconsin -- we will fit your training to your needs and goals.</p><p>Drop-ins are welcome, and registration is cheap. We hope you'll give us a chance to show you what we can do.</p>
</div>
</div>
</div>
<div class="ui stackable middle very relaxed page grid">
<div class="eight wide center column">
<h1 class="hero ui icon header">
<img width=20px height=20px src='/assets/img/icons/FoundationIcon.png'/>
<a href="/user/login?redirect_to=%2fAniNIX_Martial_Arts">Open-source</a>
</h1>
<p class="large">
We want your training with our system to become a part of your life. This means that we provide access to a revision-controlled copy of our notes that all our students can download, keep, and contribute to. We're tired of the old era where how the system works is kept hidden from students and piecemealed out as a marketing ploy -- we want to be as trasparent as possible in how our program and our martial art function. Transparency keeps our instructors honest and our students engaged -- this means a better martial arts experience for everyone.
</p>
</div>
<div class="eight wide center column">
<h1 class="hero ui icon header">
<img width=20px height=20px src='/assets/img/ushf.jpg'/>
<a href='https://ushapkidofederation.wordpress.com/'>Research-driven</a>
</h1>
<p class="large">
Our system is always growing. We are a United States HapKiDo Federation (USHF) school, and that gives us access to high-quality instructors and seminar material each year from across the US. We also maintain good relationships with other schools in our area -- we want our students to examine what they're learing and make sure that it works, and that means looking at different perspectives.
</p> </div>
</div>
<div class="ui stackable middle very relaxed page grid">
<div class="eight wide center column">
<h1 class="hero ui icon header">
<img width=20px height=20px src="/assets/img/icons/MartialArtsIcon.png"/>
<a href="/martialarts/index.html#storefront">Low-cost</a>
</h1>
<p class="large">We are non-profit group -- we train because we feel like it makes life better, not to make money. As such, our costs are publicly documented and our rates match the same. Classes will be informed of potential changes to costs well in advance, and we use recurring payments. We want you thinking about your training, not how you're going to pay for it.</p>
<p class="large">
<ul style="text-align: left;">
<li><b>Cost:</b> $10 per month in-person; $5 per month livestream -- pay below.</li>
<li><b>Lessons:</b>Mondays and Thursdays 7-8:30 p.m.</li>
<li><b>Sparring:</b> Mondays and Thursdays 6-7 p.m.</li>
<li><b>Shaolin Workouts:</b> Saturday mornings at 8 a.m. by livestream only</li>
<li><b>Location:</b> <a href="https://g.page/aninix-martial-arts?share">225 Blaser Drive, Belleville, WI</a></li>
<li><b>What to bring:</b> Exercise clothes and water</li>
</ul></p>
</div>
<div class="eight wide center column">
<h1 class="hero ui icon header">
<img width=20px height=20x src="/assets/img/icons/IRCIcon.png"/>
<a href="/martialarts/index.html#social">Real-life First</a>
</h1>
<p class="large">
Everyone is welcome! Class attendance is not mandated and belt-testing is not required to train. As a courtesy, please inform the class of your absence or intended late arrival -- real-life comes first, and we're happy to work with your needs. As long as one person shows, we'll have class -- the smaller the class, the more tailored it is, but the bigger classes mean more partners and body types.</p>
<p class="large">
Our focus is also on what you will actually use. While we appreciate traditional and esoteric training for self-development, our weekly classes are focused on modern techniques and training methods so that you get the most out of your time. Our goal is to help create a community of prepared and healthy citizens, and we believe martial arts helps build that in a way no other activity can.
</p>
</div>
</div>
<hr style="margin-top: 50px;" />
<div class="ui stackable middle very relaxed page grid" id="social">
<div class="sixteen wide center aligned centered column">
<div class="hero">
<h2 id=social>Follow us on social media</h2>
<p class=large>We want to stay in touch with you, so we are present on the social media platforms we find applicable.<br/> Have one you want us on? Contact us and let us know!</p>
</div>
<div class="ui stackable middle very relaxed page grid" id="social">
<div class="two wide center column"><p>&nbsp;</p></div>
<div class="two wide center column"><a title=RSS href="/martialarts/maqotw.xml"><img style="width: 50px; height:auto; margin: 0; padding: 0 auto;" alt=RSS src="/assets/img/social/rss.png" /></a></div>
<div class="two wide center column"><a title=Discord href="https://discord.gg/2bmggfR"><img alt=Discord style="width: 50px; height:auto; margin: 0; padding: 0 auto;" src="/assets/img/social/discord.ico" /></a></div>
<div class="two wide center column"><a title=NextDoor href="https://nextdoor.com/news_feed/?post=112835813"><img alt=NextDoor src="/assets/img/social/nextdoor.png" style="width: 50px; height:auto; margin: 0; padding: 0 auto;" /></a></div>
<div class="two wide center column"><a title=YouTube href="https://www.youtube.com/channel/UCVAkee-WaInnZbPn16bqzrw/about?view_as=subscriber"><img src="/assets/img/social/youtube.png" style="width: 50px; height:auto; margin: 0; padding: 0 auto;" /></a></div>
<div class="two wide center column"><a title=Gitea href="/AniNIX_Martial_Arts"><img style="width: 50px; height:auto; margin: 0; padding: 0 auto;" src="/assets/img/gitea-lg.png" /></a></div>
<div class="two wide center column"><a title=Facebook href="https://www.facebook.com/groups/aninixmartialarts/"><img style="width: 50px; height:auto; margin: 0; padding: 0 auto;" src="/assets/img/social/facebook.png" /></a></div>
<div class="two wide center column"><p>&nbsp;</p></div>
</div>
</div>
</div>
<hr style="margin-top: 50px;" />
<!--<div class="ui stackable middle very relaxed page grid">
<script src="https://js.stripe.com/v3"></script>
<div class="sixteen wide center aligned centered column">
<div class="hero">
<h2 id="storefront">Our storefront</h2>
<p>AniNIX Martial Arts has to charge some fees in order to operate. We hope you find these reasonable -- we do our best to keep costs as low as possible and <a href="https://aninix.net/mawiki/Wiki/src/branch/main/Budget.md">our budget is public</a>. Please reach out on Discord or IRC if you have questions or concerns.</p>
<p>We really don't like talking about money -- we're here to help people learn, not make a buck. So, all of our class signups are recurring charges each month -- that way, we don't have to pester you. You're welcome to cancel at any time. To cancel, just contact us on <a href="/martialarts/index.html#social">any platform</a> and an admin will take care of it for you.</p>
<p><b>Current students:</b> Because our space is currently limited, please make sure to note which days and times you're coming on-site at the <a href="https://aninix.net/user/login?redirect_to=%2fmawiki%2fHapKiDo%2fsrc%2fbranch%2fmain%2fSignup.md">sign-up page</a>.</p>
<p>&nbsp;<br/></p>
</div>
</div>
</div>
</div>
<div class="ui stackable middle very relaxed page grid">
<div class="eight wide center column" style="border: 1px solid #FFF;">
<h1 class="hero ui icon header">
<img width=20px height=20px src='/assets/img/icons/MartialArtsIcon.png'/>
On-site classes
</h1>
<p class="large">On-site classes are $10 a month, plus the minimal transaction fee -- you'll be charged automatically each month so you don't have to worry about it. These funds go to pay for insurance, HVAC, mats, cleaning supplies, etc. This subscription covers on-site training on any of our listed times and access to our livestream and media library.</p>
<p class="large">Your first class with us is <b>free</b> -- please come try us out before you put any money down.</p>
<p class="large">
<!-- START STRIPE CODE -->
<button
style="background-color:#6772E5;color:#FFF;padding:8px 12px;border:0;border-radius:4px;font-size:1em"
id="checkout-button-price_1HTuhvI49P1uFPoXXoSjPm2w"
role="link"
type="button"
>
Checkout
</button>
<div id="error-message"></div>
<script>
(function() {
var stripe = Stripe('pk_live_51HThYnI49P1uFPoX5ARnHSpT9D08Gbfux6O25waFLpPBsnZoLDuqopFAZeLfu0CbbICxEnPZOOLkDLTlcNjkazs100ElKcF2QX');
var checkoutButton = document.getElementById('checkout-button-price_1HTuhvI49P1uFPoXXoSjPm2w');
checkoutButton.addEventListener('click', function () {
// When the customer clicks on the button, redirect
// them to Checkout.
stripe.redirectToCheckout({
lineItems: [{price: 'price_1HTuhvI49P1uFPoXXoSjPm2w', quantity: 1}],
mode: 'subscription',
// Do not rely on the redirect to the successUrl for fulfilling
// purchases, customers may not always reach the success_url after
// a successful payment.
// Instead use one of the strategies described in
// https://stripe.com/docs/payments/checkout/fulfill-orders
successUrl: window.location.protocol + '//aninix.net/pay/thank-you.html',
cancelUrl: window.location.protocol + '//aninix.net/martialarts/index.html',
})
.then(function (result) {
if (result.error) {
// If `redirectToCheckout` fails due to a browser or network
// error, display the localized error message to your customer.
var displayError = document.getElementById('error-message');
displayError.textContent = result.error.message;
}
});
});
})();
</script>
<! -- END STRIPE CODE -->
</p>
</div>
<div class="eight wide center column" style="border: 1px solid #FFF;">
<h1 class="hero ui icon header">
<img width=20px height=20px src='/assets/img/icons/MartialArtsIcon.png'/>
Remote classes
</h1>
<p class="large">Remote-only classes are available at $5/month for prior students. This gets you access to our livestream classes and our media library of prior classes. This helps offset the upkeep costs for our web hosting and offers some parity with our on-site students.</p>
<p class="large">These are intended as a continuing-education option for students with background in martial arts who aren't able to attend classes in-person due to distance or schedule -- they are <b>not</b> a substitute for in-person training.</p>
<p class="large">
<!-- START STRIPE CODE -->
<button
style="background-color:#6772E5;color:#FFF;padding:8px 12px;border:0;border-radius:4px;font-size:1em"
id="checkout-button-price_1HThmcI49P1uFPoXMDCRVXTl"
role="link"
type="button"
>
Checkout
</button>
<div id="error-message"></div>
<script>
(function() {
var stripe = Stripe('pk_live_51HThYnI49P1uFPoX5ARnHSpT9D08Gbfux6O25waFLpPBsnZoLDuqopFAZeLfu0CbbICxEnPZOOLkDLTlcNjkazs100ElKcF2QX');
var checkoutButton = document.getElementById('checkout-button-price_1HThmcI49P1uFPoXMDCRVXTl');
checkoutButton.addEventListener('click', function () {
// When the customer clicks on the button, redirect
// them to Checkout.
stripe.redirectToCheckout({
lineItems: [{price: 'price_1HThmcI49P1uFPoXMDCRVXTl', quantity: 1}],
mode: 'subscription',
// Do not rely on the redirect to the successUrl for fulfilling
// purchases, customers may not always reach the success_url after
// a successful payment.
// Instead use one of the strategies described in
// https://stripe.com/docs/payments/checkout/fulfill-orders
successUrl: window.location.protocol + '//aninix.net/pay/thank-you.html',
cancelUrl: window.location.protocol + '//aninix.net/martialarts/index.html',
})
.then(function (result) {
if (result.error) {
// If `redirectToCheckout` fails due to a browser or network
// error, display the localized error message to your customer.
var displayError = document.getElementById('error-message');
displayError.textContent = result.error.message;
}
});
});
})();
</script>
<! -- END STRIPE CODE -->
</p> </div>
</div>
<div class="ui stackable middle very relaxed page grid">
<div class="eight wide center column" style="border: 1px solid #FFF;">
<h1 class="hero ui icon header">
<img width=20px height=20px src="/assets/img/icons/MartialArtsIcon.png"/>
T-Shirt
</h1>
<p class="large">T-shirts are $25 each -- they're made of a light, breathable black fabric with our logo across the back. Please contact an administrator on <a href="/#social">Discord or Facebook</a> with your size.</p>
<p class="large">T-Shirts are limited quantity -- we currently have 2 Medium and 1 Small in stock. T-shirt runs are only done on class request for cost reasons.</p>
<p class="large">
<!-- START STRIPE CODE -->
<!-- Create a button that your customers click to complete their purchase. Customize the styling to suit your branding. -->
<button
style="background-color:#6772E5;color:#FFF;padding:8px 12px;border:0;border-radius:4px;font-size:1em"
id="checkout-button-price_1HTucZI49P1uFPoXshtbIl8W"
role="link"
type="button"
>
Checkout
</button>
<div id="error-message"></div>
<script>
(function() {
var stripe = Stripe('pk_live_51HThYnI49P1uFPoX5ARnHSpT9D08Gbfux6O25waFLpPBsnZoLDuqopFAZeLfu0CbbICxEnPZOOLkDLTlcNjkazs100ElKcF2QX');
var checkoutButton = document.getElementById('checkout-button-price_1HTucZI49P1uFPoXshtbIl8W');
checkoutButton.addEventListener('click', function () {
// When the customer clicks on the button, redirect
// them to Checkout.
stripe.redirectToCheckout({
lineItems: [{price: 'price_1HTucZI49P1uFPoXshtbIl8W', quantity: 1}],
mode: 'payment',
// Do not rely on the redirect to the successUrl for fulfilling
// purchases, customers may not always reach the success_url after
// a successful payment.
// Instead use one of the strategies described in
// https://stripe.com/docs/payments/checkout/fulfill-orders
successUrl: window.location.protocol + '//aninix.net/pay/thank-you.html',
cancelUrl: window.location.protocol + '//aninix.net/martialarts/index.html',
})
.then(function (result) {
if (result.error) {
// If `redirectToCheckout` fails due to a browser or network
// error, display the localized error message to your customer.
var displayError = document.getElementById('error-message');
displayError.textContent = result.error.message;
}
});
});
})();
</script>
<! -- END STRIPE CODE -->
</p>
</div>
<div class="eight wide center column" style="border: 1px solid #FFF;">
<h1 class="hero ui icon header">
<img width=20px height=20x src="/assets/img/icons/MartialArtsIcon.png"/>
Patch
</h1>
<p class="large">Patches are $5 -- they're meant to be sewn or ironed onto gis, gear bags, backpacks, etc. They're a great way to show off your loyalty to the group and pride in your hard work!</p>
<p class="large">
<form action="./index.html" id="patches">
<label for="patchcount">Number:</label>
<select name="patchcount" id="patchescount">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
<br/>
</form>
</p>
<p class="large">
<!-- START STRIPE CODE -->
<button
style="background-color:#6772E5;color:#FFF;padding:8px 12px;border:0;border-radius:4px;font-size:1em"
id="checkout-button-price_1HTuYII49P1uFPoXaIk9puyu"
role="link"
type="button"
>
Checkout
</button>
<div id="error-message"></div>
<script>
(function() {
var stripe = Stripe('pk_live_51HThYnI49P1uFPoX5ARnHSpT9D08Gbfux6O25waFLpPBsnZoLDuqopFAZeLfu0CbbICxEnPZOOLkDLTlcNjkazs100ElKcF2QX');
var checkoutButton = document.getElementById('checkout-button-price_1HTuYII49P1uFPoXaIk9puyu');
checkoutButton.addEventListener('click', function () {
// When the customer clicks on the button, redirect
// them to Checkout.
stripe.redirectToCheckout({
lineItems: [{price: 'price_1HTuYII49P1uFPoXaIk9puyu', quantity: parseInt(document.getElementById('patchescount').value) }],
mode: 'payment',
// Do not rely on the redirect to the successUrl for fulfilling
// purchases, customers may not always reach the success_url after
// a successful payment.
// Instead use one of the strategies described in
// https://stripe.com/docs/payments/checkout/fulfill-orders
successUrl: window.location.protocol + '//aninix.net/pay/thank-you.html',
cancelUrl: window.location.protocol + '//aninix.net/martialarts/index.html',
})
.then(function (result) {
if (result.error) {
// If `redirectToCheckout` fails due to a browser or network
// error, display the localized error message to your customer.
var displayError = document.getElementById('error-message');
displayError.textContent = result.error.message;
}
});
});
})();
</script>
<! -- END STRIPE CODE -->
</div>
</div>
<hr style="margin-top: 50px;" />
</div>-->

View File

@ -0,0 +1,95 @@
<div class="ui stackable middle very relaxed page grid">
<script src="https://js.stripe.com/v3"></script>
<div class="sixteen wide center aligned centered column">
<h1 class="ui icon header title">
AniNIX
</h1>
<h2>Our Storefront</h2>
<p>We have limited service offerings available. Please contact an admin on IRC first to arrange the contract, then use the item below to pay the invoice.</p>
</div>
</div>
</div>
<div class="ui stackable middle very relaxed page grid">
<div class="sixteen wide center column" >
<h1 class="hero ui icon header">
<img width=20px height=20px src='/img/icons/CoreIcon.png'/>
Cybersecurity Consulting
</h1>
<p class="large">The AniNIX offers cybersecurity consulting and advice services on a limited basis. We bill at $20 an hour -- please select your need below after negotiating with an admin.</p>
<p class="large">
<form action="./storefront.html" id="hours">
<label for="hourcount">Hours required</label>
<select name="hourcount" id="hourscount">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
</select>
<br/>
</form>
<!-- START STRIPE CODE -->
<!-- Create a button that your customers click to complete their purchase. Customize the styling to suit your branding. -->
<button
style="background-color:#6772E5;color:#FFF;padding:8px 12px;border:0;border-radius:4px;font-size:1em"
id="checkout-button-price_1HTuehI49P1uFPoXCW9pJg5E"
role="link"
type="button"
>
Checkout
</button>
<div id="error-message"></div>
<script>
(function() {
var stripe = Stripe('pk_live_51HThYnI49P1uFPoX5ARnHSpT9D08Gbfux6O25waFLpPBsnZoLDuqopFAZeLfu0CbbICxEnPZOOLkDLTlcNjkazs100ElKcF2QX');
var checkoutButton = document.getElementById('checkout-button-price_1HTuehI49P1uFPoXCW9pJg5E');
checkoutButton.addEventListener('click', function () {
// When the customer clicks on the button, redirect
// them to Checkout.
stripe.redirectToCheckout({
lineItems: [{price: 'price_1HTuehI49P1uFPoXCW9pJg5E', quantity: parseInt(document.getElementById('hourscount').value)}],
mode: 'payment',
// Do not rely on the redirect to the successUrl for fulfilling
// purchases, customers may not always reach the success_url after
// a successful payment.
// Instead use one of the strategies described in
// https://stripe.com/docs/payments/checkout/fulfill-orders
successUrl: window.location.protocol + '//aninix.net/pay/thank-you.html',
cancelUrl: window.location.protocol + '//aninix.net/pay/storefront.html',
})
.then(function (result) {
if (result.error) {
// If `redirectToCheckout` fails due to a browser or network
// error, display the localized error message to your customer.
var displayError = document.getElementById('error-message');
displayError.textContent = result.error.message;
}
});
});
})();
</script>
<! -- END STRIPE CODE -->
</p>
</div>
<hr style="margin-top: 50px;" />
</div>

View File

@ -0,0 +1,12 @@
<div class="ui stackable middle very relaxed page grid">
<div class="sixteen wide center aligned centered column">
<div>
<img class="logo" src="/img/icons/CoreIcon.png" />
</div>
<div class="hero">
<h2 class="ui icon header title">
Thank you for your purchase!
</h2>
</div>
</div>
</div>

View File

@ -6,9 +6,47 @@
- gitea
- name: BitBot
become: yes
git:
repo: https://github.com/jesopo/bitbot.git
dest: /opt/bitbot
- name: Make directories
become: yes
file:
path: "/var/lib/gitea/{{ item }}"
owner: gitea
group: gitea
mode: 0750
loop:
- "custom/bin"
- "web-snippets"
- name: Copy web-snippets
become: yes
copy:
src: web-snippets/
dest: /var/lib/gitea/web-snippets
owner: gitea
group: gitea
mode: 0640
- name: Copy scripts
become: yes
copy:
src: custom/
dest: /var/lib/gitea/custom/
owner: gitea
group: gitea
- name: Copy hook
become: yes
copy:
src: gitea.hook
dest: /etc/pacman.d/hooks/gitea.hook
owner: gitea
group: gitea
- name: Generate pages
become: yes
command: /usr/bin/runuser -u gitea -- /usr/bin/bash /var/lib/gitea/custom/bin/gen-aninix-custom

View File

@ -1,6 +1,5 @@
server {
#listen 443 ssl http2;
listen 444 ssl http2;
listen 443 ssl http2;
server_name default_server;
include sec.conf;
@ -8,10 +7,39 @@ server {
location /
{
rewrite ^/martialarts(\/*)$ /assets/martialarts/index.html;
location /aninix.xml {
proxy_hide_header Content-Type;
add_header content-type "application/atom+xml";
rewrite /aninix.xml /AniNIX/Wiki/raw/branch/main/rss/aninix.xml;
}
location /martialarts/maqotw.xml {
proxy_hide_header Content-Type;
add_header content-type "application/atom+xml";
rewrite /martialarts/maqotw.xml /AniNIX/Wiki/raw/branch/main/rss/maqotw.xml;
}
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:3000;
}
location /whatismyip
{
include ../conf.d/fastcgi.config;
root /usr/share/webapps/aninix/;
location ~* whatismyip {
try_files $uri /whatismyip.php;
expires max;
}
}
location /blackpage
{
root /usr/share/webapps/aninix/;
try_files $uri /blackpage.html;
}
include letsencrypt.conf;
}

View File

@ -1,5 +1,5 @@
server {
listen 444 ssl http2;
listen 443 ssl http2;
server_name adhan.aninix.net;
include sec.conf;

View File

@ -0,0 +1,13 @@
location ~ \.php$ {
try_files $fastcgi_script_name =404;
include fastcgi_params;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;
fastcgi_param DOCUMENT_ROOT $realpath_root;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
}

View File

@ -0,0 +1,13 @@
location ~ \.php$ {
try_files $fastcgi_script_name =404;
include fastcgi_params;
fastcgi_pass unix:/run/php-fpm7/php-fpm.sock;
fastcgi_index index.php;
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;
fastcgi_param DOCUMENT_ROOT $realpath_root;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
}

View File

@ -0,0 +1,27 @@
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param HTTPS $https;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;

View File

@ -0,0 +1,29 @@
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
#listen 443 ssl http2;
listen 443 ssl;
server_name geth.aninix.net;
include sec.conf;
# include default.csp.conf;
# include local.conf;
include letsencrypt.conf;
location /
{
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://geth.msn0.aninix.net:8123;
proxy_redirect http:// https://;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_read_timeout 86400;
}
}

View File

@ -0,0 +1,17 @@
server {
listen 443 ssl http2;
server_name irc.aninix.net;
include sec.conf;
include default.csp.conf;
include letsencrypt.conf;
location /
{
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:7778;
}
}

View File

@ -1,46 +1,37 @@
server {
listen 444 ssl;
server_name lykos.aninix.net;
listen 443 ssl;
server_name lykos.aninix.net;
include sec.conf;
include default.csp.conf;
include letsencrypt.conf;
root /usr/share/webapps/;
root /usr/share/webapps/;
location ~ ^/$ {
return 302 https://lykos.aninix.net:444/lykos-wiki/Main_Page;
}
client_max_body_size 5m;
client_body_timeout 60;
location ~ ^/lykos-wiki/ {
index /mediawiki/index.php;
try_files $uri $uri/ @mediawiki;
include ../conf.d/fastcgi7.config;
location / {
try_files $uri $uri/ @rewrite;
rewrite ^/lykos-wiki/(.*)$ /mediawiki/index.php?title=$1&$args;
rewrite ^$ /lykos-wiki/Main_Page;
rewrite ^/$ /lykos-wiki/Main_Page;
rewrite ^lykos-wiki$ /lykos-wiki/Main_Page;
rewrite ^lykos-wiki/$ /lykos-wiki/Main_Page;
}
location @mediawiki {
rewrite ^/lykos-wiki/(.*)$ /mediawiki/index.php?title=$1;
}
location ~ \.php?$ {
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index /mediawiki/index.php;
try_files $uri @mediawiki;
location ^~ /maintenance/ {
return 403;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
try_files $uri /lykos-wiki/index.php;
try_files $uri /mediawiki/index.php;
expires max;
log_not_found off;
}
# Restrictions based on the .htaccess files
location ~ ^/lykos-wiki/(cache|includes|maintenance|languages|serialized|tests|images/deleted)/ {
deny all;
}
location ~ ^/lykos-wiki/(bin|docs|extensions|includes|maintenance|mw-config|resources|serialized|tests)/ {
internal;
}
location ^~ /images/ {
try_files $uri /index.php;
}
location ~ /\. {
access_log off;
log_not_found off;
location ^~ /cache/ {
deny all;
}
}

View File

@ -0,0 +1,19 @@
server {
listen 443 ssl http2;
server_name maat.aninix.net;
include sec.conf;
include default.csp.conf;
include letsencrypt.conf;
location /
{
try_files $uri /index.html
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://maat.msn0.aninix.net:80;
proxy_force_ranges on;
}
}

View File

@ -1,12 +1,44 @@
server {
listen 444 ssl http2;
listen 443 ssl http2;
server_name password.aninix.net;
include sec.conf;
include default.csp.conf;
include letsencrypt.conf;
location /
{
root /usr/share/webapps/self-service-password/;
root /usr/share/webapps/self-service-password/htdocs/;
# https://ltb-project.org/documentation/self-service-password/1.3/config_nginx
index index.php index.html index.htm;
# Disable sendfile as per https://docs.vagrantup.com/v2/synced-folders/virtualbox.html
sendfile off;
gzip on;
gzip_comp_level 6;
gzip_min_length 1000;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;
gzip_vary on;
gzip_proxied any;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
# Add stdout logging
#error_log /dev/stdout warn;
#access_log /dev/stdout info;
include ../conf.d/fastcgi.config;
# deny access to . files, for security
#
location ~ /\.\. {
log_not_found off;
deny all;
}
location ~ /scripts {
log_not_found off;
deny all;
}
}

View File

@ -0,0 +1,21 @@
server {
listen 443 ssl http2;
server_name sharingan.aninix.net;
include sec.conf;
# include default.csp.conf;
include local.conf;
include letsencrypt.conf;
location /
{
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Graylog-Server-URL https://$server_name/;
proxy_pass http://sharingan.msn0.aninix.net:9000;
}
}

View File

@ -0,0 +1,16 @@
server {
listen 443 ssl;
server_name singularity.aninix.net;
include sec.conf;
include default.csp.conf;
include letsencrypt.conf;
include ../conf.d/fastcgi.config;
root /usr/share/webapps/tt-rss/;
index index.php;
try_files $uri $uri/ =404;
}

View File

@ -0,0 +1,15 @@
server {
listen 443 ssl http2;
server_name wolfpack.aninix.net;
include sec.conf;
include default.csp.conf;
include letsencrypt.conf;
location /
{
root /srv/wolfpack;
autoindex on;
autoindex_format html;
}
}

View File

@ -0,0 +1,20 @@
server {
#listen 443 ssl http2;
listen 443 ssl http2;
server_name yggdrasil.aninix.net;
include sec.conf;
include letsencrypt.conf;
# include default.csp.conf;
location /
{
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Graylog-Server-URL https://$server_name/;
proxy_pass http://127.0.0.1:8096;
proxy_force_ranges on;
}
}

View File

@ -24,10 +24,13 @@ http {
# Redirect all HTTP to HTTPS
server {
listen 81 default_server;
listen [::]:81 default_server;
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 301 https://$host$request_uri;
location / {
return 301 https://$host$request_uri;
}
}
include ../conf.d/*.conf;

View File

@ -6,14 +6,32 @@
name:
- emby-server
- name: Yggdrasil directory
- name: Yggdrasil directories
become: yes
file:
path: /srv/yggdrasil
path: "{{ item }}"
state: directory
owner: http
group: http
mode: 0750
mode: 2750
loop:
- /srv/yggdrasil
- /srv/yggdrasil/Digital_Library
- /srv/yggdrasil/Music
- /srv/yggdrasil/Videos
- /srv/yggdrasil/Videos/Shows
- /srv/yggdrasil/Videos/Movies
- /srv/yggdrasil/Software
- name: LiveTV channels
command: /bin/bash -c "curl -s https://raw.githubusercontent.com/iptv-org/iptv/master/streams/us.m3u | egrep -A 1 {{ iptv_location }} 2>&1 | egrep -v '^--$'"
register: livetv_channels
- name: Write to file
become: yes
copy:
content: "{{ livetv_channels.stdout }}"
dest: /var/lib/emby/local-channels.m3u
owner: emby
group: http
mode: 0640