Initial commit

master
7u83 3 years ago
parent 99fcef3abf
commit c8dcd0338b

@ -1,3 +1,5 @@
# wmdeit_wmdepasswd
Password generation/reset tool for WP:@ mail addresses
Password generation/reset tool for WP:@ mail addresses
This works only in conjunction with nubuilder

@ -0,0 +1,14 @@
<?php
include_once("header.tpl");
?>
<p>Bitte gib deine E-Mail-Adresse ein!</p>
<p>Wir werden dir eine E-Mail senden, mit der du Zugangsdaten für
deine WP:@-Adresse anfordern kannst.</p>
<form class="emailform" method="POST">
<label for="email" name="Email" value="E-Mail">E-Mail:</label>
<input type = "email" name="email"/>
<input type = "submit" value="Senden"/>
</form>
<?php
include_once("footer.tpl");
?>

@ -0,0 +1,3 @@
<p class="imprint">© 2019ff Wikimedia Deutschland e.V. <a href="https://www.wikimedia.de/impressum/">Impressum</a> <a href="https://www.wikimedia.de/datenschutz/">Datenschutz</a></p>
</body>
</HTML>

@ -0,0 +1,9 @@
<!DOCTYPE html>
<HTML>
<head>
<link rel="stylesheet" href="/wmdepasswd/wmdepasswd.css">
<title><?php echo $title ?></title>
<meta charset="utf-8"/>
</head>
<body class="main">
<img src="wmde_logo_vert_schwarz.png" height="150" />

@ -0,0 +1,43 @@
<?php
require_once "../html/nuserver/nuconfig.php";
include "../html/nuserver/nudatabase.php";
require_once "tfunc.php";
if (isset( $_GET['reset'] )){
$community_id = wmde_getCommunityIdBySecret($_GET['reset']);
if (!$community_id){
$title = "Fehler";
include "wrongreset.tpl";
die;
}
wmde_DeleteSecret($_GET['reset']);
$password = wmde_randomStr(16);
wmde_setPass($community_id,$password);
$wikimails = wmde_getWikiMails($community_id);
$title = "WP:@ Zugangsdaten";
include "yourpassword.tpl";
die;
}
if (isset( $_POST['email']) ){
$s = wmde_sendPasswordResetMail($_POST['email']);
if (!$s){
# echo "Password already sent.";
}
$title = "WP:@ Passwort gesendet";
include "password_sent.tpl";
# echo "Sending password reset mail to: ".htmlspecialchars($_POST['email']);
die;
}
wmde_deleteOldSecrets();
showReset();

@ -0,0 +1,22 @@
<?php
$mail_subject = "Deine WP:@-Zugangsdaten";
$mail_text = "Liebes Communitymitglied!
Mit dieser Mail bekommst du einen Link, um dein Passwort
fuer deine WP:@-Mailadresse zu setzen.
https://email.wikimedia.de/wmdepasswd/index.php?reset=$secret
Dieses Passwort musst du dort eingeben, wo das E-Mail-Programm
deiner Wahl nach dem SMTP-Server oder Postausgangsserver fragt.
Ebenfalls dort musst du dann auch den Servernamen
email.wikimedia.de unter Angabe des Ports 587 angeben. Wähle
bitte für die Verschlüsselung StartTLS aus.
Solltes du diese Mail nicht angefordert haben, ignoriere sie bitte.
Grüße
Das IT-Team von Wikimedia Deutschland e. V.
";

@ -0,0 +1,14 @@
<?php
include_once("header.tpl");
?>
<p>
Wir haben dir nun eine E-Mail mit einem Link zum
zurücksetzen deines Passworts gesendet, sofern
<ul>
<li>deine E-Mail-Adresse bei uns hinterlegt ist</li>
<li>wir nicht innerhalb der letzten 24 Stunden bereits eine
E-Mail an dich gesendet haben.</li>
</ul>
<?php
include_once("footer.tpl");
?>

@ -0,0 +1,180 @@
<?php
function wmde_randomStr(
$length,
$keyspace = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
{
$pieces = [];
$max = mb_strlen($keyspace, '8bit') - 1;
for ($i = 0; $i < $length; ++$i) {
$pieces []= $keyspace[random_int(0, $max)];
}
return implode('', $pieces);
}
function wmde_createPasswordResetSecret($community_id)
{
$rstr = wmde_randomStr(32);
$sql = "INSERT INTO community_reset (community_reset_id, secret, valid_until) VALUES('$community_id','$rstr',NOW() + INTERVAL 1 DAY)";
$rc = nuRunQuery($sql,[], true);
if ($rc<0 )
return false;
return $rstr;
}
function wmde_deleteOldSecrets()
{
$sql = "DELETE from community_reset WHERE valid_until < NOW() ";
nuRunQuery($sql);
}
function wmde_deleteSecret($secret)
{
$sql = "DELETE from community_reset WHERE secret = :secret ";
nuRunQuery($sql,['secret'=>$secret]);
}
function wmde_getCommunityId( $email, $private = false )
{
if (!$private){
$sql = "SELECT community.community_id FROM community LEFT JOIN community_mail ON
community_mail.cmailkey = community.community_id WHERE
community_mail.cmail = :cmail OR community.email = :email";
$sqlargs = [':cmail'=>$email,':email'=>$email];
}
else {
$sql = "SELECT community.community_id FROM community
WHERE community.email = :email";
$sqlargs = [':email'=>$email];
}
// echo "Cpommunity Query = $sql - $email\n";
$t = nuRunQuery($sql, $sqlargs);
// var_dump($t);
$a = db_fetch_array($t);
if ($a) {
return $a['community_id'];
}
return null;
}
function showReset()
{
global $nuDB;
$title = "WP:@ Passwort anfordern";
include "email.tpl";
/*<HTML>
<body>
<form method="POST">
<label for="email" name="Email" value="E-Mail">E-Mail:</label>
<input type = "email" name="email"/>
<input type = "submit" value="Senden"/>
</form>
</body>
</HTML>*/
}
function getpw()
{
global $nuDB;
$sql = "SELECT * FROM community WHERE email = :email";
$t = nuRunQuery($sql,[':email' => 'tube@surfpoeten.de']);
var_dump($t);
$a = db_fetch_array($t);
var_dump($a);
}
function wmde_getWikiMails($community_id)
{
$sql = "SELECT cmail FROM community LEFT JOIN community_mail ON
community_mail.cmailkey = community.community_id WHERE
community.community_id = :community_id";
$t = nuRunQuery($sql,[':community_id' => $community_id]);
$mails = array();
while ( $a = db_fetch_array($t) )
{
array_push($mails,$a['cmail']);
}
return $mails;
}
function wmde_setPass($community_id,$password)
{
$pass = password_hash($password,PASSWORD_BCRYPT );
$sql = "UPDATE community SET pass='$pass' WHERE community_id = :id";
// echo "SQL: $sql\n";
$t = nuRunQuery($sql,[':id' => $community_id],true);
// var_dump($t);
return $t;
}
function wmde_getCommunityIdBySecret($secret)
{
$sql = "SELECT community_reset_id FROM community_reset WHERE secret = :secret";
// AND valid_until > NOW() ";
$t = nuRunQuery($sql, ['secret' => $secret]);
// echo "the t $secret\n";
// var_dump($t);
$a = db_fetch_array($t);
// echo "the a\n";
// var_dump($a);
if ($a) {
return $a['community_reset_id'];
}
return null;
}
function wmde_setPassByMail($email,$pass)
{
$id = wmde_getCommunityId($email);
if (!$id)
return false;
return wmde_setPass($id,$pass);
}
function wmde_sendPasswordResetMail($email)
{
$community_id = wmde_getCommunityId($email,false);
// var_dump($community_id);
// var_dump($email);
if (!$community_id)
return false;
$secret = wmde_createPasswordResetSecret($community_id);
if (!$secret ) {
return false;
}
include "mailtext.tpl";
$sender='noc@wikipedia.de';
$sendmail = "/usr/sbin/sendmail";
$text = "To: $email\n";
$text.= "From: Wikimedia Team IT <noc@wikipedia.de>\n";
$text.= "MIME-Version: 1.0\n";
$text.= "Content-Transfer-Encoding: 8bit\n";
$text.= "Content-Type: text/plain; charset=utf-8\n";
$text.= "Subject: $mail_subject\n\n";
$text.= $mail_text;
$cmd = "echo '$text' | $sendmail -f noc@wikipedia.de $email";
exec ($cmd);
return $secret;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

@ -0,0 +1,14 @@
* {
font-family: Montserrat, sans-serif;
font-size: 100%; /*1vw;*/
}
body {padding:1em; max-width: 60ex; text-align: justify;}
img, body { display: block; margin-left: auto; margin-right: auto; }
dt { font-weight: bold; }
.notice { color: green; }
.imprint { color: grey; }

@ -0,0 +1,7 @@
<?php include("header.tpl"); ?>
<p>Der vom dir aufgerufene Link zum Setzen des WP:@-Passworts
ist nicht oder nicht mehr gültig.</p>
<p>
Um einen gültigen Link zu erhalten, musst du erneut <a href=" https://email.wikimedia.de/wmdepasswd">Zugangsdaten anfordern</a>.
</p>
<?php include("footer.tpl"); ?>

@ -0,0 +1,38 @@
<?php
include_once("header.tpl");
?>
<p>Hier sind deine Zugangsdaten, um Mails mit deiner WP:@-Adresse
zu versenden. Bitte notiere dir diese Daten an einem sicheren Ort (z.B.
in deiner durch KeePassXC gesicherten Passwortdatenbank).</p>
<p class="notice">Ein erneuter Aufruf dieser Seite ist nicht möglich, es sei denn, du
forderst ein neues Passwort an.</p>
<dl>
<dt>Absenderadresse(n):</dt>
<dd>
<?php
foreach ($wikimails as $wm){
echo "$k$wm<br>";
}
?>
</dd>
<dt>Postausgangsserver:</dt><dd>email.wikimedia.de</dd>
<dt>Port:</dt><dd>587</dd>
<dt>Verschlüsselung:</dt><dd>StartTLS</dd>
<dt>WP:@-Benutzername:</dt>
<dd>
<?php
echo "$community_id";
?>
</dd>
<dt>WP:@-Passwort:</dt><dd><?php echo $password ?></dd>
</dl>
<p>
Hilfe bei der Einrichtung in verschiedenen E-Mail-Anwendungen kannst du auf der Seite
<a href="https://de.wikipedia.org/wiki/Wikipedia:F%C3%B6rderung/Wikimedia_Deutschland/Anleitung_E-Mail-Konfiguration">WP:@/Anleitung_E-Mail-Konfiguration</a>
finden.
</p>
<?php
include_once("footer.tpl");
?>
Loading…
Cancel
Save