Removed INSTALL.md, docker/, mastblocksdump/

This commit is contained in:
pezcurrel 2022-12-02 19:22:06 +01:00
parent c4b1a53439
commit 6dea89b334
37 changed files with 0 additions and 6188 deletions

View file

@ -1,27 +0,0 @@
* Le indicazioni che seguono riguardano un'installazione "da zero". Se vuoi provare mastostart senza tanto sbattimento [vedi qui](https://git.lattuga.net/pongrebio/MastodonStartpage/src/master/docker/).
* Requisiti: apache con mod_rewrite abilitato; php (cli e "per apache") con estensioni mysqli, mbstring, pcntl, intl, json, session; mariadb (dovrebbe funzionare anche con mysql, ma non l'ho testato).
* Clona il repository con `git clone https://git.lattuga.net/pongrebio/MastodonStartpage.git` (poi potrai mantenerlo aggiornato con `git pull` dalla directory «MastodonStartpage»).
* Apache deve essere configurato (con "AllowOverride All") per servire il contenuto della directory «web/».
* Php dovrebbe essere configurato con un limite di memoria usabile abbastanza alto: 1 gb («memory_limit=1G») dovrebbe andar bene, ma di più (2 gb?) sarebbe anche meglio, per andare sul sicuro con un occhio al futuro (uro-uro). Tanta memoria serve per «mustard/crawler/peerscrawl.php», il crawler che recupera ricorsivamente un bel po' di istanze, al momento circa 21.000 arrivando a usare un picco di circa 750 mb (in circa 6 ore, sulla mia sgrausissima adsl). (Delle istanze recuperate da «peerscrawl.php» solo circa 2.800 finiscono poi effettivamente nel database: per tantissime l'endpoint \[dominio\]/api/v1/instance poi non risponde, o perché l'istanza è morta, oppure perché è giù, o perché non si tratta di istanza mastodon, o perché l'endpoint è disabilitato).
* Se vuoi provare la funzione di invio delle mail di invito alle admin delle istanze, php deve essere configurato in modo che sia in grado di inviare mail che avranno come «From:» l'indirizzo email "mittente" definibile impostando la variabile «ref_email» in «mustard/sec/mustard.ini». In questo stesso file di configurazione puoi cambiare il valore della variabile «mail_test_to» a un tuo indirizzo email valido, così da ricevere tu gli inviti; NON impostarla a stringa vuota o a false, in modo da NON inviare inviti reali alle admin delle istanze ora che non c'è ancora niente online.
* Per quanto riguarda Mustard...
* se vuoi partire con un database senza istanze e senza account admin predefiniti importa in mariadb o mysql il dump sql che puoi estrarre da «mustard/zzz-materiali/mastostart_non_popolato.sql.gz»; se invece vuoi partire con un database prepopolato di istanze e con due account admin predefiniti, importa in mariadb o mysql il dump sql che puoi estrarre da «mustard/zzz-materiali/mastostart_popolato.sql.gz»;
* in mariadb o mysql crea un utente con tutti i diritti sul database «mastostart»;
* copia il file di configurazione di esempio «mustard/sec/mustard.ini.sample» in «mustard/sec/mustard.ini»;
* edita «mustard/sec/mustard.ini» seguendo le istruzioni che trovi nei commenti che contiene;
* se il dump che hai importato è quello non popolato, crea almeno un “superadmin” per poter entrare in Mustard lanciando «php addsuperadmin.php» dalla directory «mustard/tools/»; altrimenti, se hai importato invece il dump prepopolato, puoi già entrarci "da admin di Mustard" con email «pongrebio@insicuri.net» e password «password», oppure "da admin di un'istanza invitata" (per finta, per ora) con email «mastodon@bida.im» e password «password».
* Per quanto riguarda il crawler che crea/aggiorna i dati relativi alle istanze nel database, si tratta di farne girare i due componenti uno dopo l'altro, la prima volta magari da shell, poi con un cron job (quotidiano? settimanale?). Per farlo è sufficiente lanciare lo script «crawl.sh» che si trova nella directory «mustard/crawler».
* Se il contenuto della directory «web/» sta nella DocumentRoot di apache o di un virtualhost definito in apache bona lè; però è anche possibile installare mastostart in una sottodirectory della DocumentRoot (per esempio «\[DocumentRoot\]/mastostart»), ma in questo caso, perché la parte della guida (la Mastodon Startpage) funzioni, devi impostare al percorso della sottodirectory la variabile «instpath» in «mastostart.ini» (per esempio «instpath="/mastostart"») e la direttiva «RewriteBase» in «.htaccess» (per esempio «RewriteBase "/mastostart").

View file

@ -1,19 +0,0 @@
FROM alpine:3
RUN apk add --no-cache apache2 php7 php7-apache2 php7-mysqli php7-mbstring php7-pcntl php7-intl php7-json php7-session mariadb mariadb-client git rsync msmtp openssh sudo
COPY files/sudo.conf /etc/
COPY files/sudoers /etc/
COPY files/my.cnf /etc/
COPY files/httpd.conf /etc/apache2/
COPY files/vhost.conf /etc/apache2/conf.d/
COPY files/mastodon.help.conf /etc/apache2/conf.d/
COPY files/sshd_config /etc/ssh/
COPY files/php.ini /etc/php7/
COPY files/msmtprc /etc/php7/
COPY files/binit.sh /usr/local/bin/
COPY files/update.sh /root/
COPY files/mastostart_non_popolato.sql.gz /root/
COPY files/create_user.sql /root/
COPY files/authorized_keys /root/
COPY files/install.sh /root/
RUN /root/install.sh
CMD /usr/local/bin/binit.sh

View file

@ -1,23 +0,0 @@
Questa cartella contiene il Dockerfile e quel che serve per generare un'immagine docker di mastostart pensata per l'hosting su bida. L'immagine pesa circa 450 mb, è basata su alpine linux e contiene apache, php, mariadb, openssh già configurati. Apache è configurato con un virtual host per mastodon.help.
### Come generare l'immagine docker
`git clone https://git.lattuga.net/pongrebio/MastodonStartpage.git` per clonare questo repo in locale.
Dalla directory `docker/per_hosting` del repo clonato: `docker build -t mastostart[:versione] .` ("`:versione`" è facoltativo, il "`.`" alla fine del comando no ;-) ).
`docker run -d mastostart[:versione]` per creare e lanciare un container.
Per determinare il nome e l'id del container che sta girando: `docker ps`.
Per aprire una shell sul container attivo: `docker exec -it <nome o id container> /bin/sh -l`; per uscirne, il buon vecchio `exit`.
Per provare il crawler che aggiorna il db delle istanze, dalla shell già aperta sul container: `/var/www/localhost/htdocs/mustard/crawler/crawl.sh`; nota: sulla mia sgrausissima adsl ci mette taaaanto tempo a finire, circa 10 ore: pigiare il buon vecchio `ctrl+c` se si vuole fermare il crawler prima che abbia finito ;-)
Per aggiornare all'ultimo commit pubblicato su lattuga il mastostart del container attivo, dalla shell già aperta: `/root/update.sh`.
Per aggiornare i pacchetti installati in alpine linux: `apk update && apk upgrade`.
Per "spegnere" il container attivo: `docker stop <nome o id container>`.
Per riavviarlo: `docker start <nome o id container>`.

View file

@ -1 +0,0 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDiT6v3ITObkALO8cnKNNOBCNtT8Grcby9MSUp3KHVRlwRYM5x+fVxHP+hvyJDNSQerdRl3NOPWi2dHTbH/MCmw0dyroRwYSP9Qx1SaUVRByh5/xbA5ylXpsBdtU98vaRZin5RQV84UCv8w0pNGgNtSL67Kmuf9b76ENOTQQgHd5VyOuSs9vA6MiTy0z/LgX7wZ46iYvuFhmlK6C9NFcZwzCN4c+intTMu1cC4qfylEOyjrQhDw4g0N2vxMbRapr2kk5mSTWtjddTgeiIMuBl+ZFvX1QNe33eEDnrk+n7Gmk01iqmkdwgtU8/gtjOJHpReJ8iYiI2nMk3Ten3m9joOk9dlYpBm1toV/GYiPCzLMj9eXI4mlZn6DhRVotYmUxOoGkDF68d/Pbx8vCf8GyRa7TOflUnZYvMobzsF2ApJuU9MPnr5TMxdFNBJ18DMT9ODY314IBP/bbAY2uUJYHKD1S1Nj9OKjbkULPK0pawNtZmmKKk5ocufxUsRTqaddibk= pongi@ba04b304f62f

View file

@ -1,26 +0,0 @@
#!/bin/sh
predown() {
echo ""
echo "Stoppo apache..."
httpd -k stop
sleep 1
echo "Stoppo mysqld (pid: $mysqld_pid)..."
kill $mysqld_pid
echo "Stoppo sshd (pid: $sshd_pid)..."
kill $sshd_pid
exit 0
}
trap 'predown' HUP INT QUIT TERM
echo "Lancio sshd..."
/usr/sbin/sshd -D &
sshd_pid=$!
echo "Lancio mysqld..."
/usr/bin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mariadb/plugin --user=mysql --log-error=/var/lib/mysql/mysql.err --pid-file=mysql.pid &> /dev/null &
mysqld_pid=$!
echo "Lancio apache..."
httpd -k start
wait $!

View file

@ -1,4 +0,0 @@
DELETE FROM mysql.user WHERE User='' OR USER='mysql';
CREATE USER 'MastoStartAdmin'@'%' IDENTIFIED BY 'MastoStartAdmin';
GRANT SELECT, INSERT, UPDATE, DELETE, LOCK TABLES ON `mastostart`.* TO 'MastoStartAdmin'@'%';
FLUSH PRIVILEGES;

View file

@ -1,488 +0,0 @@
#
# This is the main Apache HTTP server configuration file. It contains the
# configuration directives that give the server its instructions.
# See <URL:http://httpd.apache.org/docs/2.4/> for detailed information.
# In particular, see
# <URL:http://httpd.apache.org/docs/2.4/mod/directives.html>
# for a discussion of each configuration directive.
#
# Do NOT simply read the instructions in here without understanding
# what they do. They're here only as hints or reminders. If you are unsure
# consult the online docs. You have been warned.
#
# Configuration and logfile names: If the filenames you specify for many
# of the server's control files begin with "/" (or "drive:/" for Win32), the
# server will use that explicit path. If the filenames do *not* begin
# with "/", the value of ServerRoot is prepended -- so "logs/access_log"
# with ServerRoot set to "/usr/local/apache2" will be interpreted by the
# server as "/usr/local/apache2/logs/access_log", whereas "/logs/access_log"
# will be interpreted as '/logs/access_log'.
#
# ServerTokens
# This directive configures what you return as the Server HTTP response
# Header. The default is 'Full' which sends information about the OS-Type
# and compiled in modules.
# Set to one of: Full | OS | Minor | Minimal | Major | Prod
# where Full conveys the most information, and Prod the least.
#
ServerTokens Prod
#
# ServerRoot: The top of the directory tree under which the server's
# configuration, error, and log files are kept.
#
# Do not add a slash at the end of the directory path. If you point
# ServerRoot at a non-local disk, be sure to specify a local disk on the
# Mutex directive, if file-based mutexes are used. If you wish to share the
# same ServerRoot for multiple httpd daemons, you will need to change at
# least PidFile.
#
ServerRoot /var/www
#
# Mutex: Allows you to set the mutex mechanism and mutex file directory
# for individual mutexes, or change the global defaults
#
# Uncomment and change the directory if mutexes are file-based and the default
# mutex file directory is not on a local disk or is not appropriate for some
# other reason.
#
# Mutex default:/run/apache2
#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 172.17.0.2:80
#
# Dynamic Shared Object (DSO) Support
#
# To be able to use the functionality of a module which was built as a DSO you
# have to place corresponding `LoadModule' lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Statically compiled modules (those listed by `httpd -l') do not need
# to be loaded here.
#
# Example:
# LoadModule foo_module modules/mod_foo.so
#
#LoadModule mpm_event_module modules/mod_mpm_event.so
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
#LoadModule mpm_worker_module modules/mod_mpm_worker.so
LoadModule authn_file_module modules/mod_authn_file.so
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
#LoadModule authn_anon_module modules/mod_authn_anon.so
#LoadModule authn_dbd_module modules/mod_authn_dbd.so
#LoadModule authn_socache_module modules/mod_authn_socache.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_user_module modules/mod_authz_user.so
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
#LoadModule authz_owner_module modules/mod_authz_owner.so
#LoadModule authz_dbd_module modules/mod_authz_dbd.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule access_compat_module modules/mod_access_compat.so
LoadModule auth_basic_module modules/mod_auth_basic.so
#LoadModule auth_form_module modules/mod_auth_form.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
#LoadModule allowmethods_module modules/mod_allowmethods.so
#LoadModule file_cache_module modules/mod_file_cache.so
#LoadModule cache_module modules/mod_cache.so
#LoadModule cache_disk_module modules/mod_cache_disk.so
#LoadModule cache_socache_module modules/mod_cache_socache.so
#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
#LoadModule socache_dbm_module modules/mod_socache_dbm.so
#LoadModule socache_memcache_module modules/mod_socache_memcache.so
#LoadModule socache_redis_module modules/mod_socache_redis.so
#LoadModule watchdog_module modules/mod_watchdog.so
#LoadModule macro_module modules/mod_macro.so
#LoadModule dbd_module modules/mod_dbd.so
#LoadModule dumpio_module modules/mod_dumpio.so
#LoadModule echo_module modules/mod_echo.so
#LoadModule buffer_module modules/mod_buffer.so
#LoadModule data_module modules/mod_data.so
#LoadModule ratelimit_module modules/mod_ratelimit.so
LoadModule reqtimeout_module modules/mod_reqtimeout.so
#LoadModule ext_filter_module modules/mod_ext_filter.so
#LoadModule request_module modules/mod_request.so
#LoadModule include_module modules/mod_include.so
LoadModule filter_module modules/mod_filter.so
#LoadModule reflector_module modules/mod_reflector.so
#LoadModule substitute_module modules/mod_substitute.so
#LoadModule sed_module modules/mod_sed.so
#LoadModule charset_lite_module modules/mod_charset_lite.so
#LoadModule deflate_module modules/mod_deflate.so
LoadModule mime_module modules/mod_mime.so
LoadModule log_config_module modules/mod_log_config.so
#LoadModule log_debug_module modules/mod_log_debug.so
#LoadModule log_forensic_module modules/mod_log_forensic.so
#LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
#LoadModule mime_magic_module modules/mod_mime_magic.so
#LoadModule expires_module modules/mod_expires.so
LoadModule headers_module modules/mod_headers.so
#LoadModule usertrack_module modules/mod_usertrack.so
#LoadModule unique_id_module modules/mod_unique_id.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule version_module modules/mod_version.so
#LoadModule remoteip_module modules/mod_remoteip.so
#LoadModule session_module modules/mod_session.so
#LoadModule session_cookie_module modules/mod_session_cookie.so
#LoadModule session_crypto_module modules/mod_session_crypto.so
#LoadModule session_dbd_module modules/mod_session_dbd.so
#LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
#LoadModule slotmem_plain_module modules/mod_slotmem_plain.so
#LoadModule dialup_module modules/mod_dialup.so
#LoadModule http2_module modules/mod_http2.so
LoadModule unixd_module modules/mod_unixd.so
#LoadModule heartbeat_module modules/mod_heartbeat.so
#LoadModule heartmonitor_module modules/mod_heartmonitor.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
#LoadModule asis_module modules/mod_asis.so
#LoadModule info_module modules/mod_info.so
#LoadModule suexec_module modules/mod_suexec.so
<IfModule !mpm_prefork_module>
#LoadModule cgid_module modules/mod_cgid.so
</IfModule>
<IfModule mpm_prefork_module>
#LoadModule cgi_module modules/mod_cgi.so
</IfModule>
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
#LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
#LoadModule actions_module modules/mod_actions.so
#LoadModule speling_module modules/mod_speling.so
#LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule negotiation_module modules/mod_negotiation.so
<IfModule unixd_module>
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User apache
Group apache
</IfModule>
# 'Main' server configuration
#
# The directives in this section set up the values used by the 'main'
# server, which responds to any requests that aren't handled by a
# <VirtualHost> definition. These values also provide defaults for
# any <VirtualHost> containers you may define later in the file.
#
# All of these directives may appear inside <VirtualHost> containers,
# in which case these default settings will be overridden for the
# virtual host being defined.
#
#
# ServerAdmin: Your address, where problems with the server should be
# e-mailed. This address appears on some server-generated pages, such
# as error documents. e.g. admin@your-domain.com
#
ServerAdmin pongrebio@mastodon.help
#
# Optionally add a line containing the server version and virtual host
# name to server-generated pages (internal error documents, FTP directory
# listings, mod_status and mod_info output etc., but not CGI generated
# documents or custom error documents).
# Set to "EMail" to also include a mailto: link to the ServerAdmin.
# Set to one of: On | Off | EMail
#
ServerSignature On
#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
ServerName 172.17.0.2:80
#
# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other
# <Directory> blocks below.
#
<Directory />
AllowOverride none
Require all denied
</Directory>
#
# Note that from this point forward you must specifically allow
# particular features to be enabled - so if something's not working as
# you might expect, make sure that you have specifically enabled it
# below.
#
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/var/www/localhost/htdocs"
<Directory "/var/www/localhost/htdocs">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# AllowOverride FileInfo AuthConfig Limit
#
AllowOverride All
#
# Controls who can get stuff from this server.
#
Require all granted
</Directory>
#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
#
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#
<Files ".ht*">
Require all denied
</Files>
#
# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
# container, error messages relating to that virtual host will be
# logged here. If you *do* define an error logfile for a <VirtualHost>
# container, that host's errors will be logged there and not here.
#
ErrorLog logs/error.log
#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn
<IfModule log_config_module>
#
# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
#
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
<IfModule logio_module>
# You need to enable mod_logio.c to use %I and %O
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
#
# The location and format of the access logfile (Common Logfile Format).
# If you do not define any access logfiles within a <VirtualHost>
# container, they will be logged here. Contrariwise, if you *do*
# define per-<VirtualHost> access logfiles, transactions will be
# logged therein and *not* in this file.
#
#CustomLog logs/access.log common
#
# If you prefer a logfile with access, agent, and referer information
# (Combined Logfile Format) you can use the following directive.
#
CustomLog logs/access.log combined
</IfModule>
<IfModule alias_module>
#
# Redirect: Allows you to tell clients about documents that used to
# exist in your server's namespace, but do not anymore. The client
# will make a new request for the document at its new location.
# Example:
# Redirect permanent /foo http://www.example.com/bar
#
# Alias: Maps web paths into filesystem paths and is used to
# access content that does not live under the DocumentRoot.
# Example:
# Alias /webpath /full/filesystem/path
#
# If you include a trailing / on /webpath then the server will
# require it to be present in the URL. You will also likely
# need to provide a <Directory> section to allow access to
# the filesystem path.
#
# ScriptAlias: This controls which directories contain server scripts.
# ScriptAliases are essentially the same as Aliases, except that
# documents in the target directory are treated as applications and
# run by the server when requested rather than as documents sent to the
# client. The same rules about trailing "/" apply to ScriptAlias
# directives as to Alias.
#
ScriptAlias /cgi-bin/ "/var/www/localhost/cgi-bin/"
</IfModule>
<IfModule cgid_module>
#
# ScriptSock: On threaded servers, designate the path to the UNIX
# socket used to communicate with the CGI daemon of mod_cgid.
#
#Scriptsock cgisock
</IfModule>
#
# "/var/www/localhost/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/var/www/localhost/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>
<IfModule headers_module>
#
# Avoid passing HTTP_PROXY environment to CGI's on this or any proxied
# backend servers which have lingering "httpoxy" defects.
# 'Proxy' request header is undefined by the IETF, not listed by IANA
#
RequestHeader unset Proxy early
</IfModule>
<IfModule mime_module>
#
# TypesConfig points to the file containing the list of mappings from
# filename extension to MIME-type.
#
TypesConfig /etc/apache2/mime.types
#
# AddType allows you to add to or override the MIME configuration
# file specified in TypesConfig for specific file types.
#
#AddType application/x-gzip .tgz
#
# AddEncoding allows you to have certain browsers uncompress
# information on the fly. Note: Not all browsers support this.
#
#AddEncoding x-compress .Z
#AddEncoding x-gzip .gz .tgz
#
# If the AddEncoding directives above are commented-out, then you
# probably should define those extensions to indicate media types:
#
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
#
# AddHandler allows you to map certain file extensions to "handlers":
# actions unrelated to filetype. These can be either built into the server
# or added with the Action directive (see below)
#
# To use CGI scripts outside of ScriptAliased directories:
# (You will also need to add "ExecCGI" to the "Options" directive.)
#
#AddHandler cgi-script .cgi
# For type maps (negotiated resources):
#AddHandler type-map var
#
# Filters allow you to process content before it is sent to the client.
#
# To parse .shtml files for server-side includes (SSI):
# (You will also need to add "Includes" to the "Options" directive.)
#
#AddType text/html .shtml
#AddOutputFilter INCLUDES .shtml
</IfModule>
#
# The mod_mime_magic module allows the server to use various hints from the
# contents of the file itself to determine its type. The MIMEMagicFile
# directive tells the module where the hint definitions are located.
#
<IfModule mime_magic_module>
MIMEMagicFile /etc/apache2/magic
</IfModule>
#
# Customizable error responses come in three flavors:
# 1) plain text 2) local redirects 3) external redirects
#
# Some examples:
#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html
#
#
# MaxRanges: Maximum number of Ranges in a request before
# returning the entire resource, or one of the special
# values 'default', 'none' or 'unlimited'.
# Default setting is to accept 200 Ranges.
#MaxRanges unlimited
#
# EnableMMAP and EnableSendfile: On systems that support it,
# memory-mapping or the sendfile syscall may be used to deliver
# files. This usually improves server performance, but must
# be turned off when serving from networked-mounted
# filesystems or if support for these functions is otherwise
# broken on your system.
# Defaults: EnableMMAP On, EnableSendfile Off
#
#EnableMMAP off
#EnableSendfile on
# Load config files from the config directory "/etc/apache2/conf.d".
#
#IncludeOptional /etc/apache2/conf.d/*.conf
Include /etc/apache2/conf.d/default.conf
Include /etc/apache2/conf.d/languages.conf
Include /etc/apache2/conf.d/mpm.conf
Include /etc/apache2/conf.d/php7-module.conf
Include /etc/apache2/conf.d/vhost.conf
Include /etc/apache2/conf.d/mastodon.help.conf

View file

@ -1,46 +0,0 @@
#!/bin/sh
cd /root
mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
mysqld_safe &
sleep 5
gzip -d mastostart_non_popolato.sql.gz
mysql -e 'source mastostart_non_popolato.sql'
mysql -e 'source create_user.sql'
git clone https://git.lattuga.net/pongrebio/MastodonStartpage.git
mkdir /var/www/mastodon.help
rsync -av MastodonStartpage/web/ /var/www/mastodon.help/
cp /var/www/mastodon.help/mustard/sec/mustard.ini.sample /var/www/mastodon.help/mustard/sec/mustard.ini
chown apache /etc/php7/msmtprc
chmod go-r /etc/php7/msmtprc
chown apache /var/log/apache2/
ssh-keygen -A
addgroup pongi
adduser -g "Pongrèbio" -G pongi -D pongi
passwd -d pongi
adduser pongi wheel
mkdir /home/pongi/.ssh
mv /root/authorized_keys /home/pongi/.ssh
chown -R pongi:pongi /home/pongi/.ssh
chmod go-rx /home/pongi/.ssh
exit 0

View file

@ -1,27 +0,0 @@
<VirtualHost 172.17.0.2:80>
ServerAdmin pongrebio@mastodon.help
ServerName mastodon.help
DocumentRoot "/var/www/mastodon.help"
<Directory "/var/www/mastodon.help">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# SSLEngine on
# SSLProtocol -all +TLSv1.2
# SSLHonorCipherOrder on
# SSLCipherSuite EECDH+AESGCM:AES256+EECDH:AES128+EECDH
# SSLCompression off
# SSLSessionTickets off
## SSLStaplingResponderTimeout 5
## SSLStaplingReturnResponderErrors off
## SSLUseStapling on
# SSLCertificateFile /etc/letsencrypt/live/mastodon.help/fullchain.pem
# SSLCertificateKeyFile /etc/letsencrypt/live/mastodon.help/privkey.pem
</VirtualHost>

View file

@ -1,12 +0,0 @@
account phpmail
host x.x.x
port 587
tls on
auth on
user x@x.x
password xxx
from x@x.x
logfile /var/log/apache2/msmtp.log
syslog off
account default : phpmail

View file

@ -1,21 +0,0 @@
# This group is read both both by the client and the server
# use it for options that affect everything
[client-server]
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
auto-rehash
# This group is read by the server
[mysqld]
collation_server = utf8mb4_unicode_ci
character_set_server = utf8mb4
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# include all files from the config directory
!includedir /etc/my.cnf.d

File diff suppressed because it is too large Load diff

View file

@ -1,123 +0,0 @@
# $OpenBSD: sshd_config,v 1.103 2018/04/09 20:41:22 tj Exp $
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/bin:/usr/bin:/sbin:/usr/sbin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override the
# default value.
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key
# Ciphers and keying
#RekeyLimit default none
# Logging
#SyslogFacility AUTH
#LogLevel INFO
# Authentication:
#LoginGraceTime 2m
#PermitRootLogin prohibit-password
PermitRootLogin no
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
#PubkeyAuthentication yes
# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile .ssh/authorized_keys
#AuthorizedPrincipalsFile none
#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody
# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes
# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
PasswordAuthentication no
#PermitEmptyPasswords no
# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication no
# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no
# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
#UsePAM no
#AllowAgentForwarding yes
# Feel free to re-enable these if your use case requires them.
AllowTcpForwarding no
GatewayPorts no
X11Forwarding no
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS no
#PidFile /run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none
# no default banner path
#Banner none
# override default of no subsystems
Subsystem sftp /usr/lib/ssh/sftp-server
# Example of overriding settings on a per-user basis
#Match User anoncvs
# X11Forwarding no
# AllowTcpForwarding no
# PermitTTY no
# ForceCommand cvs server
AllowUsers pongi

View file

@ -1 +0,0 @@
Set disable_coredump false

View file

@ -1,97 +0,0 @@
## sudoers file.
##
## This file MUST be edited with the 'visudo' command as root.
## Failure to use 'visudo' may result in syntax or file permission errors
## that prevent sudo from running.
##
## See the sudoers man page for the details on how to write a sudoers file.
##
##
## Host alias specification
##
## Groups of machines. These may include host names (optionally with wildcards),
## IP addresses, network numbers or netgroups.
# Host_Alias WEBSERVERS = www1, www2, www3
##
## User alias specification
##
## Groups of users. These may consist of user names, uids, Unix groups,
## or netgroups.
# User_Alias ADMINS = millert, dowdy, mikef
##
## Cmnd alias specification
##
## Groups of commands. Often used to group related commands together.
# Cmnd_Alias PROCESSES = /usr/bin/nice, /bin/kill, /usr/bin/renice, \
# /usr/bin/pkill, /usr/bin/top
# Cmnd_Alias REBOOT = /sbin/halt, /sbin/reboot, /sbin/poweroff
##
## Defaults specification
##
## You may wish to keep some of the following environment variables
## when running commands via sudo.
##
## Locale settings
# Defaults env_keep += "LANG LANGUAGE LINGUAS LC_* _XKB_CHARSET"
##
## Run X applications through sudo; HOME is used to find the
## .Xauthority file. Note that other programs use HOME to find
## configuration files and this may lead to privilege escalation!
# Defaults env_keep += "HOME"
##
## X11 resource path settings
# Defaults env_keep += "XAPPLRESDIR XFILESEARCHPATH XUSERFILESEARCHPATH"
##
## Desktop path settings
# Defaults env_keep += "QTDIR KDEDIR"
##
## Allow sudo-run commands to inherit the callers' ConsoleKit session
# Defaults env_keep += "XDG_SESSION_COOKIE"
##
## Uncomment to enable special input methods. Care should be taken as
## this may allow users to subvert the command being run via sudo.
# Defaults env_keep += "XMODIFIERS GTK_IM_MODULE QT_IM_MODULE QT_IM_SWITCHER"
##
## Uncomment to use a hard-coded PATH instead of the user's to find commands
# Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
##
## Uncomment to send mail if the user does not enter the correct password.
# Defaults mail_badpass
##
## Uncomment to enable logging of a command's output, except for
## sudoreplay and reboot. Use sudoreplay to play back logged sessions.
# Defaults log_output
# Defaults!/usr/bin/sudoreplay !log_output
# Defaults!/usr/local/bin/sudoreplay !log_output
# Defaults!REBOOT !log_output
##
## Runas alias specification
##
##
## User privilege specification
##
root ALL=(ALL) ALL
## Uncomment to allow members of group wheel to execute any command
# %wheel ALL=(ALL) ALL
## Same thing without a password
%wheel ALL=(ALL) NOPASSWD: ALL
## Uncomment to allow members of group sudo to execute any command
# %sudo ALL=(ALL) ALL
## Uncomment to allow any user to run sudo if they know the password
## of the user they are running the command as (root by default).
# Defaults targetpw # Ask for the password of the target user
# ALL ALL=(ALL) ALL # WARNING: only use this together with 'Defaults targetpw'
## Read drop-in files from /etc/sudoers.d
## (the '#' here does not indicate a comment)
#includedir /etc/sudoers.d

View file

@ -1,6 +0,0 @@
#!/bin/sh
BASEDIR=$(dirname "$0")
cd "$BASEDIR/MastodonStartpage"
git pull
cd ..
rsync -av --filter "protect mustard/crawler/peers" --filter "protect mustard/sec/mustard.ini" --delete-after MastodonStartpage/web/ /var/www/mastodon.help/

View file

@ -1,6 +0,0 @@
<VirtualHost 172.17.0.2:80>
ServerAdmin pongrebio@mastodon.help
DocumentRoot "/var/www/localhost/htdocs"
</VirtualHost>

View file

@ -1,13 +0,0 @@
FROM alpine:3
RUN apk add --no-cache apache2 php7 php7-apache2 php7-mysqli php7-mbstring php7-pcntl php7-intl php7-json php7-session mariadb mariadb-client git rsync msmtp
COPY files/my.cnf /etc/my.cnf
COPY files/httpd.conf /etc/apache2/
COPY files/php.ini /etc/php7/
COPY files/msmtprc /etc/php7/
COPY files/binit.sh /usr/local/bin/
COPY files/update.sh /root/
COPY files/mastostart_popolato.sql.gz /root/
COPY files/create_user.sql /root/
COPY files/install.sh /root/
RUN /root/install.sh
CMD /usr/local/bin/binit.sh

View file

@ -1,25 +0,0 @@
Questa cartella contiene il Dockerfile e quel che serve per generare un'immagine docker di mastostart su cui è possibile fare prove. L'immagine è basata su alpine linux e contiene apache, php, mariadb già configurati. Al momento pesa circa 450 mb.
### Come generare l'immagine docker
`git clone https://git.lattuga.net/pongrebio/MastodonStartpage.git` per clonare questo repo in locale.
Dalla directory `docker/prova` del repo clonato: `docker build -t mastostart[:versione] .` (":versione" è facoltativo, il "." alla fine del comando no ;-) ).
`docker run -d mastostart[:versione]` per creare e lanciare un container.
A questo punto, per vedere in locale la Mastodon Startpage, aprire un browser su [http://172.17.0.2](http://172.17.0.2).
Se si vuole provare anche Mustard, il "lato admin" del motore di ricerca istanze mastodon che stiamo accrocchiando (e il cui "lato utente" è ancora da fare), aprire il browser su [http://172.17.0.2/mustard](http://172.17.0.2/mustard); email `pongrebio@insicuri.net` e password `password` per entrare come admin; email `mastodon@bida.im` e password `password` per entrare come "admin di un'istanza invitata". La possibilità di invitare admin di altre istanze non è attiva, al momento.
Per determinare il nome e l'id del container che sta girando: `docker ps`.
Per provare il crawler che aggiorna il db delle istanze: `docker exec -it <nome o id container> /var/www/localhost/htdocs/mustard/crawler/crawl.sh` (sulla mia sgrausissima adsl ci mette taaaanto tempo a finire, circa 10 ore: pigiare il buon vecchio `ctrl+c` se si vuole fermare il crawler prima che abbia finito ;-) ).
Per aggiornare all'ultimo commit pubblicato su lattuga il mastostart del container attivo: `docker exec -it <nome o id container> /root/update.sh`.
Per aprire una shell sul container attivo: `docker exec -it <nome o id container> /bin/sh -l`; per uscirne, il buon vecchio `exit`.
Per "spegnere" il container attivo: `docker stop <nome o id container>`.
Per riavviarlo: `docker start <nome o id container>`.

View file

@ -1,20 +0,0 @@
#!/bin/sh
predown() {
echo -e "\nStoppo tutto..."
echo "Stoppo apache..."
httpd -k stop
echo "Stoppo mysqld (pid: $mysqld_pid)..."
kill $mysqld_pid
exit 0
}
trap 'predown' HUP INT QUIT TERM
echo "Lancio mysqld..."
/usr/bin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mariadb/plugin --user=mysql --log-error=/var/lib/mysql/mysql.err --pid-file=mysql.pid &> /dev/null &
mysqld_pid=$!
echo "Lancio apache..."
httpd -k start
wait $!

View file

@ -1,4 +0,0 @@
DELETE FROM mysql.user WHERE User='' OR USER='mysql';
CREATE USER 'MastoStartAdmin'@'%' IDENTIFIED BY 'MastoStartAdmin';
GRANT SELECT, INSERT, UPDATE, DELETE, LOCK TABLES ON `mastostart`.* TO 'MastoStartAdmin'@'%';
FLUSH PRIVILEGES;

View file

@ -1,486 +0,0 @@
#
# This is the main Apache HTTP server configuration file. It contains the
# configuration directives that give the server its instructions.
# See <URL:http://httpd.apache.org/docs/2.4/> for detailed information.
# In particular, see
# <URL:http://httpd.apache.org/docs/2.4/mod/directives.html>
# for a discussion of each configuration directive.
#
# Do NOT simply read the instructions in here without understanding
# what they do. They're here only as hints or reminders. If you are unsure
# consult the online docs. You have been warned.
#
# Configuration and logfile names: If the filenames you specify for many
# of the server's control files begin with "/" (or "drive:/" for Win32), the
# server will use that explicit path. If the filenames do *not* begin
# with "/", the value of ServerRoot is prepended -- so "logs/access_log"
# with ServerRoot set to "/usr/local/apache2" will be interpreted by the
# server as "/usr/local/apache2/logs/access_log", whereas "/logs/access_log"
# will be interpreted as '/logs/access_log'.
#
# ServerTokens
# This directive configures what you return as the Server HTTP response
# Header. The default is 'Full' which sends information about the OS-Type
# and compiled in modules.
# Set to one of: Full | OS | Minor | Minimal | Major | Prod
# where Full conveys the most information, and Prod the least.
#
ServerTokens Prod
#
# ServerRoot: The top of the directory tree under which the server's
# configuration, error, and log files are kept.
#
# Do not add a slash at the end of the directory path. If you point
# ServerRoot at a non-local disk, be sure to specify a local disk on the
# Mutex directive, if file-based mutexes are used. If you wish to share the
# same ServerRoot for multiple httpd daemons, you will need to change at
# least PidFile.
#
ServerRoot /var/www
#
# Mutex: Allows you to set the mutex mechanism and mutex file directory
# for individual mutexes, or change the global defaults
#
# Uncomment and change the directory if mutexes are file-based and the default
# mutex file directory is not on a local disk or is not appropriate for some
# other reason.
#
# Mutex default:/run/apache2
#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 80
#
# Dynamic Shared Object (DSO) Support
#
# To be able to use the functionality of a module which was built as a DSO you
# have to place corresponding `LoadModule' lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Statically compiled modules (those listed by `httpd -l') do not need
# to be loaded here.
#
# Example:
# LoadModule foo_module modules/mod_foo.so
#
#LoadModule mpm_event_module modules/mod_mpm_event.so
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
#LoadModule mpm_worker_module modules/mod_mpm_worker.so
LoadModule authn_file_module modules/mod_authn_file.so
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
#LoadModule authn_anon_module modules/mod_authn_anon.so
#LoadModule authn_dbd_module modules/mod_authn_dbd.so
#LoadModule authn_socache_module modules/mod_authn_socache.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_user_module modules/mod_authz_user.so
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
#LoadModule authz_owner_module modules/mod_authz_owner.so
#LoadModule authz_dbd_module modules/mod_authz_dbd.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule access_compat_module modules/mod_access_compat.so
LoadModule auth_basic_module modules/mod_auth_basic.so
#LoadModule auth_form_module modules/mod_auth_form.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
#LoadModule allowmethods_module modules/mod_allowmethods.so
#LoadModule file_cache_module modules/mod_file_cache.so
#LoadModule cache_module modules/mod_cache.so
#LoadModule cache_disk_module modules/mod_cache_disk.so
#LoadModule cache_socache_module modules/mod_cache_socache.so
#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
#LoadModule socache_dbm_module modules/mod_socache_dbm.so
#LoadModule socache_memcache_module modules/mod_socache_memcache.so
#LoadModule socache_redis_module modules/mod_socache_redis.so
#LoadModule watchdog_module modules/mod_watchdog.so
#LoadModule macro_module modules/mod_macro.so
#LoadModule dbd_module modules/mod_dbd.so
#LoadModule dumpio_module modules/mod_dumpio.so
#LoadModule echo_module modules/mod_echo.so
#LoadModule buffer_module modules/mod_buffer.so
#LoadModule data_module modules/mod_data.so
#LoadModule ratelimit_module modules/mod_ratelimit.so
LoadModule reqtimeout_module modules/mod_reqtimeout.so
#LoadModule ext_filter_module modules/mod_ext_filter.so
#LoadModule request_module modules/mod_request.so
#LoadModule include_module modules/mod_include.so
LoadModule filter_module modules/mod_filter.so
#LoadModule reflector_module modules/mod_reflector.so
#LoadModule substitute_module modules/mod_substitute.so
#LoadModule sed_module modules/mod_sed.so
#LoadModule charset_lite_module modules/mod_charset_lite.so
#LoadModule deflate_module modules/mod_deflate.so
LoadModule mime_module modules/mod_mime.so
LoadModule log_config_module modules/mod_log_config.so
#LoadModule log_debug_module modules/mod_log_debug.so
#LoadModule log_forensic_module modules/mod_log_forensic.so
#LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
#LoadModule mime_magic_module modules/mod_mime_magic.so
#LoadModule expires_module modules/mod_expires.so
LoadModule headers_module modules/mod_headers.so
#LoadModule usertrack_module modules/mod_usertrack.so
#LoadModule unique_id_module modules/mod_unique_id.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule version_module modules/mod_version.so
#LoadModule remoteip_module modules/mod_remoteip.so
#LoadModule session_module modules/mod_session.so
#LoadModule session_cookie_module modules/mod_session_cookie.so
#LoadModule session_crypto_module modules/mod_session_crypto.so
#LoadModule session_dbd_module modules/mod_session_dbd.so
#LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
#LoadModule slotmem_plain_module modules/mod_slotmem_plain.so
#LoadModule dialup_module modules/mod_dialup.so
#LoadModule http2_module modules/mod_http2.so
LoadModule unixd_module modules/mod_unixd.so
#LoadModule heartbeat_module modules/mod_heartbeat.so
#LoadModule heartmonitor_module modules/mod_heartmonitor.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
#LoadModule asis_module modules/mod_asis.so
#LoadModule info_module modules/mod_info.so
#LoadModule suexec_module modules/mod_suexec.so
<IfModule !mpm_prefork_module>
#LoadModule cgid_module modules/mod_cgid.so
</IfModule>
<IfModule mpm_prefork_module>
#LoadModule cgi_module modules/mod_cgi.so
</IfModule>
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
#LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
#LoadModule actions_module modules/mod_actions.so
#LoadModule speling_module modules/mod_speling.so
#LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule negotiation_module modules/mod_negotiation.so
<IfModule unixd_module>
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User apache
Group apache
</IfModule>
# 'Main' server configuration
#
# The directives in this section set up the values used by the 'main'
# server, which responds to any requests that aren't handled by a
# <VirtualHost> definition. These values also provide defaults for
# any <VirtualHost> containers you may define later in the file.
#
# All of these directives may appear inside <VirtualHost> containers,
# in which case these default settings will be overridden for the
# virtual host being defined.
#
#
# ServerAdmin: Your address, where problems with the server should be
# e-mailed. This address appears on some server-generated pages, such
# as error documents. e.g. admin@your-domain.com
#
ServerAdmin pongrebio@mastodon.help
#
# Optionally add a line containing the server version and virtual host
# name to server-generated pages (internal error documents, FTP directory
# listings, mod_status and mod_info output etc., but not CGI generated
# documents or custom error documents).
# Set to "EMail" to also include a mailto: link to the ServerAdmin.
# Set to one of: On | Off | EMail
#
ServerSignature On
#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
ServerName 172.17.0.2:80
#
# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other
# <Directory> blocks below.
#
<Directory />
AllowOverride none
Require all denied
</Directory>
#
# Note that from this point forward you must specifically allow
# particular features to be enabled - so if something's not working as
# you might expect, make sure that you have specifically enabled it
# below.
#
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/var/www/localhost/htdocs"
<Directory "/var/www/localhost/htdocs">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# AllowOverride FileInfo AuthConfig Limit
#
AllowOverride All
#
# Controls who can get stuff from this server.
#
Require all granted
</Directory>
#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
#
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#
<Files ".ht*">
Require all denied
</Files>
#
# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
# container, error messages relating to that virtual host will be
# logged here. If you *do* define an error logfile for a <VirtualHost>
# container, that host's errors will be logged there and not here.
#
ErrorLog logs/error.log
#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn
<IfModule log_config_module>
#
# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
#
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
<IfModule logio_module>
# You need to enable mod_logio.c to use %I and %O
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
#
# The location and format of the access logfile (Common Logfile Format).
# If you do not define any access logfiles within a <VirtualHost>
# container, they will be logged here. Contrariwise, if you *do*
# define per-<VirtualHost> access logfiles, transactions will be
# logged therein and *not* in this file.
#
#CustomLog logs/access.log common
#
# If you prefer a logfile with access, agent, and referer information
# (Combined Logfile Format) you can use the following directive.
#
CustomLog logs/access.log combined
</IfModule>
<IfModule alias_module>
#
# Redirect: Allows you to tell clients about documents that used to
# exist in your server's namespace, but do not anymore. The client
# will make a new request for the document at its new location.
# Example:
# Redirect permanent /foo http://www.example.com/bar
#
# Alias: Maps web paths into filesystem paths and is used to
# access content that does not live under the DocumentRoot.
# Example:
# Alias /webpath /full/filesystem/path
#
# If you include a trailing / on /webpath then the server will
# require it to be present in the URL. You will also likely
# need to provide a <Directory> section to allow access to
# the filesystem path.
#
# ScriptAlias: This controls which directories contain server scripts.
# ScriptAliases are essentially the same as Aliases, except that
# documents in the target directory are treated as applications and
# run by the server when requested rather than as documents sent to the
# client. The same rules about trailing "/" apply to ScriptAlias
# directives as to Alias.
#
ScriptAlias /cgi-bin/ "/var/www/localhost/cgi-bin/"
</IfModule>
<IfModule cgid_module>
#
# ScriptSock: On threaded servers, designate the path to the UNIX
# socket used to communicate with the CGI daemon of mod_cgid.
#
#Scriptsock cgisock
</IfModule>
#
# "/var/www/localhost/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/var/www/localhost/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>
<IfModule headers_module>
#
# Avoid passing HTTP_PROXY environment to CGI's on this or any proxied
# backend servers which have lingering "httpoxy" defects.
# 'Proxy' request header is undefined by the IETF, not listed by IANA
#
RequestHeader unset Proxy early
</IfModule>
<IfModule mime_module>
#
# TypesConfig points to the file containing the list of mappings from
# filename extension to MIME-type.
#
TypesConfig /etc/apache2/mime.types
#
# AddType allows you to add to or override the MIME configuration
# file specified in TypesConfig for specific file types.
#
#AddType application/x-gzip .tgz
#
# AddEncoding allows you to have certain browsers uncompress
# information on the fly. Note: Not all browsers support this.
#
#AddEncoding x-compress .Z
#AddEncoding x-gzip .gz .tgz
#
# If the AddEncoding directives above are commented-out, then you
# probably should define those extensions to indicate media types:
#
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
#
# AddHandler allows you to map certain file extensions to "handlers":
# actions unrelated to filetype. These can be either built into the server
# or added with the Action directive (see below)
#
# To use CGI scripts outside of ScriptAliased directories:
# (You will also need to add "ExecCGI" to the "Options" directive.)
#
#AddHandler cgi-script .cgi
# For type maps (negotiated resources):
#AddHandler type-map var
#
# Filters allow you to process content before it is sent to the client.
#
# To parse .shtml files for server-side includes (SSI):
# (You will also need to add "Includes" to the "Options" directive.)
#
#AddType text/html .shtml
#AddOutputFilter INCLUDES .shtml
</IfModule>
#
# The mod_mime_magic module allows the server to use various hints from the
# contents of the file itself to determine its type. The MIMEMagicFile
# directive tells the module where the hint definitions are located.
#
<IfModule mime_magic_module>
MIMEMagicFile /etc/apache2/magic
</IfModule>
#
# Customizable error responses come in three flavors:
# 1) plain text 2) local redirects 3) external redirects
#
# Some examples:
#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html
#
#
# MaxRanges: Maximum number of Ranges in a request before
# returning the entire resource, or one of the special
# values 'default', 'none' or 'unlimited'.
# Default setting is to accept 200 Ranges.
#MaxRanges unlimited
#
# EnableMMAP and EnableSendfile: On systems that support it,
# memory-mapping or the sendfile syscall may be used to deliver
# files. This usually improves server performance, but must
# be turned off when serving from networked-mounted
# filesystems or if support for these functions is otherwise
# broken on your system.
# Defaults: EnableMMAP On, EnableSendfile Off
#
#EnableMMAP off
#EnableSendfile on
# Load config files from the config directory "/etc/apache2/conf.d".
#
#IncludeOptional /etc/apache2/conf.d/*.conf
Include /etc/apache2/conf.d/default.conf
Include /etc/apache2/conf.d/languages.conf
Include /etc/apache2/conf.d/mpm.conf
Include /etc/apache2/conf.d/php7-module.conf

View file

@ -1,31 +0,0 @@
#!/bin/sh
cd /root
mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
mysqld_safe &
sleep 5
gzip -d mastostart_popolato.sql.gz
mysql -e 'source mastostart_popolato.sql'
mysql -e 'source create_user.sql'
rm /var/www/localhost/htdocs/index.html
git clone https://git.lattuga.net/pongrebio/MastodonStartpage.git
rsync -av MastodonStartpage/web/ /var/www/localhost/htdocs/
cp /var/www/localhost/htdocs/mustard/sec/mustard.ini.sample /var/www/localhost/htdocs/mustard/sec/mustard.ini
chown apache /etc/php7/msmtprc
chmod go-r /etc/php7/msmtprc
chown apache /var/log/apache2/
exit 0

View file

@ -1,12 +0,0 @@
account phpmail
host x.x.x
port 587
tls on
auth on
user x@x.x
password xxx
from x@x.x
logfile /var/log/apache2/msmtp.log
syslog off
account default : phpmail

View file

@ -1,21 +0,0 @@
# This group is read both both by the client and the server
# use it for options that affect everything
[client-server]
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
auto-rehash
# This group is read by the server
[mysqld]
collation_server = utf8mb4_unicode_ci
character_set_server = utf8mb4
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# include all files from the config directory
!includedir /etc/my.cnf.d

File diff suppressed because it is too large Load diff

View file

@ -1,6 +0,0 @@
#!/bin/sh
BASEDIR=$(dirname "$0")
cd "$BASEDIR/MastodonStartpage"
git pull
cd ..
rsync -av --filter "protect mustard/crawler/peers" --filter "protect mustard/sec/mustard.ini" --delete-after MastodonStartpage/web/ /var/www/localhost/htdocs/

View file

@ -1,36 +0,0 @@
anitwitter.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 1 f f
anitwitter.moe 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 1 f f
babymetal.party 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 1 f f
baraag.net 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 1 f f
bsd.moe 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 1 f f https://mastodon.bida.im/@Ca_Gi/101270762003908554
ediot.social 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 1 f f
freespeechextremist.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 1 f f
freespeech.firedragonstudios.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 1 f f https://mastodon.bida.im/@Ca_Gi/101344114624456297
freezepeach.xyz 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 1 f f
gorf.club 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 1 f f
gs.smuglo.li 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 1 f f
humblr.social 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 0 f f https://mastodon.bida.im/@cirku17/101399587014096355
ika.moe 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 1 f f
mastodon.starrevolution.org 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 1 f f https://a.nom.pl/notice/450131
mobile.co 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 1 f f https://mastodon.bida.im/@Ca_Gi/101355947506820592
neckbeard.xyz 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 1 f f Instance "suspended": neckbeard.xyz - anime nazi shit, irony bro admin
newjack.city 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 1 f f
noagendasocial.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 0 f f
pawoo.net 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 1 f f
pl.smuglo.li 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 1 f f
porntoot.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 0 f f
preteengirls.biz 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 1 f f
quodverum.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 1 f f https://mastodon.bida.im/@Ca_Gi/101514801964087604
sealion.club 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 0 f f
shitposter.club 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 0 f f
shitposter.club 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 1 f f https://mastodon.bida.im/@Ca_Gi/101270762003908554
social.au2pb.net 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 1 f f
social.heldscal.la 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 1 f f
social.imirhil.fr 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 1 f f
social.quodverum.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 1 f f Razz"isti
social.targaryen.house 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 0 f f
switter.at 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 0 f f https://mastodon.bida.im/@jops/101404791975700441
toot.love 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 0 f f
unsafe.space 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 1 f f
woofer.alfter.us 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 1 f f
wrongthink.net 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 1 f f

View file

@ -1,158 +0,0 @@
2.distsn.org 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Spam
2hu.club 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Pedo Loli
anitwitter.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f
anitwitter.moe 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Bad Moderation
ap.torlipen.net 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f
ap.uwu.st 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Harassment or abuse
babymetal.party 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f
baraag.net 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Pedo Loli
beehub.org 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 0 f f
blob.cat 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f
bodybuilding.im 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f
bofa.lol 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
bsd.moe 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f
carnal-gabhub.protohype.net 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f
civiq.social 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f
cofe.moe 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Bad Moderation
comm.network 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
community.halle-leaks.de 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
community.highlandarrow.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
counter.social 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Bad Moderation
cryzed.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 0 f f
cyzed.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f
daffodil-11.org 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f "Malicious" 'site'
dev.civiq.social 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f
develop.gab.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
dickshow.social 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Bad Moderation
djitter.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f
ediot.social 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 0 f f Fascism Hatespeech
ediot.socialsilence 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f
ekrem.develop.gab.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f
exited.eu 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
explosion.party 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Conspiracy theories
fedichive.tk 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f
feminism.lgbt 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Pedo Loli
freefedifollowers.ga 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f
freehold.earth 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Bad Moderation
freespeechextremist.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
freespeech.firedragonstudios.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
freespeech.host 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
freevoice.space 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 0 f f Fascism Hatespeech
freezepeach.xyz 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
gab.ai 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
gabble.xyz 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
gab.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
gabfed.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
gab.io 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
gab.polaris-1.work 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
gab.protohype.net 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
gab.sleek.eu 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
gameliberty.club 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Pedo Loli
gasthe.lgbt 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
gnusocial.no 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
goldandblack.xyz 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
gorf.club 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 0 f f Fascism Hatespeech
gorf.club 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f
gs.archae.me 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
gs.kawa-kun.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
gs.mon5t3r.info 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
gs.smuglo.li 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
hakui.club 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
homura.space 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Harassment or abuse
ika.moe 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Bad Moderation
impeccable.social 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f
inditoot.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Bad Moderation
jabb.in 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Conspiracy theories
juche.town 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
karolat.press 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
kawaiistu.moe 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
kawen.space 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f
kazvam.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f
kipper.im 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Bad Moderation
kiwifarms.cc 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 0 f f
kneegrows.top 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
kowai.youkai.town 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Pedo Loli
kyot.me 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Bad Moderation
liberdon.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
libertarianism.club 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
libre.tube 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 0 f f
loli.estate 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Pedo Loli
lolis.world 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
manx.social 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Bad Moderation
mastodon.loliandstuff.moe 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Pedo Loli
mastodon.starrevolution.org 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f
mast.wholemars.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 0 f f
melalandia.tk 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
me.nooruul.xyz 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f
mobile.co 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
neckbeard.xyz 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f
neenster.org 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f
newjack.city 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Spam
niu.moe 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Bad Moderation
noagendasocial.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 0 f f Fascism Hatespeech
not-develop.gab.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
not.phrack.fyi 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Conspiracy theories
npf.mlpol.net 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
pawoo.net 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Pedo Loli
pleroma.cucked.me 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
pleroma.rareome.ga 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Malicious site
pleroma.soykaf.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
pleroma.wolfie.pw 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f
pleroma.yorha.club 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Harassment or abuse
pleville.net 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 0 f f
pl.smuglo.li 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
porntoot.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Pedo Loli
preteen.biz 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Pedo Loli
preteengirls.bi 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Pedo Loli
preteengirls.biz 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Pedo Loli
pridelands.io 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
qoto.org 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
quey.org 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 0 f f
quitter.pw 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f
quodverum.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f
rainbowdash.net 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
rapefeminists.network 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
sealion.club 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
shitasstits.life 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Pedo Loli
shitposter.club 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
social.allthefallen.ninja 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Pedo Loli
social.au2pb.net 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
social.guizzyordi.info 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
social.heldscal.la 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
social.hidamari.blue 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 0 f f
social.homunyan.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 0 f f
social.i2p.rocks 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
social.imirhil.fr 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f
social.louisoft01.moe 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Conspiracy theories
social.lucci.xyz 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Conspiracy theories
social.quodverum.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
social.raptorengineering.io 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Advertisement
social.sunshinegardens.org 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Harassment or abuse
social.super-niche.club 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Pedo Loli
social.targaryen.house 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 0 f f Fascism Hatespeech
social.wiuwiu.de 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Bad Moderation
socnet.supes.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Bad Moderation
spinster.dev 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f
spinster.xyz 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f
sunshinegardens.org 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Harassment or abuse
thechad.zone 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
the.hedgehoghunter.club 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 0 f f
toot.love 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Bad Moderation
unsafe.space 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 0 f f Fascism Hatespeech
vampire.estate 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Pedo Loli
video.halle-leaks.de 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f
vipgirlfriend.xxx 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Unflagged porn
voluntaryism.club 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
wagesofsinisdeath.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
waifu.social 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
warc.space 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 0 f f
weeaboo.space 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Pedo Loli
weedis.life 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 0 f f
wogan.im 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
woofer.alfter.us 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
wrongthink.net 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 0 f f Fascism Hatespeech
wxw.moe 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Pedo Loli
yiff.rocks 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Harassment or abuse
youkai.town 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Pedo Loli
zerohack.xyz 2019-12-11 18:44:05.111111 2019-12-11 18:44:06.710862 1 f f Fascism Hatespeech
social.quodverum.com 2019-12-11 18:44:05.111111 2019-12-11 18:44:05.111111 1 f f Razz"isti

View file

@ -1,2 +0,0 @@
blacklist_bida.txt
blacklist_cagi.txt

View file

@ -1,5 +0,0 @@
mastodon.bida.im
mastodon.cisti.org
nebbia.fail
stereodon.social
snapj.saja.freemyip.com

View file

@ -1,119 +0,0 @@
#!/bin/sh
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
MASTHOME='/var/lib/mastodon'
MASTENVFP="$MASTHOME/live/.env.production"
DOMBLOCKSFP="$MASTHOME/live/public/domain_blocks.txt"
HELP="SINTASSI
mastblocksdump.sh [opzioni]
DESCRIZIONE
Questo script rimedia all'attuale mancanza, in mastodon, di un endpoint
dell'API che ritorni una lista dei domini bloccati da un'istanza in un
formato univoco e parsabile. Legge i dati necessari alla connessione al
db di mastodon dal file di configurazione di mastodon, per default
\"$MASTENVFP\"
poi esegue tramite psql una query sulla tabella domain_blocks
e ne salva i risultati in un file di testo, per default
\"$DOMBLOCKSFP\"
che sarà accessibile da \"https://[dominio]/domain_blocks.txt\".
È pensato per essere eseguito periodicamente da un cron job, come
utente mastodon oppure root oppure altro utente che abbia accesso in
lettura al file di configurazione di mastodon e in scrittura a quello
in cui scrivere la lista delle istanze bloccate.
OPZIONI
-H, --home
Definisce la home di mastodon (per default \"$MASTHOME\")
e di conseguenza il percorso del suo file di configurazione
(per default \"$MASTENVFP\") e del file
in cui scrivere la lista delle istanze bloccate (per default
\"$DOMBLOCKSFP\").
È comunque possibile specificare individualmente il percorso
del file di configurazione di mastodon e di quello in cui scrivere
la lista delle istanze bloccate con le due opzioni che seguono.
-e, --envfp
Definisce il percorso del file di configurazione di mastodon in uso.
-b, --blocksfp
Definisce il percorso del file in cui scrivere la lista delle istanze
bloccate.
-h, --help
Mostra questo aiuto ed esce."
args=("$@")
i=0
while [ $i -lt ${#args[@]} ]; do
if [ "${args[$i]:0:1}" == "-" ]; then
case "${args[$i]}" in
"-H" | "--home" )
if [ -z "${args[$i+1]}" ]; then
echo "L'opzione \"${args[$i]}\" richiede un parametro (usa \"-h\" per l'aiuto)."
exit 1
else
((i++))
MASTHOME=$(echo "${args[$i]}" | sed -e 's/\/$//')
MASTENVFP="$MASTHOME/live/.env.production"
DOMBLOCKSFP="$MASTHOME/live/public/domain_blocks.txt"
fi
;;
"-e" | "--envfp" )
if [ -z "${args[$i+1]}" ]; then
echo "L'opzione \"${args[$i]}\" richiede un parametro (usa \"-h\" per l'aiuto)."
exit 1
else
((i++))
MASTENVFP="${args[$i]}"
fi
;;
"-b" | "--blocksfp" )
if [ -z "${args[$i+1]}" ]; then
echo "L'opzione \"${args[$i]}\" richiede un parametro (usa \"-h\" per l'aiuto)."
exit 1
else
((i++))
DOMBLOCKSFP="${args[$i]}"
fi
;;
"-h" | "--help" )
echo "$HELP"
exit 0
;;
*)
echo "\"${args[$i]}\": opzione sconosciuta (usa \"-h\" per l'aiuto)."
exit 1
;;
esac
else
echo "\"${args[$i]}\": opzione sconosciuta (usa \"-h\" per l'aiuto)."
exit 1
fi
((i++))
done
[ ! -e "$MASTENVFP" ] && echo "\"$MASTENVFP\" non esiste, muoio (usa \"-h\" per l'aiuto)." && exit 1
[ ! -f "$MASTENVFP" ] && echo "\"$MASTENVFP\" non è un file, muoio (usa \"-h\" per l'aiuto)." && exit 1
[ ! -r "$MASTENVFP" ] && echo "\"$MASTENVFP\" non è leggibile, muoio (usa \"-h\" per l'aiuto)." && exit 1
DB_HOST=`grep 'DB_HOST' "$MASTENVFP"|sed -e 's/[^=]*=//'`
DB_PORT=`grep 'DB_PORT' "$MASTENVFP"|sed -e 's/[^=]*=//'`
DB_NAME=`grep 'DB_NAME' "$MASTENVFP"|sed -e 's/[^=]*=//'`
DB_USER=`grep 'DB_USER' "$MASTENVFP"|sed -e 's/[^=]*=//'`
DB_PASS=`grep 'DB_PASS' "$MASTENVFP"|sed -e 's/[^=]*=//'`
touch "$DOMBLOCKSFP" 2>/dev/null
[ ! $? -eq 0 ] && echo "Non posso creare/modificare il file \"$DOMBLOCKSFP\", muoio (usa \"-h\" per l'aiuto)." && exit 1
echo "# generato $(date -u)" > "$DOMBLOCKSFP"
echo "# formato di output: dominio bloccato[tab]data creazione blocco[tab]data ultima modifica blocco[tab]tipo blocco[tab]rifiuto media[tab]rifiuto reports[tab]commento pubblico" >> "$DOMBLOCKSFP"
echo "# \"tipo blocco\" può essere 0=silenziato, 1=sospeso, 2=nessuno (solo, eventualmente, rifiuto media e reports)" >> "$DOMBLOCKSFP"
PGPASSWORD="$DB_PASS" psql -h "$DB_HOST" -p "$DB_PORT" -d "$DB_NAME" -U "$DB_USER" -c 'SELECT domain, created_at, updated_at, severity, reject_media, reject_reports, public_comment FROM domain_blocks' -A -t -F $'\t' >> "$DOMBLOCKSFP"

View file

@ -1,168 +0,0 @@
#!/bin/bash
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
MASTHOME='/var/lib/mastodon'
MASTENVFP="$MASTHOME/live/.env.production"
SISTERSFP="istanzesorelle"
INTERACTIVE=0
HELP="SINTASSI
mastblocksmerge.sh [opzioni]
DESCRIZIONE
Questo script integra i dati di una o più blocklist esterne nella
tabella domain_blocks di mastodon.
Legge i domini delle istanze di cui recuperare la blocklist da un file,
per default \"$SISTERSP\" (formato del file: un dominio per riga),
prova a recuperare ciascuna blocklist da
https://[dominio]/domain_blocks.txt, costruisce dalle liste recuperate
un\'unica lista senza duplicati, si collega al db di mastodon e scrive
nella tabella domain_blocks i dati relativi alle istanze bloccate che
non sono già presenti nella tabella stessa.
Per la connessione al db di mastodon legge i dati necessari dal file
di configurazione di mastodon, per default
\"$MASTENVFP\"
È pensato per essere eseguito periodicamente da un cron job, come
utente mastodon oppure root oppure altro utente che abbia accesso in
lettura al file di configurazione di mastodon.
OPZIONI
-H, --home
Definisce la home di mastodon (per default \"$MASTHOME\")
e di conseguenza il percorso del suo file di configurazione
(per default \"$MASTENVFP\").
È comunque possibile specificare individualmente il percorso
del file di configurazione di mastodon con l\'opzione che segue.
-e, --envfp
Definisce il percorso del file di configurazione di mastodon in uso.
-s, --sistersfp
Definisce il percorso del file da cui leggere la lista delle istanze
sorelle.
-i, --interactive
Modalità interattiva: se vengono nelle blocklist vengono trovate
istanze ancora non presenti nel database di mastodon, viene chiesto
per ciascuna se aggiungerla o meno.
-h, --help
Mostra questo aiuto ed esce."
args=("$@")
i=0
while [ $i -lt ${#args[@]} ]; do
if [ "${args[$i]:0:1}" == "-" ]; then
case "${args[$i]}" in
"-H" | "--home" )
if [ -z "${args[$i+1]}" ]; then
echo "L'opzione \"${args[$i]}\" richiede un parametro (usa \"-h\" per l'aiuto)."
exit 1
else
((i++))
MASTHOME=$(echo "${args[$i]}" | sed -e 's/\/$//')
MASTENVFP="$MASTHOME/live/.env.production"
fi
;;
"-e" | "--envfp" )
if [ -z "${args[$i+1]}" ]; then
echo "L'opzione \"${args[$i]}\" richiede un parametro (usa \"-h\" per l'aiuto)."
exit 1
else
((i++))
MASTENVFP="${args[$i]}"
fi
;;
"-s" | "--sistersfp" )
if [ -z "${args[$i+1]}" ]; then
echo "L'opzione \"${args[$i]}\" richiede un parametro (usa \"-h\" per l'aiuto)."
exit 1
else
((i++))
SISTERSFP="${args[$i]}"
fi
;;
"-i" | "--interactive" )
INTERACTIVE=1
;;
"-h" | "--help" )
echo "$HELP"
exit 0
;;
*)
echo "\"${args[$i]}\": opzione sconosciuta (usa \"-h\" per l'aiuto)."
exit 1
;;
esac
else
echo "\"${args[$i]}\": opzione sconosciuta (usa \"-h\" per l'aiuto)."
exit 1
fi
((i++))
done
[ ! -e "$MASTENVFP" ] && echo "\"$MASTENVFP\" non esiste, muoio (usa \"-h\" per l'aiuto)." && exit 1
[ ! -f "$MASTENVFP" ] && echo "\"$MASTENVFP\" non è un file, muoio (usa \"-h\" per l'aiuto)." && exit 1
[ ! -r "$MASTENVFP" ] && echo "\"$MASTENVFP\" non è leggibile, muoio (usa \"-h\" per l'aiuto)." && exit 1
[ ! -e "$SISTERSFP" ] && echo "\"$SISTERSFP\" non esiste, muoio (usa \"-h\" per l'aiuto)." && exit 1
[ ! -f "$SISTERSFP" ] && echo "\"$SISTERSFP\" non è un file, muoio (usa \"-h\" per l'aiuto)." && exit 1
[ ! -r "$SISTERSFP" ] && echo "\"$SISTERSFP\" non è leggibile, muoio (usa \"-h\" per l'aiuto)." && exit 1
DB_HOST=`grep 'DB_HOST' "$MASTENVFP"|sed -e 's/[^=]*=//'`
DB_PORT=`grep 'DB_PORT' "$MASTENVFP"|sed -e 's/[^=]*=//'`
DB_NAME=`grep 'DB_NAME' "$MASTENVFP"|sed -e 's/[^=]*=//'`
DB_USER=`grep 'DB_USER' "$MASTENVFP"|sed -e 's/[^=]*=//'`
DB_PASS=`grep 'DB_PASS' "$MASTENVFP"|sed -e 's/[^=]*=//'`
IFS=$'\n'
for sisdom in $(grep -P '^[^#]+[^\s]+' "$SISTERSFP"); do
blocks="$(curl -s "https://$sisdom/domain_blocks.txt" | grep -P '^[^#]+[^\s]+')"
# blocks=$(cat "$sisdom" | grep -P '^[^#]+[^\s]+')
for line in $blocks; do
echo "$allblocks"|grep -F "$line" &>/dev/null
if [ $? -ne 0 ]; then
dom=$(echo "$line" | sed -e 's/\t.*//' -e 's/\./\\./g')
echo "$allblocks" | grep -P "^$dom\t" &>/dev/null
[ $? -ne 0 ] && allblocks+="$line$IFS"
fi
done
done
allblocks=$(echo "$allblocks" | head -n -1 | sort)
blocks=$(PGPASSWORD="$DB_PASS" psql -h "$DB_HOST" -p "$DB_PORT" -d "$DB_NAME" -U "$DB_USER" -c 'SELECT domain, updated_at, severity, public_comment FROM domain_blocks' -A -t -F $'\t')
i=0
for line in $allblocks; do
dom=$(echo "$line" | sed -e 's/\t.*//' -e 's/\./\\./g')
echo "$blocks" | grep -P "^$dom\t" &>/dev/null
[ $? -ne 0 ] && newblocks+="$line$IFS" && ((i++))
done
newblocks=$(echo "$newblocks" | head -n -1 | sort)
[ $i -eq 0 ] && echo "Non ho trovato nessuna nuova istanza bloccata." && exit 0
echo "Ho trovato $i istanza/e bloccata da aggiungere."
if [ $INTERACTIVE -eq 1 ]; then
for line in $newblocks; do
echo "$line"
ask=1
while [ $ask -eq 1 ]; do
read -p "Vuoi aggiungere questa istanza alla tabella delle istanze bloccate? [S/n] " inp
echo "$inp" | grep -P '^[sSnN]{0,1}$' &>/dev/null
[ $? -eq 0 ] && ask=0
done
if [ "$inp" == "" ] || [ "$inp" == "s" ] || [ "$inp" == "S" ]; then
buf+="$line$IFS"
fi
done
newblocks=$(echo "$buf" | head -n -1)
fi
echo "$newblocks" | PGPASSWORD="$DB_PASS" psql -h "$DB_HOST" -p "$DB_PORT" -d "$DB_NAME" -U "$DB_USER" -A -t -c "COPY domain_blocks ( domain, created_at, updated_at, severity, reject_media, reject_reports, public_comment ) FROM STDIN WITH ( FORMAT text, DELIMITER ' ' )"

View file

@ -1,237 +0,0 @@
#!/bin/bash
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
MASTHOME='/var/lib/mastodon'
MASTENVFP="$MASTHOME/live/.env.production"
SISTERSFP="istanzesorelle"
LOCAL=0
INTERACTIVE=0
HELP="SINTASSI
mastblocksmerge.sh [opzioni]
DESCRIZIONE
Questo script integra i dati di una o più blocklist esterne nella
tabella domain_blocks di mastodon.
Legge i domini delle istanze di cui recuperare la blocklist da un file
di inizializzazione, per default \"$SISTERSP\" (formato del file:
un dominio per riga), prova a recuperare ciascuna blocklist da
https://[dominio]/domain_blocks.txt, costruisce dalle liste recuperate
un\'unica lista senza duplicati, si collega al db di mastodon e scrive
nella tabella domain_blocks i dati relativi alle istanze bloccate che
non sono già presenti nella tabella stessa.
Per la connessione al db di mastodon legge i dati necessari dal file
di configurazione di mastodon, per default
\"$MASTENVFP\"
È pensato per essere eseguito periodicamente da un cron job, come
utente mastodon oppure root oppure altro utente che abbia accesso in
lettura al file di configurazione di mastodon.
OPZIONI
-H, --home
Definisce la home di mastodon (per default \"$MASTHOME\")
e di conseguenza il percorso del suo file di configurazione
(per default \"$MASTENVFP\").
È comunque possibile specificare individualmente il percorso
del file di configurazione di mastodon con l\'opzione che segue.
-e, --envfp
Definisce il percorso del file di configurazione di mastodon in uso.
-s, --sistersfp
Definisce il percorso del file di inizializzazione da cui leggere
la lista dei domini delle istanze sorelle.
-l, --local
Interpreta il file di inizializzazione come lista di file locali
contenenti blacklist (formato: un file per riga).
-i, --interactive
Modalità interattiva: se vengono nelle blocklist vengono trovate
istanze ancora non presenti nel database di mastodon, viene chiesto
per ciascuna se aggiungerla o meno.
-h, --help
Mostra questo aiuto ed esce."
args=("$@")
i=0
while [ $i -lt ${#args[@]} ]; do
if [ "${args[$i]:0:1}" == "-" ]; then
case "${args[$i]}" in
"-H" | "--home" )
if [ -z "${args[$i+1]}" ]; then
echo "L'opzione \"${args[$i]}\" richiede un parametro (usa \"-h\" per l'aiuto)."
exit 1
else
((i++))
MASTHOME=$(echo "${args[$i]}" | sed -e 's/\/$//')
MASTENVFP="$MASTHOME/live/.env.production"
fi
;;
"-e" | "--envfp" )
if [ -z "${args[$i+1]}" ]; then
echo "L'opzione \"${args[$i]}\" richiede un parametro (usa \"-h\" per l'aiuto)."
exit 1
else
((i++))
MASTENVFP="${args[$i]}"
fi
;;
"-s" | "--sistersfp" )
if [ -z "${args[$i+1]}" ]; then
echo "L'opzione \"${args[$i]}\" richiede un parametro (usa \"-h\" per l'aiuto)."
exit 1
else
((i++))
SISTERSFP="${args[$i]}"
fi
;;
"-l" | "--local" )
LOCAL=1
;;
"-i" | "--interactive" )
INTERACTIVE=1
;;
"-h" | "--help" )
echo "$HELP"
exit 0
;;
*)
echo "\"${args[$i]}\": opzione sconosciuta (usa \"-h\" per l'aiuto)."
exit 1
;;
esac
else
echo "\"${args[$i]}\": opzione sconosciuta (usa \"-h\" per l'aiuto)."
exit 1
fi
((i++))
done
[ ! -e "$MASTENVFP" ] && echo "\"$MASTENVFP\" non esiste, muoio (usa \"-h\" per l'aiuto)." && exit 1
[ ! -f "$MASTENVFP" ] && echo "\"$MASTENVFP\" non è un file, muoio (usa \"-h\" per l'aiuto)." && exit 1
[ ! -r "$MASTENVFP" ] && echo "\"$MASTENVFP\" non è leggibile, muoio (usa \"-h\" per l'aiuto)." && exit 1
[ ! -e "$SISTERSFP" ] && echo "\"$SISTERSFP\" non esiste, muoio (usa \"-h\" per l'aiuto)." && exit 1
[ ! -f "$SISTERSFP" ] && echo "\"$SISTERSFP\" non è un file, muoio (usa \"-h\" per l'aiuto)." && exit 1
[ ! -r "$SISTERSFP" ] && echo "\"$SISTERSFP\" non è leggibile, muoio (usa \"-h\" per l'aiuto)." && exit 1
DB_HOST=`grep 'DB_HOST' "$MASTENVFP"|sed -e 's/[^=]*=//'`
DB_PORT=`grep 'DB_PORT' "$MASTENVFP"|sed -e 's/[^=]*=//'`
DB_NAME=`grep 'DB_NAME' "$MASTENVFP"|sed -e 's/[^=]*=//'`
DB_USER=`grep 'DB_USER' "$MASTENVFP"|sed -e 's/[^=]*=//'`
DB_PASS=`grep 'DB_PASS' "$MASTENVFP"|sed -e 's/[^=]*=//'`
IFS=$'\n'
function decode {
#dominio
record[0]=$(echo "$1" | sed -e 's/\t.*//')
#data creazione
record[1]=$(echo "$1" | sed -e 's/^[^\t]*\t\([^\t]*\).*/\1/')
#data ultima modifica
record[2]=$(echo "$1" | sed -e 's/^[^\t]*\t[^\t]*\t\([^\t]*\).*/\1/')
#tipo di blocco
record[3]=$(echo "$1" | sed -e 's/^[^\t]*\t[^\t]*\t[^\t]*\t\([^\t]*\).*/\1/')
#rifiuto media
record[4]=$(echo "$1" | sed -e 's/^[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*\t\([^\t]*\).*/\1/')
#rifiuto reports
record[5]=$(echo "$1" | sed -e 's/^[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*\t\([^\t]*\).*/\1/')
#commento pubblico
record[6]=$(echo "$1" | sed -e 's/^[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*\t\([^\t]*\).*/\1/')
if [ "${record[4]}" == "f" ]; then
record[4]="No"
elif [ "${record[4]}" == "t" ]; then
record[4]="Si"
fi
if [ "${record[5]}" == "f" ]; then
record[5]="No"
elif [ "${record[5]}" == "t" ]; then
record[5]="Si"
fi
if [ "${record[3]}" == "0" ]; then
record[3]="Silenziata"
elif [ "${record[3]}" == "1" ]; then
record[3]="Sospesa"
elif [ "${record[3]}" == "2" ]; then
record[3]="Nessuno"
fi
}
for sisdom in $(grep -P '^[^#]+[^\s]+' "$SISTERSFP"); do
if [ $LOCAL -eq 0 ]; then
blocks+="$(curl --connect-timeout 3 -s "https://$sisdom/domain_blocks.txt" | grep -P '^[^#]+[^\s]+')$IFS"
else
blocks+="$(cat "$sisdom" | grep -P '^[^#]+[^\s]+')$IFS"
fi
done
blocks=$(echo "$blocks" | head -n -1 | sort -u)
echo "$blocks"
echo "~~~~~~~~~~~~~~~~~~~~"
okblocks=''
for line in $blocks; do
dom=$(echo "$line" | sed -e 's/\t.*//' -e 's/\./\\./g')
echo "$okblocks" | grep -P "^$dom\t"
if [ $? -ne 0 ]; then
entries=$(echo "$blocks" | grep -P "^$dom\t")
howmany=$(echo "$entries" | wc -l)
if [ $howmany -gt 1 ]; then
if [ $INTERACTIVE -eq 1 ]; then
i=0
for entry in $entries; do
((i++))
echo "$i: $entry"
done
read
else
# qui ci vorrebbe codice "intelligente" che sceglie la entry più recente, ma per ora così
okblocks+="$line$IFS"
fi
fi
fi
done
okblocks=$(echo "$okblocks" | head -n -1 | sort)
echo "$okblocks"
echo "~~~~~~~~~~~~~~~~~~~~"
exit
blocks=$(PGPASSWORD="$DB_PASS" psql -h "$DB_HOST" -p "$DB_PORT" -d "$DB_NAME" -U "$DB_USER" -c 'SELECT domain, updated_at, severity, public_comment FROM domain_blocks' -A -t -F $'\t')
i=0
for line in $allblocks; do
dom=$(echo "$line" | sed -e 's/\t.*//' -e 's/\./\\./g')
echo "$blocks" | grep -P "^$dom\t" &>/dev/null
[ $? -ne 0 ] && newblocks+="$line$IFS" && ((i++))
done
newblocks=$(echo "$newblocks" | head -n -1 | sort)
[ $i -eq 0 ] && echo "Non ho trovato nessuna nuova istanza bloccata." && exit 0
echo "Ho trovato $i istanza/e bloccata da aggiungere."
if [ $INTERACTIVE -eq 1 ]; then
for line in $newblocks; do
decode "$line"
echo "Dominio: ${record[0]}; Data creaz.: ${record[1]}; Data ult. mod.: ${record[2]}; Tipo blocco: ${record[3]}; Rifiuto media: ${record[4]}; Rifiuto reports: ${record[5]}; Commento pub.: ${record[6]}"
ask=1
while [ $ask -eq 1 ]; do
read -p "Vuoi aggiungere questa istanza alla tabella delle istanze bloccate? [S/n] " inp
echo "$inp" | grep -P '^[sSnN]{0,1}$' &>/dev/null
[ $? -eq 0 ] && ask=0
done
if [ "$inp" == "" ] || [ "$inp" == "s" ] || [ "$inp" == "S" ]; then
buf+="$line$IFS"
fi
done
newblocks=$(echo "$buf" | head -n -1)
fi
echo "$newblocks" | PGPASSWORD="$DB_PASS" psql -h "$DB_HOST" -p "$DB_PORT" -d "$DB_NAME" -U "$DB_USER" -A -t -c "COPY domain_blocks ( domain, created_at, updated_at, severity, reject_media, reject_reports, public_comment ) FROM STDIN WITH ( FORMAT text, DELIMITER ' ' )"

View file

@ -1,38 +0,0 @@
<?php
define('N',"\n");
$conffp='../.env.production';
$conf=array(
'DB_HOST'=>null,
'DB_PORT'=>null,
'DB_NAME'=>null,
'DB_USER'=>null,
'DB_PASS'=>null
);
$confa=file($conffp,FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES);
foreach ($confa as $line) {
if (preg_match('/^([A-Z_]+)=(.*)$/',$line,$buf)===1 && array_key_exists($buf[1],$conf))
$conf[$buf[1]]=$buf[2];
}
$dbconn=pg_connect('host='.$conf['DB_HOST'].' port='.$conf['DB_PORT'].' dbname='.$conf['DB_NAME'].' user='.$conf['DB_USER'].' password='.$conf['DB_PASS'])
or die('Connessione fallita: '.pg_last_error());
$res=pg_query('SELECT domain, created_at, updated_at, severity, reject_media, reject_reports, public_comment FROM domain_blocks')
or die('Query fallita: '.pg_last_error());
while ($row=pg_fetch_assoc($res))
$domblocks[]=$row;
pg_free_result($res);
pg_close($dbconn);
echo(json_encode($domblocks));
exit(0);
?>