commit f07de9f5b259c501fc11529b46ebb16175de093a Author: f Date: Sun Mar 13 22:44:22 2022 -0300 mmmonit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b150b46 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +/docs/ +/lib/ +/bin/ +/.shards/ +*.dwarf +/storage/xml/*.xml diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..d840e5e --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,168 @@ +Copyright (c) 2020 Sutty + +The following license is modified from the MIT license and downloaded +from 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. diff --git a/README.md b/README.md new file mode 100644 index 0000000..2c640c1 --- /dev/null +++ b/README.md @@ -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 () +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) diff --git a/shard.lock b/shard.lock new file mode 100644 index 0000000..841cecd --- /dev/null +++ b/shard.lock @@ -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 + diff --git a/shard.yml b/shard.yml new file mode 100644 index 0000000..58c2d31 --- /dev/null +++ b/shard.yml @@ -0,0 +1,20 @@ +name: mmmonit +version: 0.1.0 + +authors: +- f + +targets: + mmmonit: + main: src/mmmonit.cr + +crystal: 1.3.2 + +license: MIT + +dependencies: + kemal: + github: kemalcr/kemal + crometheus: + github: darwinnn/crometheus + branch: master diff --git a/src/mmmonit.cr b/src/mmmonit.cr new file mode 100644 index 0000000..9a1c5dc --- /dev/null +++ b/src/mmmonit.cr @@ -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 diff --git a/storage/xml/.keep b/storage/xml/.keep new file mode 100644 index 0000000..e69de29