pezcurrel 4 years ago
parent
commit
1ae0e3c71b

+ 1 - 1
.gitignore

@@ -10,9 +10,9 @@ web/mustard/crawler/peers
 web/mustard/crawler/zzz-materiali/
 web/mustard/zzz-estemp/
 web/mustard/zzz-materiali/mastostart_struttura_e_dati_pro_altervista.sql.gz
+web/mustard/zzz-materiali/mastostart_struttura_e_dati_test.sql.gz
 web/mustard/zzz-materiali/.htaccess
 web/mustard/zzz-materiali/geonames/
-web/mustard/zzz-materiali/icona.svg
 web/mustard/zzz-materiali/locales.json
 web/mustard/zzz-materiali/simplemaps_worldcities_basicv1.6.zip
 web/mustard/zzz-materiali/snippettoni.php

+ 22 - 7
web/INSTALL

@@ -1,7 +1,22 @@
-- Se hai installato mastostart nella DocumentRoot di apache passa al punto
-  successivo; se invece l'hai installato in una sottodirectory della
-  DocumentRoot (per esempio «[DocumentRoot]/mastostart») imposta al percorso
-  della sottodirectory la variabile «instpath» in «mastostart.ini»
-  (per esempio «instpath="/mastostart"») e la direttiva «RewriteBase»
-  in «.htaccess» (per esempio «RewriteBase "/mastostart")
-- ...
+- Le istruzioni in questo paragrafo riguardano un'installazione sotto
+  apache; sotto nginx o altri webserver dovrebbe trattarsi di adeguarle.
+  Se hai installato mastostart nella DocumentRoot di apache o di un
+  virtualhost definito in apache bona lè, sei già a posto; se invece l'hai
+  installato in una sottodirectory della DocumentRoot (per esempio
+  «[DocumentRoot]/mastostart») imposta al percorso della sottodirectory
+  la variabile «instpath» in «mastostart.ini» (per esempio
+  «instpath="/mastostart"») e la direttiva «RewriteBase» in «.htaccess»
+  (per esempio «RewriteBase "/mastostart").
+
+- Per quanto riguarda l'installazione di Mustard, importa in mariadb o mysql
+  il dump sql «mastostart_struttura_e_dati_pro_installazione.sql.gz»
+  che trovi nella directory «mustard/zzz-materiali/».
+  Edita il file di configurazione commentato «mustard/sec/mustard.ini».
+  Crea un “superadmin” per poter entrare in mustard lanciando
+  «php addsuperadmin.php» dalla directory «mustard/tools/».
+
+- 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».

+ 4 - 0
web/mustard/crawler/crawl.sh

@@ -0,0 +1,4 @@
+#!/bin/sh
+BASEDIR=$(dirname $0)
+cd "$BASEDIR"
+php peerscrawl.php && php crawler.php

+ 1 - 1
web/mustard/crawler/crawler.php

@@ -138,7 +138,7 @@ if ($opts['log']) {
 	}
 }
 
-$inifp=__DIR__.'/../sec/mastostartadmin.ini';
+$inifp=__DIR__.'/../sec/mustard.ini';
 $iniarr=@parse_ini_file($inifp)
 	or mexit('Impossibile aprire il file di configurazione «'.$inifp.'»'.N,1);
 $link=@mysqli_connect($iniarr['db_host'],$iniarr['db_admin_name'],$iniarr['db_admin_password'],$iniarr['db_name'],$iniarr['db_port'],$iniarr['db_socket'])

+ 4 - 3
web/mustard/dafa.txt

@@ -4,14 +4,15 @@
 * fatto
 # in corso
 
+- crawler.php: possibilità di passargli le opzioni da riga di comando
 * viewinst.php
 - pagina gestione accounts
 - pagina gestione proprio account
 - pagina gestione blacklist
 - pagina reset password
-- una pagina che rilevi eventuali inconsistenze nel db, tra le quali: mail account guest diversa da mail di contatto istanza ()
-# implementare la faccenda dell'invio di mail preformattate agli admin con invito a editare i propri dati (quindi implementare "livelli di admin" e relative restrizioni: admin invitat* può vedere solo la pagina relativa alla propria istanza, solo aggiungere valori (non in tutti i casi), editare ed eliminare solo valori che ha aggiunto e solo se non sono già stati linkati da altr*)
-- dispinst.php, invite.php: possibilità di reinvitare admin già invitat*
+- una pagina che rilevi eventuali inconsistenze nel db, tra le quali: mail account guest diversa da mail di contatto istanza (mail contatto d'istanza può cambiare nel tempo)
+* implementare la faccenda dell'invio di mail preformattate agli admin con invito a editare i propri dati (quindi implementare "livelli di admin" e relative restrizioni: admin invitat* può vedere solo la pagina relativa alla propria istanza, solo aggiungere valori (non in tutti i casi), editare ed eliminare solo valori che ha aggiunto e solo se non sono già stati linkati da altr*)
+* dispinst.php, invite.php: possibilità di "sollecitare" admin già invitat*
 ? edinstres.php deve mostrare messaggio di successo
 * edinst.php: un'icona per deselezionare Locality
 * nei vari helper, sarebbe meglio morisse in json, alla bisogna

+ 4 - 4
web/mustard/include/dispinst.php

@@ -87,11 +87,11 @@ function dispinst(&$row,&$cols,&$link,&$dlang,&$account,$showcount,$finst,$cinst
 	$out.='<tr><td colspan="2"><input type="button" value="Edita" class="btbut" onclick="document.location.href=\'edinst.php?id='.$row['IID'].'\'"></td></tr>'.N;
 	if ($account['Level']!='guest') {
 		if (!is_null($row['GuestID'])) {
-			$out.='<tr><td colspan="2"><input type="button" value="Admin già invitate" class="btbut" disabled></td></tr>'.N;
+			$out.='<tr><td colspan="2"><input type="button" value="Sollecita, stimola, incalza, incita admin già invitat*" class="btbut" onclick="document.location.href=\'invite.php?id='.$row['IID'].'\'"></td></tr>'.N;
 		} elseif (trim($row['Email'])=='') {
-			$out.='<tr><td colspan="2"><input type="button" value="Impossibile invitare: l’indirizzo e-mail non è definito" class="btbut" disabled></td></tr>'.N;
+			$out.='<tr><td colspan="2"><input type="button" value="Impossibile invitare admin: indirizzo e-mail non definito" class="btbut" disabled></td></tr>'.N;
 		} else {
-			$out.='<tr><td colspan="2"><input type="button" value="Invita le admin" class="btbut" onclick="document.location.href=\'invite.php?id='.$row['IID'].'\'"></td></tr>'.N;
+			$out.='<tr><td colspan="2"><input type="button" value="Invita admin" class="btbut" onclick="document.location.href=\'invite.php?id='.$row['IID'].'\'"></td></tr>'.N;
 		}
 	}
 	$attr=booly(trimname($cols['Instances.Blacklisted']['name']).': ',$row['Blacklisted'],false,true).N;
@@ -99,7 +99,7 @@ function dispinst(&$row,&$cols,&$link,&$dlang,&$account,$showcount,$finst,$cinst
 	$attr.=booly(trimname($cols['Instances.Good']['name']).': ',$row['Good']).N;
 	$attr.=booly(trimname($cols['Instances.Chosen']['name']).': ',$row['Chosen']).N;
 	$attr.=booly(trimname($cols['Instances.Visible']['name']).': ',$row['Visible']).N;
-/*		$attr.=booly($cols['Instances.RegOpen']['name'].': ',$row['RegOpen']).N;
+	/*$attr.=booly($cols['Instances.RegOpen']['name'].': ',$row['RegOpen']).N;
 	$attr.=booly($cols['Instances.RegReqApproval']['name'].': ',$row['RegReqApproval'],true,true).N;*/
 	$sres=mysqli_query($link,'SELECT * FROM InstChecks WHERE InstID='.$row['IID'].' ORDER BY Time DESC')
 		or muoribene(mysqli_error($link),true);

+ 3 - 1
web/mustard/include/getadmacc.php

@@ -4,6 +4,8 @@ $res=mysqli_query($link,'SELECT * FROM Admins WHERE ID='.$_SESSION['AdmID'])
 	or muoribene(mysqli_error($link),true);
 if (mysqli_num_rows($res)==1) {
 	$account=mysqli_fetch_assoc($res);
+	if ($account['Enabled']==0)
+		muoribene('Your account has been disabled.',true);
 	if ($account['Level']=='guest') {
 		$res=mysqli_query($link,'SELECT ID FROM Instances WHERE GuestID='.$account['ID'])
 			or muoribene(mysqli_error($link),true);
@@ -12,7 +14,7 @@ if (mysqli_num_rows($res)==1) {
 			$account['Insts'][]=$row['ID'];
 	}
 } else {
-	muoribene('Non esiste un account con ID='.$_SESSION['AdmID'],true);
+	muoribene('There’s no account with ID='.$_SESSION['AdmID'].'.',true);
 }
 
 ?>

+ 2 - 2
web/mustard/include/getiniarr.php

@@ -3,10 +3,10 @@
 require(__DIR__.'/ckkeys.php');
 
 function getiniarr() {
-	$inifp='sec/mastostartadmin.ini';
+	$inifp='sec/mustard.ini';
 	$iniarr=parse_ini_file($inifp)
 		or muoribene('Couldn’t open configuration file «'.$inifp.'».',false);
-	$missing=ckkeys(array('db_host','db_port','db_socket','db_name','db_admin_name','db_admin_password','ref_name','ref_email'),$iniarr);
+	$missing=ckkeys(array('db_host','db_port','db_socket','db_name','db_admin_name','db_admin_password','ref_name','ref_email','site_domain','mail_test_address'),$iniarr);
 	if (count($missing)>0)
 		muoribene('Configuration file «'.$inifp.'» is missing some required fields: “'.implode('”, “',$missing).'”.',false);
 	return($iniarr);

+ 1 - 1
web/mustard/include/sessionstart.php

@@ -1,6 +1,6 @@
 <?php
 
-session_name('mastostartadmin');
+session_name('mustard');
 session_start();
 if (!array_key_exists('AdmID',$_SESSION) || preg_match('/^[0-9]+$/',$_SESSION['AdmID'])!==1) {
 	$_SESSION=array();

+ 66 - 46
web/mustard/invite.php

@@ -24,6 +24,11 @@ function hspech($str) {
 
 require('include/randstr.php');
 
+function parsetempline($line,$substarr) {
+	$patterns=array('/%guestinsturi/','/%guestname/','/%guestemail/','/%guestpassword/','/%ourdomain/');
+	return(preg_replace($patterns,$substarr,$line));
+}
+
 if (array_key_exists('id',$_GET) && preg_match('/^[0-9]+$/',$_GET['id'])===1) {
 	$_GET['id']+=0;
 	$res=mysqli_query($link,'SELECT * FROM Instances WHERE ID='.$_GET['id'])
@@ -33,15 +38,32 @@ if (array_key_exists('id',$_GET) && preg_match('/^[0-9]+$/',$_GET['id'])===1) {
 	$inst=mysqli_fetch_assoc($res);
 	if (trim($inst['Email'])=='')
 		muoribene('Nessun indirizzo email è definito per questa istanza.',true);
-	$res=mysqli_query($link,'SELECT * FROM Admins WHERE Email=\''.myesc($link,$inst['Email']).'\'')
-		or muoribene(__LINE__.': '.mysqli_error($link),true);
-	(mysqli_num_rows($res)==0) ? $mode='create' : $mode='update';
+	$createacc='false';
+	if (!is_null($inst['GuestID'])) {
+		$res=mysqli_query($link,'SELECT * FROM Admins WHERE ID='.$inst['GuestID'])
+			or muoribene(__LINE__.': '.mysqli_error($link),true);
+		if (mysqli_num_rows($res)==0)
+			muoribene('Non esiste alcun account con ID='.$inst['GuestID'].'.',true);
+		$templfp='mailtemplates/reminder';
+	} else {
+		$res=mysqli_query($link,'SELECT * FROM Admins WHERE Email=\''.myesc($link,$inst['Email']).'\'')
+			or muoribene(__LINE__.': '.mysqli_error($link),true);
+		if (mysqli_num_rows($res)==0) {
+			$templfp='mailtemplates/first_invitation';
+			$createacc='true';
+		} else {
+			$templfp='mailtemplates/more_instances';
+		}
+	}
+	$templ=file($templfp,FILE_IGNORE_NEW_LINES);
+	if ($templ===false)
+		muoribene('Impossibile aprire «'.$templfp.'».',true);
+
 	$out='<form action="invite.php" method="post" id="f" onsubmit="return send();">'.N;
 	$out.='<table class="bigtab">'.N;
 	$out.='<tbody>'.N;
 	$out.='<tr><td class="insthead">Email di invito</td></tr>'.N;
 	$out.='<tr><td>'.N;
-	$out.='<div class="mailheader"><strong>Mittente:</strong> '.hspech($iniarr['ref_name']).' '.hspech('<'.$iniarr['ref_email'].'>').'</div>'.N;
 	if (trim($inst['AdmDisplayName'])!='')
 		$admname=$inst['AdmDisplayName'];
 	elseif (trim($inst['AdmAccount'])!='')
@@ -50,69 +72,67 @@ if (array_key_exists('id',$_GET) && preg_match('/^[0-9]+$/',$_GET['id'])===1) {
 		$admname='';
 	$haddress=$inst['Email'];
 	if ($admname!='') $haddress=$admname.' <'.$haddress.'>';
-	$out.='<div class="mailheader"><strong>Destinatario:</strong> '.hspech($haddress).'</div>'.N;
-	$out.='<div class="mailheader"><strong>Oggetto:</strong> <input type="text" id="subject" name="subject" class="mailsubj" value="'.hspech($inst['URI']).' in our search engine"></div>'.N;
 	$madmname='';
 	if ($admname!='') $madmname=' '.$admname;
+	if ($admname=='') $admname='Unknown';
 	$password=randstr(16);
 	define('RN',"\r\n");
-	if ($mode=='create')
-		$message='Hello'.hspech($madmname).','.RN.'we are a little group of italian people who are trying to create a search engine for Mastodon instances.'.RN.'We’d like you to ....'.RN.RN.'Your login data:'.RN.RN.'Username: '.$inst['Email'].RN.'Password: '.hspech($password).RN.RN.'Kind regards'.RN;
-	else
-		$message='Hello'.hspech($madmname).','.RN.'we already contacted you ...';
-	$out.='<textarea id="message" name="message" rows="20" class="mailmsg">'.$message.'</textarea>'.N;
-	$out.='<input type="button" value="Crea l’account e invia la mail di invito" class="mailbut" onclick="send();">'.N;
+	//('/%guestinsturi/','/%guestname/','/%guestemail/','/%guestpassword/','/%ourdomain/')
+	$subj=parsetempline($templ[0],array($inst['URI'],$madmname,$inst['Email'],$password,$iniarr['site_domain']));
+	$message='';
+	for ($i=2; $i<count($templ); $i++)
+		$message.=parsetempline($templ[$i],array($inst['URI'],$madmname,$inst['Email'],$password,$iniarr['site_domain'])).RN;
+
+	$out.='<div class="mailheader"><strong>Mittente:</strong> '.hspech($iniarr['ref_name']).' '.hspech('<'.$iniarr['ref_email'].'>').'</div>'.N;
+	$out.='<div class="mailheader"><strong>Destinatario:</strong> '.hspech($haddress).'</div>'.N;
+	$out.='<div class="mailheader"><strong>Oggetto:</strong> <input type="text" id="subject" name="subject" class="mailsubj" value="'.hspech($subj).'"></div>'.N;
+	$out.='<textarea id="message" name="message" rows="20" class="mailmsg">'.hspech($message).'</textarea>'.N;
+	$out.='<input type="button" value="Invia" class="mailbut" onclick="send();">'.N;
 	$out.='<input type="hidden" name="id" value="'.$inst['ID'].'">'.N;
+	$out.='<input type="hidden" name="insturi" value="'.hspech($inst['URI']).'">'.N;
 	$out.='<input type="hidden" name="password" value="'.hspech($password).'">'.N;
-	//$out.='<input type="hidden" name="mode" value="'.$mode.'">'.N;
+	$out.='<input type="hidden" name="to" value="'.hspech($haddress).'">'.N;
+	$out.='<input type="hidden" name="guestname" value="'.hspech($admname).'">'.N;
+	$out.='<input type="hidden" name="guestaddr" value="'.hspech($inst['Email']).'">'.N;
+	$out.='<input type="hidden" name="createacc" value="'.$createacc.'">'.N;
 	$out.='</td></tr>'.N;
 	$out.='</tbody>'.N;
 	$out.='</table>'.N;
 	$out.='</form>'.N;
-} elseif (array_key_exists('id',$_POST) && preg_match('/^[0-9]+$/',$_POST['id'])===1 && array_key_exists('subject',$_POST) && trim($_POST['subject'])!='' && array_key_exists('message',$_POST) && trim($_POST['message'])!='' && array_key_exists('password',$_POST) && trim($_POST['password'])!='') {
+	$insturi=$inst['URI'];
+} elseif (array_key_exists('id',$_POST) && preg_match('/^[0-9]+$/',$_POST['id'])===1 && array_key_exists('insturi',$_POST) && trim($_POST['insturi'])!='' && array_key_exists('subject',$_POST) && trim($_POST['subject'])!='' && array_key_exists('to',$_POST) && trim($_POST['to'])!='' && array_key_exists('message',$_POST) && trim($_POST['message'])!='' && array_key_exists('password',$_POST) && trim($_POST['password'])!='' && array_key_exists('guestaddr',$_POST) && trim($_POST['guestaddr'])!='' && array_key_exists('createacc',$_POST) && preg_match('/^true|false$/',$_POST['createacc'])===1) {
 	$_POST['id']+=0;
-	//echo('<pre>'.print_r($_POST,1).'</pre>'.N);
-	$res=mysqli_query($link,'SELECT * FROM Instances WHERE ID='.$_POST['id'])
-		or muoribene(__LINE__.': '.mysqli_error($link),true);
-	if (mysqli_num_rows($res)!=1)
-		muoribene('Non esiste alcuna istanza con ID='.$_GET['id'],true);
-	$inst=mysqli_fetch_assoc($res);
-	if (trim($inst['AdmDisplayName'])!='') {
-		$admname=$inst['AdmDisplayName'];
-		$to=$inst['AdmDisplayName'];
-	} elseif (trim($inst['AdmAccount'])!='') {
-		$admname=$inst['AdmAccount'];
-		$to=$inst['AdmAccount'];
-	} else {
-		$admname='Unknown';
-		$to='';
-	}
-	if (trim($inst['Email'])!='')
-		if ($to=='')
-			$to=$inst['Email'];
-		else
-			$to.=' <'.$inst['Email'].'>';
-	else
-		muoribene('Nessun indirizzo email è definito per questa istanza.',true);
-	$to='pezcurrel@tiscali.it';
 	$from=$iniarr['ref_name'].' <'.$iniarr['ref_email'].'>';
+	$to=$_POST['to'];
+	$dbchange=true;
+	//questo per far provette d'invio mail senza toccare il db
+	if ($iniarr['mail_test_address']==false || trim($iniarr['mail_test_address'])=='') {
+		$to=$iniarr['mail_test_address'];
+		$dbchange=false;
+	}
 	$mail=mail($to,'=?utf-8?B?'.base64_encode($_POST['subject']).'?=',wordwrap($_POST['message'],76,"\r\n",false),array('From'=>$from,'Content-Type'=>'text/plain; charset=UTF-8','Content-Transfer-Encoding'=>'8bit'));
 	if (!$mail)	{
-		$out='Non è stato possibile inviare l’email.<br>Puoi <a href="invite.php?id='.$inst['ID'].'">riprovare</a>.';
-	} else {
-		$res=mysqli_query($link,'SELECT * FROM Admins WHERE Email=\''.myesc($link,$inst['Email']).'\'')
-			or muoribene(__LINE__.': '.mysqli_error($link),true);
-		if (mysqli_num_rows($res)==0) {
-			mysqli_query($link,'INSERT INTO Admins (ID, Username, Email, Password, Level, Page, MaxLocalities, MaxLanguages, MaxFinancing, MaxPolicies, MaxTags) VALUES (NULL, \''.myesc($link,$admname).'\', \''.myesc($link,$inst['Email']).'\', \''.myesc($link,password_hash($_POST['password'],PASSWORD_DEFAULT)).'\', \'guest\', \'0\', \'1\', \'0\', \'3\', \'3\', \'3\')')
+		$out='Errori nell’invio della mail.<br>Puoi <a href="invite.php?id='.$_POST['id'].'">riprovare</a>.';
+	} elseif ($dbchange) {
+		if ($_POST['createacc']=='true') {
+			mysqli_query($link,'INSERT INTO Admins (ID, Username, Email, Password, Level, Page, MaxLocalities, MaxLanguages, MaxFinancing, MaxPolicies, MaxTags, Enabled) VALUES (NULL, \''.myesc($link,$_POST['guestname']).'\', \''.myesc($link,$_POST['guestaddr']).'\', \''.myesc($link,password_hash($_POST['password'],PASSWORD_DEFAULT)).'\', \'guest\', \'0\', \'1\', \'0\', \'3\', \'3\', \'3\', \'1\')')
 				or muoribene(__LINE__.': '.mysqli_error($link),true);
 			$accid=mysqli_insert_id($link);
 		} else {
+			$res=mysqli_query($link,'SELECT * FROM Admins WHERE Email=\''.myesc($link,$_POST['guestaddr']).'\'')
+				or muoribene(__LINE__.': '.mysqli_error($link),true);
+			if (mysqli_num_rows($res)==0)
+				muoribene(__LINE__.': Non esiste alcun account con Email=“'.$_POST['guestaddr'].'”.',true);
 			$row=mysqli_fetch_assoc($res);
 			$accid=$row['ID'];
 		}
 		mysqli_query($link,'UPDATE Instances SET GuestID='.$accid.' WHERE ID='.$_POST['id'])
 			or muoribene(__LINE__.': '.mysqli_error($link),true);
+		$out='TUTT’OCCHEI!';
+	} else {
+		$out='La mail è stata inviata correttamente all’indirizzo di test definito nella configurazione, «'.$to.'».<br>Nessuna modifica è stata apportata al database.';
 	}
+	$insturi=$_POST['insturi'];
 } else {
 	muoribene('Malformed input.',true);
 }
@@ -123,7 +143,7 @@ mysqli_close($link);
 <!DOCTYPE HTML>
 <html lang="it">
 <head>
-<title>Mustard - Invito admin di «<?php echo(hspech($inst['URI'])); ?>»</title>
+<title>Mustard - Invito admin di «<?php echo(hspech($insturi)); ?>»</title>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <meta name="description" content="Admin pages for Mastodon Startpage">
 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
@@ -157,7 +177,7 @@ function send() {
 <ul>
 <?php echo($menuout); ?>
 </ul>
-<div class="mtit">Invito admin di «<?php echo(hspech($inst['URI'])); ?>»</div>
+<div class="mtit">Invito admin di «<?php echo(hspech($insturi)); ?>»</div>
 <div id="rightdiv">
 <img src="imgs/esci.svg" class="rlinks" title="Esci" onclick="document.location.href='logout.php';">
 </div>

+ 3 - 1
web/mustard/login.php

@@ -27,8 +27,10 @@ if (mysqli_num_rows($res)>1)
 $row=mysqli_fetch_assoc($res);
 if (mysqli_num_rows($res)<1 || !password_verify($_POST['password'],$row['Password']))
 	muoribene('Unknown email or wrong password.<br>'.$btl,false);
+if ($row['Enabled']==0)
+	muoribene('Your account is not enabled.<br>'.$btl,false);
 
-session_name('mastostartadmin');
+session_name('mustard');
 session_start();
 $_SESSION['AdmID']=$row['ID'];
 

+ 1 - 1
web/mustard/logout.php

@@ -1,6 +1,6 @@
 <?php
 
-session_name('mastostartadmin');
+session_name('mustard');
 session_start();
 $_SESSION=array();
 session_destroy();

+ 12 - 0
web/mustard/mailtemplates/first_invitation

@@ -0,0 +1,12 @@
+%guestinsturi in our search engine
+
+Hello%guestname,
+we are a little group of italian people who are trying to create a search engine for Mastodon instances.
+We’d like you to ....
+
+Your login data:
+
+Email: %guestemail
+Password: %guestpassword
+
+Kind regards

+ 7 - 0
web/mustard/mailtemplates/more_instances

@@ -0,0 +1,7 @@
+%guestinsturi in our search engine
+
+Hello%guestname,
+we just want to inform you that we added your %guestinsturi instance to the list of instances you can edit infos for from your %guestemail account at https://%ourdomain/mustard :-)
+
+Kind regards,
+the mastostart team

+ 7 - 0
web/mustard/mailtemplates/reminder

@@ -0,0 +1,7 @@
+%guestinsturi in our search engine
+
+Hello%guestname,
+we just want to remind you that your %guestemail account at https://%ourdomain/mustard is waiting for you to fill in the info about your %guestinsturi instance! :-)
+
+Kind regards,
+the mastostart team

+ 0 - 8
web/mustard/sec/mastostartadmin.ini

@@ -1,8 +0,0 @@
-db_host=localhost
-db_port=3306
-db_socket=/run/mysqld/mysqld.sock
-db_name=mastostart
-db_admin_name=MastoStartAdmin
-db_admin_password=MastoStartAdmin
-ref_name=Mastodon Startpage
-ref_email=qodobop@inventati.org

+ 24 - 0
web/mustard/sec/mustard.ini

@@ -0,0 +1,24 @@
+db_host=localhost
+db_port=3306
+db_socket=/run/mysqld/mysqld.sock
+db_name=mastostart
+db_admin_name=MastoStartAdmin
+db_admin_password=MastoStartAdmin
+;; questo qui sotto è il nome di riferimento di mastostart, al momento
+;; viene usato solo nell'invio delle mail di invito
+ref_name=Mastodon Startpage
+;; questo qui sotto è l'indirizzo email di contatto di mastostart,
+;; al momento viene usato solo nell'invio delle mail di invito
+ref_email=qodobop@inventati.org
+;; questo qui sotto è il dominio di riferimento di mastostart, al momento
+;; viene usato solo nell'invio delle mail di invito
+site_domain=mastodon.help
+;; questo qui sotto funziona così: se lasciato vuoto o impostato a "false"
+;; o a "no", le mail di invito verranno effettivamente inviate all'indirizzo
+;; di contatto dell'istanza; se impostato, le mail di invito verranno
+;; inviate invece all'indirizzo specificato qui e non verrà apportata
+;; alcuna modifica al database (niente creazione account "guest", niente
+;; associazione dell'istanza all'account creato).
+;; può essere utile impostarlo a un proprio indirizzo mail per testare
+;; che il sistema di invio posta funzioni, eventualmente.
+mail_test_address=pezcurrel@tiscali.it

+ 1 - 1
web/mustard/tools/addlang.php

@@ -26,7 +26,7 @@ define('N',"\n");
 
 use function mysqli_real_escape_string as myesc;
 
-$inifp=__DIR__.'/../sec/mastostartadmin.ini';
+$inifp=__DIR__.'/../sec/mustard.ini';
 $iniarr=@parse_ini_file($inifp)
 	or mexit('Impossibile aprire il file di configurazione «'.$inifp.'»'.N,1);
 $link=@mysqli_connect($iniarr['db_host'],$iniarr['db_admin_name'],$iniarr['db_admin_password'],$iniarr['db_name'],$iniarr['db_port'],$iniarr['db_socket'])

+ 2 - 2
web/mustard/tools/addsuperadmin.php

@@ -1,4 +1,4 @@
-#!/bin/php
+#!/usr/bin/php
 <?php
 
 define('N',"\n");
@@ -13,7 +13,7 @@ function mexit($msg,$code) {
 if ($argc!=4)
 	mexit('addsuperadmin.php <username> <email> <password>'.N,1);
 
-$iniarr=parse_ini_file('../sec/mastostartadmin.ini')
+$iniarr=parse_ini_file('../sec/mustard.ini')
 	or mexit('Impossibile aprire il file di configurazione.'.N,1);
 $link=mysqli_connect($iniarr['db_host'],$iniarr['db_admin_name'],$iniarr['db_admin_password'],$iniarr['db_name'],$iniarr['db_port'],$iniarr['db_socket'])
 	or mexit('Impossibile connettersi al database: '.mysqli_connect_error().' ['.mysqli_connect_errno().']'.N,1);

+ 1 - 1
web/mustard/tools/popudb.php

@@ -22,7 +22,7 @@ define('N',"\n");
 
 use function mysqli_real_escape_string as myesc;
 
-$inifp=__DIR__.'/../sec/mastostartadmin.ini';
+$inifp=__DIR__.'/../sec/mustard.ini';
 $iniarr=@parse_ini_file($inifp)
 	or mexit('Impossibile aprire il file di configurazione «'.$inifp.'»'.N,1);
 $link=@mysqli_connect($iniarr['db_host'],$iniarr['db_admin_name'],$iniarr['db_admin_password'],$iniarr['db_name'],$iniarr['db_port'],$iniarr['db_socket'])

+ 71 - 0
web/mustard/zzz-materiali/icona.svg

@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="512"
+   height="512"
+   viewBox="0 0 135.46666 135.46667"
+   version="1.1"
+   id="svg8"
+   inkscape:version="0.92.4 5da689c313, 2019-01-14"
+   sodipodi:docname="icona.svg">
+  <defs
+     id="defs2" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.979899"
+     inkscape:cx="217.83103"
+     inkscape:cy="232.46478"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     units="px"
+     inkscape:snap-page="true"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-nodes="true"
+     inkscape:window-width="3840"
+     inkscape:window-height="2037"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Livello 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-161.53331)">
+    <path
+       style="fill:#000000;stroke-width:0.60455555"
+       inkscape:connector-curvature="0"
+       d="m 132.58283,242.7442 c -1.99133,9.55598 -17.83516,20.01408 -36.031803,22.04088 -9.488764,1.0561 -18.831211,2.02679 -28.793355,1.60056 -16.292162,-0.69628 -29.147806,-3.62736 -29.147806,-3.62736 0,1.47941 0.09781,2.88803 0.293419,4.20541 2.11809,14.99778 15.943189,15.89623 29.039044,16.31517 13.217918,0.42185 24.987523,-3.03984 24.987523,-3.03984 l 0.543019,11.14633 c 0,0 -9.245422,4.63092 -25.715199,5.48265 -9.081891,0.46567 -20.358551,-0.21311 -33.492748,-3.45585 C 5.7790714,286.37929 0.88015717,258.05582 0.13057087,229.31707 -0.09790411,220.78436 0.042939,212.73843 0.042939,206.00917 c 0,-29.38685 20.641795,-38.0006 20.641795,-38.0006 10.408143,-4.45868 28.267551,-6.33367 46.834294,-6.47526 h 0.456167 c 18.566742,0.14151 36.437885,2.01658 46.845245,6.47526 0,0 20.64103,8.61375 20.64103,38.0006 0,0 0.25899,21.68178 -2.87864,36.73503"
+       id="path1428" />
+    <path
+       style="fill:#ffd42a;stroke-width:0.60455555"
+       inkscape:connector-curvature="0"
+       d="m 111.11398,208.28895 v 35.58258 H 96.000965 v -34.5367 c 0,-7.2803 -3.28394,-10.97554 -9.852602,-10.97554 -7.262697,0 -10.902651,4.38349 -10.902651,13.05125 V 230.3145 H 60.221901 v -18.90396 c 0,-8.66776 -3.640737,-13.05125 -10.903432,-13.05125 -6.568664,0 -9.852603,3.69524 -9.852603,10.97554 v 34.5367 H 24.352855 v -35.58258 c 0,-7.27227 1.985076,-13.05125 5.972437,-17.32675 4.111771,-4.27549 9.496588,-6.46724 16.181053,-6.46724 7.733731,0 13.590365,2.77272 17.462707,8.31888 l 3.764364,5.88627 3.765145,-5.88627 c 3.871561,-5.54616 9.728194,-8.31888 17.462708,-8.31888 6.683683,0 12.068501,2.19175 16.181051,6.46724 3.98658,4.2755 5.97166,10.05448 5.97166,17.32675"
+       id="path1430" />
+  </g>
+</svg>

BIN
web/mustard/zzz-materiali/mastostart_struttura.sql.gz


BIN
web/mustard/zzz-materiali/mastostart_struttura_e_dati.sql.gz


BIN
web/mustard/zzz-materiali/mastostart_struttura_e_dati_pro_installazione.sql.gz