mmmonit
This commit is contained in:
commit
f07de9f5b2
7 changed files with 292 additions and 0 deletions
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
/docs/
|
||||||
|
/lib/
|
||||||
|
/bin/
|
||||||
|
/.shards/
|
||||||
|
*.dwarf
|
||||||
|
/storage/xml/*.xml
|
168
LICENSE.txt
Normal file
168
LICENSE.txt
Normal file
|
@ -0,0 +1,168 @@
|
||||||
|
Copyright (c) 2020 Sutty
|
||||||
|
|
||||||
|
The following license is modified from the MIT license and downloaded
|
||||||
|
from <https://github.com/Laurelai/anti-fascist-mit-license> on
|
||||||
|
2019-07-11.
|
||||||
|
|
||||||
|
Anti-Fascist MIT License:
|
||||||
|
|
||||||
|
The following conditions must be met by any person obtaining a copy of
|
||||||
|
this software:
|
||||||
|
|
||||||
|
- You MAY NOT be a fascist.
|
||||||
|
- You MUST not financially support fascists.
|
||||||
|
- You MUST not intentionally provide or knowingly provide through
|
||||||
|
inaction a platform for fascists to spread propaganda or organize.
|
||||||
|
- You MUST not publicly voice support for fascists.
|
||||||
|
- You MAY NOT be a member of any fascist organization, even if you are a
|
||||||
|
member to infiltrate for anti-fascist purposes.
|
||||||
|
|
||||||
|
"Fascist" can be understood as any group or individual who promotes the
|
||||||
|
political ideology of fascism.
|
||||||
|
|
||||||
|
"Fascism" can be broken down into 11 ideological features as well as 8
|
||||||
|
tactics that can form a fascist system in varying combinations, for the
|
||||||
|
sake of simplicity and brevity the individual or organization in
|
||||||
|
question must match to at least 5 features or tactics or a combination
|
||||||
|
of the two determined by the individual licencer.
|
||||||
|
|
||||||
|
Said licencer may provide a list if an individual or group matches to at
|
||||||
|
least 5 features upon request from the individual or group in question.
|
||||||
|
|
||||||
|
The ideological features are listed below.
|
||||||
|
|
||||||
|
1. Hyper-nationalism.
|
||||||
|
|
||||||
|
As defined as "The belief in the superiority of one's nation and of the
|
||||||
|
paramount importance of advancing it."
|
||||||
|
|
||||||
|
2. Militarism.
|
||||||
|
|
||||||
|
As defined as "Advocating for an increase in military forces beyond what
|
||||||
|
the real defense of a nation needs, more influence of the military upon
|
||||||
|
the policies of the civilian government, and a preference for force as a
|
||||||
|
solution over diplomacy for problems."
|
||||||
|
|
||||||
|
3. Glorification of violence and readiness to use it in politics.
|
||||||
|
|
||||||
|
As defined as "The belief that violence can be used to cleanse a
|
||||||
|
tarnished nation, also by using violence to harm, intimidate or kill
|
||||||
|
political oppoenents."
|
||||||
|
|
||||||
|
4. Fetishization of youth.
|
||||||
|
|
||||||
|
As defined as "Extolling the virtues of youth and making a special
|
||||||
|
appeal to young people to join a cause or organization"
|
||||||
|
|
||||||
|
5. Fetishization of masculinity.
|
||||||
|
|
||||||
|
As defined as "Extolling the virtues of male authority or patriarchy and
|
||||||
|
making a special appeal to men to be leaders of households and groups"
|
||||||
|
|
||||||
|
6. Leader cult.
|
||||||
|
|
||||||
|
As defined as "Creating an idealized, heroic, and worshipful image of a
|
||||||
|
leader, often through unquestioning flattery and praise."
|
||||||
|
|
||||||
|
7. Lost-golden-age syndrome.
|
||||||
|
|
||||||
|
As defined as "Creating or promoting the idea that a nation had a lost
|
||||||
|
or stolen golden age in the past that must be returned to"
|
||||||
|
|
||||||
|
8. Self-definition by opposition.
|
||||||
|
|
||||||
|
As defined as "Creating or promoting the idea that the group or
|
||||||
|
individual is the only person or way who can fight real or imagined
|
||||||
|
evils within a society."
|
||||||
|
|
||||||
|
9. Mass mobilization and mass party.
|
||||||
|
|
||||||
|
As defined as "Creating or promoting the creation of a populist group or
|
||||||
|
party for the advancment of fascist tactics or features."
|
||||||
|
|
||||||
|
10. Hierarchical party structure and tendency to purge the disloyal.
|
||||||
|
|
||||||
|
As defined as "Removal of membership from a group for lacking absolute
|
||||||
|
loyalty or lacking further usefulness to the group. Also having a
|
||||||
|
hierarchical structure within the group itself."
|
||||||
|
|
||||||
|
11. Theatricality.
|
||||||
|
|
||||||
|
As defined as "Using spectacle to gain and keep the attention of those
|
||||||
|
inside and outside of the group using speeches full of absolutes and or
|
||||||
|
superlatives. Elaborate collective rituals (rallies) meant to reenforce
|
||||||
|
loyalty within the group."
|
||||||
|
|
||||||
|
Fascist tactics include
|
||||||
|
|
||||||
|
1) Persecution of national minorities.
|
||||||
|
2) Persecution of racial minorities.
|
||||||
|
3) Persecution of religious minorities (Anti-Semitism, Islamophobia and others).
|
||||||
|
4) Promotion of a type of national purity.
|
||||||
|
5) Promotion of a state run by ideologically oriented corporate bodies.
|
||||||
|
6) Persecution of gender or sexual minorities.
|
||||||
|
7) Persecution of the disabled.
|
||||||
|
8) Formation of extra-legal forces (brownshirts) to defend fascist values.
|
||||||
|
|
||||||
|
Special criteria: Meeting only one point of the special criteria is
|
||||||
|
enough to consider someone or a group to be fascist for the purposes of
|
||||||
|
this licence.
|
||||||
|
|
||||||
|
1. Promotion of any theories that state members of the jewish ethnicity
|
||||||
|
or faith control or largely control the world, finance, or other
|
||||||
|
global major power system.
|
||||||
|
|
||||||
|
2. Denial of the holocaust or any other historically proven genocide.
|
||||||
|
|
||||||
|
3. Promotion of ethnostates.
|
||||||
|
|
||||||
|
4. Advocating for eugenics. Either positive or negative eugenics.
|
||||||
|
Promotion for the rights of abortion are not considered eugenics.
|
||||||
|
|
||||||
|
5. Advocating for the removal of rights or legal protections from a
|
||||||
|
class or group of people.
|
||||||
|
|
||||||
|
Former fascists: People or organizations who used to promote the
|
||||||
|
political ideology of fascism but no longer do so must meet the
|
||||||
|
following criterea to be able to use this software.
|
||||||
|
|
||||||
|
1. Publicly disavow past fascist deeds and ideologies.
|
||||||
|
|
||||||
|
2. Expose any and all known fascists former allies to the public.
|
||||||
|
|
||||||
|
A suggested route would be through the one peoples project
|
||||||
|
(onepeoplesproject.com). If they can confirm you have done so that
|
||||||
|
will count as meeting condition two.
|
||||||
|
|
||||||
|
3. Publicly destroy any and all fascist paraphenelia you have in your
|
||||||
|
posession including removal of tattoos and body markings
|
||||||
|
affiliated with fascist groups or gangs.
|
||||||
|
|
||||||
|
ANTI-FASCIST-MIT LICENSE:
|
||||||
|
|
||||||
|
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 above licence agreement conditions are met in full.
|
||||||
|
|
||||||
|
The Anti-Fascist MIT License may only be used under the terms of the
|
||||||
|
Anti-Fascist MIT License.
|
||||||
|
|
||||||
|
Any modified versions of this software must also include the
|
||||||
|
Anti-Fascist MIT Licence.
|
||||||
|
|
||||||
|
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.
|
54
README.md
Normal file
54
README.md
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
## Plans
|
||||||
|
|
||||||
|
### Collect information about Monit instances in containers
|
||||||
|
|
||||||
|
At Sutty, every container run its own Monit instance, performing
|
||||||
|
self-monitoring, scheduling, etc.
|
||||||
|
|
||||||
|
### Serve as a collectively administered panel
|
||||||
|
|
||||||
|
People should be able to see infrastructure status and be welcome to
|
||||||
|
help monitor and restarting services if they're down.
|
||||||
|
|
||||||
|
Services aren't self describing, so adding an explanation to them
|
||||||
|
helps learning what's happening.
|
||||||
|
|
||||||
|
Mmmonit provides the information and facilitates action. A Hotwired
|
||||||
|
Jekyll site provides the rest. (Though this means Mmmonit should render
|
||||||
|
partial information as HTML frames, consumable by Jekyll.)
|
||||||
|
|
||||||
|
Jekyll provides the context and explanation for services and how they
|
||||||
|
interact ("literate sysadmin").
|
||||||
|
|
||||||
|
### Allow Prometheus to scrape this information
|
||||||
|
|
||||||
|
So we can have other kinds of querying, alerts, etc.
|
||||||
|
|
||||||
|
### Act as a proxy for sending actions to Monits
|
||||||
|
|
||||||
|
Hability to restart a service, but only if it's down already.
|
||||||
|
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
TODO: Write installation instructions here
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
TODO: Write usage instructions here
|
||||||
|
|
||||||
|
## Development
|
||||||
|
|
||||||
|
TODO: Write development instructions here
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
1. Fork it (<https://0xacab.org/sutty/mmmonit/fork>)
|
||||||
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
||||||
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
||||||
|
4. Push to the branch (`git push origin my-new-feature`)
|
||||||
|
5. Create a new Pull Request
|
||||||
|
|
||||||
|
## Contributors
|
||||||
|
|
||||||
|
- [f](https://0xacab.org/fauno)
|
22
shard.lock
Normal file
22
shard.lock
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
version: 2.0
|
||||||
|
shards:
|
||||||
|
backtracer:
|
||||||
|
git: https://github.com/sija/backtracer.cr.git
|
||||||
|
version: 1.2.1
|
||||||
|
|
||||||
|
crometheus:
|
||||||
|
git: https://github.com/darwinnn/crometheus.git
|
||||||
|
version: 0.3.0+git.commit.8a748b734db4b80d5fd73d3c404cb2510eba3597
|
||||||
|
|
||||||
|
exception_page:
|
||||||
|
git: https://github.com/crystal-loot/exception_page.git
|
||||||
|
version: 0.2.2
|
||||||
|
|
||||||
|
kemal:
|
||||||
|
git: https://github.com/kemalcr/kemal.git
|
||||||
|
version: 1.1.2
|
||||||
|
|
||||||
|
radix:
|
||||||
|
git: https://github.com/luislavena/radix.git
|
||||||
|
version: 0.4.1
|
||||||
|
|
20
shard.yml
Normal file
20
shard.yml
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
name: mmmonit
|
||||||
|
version: 0.1.0
|
||||||
|
|
||||||
|
authors:
|
||||||
|
- f <f@sutty.coop.ar>
|
||||||
|
|
||||||
|
targets:
|
||||||
|
mmmonit:
|
||||||
|
main: src/mmmonit.cr
|
||||||
|
|
||||||
|
crystal: 1.3.2
|
||||||
|
|
||||||
|
license: MIT
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
kemal:
|
||||||
|
github: kemalcr/kemal
|
||||||
|
crometheus:
|
||||||
|
github: darwinnn/crometheus
|
||||||
|
branch: master
|
22
src/mmmonit.cr
Normal file
22
src/mmmonit.cr
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
require "kemal"
|
||||||
|
require "uuid"
|
||||||
|
require "crometheus"
|
||||||
|
|
||||||
|
# Only store in disk what's happening so we can figure out how to get
|
||||||
|
# actual data later.
|
||||||
|
#
|
||||||
|
# @todo Add Basic Authentication
|
||||||
|
post "/collector" do |env|
|
||||||
|
uuid = UUID.random
|
||||||
|
|
||||||
|
File.open(File.join(".", "storage", "xml", "#{uuid}.xml"), "w") do |xml|
|
||||||
|
IO.copy(env.request.body || IO::Memory.new, xml)
|
||||||
|
end
|
||||||
|
|
||||||
|
env.response.status_code = 200
|
||||||
|
end
|
||||||
|
|
||||||
|
add_handler Crometheus::Middleware::HttpCollector.new
|
||||||
|
add_handler Crometheus.default_registry.get_handler
|
||||||
|
|
||||||
|
Kemal.run
|
0
storage/xml/.keep
Normal file
0
storage/xml/.keep
Normal file
Loading…
Reference in a new issue