kartero.org

kartero.org

Git

This blob has been accessed 347 times via Git panel.

  1. <?php
  2.  
  3. /* modify the values of $db_host, $db_name, $db_user, $db_pass, and $mail_root for basic configuration */
  4.  
  5. $db_host = "localhost";
  6. $db_name = "kartero";
  7. $db_user = "kartero";
  8. $db_pass = "fr1ng3!";
  9.  
  10. $mail_root = "/kartero/mail";
  11. $mail_home = "/kartero/home";
  12.  
  13. /* feel free to hack the succeeding code to suit your needs (basic php and mysql skills required) */
  14.  
  15. require_once("core.php");
  16.  
  17. function rmdirr($recurse_dirname) {
  18.  
  19.         if (!file_exists($recurse_dirname)) {
  20.                 return false;
  21.         }
  22.  
  23.         if (is_file($recurse_dirname)) {
  24.                 return unlink($recurse_dirname);
  25.         }
  26.  
  27.         $recurse_dir = dir($recurse_dirname);
  28.  
  29.         while (false !== $recurse_entry = $recurse_dir->read()) {
  30.  
  31.                 if ($recurse_entry == '.' || $recurse_entry == '..') {
  32.                         continue;
  33.                 }
  34.  
  35.                 rmdirr("$recurse_dirname/$recurse_entry");
  36.         }
  37.  
  38.         $recurse_dir->close();
  39.         return rmdir($recurse_dirname);
  40. }
  41.  
  42. function ack($ack_string) {
  43.         echo "<table width=\"100%\"><tr></td><div class=\"ack\">$ack_string</div></td></tr></table>";
  44. }
  45.  
  46. function nak($nak_string) {
  47.         echo "<table width=\"100%\"><tr></td><div class=\"nak\">$nak_string</div></td></tr></table>";
  48. }
  49.  
  50. if (file_exists("css.php")) {
  51.  
  52.         $css = file_get_contents("css.php");
  53.         $css = str_replace("<style>","",$css);
  54.         $css = str_replace("</style>","",$css);
  55.  
  56.         echo "<style>\r\n$css</style>\r\n\r\n";
  57. }
  58.  
  59. if (!file_exists("$mail_root")) {
  60.  
  61.         $mail_dirs = explode("/",$mail_root);
  62.  
  63.         foreach ($mail_dirs as $mail_dir) {
  64.        
  65.                 if (!empty($mail_dir)) {
  66.                         $mail_mkdir = $mail_mkdir . "/" . $mail_dir;
  67.                         mkdir("$mail_mkdir");
  68.                 }
  69.         }
  70.  
  71.         if (!file_exists("$mail_root")) {
  72.                 nak("Can't create '$mail_root' (check filesystem permissions or change '&#36;mail_root' and try again)");
  73.                 exit();
  74.         }
  75. }
  76.  
  77. $db_link = mysql_pconnect($db_host, $db_user, $db_pass);
  78.  
  79. if (!$db_link) {
  80.         nak(mysql_error());
  81.         exit;
  82. }
  83.  
  84. $db_query = mysql_query("use $db_name");
  85.  
  86. if (!$db_query) {
  87.         $pw_crypt = crypt($db_pass);
  88.         $db_query = mysql_query("create database $db_name");
  89.         $db_query = mysql_query("use $db_name");
  90.         $db_query = mysql_query("create table admins (id varchar(16) not null, pw varchar(64) not null, primary key (id), unique key (id))");
  91.         $db_query = mysql_query("create table domains (id varchar(128) not null, pw varchar(64) not null, max int(6) default '0', mode int(1) default '1', primary key (id), unique key (id))");
  92.         $db_query = mysql_query("create table users (id varchar(255) not null, pw varchar(64) not null, maildir varchar(255) not null, name varchar(128), domain varchar(128), mode int(1) default '1', quota varchar(16), primary key (id), unique key(id))");
  93.         $db_query = mysql_query("create table aliases (id varchar(255) not null, alias varchar(255) not null, domain varchar(128), mode int(1) default '1', primary key (domain))");
  94.         $db_query = mysql_query("insert into admins values('$db_user','$pw_crypt')");
  95. }
  96.  
  97. $id_put = strip_tags($_POST['id']);
  98. $id_put = trim($id_put);
  99. $id_put = strtolower($id_put);
  100.  
  101. if (get_magic_quotes_gpc()) {
  102.         $id_put = stripslashes($id_put);
  103. }
  104.  
  105. if (!is_int($id_put)) {
  106.         $id_put = mysql_real_escape_string($id_put);
  107. }
  108.  
  109. $lvl_put = strip_tags($_POST['lvl']);
  110.  
  111. if ($lvl_put == "subscriber") {
  112.  
  113.         if (!strpos($id_put,"@")) {
  114.                 $id_put = $id_put . "@" . trim(str_replace("mail.","",$_SERVER['SERVER_NAME']));
  115.         }
  116.  
  117.         $pw_get = mysql_query("select pw from users where id='$id_put'");
  118. }
  119.  
  120. if ($lvl_put == "postmaster") {
  121.         $pw_get = mysql_query("select pw from domains where id='$id_put'");
  122. }
  123.  
  124. if ($lvl_put == "administrator") {
  125.         $pw_get = mysql_query("select pw from admins where id='$id_put'");
  126. }
  127.  
  128. $pw_get = mysql_fetch_row($pw_get);
  129. $pw_get = $pw_get[0];
  130.  
  131. $pw_put = $_POST['pw'];
  132.  
  133. if (get_magic_quotes_gpc()) {
  134.         $pw_put = stripslashes($pw_put);
  135. }
  136.  
  137. if (!is_int($pw_put)) {
  138.         $pw_put = mysql_real_escape_string($pw_put);
  139. }
  140.  
  141. $pw_put = strip_tags($pw_put);
  142.  
  143. $pw_mbox = $pw_put;
  144.  
  145. $pw_put = crypt($pw_put,$pw_get);
  146.  
  147. if ($pw_put == $pw_get) {
  148.         $_SESSION['logged_uid'] = $id_put;
  149.         $_SESSION['logged_lvl'] = $lvl_put;
  150.  
  151.         if ($_SESSION['logged_lvl'] == "subscriber") {
  152.                 $_SESSION['logged_key'] = $pw_mbox;
  153.         }
  154. }
  155.  
  156. unset($pw_mbox);
  157.  
  158. if ($_SESSION['logged_lvl'] == "subscriber") {
  159.  
  160.         if (isset($_SESSION['clean_up_i']) and file_exists("attach/i/$fileUsr/{$_SESSION['clean_up_i']}") and (!isset($_POST['filedrop_box']) or empty($_POST['filedrop_box']))) {
  161.  
  162.                 rmdirr("attach/i/$fileUsr/{$_SESSION['clean_up_i']}");
  163.                 unset($_SESSION['clean_up_i']);
  164.  
  165.                 if (count(glob("attach/i/$fileUsr/*")) == 0) {
  166.                         rmdirr("attach/i/$fileUsr");
  167.                 }
  168.         }
  169.  
  170.         if (isset($_SESSION['clean_up_o']) and file_exists("attach/o/$fileUsr/{$_SESSION['clean_up_o']}")) {
  171.                        
  172.                 rmdirr("attach/o/$fileUsr/{$_SESSION['clean_up_o']}");
  173.                 unset($_SESSION['clean_up_o']);
  174.  
  175.                 if (count(glob("attach/o/$fileUsr/*")) == 0) {
  176.                         rmdirr("attach/o/$fileUsr");
  177.                 }
  178.         }
  179. }
  180.  
  181. if (isset($_GET['do']) and ($_GET['do'] == "logout")) {
  182.  
  183.         if ($mbox) {
  184.                 imap_close($mbox, CL_EXPUNGE);
  185.         }
  186.  
  187.         $_SESSION = array();
  188.         session_destroy();
  189.         header("Location: .");
  190.         exit;
  191. }
  192.  
  193. if (!isset($_SESSION['logged_uid']) and (($pw_put != $pw_get) or !isset($_POST['id']) or !isset($_POST['pw']) or empty($_POST['id']) or empty($_POST['pw']))) {
  194.  
  195.         echo "<title>Kartero</title>";
  196.  
  197.         echo "<div class=\"login\"><center>";
  198.  
  199.         if (file_exists("images/{$_SERVER['SERVER_NAME']}.png")) {
  200.  
  201.                 $logo_info = getimagesize("images/{$_SERVER['SERVER_NAME']}.png");
  202.  
  203.                 if (($logo_info[mime] == "image/png") and ($logo_info[0] > 0) and ($logo_info[1] > 0)) {
  204.                         echo "<img src=\"images/{$_SERVER['SERVER_NAME']}.png\" border=\"0\" width=\"{$logo_info[0]}\" height=\"{$logo_info[1]}\">";
  205.                 }
  206.                 else {
  207.                         echo "<img src=\"images/logo.png\" border=\"0\" width=\"100\" height=\"100\">";
  208.                 }
  209.         }
  210.         else {
  211.                 echo "<img src=\"images/logo.png\" border=\"0\" width=\"100\" height=\"100\">";
  212.         }
  213.  
  214.         echo "<br>kartero v1.0 at {$_SERVER['SERVER_NAME']}<br><br>";
  215.  
  216.         echo "<table border=\"0\" cellspacing=\"1\" cellpadding=\"2\" bgcolor=\"#cccccc\">";
  217.         echo "<form method=\"post\">";
  218.         echo "<tr bgcolor=\"#ffffff\"><td><select class=\"input\" name=\"lvl\"><option value=\"subscriber\">subscriber</option><option value=\"postmaster\">postmaster</option><option value=\"administrator\">administrator</option></select></td></tr>";
  219.         echo "<tr bgcolor=\"#ffffff\"><td><input required autofocus class=\"input\" type=\"text\" name=\"id\" autocomplete=\"off\" maxlength=\"128\"></td></tr>";
  220.         echo "<tr bgcolor=\"#ffffff\"><td><input required class=\"input\" type=\"password\" name=\"pw\" autocomplete=\"off\" maxlength=\"64\"></td></tr>";
  221.         echo "<tr bgcolor=\"#ffffff\"><td><input class=\"button\" type=\"submit\" value=\"login\"></td></tr>";
  222.         echo "</form>";
  223.         echo "</table>";
  224.  
  225.         echo "</center></div>";
  226.  
  227.         echo "<iframe name=\"preload\" src=\"preload.php\" frameborder=\"0\" scrolling=\"0\" width=\"0\" height=\"0\"></iframe>";
  228.  
  229.         exit;
  230. }
  231.  
  232. if (isset($_SESSION['logged_uid'])) {
  233.  
  234.         echo "<nobr>You are currently logged in to your {$_SESSION['logged_uid']} {$_SESSION['logged_lvl']} account. Click <a href=\"?do=logout\">here</a> to logout.</nobr><br><br>";
  235.  
  236.         echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
  237.         echo "<tr><td colspan=\"3\" valign=\"top\">";
  238.  
  239.         if ($_SESSION['logged_lvl'] == "subscriber") {
  240.  
  241.                 $usr_query = mysql_query("select * from users where id='{$_SESSION['logged_uid']}'");
  242.                 $usr_data = mysql_fetch_row($usr_query);
  243.  
  244.                 $dom_query = mysql_query("select mode from domains where id='{$usr_data[4]}'");
  245.                 $dom_data = mysql_fetch_row($dom_query);
  246.  
  247.                 if ($dom_data[0] == 0) {
  248.                         nak("{$usr_data[4]} disabled by admin");
  249.                         exit();
  250.                 }
  251.  
  252.                 if ($usr_data[5] == 0) {
  253.                         nak("{$_SESSION['logged_uid']} disabled by postmaster");
  254.                         exit();
  255.                 }
  256.        
  257.                 $usr_name = $usr_data[3];
  258.        
  259.                 if (isset($_POST['usr_name']) and !empty($_POST['usr_name']) and (strlen($_POST['usr_name']) <= 128) and (strlen($_POST['usr_name']) > 2)) {
  260.        
  261.                         $usr_name = trim($_POST['usr_name']);
  262.                         $usr_name = ucwords($usr_name);
  263.        
  264.                         if ($usr_name != $usr_data[3]) {
  265.        
  266.                                 $usr_query = mysql_query("update users set name='$usr_name' where id='{$_SESSION['logged_uid']}'");
  267.        
  268.                                 if (!usr_query) {
  269.                                         nak(strtolower(mysql_error()));
  270.                                 }
  271.                                 else {
  272.                                         ack("name changed");
  273.                                 }
  274.                         }
  275.                         else {
  276.                                 $usr_name = $usr_data[3];
  277.                         }
  278.                 }
  279.        
  280.                 $usr_pw0 = $usr_data[1];
  281.        
  282.                 if (isset($_POST['usr_pw1']) and !empty($_POST['usr_pw1']) and isset($_POST['usr_pw2']) and !empty($_POST['usr_pw2']) and isset($_POST['usr_pw3']) and !empty($_POST['usr_pw3']) and (strlen($_POST['usr_pw2']) <= 64) and (strlen($_POST['usr_pw3']) <= 64) and (strlen($_POST['usr_pw2']) >= 8) and (strlen($_POST['usr_pw3']) >= 8)) {
  283.        
  284.                         $usr_pw1 = trim($_POST['usr_pw1']);
  285.                         $usr_pw2 = trim($_POST['usr_pw2']);
  286.                         $usr_pw3 = trim($_POST['usr_pw3']);
  287.        
  288.                         if ($usr_pw0 == crypt($usr_pw1,$usr_pw0)) {
  289.        
  290.                                 if ($usr_pw2 == $usr_pw3) {
  291.                                        
  292.                                         $usr_pw = crypt($usr_pw2);
  293.        
  294.                                         $usr_query = mysql_query("update users set pw='$usr_pw' where id='{$_SESSION['logged_uid']}'");
  295.        
  296.                                         if (!usr_query) {
  297.                                                 nak(strtolower(mysql_error()));
  298.                                         }
  299.                                         else {
  300.                                                 ack("password changed");
  301.                                                 $_SESSION['logged_key'] = $usr_pw2;
  302.                                         }
  303.                                 }
  304.                                 else {
  305.                                         nak("new passwords do not match");
  306.                                 }
  307.                         }
  308.                         else {
  309.                                 nak("current password entered is incorrect");
  310.                         }
  311.                 }
  312.         }
  313.  
  314.         if (isset($_POST['a_email']) and !empty($_POST['a_email']) and isset($_POST['a_fname']) and !empty($_POST['a_fname']) and isset($_POST['a_lname']) and !empty($_POST['a_lname'])) {
  315.  
  316.                 $a_email = strtolower(trim(strip_tags($_POST['a_email'])));
  317.  
  318.                 if (preg_match("/@/",$a_email) and preg_match("/\./",$a_email)) {
  319.  
  320.                         $a_fname = ucwords(trim(strip_tags($_POST['a_fname'])));
  321.                         $a_lname = ucwords(trim(strip_tags($_POST['a_lname'])));
  322.  
  323.                         $addr_query = mysql_query("create table if not exists contacts (id varchar(255) not null, lname varchar(64) not null, fname varchar(64) not null, email varchar(255) not null);");
  324.  
  325.                         $addr_query = mysql_query("select * from contacts where id='{$_SESSION['logged_uid']}' and email='$a_email';");
  326.  
  327.                         if (mysql_num_rows($addr_query) > 0) {
  328.                                 nak("$a_email exists");
  329.                         }
  330.                         else {
  331.                                 $addr_query = mysql_query("insert into contacts values('{$_SESSION['logged_uid']}','$a_lname','$a_fname','$a_email');");
  332.  
  333.                                 if (isset($_FILES['a_photo']) and !empty($_FILES['a_photo'])) {
  334.  
  335.                                         if (is_uploaded_file($_FILES['a_photo']['tmp_name'])) {
  336.  
  337.                                                 if (($_FILES['a_photo']['type']=="image/gif") || ($_FILES['a_photo']['type']=="image/pjpeg") || ($_FILES['a_photo']['type']=="image/jpeg") || ($_FILES['a_photo']['type']=="image/png")) {
  338.  
  339.                                                         $a_path = sha1($_SESSION['logged_uid']);
  340.                                                         $a_file = sha1($a_email);                              
  341.  
  342.                                                         if (file_exists("images/contacts/$a_path/{$a_file}.gif")) {
  343.                                                                 unlink("images/contacts/$a_path/{$a_file}.gif");
  344.                                                         }
  345.  
  346.                                                         if (file_exists("images/contacts/$a_path/{$a_file}.jpg")) {
  347.                                                                 unlink("images/contacts/$a_path/{$a_file}.jpg");
  348.                                                         }
  349.  
  350.                                                         if (file_exists("images/contacts/$a_path/{$a_file}.png")) {
  351.                                                                 unlink("images/contacts/$a_path/{$a_file}.png");
  352.                                                         }
  353.  
  354.                                                         if (!file_exists("images/contacts/$a_path")) {
  355.                                                                 mkdir("images/contacts/$a_path",0700,true);
  356.                                                         }
  357.  
  358.                                                         if ($_FILES['a_photo']['type']=="image/gif") {
  359.                                                                 $res = copy($_FILES['a_photo']['tmp_name'], "images/contacts/$a_path/{$a_file}.gif");
  360.                                                                 kartero_resize_image("images/contacts/$a_path/{$a_file}.gif");
  361.                                                                 unlink($_FILES['a_photo']['tmp_name']);
  362.                                                         }
  363.  
  364.                                                         if (($_FILES['a_photo']['type']=="image/jpeg") or ($_FILES['a_photo']['type']=="image/pjpeg")) {
  365.                                                                 $res = copy($_FILES['a_photo']['tmp_name'], "images/contacts/$a_path/{$a_file}.jpg");
  366.                                                                 kartero_resize_image("images/contacts/$a_path/{$a_file}.jpg");
  367.                                                                 unlink($_FILES['a_photo']['tmp_name']);
  368.                                                         }
  369.  
  370.                                                         if ($_FILES['a_photo']['type']=="image/png") {
  371.                                                                 $res = copy($_FILES['a_photo']['tmp_name'], "images/contacts/$a_path/{$a_file}.png");
  372.                                                                 kartero_resize_image("images/contacts/$a_path/{$a_file}.png");
  373.                                                                 unlink($_FILES['a_photo']['tmp_name']);
  374.                                                         }
  375.                                                 }
  376.                                                 else {
  377.                                                         unlink($_FILES['a_photo']['tmp_name']);
  378.                                                 }
  379.                                         }
  380.                                         else {
  381.                                                 unlink($_FILES['a_photo']['tmp_name']);
  382.                                         }
  383.                                 }
  384.  
  385.                                 ack("$a_email added to contacts");
  386.                         }
  387.                 }
  388.                 else {
  389.                         nak("invalid email");
  390.                 }
  391.         }
  392.  
  393.         if (isset($_POST['a_del']) and !empty($_POST['a_del'])) {
  394.  
  395.                 $a_del = strtolower(trim(strip_tags($_POST['a_del'])));
  396.  
  397.                 $a_del_query = mysql_query("delete from contacts where id='{$_SESSION['logged_uid']}' and email='$a_del';");
  398.  
  399.                 if (!$a_del_query) {
  400.                         nak(strtolower(mysql_error()));
  401.                 }
  402.                 else {
  403.                         $a_path = sha1($_SESSION['logged_uid']);
  404.                         $a_file = sha1($a_del);                        
  405.  
  406.                         if (file_exists("images/contacts/$a_path/{$a_file}.gif")) {
  407.                                 unlink("images/contacts/$a_path/{$a_file}.gif");
  408.                         }
  409.  
  410.                         if (file_exists("images/contacts/$a_path/{$a_file}.jpg")) {
  411.                                 unlink("images/contacts/$a_path/{$a_file}.jpg");
  412.                         }
  413.  
  414.                         if (file_exists("images/contacts/$a_path/{$a_file}.png")) {
  415.                                 unlink("images/contacts/$a_path/{$a_file}.png");
  416.                         }
  417.  
  418.                         ack("$a_del removed from contacts");
  419.                 }
  420.         }
  421.  
  422.         if ($_SESSION['logged_lvl'] == "postmaster") {
  423.        
  424.                 $dom_query = mysql_query("select mode from domains where id='{$_SESSION['logged_uid']}'");
  425.                 $dom_query = mysql_fetch_row($dom_query);
  426.        
  427.                 if ($dom_query[0] == "0") {
  428.                         nak("{$_SESSION['logged_uid']} disabled by admin - new settings will take effect once it is re-enabled");
  429.                 }
  430.  
  431.                 $max_get = mysql_query("select max from domains where id='{$_SESSION['logged_uid']}'");
  432.  
  433.                 $pm_max = mysql_fetch_row($max_get);
  434.  
  435.                 $pm_get = mysql_query("select * from users where domain='{$_SESSION['logged_uid']}' order by id");
  436.  
  437.                 $pm_now = mysql_num_rows($pm_get);
  438.  
  439.                 if (isset($_POST['pm_id']) and isset($_POST['pm_name']) and isset($_POST['pm_pw']) and !empty($_POST['pm_id']) and !empty($_POST['pm_name']) and !empty($_POST['pm_pw'])) {
  440.  
  441.                         if (($pm_now >= $pm_max[0]) and ($pm_max[0] != 0)) {
  442.                                 nak("{$_SESSION['logged_uid']} limit exceeded");
  443.                         }
  444.                         else {
  445.                                 $pm_id = trim($_POST['pm_id']);
  446.                                 $pm_id = strtolower($pm_id);
  447.                
  448.                                 if (preg_match("/@/",$pm_id)) {
  449.                                         $pm_id = substr($pm_id,0,strpos($pm_id,"@"));
  450.                                 }
  451.                
  452.                                 $pm_addr = $pm_id . "@" . $_SESSION['logged_uid'];
  453.                
  454.                                 $alias_query = mysql_query("select id from aliases where id='$pm_addr'");
  455.                
  456.                                 if (mysql_fetch_row($alias_query) > 0) {
  457.                                         nak("$pm_addr alias exists");
  458.                                 }
  459.                                 else {
  460.                                         $pm_name = trim($_POST['pm_name']);
  461.                                         $pm_name = ucwords($pm_name);
  462.                
  463.                                         $pm_pw = trim($_POST['pm_pw']);
  464.                                         $pm_pw = crypt($pm_pw);
  465.                
  466.                                         $pm_init = substr($pm_id,0,1);
  467.                
  468.                                         $pm_maildir = "{$_SESSION['logged_uid']}/$pm_init/$pm_id";
  469.        
  470.                                         $pm_quota = kartero_dovecot_quota($_POST['pm_quota']);
  471.  
  472.                                         if ($pm_quota == "") {
  473.                                                 $pm_query = mysql_query("insert into users values('$pm_addr','$pm_pw','$pm_maildir/','$pm_name','{$_SESSION['logged_uid']}','1',NULL)");
  474.                                         }
  475.                                         else {
  476.                                                 $pm_query = mysql_query("insert into users values('$pm_addr','$pm_pw','$pm_maildir/','$pm_name','{$_SESSION['logged_uid']}','1','$pm_quota')");
  477.                                         }
  478.                
  479.                                         if (!$pm_query) {
  480.                                                 nak(strtolower(mysql_error()));
  481.                                         }
  482.                                         else {
  483.                                                 if (!file_exists("$mail_root/{$_SESSION['logged_uid']}")) {
  484.                                                         mkdir("$mail_root/{$_SESSION['logged_uid']}");
  485.                                                 }
  486.                
  487.                                                 if (!file_exists("$mail_root/{$_SESSION['logged_uid']}/$pm_init")) {
  488.                                                         mkdir("$mail_root/{$_SESSION['logged_uid']}/$pm_init");
  489.                                                 }
  490.                
  491.                                                 if (!file_exists("$mail_root/$pm_maildir")) {
  492.                                                         mkdir("$mail_root/$pm_maildir");
  493.                                                 }
  494.                
  495.                                                 if (!file_exists("$mail_root/$pm_maildir/cur")) {
  496.                                                         mkdir("$mail_root/$pm_maildir/cur");
  497.                                                 }
  498.                        
  499.                                                 if (!file_exists("$mail_root/$pm_maildir/new")) {
  500.                                                         mkdir("$mail_root/$pm_maildir/new");
  501.                                                 }
  502.                
  503.                                                 if (!file_exists("$mail_root/$pm_maildir/tmp")) {
  504.                                                         mkdir("$mail_root/$pm_maildir/tmp");
  505.                                                 }
  506.                
  507.                                                 ack("$pm_addr added");
  508.                                         }
  509.                                 }
  510.                         }
  511.                 }
  512.  
  513.                 if (isset($_POST['pm_mod']) and !empty($_POST['pm_mod'])) {
  514.                        
  515.                         $pm_mod = trim($_POST['pm_mod']);
  516.        
  517.                         if (isset($_POST['pm_name']) and !empty($_POST['pm_name'])) {
  518.        
  519.                                 $pm_name = trim($_POST['pm_name']);
  520.                                 $pm_name = ucwords($pm_name);
  521.        
  522.                                 $pm_query = mysql_query("select name from users where id='$pm_mod'");
  523.        
  524.                                 $name_get = mysql_fetch_row($pm_query);
  525.        
  526.                                 if ($name_get[0] != $pm_name) {
  527.        
  528.                                         $pm_query = mysql_query("update users set name='$pm_name' where id='$pm_mod'");
  529.        
  530.                                         if (!$pm_query) {
  531.                                                 nak(strtolower(mysql_error()));
  532.                                         }
  533.                                         else {
  534.                                                 ack("$pm_mod complete name updated");
  535.                                         }
  536.                                 }
  537.                         }
  538.        
  539.                         if (isset($_POST['pm_pass']) and !empty($_POST['pm_pass'])) {
  540.        
  541.                                 $pm_pass = $_POST['pm_pass'];
  542.                                 $pm_pass = crypt($pm_pass);
  543.        
  544.                                 $pm_query = mysql_query("update users set pw='$pm_pass' where id='$pm_mod'");
  545.        
  546.                                 if (!$pm_query) {
  547.                                         nak(strtolower(mysql_error()));
  548.                                 }
  549.                                 else {
  550.                                         ack("$pm_mod password updated");
  551.                                 }
  552.                         }
  553.  
  554.                         if (isset($_POST['pm_quota'])) {
  555.        
  556.                                 $pm_quota = kartero_dovecot_quota($_POST['pm_quota']);
  557.        
  558.                                 $pm_query = mysql_query("select quota from users where id='$pm_mod'");
  559.        
  560.                                 $quota_get = mysql_fetch_row($pm_query);
  561.        
  562.                                 if ($quota_get[0] != $pm_quota) {
  563.        
  564.                                         if ($pm_quota == "") {
  565.                                                 $pm_query = mysql_query("update users set quota=NULL where id='$pm_mod'");
  566.                                         }
  567.                                         else {
  568.                                                 $pm_query = mysql_query("update users set quota='$pm_quota' where id='$pm_mod'");
  569.                                         }
  570.        
  571.                                         if (!$pm_query) {
  572.                                                 nak(strtolower(mysql_error()));
  573.                                         }
  574.                                         else {
  575.                                                 ack("$pm_mod quota updated");
  576.                                         }
  577.                                 }
  578.                         }
  579.                 }
  580.        
  581.                 if (isset($_POST['pm_set']) and !empty($_POST['pm_set']) and isset($_POST['pm_do']) and !empty($_POST['pm_do'])) {
  582.        
  583.                         $pm_set = trim($_POST['pm_set']);
  584.                         $pm_do = trim($_POST['pm_do']);
  585.        
  586.                         if ($pm_do == "disable") {
  587.                                 $pm_do = "0";
  588.                         }
  589.        
  590.                         if ($pm_do == "enable") {
  591.                                 $pm_do = "1";
  592.                         }
  593.                
  594.                         $pm_query = mysql_query("update aliases set mode='$pm_do' where alias='$pm_set'");
  595.                         $pm_query = mysql_query("update users set mode='$pm_do' where id='$pm_set'");
  596.        
  597.                         if (!$pm_query) {
  598.                                 nak(strtolower(mysql_error()));
  599.                         }
  600.                         else {
  601.        
  602.                                 $pm_query = mysql_query("select alias from aliases where alias='$pm_set'");
  603.                                 $pm_aka = mysql_num_rows($pm_query);
  604.        
  605.                                 if ($pm_do == "0") {
  606.        
  607.                                         if ($pm_aka > 0) {
  608.        
  609.                                                 if ($pm_aka < 2) {
  610.                                                         ack("$pm_set account and 1 alias disabled");
  611.                                                 }
  612.                                                 else {
  613.                                                         ack("$pm_set account and $pm_aka aliases disabled");
  614.                                                 }
  615.                                         }
  616.                                         else {
  617.                                                 ack("$pm_set account disabled");
  618.                                         }
  619.                                 }
  620.        
  621.                                 if ($pm_do == "1") {
  622.        
  623.                                         if (mysql_fetch_row($pm_query) > 0) {
  624.        
  625.                                                 if ($pm_aka < 2) {
  626.                                                         ack("$pm_set account and 1 alias enabled");
  627.                                                 }
  628.                                                 else {
  629.                                                         ack("$pm_set account and $pm_aka aliases enabled");
  630.                                                 }
  631.                                         }
  632.                                         else {
  633.                                                 ack("$pm_set account enabled");
  634.                                         }
  635.                                 }
  636.                         }
  637.                 }
  638.        
  639.                 if (isset($_POST['pm_del']) and !empty($_POST['pm_del'])) {
  640.                        
  641.                         $pm_del = trim($_POST['pm_del']);
  642.        
  643.                         $pm_query = mysql_query("delete from aliases where alias='$pm_del'");
  644.                         $pm_query = mysql_query("delete from users where id='$pm_del'");
  645.        
  646.                         if (!$pm_query) {
  647.                                 nak(strtolower(mysql_error()));
  648.                         }
  649.                         else {
  650.                                 $pm_init = substr($pm_del,0,1);
  651.                                 $pm_box = substr($pm_del,0,strpos($pm_del,"@"));
  652.        
  653.                                 if (file_exists("$mail_root/{$_SESSION['logged_uid']}/$pm_init/$pm_box")) {
  654.                                         rmdirr("$mail_root/{$_SESSION['logged_uid']}/$pm_init/$pm_box");
  655.                                 }
  656.        
  657.                                 if (count(glob("$mail_root/{$_SESSION['logged_uid']}/$pm_init/*")) < 1) {
  658.                                         rmdir("$mail_root/{$_SESSION['logged_uid']}/$pm_init");
  659.                                 }
  660.        
  661.                                 ack("$pm_del deleted");
  662.                         }
  663.                 }
  664.        
  665.                 if (isset($_POST['alias_add']) and !empty($_POST['alias_add']) and isset($_POST['alias_to']) and !empty($_POST['alias_to'])) {
  666.        
  667.                         $alias_add = trim($_POST['alias_add']);
  668.        
  669.                         if (preg_match("/@/",$alias_add)) {
  670.                                 $alias_add = substr($alias_add,0,strpos($alias_add,"@"));
  671.                         }
  672.        
  673.                         $alias_add = "$alias_add@{$_SESSION['logged_uid']}";
  674.        
  675.                         $alias_to = trim($_POST['alias_to']);
  676.        
  677.                         $alias_query = mysql_query("select id from users where id='$alias_add'");
  678.        
  679.                         if (mysql_num_rows($alias_query) > 0) {
  680.                                 nak("$alias_add account exists");
  681.                         }
  682.                         else {
  683.                                 if (!preg_match("/@/",$alias_to) or preg_match("/@{$_SESSION['logged_uid']}/",$alias_to)) {
  684.        
  685.                                         if (preg_match("/@{$_SESSION['logged_uid']}/",$alias_to)) {
  686.                                                 $alias_to = substr($alias_to,0,strpos($alias_to,"@"));
  687.                                         }
  688.                
  689.                                         $alias_to = "$alias_to@{$_SESSION['logged_uid']}";
  690.                
  691.                                         $alias_query = mysql_query("select id from users where id='$alias_to'");
  692.                
  693.                                         if (mysql_num_rows($alias_query) < 1) {
  694.                                                 nak("$alias_to does not exist");
  695.                                         }
  696.                                         else {
  697.                                                 $alias_query = mysql_query("insert into aliases values('$alias_add','$alias_to','{$_SESSION['logged_uid']}','1')");
  698.                
  699.                                                 if (!$alias_query) {
  700.                                                         nak(strtolower(mysql_error()));
  701.                                                 }
  702.                                                 else {
  703.                                                         ack("$alias_add added");
  704.                                                 }
  705.                                         }
  706.                                 }
  707.                                 else {
  708.                                         $alias_query = mysql_query("insert into aliases values('$alias_add','$alias_to','{$_SESSION['logged_uid']}','1')");
  709.        
  710.                                         if (!$alias_query) {
  711.                                                 nak(strtolower(mysql_error()));
  712.                                         }
  713.                                         else {
  714.                                                 ack("$alias_add added");
  715.                                         }
  716.                                 }
  717.                         }
  718.                 }
  719.        
  720.                 if (isset($_POST['alias_mod']) and !empty($_POST['alias_mod']) and isset($_POST['alias_to']) and !empty($_POST['alias_to'])) {
  721.                        
  722.                         $alias_mod = trim($_POST['alias_mod']);
  723.        
  724.                         $alias_to = trim($_POST['alias_to']);
  725.        
  726.                         if (!preg_match("/@/",$alias_to) or preg_match("/@{$_SESSION['logged_uid']}/",$alias_to)) {
  727.        
  728.                                 if (preg_match("/@{$_SESSION['logged_uid']}/",$alias_to)) {
  729.                                         $alias_to = substr($alias_to,0,strpos($alias_to,"@"));
  730.                                 }
  731.        
  732.                                 $alias_to = "$alias_to@{$_SESSION['logged_uid']}";
  733.        
  734.                                 $alias_query = mysql_query("select id from users where id='$alias_to'");
  735.        
  736.                                 if (mysql_num_rows($alias_query) < 1) {
  737.                                         nak("$alias_to does not exist");
  738.                                 }
  739.                                 else {
  740.                                         $alias_query = mysql_query("update aliases set alias='$alias_to' where id='$alias_mod'");
  741.        
  742.                                         if (!$alias_query) {
  743.                                                 nak(strtolower(mysql_error()));
  744.                                         }
  745.                                         else {
  746.                                                 ack("$alias_mod updated");
  747.                                         }
  748.                                 }
  749.                         }
  750.                         else {
  751.        
  752.                                 $alias_query = mysql_query("update aliases set alias='$alias_to' where id='$alias_mod'");
  753.                
  754.                                 if (!$alias_query) {
  755.                                         nak(strtolower(mysql_error()));
  756.                                 }
  757.                                 else {
  758.                                         ack("$alias_mod updated");
  759.                                 }
  760.                         }
  761.                 }
  762.        
  763.                 if (isset($_POST['alias_set']) and !empty($_POST['alias_set']) and isset($_POST['alias_do']) and !empty($_POST['alias_do'])) {
  764.        
  765.                         $alias_set = trim($_POST['alias_set']);
  766.                         $alias_do = trim($_POST['alias_do']);
  767.        
  768.                         if ($alias_do == "disable") {
  769.                                 $alias_do = "0";
  770.                                 $alias_query = mysql_query("update aliases set mode='$alias_do' where id='$alias_set'");
  771.        
  772.                                 if (!$alias_query) {
  773.                                         nak(strtolower(mysql_error()));
  774.                                 }
  775.                                 else {
  776.                                         ack("$alias_set alias disabled");
  777.                                 }
  778.                         }
  779.        
  780.                         if ($alias_do == "enable") {
  781.        
  782.                                 $alias_query = mysql_query("select alias from aliases where id='$alias_set'");
  783.                                 $alias_recipient = mysql_fetch_row($alias_query);
  784.                                 $alias_recipient = $alias_recipient[0];
  785.        
  786.                                 $usr_query = mysql_query("select mode from users where id='$alias_recipient'");
  787.                                 $alias_recipient_mode = mysql_fetch_row($usr_query);
  788.                                 $alias_recipient_mode = $alias_recipient_mode[0];
  789.        
  790.                                 if ($alias_recipient_mode == "0") {
  791.                                         nak("cannot enable $alias_set alias while $alias_recipient recipient account is disabled");
  792.                                 }
  793.                                 else {
  794.                                         $alias_do = "1";
  795.                                         $alias_query = mysql_query("update aliases set mode='$alias_do' where id='$alias_set'");
  796.                
  797.                                         if (!$alias_query) {
  798.                                                 nak(strtolower(mysql_error()));
  799.                                         }
  800.                                         else {
  801.                                                 ack("$alias_set alias enabled");
  802.                                         }
  803.                                 }
  804.                         }
  805.                 }
  806.        
  807.                 if (isset($_POST['alias_del']) and !empty($_POST['alias_del'])) {
  808.                        
  809.                         $alias_del = trim($_POST['alias_del']);
  810.                         $alias_query = mysql_query("delete from aliases where id='$alias_del'");
  811.        
  812.                         if (!$alias_query) {
  813.                                 nak(strtolower(mysql_error()));
  814.                         }
  815.                         else {
  816.                                 ack("$alias_del deleted");
  817.                         }
  818.                 }
  819.         }
  820.        
  821.         if ($_SESSION['logged_lvl'] == "administrator") {
  822.  
  823.                 if (isset($_POST['dom_name']) and isset($_POST['dom_pass']) and isset($_POST['dom_max']) and !empty($_POST['dom_name']) and !empty($_POST['dom_pass']) and is_numeric($_POST['dom_max'])) {
  824.        
  825.                         $dom_name = trim($_POST['dom_name']);
  826.        
  827.                         $dom_pass = trim($_POST['dom_pass']);
  828.                         $dom_pass = crypt($dom_pass);
  829.        
  830.                         $dom_max = trim($_POST['dom_max']);
  831.        
  832.                         $dom_query = mysql_query("insert into domains values('$dom_name','$dom_pass','$dom_max','1')");
  833.        
  834.                         if (!$dom_query) {
  835.                                 nak(strtolower(mysql_error()));
  836.                         }
  837.                         else {
  838.                                 if (!file_exists("$mail_root/$dom_name")) {
  839.                                         mkdir("$mail_root/$dom_name");
  840.                                 }
  841.        
  842.                                 ack("$dom_name added");
  843.                         }
  844.                 }
  845.        
  846.                 if (isset($_POST['dom_mod']) and !empty($_POST['dom_mod'])) {
  847.                        
  848.                         $dom_mod = trim($_POST['dom_mod']);
  849.        
  850.                         if (isset($_POST['dom_pass']) and !empty($_POST['dom_pass'])) {
  851.        
  852.                                 $dom_pass = $_POST['dom_pass'];
  853.                                 $dom_pass = crypt($dom_pass);
  854.        
  855.                                 $dom_query = mysql_query("update domains set pw='$dom_pass' where id='$dom_mod'");
  856.        
  857.                                 if (!$dom_query) {
  858.                                         nak(strtolower(mysql_error()));
  859.                                 }
  860.                                 else {
  861.                                         ack("$dom_mod postmaster password updated");
  862.                                 }
  863.                         }
  864.        
  865.                         if (isset($_POST['dom_max']) and is_numeric($_POST['dom_max'])) {
  866.        
  867.                                 $dom_max = $_POST['dom_max'];
  868.        
  869.                                 $dom_query = mysql_query("select max from domains where id='$dom_mod'");
  870.        
  871.                                 $max_get = mysql_fetch_row($dom_query);
  872.        
  873.                                 if ($max_get[0] != $dom_max) {
  874.        
  875.                                         $dom_query = mysql_query("update domains set max='$dom_max' where id='$dom_mod'");
  876.        
  877.                                         if (!$dom_query) {
  878.                                                 nak(strtolower(mysql_error()));
  879.                                         }
  880.                                         else {
  881.                                                 ack("$dom_mod account limit updated");
  882.                                         }
  883.                                 }
  884.                         }
  885.                 }
  886.        
  887.                 if (isset($_POST['dom_set']) and !empty($_POST['dom_set']) and isset($_POST['dom_do']) and !empty($_POST['dom_do'])) {
  888.        
  889.                         $dom_set = trim($_POST['dom_set']);
  890.                         $dom_do = trim($_POST['dom_do']);
  891.        
  892.                         if ($dom_do == "disable") {
  893.                                 $dom_do = "0";
  894.                         }
  895.        
  896.                         if ($dom_do == "enable") {
  897.                                 $dom_do = "1";
  898.                         }
  899.                
  900.                         $dom_query = mysql_query("update domains set mode='$dom_do' where id='$dom_set'");
  901.        
  902.                         if (!$dom_query) {
  903.                                 nak(strtolower(mysql_error()));
  904.                         }
  905.                         else {
  906.                                 if ($dom_do == "0") {
  907.                                         ack("$dom_set disabled");
  908.                                 }
  909.        
  910.                                 if ($dom_do == "1") {
  911.                                         ack("$dom_set enabled");
  912.                                 }
  913.                         }
  914.                 }
  915.        
  916.                 if (isset($_POST['dom_del']) and !empty($_POST['dom_del'])) {
  917.                        
  918.                         $dom_del = trim($_POST['dom_del']);
  919.        
  920.                         $dom_query = mysql_query("delete from aliases where domain='$dom_del'");
  921.                         $dom_query = mysql_query("delete from users where domain='$dom_del'");
  922.                         $dom_query = mysql_query("delete from domains where id='$dom_del'");
  923.        
  924.                         if (!$dom_query) {
  925.                                 nak(strtolower(mysql_error()));
  926.                         }
  927.                         else {
  928.                                 if (file_exists("$mail_root/$dom_del")) {
  929.                                         rmdirr("$mail_root/$dom_del");
  930.                                 }
  931.                                 ack("$dom_del deleted");
  932.                         }
  933.                 }
  934.         }
  935.        
  936.         echo "</td></tr>";
  937.  
  938.         echo "<tr><td valign=\"top\">";
  939.  
  940.         if ($_SESSION['logged_lvl'] == "subscriber") {
  941.  
  942.                 $filedrop_box = sha1(microtime(true));
  943.  
  944.                 $host = "{127.0.0.1:143/imap/notls/norsh}";
  945.  
  946.                 if (!isset($_POST['box']) or empty($_POST['box'])) {
  947.                         $folder = "INBOX";
  948.                 }
  949.                 else {
  950.                         $folder = trim(strip_tags($_POST['box']));
  951.                 }
  952.  
  953.                 $mbox = @imap_open("{$host}$folder", $_SESSION['logged_uid'], $_SESSION['logged_key'], CL_EXPUNGE) or die(imap_last_error());
  954.  
  955.                 if (isset($_POST['move_msg']) and !empty($_POST['move_msg']) and isset($_POST['move_box']) and !empty($_POST['move_box'])) {
  956.  
  957.                         $move_msg = trim(strip_tags($_POST['move_msg']));
  958.                         $move_box = imap_utf7_encode(ucwords(trim(preg_replace("/[^a-z0-9 ]/i","",strip_tags($_POST['move_box'])))));
  959.  
  960.                         if (($move_box != "Sent") and ($move_box != "Trash")) {
  961.                                 imap_mail_move($mbox,$move_msg,$move_box,CP_UID);
  962.                                 imap_expunge($mbox);
  963.                         }
  964.                 }
  965.  
  966.                 if (isset($_POST['new_box']) and !empty($_POST['new_box'])) {
  967.  
  968.                         $new_box = imap_utf7_encode(ucwords(trim(preg_replace("/[^a-z0-9 ]/i","",strip_tags($_POST['new_box'])))));
  969.                         imap_createmailbox($mbox,"{$host}$new_box");
  970.                 }
  971.  
  972.                 if (isset($_POST['del_box']) and !empty($_POST['del_box'])) {
  973.  
  974.                         $del_box = imap_utf7_encode(ucwords(trim(preg_replace("/[^a-z0-9 ]/i","",strip_tags($_POST['del_box'])))));
  975.                         $del_siv = $del_box;
  976.  
  977.                         if (($del_box != "INBOX") and ($del_box != "Sent") and ($del_box != "Trash")) {
  978.                                 imap_deletemailbox($mbox,"{$host}$del_box");
  979.                         }
  980.                 }
  981.  
  982.                 echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
  983.  
  984.                 if (isset($_POST['reply_from']) and isset($_POST['reply_to']) and isset($_POST['reply_subj']) and isset($_POST['reply_body']) and !empty($_POST['reply_from']) and !empty($_POST['reply_to']) and !empty($_POST['reply_subj']) and !empty($_POST['reply_body'])) {
  985.                
  986.                         $reply_from = trim($_POST['reply_from']);
  987.                         $reply_to = trim($_POST['reply_to']);
  988.                         $reply_subj = trim($_POST['reply_subj']);
  989.                         $reply_body = trim($_POST['reply_body']);                      
  990.                         $reply_headers = "From: $reply_from\nX-Mailer: Kartero/1.0 (PHP/" . phpversion() . ")";
  991.  
  992.                         if (isset($_POST['reply_cc']) and !empty($_POST['reply_cc'])) {
  993.                        
  994.                                 $reply_cc = trim($_POST['reply_cc']);
  995.                                
  996.                                 $reply_headers = "$reply_headers\nCc: $reply_cc";
  997.                         }
  998.  
  999.                         if (isset($_POST['reply_bcc']) and !empty($_POST['reply_bcc'])) {
  1000.                        
  1001.                                 $reply_bcc = trim($_POST['reply_bcc']);
  1002.                                
  1003.                                 $reply_headers = "$reply_headers\nBcc: $reply_bcc";
  1004.                         }
  1005.  
  1006.                         if (isset($_POST['filedrop_box']) and !empty($_POST['filedrop_box'])) {
  1007.  
  1008.                                 $do_filedrop_box = $_POST['filedrop_box'];
  1009.  
  1010.                                 if (file_exists("attach/i/$fileUsr/$do_filedrop_box") and (count(glob("attach/i/$fileUsr/$do_filedrop_box/*")) > 0)) {
  1011.  
  1012.                                         $mime_boundary = md5(microtime(true));
  1013.  
  1014.                                         $reply_headers .= "\nMIME-Version: 1.0";
  1015.                                         $reply_headers .= "\nContent-Type: multipart/mixed; boundary=\"{$mime_boundary}\"";
  1016.                                        
  1017.                                         $reply_body = "\nThis is a multi-part message in MIME format.\n\n--{$mime_boundary}\nContent-type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\n{$reply_body}";
  1018.  
  1019.                                         $do_reply_from = extract_emails_from($reply_from);
  1020.                                         $do_reply_to = extract_emails_from($reply_to);
  1021.  
  1022.                                         $do_filedrop_msg = glob("attach/i/$fileUsr/$do_filedrop_box/*");
  1023.  
  1024.                                         sort($do_filedrop_msg);
  1025.                                         reset($do_filedrop_msg);
  1026.  
  1027.                                         foreach ($do_filedrop_msg as $do_filedrop_put) {
  1028.  
  1029.                                                 $do_filedrop_nom = str_replace("attach/i/$fileUsr/$do_filedrop_box/","",$do_filedrop_put);
  1030.  
  1031.                                                 $reply_body = $reply_body . "\n\n--{$mime_boundary}\nContent-Type: application/octet-stream; name=\"$do_filedrop_nom\"\nContent-Disposition: attachment; filename=\"$do_filedrop_nom\"\nContent-Transfer-Encoding: base64\n\n" . chunk_split(base64_encode(file_get_contents($do_filedrop_put)));
  1032.                                         }
  1033.  
  1034.                                         $reply_body = $reply_body . "--{$mime_boundary}--";
  1035.  
  1036.                                         rmdirr("attach/i/$fileUsr/$do_filedrop_box");
  1037.  
  1038.                                         if (count(glob("attach/i/$fileUsr/*")) == 0) {
  1039.                                                 rmdirr("attach/i/$fileUsr");
  1040.                                         }
  1041.                                 }
  1042.                         }
  1043.  
  1044.                         if ($_POST['redirect'] == 1) {
  1045.  
  1046.                                 $redirect_date = date("D, j M Y H:i:s O (T)");
  1047.  
  1048.                                 $reply_headers = "Resent-Date: $redirect_date\nResent-To: $reply_to\n";
  1049.  
  1050.  
  1051.                                 if (isset($_POST['reply_cc']) and !empty($_POST['reply_cc'])) {
  1052.                        
  1053.                                         $reply_cc = trim($_POST['reply_cc']);
  1054.                                
  1055.                                         $reply_headers = $reply_headers . "Resent-Cc: $reply_cc\n";
  1056.                                 }
  1057.        
  1058.                                 if (isset($_POST['reply_bcc']) and !empty($_POST['reply_bcc'])) {
  1059.                                
  1060.                                         $reply_bcc = trim($_POST['reply_bcc']);
  1061.                                        
  1062.                                         $reply_headers = $reply_headers . "Resent-Bcc: $reply_bcc\n";
  1063.                                 }
  1064.  
  1065.                                 $reply_headers = $reply_headers . imap_fetchheader($mbox,$_POST['msg'],FT_UID|FT_PREFETCHTEXT);
  1066.  
  1067.                                 $reply_body = imap_body($mbox,$_POST['msg'],FT_UID);
  1068.                         }
  1069.  
  1070.                         imap_createmailbox($mbox,"{$host}Sent");
  1071.  
  1072.                         $reply_date = date ("d-M-Y H:i:s O");
  1073.                        
  1074.                         $reply_body = preg_replace("#(?<!\r)\n#si", "\n", $reply_body);
  1075.                         $reply_headers = preg_replace('#(?<!\r)\n#si', "\n", $reply_headers);
  1076.  
  1077.                         imap_append($mbox,"{$host}Sent","To: $reply_to\nSubject: $reply_subj\nDate: $reply_date\n$reply_headers\n\n$reply_body\n");
  1078.  
  1079.                         $reply_fenv = extract_emails_from($reply_from);
  1080.  
  1081.                         mail($reply_to, $reply_subj, $reply_body, $reply_headers, "-f {$reply_fenv[0]}");
  1082.  
  1083.                         if ($_POST['ack'] == 1) {
  1084.  
  1085.                                 imap_setflag_full($mbox, $_POST['msg'], '\\Answered',ST_UID);
  1086.                         }
  1087.                 }
  1088.  
  1089.                 if (isset($_POST['not']) and !empty($_POST['not']) and is_numeric($_POST['not'])) {
  1090.  
  1091.                         imap_clearflag_full($mbox, $_POST['msg'], '\\Seen',ST_UID);
  1092.                         imap_expunge($mbox);
  1093.                 }
  1094.  
  1095.                 if (isset($_POST['emt']) and !empty($_POST['emt']) and is_numeric($_POST['emt'])) {
  1096.  
  1097.                         imap_delete($mbox,'1:*');
  1098.                         imap_expunge($mbox);
  1099.                 }
  1100.  
  1101.                 echo "<tr><td valign=\"top\" width=\"800\"><div id=\"main\" class=\"main\">";
  1102.  
  1103.                 if (isset($_POST['get']) and !empty($_POST['get'])) {
  1104.                         include("read.php");
  1105.                 }
  1106.                 elseif (isset($_POST['rep']) and !empty($_POST['rep'])) {
  1107.                         include("send.php");
  1108.                 }
  1109.                 elseif (isset($_POST['new']) and !empty($_POST['new'])) {
  1110.                         include("post.php");
  1111.                 }
  1112.                 elseif (isset($_POST['dig']) and !empty($_POST['dig'])) {
  1113.                         include("search.php");
  1114.                 }
  1115.                 elseif (isset($_POST['addr']) and !empty($_POST['addr'])) {
  1116.  
  1117.                         echo "<title>Kartero - Contacts</title>";
  1118.  
  1119.                         echo "<style> .hide { display: none; } </style>";
  1120.  
  1121.                         echo "<div class=\"message\">";
  1122.                         echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"100%\"><tr><td>";
  1123.  
  1124.                         echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
  1125.  
  1126.                         echo "<tr>";
  1127.                         echo "<td class=\"label\"><img src=\"images/mail-contacts.png\" border=\"0\" width=\"32\" height=\"32\" onclick=\"document.getElementById('list').className ='';document.getElementById('add').className='hide'\"></td>";
  1128.                         echo "<td class=\"label\"><img src=\"images/mail-contacts.png\" border=\"0\" width=\"32\" height=\"32\" onclick=\"document.getElementById('list').className ='hide';document.getElementById('add').className=''\"></td>";
  1129. echo "</tr>";
  1130.  
  1131.                         echo "<tr><td class=\"label\">list</td><td class=\"label\">add</td></tr>";
  1132.  
  1133.                         echo "</table>";
  1134.  
  1135.                         echo "</td></tr></table>";
  1136.                         echo "</div>";
  1137.  
  1138.                         $addr_query = mysql_query("select * from contacts where id='{$_SESSION['logged_uid']}' order by lname, fname, email;");
  1139.  
  1140.                         if (($_POST['addr'] == "add") or (mysql_num_rows($addr_query) < 1)) {
  1141.                                 echo "<div id=\"add\">";
  1142.                         }
  1143.                         else {
  1144.                                 echo "<div id=\"add\" class=\"hide\">";
  1145.                         }
  1146.  
  1147.                         echo "<div class=\"spacer\"></div>";
  1148.                         echo "<table border=\"0\" cellspacing=\"1\" cellpadding=\"1\" width=\400\">";
  1149.                         echo "<form method=\"post\" enctype=\"multipart/form-data\">";
  1150.                         echo "<input type=\"hidden\" name=\"addr\" value=\"add\">";
  1151.                
  1152.                         echo "<tr><td><input class=\"input\" type=\"text\" name=\"a_email\" maxlength=\"255\" autocomplete=\"off\" required autofocus></td><td>email address</td></tr>";
  1153.                         echo "<tr><td><input class=\"input\" type=\"text\" name=\"a_fname\" maxlength=\"64\" autocomplete=\"off\" required></td><td>first name</td></tr>";
  1154.                         echo "<tr><td><input class=\"input\" type=\"text\" name=\"a_lname\" maxlength=\"64\" autocomplete=\"off\" required></td><td>last name</td></tr>";
  1155.                         echo "<tr><td><input type=\"file\" name=\"a_photo\"></td><td>optional photo</td></tr>";
  1156.                         echo "<tr><td><input class=\"button\" type=\"submit\" value=\"add contact\"></td><td></td></tr>";
  1157.  
  1158.                         echo "</form>";
  1159.                         echo "</table>";
  1160.                         echo "</div>";
  1161.  
  1162.                         if ($_POST['addr'] == "list") {
  1163.                                 echo "<div id=\"list\">";
  1164.                         }
  1165.                         else {
  1166.                                 echo "<div id=\"list\" class=\"hide\">";
  1167.                         }
  1168.  
  1169.                         if (mysql_num_rows($addr_query) > 0) {
  1170.  
  1171.                                 echo "<div class=\"spacer\"></div>";
  1172.                                 echo "<table border=\"0\" cellspacing=\"1\" cellpadding=\"2\" bgcolor=\"#cccccc\">";
  1173.  
  1174.                                 while ($addr_row = mysql_fetch_array($addr_query)) {
  1175.                        
  1176.                                         if ($bgColor == "#ffffff") {
  1177.                                                 $bgColor = "#fdfdfd";
  1178.                                         }
  1179.                                         else {
  1180.                                                 $bgColor = "#ffffff";
  1181.                                         }
  1182.  
  1183.                                         echo "<form method=\"post\">";
  1184.                                         echo "<input type=\"hidden\" name=\"addr\" value=\"list\">";
  1185.                                         echo "<input type=\"hidden\" name=\"a_del\" value=\"{$addr_row[email]}\">";
  1186.                                         echo "<tr bgcolor=\"$bgColor\">";
  1187.                                         echo "<td valign=\"bottom\" width=\"24\"><input type=\"image\" src=\"images/sieve-del.png\"></td>";
  1188.                                         echo "<td>{$addr_row[fname]} {$addr_row[lname]}</td><td>{$addr_row[email]}</td>";
  1189.                                         echo "</tr>";
  1190.                                         echo "</form>";
  1191.                                 }
  1192.  
  1193.                                 echo "</table>";
  1194.                                 echo "</div>";
  1195.  
  1196.                                 unset($bgColor);
  1197.                         }
  1198.                 }
  1199.                 elseif (isset($_POST['set']) and !empty($_POST['set'])) {
  1200.  
  1201.                         echo "<title>Kartero - Settings</title>";
  1202.  
  1203.                         echo "<style> .hide { display: none; } </style>";
  1204.  
  1205.                         echo "<div class=\"message\">";
  1206.                         echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"100%\"><tr><td>";
  1207.  
  1208.                         echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
  1209.  
  1210.                         echo "<tr>";
  1211.                         echo "<td class=\"label\"><img src=\"images/mail-settings.png\" border=\"0\" width=\"32\" height=\"32\" onclick=\"document.getElementById('account').className ='';document.getElementById('folders').className='hide';document.getElementById('filters').className='hide'\"></td>";
  1212.                         echo "<td class=\"label\"><img src=\"images/mail-settings.png\" border=\"0\" width=\"32\" height=\"32\" onclick=\"document.getElementById('account').className ='hide';document.getElementById('folders').className='';document.getElementById('filters').className='hide'\"></td>";
  1213.                         echo "<td class=\"label\"><img src=\"images/mail-settings.png\" border=\"0\" width=\"32\" height=\"32\" onclick=\"document.getElementById('account').className ='hide';document.getElementById('folders').className='hide';document.getElementById('filters').className=''\"></td>";
  1214. echo "</tr>";
  1215.  
  1216.                         echo "<tr><td class=\"label\">account</td><td class=\"label\">folders</td><td class=\"label\">filters</td></tr>";
  1217.  
  1218.                         echo "</table>";
  1219.  
  1220.                         echo "</td></tr></table>";
  1221.                         echo "</div>";
  1222.  
  1223.                         if ($_POST['set'] == "account") {
  1224.                                 echo "<div id=\"account\">";
  1225.                         }
  1226.                         else {
  1227.                                 echo "<div id=\"account\" class=\"hide\">";
  1228.                         }
  1229.  
  1230.                         echo "<div class=\"spacer\"></div>";
  1231.                         echo "<table border=\"0\" cellspacing=\"1\" cellpadding=\"1\">";
  1232.                         echo "<form method=\"post\">";
  1233.                         echo "<input type=\"hidden\" name=\"set\" value=\"account\">";
  1234.                         echo "<tr bgcolor=\"#ffffff\"><td width=\"400\"><input class=\"input\" type=\"text\" name=\"usr_name\" value=\"$usr_name\" autocomplete=\"off\" maxlength=\"128\" required autofocus></td><td>name</td></tr>";
  1235.                         echo "<tr bgcolor=\"#ffffff\"><td><input class=\"input\" type=\"password\" name=\"usr_pw1\" autocomplete=\"off\" maxlength=\"64\"></td><td>current password</td></tr>";
  1236.  
  1237.                         echo "<tr bgcolor=\"#ffffff\"><td><input class=\"input\" type=\"password\" name=\"usr_pw2\" autocomplete=\"off\" maxlength=\"64\"></td><td>new password";
  1238.  
  1239.                         if (isset($_POST['usr_pw1']) and !empty($_POST['usr_pw1']) and isset($_POST['usr_pw2']) and (strlen($_POST['usr_pw2']) < 8)) {
  1240.                                 echo " <font color=\"red\">too short</font>";
  1241.                         }
  1242.  
  1243.                         echo "</td></tr>";
  1244.  
  1245.                         echo "<tr bgcolor=\"#ffffff\"><td><input class=\"input\" type=\"password\" name=\"usr_pw3\" autocomplete=\"off\" maxlength=\"64\"></td><td>new password";
  1246.  
  1247.                         if (isset($_POST['usr_pw1']) and !empty($_POST['usr_pw1']) and isset($_POST['usr_pw3']) and (strlen($_POST['usr_pw3']) < 8)) {
  1248.                                 echo " <font color=\"red\">too short</font>";
  1249.                         }
  1250.  
  1251.                         echo "</td></tr>";
  1252.  
  1253.                         echo "<tr bgcolor=\"#ffffff\"><td><input class=\"button\" type=\"submit\" value=\"update\"></td><td></td></tr>";
  1254.                         echo "</form></table>";
  1255.                         echo "</div>";
  1256.  
  1257.                         if ($_POST['set'] == "folders") {
  1258.                                 echo "<div id=\"folders\">";
  1259.                         }
  1260.                         else {
  1261.                                 echo "<div id=\"folders\" class=\"hide\">";
  1262.                         }
  1263.  
  1264.                         echo "<div class=\"spacer\"></div>";
  1265.                         echo "<table border=\"0\" cellspacing=\"1\" cellpadding=\"1\">";
  1266.                         echo "<form method=\"post\">";
  1267.                         echo "<input type=\"hidden\" name=\"set\" value=\"folders\">";
  1268.                         echo "<tr bgcolor=\"#ffffff\"><td width=\"200\"><input class=\"input\" type=\"text\" name=\"new_box\" autocomplete=\"off\" maxlength=\"200\" required autofocus></td>";
  1269.                         echo "<td width=\"197\"><input class=\"button\" type=\"submit\" value=\"create folder\"></td><td></td></tr>";
  1270.                         echo "</form>";
  1271.  
  1272.                         $usr_box = imap_list($mbox,$host,"*");
  1273.                         $usr_box = array_diff($usr_box,array("{$host}INBOX","{$host}Sent","{$host}Trash"));
  1274.  
  1275.                         if (count($usr_box) > 0) {
  1276.  
  1277.                                 sort($usr_box);
  1278.  
  1279.                                 echo "<form method=\"post\">";
  1280.                                 echo "<input type=\"hidden\" name=\"set\" value=\"folders\">";
  1281.                                 echo "<tr bgcolor=\"#ffffff\"><td width=\"200\"><select class=\"input\" name=\"del_box\">";
  1282.  
  1283.                                 foreach ($usr_box as $del_box) {
  1284.        
  1285.                                         $del_box = imap_utf7_decode(str_replace($host,"",$del_box));
  1286.                                        
  1287.                                         echo "<option value=\"$del_box\">$del_box</option>";
  1288.                                 }              
  1289.                
  1290.                                 echo "</select></td><td width=\"197\"><input class=\"button\" type=\"submit\" value=\"delete folder\" onclick=\"if (confirm('Delete folder and all messages in it?')) {return true;} else {return false;}\"></td><td></td></tr>";
  1291.                                 echo "</form>";
  1292.                         }
  1293.  
  1294.                         echo "</table>";
  1295.                         echo "</div>";
  1296.  
  1297.                         if (isset($mail_home) and !empty($mail_home)) {
  1298.  
  1299.                                 $sivU = explode("@",$_SESSION['logged_uid']);
  1300.                                 $sivN = $sivU[0];
  1301.                                 $sivD = $sivU[1];
  1302.                                 $sivP = "$mail_home/$sivD/{$sivN[0]}/$sivN";
  1303.                                 $sivR = glob("$sivP/*.sieve",GLOB_NOSORT);
  1304.  
  1305.                                 if ($del_siv) {
  1306.                        
  1307.                                         foreach ($sivR as $sivI) {
  1308.                        
  1309.                                                 if (stripos(file_get_contents($sivI),"fileinto \"$del_siv\";")) {
  1310.                                                         unlink($sivI);
  1311.                                                 }
  1312.                                         }
  1313.                                 }
  1314.  
  1315.                                 if (isset($_POST['sieveT']) and !empty($_POST['sieveT']) and isset($_POST['sieveV']) and !empty($_POST['sieveV']) and isset($_POST['sieveF']) and !empty($_POST['sieveF'])) {
  1316.  
  1317.                                         $sieveT = strtolower(trim(strip_tags($_POST['sieveT'])));
  1318.                                         $sieveV = trim($_POST['sieveV']);
  1319.                                         $sieveF = imap_utf7_encode(trim(strip_tags($_POST['sieveF'])));
  1320.  
  1321.                                         if ($sieveT == "subject") {
  1322.                                                 $sieveV = strip_tags($sieveV);
  1323.                                         }
  1324.  
  1325.                                         if ($sieveV != "") {
  1326.                                                 $sieveW = "require \"fileinto\"; if header :contains \"$sieveT\" \"$sieveV\" { fileinto \"$sieveF\"; }";
  1327.                                         }
  1328.  
  1329.                                         if ($sieveW != ""){
  1330.  
  1331.                                                 if (count($sivR) > 0) {
  1332.                                        
  1333.                                                         foreach ($sivR as $sieveR) {
  1334.  
  1335.                                                                 if (strtolower(trim(file_get_contents($sieveR))) != strtolower($sieveW)) {
  1336.                                                                         continue;
  1337.                                                                 }
  1338.                                                        
  1339.                                                                 unlink($sieveR);
  1340.                                                         }
  1341.                                                 }
  1342.  
  1343.                                                 $sieveP = "$sivP/" . date("YmdHis") . ".sieve";
  1344.  
  1345.                                                 if (!file_exists($sivP)) {
  1346.                                                         mkdir($sivP,0700,true);
  1347.                                                 }
  1348.  
  1349.                                                 $fp = fopen($sieveP,"w");
  1350.                                                 fwrite($fp,$sieveW);
  1351.                                                 fclose($fp);
  1352.  
  1353.                                                 $sieveC = "$sieveT \"$sieveV\"";
  1354.  
  1355.                                                 $sieveO = (imap_search($mbox,$sieveC,SE_UID));
  1356.  
  1357.                                                 foreach ($sieveO as $sivO) {
  1358.                                                         imap_mail_move($mbox,$sivO,$sieveF,CP_UID);
  1359.                                                         imap_expunge($mbox);
  1360.                                                 }
  1361.                                         }
  1362.                                 }
  1363.  
  1364.                                 if (isset($_POST['sieve']) and !empty($_POST['sieve'])) {
  1365.  
  1366.                                         $sieve = strtolower(trim(strip_tags($_POST['sieve'])));
  1367.  
  1368.                                         if (isset($_POST['sivM']) and !empty($_POST['sivM'])) {
  1369.  
  1370.                                                 $sivM = trim(strip_tags($_POST['sivM']));
  1371.  
  1372.                                                 if (file_exists("$sivP/$sivM") and ($_POST['set'] == "sivM")) {
  1373.  
  1374.                                                         $sivMs = file_get_contents("$sivP/$sieve");
  1375.                                                         $sivMt = file_get_contents("$sivP/$sivM");
  1376.  
  1377.                                                         $fp = fopen("$sivP/$sieve","w");
  1378.                                                         fwrite($fp,$sivMt);
  1379.                                                         fclose($fp);
  1380.  
  1381.                                                         $fp = fopen("$sivP/$sivM","w");
  1382.                                                         fwrite($fp,$sivMs);
  1383.                                                         fclose($fp);
  1384.                                                 }
  1385.                                         }
  1386.  
  1387.                                         if (file_exists("$sivP/$sieve") and ($_POST['set'] == "sivD")) {
  1388.                                                 unlink("$sivP/$sieve");
  1389.                                         }
  1390.                                 }
  1391.  
  1392.                                 if (($_POST['set'] == "filters") or ($_POST['set'] == "sivD") or ($_POST['set'] == "sivM")) {
  1393.                                         echo "<div id=\"filters\">";
  1394.                                 }
  1395.                                 else {
  1396.                                         echo "<div id=\"filters\" class=\"hide\">";
  1397.                                 }
  1398.  
  1399.                                 echo "<div class=\"spacer\"></div>";
  1400.                                 echo "<div class=\"message\" style=\"padding: 0;\">";
  1401.                                 echo "<table border=\"0\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">";
  1402.                                 echo "<form method=\"post\"><input type=\"hidden\" name=\"set\" value=\"filters\"><tr>";
  1403.                                 echo "<td width=\"200\"><select class=\"input\" name=\"sieveT\">";
  1404.                                 echo "<option value=\"subject\">If message subject contains</option>";
  1405.                                 echo "<option value=\"from\">If message from contains</option>";
  1406.                                 echo "<option value=\"to\">If message to contains</option>";
  1407.                                 echo "<option value=\"cc\">If message cc contains</option>";
  1408.                                 echo "</td>";
  1409.                                 echo "<td><input class=\"input\" type=\"text\" name=\"sieveV\" autocomplete=\"off\" required></td>";
  1410.                                 echo "<td><select class=\"input\" name=\"sieveF\"><option value=\"Trash\" selected>then move to Trash</option>";
  1411.  
  1412.                                 foreach ($usr_box as $sieveF) {
  1413.  
  1414.                                         $sieveF = str_replace($host,"",$sieveF);
  1415.  
  1416.                                         echo "<option value=\"$sieveF\">then move to $sieveF</option>";
  1417.                                 }
  1418.  
  1419.                                 echo "</select></td>";
  1420.                                 echo "<td><input class=\"button\" type=\"submit\" value=\"add filter\"></td>";
  1421.                                 echo "</tr></form>";
  1422.                                 echo "</table>";
  1423.                                 echo "</div>";
  1424.                                 echo "<div class=\"spacer\"></div>";
  1425.  
  1426.                                 $sivR = glob("$sivP/*.sieve");
  1427.  
  1428.                                 if (count($sivR) > 0) {
  1429.  
  1430.                                         $sivW = 'require "include";';
  1431.        
  1432.                                         echo "<table border=\"0\" cellspacing=\"1\" cellpadding=\"2\" bgcolor=\"#cccccc\">";
  1433.  
  1434.                                         foreach ($sivR as $sivK => $sivS) {
  1435.  
  1436.                                                 if ($bgColor == "#ffffff") {
  1437.                                                         $bgColor = "#fdfdfd";
  1438.                                                 }
  1439.                                                 else {
  1440.                                                         $bgColor = "#ffffff";
  1441.                                                 }
  1442.  
  1443.                                                 if ($sivK > 0) {
  1444.  
  1445.                                                         $sivKp = $sivK - 1;
  1446.  
  1447.                                                         if (array_key_exists($sivKp,$sivR)) {
  1448.                                                                 $sivKp = basename($sivR[$sivKp]);
  1449.                                                         }
  1450.                                                         else {
  1451.                                                                 unset($sivKp);
  1452.                                                         }
  1453.                                                 }
  1454.  
  1455.                                                 if ($sivK < count($sivR)) {
  1456.  
  1457.                                                         $sivKn = $sivK + 1;
  1458.  
  1459.                                                         if (array_key_exists($sivKn,$sivR)) {
  1460.                                                                 $sivKn = basename($sivR[$sivKn]);
  1461.                                                         }
  1462.                                                         else {
  1463.                                                                 unset($sivKn);
  1464.                                                         }
  1465.                                                 }
  1466.  
  1467.                                                 $sivC = (explode('"',file_get_contents($sivS)));
  1468.                                                 $sivF = basename($sivS);
  1469.  
  1470.                                                 $sivW = $sivW . "\r\ninclude \"" . str_replace(".sieve","",$sivF) . '";';
  1471.  
  1472.                                                 echo "<form method=\"post\">";
  1473.                                                 echo "<input type=\"hidden\" name=\"set\" value=\"sivD\">";
  1474.                                                 echo "<input type=\"hidden\" name=\"sieve\" value=\"$sivF\">";
  1475.                                                 echo "<tr bgcolor=\"$bgColor\">";
  1476.                                                 echo "<td valign=\"bottom\" width=\"24\"><input type=\"image\" src=\"images/sieve-del.png\"></td>";
  1477.                                                 echo "</form>";
  1478.  
  1479.                                                 if ($sivKp) {
  1480.                                                         echo "<form method=\"post\">";
  1481.                                                         echo "<input type=\"hidden\" name=\"set\" value=\"sivM\">";
  1482.                                                         echo "<input type=\"hidden\" name=\"sieve\" value=\"$sivF\">";
  1483.                                                         echo "<input type=\"hidden\" name=\"sivM\" value=\"$sivKp\">";
  1484.                                                         echo "<td valign=\"bottom\" width=\"24\"><input type=\"image\" src=\"images/sieve-up.png\"></td>";
  1485.                                                         echo "</form>";
  1486.                                                 }
  1487.                                                 else {
  1488.                                                         if (count($sivR) > 1) {
  1489.                                                                 echo "<td></td>";
  1490.                                                         }
  1491.                                                 }
  1492.  
  1493.                                                 if ($sivKn) {
  1494.                                                         echo "<form method=\"post\">";
  1495.                                                         echo "<input type=\"hidden\" name=\"set\" value=\"sivM\">";
  1496.                                                         echo "<input type=\"hidden\" name=\"sieve\" value=\"$sivF\">";
  1497.                                                         echo "<input type=\"hidden\" name=\"sivM\" value=\"$sivKn\">";
  1498.                                                         echo "<td valign=\"bottom\" width=\"24\"><input type=\"image\" src=\"images/sieve-down.png\"></td>";
  1499.                                                         echo "</form>";
  1500.                                                 }
  1501.                                                 else {
  1502.                                                         if (count($sivR) > 1) {
  1503.                                                                 echo "<td></td>";
  1504.                                                         }
  1505.                                                 }
  1506.                                                 echo "<td>If message {$sivC[3]} contains {$sivC[5]} then move to {$sivC[7]}</td>";
  1507.                                                 echo "</tr>";
  1508.                                         }
  1509.                        
  1510.                                         echo "</table>";
  1511.                                         echo "</div>";
  1512.  
  1513.                                         if ($sivW != file_get_contents("$sivP/.dovecot.sieve")) {
  1514.  
  1515.                                                 $fp = fopen("$sivP/.dovecot.sieve","w");
  1516.                                                 fwrite($fp,$sivW);
  1517.                                                 fclose($fp);
  1518.                                         }
  1519.                                 }
  1520.                                 else {
  1521.                                         if (file_exists("$sivP/.dovecot.sieve")) {
  1522.                                                         unlink("$sivP/.dovecot.sieve");
  1523.                                         }
  1524.  
  1525.                                         if (file_exists("$sivP/.dovecot.svbin")) {
  1526.                                                         unlink("$sivP/.dovecot.svbin");
  1527.                                         }
  1528.                                 }
  1529.                         }
  1530.                 }
  1531.                 else {
  1532.                         // imap_ping() should be doing this, but it's not working:
  1533.                         $mbox = @imap_open("{$host}$folder", $_SESSION['logged_uid'], $_SESSION['logged_key'], CL_EXPUNGE) or die(imap_last_error());
  1534.  
  1535.                         include("inbox.php");
  1536.  
  1537. //echo "<script type=\"text/javascript\" src=\"jquery-1.3.2.min.js\"></script>";
  1538.  
  1539. //echo "<script type=\"text/javascript\"> $(document).ready(function() { setInterval(function() { $('#main').fadeOut(\"fast\").load('inbox.php').fadeIn(\"slow\"); }, 5000); }); </script>";
  1540.                 }
  1541.  
  1542.                 echo "</div></td>";
  1543.  
  1544.                 echo "<td width=\"10\"></td>";
  1545.  
  1546.                 echo "<td valign=\"top\" width=\"100\">";
  1547.  
  1548.                 // imap_ping() should be doing this, but it's not working:
  1549.                 $mbox = @imap_open("{$host}$folder", $_SESSION['logged_uid'], $_SESSION['logged_key'], CL_EXPUNGE) or die(imap_last_error());
  1550.  
  1551.                 include("folders.php");
  1552.                 echo "</td>";
  1553.  
  1554.                 echo "</tr></table>";
  1555.         }
  1556.  
  1557.         if ($_SESSION['logged_lvl'] == "postmaster") {
  1558.  
  1559.                 echo "<table border=\"0\" cellspacing=\"1\" cellpadding=\"2\" bgcolor=\"#cccccc\">";
  1560.                 echo "<tr bgcolor=\"#eeeeee\"><td colspan=\"4\" align=\"center\">status</td><td align=\"center\">username</td><td align=\"center\">complete name</td><td align=\"center\">password</td><td align=\"center\">quota</td><td align=\"center\" colspan=\"2\">action</td></tr>";
  1561.                 echo "<form method=\"post\">";
  1562.                 echo "<tr bgcolor=\"#ffffff\"><td align=\"center\">new</td><td align=\"center\">cur</td><td align=\"center\">aka</td><td align=\"center\">rcv</td><td><input class=\"input\" type=\"text\" name=\"pm_id\" autocomplete=\"off\" maxlength=\"255\"></td><td><input class=\"input\" type=\"text\" name=\"pm_name\" autocomplete=\"off\" maxlength=\"128\"></td><td><input class=\"input\" type=\"text\" name=\"pm_pw\" autocomplete=\"off\" maxlength=\"64\"></td><td width=\"64\"><input class=\"input\" type=\"text\" name=\"pm_quota\" autocomplete=\"off\" maxlength=\"16\" style=\"text-align: right;\"></td><td colspan=\"2\"><input class=\"button\" type=\"submit\" value=\"add\"></td></tr>";
  1563.                 echo "</form>";
  1564.        
  1565.                 $pm_get = mysql_query("select * from users where domain='{$_SESSION['logged_uid']}' order by id");
  1566.        
  1567.                 while ($pm_row = mysql_fetch_array($pm_get)) {
  1568.        
  1569.                         if ($pm_row[5] == "1") {
  1570.                                 $pm_do = "disable";
  1571.                                 $pm_bg = "#ffffff";
  1572.                         }
  1573.        
  1574.                         if ($pm_row[5] == "0") {
  1575.                                 $pm_do = "enable";
  1576.                                 $pm_bg = "#eeeeee";
  1577.                         }
  1578.        
  1579.                         $msg_new = "$mail_root/{$_SESSION['logged_uid']}/" . substr($pm_row[0],0,1) . "/" . substr($pm_row[0],0,strpos($pm_row[0],"@")) . "/new/*";
  1580.                         $msg_new = count(glob($msg_new));
  1581.        
  1582.                         $msg_cur = "$mail_root/{$_SESSION['logged_uid']}/" . substr($pm_row[0],0,1) . "/" . substr($pm_row[0],0,strpos($pm_row[0],"@")) . "/cur/*";
  1583.                         $msg_cur = count(glob($msg_cur));
  1584.        
  1585.                         $pm_aka = mysql_query("select * from aliases where alias='{$pm_row[0]}'");
  1586.                         $pm_aka = mysql_num_rows($pm_aka);
  1587.        
  1588.                         echo "<tr bgcolor=\"$pm_bg\"><td align=\"right\">$msg_new</td><td align=\"right\">$msg_cur</td><td align=\"right\">$pm_aka</td><form method=\"post\"><input type=\"hidden\" name=\"pm_set\" value=\"{$pm_row[0]}\"><input type=\"hidden\" name=\"pm_do\" value=\"$pm_do\"><td align=\"center\" valign=\"middle\" width=\"10\"><input type=\"image\" src=\"images/{$pm_do}.png\"></td></form><form method=\"post\"><input type=\"hidden\" name=\"pm_mod\" value=\"{$pm_row[0]}\"><td>{$pm_row[0]}</td><td><input class=\"input\" type=\"text\" name=\"pm_name\" maxlength=\"128\" autocomplete=\"off\" value=\"{$pm_row[3]}\"></td><td><input class=\"input\" type=\"text\" name=\"pm_pass\" maxlength=\"64\" autocomplete=\"off\"></td><td><input class=\"input\" type=\"text\" name=\"pm_quota\" maxlength=\"16\" autocomplete=\"off\" value=\"{$pm_row[6]}\" style=\"text-align: right;\"></td><td><input class=\"button\" type=\"submit\" value=\"mod\"></td></form><form method=\"post\"><input type=\"hidden\" name=\"pm_del\" value=\"{$pm_row[0]}\"><td><input class=\"button\" type=\"submit\" value=\"del\" onclick=\"if (confirm('Do you really want to delete {$pm_row[0]} plus all messages and aliases associated with this account?')) {return true;} else {return false;}\"></td></form></tr>";
  1589.                 }
  1590.        
  1591.                 echo "</table>";
  1592.         }
  1593.  
  1594.         if ($_SESSION['logged_lvl'] == "administrator") {
  1595.        
  1596.                 echo "<table border=\"0\" cellspacing=\"1\" cellpadding=\"2\" bgcolor=\"#cccccc\">";
  1597.                 echo "<tr bgcolor=\"#eeeeee\"><td colspan=\"2\" align=\"center\">status</td><td align=\"center\"><nobr>domain name</nobr></td><td align=\"center\"><nobr>account limit</nobr></td><td align=\"center\"><nobr>postmaster password</nobr></td><td align=\"center\" colspan=\"2\">action</td></tr>";
  1598.                 echo "<form method=\"post\"><tr bgcolor=\"#ffffff\"><td align=\"center\">usr</td><td align=\"center\">rcv</td><td align=\"center\"><input class=\"input\" type=\"text\" name=\"dom_name\" maxlength=\"128\" autocomplete=\"off\"></td><td align=\"center\"><input class=\"input\" style=\"text-align: right;\" type=\"text\" name=\"dom_max\" maxlength=\"6\" autocomplete=\"off\" value=\"0\"></td><td align=\"center\"><input class=\"input\" type=\"text\" name=\"dom_pass\" maxlength=\"64\" autocomplete=\"off\"></td><td align=\"center\" colspan=\"2\"><input class=\"button\" type=\"submit\" value=\"add\"></td></tr></form>";
  1599.        
  1600.                 $dom_get = mysql_query("select * from domains order by id");
  1601.        
  1602.                 while ($dom_row = mysql_fetch_array($dom_get)) {
  1603.  
  1604.                         $dom_usr = mysql_query("select * from users where domain='{$dom_row[0]}'");
  1605.                         $dom_usr = mysql_num_rows($dom_usr);
  1606.        
  1607.                         if ($dom_row[3] == "1") {
  1608.                                 $dom_do = "disable";
  1609.                                 $dom_bg = "#ffffff";
  1610.                         }
  1611.        
  1612.                         if ($dom_row[3] == "0") {
  1613.                                 $dom_do = "enable";
  1614.                                 $dom_bg = "#eeeeee";
  1615.                         }
  1616.        
  1617.                         echo "<tr bgcolor=\"$dom_bg\"><td align=\"right\">$dom_usr</td><form method=\"post\"><input type=\"hidden\" name=\"dom_set\" value=\"{$dom_row[0]}\"><input type=\"hidden\" name=\"dom_do\" value=\"$dom_do\"><td align=\"center\" valign=\"middle\" width=\"10\"><input type=\"image\" src=\"images/{$dom_do}.png\"></td></form><form method=\"post\"><input type=\"hidden\" name=\"dom_mod\" value=\"{$dom_row[0]}\"><td>{$dom_row[0]}</td><td><input class=\"input\" style=\"text-align: right;\" type=\"text\" name=\"dom_max\" maxlength=\"6\" autocomplete=\"off\" value=\"{$dom_row[2]}\"></td><td><input class=\"input\" type=\"text\" name=\"dom_pass\" maxlength=\"64\" autocomplete=\"off\"></td><td><input class=\"button\" type=\"submit\" value=\"mod\"></td></form><form method=\"post\"><input type=\"hidden\" name=\"dom_del\" value=\"{$dom_row[0]}\"><td><input class=\"button\" type=\"submit\" value=\"del\" onclick=\"if (confirm('Do you really want to delete {$dom_row[0]} plus all accounts and messages associated with this domain?')) {return true;} else {return false;}\"></td></form></tr>";
  1618.                 }
  1619.        
  1620.                 echo "</table>";
  1621.         }
  1622.        
  1623.         echo "</td>";
  1624.  
  1625.         if ($_SESSION['logged_lvl'] == "postmaster") {
  1626.        
  1627.                 echo "<td width=\"10\"></td><td valign=\"top\">";
  1628.  
  1629.                 echo "<table border=\"0\" cellspacing=\"1\" cellpadding=\"2\" bgcolor=\"#cccccc\">";
  1630.                 echo "<tr bgcolor=\"#eeeeee\"><td align=\"center\">alias</td><td align=\"center\">recipient</td><td align=\"center\" colspan=\"3\">action</td></tr>";
  1631.                 echo "<form method=\"post\">";
  1632.                 echo "<tr bgcolor=\"#ffffff\"><td><input class=\"input\" type=\"text\" name=\"alias_add\" autocomplete=\"off\" maxlength=\"255\"></td><td><input class=\"input\" type=\"text\" name=\"alias_to\" autocomplete=\"off\" maxlength=\"128\"></td><td colspan=\"3\"><input class=\"button\" type=\"submit\" value=\"add\"></td></tr>";
  1633.                 echo "</form>";
  1634.        
  1635.                 $get_aliases = mysql_query("select * from aliases where domain='{$_SESSION['logged_uid']}' order by id");
  1636.        
  1637.                 while ($aliases_row = mysql_fetch_array($get_aliases)) {
  1638.        
  1639.                         if ($aliases_row[3] == "1") {
  1640.                                 $alias_do = "disable";
  1641.                                 $alias_bg = "#ffffff";
  1642.                         }
  1643.        
  1644.                         if ($aliases_row[3] == "0") {
  1645.                                 $alias_do = "enable";
  1646.                                 $alias_bg = "#eeeeee";
  1647.                         }
  1648.        
  1649.                         echo "<tr bgcolor=\"$alias_bg\"><form method=\"post\"><input type=\"hidden\" name=\"alias_mod\" value=\"{$aliases_row[0]}\"><td>{$aliases_row[0]}</td><td><input class=\"input\" type=\"text\" name=\"alias_to\" maxlength=\"255\" autocomplete=\"off\" value=\"{$aliases_row[1]}\"></td><td><input class=\"button\" type=\"submit\" value=\"mod\"></td></form><form method=\"post\"><input type=\"hidden\" name=\"alias_set\" value=\"{$aliases_row[0]}\"><input type=\"hidden\" name=\"alias_do\" value=\"$alias_do\"><td align=\"center\" valign=\"middle\" width=\"10\"><input type=\"image\" src=\"images/{$alias_do}.png\"></td></form><form method=\"post\"><input type=\"hidden\" name=\"alias_del\" value=\"{$aliases_row[0]}\"><td><input class=\"button\" type=\"submit\" value=\"del\" onclick=\"if (confirm('Do you really want to delete the {$aliases_row[0]} alias of {$aliases_row[1]}?')) {return true;} else {return false;}\"></td></form></tr>";
  1650.                 }
  1651.        
  1652.                 echo "</table>";
  1653.         }
  1654.  
  1655.         echo "</td></tr>";
  1656.         echo "</table>";
  1657. }
  1658.  
  1659. mysql_close($db_link);
  1660.  
  1661. ?>
  1662.  
filedropkartero.git-41992ae.tar.bz2 new
412.12 KB
29 downloads
filedropkartero.git-41992ae.zip
448.41 KB
12 downloads
filedropkartero.git-b404ba2.tar.bz2
411.70 KB
26 downloads
filedropkartero.git-b404ba2.zip
447.96 KB
9 downloads
filedropkartero.git-a7684d9.tar.bz2
411.72 KB
261 downloads
filedropkartero.git-a7684d9.zip
447.96 KB
374 downloads
filedropkartero.git-83512be.tar.bz2
410.26 KB
252 downloads
filedropkartero.git-83512be.zip
445.30 KB
208 downloads
filedropkartero.git-1954b25.tar.bz2
410.21 KB
245 downloads
filedropkartero.git-1954b25.zip
445.30 KB
205 downloads
filedropkartero.git-2f7c910.tar.bz2
410.25 KB
236 downloads
filedropkartero.git-2f7c910.zip
445.29 KB
191 downloads
filedropkartero.git-6317ffb.tar.bz2
410.40 KB
218 downloads
filedropkartero.git-6317ffb.zip
445.28 KB
173 downloads
filedropkartero.git-60ccd7a.tar.bz2
410.40 KB
205 downloads
filedropkartero.git-60ccd7a.zip
445.20 KB
169 downloads
filedropkartero.git-ea6f885.tar.bz2
410.47 KB
9 downloads
filedropkartero.git-ea6f885.zip
445.26 KB
149 downloads
filedropkartero.git-7f580e5.zip
445.17 KB
139 downloads
filedropkartero.git-7f580e5.tar.bz2
410.18 KB
163 downloads
filedropkartero.git-b9364de.tar.bz2
409.41 KB
153 downloads
filedropkartero.git-b9364de.zip
444.09 KB
396 downloads
filedropkartero.git-e9bcd78.zip
444.03 KB
377 downloads
filedropkartero.git-e9bcd78.tar.bz2
409.39 KB
422 downloads
filedropkartero.git-96c60ff.tar.bz2
407.96 KB
416 downloads
filedropkartero.git-96c60ff.zip
441.87 KB
350 downloads
filedropkartero.git-4357b59.tar.bz2
407.17 KB
408 downloads
filedropkartero.git-4357b59.zip
440.69 KB
352 downloads
filedropkartero.git-c6ff319.tar.bz2
407.28 KB
407 downloads
filedropkartero.git-c6ff319.zip
440.70 KB
333 downloads
filedropkartero.git-8b87a29.tar.bz2
407.27 KB
388 downloads
filedropkartero.git-8b87a29.zip
440.71 KB
332 downloads
filedropkartero.git-ee42942.tar.bz2
406.49 KB
347 downloads
filedropkartero.git-ee42942.zip
439.92 KB
310 downloads
filedropkartero.git-867e7e6.tar.bz2
406.75 KB
370 downloads
filedropkartero.git-867e7e6.zip
440.03 KB
313 downloads
filedropkartero.git-3f3fc02.tar.bz2
406.38 KB
365 downloads
filedropkartero.git-3f3fc02.zip
439.71 KB
337 downloads
filedropkartero.git-b6f779d.tar.bz2
406.55 KB
384 downloads
filedropkartero.git-b6f779d.zip
440.00 KB
297 downloads
filedropkartero.git-83f24b0.zip
439.12 KB
279 downloads
filedropkartero.git-52316ec.tar.bz2
406.17 KB
340 downloads
filedropkartero.git-52316ec.zip
439.18 KB
303 downloads
filedropkartero.git-83f24b0.tar.bz2
405.84 KB
336 downloads
filedropkartero.git-8a42d47.tar.bz2
405.73 KB
302 downloads
filedropkartero.git-8a42d47.zip
439.02 KB
275 downloads
filedropkartero.git-830c9cb.tar.bz2
406.08 KB
305 downloads
filedropkartero.git-830c9cb.zip
439.08 KB
273 downloads
filedropkartero.git-ebec1be.tar.bz2
406.16 KB
308 downloads
filedropkartero.git-ebec1be.zip
439.09 KB
303 downloads
filedropkartero.git-7c0b70f.tar.bz2
402.43 KB
292 downloads
filedropkartero.git-7c0b70f.zip
435.91 KB
266 downloads
filedropkartero.git-80edc03.tar.bz2
402.75 KB
306 downloads
filedropkartero.git-80edc03.zip
435.84 KB
278 downloads
filedropkartero.git-b408c23.tar.bz2
402.19 KB
298 downloads
filedropkartero.git-b408c23.zip
435.59 KB
282 downloads
filedropkartero.git-29c0e1f.tar.bz2
401.84 KB
301 downloads
filedropkartero.git-29c0e1f.zip
435.25 KB
294 downloads
filedropkartero.git-9086094.tar.bz2
401.94 KB
302 downloads
filedropkartero.git-9086094.zip
435.34 KB
295 downloads
filedropkartero.git-47ca624.tar.bz2
402.10 KB
300 downloads
filedropkartero.git-47ca624.zip
435.51 KB
262 downloads
filedropkartero.git-81314a5.zip
435.53 KB
282 downloads
filedropkartero.git-81314a5.tar.bz2
402.25 KB
297 downloads
filedropkartero.git-cae7074.zip
435.20 KB
278 downloads
filedropkartero.git-cae7074.tar.bz2
401.98 KB
313 downloads
filedropkartero.git-cc68e56.tar.bz2
402.07 KB
295 downloads
filedropkartero.git-cc68e56.zip
435.16 KB
308 downloads
filedropkartero.git-230f35d.tar.bz2
401.43 KB
281 downloads
filedropkartero.git-230f35d.zip
434.68 KB
295 downloads
filedropkartero.git-5ae58a2.tar.bz2
401.54 KB
284 downloads
filedropkartero.git-5ae58a2.zip
434.68 KB
268 downloads
filedropkartero.git-a591f4b.tar.bz2
401.76 KB
282 downloads
filedropkartero.git-a591f4b.zip
435.17 KB
276 downloads
filedropkartero.git-36876c8.tar.bz2
400.44 KB
280 downloads
filedropkartero.git-36876c8.zip
432.36 KB
298 downloads
filedropkartero.git-a34c9ed.tar.bz2
400.57 KB
304 downloads
filedropkartero.git-a34c9ed.zip
432.27 KB
289 downloads
filedropkartero.git-e828148.zip
433.58 KB
268 downloads
filedropkartero.git-e828148.tar.bz2
400.88 KB
291 downloads
filedropkartero.git-476cdda.tar.bz2
400.60 KB
321 downloads
filedropkartero.git-476cdda.zip
432.26 KB
281 downloads
filedropkartero.git-054c286.tar.bz2
98.09 KB
366 downloads
filedropkartero.git-054c286.zip
109.53 KB
341 downloads
filedropkartero.git-071b099.tar.bz2
98.76 KB
369 downloads
filedropkartero.git-071b099.zip
110.21 KB
341 downloads
filedropkartero.git-551c38d.tar.bz2
98.51 KB
374 downloads
filedropkartero.git-551c38d.zip
110.20 KB
333 downloads
filedropkartero.git-569dc0c.tar.bz2
98.40 KB
369 downloads
filedropkartero.git-569dc0c.zip
109.86 KB
325 downloads
filedropkartero.git-58a052b.tar.bz2
97.95 KB
368 downloads
filedropkartero.git-58a052b.zip
109.36 KB
337 downloads
filedropkartero.git-43a5af3.tar.bz2
97.80 KB
362 downloads
filedropkartero.git-43a5af3.zip
109.30 KB
335 downloads
filedropkartero.git-bbe069d.tar.bz2
98.03 KB
376 downloads
filedropkartero.git-bbe069d.zip
109.19 KB
339 downloads
filedropkartero.git-02f97e1.tar.bz2
97.76 KB
342 downloads
filedropkartero.git-02f97e1.zip
109.24 KB
431 downloads
filedropkartero.git-d82e393.tar.bz2
97.74 KB
374 downloads
filedropkartero.git-d82e393.zip
109.24 KB
340 downloads
filedropkartero.git-7cdd1f5.tar.bz2
98.03 KB
357 downloads
filedropkartero.git-7cdd1f5.zip
109.24 KB
321 downloads
filedropkartero.git-40825aa.tar.bz2
97.71 KB
358 downloads
filedropkartero.git-40825aa.zip
109.16 KB
358 downloads
filedropkartero.git-3dd941b.tar.bz2
97.69 KB
356 downloads
filedropkartero.git-3dd941b.zip
109.12 KB
332 downloads
filedropkartero.git-50f1e46.tar.bz2
97.65 KB
365 downloads
filedropkartero.git-50f1e46.zip
109.02 KB
335 downloads
filedropkartero.git-fdf9225.tar.bz2
93.19 KB
396 downloads
filedropkartero.git-fdf9225.zip
104.25 KB
345 downloads
filedropkartero.git-21415da.tar.bz2
93.24 KB
353 downloads
filedropkartero.git-21415da.zip
104.22 KB
346 downloads
filedropkartero.git-aff5e89.tar.bz2
93.17 KB
373 downloads
filedropkartero.git-aff5e89.zip
104.22 KB
337 downloads
filedropkartero.git-b27ef39.tar.bz2
91.97 KB
373 downloads
filedropkartero.git-b27ef39.zip
102.80 KB
362 downloads
filedropkartero.git-3d6e8a2.tar.bz2
91.99 KB
355 downloads
filedropkartero.git-3d6e8a2.zip
102.77 KB
359 downloads
filedropkartero.git-1442b69.tar.bz2
91.79 KB
351 downloads
filedropkartero.git-1442b69.zip
102.50 KB
362 downloads
filedropkartero.git-6d15918.tar.bz2
91.56 KB
374 downloads
filedropkartero.git-6d15918.zip
102.28 KB
330 downloads
filedropkartero.git-45140d8.tar.bz2
91.52 KB
376 downloads
filedropkartero.git-45140d8.zip
102.23 KB
335 downloads
filedropkartero.git-d5b48e5.tar.bz2
91.35 KB
364 downloads
filedropkartero.git-d5b48e5.zip
102.01 KB
347 downloads
filedropkartero.git-e007e55.tar.bz2
91.35 KB
376 downloads
filedropkartero.git-e007e55.zip
102.01 KB
319 downloads
filedropkartero.git-30fd7e3.tar.bz2
90.87 KB
352 downloads
filedropkartero.git-30fd7e3.zip
101.44 KB
348 downloads
filedropkartero.git-421a4a7.tar.bz2
88.02 KB
91 downloads
filedropkartero.git-421a4a7.zip
97.96 KB
323 downloads
filedropkartero.git-b49b8bc.tar.bz2
88.09 KB
394 downloads
filedropkartero.git-b49b8bc.zip
97.99 KB
340 downloads
filedropkartero.git-1cc9571.tar.bz2
87.74 KB
371 downloads
filedropkartero.git-1cc9571.zip
97.70 KB
344 downloads
filedropkartero.git-159152f.tar.bz2
87.60 KB
369 downloads
filedropkartero.git-159152f.zip
97.52 KB
350 downloads
filedropkartero.git-35caaf3.tar.bz2
87.74 KB
353 downloads
filedropkartero.git-35caaf3.zip
97.57 KB
333 downloads
filedropkartero.git-3c9d305.zip
96.67 KB
336 downloads
filedropkartero.git-3c9d305.tar.bz2
86.77 KB
359 downloads
filedropkartero.git-14cb2af.tar.bz2
86.41 KB
358 downloads
filedropkartero.git-14cb2af.zip
96.13 KB
340 downloads
filedropkartero.git-e8f00cb.tar.bz2
86.46 KB
378 downloads
filedropkartero.git-e8f00cb.zip
96.21 KB
329 downloads
filedropkartero.git-bdab380.tar.bz2
86.14 KB
371 downloads
filedropkartero.git-bdab380.zip
95.79 KB
332 downloads
filedropkartero.git-48f9134.tar.bz2
85.78 KB
375 downloads
filedropkartero.git-48f9134.zip
95.48 KB
343 downloads
filedropkartero.git-adb9757.tar.bz2
85.67 KB
364 downloads
filedropkartero.git-adb9757.zip
95.37 KB
334 downloads
filedropkartero.git-1601cbd.zip
95.30 KB
346 downloads
filedropkartero.git-1601cbd.tar.bz2
85.69 KB
346 downloads
filedropkartero.git-18a5106.tar.bz2
85.72 KB
347 downloads
filedropkartero.git-18a5106.zip
95.48 KB
349 downloads
filedropkartero.git-a5b1caa.tar.bz2
85.61 KB
381 downloads
filedropkartero.git-a5b1caa.zip
95.36 KB
342 downloads
filedropkartero.git-effff82.zip
97.06 KB
355 downloads
filedropkartero.git-effff82.tar.bz2
87.13 KB
369 downloads
filedropkartero.git-b70d364.tar.bz2
84.09 KB
407 downloads
filedropkartero.git-b70d364.zip
93.67 KB
348 downloads
filedropkartero.git-48f0e53.tar.bz2
84.16 KB
381 downloads
filedropkartero.git-48f0e53.zip
93.66 KB
342 downloads
filedropkartero.git-c17135e.tar.bz2
84.09 KB
364 downloads
filedropkartero.git-c17135e.zip
93.57 KB
328 downloads
filedropkartero.git-a2e2848.tar.bz2
85.59 KB
367 downloads
filedropkartero.git-a2e2848.zip
100.10 KB
341 downloads
filedropkartero.git-1f683db.tar.bz2
83.55 KB
367 downloads
filedropkartero.git-1f683db.zip
93.24 KB
337 downloads
filedropkartero.git-d342596.tar.bz2
83.57 KB
367 downloads
filedropkartero.git-d342596.zip
93.28 KB
328 downloads
filedropkartero.git-e0131d5.tar.bz2
83.55 KB
368 downloads
filedropkartero.git-e0131d5.zip
93.27 KB
345 downloads
filedropkartero.git-ad467e8.tar.bz2
83.13 KB
377 downloads
filedropkartero.git-ad467e8.zip
92.78 KB
334 downloads
filedropkartero.git-b20e27d.tar.bz2
83.46 KB
382 downloads
filedropkartero.git-b20e27d.zip
93.19 KB
360 downloads
filedropkartero.git-eefd8fe.zip
92.67 KB
366 downloads
filedropkartero.git-eefd8fe.tar.bz2
83.01 KB
368 downloads
filedropkartero.git-bea685a.zip
96.88 KB
341 downloads
filedropkartero.git-bea685a.tar.bz2
84.44 KB
361 downloads
filedropkartero.git-a8bd019.tar.bz2
84.25 KB
377 downloads
filedropkartero.git-a8bd019.zip
96.60 KB
336 downloads
filedropkartero.git-cbc914d.tar.bz2
84.38 KB
370 downloads
filedropkartero.git-cbc914d.zip
96.64 KB
325 downloads
filedropkartero.git-09a2e70.tar.bz2
84.40 KB
349 downloads
filedropkartero.git-09a2e70.zip
96.70 KB
349 downloads
filedropkartero.git-641dc05.tar.bz2
84.37 KB
369 downloads
filedropkartero.git-641dc05.zip
96.73 KB
337 downloads
filedropkartero.git-cde49c6.tar.bz2
84.26 KB
379 downloads
filedropkartero.git-cde49c6.zip
96.59 KB
340 downloads
filedropkartero.git-1d004e0.tar.bz2
77.42 KB
380 downloads
filedropkartero.git-1d004e0.zip
87.56 KB
23 downloads
filedropkartero.git-1f0bf17.tar.bz2
77.47 KB
377 downloads
filedropkartero.git-1f0bf17.zip
87.56 KB
336 downloads
filedropkartero.git-265e63c.tar.bz2
77.43 KB
358 downloads
filedropkartero.git-265e63c.zip
87.52 KB
369 downloads
filedropkartero.git-635a5db.zip
87.60 KB
338 downloads
filedropkartero.git-a041f85.tar.bz2
77.37 KB
382 downloads
filedropkartero.git-a041f85.zip
87.52 KB
368 downloads
filedropkartero.git-ae049a7.tar.bz2
77.44 KB
379 downloads
filedropkartero.git-ae049a7.zip
87.52 KB
338 downloads
filedropkartero.git-eef571a.tar.bz2
20.56 KB
491 downloads
filedropkartero.git-eef571a.zip
25.69 KB
468 downloads
filedropkartero.git-0bc16f5.tar.bz2
82.61 KB
398 downloads
filedropkartero.git-0bc16f5.zip
94.75 KB
375 downloads
filedropkartero.git-2afc0f7.tar.bz2
83.61 KB
397 downloads
filedropkartero.git-2afc0f7.zip
96.00 KB
392 downloads
filedropkartero.git-3529bdf.tar.bz2
77.72 KB
363 downloads
filedropkartero.git-3529bdf.zip
87.92 KB
369 downloads
filedropkartero.git-49aac92.tar.bz2
78.98 KB
408 downloads
filedropkartero.git-49aac92.zip
90.01 KB
371 downloads
filedropkartero.git-5d48f21.tar.bz2
78.65 KB
11 downloads
filedropkartero.git-5d48f21.zip
89.51 KB
400 downloads
filedropkartero.git-635a5db.tar.bz2
77.50 KB
420 downloads
filedropkartero.git-6e34786.tar.bz2
77.76 KB
430 downloads
filedropkartero.git-6e34786.zip
88.09 KB
413 downloads
filedropkartero.git-7dc2fd2.tar.bz2
83.51 KB
478 downloads
filedropkartero.git-7dc2fd2.zip
95.99 KB
419 downloads
filedropkartero.git-9cad005.tar.bz2
78.85 KB
474 downloads
filedropkartero.git-9cad005.zip
90.00 KB
462 downloads
filedropkartero.git-b303f61.tar.bz2
82.57 KB
511 downloads
filedropkartero.git-b303f61.zip
94.78 KB
135 downloads
filedropkartero.git-c15ef85.tar.bz2
77.76 KB
166 downloads
filedropkartero.git-c15ef85.zip
88.16 KB
156 downloads
filedropkartero.git-c99e84d.tar.bz2
83.58 KB
188 downloads
filedropkartero.git-c99e84d.zip
96.01 KB
170 downloads
filedropkartero.git-e5009e6.tar.bz2
78.73 KB
198 downloads
filedropkartero.git-e5009e6.zip
89.69 KB
184 downloads
filedropkartero.git-0502d01.tar.bz2
83.54 KB
213 downloads
filedropkartero.git-0502d01.zip
96.00 KB
195 downloads
filedropkartero.git-44ca46d.tar.bz2
83.73 KB
226 downloads
filedropkartero.git-44ca46d.zip
96.20 KB
204 downloads
filedropkartero.git-834f923.tar.bz2
83.75 KB
229 downloads
filedropkartero.git-834f923.zip
96.14 KB
214 downloads