Alle Dateien, die hier eingesehen werden können, sind unter der GNU GPL lizenziert. Wenn du etwas darin findest, das du gerne hättest, so schreibe mir doch bitte eine Anfrage damit ich, wenn ich es rausgeben will, alle Änderungen raussuchen könnte. Denn ich übernehme keine Verantwortung, solltest du was rausnehmen und es geht nicht. Und Support deswegen geb ich schon gar nicht.
Solltest du eine Schwachstelle im Code finden, sei es eine kritische Lücke oder eine Möglichkeit zu cheaten, dann bitte ich dich, mir das mitzuteilen. Solltest du beim cheaten erwischt werden, werde ich deinen Account eigenhändig löschen & bannen; Solltest du meinen Server angreifen, so werde ich meine Rechtsschutzversicherung kontaktieren.
Verzeichnisse:
<?php
require_once "common.php";
/**************************************
* *
* Kopfdaten, stehen immer da *
* *
*************************************/
popup_header("Ye Olde Poste Office");
output("<a href='mail.php' class='motd'>Inbox</a><a href='mail.php?op=address' class='motd'>Mail schreiben</a>`n`n",true);
//output("<a href='mail.php?op=buch' class='motd'>Adressbuch</a>",true); // www.plueschdrache.de Adressbuch
//output("<a href='mail.php?op=block' class='motd'>Ignorierliste</a>`n`n",true); // www.anaras.ch Blockliste
output("<a href='mail.php?op=outbox' class='motd'>Outbox</a>`n`n",true);
/**************************************
* *
* Wir gucken jetzt mal was genau *
* gemacht wird *
* *
*************************************/
switch($_GET['op']) {
/**************************************
* *
* Die einzelnen Optionen, *
* die ausgeführt werden *
* *
*************************************/
case "del":
/**************************************
* *
* Eine Mail löschen *
* *
*************************************/
$sql = "DELETE FROM mail WHERE msgto='".$session[user][acctid]."' AND messageid='$_GET[id]'";
db_query($sql);
header("Location: mail.php");
exit();
break;
case "process":
/**************************************
* *
* mehrere Mails löschen *
* *
*************************************/
// keine Mails ausgewählt
if (!is_array($_POST['msg']) || count($_POST['msg'])<1){
$session['message'] = "`\$`bDu kannst 0 Nachrichten nicht löschen! Was das heißt? Du hast \"Markierte löschen\" geklickt, aber es sind keine Nachrichten markiert. Was für eine Welt ist das nur, in der Leute Knöpfe ohne Funktion drücken?!?`b`0";
header("Location: mail.php");
// Mails ausgewählt
} else {
$sql = "DELETE FROM mail WHERE msgto='".$session[user][acctid]."' AND messageid IN ('".join("','",$_POST[msg])."')";
db_query($sql);
header("Location: mail.php");
exit();
}
break;
case "send":
/**************************************
* *
* Eine Mail senden *
* *
*************************************/
if (empty($_POST['petitionid'])) {
$sql = "SELECT acctid FROM accounts WHERE login='$_POST[to]'";
$result = db_query($sql);
if (db_num_rows($result)>0){
$row1 = db_fetch_assoc($result);
$sql = "SELECT count(messageid) AS count FROM mail WHERE msgto='".$row1[acctid]."' AND seen=0";
$result = db_query($sql);
$row = db_fetch_assoc($result);
$sqlb = "SELECT blocked FROM block WHERE blocker='".$row1[acctid]."' AND blocked='".$session[user][acctid]."'";
$resultb = db_query($sqlb);
$block = db_fetch_assoc($resultb);
$sqlb1 = "SELECT blocked FROM block WHERE blocker='".$session[user][acctid]."' AND blocked='".$row1[acctid]."'";
$resultb1 = db_query($sqlb1);
$block1 = db_fetch_assoc($resultb1);
if(db_num_rows($resultb)>0){
output("`\$`bDiese Person hat dich geblockt!`b`n`n`0");
} else if(db_num_rows($resultb1)>0){
output("`\$`bDu hast diese Person geblockt!`b`n`n`0");
} else if ($row[count]>getsetting("inboxlimit",50)) {
output("Die Mailbox dieser Person ist voll! Du kannst ihr keine Nachricht schicken.");
}else{
$_POST['subject']=closetags(str_replace("`n","",$_POST['subject']),'`c`i`b');
$_POST['body']=str_replace("`n","\n",$_POST['body']);
$_POST['body']=str_replace("\r\n","\n",$_POST['body']);
$_POST['body']=str_replace("\r","\n",$_POST['body']);
$_POST['body']=addslashes(substr(stripslashes($_POST['body']),0,(int)getsetting("mailsizelimit",1024)));
$_POST['body'] = closetags($_POST['body'],'`c`i`b');
systemmail($row1['acctid'],$_POST['subject'],$_POST['body'],$session['user']['acctid']);
output("Deine Nachricht wurde gesendet!`n");
}
}else{
output("Konnte den Empfänger nicht finden. Bitte versuche es nochmal.`n");
}
} else {
$sql = "SELECT count(messageid) AS count FROM petitionmail WHERE petitionid='$_POST[petitionid]' AND msgto='".$session['user']['acctid']."'";
$row = db_fetch_assoc(db_query($sql));
if ($row['count']==0) {
output('Du kannst nur zu deinen eigenen Anfragen etwas schreiben!');
} else {
$_POST['subject']=closetags(str_replace("`n","",$_POST['subject']),'`c`i`b');
$_POST['body']=str_replace("`n","\n",$_POST['body']);
$_POST['body']=str_replace("\r\n","\n",$_POST['body']);
$_POST['body']=str_replace("\r","\n",$_POST['body']);
$_POST['body']=substr($_POST['body'],0,(int)getsetting("mailsizelimit",1024));
$_POST['body'] = closetags($_POST['body'],'`c`i`b');
petitionmail($_POST['subject'],$_POST['body'],$_POST['petitionid'],$session['user']['acctid']);
output("Deine Nachricht wurde gesendet!`n");
}
}
break;
/**************************************
* *
* Die Standardansichten *
* *
*************************************/
default:
/**************************************
* *
* Posteingang *
* *
**************************************/
output("`b`iMail Box`i`b");
output($session['message']);
$session['message']="";
$sql = "SELECT mail.subject,mail.messageid,accounts.name,mail.msgfrom,mail.seen,mail.sent, petitionmail.petitionid FROM mail LEFT JOIN petitionmail USING(messageid) LEFT JOIN accounts ON accounts.acctid=mail.msgfrom WHERE mail.msgto=\"".$session[user][acctid]."\" ORDER BY mail.seen,mail.sent";
$result = db_query($sql);
if (db_num_rows($result)>0){
output("<form action='mail.php?op=process' method='POST'><table>",true);
for ($i=0;$i<db_num_rows($result);$i++){
$row = db_fetch_assoc($result);
if ((int)$row[msgfrom]==0) {
if ((int)$row['petitionid']==0) $row[name]="`i`5System`0`i";
else $row['name'] = "`i`5Admin`0`i";
}
output("<tr>",true);
output("<td nowrap><input id='checkbox$i' type='checkbox' name='msg[]' value='$row[messageid]'><img src='images/".($row[seen]?"old":"new")."scroll.png' width='20' height='14' alt='".($row[seen]?"Alt":"Neu")."'></td>",true);
output("<td><a href='mail.php?op=read&id=$row[messageid]'>",true);
output($row[subject]);
output("</a></td><td><a href='mail.php?op=read&id=$row[messageid]'>",true);
output($row[name]);
output("</a></td><td><a href='mail.php?op=read&id=$row[messageid]'>".date("M d, h:i a",strtotime($row[sent]))."</a></td>",true);
output("</tr>",true);
}
output("</table>",true);
$out="<input type='button' value='Alle markieren' class='button' onClick='";
for ($i=$i-1;$i>=0;$i--){
$out.="document.getElementById(\"checkbox$i\").checked=true;";
}
$out.="'>";
output($out,true);
output("<input type='submit' class='button' value='Markierte löschen'>",true);
output("</form>",true);
}else{
output("`iOoooh, du hast keine Mails. Wie schade.`i");
}
output("`n`n`iDu hast ".db_num_rows($result)." Nachrichten in deiner Mailbox`nDu kannst höchstens ".getsetting('inboxlimit',50)." Nachrichten hier speichern.`nNachrichten werden nach ".getsetting("oldmail",14)." Tagen gelöscht.");
break;
/**********************************
* Postausgang *
**********************************/
/***********************************************
*Diese Box darf nicht entfernt werden! *
*------------------------------------- *
*Outbox von Tweety und Kelko *
* *
*www.tugc-lotgd.6x.to *
***********************************************/
case "outbox":
output("`b`iAusgang`i`b");
output($session['message']);
$session['message']="";
$sql = "SELECT mail.subject,mail.messageid,accounts.name,mail.msgfrom,mail.seen,mail.sent, petitionmail.petitionid FROM mail LEFT JOIN petitionmail USING(messageid) INNER JOIN accounts ON accounts.acctid=mail.msgto WHERE mail.msgfrom=\"".$session[user][acctid]."\" ORDER BY mail.seen,mail.sent";
$result = db_query($sql);
if (db_num_rows($result)>0){
output("<table>",true);
for ($i=0;$i<db_num_rows($result);$i++){
$row = db_fetch_assoc($result);
output("<tr>",true);
output("<td nowrap><img src='images/".($row[seen]?"old":"new")."scroll.GIF' width='16' height='16' alt='".($row[seen]?"Alt":"Neu")."'></td>",true);
output("<td><a href='mail.php?op=readSend&id=$row[messageid]'>",true);
output($row[subject]);
output("</a></td><td><a href='mail.php?op=readSend&id=$row[messageid]'>",true);
output($row[name]);
output("</a></td><td><a href='mail.php?op=readSend&id=$row[messageid]'>".date("M d, h:i a",strtotime($row[sent]))."</a></td>",true);
output("</tr>",true);
}
output("</table>",true);
output("</form>",true);
}else{
output("`iOoooh, du hast keine Mails. Wie schade.`i");
}
output("`n`n`iDu hast ".db_num_rows($result)." Nachrichten in deiner Mailbox`nDu kannst höchstens ".getsetting('outboxlimit',50)." Nachrichten hier speichern.`nNachrichten werden nach ".getsetting("oldmail",14)." Tagen gelöscht.");
break;
case "readSend":
/**************************************
* *
* Mails ausgang lesen *
* *
**************************************/
$sql = "SELECT mail.*,accounts.name, petitionmail.petitionid FROM mail LEFT JOIN petitionmail USING(messageid) LEFT JOIN accounts ON accounts.acctid=mail.msgto WHERE mail.messageid=\"".$_GET[id]."\"";
$result = db_query($sql) or die(db_error(LINK));
if (db_num_rows($result)>0){
$row = db_fetch_assoc($result);
output("`b`‰Empfänger:`b `5$row[name]`n");
output("`b`‰Betreff:`b `5$row[subject]`n");
output("`b`‰Gesendet:`b `5{$row['sent']}`n");
output("<img src='images/uscroll.GIF' width='182' height='11' alt='' align='center'>`n",true);
output(str_replace("\n","`n","$row[body]"));
output("`n<img src='images/lscroll.GIF' width='182' height='11' alt='' align='center'>`n",true);
}else{
output("Uff, so eine Nachricht wurde nicht gefunden!");
}
break;
case "read":
/**************************************
* *
* Mail lesen *
* *
**************************************/
$sql = "UPDATE mail SET seen=1 WHERE msgto=\"".$session[user][acctid]."\" AND messageid=\"".$_GET[id]."\"";
db_query($sql);
$sql = "SELECT mail.*,accounts.name, petitionmail.petitionid FROM mail LEFT JOIN petitionmail USING(messageid) LEFT JOIN accounts ON accounts.acctid=mail.msgfrom WHERE mail.msgto=\"".$session[user][acctid]."\" AND mail.messageid=\"".$_GET[id]."\"";
$result = db_query($sql) or die(db_error(LINK));
if (db_num_rows($result)>0){
$row = db_fetch_assoc($result);
if ((int)$row[msgfrom]==0) {
if ((int)$row['petitionid']==0) $row[name]="`i`5System`0`i";
else $row['name'] = "`i`5Admin`0`i";
}
output("`b`‰Absender:`b `5$row[name]`n");
output("`b`‰Betreff:`b `5$row[subject]`n");
output("`b`‰Gesendet:`b `5{$row['sent']}`n");
output("<img src='images/mup.png' width='347' height='12' alt='' align='center'>`n",true);
output(str_replace("\n","`n","`Œ$row[body]"));
output("`n<img src='images/mlow.png' width='347' height='12' alt='' align='center'>`n",true);
output("<a href='mail.php?op=write&replyto=$row[messageid]' class='motd'>Antworten</a><a href='mail.php?op=del&id=$row[messageid]' class='motd'>Löschen</a>",true);
}else{
output("Uff, so eine Nachricht wurde nicht gefunden!");
}
break;
case "address":
/**************************************
* *
* Empfänger wählen *
* *
**************************************/
output("<form action='mail.php?op=write' method='POST'>",true);
output("`b`‰Empfänger:`b`n");
output("`‰<u>A</u>n: <input name='to' accesskey='a'> <input type='submit' class='button' value='Search'></form>",true);
break;
case "write":
/**************************************
* *
* Eine Mail schreiben *
* *
**************************************/
$subject="";
$body="";
output("<form action='mail.php?op=send' method='POST'>",true);
if ($_GET[replyto]!=""){
$sql = "SELECT mail.body,mail.subject,accounts.login,accounts.name, petitionmail.petitionid FROM mail LEFT JOIN petitionmail USING(messageid) LEFT JOIN accounts ON accounts.acctid=mail.msgfrom WHERE mail.msgto=\"".$session[user][acctid]."\" AND mail.messageid=\"".$_GET[replyto]."\"";
$result = db_query($sql) or die(db_error(LINK));
if (db_num_rows($result)>0){
$row = db_fetch_assoc($result);
if ($row[login]=="" && (int)$row['petitionid']==0) {
output("Du kannst nicht auf eine Systemnachricht antworten.`n");
$row=array();
}
}else{
output("Uff, so eine Nachricht wurde nicht gefunden!`n");
}
}
if ($_GET[to]!=""){
$sql = "SELECT login,name FROM accounts WHERE login=\"$_GET[to]\"";
$result = db_query($sql) or die(db_error(LINK));
if (db_num_rows($result)>0){
$row = db_fetch_assoc($result);
}else{
output("Konnte diese Person nicht finden.`n");
}
}
if (is_array($row)){
if ($row[subject]!=""){
$subject=$row[subject];
if (substr($subject,0,4)!="RE: ") $subject="RE: $subject";
}
if ($row[body]!=""){
$body="\n\n---Original Message---\n".$row[body];
}
}
if ($row['petitionid']>0) {
output("`‰An: `5`iAdmin`i`n");
} elseif ($row[login]!=""){
output("<input type='hidden' name='to' value=\"".HTMLEntities($row[login])."\">",true);
output("`‰An: `5$row[name]`n");
}else{
output("`‰An: ");
$string="%";
for ($x=0;$x<strlen($_POST['to']);$x++){
$string .= substr($_POST['to'],$x,1)."%";
}
$sql = "SELECT login,name FROM accounts WHERE name LIKE '".addslashes($string)."' AND locked=0 ORDER BY login";
$result = db_query($sql);
if (db_num_rows($result)==1){
$row = db_fetch_assoc($result);
output("<input type='hidden' name='to' value=\"".HTMLEntities($row[login])."\">",true);
output("`5$row[name]`n");
}else{
output("<select name='to'>",true);
for ($i=0;$i<db_num_rows($result);$i++){
$row = db_fetch_assoc($result);
output("<option value=\"".HTMLEntities($row[login])."\">",true);
output(preg_replace("/[`]./","",$row[name]));
}
output("</select>`n",true);
}
}
output("`‰Betreff:");
$output.=("<input name='subject' value=\"".HTMLEntities($subject).HTMLEntities(stripslashes($_GET['subject']))."\">");
output("`n`‰Text:`n");
$output.="<textarea name='body' class='input' cols='40' rows='9'>".HTMLEntities($body).HTMLEntities(stripslashes($_GET['body']))."</textarea><br>";
output("<input type='submit' class='button' value='Senden'>`n",true);
if ($row['petitionid']>0) output('<input type="hidden" name="petitionid" value="'.$row['petitionid'].'">',true);
output("</form>",true);
break;
//Ende vom switch
}
/**************************************
* *
* Fußdaten, stehen immer da *
* *
*************************************/
popup_footer();
?>