rap-inbox
This commit is contained in:
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
/docs/
|
||||
/lib/
|
||||
/bin/
|
||||
/.shards/
|
||||
*.dwarf
|
||||
168
LICENSE
Normal file
168
LICENSE
Normal file
@ -0,0 +1,168 @@
|
||||
Copyright (c) 2020 Partido Interdimensional Pirata
|
||||
|
||||
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.
|
||||
3
Makefile
Normal file
3
Makefile
Normal file
@ -0,0 +1,3 @@
|
||||
rap-inbox: shard.lock src/rap-inbox.cr
|
||||
crystal build --release $^
|
||||
strip --strip-all $@
|
||||
25
README.md
Normal file
25
README.md
Normal file
@ -0,0 +1,25 @@
|
||||
# rap-inbox
|
||||
|
||||
Recibe archivos de hosts de tinc para la red autónoma pirata.
|
||||
|
||||
## Instalación
|
||||
|
||||
Instalar Crystal 0.35 o posterior.
|
||||
|
||||
```bash
|
||||
make rap-inbox
|
||||
```
|
||||
|
||||
## Uso
|
||||
|
||||
RAP Inbox está pensadx para alojarse en un nodo público de la RAP, de
|
||||
forma que los nodos privados le puedan enviar sus llaves públicas.
|
||||
|
||||
Recomendamos alojar detrás de un proxy reverso como Nginx con un límite
|
||||
de 1KB para archivos subidos. Hay una configuración de muestra en
|
||||
`contrib/nginx.conf`.
|
||||
|
||||
```
|
||||
./rap-inbox &
|
||||
curl -F host=@hosts/nufla http://localhost:3000/nufla
|
||||
```
|
||||
14
contrib/nginx.conf
Normal file
14
contrib/nginx.conf
Normal file
@ -0,0 +1,14 @@
|
||||
# Limitar la cantidad de envíos a 1 por minuto
|
||||
limit_req_zone $binary_remote_addr zone=rap:10m rate=1r/m;
|
||||
|
||||
server {
|
||||
server_name rap.partidopirata.com.ar;
|
||||
# Sólo permitir envíos de hasta 1K
|
||||
client_max_body_size 1K;
|
||||
|
||||
location / {
|
||||
limit_req zone=rap;
|
||||
# Conectarse con rap-inbox
|
||||
proxy_pass http://localhost:3000;
|
||||
}
|
||||
}
|
||||
0
public/hosts/.keep
Normal file
0
public/hosts/.keep
Normal file
18
shard.lock
Normal file
18
shard.lock
Normal file
@ -0,0 +1,18 @@
|
||||
version: 1.0
|
||||
shards:
|
||||
exception_page:
|
||||
github: crystal-loot/exception_page
|
||||
version: 0.1.4
|
||||
|
||||
kemal:
|
||||
github: kemalcr/kemal
|
||||
commit: a8c0f09b858162bd13c96663febef5527b322a32
|
||||
|
||||
kilt:
|
||||
github: jeromegn/kilt
|
||||
version: 0.4.0
|
||||
|
||||
radix:
|
||||
github: luislavena/radix
|
||||
version: 0.3.9
|
||||
|
||||
18
shard.yml
Normal file
18
shard.yml
Normal file
@ -0,0 +1,18 @@
|
||||
name: rap-inbox
|
||||
version: 0.1.0
|
||||
|
||||
authors:
|
||||
- rené montes <renemontes@partidopirata.com.ar>
|
||||
|
||||
targets:
|
||||
rap-inbox:
|
||||
main: src/rap-inbox.cr
|
||||
|
||||
crystal: 0.35.0
|
||||
|
||||
license: MIT
|
||||
|
||||
dependencies:
|
||||
kemal:
|
||||
github: kemalcr/kemal
|
||||
branch: master
|
||||
31
src/rap-inbox.cr
Normal file
31
src/rap-inbox.cr
Normal file
@ -0,0 +1,31 @@
|
||||
require "kemal"
|
||||
|
||||
# No queremos filtrar las llaves!
|
||||
serve_static false
|
||||
|
||||
# Acepta llaves de tinc por post a menos que ya existan
|
||||
post "/:host" do |env|
|
||||
HTTP::FormData.parse(env.request) do |u|
|
||||
host = env.params.url["host"]
|
||||
|
||||
# Sólo letras, números y guiones bajos
|
||||
unless host =~ /\A[a-z0-9_]+\z/
|
||||
halt env, status_code: 403, response: "Forbidden"
|
||||
end
|
||||
|
||||
path = File.join [Kemal.config.public_folder, "hosts", host]
|
||||
|
||||
# No aceptar llaves que ya existan
|
||||
halt env, status_code: 403, response: "Forbidden" if File.exists? path
|
||||
|
||||
# Copiar el archivo al destino
|
||||
File.open path, "w" do |f|
|
||||
IO.copy u.body, f
|
||||
end
|
||||
|
||||
# Responder con 201
|
||||
halt env, status_code: 201, response: "Created"
|
||||
end
|
||||
end
|
||||
|
||||
Kemal.run
|
||||
Reference in New Issue
Block a user