...
This commit is contained in:
parent
1697d37943
commit
1ae0e3c71b
24 changed files with 237 additions and 80 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -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
|
||||
|
|
29
web/INSTALL
29
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
web/mustard/crawler/crawl.sh
Executable file
4
web/mustard/crawler/crawl.sh
Executable file
|
@ -0,0 +1,4 @@
|
|||
#!/bin/sh
|
||||
BASEDIR=$(dirname $0)
|
||||
cd "$BASEDIR"
|
||||
php peerscrawl.php && php 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,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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
|
@ -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,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();
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
session_name('mastostartadmin');
|
||||
session_name('mustard');
|
||||
session_start();
|
||||
$_SESSION=array();
|
||||
session_destroy();
|
||||
|
|
12
web/mustard/mailtemplates/first_invitation
Normal file
12
web/mustard/mailtemplates/first_invitation
Normal file
|
@ -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
web/mustard/mailtemplates/more_instances
Normal file
7
web/mustard/mailtemplates/more_instances
Normal file
|
@ -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
web/mustard/mailtemplates/reminder
Normal file
7
web/mustard/mailtemplates/reminder
Normal file
|
@ -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
|
|
@ -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
web/mustard/sec/mustard.ini
Normal file
24
web/mustard/sec/mustard.ini
Normal file
|
@ -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
|
|
@ -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'])
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
web/mustard/zzz-materiali/icona.svg
Normal file
71
web/mustard/zzz-materiali/icona.svg
Normal file
|
@ -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>
|
After Width: | Height: | Size: 3.5 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in a new issue