kartero.org

kartero.org

Git

This blob has been accessed 554 times via Git panel.

  1. <?php
  2.  
  3. /* feel free to hack the succeeding code to suit your needs (basic php and mysql skills required) */
  4.  
  5. ob_start();
  6.  
  7. require_once("conf.php");
  8.  
  9. ob_end_clean();
  10.  
  11. require_once("core.php");
  12.  
  13. echo "<!DOCTYPE html>\n\n";
  14.  
  15. if (file_exists("css.php")) {
  16.  
  17.         $css = file_get_contents("css.php");
  18.         $css = str_replace("<style>","",$css);
  19.         $css = str_replace("</style>","",$css);
  20.  
  21.         echo "<style>\r\n$css</style>\r\n\r\n";
  22. }
  23.  
  24. if (!file_exists("$mail_root")) {
  25.  
  26.         $mail_dirs = explode("/",$mail_root);
  27.  
  28.         foreach ($mail_dirs as $mail_dir) {
  29.        
  30.                 if (!empty($mail_dir)) {
  31.                         $mail_mkdir = $mail_mkdir . "/" . $mail_dir;
  32.                         mkdir("$mail_mkdir");
  33.                 }
  34.         }
  35.  
  36.         if (!file_exists("$mail_root")) {
  37.                 nak("Can't create '$mail_root' (check filesystem permissions or change '&#36;mail_root' and try again)");
  38.                 exit();
  39.         }
  40. }
  41.  
  42. $db_link = mysql_pconnect($db_host, $db_user, $db_pass);
  43.  
  44. if (!$db_link) {
  45.         nak(mysql_error());
  46.         exit;
  47. }
  48.  
  49. $db_query = mysql_query("use $db_name");
  50.  
  51. if (!$db_query) {
  52.         $pw_crypt = crypt($db_pass);
  53.         $db_query = mysql_query("create database $db_name");
  54.         $db_query = mysql_query("use $db_name");
  55.         $db_query = mysql_query("create table admins (id varchar(16) not null, pw varchar(64) not null, primary key (id), unique key (id))");
  56.         $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))");
  57.         $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))");
  58.         $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')");
  59.         $db_query = mysql_query("insert into admins values('$db_user','$pw_crypt')");
  60. }
  61.  
  62. $id_put = strip_tags($_POST['id']);
  63. $id_put = trim($id_put);
  64. $id_put = strtolower($id_put);
  65.  
  66. if (get_magic_quotes_gpc()) {
  67.         $id_put = stripslashes($id_put);
  68. }
  69.  
  70. if (!is_int($id_put)) {
  71.         $id_put = mysql_real_escape_string($id_put);
  72. }
  73.  
  74. $lvl_put = strip_tags($_POST['lvl']);
  75.  
  76. if ($lvl_put == "subscriber") {
  77.  
  78.         if (!strpos($id_put,"@")) {
  79.                 $id_put = $id_put . "@" . trim(str_replace("mail.","",$_SERVER['SERVER_NAME']));
  80.         }
  81.  
  82.         $pw_get = mysql_query("select pw from users where id='$id_put'");
  83. }
  84.  
  85. if ($lvl_put == "postmaster") {
  86.         $pw_get = mysql_query("select pw from domains where id='$id_put'");
  87. }
  88.  
  89. if ($lvl_put == "administrator") {
  90.         $pw_get = mysql_query("select pw from admins where id='$id_put'");
  91. }
  92.  
  93. $pw_get = mysql_fetch_row($pw_get);
  94. $pw_get = $pw_get[0];
  95.  
  96. $pw_put = $_POST['pw'];
  97.  
  98. if (get_magic_quotes_gpc()) {
  99.         $pw_put = stripslashes($pw_put);
  100. }
  101.  
  102. if (!is_int($pw_put)) {
  103.         $pw_put = mysql_real_escape_string($pw_put);
  104. }
  105.  
  106. $pw_put = strip_tags($pw_put);
  107.  
  108. $pw_mbox = $pw_put;
  109.  
  110. $pw_put = crypt($pw_put,$pw_get);
  111.  
  112. if ($pw_put == $pw_get) {
  113.         $_SESSION['logged_uid'] = $id_put;
  114.         $_SESSION['logged_lvl'] = $lvl_put;
  115.  
  116.         if ($_SESSION['logged_lvl'] == "subscriber") {
  117.                 $_SESSION['logged_key'] = $pw_mbox;
  118.         }
  119. }
  120.  
  121. unset($pw_mbox);
  122.  
  123. if ($_SESSION['logged_lvl'] == "subscriber") {
  124.  
  125.         $filedrop_box = sha1(microtime(true));
  126.  
  127.         $_SESSION['filedrop_dir'] = $filedrop_box;
  128.  
  129.         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']))) {
  130.  
  131.                 rmdirr("attach/i/$fileUsr/{$_SESSION['clean_up_i']}");
  132.                 unset($_SESSION['clean_up_i']);
  133.  
  134.                 if (count(glob("attach/i/$fileUsr/*")) == 0) {
  135.                         rmdirr("attach/i/$fileUsr");
  136.                 }
  137.         }
  138.  
  139.         if (isset($_SESSION['clean_up_o']) and file_exists("attach/o/$fileUsr/{$_SESSION['clean_up_o']}")) {
  140.                        
  141.                 if ($_POST['rep'] == 2) {
  142.                
  143.                         if (!file_exists("attach/i/$fileUsr")) {
  144.                                 mkdir("attach/i/$fileUsr",0700,1);
  145.                         }
  146.  
  147.                         rename("attach/o/$fileUsr/{$_SESSION['clean_up_o']}","attach/i/$fileUsr/$filedrop_box");
  148.                 }
  149.                 else {
  150.                         rmdirr("attach/o/$fileUsr/{$_SESSION['clean_up_o']}");
  151.                 }
  152.  
  153.                 unset($_SESSION['clean_up_o']);
  154.  
  155.                 if (count(glob("attach/o/$fileUsr/*")) == 0) {
  156.                         rmdirr("attach/o/$fileUsr");
  157.                 }
  158.         }
  159. }
  160.  
  161. if (isset($_GET['do']) and ($_GET['do'] == "logout")) {
  162.  
  163.         if ($mbox) {
  164.                 imap_close($mbox, CL_EXPUNGE);
  165.         }
  166.  
  167.         $_SESSION = array();
  168.         session_destroy();
  169.         header("Location: .");
  170.         echo '<meta http-equiv="refresh" content="0; url=/">';
  171.         exit;
  172. }
  173.  
  174. 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']))) {
  175.  
  176.         echo "<title>Kartero</title>";
  177.  
  178.         echo "<div class=\"login\"><center>";
  179.  
  180.         if (file_exists("images/{$_SERVER['SERVER_NAME']}.png")) {
  181.  
  182.                 $logo_info = getimagesize("images/{$_SERVER['SERVER_NAME']}.png");
  183.  
  184.                 if (($logo_info[mime] == "image/png") and ($logo_info[0] > 0) and ($logo_info[1] > 0)) {
  185.                         echo "<img src=\"images/{$_SERVER['SERVER_NAME']}.png\" border=\"0\" width=\"{$logo_info[0]}\" height=\"{$logo_info[1]}\">";
  186.                 }
  187.                 else {
  188.                         echo "<img src=\"images/logo.png\" border=\"0\" width=\"100\" height=\"100\">";
  189.                 }
  190.         }
  191.         else {
  192.                 echo "<img src=\"images/logo.png\" border=\"0\" width=\"100\" height=\"100\">";
  193.         }
  194.  
  195.         echo "<br>kartero v1.0 at {$_SERVER['SERVER_NAME']}<br><br>";
  196.  
  197.         if (isset($_POST['pw']) and ($pw_put != $pw_get)) {
  198.                 echo "<table border=\"0\" cellspacing=\"1\" cellpadding=\"2\" bgcolor=\"#cccccc\" class=\"animated shake\">";
  199.         }
  200.         else {
  201.                 echo "<table border=\"0\" cellspacing=\"1\" cellpadding=\"2\" bgcolor=\"#cccccc\">";
  202.         }
  203.  
  204.         echo "<form method=\"post\">";
  205.         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>";
  206.         echo "<tr bgcolor=\"#ffffff\"><td><input required autofocus class=\"input\" type=\"text\" name=\"id\" autocomplete=\"off\" maxlength=\"128\"></td></tr>";
  207.         echo "<tr bgcolor=\"#ffffff\"><td><input required class=\"input\" type=\"password\" name=\"pw\" autocomplete=\"off\" maxlength=\"64\"></td></tr>";
  208.         echo "<tr bgcolor=\"#ffffff\"><td><input class=\"button\" type=\"submit\" value=\"login\"></td></tr>";
  209.         echo "</form>";
  210.         echo "</table>";
  211.  
  212.         echo "</center></div>";
  213.  
  214.         echo "<iframe name=\"preload\" src=\"preload.php\" frameborder=\"0\" scrolling=\"0\" width=\"0\" height=\"0\"></iframe>";
  215.  
  216.         exit;
  217. }
  218.  
  219. if (isset($_SESSION['logged_uid'])) {
  220.  
  221.         $token = uniqid();
  222.  
  223.         echo "<nobr>You are currently logged in to your {$_SESSION['logged_uid']} {$_SESSION['logged_lvl']} account. Click <a href=\"?do=logout&token=$token\">here</a> to logout.</nobr><br><br>";
  224.  
  225.         echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"100%\">";
  226.         echo "<tr><td colspan=\"3\" valign=\"top\">";
  227.  
  228.         if ($_SESSION['logged_lvl'] == "subscriber") {
  229.  
  230.                 $usr_query = mysql_query("select * from users where id='{$_SESSION['logged_uid']}'");
  231.                 $usr_data = mysql_fetch_row($usr_query);
  232.  
  233.                 $dom_query = mysql_query("select mode from domains where id='{$usr_data[4]}'");
  234.                 $dom_data = mysql_fetch_row($dom_query);
  235.  
  236.                 if ($dom_data[0] == 0) {
  237.                         nak("{$usr_data[4]} disabled by admin");
  238.                         exit();
  239.                 }
  240.  
  241.                 if ($usr_data[5] == 0) {
  242.                         nak("{$_SESSION['logged_uid']} disabled by postmaster");
  243.                         exit();
  244.                 }
  245.        
  246.                 $usr_name = $usr_data[3];
  247.        
  248.                 if (isset($_POST['usr_name']) and !empty($_POST['usr_name']) and (strlen($_POST['usr_name']) <= 128) and (strlen($_POST['usr_name']) > 2)) {
  249.        
  250.                         $usr_name = trim($_POST['usr_name']);
  251.                         $usr_name = ucwords($usr_name);
  252.        
  253.                         if ($usr_name != $usr_data[3]) {
  254.        
  255.                                 $usr_query = mysql_query("update users set name='$usr_name' where id='{$_SESSION['logged_uid']}'");
  256.        
  257.                                 if (!usr_query) {
  258.                                         nak(strtolower(mysql_error()));
  259.                                 }
  260.                                 else {
  261.                                         ack("name changed");
  262.                                 }
  263.                         }
  264.                         else {
  265.                                 $usr_name = $usr_data[3];
  266.                         }
  267.                 }
  268.  
  269.                 if (isset($mail_home) and !empty($mail_home)) {
  270.  
  271.                         $sivU = explode("@",$_SESSION['logged_uid']);
  272.                         $sivN = $sivU[0];
  273.                         $sivD = $sivU[1];
  274.                         $sivP = "$mail_home/$sivD/{$sivN[0]}/$sivN";
  275.        
  276.                         if (isset($_POST['usr_auto'])) {
  277.                
  278.                                 if (!empty($_POST['usr_auto']) and (strlen($_POST['usr_auto']) <= 1000)) {
  279.        
  280.                                         $usr_auto = strip_tags($_POST['usr_auto']);
  281.                                         $usr_auto = trim($usr_auto);                                   
  282.                                         $usr_auto = ucfirst($usr_auto);
  283.  
  284.                                         $usr_addr = "\"{$_SESSION['logged_uid']}\"";
  285.  
  286.                                         $usr_query = mysql_query("select id, alias from aliases group by id having count(*) = 1");
  287.  
  288.                                         if (mysql_num_rows($usr_query) > 0) {
  289.  
  290.                                                 while ($usr_aka = mysql_fetch_array($usr_query)) {
  291.        
  292.                                                         if ($usr_aka[1] == $_SESSION['logged_uid']) {
  293.                                                                 $usr_addr = "$usr_addr,\"{$usr_aka[0]}\"";
  294.                                                         }
  295.                                                 }
  296.                                         }
  297.                                                                        
  298.                                         $sivV = "require \"vacation\";\r\nif not header :contains \"subject\" \"[SPAM]\" {\r\nvacation\r\n:days 1\r\n:addresses [$usr_addr]\r\n\"$usr_auto\"\r\n;\r\n}";
  299.  
  300.                                         if (!file_exists("$sivP")) {
  301.                                                 mkdir($sivP,0700,true);
  302.                                         }
  303.  
  304.                                         $fp = fopen("$sivP/0.sieve","w");
  305.                                         fwrite($fp,$sivV);
  306.                                         fclose($fp);
  307.                                        
  308.                                         ack("auto-reply enabled");
  309.                                 }
  310.                                 else {
  311.                                         if (file_exists("$sivP/0.sieve")) {
  312.                                                 unlink("$sivP/0.sieve");
  313.                                         }
  314.  
  315.                                         if (file_exists("$sivP/.dovecot.lda-dupes")) {
  316.                                                 unlink("$sivP/.dovecot.lda-dupes");
  317.                                         }
  318.  
  319.                                         ack("auto-reply disabled");                                    
  320.                                 }
  321.                                
  322.                                 $sivR = glob("$sivP/*.sieve");
  323.                                
  324.                                 if (count($sivR) > 0) {
  325.                                
  326.                                         $sivW = 'require "include";';
  327.  
  328.                                         foreach ($sivR as $sivK => $sivS) {
  329.  
  330.                                                 $sivW = "$sivW\r\ninclude \"" . str_replace(".sieve","",basename($sivS)) . "\";";
  331.                                         }
  332.  
  333.                                         if ($sivW != file_get_contents("$sivP/.dovecot.sieve")) {
  334.  
  335.                                                 $fp = fopen("$sivP/.dovecot.sieve","w");
  336.                                                 fwrite($fp,$sivW);
  337.                                                 fclose($fp);
  338.                                         }
  339.                                 }
  340.                                 else {
  341.                                         if (file_exists("$sivP/.dovecot.sieve")) {
  342.                                                 unlink("$sivP/.dovecot.sieve");
  343.                                         }
  344.  
  345.                                         if (file_exists("$sivP/.dovecot.svbin")) {
  346.                                                 unlink("$sivP/.dovecot.svbin");
  347.                                         }
  348.                                 }
  349.                         }
  350.                 }
  351.                        
  352.                 $usr_pw0 = $usr_data[1];
  353.        
  354.                 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)) {
  355.        
  356.                         $usr_pw1 = trim($_POST['usr_pw1']);
  357.                         $usr_pw2 = trim($_POST['usr_pw2']);
  358.                         $usr_pw3 = trim($_POST['usr_pw3']);
  359.        
  360.                         if ($usr_pw0 == crypt($usr_pw1,$usr_pw0)) {
  361.        
  362.                                 if ($usr_pw2 == $usr_pw3) {
  363.                                        
  364.                                         $usr_pw = crypt($usr_pw2);
  365.        
  366.                                         $usr_query = mysql_query("update users set pw='$usr_pw' where id='{$_SESSION['logged_uid']}'");
  367.        
  368.                                         if (!usr_query) {
  369.                                                 nak(strtolower(mysql_error()));
  370.                                         }
  371.                                         else {
  372.                                                 ack("password changed");
  373.                                                 $_SESSION['logged_key'] = $usr_pw2;
  374.                                         }
  375.                                 }
  376.                                 else {
  377.                                         nak("new passwords do not match");
  378.                                 }
  379.                         }
  380.                         else {
  381.                                 nak("current password entered is incorrect");
  382.                         }
  383.                 }
  384.         }
  385.  
  386.         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'])) {
  387.  
  388.                 $a_email = strtolower(trim(strip_tags($_POST['a_email'])));
  389.  
  390.                 if (preg_match("/@/",$a_email) and preg_match("/\./",$a_email)) {
  391.  
  392.                         $a_fname = ucwords(trim(strip_tags($_POST['a_fname'])));
  393.                         $a_lname = ucwords(trim(strip_tags($_POST['a_lname'])));
  394.  
  395.                         $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, domain varchar(128) not null);");
  396.  
  397.                         $addr_query = mysql_query("select * from contacts where id='{$_SESSION['logged_uid']}' and email='$a_email';");
  398.  
  399.                         if (mysql_num_rows($addr_query) > 0) {
  400.                                 nak("$a_email exists");
  401.                         }
  402.                         else {
  403.                                 $addr_query = mysql_query("insert into contacts values('{$_SESSION['logged_uid']}','$a_lname','$a_fname','$a_email','{$usr_data[4]}');");
  404.  
  405.                                 if (isset($_FILES['a_photo']) and !empty($_FILES['a_photo'])) {
  406.  
  407.                                         if (is_uploaded_file($_FILES['a_photo']['tmp_name'])) {
  408.  
  409.                                                 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")) {
  410.  
  411.                                                         $a_path = sha1($_SESSION['logged_uid']);
  412.                                                         $a_file = sha1($a_email);                              
  413.  
  414.                                                         if (file_exists("images/contacts/$a_path/{$a_file}.gif")) {
  415.                                                                 unlink("images/contacts/$a_path/{$a_file}.gif");
  416.                                                         }
  417.  
  418.                                                         if (file_exists("images/contacts/$a_path/{$a_file}.jpg")) {
  419.                                                                 unlink("images/contacts/$a_path/{$a_file}.jpg");
  420.                                                         }
  421.  
  422.                                                         if (file_exists("images/contacts/$a_path/{$a_file}.png")) {
  423.                                                                 unlink("images/contacts/$a_path/{$a_file}.png");
  424.                                                         }
  425.  
  426.                                                         if (!file_exists("images/contacts/$a_path")) {
  427.                                                                 mkdir("images/contacts/$a_path",0700,true);
  428.                                                         }
  429.  
  430.                                                         if ($_FILES['a_photo']['type']=="image/gif") {
  431.                                                                 $res = copy($_FILES['a_photo']['tmp_name'], "images/contacts/$a_path/{$a_file}.gif");
  432.                                                                 kartero_resize_image("images/contacts/$a_path/{$a_file}.gif");
  433.                                                                 unlink($_FILES['a_photo']['tmp_name']);
  434.                                                         }
  435.  
  436.                                                         if (($_FILES['a_photo']['type']=="image/jpeg") or ($_FILES['a_photo']['type']=="image/pjpeg")) {
  437.                                                                 $res = copy($_FILES['a_photo']['tmp_name'], "images/contacts/$a_path/{$a_file}.jpg");
  438.                                                                 kartero_resize_image("images/contacts/$a_path/{$a_file}.jpg");
  439.                                                                 unlink($_FILES['a_photo']['tmp_name']);
  440.                                                         }
  441.  
  442.                                                         if ($_FILES['a_photo']['type']=="image/png") {
  443.                                                                 $res = copy($_FILES['a_photo']['tmp_name'], "images/contacts/$a_path/{$a_file}.png");
  444.                                                                 kartero_resize_image("images/contacts/$a_path/{$a_file}.png");
  445.                                                                 unlink($_FILES['a_photo']['tmp_name']);
  446.                                                         }
  447.                                                 }
  448.                                                 else {
  449.                                                         unlink($_FILES['a_photo']['tmp_name']);
  450.                                                 }
  451.                                         }
  452.                                         else {
  453.                                                 unlink($_FILES['a_photo']['tmp_name']);
  454.                                         }
  455.                                 }
  456.  
  457.                                 ack("$a_email added to contacts");
  458.                         }
  459.                 }
  460.                 else {
  461.                         nak("invalid email");
  462.                 }
  463.         }
  464.  
  465.         if (isset($_POST['a_del']) and !empty($_POST['a_del'])) {
  466.  
  467.                 $a_del = strtolower(trim(strip_tags($_POST['a_del'])));
  468.  
  469.                 $a_del_query = mysql_query("delete from contacts where id='{$_SESSION['logged_uid']}' and email='$a_del';");
  470.  
  471.                 if (!$a_del_query) {
  472.                         nak(strtolower(mysql_error()));
  473.                 }
  474.                 else {
  475.                         $a_path = sha1($_SESSION['logged_uid']);
  476.                         $a_file = sha1($a_del);                        
  477.  
  478.                         if (file_exists("images/contacts/$a_path/{$a_file}.gif")) {
  479.                                 unlink("images/contacts/$a_path/{$a_file}.gif");
  480.                         }
  481.  
  482.                         if (file_exists("images/contacts/$a_path/{$a_file}.jpg")) {
  483.                                 unlink("images/contacts/$a_path/{$a_file}.jpg");
  484.                         }
  485.  
  486.                         if (file_exists("images/contacts/$a_path/{$a_file}.png")) {
  487.                                 unlink("images/contacts/$a_path/{$a_file}.png");
  488.                         }
  489.  
  490.                         ack("$a_del removed from contacts");
  491.                 }
  492.         }
  493.  
  494.         if ($_SESSION['logged_lvl'] == "postmaster") {
  495.        
  496.                 $dom_query = mysql_query("select mode from domains where id='{$_SESSION['logged_uid']}'");
  497.                 $dom_query = mysql_fetch_row($dom_query);
  498.        
  499.                 if ($dom_query[0] == "0") {
  500.                         nak("{$_SESSION['logged_uid']} disabled by admin - new settings will take effect once it is re-enabled");
  501.                 }
  502.  
  503.                 $max_get = mysql_query("select max from domains where id='{$_SESSION['logged_uid']}'");
  504.  
  505.                 $pm_max = mysql_fetch_row($max_get);
  506.  
  507.                 $pm_get = mysql_query("select * from users where domain='{$_SESSION['logged_uid']}' order by id");
  508.  
  509.                 $pm_now = mysql_num_rows($pm_get);
  510.  
  511.                 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'])) {
  512.  
  513.                         if (($pm_now >= $pm_max[0]) and ($pm_max[0] != 0)) {
  514.                                 nak("{$_SESSION['logged_uid']} limit exceeded");
  515.                         }
  516.                         else {
  517.                                 $pm_id = trim($_POST['pm_id']);
  518.                                 $pm_id = strtolower($pm_id);
  519.                
  520.                                 if (preg_match("/@/",$pm_id)) {
  521.                                         $pm_id = substr($pm_id,0,strpos($pm_id,"@"));
  522.                                 }
  523.                
  524.                                 $pm_addr = $pm_id . "@" . $_SESSION['logged_uid'];
  525.                
  526.                                 $alias_query = mysql_query("select id from aliases where id='$pm_addr'");
  527.                
  528.                                 if (mysql_fetch_row($alias_query) > 0) {
  529.                                         nak("$pm_addr alias exists");
  530.                                 }
  531.                                 else {
  532.                                         $pm_name = trim($_POST['pm_name']);
  533.                                         $pm_name = ucwords($pm_name);
  534.                
  535.                                         $pm_pw = trim($_POST['pm_pw']);
  536.                                         $pm_pw = crypt($pm_pw);
  537.                
  538.                                         $pm_init = substr($pm_id,0,1);
  539.                
  540.                                         $pm_maildir = "{$_SESSION['logged_uid']}/$pm_init/$pm_id";
  541.        
  542.                                         $pm_quota = kartero_dovecot_quota($_POST['pm_quota']);
  543.  
  544.                                         if ($pm_quota == "") {
  545.                                                 $pm_query = mysql_query("insert into users values('$pm_addr','$pm_pw','$pm_maildir/','$pm_name','{$_SESSION['logged_uid']}','1',NULL)");
  546.                                         }
  547.                                         else {
  548.                                                 $pm_query = mysql_query("insert into users values('$pm_addr','$pm_pw','$pm_maildir/','$pm_name','{$_SESSION['logged_uid']}','1','$pm_quota')");
  549.                                         }
  550.                
  551.                                         if (!$pm_query) {
  552.                                                 nak(strtolower(mysql_error()));
  553.                                         }
  554.                                         else {
  555.                                                 if (!file_exists("$mail_root/{$_SESSION['logged_uid']}")) {
  556.                                                         mkdir("$mail_root/{$_SESSION['logged_uid']}");
  557.                                                 }
  558.                
  559.                                                 if (!file_exists("$mail_root/{$_SESSION['logged_uid']}/$pm_init")) {
  560.                                                         mkdir("$mail_root/{$_SESSION['logged_uid']}/$pm_init");
  561.                                                 }
  562.                
  563.                                                 if (!file_exists("$mail_root/$pm_maildir")) {
  564.                                                         mkdir("$mail_root/$pm_maildir");
  565.                                                 }
  566.                
  567.                                                 if (!file_exists("$mail_root/$pm_maildir/cur")) {
  568.                                                         mkdir("$mail_root/$pm_maildir/cur");
  569.                                                 }
  570.                        
  571.                                                 if (!file_exists("$mail_root/$pm_maildir/new")) {
  572.                                                         mkdir("$mail_root/$pm_maildir/new");
  573.                                                 }
  574.                
  575.                                                 if (!file_exists("$mail_root/$pm_maildir/tmp")) {
  576.                                                         mkdir("$mail_root/$pm_maildir/tmp");
  577.                                                 }
  578.                
  579.                                                 ack("$pm_addr added");
  580.                                         }
  581.                                 }
  582.                         }
  583.                 }
  584.  
  585.                 if (isset($_POST['pm_mod']) and !empty($_POST['pm_mod'])) {
  586.                        
  587.                         $pm_mod = trim($_POST['pm_mod']);
  588.        
  589.                         if (isset($_POST['pm_name']) and !empty($_POST['pm_name'])) {
  590.        
  591.                                 $pm_name = trim($_POST['pm_name']);
  592.                                 $pm_name = ucwords($pm_name);
  593.        
  594.                                 $pm_query = mysql_query("select name from users where id='$pm_mod'");
  595.        
  596.                                 $name_get = mysql_fetch_row($pm_query);
  597.        
  598.                                 if ($name_get[0] != $pm_name) {
  599.        
  600.                                         $pm_query = mysql_query("update users set name='$pm_name' where id='$pm_mod'");
  601.        
  602.                                         if (!$pm_query) {
  603.                                                 nak(strtolower(mysql_error()));
  604.                                         }
  605.                                         else {
  606.                                                 ack("$pm_mod complete name updated");
  607.                                         }
  608.                                 }
  609.                         }
  610.        
  611.                         if (isset($_POST['pm_pass']) and !empty($_POST['pm_pass'])) {
  612.        
  613.                                 $pm_pass = $_POST['pm_pass'];
  614.                                 $pm_pass = crypt($pm_pass);
  615.        
  616.                                 $pm_query = mysql_query("update users set pw='$pm_pass' where id='$pm_mod'");
  617.        
  618.                                 if (!$pm_query) {
  619.                                         nak(strtolower(mysql_error()));
  620.                                 }
  621.                                 else {
  622.                                         ack("$pm_mod password updated");
  623.                                 }
  624.                         }
  625.  
  626.                         if (isset($_POST['pm_quota'])) {
  627.        
  628.                                 $pm_quota = kartero_dovecot_quota($_POST['pm_quota']);
  629.        
  630.                                 $pm_query = mysql_query("select quota from users where id='$pm_mod'");
  631.        
  632.                                 $quota_get = mysql_fetch_row($pm_query);
  633.        
  634.                                 if ($quota_get[0] != $pm_quota) {
  635.        
  636.                                         if ($pm_quota == "") {
  637.                                                 $pm_query = mysql_query("update users set quota=NULL where id='$pm_mod'");
  638.                                         }
  639.                                         else {
  640.                                                 $pm_query = mysql_query("update users set quota='$pm_quota' where id='$pm_mod'");
  641.                                         }
  642.        
  643.                                         if (!$pm_query) {
  644.                                                 nak(strtolower(mysql_error()));
  645.                                         }
  646.                                         else {
  647.                                                 ack("$pm_mod quota updated");
  648.                                         }
  649.                                 }
  650.                         }
  651.  
  652.                         if (isset($_POST['pm_email'])) {
  653.                                 $pm_email = trim($_POST['pm_email']);
  654.                                 $pm_email = strtolower($pm_email);
  655.                
  656.                                 if (preg_match("/@/",$pm_email)) {
  657.                                         $pm_email = substr($pm_email,0,strpos($pm_email,"@"));
  658.                                 }
  659.                
  660.                                 $pm_email = $pm_email . "@" . $_SESSION['logged_uid'];
  661.  
  662.                                 if ($pm_email != $_POST['pm_mod']) {
  663.                                         $pm_query = mysql_query("select id from users where id='$pm_email'");
  664.  
  665.                                         if (mysql_num_rows($pm_query) == 0) {
  666.                                                 $pm_query = mysql_query("select id from aliases where id='$pm_email'");
  667.  
  668.                                                 if (mysql_num_rows($pm_query) == 0) {
  669.                                                         $pm_maildir_new = "$mail_root/{$_SESSION['logged_uid']}/" . substr($pm_email, 0, 1) .'/' . substr($pm_email,0,strpos($pm_email,"@"));
  670.        
  671.                                                         if (!file_exists($pm_maildir_new)) {
  672.                                                                 $pm_maildir_old = "$mail_root/{$_SESSION['logged_uid']}/" . substr($pm_mod, 0, 1) .'/' . substr($pm_mod,0,strpos($pm_mod,"@"));
  673.        
  674.                                                                 if (!file_exists("$mail_root/{$_SESSION['logged_uid']}/" . substr($pm_email, 0, 1))) {
  675.                                                                         mkdir("$mail_root/{$_SESSION['logged_uid']}/" . substr($pm_email, 0, 1), 0700, true);
  676.                                                                 }
  677.                                                                 rename($pm_maildir_old, $pm_maildir_new);
  678.  
  679.                                                                 if (file_exists("$mail_home/{$_SESSION['logged_uid']}/" . substr($pm_mod, 0, 1))) {
  680.                                                                         $pm_home_old = "$mail_home/{$_SESSION['logged_uid']}/" . substr($pm_mod, 0, 1) .'/' . substr($pm_mod,0,strpos($pm_mod,"@"));
  681.                                                                         $pm_home_new = "$mail_home/{$_SESSION['logged_uid']}/" . substr($pm_email, 0, 1) .'/' . substr($pm_email,0,strpos($pm_email,"@"));
  682.  
  683.                                                                         if (!file_exists("$mail_home/{$_SESSION['logged_uid']}/" . substr($pm_email, 0, 1))) {
  684.                                                                                 mkdir("$mail_home/{$_SESSION['logged_uid']}/" . substr($pm_email, 0, 1), 0700, true);
  685.                                                                         }
  686.                                                                         rename($pm_home_old, $pm_home_new);
  687.                                                                 }
  688.  
  689.                                                                 if (file_exists('images/contacts/' . sha1($pm_mod))) {
  690.                                                                         rename('images/contacts/' . sha1($pm_mod), 'images/contacts/' . sha1($pm_email));
  691.                                                                 }
  692.  
  693.                                                                 $pm_maildir_set = "{$_SESSION['logged_uid']}/" . substr($pm_email, 0, 1) .'/' . substr($pm_email,0,strpos($pm_email,"@")) . '/';
  694.                                                                 $pm_query = mysql_query("update users set id='$pm_email', maildir='$pm_maildir_set' where id='$pm_mod'");
  695.                                                                 ack("{$_POST['pm_mod']} account migrated to $pm_email");
  696.  
  697.                                                                 $pm_query = mysql_query("update aliases set alias='$pm_email' where alias='$pm_mod'");
  698.        
  699.                                                                 if (mysql_affected_rows() > 0) {
  700.                                                                         if (mysql_affected_rows() > 1) {
  701.                                                                                 ack("{$_POST['pm_mod']} aliases migrated to $pm_email");
  702.                                                                         }
  703.                                                                         else {
  704.                                                                                 ack("{$_POST['pm_mod']} alias migrated to $pm_email");
  705.                                                                         }
  706.                                                                 }
  707.                                                         }
  708.                                                 }
  709.                                                 else {
  710.                                                         nak("$pm_email alias exists");
  711.                                                 }
  712.                                         }
  713.                                         else {
  714.                                                 nak("$pm_email account exists");
  715.                                         }
  716.                                 }
  717.                         }
  718.                 }
  719.        
  720.                 if (isset($_POST['pm_set']) and !empty($_POST['pm_set']) and isset($_POST['pm_do']) and !empty($_POST['pm_do'])) {
  721.        
  722.                         $pm_set = trim($_POST['pm_set']);
  723.                         $pm_do = trim($_POST['pm_do']);
  724.        
  725.                         if ($pm_do == "disable") {
  726.                                 $pm_do = "0";
  727.                         }
  728.        
  729.                         if ($pm_do == "enable") {
  730.                                 $pm_do = "1";
  731.                         }
  732.                
  733.                         $pm_query = mysql_query("update aliases set mode='$pm_do' where alias='$pm_set'");
  734.                         $pm_query = mysql_query("update users set mode='$pm_do' where id='$pm_set'");
  735.        
  736.                         if (!$pm_query) {
  737.                                 nak(strtolower(mysql_error()));
  738.                         }
  739.                         else {
  740.        
  741.                                 $pm_query = mysql_query("select alias from aliases where alias='$pm_set'");
  742.                                 $pm_aka = mysql_num_rows($pm_query);
  743.        
  744.                                 if ($pm_do == "0") {
  745.        
  746.                                         if ($pm_aka > 0) {
  747.        
  748.                                                 if ($pm_aka < 2) {
  749.                                                         ack("$pm_set account and 1 alias disabled");
  750.                                                 }
  751.                                                 else {
  752.                                                         ack("$pm_set account and $pm_aka aliases disabled");
  753.                                                 }
  754.                                         }
  755.                                         else {
  756.                                                 ack("$pm_set account disabled");
  757.                                         }
  758.                                 }
  759.        
  760.                                 if ($pm_do == "1") {
  761.        
  762.                                         if (mysql_fetch_row($pm_query) > 0) {
  763.        
  764.                                                 if ($pm_aka < 2) {
  765.                                                         ack("$pm_set account and 1 alias enabled");
  766.                                                 }
  767.                                                 else {
  768.                                                         ack("$pm_set account and $pm_aka aliases enabled");
  769.                                                 }
  770.                                         }
  771.                                         else {
  772.                                                 ack("$pm_set account enabled");
  773.                                         }
  774.                                 }
  775.                         }
  776.                 }
  777.        
  778.                 if (isset($_POST['pm_del']) and !empty($_POST['pm_del'])) {
  779.                        
  780.                         $pm_del = trim($_POST['pm_del']);
  781.        
  782.                         $pm_query = mysql_query("delete from aliases where alias='$pm_del'");
  783.                         $pm_query = mysql_query("delete from users where id='$pm_del'");
  784.                         $pm_query = mysql_query("delete from contacts where id='$pm_del'");
  785.                                
  786.                         if (!$pm_query) {
  787.                                 nak(strtolower(mysql_error()));
  788.                         }
  789.                         else {
  790.                                 $pm_init = substr($pm_del,0,1);
  791.                                 $pm_box = substr($pm_del,0,strpos($pm_del,"@"));
  792.        
  793.                                 if (file_exists("$mail_root/{$_SESSION['logged_uid']}/$pm_init/$pm_box")) {
  794.                                         rmdirr("$mail_root/{$_SESSION['logged_uid']}/$pm_init/$pm_box");
  795.                                 }
  796.        
  797.                                 if (count(glob("$mail_root/{$_SESSION['logged_uid']}/$pm_init/*")) < 1) {
  798.                                         rmdir("$mail_root/{$_SESSION['logged_uid']}/$pm_init");
  799.                                 }
  800.  
  801.                                 if (file_exists("$mail_home/{$_SESSION['logged_uid']}/$pm_init/$pm_box")) {
  802.                                         rmdirr("$mail_home/{$_SESSION['logged_uid']}/$pm_init/$pm_box");
  803.                                 }
  804.        
  805.                                 if (count(glob("$mail_home/{$_SESSION['logged_uid']}/$pm_init/*")) < 1) {
  806.                                         rmdir("$mail_home/{$_SESSION['logged_uid']}/$pm_init");
  807.                                 }
  808.                                
  809.                                 $pm_con = sha1($pm_del);
  810.  
  811.                                 if (file_exists("images/contacts/$pm_con")) {
  812.                                         rmdirr("images/contacts/$pm_con");
  813.                                 }
  814.        
  815.                                 ack("$pm_del deleted");
  816.                         }
  817.                 }
  818.        
  819.                 if (isset($_POST['alias_add']) and !empty($_POST['alias_add']) and isset($_POST['alias_to']) and !empty($_POST['alias_to'])) {
  820.        
  821.                         $alias_add = trim($_POST['alias_add']);
  822.        
  823.                         if (preg_match("/@/",$alias_add)) {
  824.                                 $alias_add = substr($alias_add,0,strpos($alias_add,"@"));
  825.                         }
  826.        
  827.                         $alias_add = "$alias_add@{$_SESSION['logged_uid']}";
  828.        
  829.                         $alias_to = trim($_POST['alias_to']);
  830.        
  831.                         $alias_query = mysql_query("select id from users where id='$alias_add'");
  832.        
  833.                         if (mysql_num_rows($alias_query) > 0) {
  834.                                 nak("$alias_add account exists");
  835.                         }
  836.                         else {
  837.                                 if (!preg_match("/@/",$alias_to) or preg_match("/@{$_SESSION['logged_uid']}/",$alias_to)) {
  838.        
  839.                                         if (preg_match("/@{$_SESSION['logged_uid']}/",$alias_to)) {
  840.                                                 $alias_to = substr($alias_to,0,strpos($alias_to,"@"));
  841.                                         }
  842.                
  843.                                         $alias_to = "$alias_to@{$_SESSION['logged_uid']}";
  844.                
  845.                                         $alias_query = mysql_query("select id from users where id='$alias_to'");
  846.                
  847.                                         if (mysql_num_rows($alias_query) < 1) {
  848.                                                 nak("$alias_to does not exist");
  849.                                         }
  850.                                         else {
  851.                                                 $alias_query = mysql_query("insert into aliases values('$alias_add','$alias_to','{$_SESSION['logged_uid']}','1')");
  852.                
  853.                                                 if (!$alias_query) {
  854.                                                         nak(strtolower(mysql_error()));
  855.                                                 }
  856.                                                 else {
  857.                                                         ack("$alias_add added");
  858.                                                 }
  859.                                         }
  860.                                 }
  861.                                 else {
  862.                                         $alias_query = mysql_query("insert into aliases values('$alias_add','$alias_to','{$_SESSION['logged_uid']}','1')");
  863.        
  864.                                         if (!$alias_query) {
  865.                                                 nak(strtolower(mysql_error()));
  866.                                         }
  867.                                         else {
  868.                                                 ack("$alias_add added");
  869.                                         }
  870.                                 }
  871.                         }
  872.                 }
  873.        
  874.                 if (isset($_POST['alias_mod']) and !empty($_POST['alias_mod']) and isset($_POST['alias_old']) and !empty($_POST['alias_old']) and isset($_POST['alias_to']) and !empty($_POST['alias_to'])) {
  875.                        
  876.                         $alias_mod = trim($_POST['alias_mod']);
  877.                         $alias_old = trim($_POST['alias_old']);
  878.                         $alias_to = trim($_POST['alias_to']);
  879.        
  880.                         if (!preg_match("/@/",$alias_to) or preg_match("/@{$_SESSION['logged_uid']}/",$alias_to)) {
  881.        
  882.                                 if (preg_match("/@{$_SESSION['logged_uid']}/",$alias_to)) {
  883.                                         $alias_to = substr($alias_to,0,strpos($alias_to,"@"));
  884.                                 }
  885.        
  886.                                 $alias_to = "$alias_to@{$_SESSION['logged_uid']}";
  887.        
  888.                                 $alias_query = mysql_query("select id from users where id='$alias_to'");
  889.        
  890.                                 if (mysql_num_rows($alias_query) < 1) {
  891.                                         nak("$alias_to does not exist");
  892.                                 }
  893.                                 else {
  894.                                         $alias_query = mysql_query("update aliases set alias='$alias_to' where id='$alias_mod' and alias='$alias_old'");
  895.        
  896.                                         if (!$alias_query) {
  897.                                                 nak(strtolower(mysql_error()));
  898.                                         }
  899.                                         else {
  900.                                                 ack("$alias_mod updated");
  901.                                         }
  902.                                 }
  903.                         }
  904.                         else {
  905.        
  906.                                 $alias_query = mysql_query("update aliases set alias='$alias_to' where id='$alias_mod' and alias='$alias_old'");
  907.                
  908.                                 if (!$alias_query) {
  909.                                         nak(strtolower(mysql_error()));
  910.                                 }
  911.                                 else {
  912.                                         ack("$alias_mod updated");
  913.                                 }
  914.                         }
  915.                 }
  916.        
  917.                 if (isset($_POST['alias_set']) and !empty($_POST['alias_set']) and isset($_POST['alias_usr']) and !empty($_POST['alias_usr']) and isset($_POST['alias_do']) and !empty($_POST['alias_do'])) {
  918.        
  919.                         $alias_set = trim($_POST['alias_set']);
  920.                         $alias_usr = trim($_POST['alias_usr']);
  921.                         $alias_do = trim($_POST['alias_do']);
  922.        
  923.                         if ($alias_do == "disable") {
  924.                                 $alias_do = "0";
  925.                                 $alias_query = mysql_query("update aliases set mode='$alias_do' where id='$alias_set' and alias='$alias_usr'");
  926.        
  927.                                 if (!$alias_query) {
  928.                                         nak(strtolower(mysql_error()));
  929.                                 }
  930.                                 else {
  931.                                         ack("$alias_set alias of $alias_usr disabled");
  932.                                 }
  933.                         }
  934.        
  935.                         if ($alias_do == "enable") {
  936.        
  937.                                 $alias_query = mysql_query("select alias from aliases where id='$alias_set'");
  938.                                 $alias_recipient = mysql_fetch_row($alias_query);
  939.                                 $alias_recipient = $alias_recipient[0];
  940.        
  941.                                 $usr_query = mysql_query("select mode from users where id='$alias_recipient'");
  942.                                 $alias_recipient_mode = mysql_fetch_row($usr_query);
  943.                                 $alias_recipient_mode = $alias_recipient_mode[0];
  944.        
  945.                                 if ($alias_recipient_mode == "0") {
  946.                                         nak("cannot enable $alias_set alias while $alias_recipient recipient account is disabled");
  947.                                 }
  948.                                 else {
  949.                                         $alias_do = "1";
  950.                                         $alias_query = mysql_query("update aliases set mode='$alias_do' where id='$alias_set' and alias='$alias_usr'");
  951.                
  952.                                         if (!$alias_query) {
  953.                                                 nak(strtolower(mysql_error()));
  954.                                         }
  955.                                         else {
  956.                                                 ack("$alias_set alias of $alias_usr enabled");
  957.                                         }
  958.                                 }
  959.                         }
  960.                 }
  961.        
  962.                 if (isset($_POST['alias_del']) and !empty($_POST['alias_del']) and isset($_POST['alias_usr']) and !empty($_POST['alias_usr'])) {
  963.                        
  964.                         $alias_del = trim($_POST['alias_del']);
  965.                         $alias_usr = trim($_POST['alias_usr']);
  966.  
  967.                         $alias_query = mysql_query("delete from aliases where id='$alias_del' and alias='$alias_usr'");
  968.        
  969.                         if (!$alias_query) {
  970.                                 nak(strtolower(mysql_error()));
  971.                         }
  972.                         else {
  973.                                 ack("$alias_del alias of $alias_usr deleted");
  974.                         }
  975.                 }
  976.         }
  977.        
  978.         if ($_SESSION['logged_lvl'] == "administrator") {
  979.  
  980.                 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'])) {
  981.        
  982.                         $dom_name = trim($_POST['dom_name']);
  983.        
  984.                         $dom_pass = trim($_POST['dom_pass']);
  985.                         $dom_pass = crypt($dom_pass);
  986.        
  987.                         $dom_max = trim($_POST['dom_max']);
  988.        
  989.                         $dom_query = mysql_query("insert into domains values('$dom_name','$dom_pass','$dom_max','1')");
  990.        
  991.                         if (!$dom_query) {
  992.                                 nak(strtolower(mysql_error()));
  993.                         }
  994.                         else {
  995.                                 if (!file_exists("$mail_root/$dom_name")) {
  996.                                         mkdir("$mail_root/$dom_name");
  997.                                 }
  998.        
  999.                                 ack("$dom_name added");
  1000.                         }
  1001.                 }
  1002.        
  1003.                 if (isset($_POST['dom_mod']) and !empty($_POST['dom_mod'])) {
  1004.                        
  1005.                         $dom_mod = trim($_POST['dom_mod']);
  1006.        
  1007.                         if (isset($_POST['dom_pass']) and !empty($_POST['dom_pass'])) {
  1008.        
  1009.                                 $dom_pass = $_POST['dom_pass'];
  1010.                                 $dom_pass = crypt($dom_pass);
  1011.        
  1012.                                 $dom_query = mysql_query("update domains set pw='$dom_pass' where id='$dom_mod'");
  1013.        
  1014.                                 if (!$dom_query) {
  1015.                                         nak(strtolower(mysql_error()));
  1016.                                 }
  1017.                                 else {
  1018.                                         ack("$dom_mod postmaster password updated");
  1019.                                 }
  1020.                         }
  1021.        
  1022.                         if (isset($_POST['dom_max']) and is_numeric($_POST['dom_max'])) {
  1023.        
  1024.                                 $dom_max = $_POST['dom_max'];
  1025.        
  1026.                                 $dom_query = mysql_query("select max from domains where id='$dom_mod'");
  1027.        
  1028.                                 $max_get = mysql_fetch_row($dom_query);
  1029.        
  1030.                                 if ($max_get[0] != $dom_max) {
  1031.        
  1032.                                         $dom_query = mysql_query("update domains set max='$dom_max' where id='$dom_mod'");
  1033.        
  1034.                                         if (!$dom_query) {
  1035.                                                 nak(strtolower(mysql_error()));
  1036.                                         }
  1037.                                         else {
  1038.                                                 ack("$dom_mod account limit updated");
  1039.                                         }
  1040.                                 }
  1041.                         }
  1042.                 }
  1043.        
  1044.                 if (isset($_POST['dom_set']) and !empty($_POST['dom_set']) and isset($_POST['dom_do']) and !empty($_POST['dom_do'])) {
  1045.        
  1046.                         $dom_set = trim($_POST['dom_set']);
  1047.                         $dom_do = trim($_POST['dom_do']);
  1048.        
  1049.                         if ($dom_do == "disable") {
  1050.                                 $dom_do = "0";
  1051.                         }
  1052.        
  1053.                         if ($dom_do == "enable") {
  1054.                                 $dom_do = "1";
  1055.                         }
  1056.                
  1057.                         $dom_query = mysql_query("update domains set mode='$dom_do' where id='$dom_set'");
  1058.        
  1059.                         if (!$dom_query) {
  1060.                                 nak(strtolower(mysql_error()));
  1061.                         }
  1062.                         else {
  1063.                                 if ($dom_do == "0") {
  1064.                                         ack("$dom_set disabled");
  1065.                                 }
  1066.        
  1067.                                 if ($dom_do == "1") {
  1068.                                         ack("$dom_set enabled");
  1069.                                 }
  1070.                         }
  1071.                 }
  1072.        
  1073.                 if (isset($_POST['dom_del']) and !empty($_POST['dom_del'])) {
  1074.                        
  1075.                         $dom_del = trim($_POST['dom_del']);
  1076.  
  1077.                         $dom_query = mysql_query("select id from users where domain='$dom_del'");
  1078.                        
  1079.                         while ($dom_id = mysql_fetch_array($dom_query)) {
  1080.                                
  1081.                                 $dom_id = sha1($dom_id[id]);
  1082.                                
  1083.                                 if (file_exists("images/contacts/$dom_id")) {
  1084.                                         rmdirr("images/contacts/$dom_id");
  1085.                                 }
  1086.                         }
  1087.                        
  1088.                         $dom_query = mysql_query("delete from contacts where domain='$dom_del'");      
  1089.                         $dom_query = mysql_query("delete from aliases where domain='$dom_del'");
  1090.                         $dom_query = mysql_query("delete from users where domain='$dom_del'");
  1091.                         $dom_query = mysql_query("delete from domains where id='$dom_del'");
  1092.        
  1093.                         if (!$dom_query) {
  1094.                                 nak(strtolower(mysql_error()));
  1095.                         }
  1096.                         else {
  1097.                                 if (file_exists("$mail_root/$dom_del")) {
  1098.                                         rmdirr("$mail_root/$dom_del");
  1099.                                 }
  1100.  
  1101.                                 if (file_exists("$mail_home/$dom_del")) {
  1102.                                         rmdirr("$mail_home/$dom_del");
  1103.                                 }
  1104.  
  1105.                                 ack("$dom_del deleted");
  1106.                         }
  1107.                 }
  1108.         }
  1109.        
  1110.         echo "</td></tr>";
  1111.  
  1112.         echo "<tr><td valign=\"top\">";
  1113.  
  1114.         if ($_SESSION['logged_lvl'] == "subscriber") {
  1115.  
  1116.                 //$imap_host = "{127.0.0.1:143/imap/notls/norsh}";
  1117.  
  1118.                 if (!isset($_POST['box']) or empty($_POST['box'])) {
  1119.                         $folder = "INBOX";
  1120.                 }
  1121.                 else {
  1122.                         $folder = trim(strip_tags($_POST['box']));
  1123.                 }
  1124.  
  1125.                 $mbox = @imap_open("{$imap_host}$folder", $_SESSION['logged_uid'], $_SESSION['logged_key'], CL_EXPUNGE) or die(imap_last_error());
  1126.  
  1127.                 if (isset($_POST['move_msg']) and !empty($_POST['move_msg']) and isset($_POST['move_box']) and !empty($_POST['move_box'])) {
  1128.  
  1129.                         $move_msg = trim(strip_tags($_POST['move_msg']));
  1130.                         $move_box = imap_utf7_encode(ucwords(trim(preg_replace("/[^a-z0-9 ]/i","",strip_tags($_POST['move_box'])))));
  1131.  
  1132.                         if (($move_box != "Sent") and ($move_box != "Trash")) {
  1133.                                 imap_mail_move($mbox,$move_msg,$move_box,CP_UID);
  1134.                                 imap_expunge($mbox);
  1135.                         }
  1136.                 }
  1137.  
  1138.                 if (isset($_POST['new_box']) and !empty($_POST['new_box'])) {
  1139.  
  1140.                         $new_box = imap_utf7_encode(ucwords(trim(preg_replace("/[^a-z0-9 ]/i","",strip_tags($_POST['new_box'])))));
  1141.                         imap_createmailbox($mbox,"{$imap_host}$new_box");
  1142.                 }
  1143.  
  1144.                 if (isset($_POST['del_box']) and !empty($_POST['del_box'])) {
  1145.  
  1146.                         $del_box = imap_utf7_encode(ucwords(trim(preg_replace("/[^a-z0-9 ]/i","",strip_tags($_POST['del_box'])))));
  1147.                         $del_siv = $del_box;
  1148.  
  1149.                         if (($del_box != "INBOX") and ($del_box != "Sent") and ($del_box != "Trash")) {
  1150.                                 imap_deletemailbox($mbox,"{$imap_host}$del_box");
  1151.                         }
  1152.                 }
  1153.  
  1154.                 echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"100%\">";
  1155.  
  1156.                 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'])) {
  1157.                
  1158.                         $reply_from = trim($_POST['reply_from']);
  1159.                         $reply_to = trim($_POST['reply_to']);
  1160.                         $reply_subj = trim($_POST['reply_subj']);
  1161.                         $reply_body = trim($_POST['reply_body']);                      
  1162.                         $reply_headers = "From: $reply_from\nX-Mailer: Kartero/2.0 (PHP/" . phpversion() . ")\n";
  1163.  
  1164.                         if (isset($_POST['reply_cc']) and !empty($_POST['reply_cc'])) {
  1165.                        
  1166.                                 $reply_cc = trim($_POST['reply_cc']);
  1167.                                
  1168.                                 $reply_headers = $reply_headers . "Cc: $reply_cc\n";
  1169.                         }
  1170.  
  1171.                         if (isset($_POST['reply_bcc']) and !empty($_POST['reply_bcc'])) {
  1172.                        
  1173.                                 $reply_bcc = trim($_POST['reply_bcc']);
  1174.                                
  1175.                                 $reply_headers = $reply_headers . "Bcc: $reply_bcc\n";
  1176.                         }
  1177.  
  1178.                         if (isset($_POST['filedrop_box']) and !empty($_POST['filedrop_box'])) {
  1179.  
  1180.                                 $do_filedrop_box = $_POST['filedrop_box'];
  1181.  
  1182.                                 if (file_exists("attach/i/$fileUsr/$do_filedrop_box") and (count(glob("attach/i/$fileUsr/$do_filedrop_box/*")) > 0)) {
  1183.  
  1184.                                         $mime_boundary = md5(microtime(true));
  1185.  
  1186.                                         $reply_headers .= "MIME-Version: 1.0\n";
  1187.                                         $reply_headers .= "Content-Type: multipart/mixed; boundary=\"{$mime_boundary}\"\n";
  1188.                                        
  1189.                                         $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}";
  1190.  
  1191.                                         $do_reply_from = extract_emails_from($reply_from);
  1192.                                         $do_reply_to = extract_emails_from($reply_to);
  1193.  
  1194.                                         $do_filedrop_msg = glob("attach/i/$fileUsr/$do_filedrop_box/*");
  1195.  
  1196.                                         sort($do_filedrop_msg);
  1197.                                         reset($do_filedrop_msg);
  1198.  
  1199.                                         foreach ($do_filedrop_msg as $do_filedrop_put) {
  1200.  
  1201.                                                 $do_filedrop_nom = str_replace("attach/i/$fileUsr/$do_filedrop_box/","",$do_filedrop_put);
  1202.  
  1203.                                                 $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)));
  1204.                                         }
  1205.  
  1206.                                         $reply_body = $reply_body . "--{$mime_boundary}--";
  1207.  
  1208.                                         rmdirr("attach/i/$fileUsr/$do_filedrop_box");
  1209.  
  1210.                                         if (count(glob("attach/i/$fileUsr/*")) == 0) {
  1211.                                                 rmdirr("attach/i/$fileUsr");
  1212.                                         }
  1213.                                 }
  1214.                         }
  1215.  
  1216.                         if ($_POST['redirect'] == 1) {
  1217.  
  1218.                                 $redirect_date = date("D, j M Y H:i:s O (T)");
  1219.  
  1220.                                 $reply_headers = "Resent-Date: $redirect_date\nResent-To: $reply_to\n";
  1221.  
  1222.                                 if (isset($_POST['reply_cc']) and !empty($_POST['reply_cc'])) {
  1223.                        
  1224.                                         $reply_cc = trim($_POST['reply_cc']);
  1225.                                
  1226.                                         $reply_headers = $reply_headers . "Resent-Cc: $reply_cc\n";
  1227.                                 }
  1228.        
  1229.                                 if (isset($_POST['reply_bcc']) and !empty($_POST['reply_bcc'])) {
  1230.                                
  1231.                                         $reply_bcc = trim($_POST['reply_bcc']);
  1232.                                        
  1233.                                         $reply_headers = $reply_headers . "Resent-Bcc: $reply_bcc\n";
  1234.                                 }
  1235.  
  1236.                                 $reply_headers = $reply_headers . imap_fetchheader($mbox,$_POST['msg'],FT_UID|FT_PREFETCHTEXT) . "\n";
  1237.  
  1238.                                 $reply_body = imap_body($mbox,$_POST['msg'],FT_UID);
  1239.                         }
  1240.  
  1241.                         $reply_fenv = extract_emails_from($reply_from);
  1242.  
  1243.                         if ($_POST['reply_hi'] == "on") {
  1244.                                 $reply_headers = $reply_headers . "X-Priority: 1 (Highest)\nImportance: High\n";
  1245.                         }
  1246.  
  1247.                         if ($_POST['reply_rr'] == "on") {
  1248.                                 $reply_headers = $reply_headers . "X-Confirm-Reading-To: {$reply_fenv[0]}\nDisposition-Notification-To: {$reply_fenv[0]}\n";
  1249.                         }
  1250.  
  1251.                         if ($_POST['reply_dr'] == "on") {
  1252.                                 $reply_headers = $reply_headers . "Return-Receipt-To: {$reply_fenv[0]}\n";
  1253.                         }
  1254.  
  1255.                         $reply_date = date ("d-M-Y H:i:s O");
  1256.                        
  1257.                         $reply_body = preg_replace("#(?<!\r)\n#si", "\n", $reply_body);
  1258.  
  1259.                         $reply_headers = preg_replace('#(?<!\r)\n#si', "\n", $reply_headers);
  1260.                         $reply_headers = str_replace("\n\n","\n",$reply_headers);
  1261.  
  1262.                         if ($_POST['reply_dm'] == "on") {
  1263.                                 imap_createmailbox($mbox,"{$imap_host}Drafts");                
  1264.                                 imap_append($mbox,"{$imap_host}Drafts","To: $reply_to\r\nSubject: $reply_subj\r\nDate: $reply_date\r\n$reply_headers\r\n\r\n$reply_body\r\n");
  1265.                         }
  1266.                         else {
  1267.                                 if ($_POST['reply_sm'] == "on") {
  1268.                                         $reply_signed = kartero_smime_sign($_SESSION['logged_uid'], strip_tags($reply_from), extract_emails_from($reply_from)[0], $reply_body, $mail_home);
  1269.  
  1270.                                         $reply_headers = preg_replace('/^.*?Content-Type.*\n?/m', '', $reply_headers);
  1271.                                         $reply_headers = $reply_headers . trim($reply_signed[0]);
  1272.                                         $reply_headers = implode("\n", array_unique(explode("\n", $reply_headers)));
  1273.  
  1274.                                         $reply_body = trim($reply_signed[1]);
  1275.                                 }
  1276.  
  1277.                                 imap_createmailbox($mbox,"{$imap_host}Sent");
  1278.                                 imap_append($mbox,"{$imap_host}Sent","To: $reply_to\r\nSubject: $reply_subj\r\nDate: $reply_date\r\n$reply_headers\r\n\r\n$reply_body\r\n");
  1279.                                 mail($reply_to, $reply_subj, $reply_body, $reply_headers, "-f {$reply_fenv[0]}");
  1280.                                
  1281.                                 if ($folder == "Drafts") {
  1282.                                         imap_delete($mbox, $_POST['msg'], FT_UID);
  1283.                                 }
  1284.                         }
  1285.  
  1286.                         kartero_local_storage("reply_body",$_SESSION['logged_uid'],1);
  1287.  
  1288.                         if ($_POST['ack'] == 1) {
  1289.                                 imap_setflag_full($mbox, $_POST['msg'], '\\Answered',ST_UID);
  1290.                         }
  1291.                 }
  1292.  
  1293.                 if (isset($_POST['not']) and !empty($_POST['not']) and is_numeric($_POST['not'])) {
  1294.  
  1295.                         imap_clearflag_full($mbox, $_POST['msg'], '\\Seen',ST_UID);
  1296.                         imap_expunge($mbox);
  1297.                 }
  1298.  
  1299.                 if (isset($_POST['emt']) and !empty($_POST['emt']) and is_numeric($_POST['emt'])) {
  1300.  
  1301.                         imap_delete($mbox,'1:*');
  1302.                         imap_expunge($mbox);
  1303.                 }
  1304.  
  1305.                 echo "<tr><td valign=\"top\" width=\"800\"><div id=\"main\" class=\"main\">";
  1306.  
  1307.                 /*
  1308.                 echo "<tr>";
  1309.                 echo "<td valign=\"top\" width=\"100\">";
  1310.                 include("folders.php");
  1311.                 echo "</td><td width=\"10\"></td>";
  1312.                 echo "<td valign=\"top\" width=\"800\"><div id=\"main\" class=\"main\">";
  1313.                 */
  1314.        
  1315.                 if (isset($_POST['get']) and !empty($_POST['get'])) {
  1316.                         include("read.php");
  1317.                 }
  1318.                 elseif (isset($_POST['rep']) and !empty($_POST['rep'])) {
  1319.                         include("send.php");
  1320.                 }
  1321.                 elseif (isset($_POST['new']) and !empty($_POST['new'])) {
  1322.                         include("post.php");
  1323.                 }
  1324.                 elseif (isset($_POST['dig']) and !empty($_POST['dig'])) {
  1325.                         include("search.php");
  1326.                 }
  1327.                 elseif (isset($_POST['addr']) and !empty($_POST['addr'])) {
  1328.  
  1329.                         echo "<title>Kartero - Contacts</title>";
  1330.  
  1331.                         echo "<div class=\"message\">";
  1332.                         echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"100%\"><tr><td>";
  1333.  
  1334.                         echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
  1335.  
  1336.                         echo "<tr>";
  1337.                         echo "<td class=\"label\"><img src=\"images/mail-contacts.png\" border=\"0\" width=\"32\" height=\"32\" onclick=\"document.getElementById('list').style.display='inline';document.getElementById('add').style.display='none'\"></td>";
  1338.                         echo "<td class=\"label\"><img src=\"images/mail-contacts.png\" border=\"0\" width=\"32\" height=\"32\" onclick=\"document.getElementById('list').style.display='none';document.getElementById('add').style.display='inline'\"></td>";
  1339.                         echo "</tr>";
  1340.  
  1341.                         echo "<tr><td class=\"label\">list</td><td class=\"label\">add</td></tr>";
  1342.  
  1343.                         echo "</table>";
  1344.  
  1345.                         echo "</td></tr></table>";
  1346.                         echo "</div>";
  1347.  
  1348.                         $addr_query = mysql_query("select * from contacts where id='{$_SESSION['logged_uid']}' order by lname, fname, email;");
  1349.  
  1350.                         if (($_POST['addr'] == "add") or (mysql_num_rows($addr_query) < 1)) {
  1351.                                 echo "<div id=\"add\">";
  1352.                         }
  1353.                         else {
  1354.                                 echo "<div id=\"add\" style=\"display: none;\">";
  1355.                         }
  1356.  
  1357.                         echo "<div class=\"spacer\"></div>";
  1358.                         echo "<table border=\"0\" cellspacing=\"1\" cellpadding=\"1\" width=\400\">";
  1359.                         echo "<form method=\"post\" enctype=\"multipart/form-data\">";
  1360.                         echo "<input type=\"hidden\" name=\"addr\" value=\"add\">";
  1361.                
  1362.                         echo "<tr><td><input class=\"input\" type=\"text\" name=\"a_email\" maxlength=\"255\" autocomplete=\"off\" required autofocus></td><td>email address</td></tr>";
  1363.                         echo "<tr><td><input class=\"input\" type=\"text\" name=\"a_fname\" maxlength=\"64\" autocomplete=\"off\" required></td><td>first name</td></tr>";
  1364.                         echo "<tr><td><input class=\"input\" type=\"text\" name=\"a_lname\" maxlength=\"64\" autocomplete=\"off\" required></td><td>last name</td></tr>";
  1365.                         echo "<tr><td><input type=\"file\" name=\"a_photo\"></td><td>optional photo</td></tr>";
  1366.                         echo "<tr><td><input class=\"button\" type=\"submit\" value=\"add contact\"></td><td></td></tr>";
  1367.  
  1368.                         echo "</form>";
  1369.                         echo "</table>";
  1370.                         echo "</div>";
  1371.  
  1372.                         if ($_POST['addr'] == "list") {
  1373.                                 echo "<div id=\"list\">";
  1374.                         }
  1375.                         else {
  1376.                                 echo "<div id=\"list\" style=\"display: none;\">";
  1377.                         }
  1378.  
  1379.                         if (mysql_num_rows($addr_query) > 0) {
  1380.  
  1381.                                 echo "<div class=\"spacer\"></div>";
  1382.                                 echo "<table border=\"0\" cellspacing=\"1\" cellpadding=\"2\" bgcolor=\"#cccccc\">";
  1383.  
  1384.                                 while ($addr_row = mysql_fetch_array($addr_query)) {
  1385.                        
  1386.                                         if ($bgColor == "#ffffff") {
  1387.                                                 $bgColor = "#fdfdfd";
  1388.                                         }
  1389.                                         else {
  1390.                                                 $bgColor = "#ffffff";
  1391.                                         }
  1392.  
  1393.                                         echo "<form method=\"post\">";
  1394.                                         echo "<input type=\"hidden\" name=\"addr\" value=\"list\">";
  1395.                                         echo "<input type=\"hidden\" name=\"a_del\" value=\"{$addr_row[email]}\">";
  1396.                                         echo "<tr bgcolor=\"$bgColor\">";
  1397.                                         echo "<td valign=\"bottom\" width=\"24\"><input type=\"image\" src=\"images/sieve-del.png\"></td>";
  1398.                                         echo "<td>{$addr_row[fname]} {$addr_row[lname]}</td><td>{$addr_row[email]}</td>";
  1399.                                         echo "</tr>";
  1400.                                         echo "</form>";
  1401.                                 }
  1402.  
  1403.                                 echo "</table>";
  1404.                                 echo "</div>";
  1405.  
  1406.                                 unset($bgColor);
  1407.                         }
  1408.                 }
  1409.                 elseif (isset($_POST['set']) and !empty($_POST['set'])) {
  1410.  
  1411.                         echo "<script src=\"core.js\" async></script>";
  1412.  
  1413.                         echo "<title>Kartero - Settings</title>";
  1414.  
  1415.                         echo "<div class=\"message\">";
  1416.                         echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"100%\"><tr><td>";
  1417.  
  1418.                         echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
  1419.  
  1420.                         echo "<tr>";
  1421.                         echo "<td class=\"label\"><img src=\"images/mail-settings.png\" border=\"0\" width=\"32\" height=\"32\" onclick=\"document.getElementById('account').style.display='inline';document.getElementById('folders').style.display='none';document.getElementById('filters').style.display='none'\"></td>";
  1422.                         echo "<td class=\"label\"><img src=\"images/mail-settings.png\" border=\"0\" width=\"32\" height=\"32\" onclick=\"document.getElementById('account').style.display='none';document.getElementById('folders').style.display='inline';document.getElementById('filters').style.display='none'\"></td>";
  1423.                         echo "<td class=\"label\"><img src=\"images/mail-settings.png\" border=\"0\" width=\"32\" height=\"32\" onclick=\"document.getElementById('account').style.display='none';document.getElementById('folders').style.display='none';document.getElementById('filters').style.display='inline'\"></td>";
  1424. echo "</tr>";
  1425.  
  1426.                         echo "<tr><td class=\"label\">account</td><td class=\"label\">folders</td><td class=\"label\">filters</td></tr>";
  1427.  
  1428.                         echo "</table>";
  1429.                        
  1430.                         echo "</td></tr></table>";
  1431.                         echo "</div>";
  1432.  
  1433.                         if ($_POST['set'] == "account") {
  1434.                                 echo "<div id=\"account\">";
  1435.                         }
  1436.                         else {
  1437.                                 echo "<div id=\"account\" style=\"display: none;\">";
  1438.                         }
  1439.  
  1440.                         echo "<div class=\"spacer\"></div>";
  1441.                        
  1442.                         echo "<table border=\"0\" cellspacing=\"1\" cellpadding=\"1\">";
  1443.                         echo "<form method=\"post\">";
  1444.                         echo "<input type=\"hidden\" name=\"set\" value=\"account\">";
  1445.                         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>";
  1446.  
  1447.                         $usr_auto = "";
  1448.  
  1449.                         if (file_exists("$sivP/0.sieve")) {
  1450.                                 $usrV = file("$sivP/0.sieve");
  1451.                                 $usr_auto = trim(trim($usrV[5]),'"');
  1452.                         }
  1453.  
  1454.                         echo "<tr bgcolor=\"#ffffff\"><td width=\"400\"><input class=\"input\" type=\"text\" name=\"usr_auto\" value=\"$usr_auto\" autocomplete=\"off\" maxlength=\"1000\" id=\"ar1\" onkeyup=\"arep()\"></td><td id=\"ar2\">auto-reply</td></tr>";
  1455.  
  1456.                         echo "<tr bgcolor=\"#ffffff\"><td width=\"400\"><table border=\"0\" cellspacing=\"1\" cellpadding=\"2\" bgcolor=\"#cccccc\" width=\"100%\"><tr bgcolor=\"#ffffff\"><td height=\"17\"><span id=\"mtr\" style=\"display: none;\"></span></td></tr></table></td><td id=\"ctd\"></td></tr>";
  1457.                         echo "<tr bgcolor=\"#ffffff\"><td width=\"400\"><input class=\"input\" type=\"password\" name=\"usr_pw2\" autocomplete=\"off\" maxlength=\"64\" onkeyup=\"eval(this.value)\" id=\"usr_pw2\"></td><td id=\"pmc1\"><nobr>new password";
  1458.  
  1459.                         if (isset($_POST['usr_pw1']) and !empty($_POST['usr_pw1']) and isset($_POST['usr_pw2']) and (strlen($_POST['usr_pw2']) < 8)) {
  1460.                                 echo " <font color=\"red\">too short</font>";
  1461.                         }
  1462.  
  1463.                         echo "</nobr></td></tr>";
  1464.  
  1465.                         echo "<tr bgcolor=\"#ffffff\"><td width=\"400\"><input class=\"input\" type=\"password\" name=\"usr_pw3\" autocomplete=\"off\" maxlength=\"64\" onkeyup=\"same(this.value)\" id=\"usr_pw3\"></td><td id=\"pmc2\"><nobr>new password";
  1466.  
  1467.                         if (isset($_POST['usr_pw1']) and !empty($_POST['usr_pw1']) and isset($_POST['usr_pw3']) and (strlen($_POST['usr_pw3']) < 8)) {
  1468.                                 echo " <font color=\"red\">too short</font>";
  1469.                         }
  1470.  
  1471.                         echo "</nobr></td></tr>";
  1472.  
  1473.                         echo "<tr bgcolor=\"#ffffff\"><td width=\"400\"><input class=\"input\" type=\"password\" name=\"usr_pw1\" autocomplete=\"off\" maxlength=\"64\"></td><td><nobr>current password</nobr></td></tr>";
  1474.  
  1475.                         echo "<tr bgcolor=\"#ffffff\"><td width=\"400\"><input class=\"button\" type=\"submit\" value=\"update\"></td><td></td></tr>";
  1476.                         echo "</form></table>";
  1477.                         echo "</div>";
  1478.  
  1479.                         if ($_POST['set'] == "folders") {
  1480.                                 echo "<div id=\"folders\">";
  1481.                         }
  1482.                         else {
  1483.                                 echo "<div id=\"folders\" style=\"display: none;\">";
  1484.                         }
  1485.  
  1486.                         echo "<div class=\"spacer\"></div>";
  1487.                         echo "<table border=\"0\" cellspacing=\"1\" cellpadding=\"1\">";
  1488.                         echo "<form method=\"post\">";
  1489.                         echo "<input type=\"hidden\" name=\"set\" value=\"folders\">";
  1490.                         echo "<tr bgcolor=\"#ffffff\"><td width=\"200\"><input class=\"input\" type=\"text\" name=\"new_box\" autocomplete=\"off\" maxlength=\"200\" required autofocus></td>";
  1491.                         echo "<td width=\"197\"><input class=\"button\" type=\"submit\" value=\"create folder\"></td><td></td></tr>";
  1492.                         echo "</form>";
  1493.  
  1494.                         $usr_box = kartero_sort_folders($imap_host,imap_list($mbox,$imap_host,"*"));
  1495.  
  1496.                         if (count($usr_box) > 0) {
  1497.  
  1498.                                 echo "<form method=\"post\">";
  1499.                                 echo "<input type=\"hidden\" name=\"set\" value=\"folders\">";
  1500.                                 echo "<tr bgcolor=\"#ffffff\"><td width=\"200\"><select class=\"input\" name=\"del_box\">";
  1501.  
  1502.                                 foreach ($usr_box as $del_box) {
  1503.  
  1504.                                         $del_box = imap_utf7_decode(str_replace($imap_host,"",$del_box));
  1505.                                        
  1506.                                         if ($del_box == "INBOX") {
  1507.                                                 continue;
  1508.                                         }
  1509.  
  1510.                                         if ($del_box == "Sent") {
  1511.                                                 continue;
  1512.                                         }
  1513.  
  1514.                                         if ($del_box == "Trash") {
  1515.                                                 continue;
  1516.                                         }
  1517.  
  1518.                                         echo "<option value=\"$del_box\">$del_box</option>";
  1519.                                 }              
  1520.                
  1521.                                 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>";
  1522.                                 echo "</form>";
  1523.                         }
  1524.  
  1525.                         echo "</table>";
  1526.                         echo "</div>";
  1527.  
  1528.                         if (isset($mail_home) and !empty($mail_home)) {
  1529.  
  1530.                                 $sivR = glob("$sivP/*.sieve",GLOB_NOSORT);
  1531.  
  1532.                                 if ($del_siv) {
  1533.                        
  1534.                                         foreach ($sivR as $sivI) {
  1535.                        
  1536.                                                 if (stripos(file_get_contents($sivI),"fileinto \"$del_siv\";")) {
  1537.                                                         unlink($sivI);
  1538.                                                 }
  1539.                                         }
  1540.                                 }
  1541.  
  1542.                                 if (isset($_POST['sieveT']) and !empty($_POST['sieveT']) and isset($_POST['sieveV']) and !empty($_POST['sieveV']) and isset($_POST['sieveF']) and !empty($_POST['sieveF'])) {
  1543.  
  1544.                                         $sieveT = strtolower(trim(strip_tags($_POST['sieveT'])));
  1545.                                         $sieveV = trim($_POST['sieveV']);
  1546.                                         $sieveF = imap_utf7_encode(trim(strip_tags($_POST['sieveF'])));
  1547.  
  1548.                                         if ($sieveT == "subject") {
  1549.                                                 $sieveV = strip_tags($sieveV);
  1550.                                         }
  1551.  
  1552.                                         if ($sieveV != "") {
  1553.  
  1554.                                                 if ($sieveT == "body") {
  1555.                                                         $sieveW = "require [\"fileinto\", \"body\"]; if body :contains \"$sieveV\" { fileinto \"$sieveF\"; }";
  1556.                                                 }
  1557.                                                 else {
  1558.                                                         $sieveW = "require \"fileinto\"; if header :contains \"$sieveT\" \"$sieveV\" { fileinto \"$sieveF\"; }";
  1559.                                                 }
  1560.                                         }
  1561.  
  1562.                                         if ($sieveW != ""){
  1563.  
  1564.                                                 if (count($sivR) > 0) {
  1565.                                        
  1566.                                                         foreach ($sivR as $sieveR) {
  1567.  
  1568.                                                                 if (strtolower(trim(file_get_contents($sieveR))) != strtolower($sieveW)) {
  1569.                                                                         continue;
  1570.                                                                 }
  1571.                                                        
  1572.                                                                 unlink($sieveR);
  1573.                                                         }
  1574.                                                 }
  1575.  
  1576.                                                 $sieveP = "$sivP/" . date("YmdHis") . ".sieve";
  1577.  
  1578.                                                 if (!file_exists($sivP)) {
  1579.                                                         mkdir($sivP,0700,true);
  1580.                                                 }
  1581.  
  1582.                                                 $fp = fopen($sieveP,"w");
  1583.                                                 fwrite($fp,$sieveW);
  1584.                                                 fclose($fp);
  1585.  
  1586.                                                 $sieveC = "$sieveT \"$sieveV\"";
  1587.  
  1588.                                                 $sieveO = (imap_search($mbox,$sieveC,SE_UID));
  1589.  
  1590.                                                 foreach ($sieveO as $sivO) {
  1591.                                                         imap_mail_move($mbox,$sivO,$sieveF,CP_UID);
  1592.                                                         imap_expunge($mbox);
  1593.                                                 }
  1594.                                         }
  1595.                                 }
  1596.  
  1597.                                 if (isset($_POST['sieve']) and !empty($_POST['sieve'])) {
  1598.  
  1599.                                         $sieve = strtolower(trim(strip_tags($_POST['sieve'])));
  1600.  
  1601.                                         if (isset($_POST['sivM']) and !empty($_POST['sivM'])) {
  1602.  
  1603.                                                 $sivM = trim(strip_tags($_POST['sivM']));
  1604.  
  1605.                                                 if (file_exists("$sivP/$sivM") and ($_POST['set'] == "sivM")) {
  1606.  
  1607.                                                         $sivMs = file_get_contents("$sivP/$sieve");
  1608.                                                         $sivMt = file_get_contents("$sivP/$sivM");
  1609.  
  1610.                                                         $fp = fopen("$sivP/$sieve","w");
  1611.                                                         fwrite($fp,$sivMt);
  1612.                                                         fclose($fp);
  1613.  
  1614.                                                         $fp = fopen("$sivP/$sivM","w");
  1615.                                                         fwrite($fp,$sivMs);
  1616.                                                         fclose($fp);
  1617.                                                 }
  1618.                                         }
  1619.  
  1620.                                         if (file_exists("$sivP/$sieve") and ($_POST['set'] == "sivD")) {
  1621.                                                 unlink("$sivP/$sieve");
  1622.                                         }
  1623.                                 }
  1624.  
  1625.                                 if (($_POST['set'] == "filters") or ($_POST['set'] == "sivD") or ($_POST['set'] == "sivM")) {
  1626.                                         echo "<div id=\"filters\">";
  1627.                                 }
  1628.                                 else {
  1629.                                         echo "<div id=\"filters\" style=\"display: none;\">";
  1630.                                 }
  1631.  
  1632.                                 $sivR = glob("$sivP/*.sieve",GLOB_NOSORT);
  1633.  
  1634.                                 if (in_array("$sivP/0.sieve",$sivR)) {
  1635.                                         array_splice($sivR,array_search("$sivP/0.sieve",$sivR),1);
  1636.                                 }
  1637.  
  1638.                                 if (count($sivR) < 254) {
  1639.                                         echo "<div class=\"spacer\"></div>";
  1640.                                         echo "<div class=\"message\" style=\"padding: 0;\">";
  1641.                                         echo "<table border=\"0\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">";
  1642.                                         echo "<form method=\"post\"><input type=\"hidden\" name=\"set\" value=\"filters\"><tr>";
  1643.                                         echo "<td width=\"200\"><select class=\"input\" name=\"sieveT\">";
  1644.                                         echo "<option value=\"subject\">If message subject contains</option>";
  1645.                                         echo "<option value=\"from\">If message from contains</option>";
  1646.                                         echo "<option value=\"to\">If message to contains</option>";
  1647.                                         echo "<option value=\"cc\">If message cc contains</option>";
  1648.                                         echo "<option value=\"body\">If message body contains</option>";
  1649.                                         echo "</td>";
  1650.                                         echo "<td><input class=\"input\" type=\"text\" name=\"sieveV\" autocomplete=\"off\" required></td>";
  1651.                                         echo "<td><select class=\"input\" name=\"sieveF\"><option value=\"Trash\" selected>then move to Trash</option>";
  1652.  
  1653.                                         foreach ($usr_box as $sieveF) {
  1654.  
  1655.                                                 $sieveF = str_replace($imap_host,"",$sieveF);
  1656.  
  1657.                                                 echo "<option value=\"$sieveF\">then move to $sieveF</option>";
  1658.                                         }
  1659.  
  1660.                                         echo "</select></td>";
  1661.                                         echo "<td><input class=\"button\" type=\"submit\" value=\"add filter\"></td>";
  1662.                                         echo "</tr></form>";
  1663.                                         echo "</table>";
  1664.                                         echo "</div>";
  1665.                                 }
  1666.  
  1667.                                 $sivR = glob("$sivP/*.sieve");
  1668.                                 $sivW = 'require "include";';
  1669.                                
  1670.                                 if (in_array("$sivP/0.sieve",$sivR)) {
  1671.  
  1672.                                         array_splice($sivR,array_search("$sivP/0.sieve",$sivR),1);
  1673.                                         $sivW = "$sivW\r\ninclude \"0\";";
  1674.                                 }
  1675.  
  1676.                                 if (count($sivR) > 0) {
  1677.  
  1678.                                         echo "<div class=\"spacer\"></div>";
  1679.  
  1680.                                         echo "<table border=\"0\" cellspacing=\"1\" cellpadding=\"2\" bgcolor=\"#cccccc\">";
  1681.  
  1682.                                         foreach ($sivR as $sivK => $sivS) {
  1683.  
  1684.                                                 if ($bgColor == "#ffffff") {
  1685.                                                         //$bgColor = "#fdfdfd";
  1686.                                                         $bgColor = "#f5f5f5";
  1687.                                                 }
  1688.                                                 else {
  1689.                                                         $bgColor = "#ffffff";
  1690.                                                 }
  1691.  
  1692.                                                 if ($sivK > 0) {
  1693.  
  1694.                                                         $sivKp = $sivK - 1;
  1695.  
  1696.                                                         if (array_key_exists($sivKp,$sivR)) {
  1697.                                                                 $sivKp = basename($sivR[$sivKp]);
  1698.                                                         }
  1699.                                                         else {
  1700.                                                                 unset($sivKp);
  1701.                                                         }
  1702.                                                 }
  1703.  
  1704.                                                 if ($sivK < count($sivR)) {
  1705.  
  1706.                                                         $sivKn = $sivK + 1;
  1707.  
  1708.                                                         if (array_key_exists($sivKn,$sivR)) {
  1709.                                                                 $sivKn = basename($sivR[$sivKn]);
  1710.                                                         }
  1711.                                                         else {
  1712.                                                                 unset($sivKn);
  1713.                                                         }
  1714.                                                 }
  1715.  
  1716.                                                 $sivC = (explode('"',file_get_contents($sivS)));
  1717.                                                 $sivF = basename($sivS);
  1718.  
  1719.                                                 $sivW = $sivW . "\r\ninclude \"" . str_replace(".sieve","",$sivF) . '";';
  1720.  
  1721.                                                 echo "<tr width=\"100%\" class=\"inboxE\" style=\"width: 100%; display: inline-table;\" bgcolor=\"$bgColor\">";
  1722.  
  1723.                                                 echo "<td align=\"center\" valign=\"bottom\" width=\"24\">";
  1724.                                                 echo "<form method=\"post\">";
  1725.                                                 echo "<input type=\"hidden\" name=\"set\" value=\"sivD\">";
  1726.                                                 echo "<input type=\"hidden\" name=\"sieve\" value=\"$sivF\">";
  1727.                                                 echo "<input type=\"image\" src=\"images/sieve-del.png\">";
  1728.                                                 echo "</form>";
  1729.                                                 echo "</td>";
  1730.  
  1731.                                                 if ($sivKp) {
  1732.                                                         echo "<td align=\"center\" valign=\"bottom\" width=\"24\">";
  1733.                                                         echo "<form method=\"post\">";
  1734.                                                         echo "<input type=\"hidden\" name=\"set\" value=\"sivM\">";
  1735.                                                         echo "<input type=\"hidden\" name=\"sieve\" value=\"$sivF\">";
  1736.                                                         echo "<input type=\"hidden\" name=\"sivM\" value=\"$sivKp\">";
  1737.                                                         echo "<input type=\"image\" src=\"images/sieve-up.png\">";
  1738.                                                         echo "</form>";
  1739.                                                         echo "</td>";
  1740.                                                 }
  1741.                                                 else {
  1742.                                                         if (count($sivR) > 1) {
  1743.                                                                 echo "<td width=\"24\"></td>";
  1744.                                                         }
  1745.                                                 }
  1746.  
  1747.                                                 if ($sivKn) {
  1748.                                                         echo "<td align=\"center\" valign=\"bottom\" width=\"24\">";
  1749.                                                         echo "<form method=\"post\">";
  1750.                                                         echo "<input type=\"hidden\" name=\"set\" value=\"sivM\">";
  1751.                                                         echo "<input type=\"hidden\" name=\"sieve\" value=\"$sivF\">";
  1752.                                                         echo "<input type=\"hidden\" name=\"sivM\" value=\"$sivKn\">";
  1753.                                                         echo "<input type=\"image\" src=\"images/sieve-down.png\">";
  1754.                                                         echo "</form>";
  1755.                                                         echo "</td>";
  1756.                                                 }
  1757.                                                 else {
  1758.                                                         if (count($sivR) > 1) {
  1759.                                                                 echo "<td width=\"24\"></td>";
  1760.                                                         }
  1761.                                                 }
  1762.  
  1763.                                                 echo "<td><nobr>If message {$sivC[3]} contains {$sivC[5]} then move to {$sivC[7]}</nobr></td>";
  1764.                                                 echo "</tr>";
  1765.                                         }
  1766.                                         echo "</table>";
  1767.                                 }
  1768.  
  1769.                                 if ($sivW != file_get_contents("$sivP/.dovecot.sieve")) {
  1770.        
  1771.                                         $fp = fopen("$sivP/.dovecot.sieve","w");
  1772.                                         fwrite($fp,$sivW);
  1773.                                         fclose($fp);
  1774.                                 }
  1775.  
  1776.                                 if (file_get_contents("$sivP/.dovecot.sieve") == 'require "include";') {
  1777.                                
  1778.                                         if (file_exists("$sivP/.dovecot.sieve")) {
  1779.                                                 unlink("$sivP/.dovecot.sieve");
  1780.                                         }
  1781.  
  1782.                                         if (file_exists("$sivP/.dovecot.svbin")) {
  1783.                                                 unlink("$sivP/.dovecot.svbin");
  1784.                                         }
  1785.                                 }
  1786.                         }
  1787.                 }
  1788.                 else {
  1789.                         // imap_ping() should be doing this, but it's not working:
  1790.                         $mbox = @imap_open("{$imap_host}$folder", $_SESSION['logged_uid'], $_SESSION['logged_key'], CL_EXPUNGE) or die(imap_last_error());
  1791.  
  1792.                         if (($_POST['lvl'] == "subscriber") or (count($_POST) == 0) or ((count($_POST) == 3) and array_key_exists('x',$_POST) and array_key_exists('y',$_POST) and ($_POST['box'] == "INBOX"))) {
  1793.                                
  1794.                                 echo '<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>';
  1795.                                 echo '<script>window.jQuery||document.write(\'<script src="jquery-2.0.3.min.js"><\/script>\')</script>';
  1796.                                 echo '<script>idleTime=0;$(document).ready(function(){var idleInterval=setInterval(timerIncrement,1000);$(this).mousemove(function(e){idleTime=0});$(this).keypress(function(e){idleTime=0})});function timerIncrement(){idleTime=idleTime+1;if(idleTime>59){$.ajax({url:"check.php",cache:false}).done(function(delta){if(delta==1){location.replace(document.URL)}});idleTime=0}}</script>';
  1797.                         }
  1798.  
  1799.                         include("inbox.php");
  1800.                 }
  1801.  
  1802.                 echo "</div></td>";
  1803.  
  1804.                 echo "<td width=\"10\"></td>";
  1805.  
  1806.                 echo "<td valign=\"top\" width=\"100\">";
  1807.  
  1808.                 // imap_ping() should be doing this, but it's not working:
  1809.                 $mbox = @imap_open("{$imap_host}$folder", $_SESSION['logged_uid'], $_SESSION['logged_key'], CL_EXPUNGE) or die(imap_last_error());
  1810.  
  1811.                 include("folders.php");
  1812.                 echo "</td>";
  1813.  
  1814.                 echo "</tr></table>";
  1815.         }
  1816.  
  1817.         if ($_SESSION['logged_lvl'] == "postmaster") {
  1818.        
  1819.                 $pm_get = mysql_query("select * from users where domain='{$_SESSION['logged_uid']}' order by id");
  1820.                
  1821.                 $pm_get_count = mysql_num_rows($pm_get);
  1822.  
  1823.                 echo "<table border=\"0\" cellspacing=\"1\" cellpadding=\"2\" bgcolor=\"#cccccc\">";                   
  1824.  
  1825.                 if ($pm_get_count > 0) {
  1826.                
  1827.                         $pm_get_0 = mysql_num_rows(mysql_query("select * from users where domain='{$_SESSION['logged_uid']}' and mode='0'"));          
  1828.                         $pm_get_1 = mysql_num_rows(mysql_query("select * from users where domain='{$_SESSION['logged_uid']}' and mode='1'"));
  1829.  
  1830.                         echo "<tr bgcolor=\"#ffffff\"><td colspan=\"10\">";
  1831.                        
  1832.                         if ($pm_get_count == 1) {
  1833.        
  1834.                                 echo "<b>1 subscriber account</b> (";
  1835.                                
  1836.                                 if ($pm_get_0 > 0) {
  1837.                                         echo "disabled";
  1838.                                 }
  1839.                                 else {
  1840.                                         echo "enabled";
  1841.                                 }
  1842.                                
  1843.                                 echo ")";
  1844.                         }
  1845.                         else {                 
  1846.                                 echo "<b>$pm_get_count subscriber accounts</b> (";
  1847.                                
  1848.                                 if ($pm_get_1 > 0) {
  1849.                                         echo "$pm_get_1 enabled";
  1850.                                 }
  1851.                                
  1852.                                 if (($pm_get_1 > 0) and ($pm_get_0 > 0)) {
  1853.                                         echo ", ";
  1854.                                 }
  1855.                                
  1856.                                 if ($pm_get_0 > 0) {
  1857.                                         echo "$pm_get_0 disabled";
  1858.                                 }
  1859.  
  1860.                                 echo ")";
  1861.                         }
  1862.                        
  1863.                         echo "</td></tr>";
  1864.                 }
  1865.  
  1866.                 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>";
  1867.                 echo "<form method=\"post\">";
  1868.                 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\" required autofocus></td><td><input class=\"input\" type=\"text\" name=\"pm_name\" autocomplete=\"off\" maxlength=\"128\" required></td><td><input class=\"input\" type=\"text\" name=\"pm_pw\" autocomplete=\"off\" maxlength=\"64\" required></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>";
  1869.                 echo "</form>";
  1870.        
  1871.                 while ($pm_row = mysql_fetch_array($pm_get)) {
  1872.        
  1873.                         if ($pm_row[5] == "1") {
  1874.                                 $pm_do = "disable";
  1875.                                 $pm_bg = "#ffffff";
  1876.                         }
  1877.        
  1878.                         if ($pm_row[5] == "0") {
  1879.                                 $pm_do = "enable";
  1880.                                 $pm_bg = "#eeeeee";
  1881.                         }
  1882.        
  1883.                         $msg_new = "$mail_root/{$_SESSION['logged_uid']}/" . substr($pm_row[0],0,1) . "/" . substr($pm_row[0],0,strpos($pm_row[0],"@")) . "/new/*";
  1884.                         $msg_new = count(glob($msg_new));
  1885.        
  1886.                         $msg_cur = "$mail_root/{$_SESSION['logged_uid']}/" . substr($pm_row[0],0,1) . "/" . substr($pm_row[0],0,strpos($pm_row[0],"@")) . "/cur/*";
  1887.                         $msg_cur = count(glob($msg_cur));
  1888.        
  1889.                         $pm_aka = mysql_query("select * from aliases where alias='{$pm_row[0]}'");
  1890.                         $pm_aka = mysql_num_rows($pm_aka);
  1891.        
  1892.                         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><input class=\"input\" type=\"text\" name=\"pm_email\" value=\"{$pm_row[0]}\" maxlength=\"255\" autocomplete=\"off\" required></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>";
  1893.                 }
  1894.        
  1895.                 echo "</table>";
  1896.         }
  1897.  
  1898.         if ($_SESSION['logged_lvl'] == "administrator") {
  1899.        
  1900.                 echo "<table border=\"0\" cellspacing=\"1\" cellpadding=\"2\" bgcolor=\"#cccccc\">";
  1901.                 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>";
  1902.                 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\" required autofocus></td><td align=\"center\"><input class=\"input\" style=\"text-align: right;\" type=\"text\" name=\"dom_max\" maxlength=\"6\" autocomplete=\"off\" value=\"0\" required></td><td align=\"center\"><input class=\"input\" type=\"text\" name=\"dom_pass\" maxlength=\"64\" autocomplete=\"off\" required></td><td align=\"center\" colspan=\"2\"><input class=\"button\" type=\"submit\" value=\"add\"></td></tr></form>";
  1903.        
  1904.                 $dom_get = mysql_query("select * from domains order by id");
  1905.        
  1906.                 while ($dom_row = mysql_fetch_array($dom_get)) {
  1907.  
  1908.                         $dom_usr = mysql_query("select * from users where domain='{$dom_row[0]}'");
  1909.                         $dom_usr = mysql_num_rows($dom_usr);
  1910.        
  1911.                         if ($dom_row[3] == "1") {
  1912.                                 $dom_do = "disable";
  1913.                                 $dom_bg = "#ffffff";
  1914.                         }
  1915.        
  1916.                         if ($dom_row[3] == "0") {
  1917.                                 $dom_do = "enable";
  1918.                                 $dom_bg = "#eeeeee";
  1919.                         }
  1920.        
  1921.                         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>";
  1922.                 }
  1923.        
  1924.                 echo "</table>";
  1925.         }
  1926.        
  1927.         echo "</td>";
  1928.  
  1929.         if ($_SESSION['logged_lvl'] == "postmaster") {
  1930.        
  1931.                 echo "<td width=\"10\"></td><td valign=\"top\">";
  1932.  
  1933.                 $get_aliases = mysql_query("select * from aliases where domain='{$_SESSION['logged_uid']}' order by id, alias");
  1934.                
  1935.                 $get_aliases_count = mysql_num_rows($get_aliases);
  1936.  
  1937.                 echo "<table border=\"0\" cellspacing=\"1\" cellpadding=\"2\" bgcolor=\"#cccccc\">";
  1938.  
  1939.                 if ($get_aliases_count > 0) {
  1940.                
  1941.                         $get_aliases_0 = mysql_num_rows(mysql_query("select * from aliases where domain='{$_SESSION['logged_uid']}' and mode='0'"));           
  1942.                         $get_aliases_1 = mysql_num_rows(mysql_query("select * from aliases where domain='{$_SESSION['logged_uid']}' and mode='1'"));
  1943.  
  1944.                         echo "<tr bgcolor=\"#ffffff\"><td colspan=\"5\">";
  1945.                        
  1946.                         if ($get_aliases_count == 1) {
  1947.        
  1948.                                 echo "<b>1 alias</b> (";
  1949.                                
  1950.                                 if ($get_aliases_0 > 0) {
  1951.                                         echo "disabled";
  1952.                                 }
  1953.                                 else {
  1954.                                         echo "enabled";
  1955.                                 }
  1956.                                
  1957.                                 echo ")";
  1958.                         }
  1959.                         else {                 
  1960.                                 echo "<b>$get_aliases_count aliases</b> (";
  1961.                                
  1962.                                 if ($get_aliases_1 > 0) {
  1963.                                         echo "$get_aliases_1 enabled";
  1964.                                 }
  1965.                                
  1966.                                 if (($get_aliases_1 > 0) and ($get_aliases_0 > 0)) {
  1967.                                         echo ", ";
  1968.                                 }
  1969.                                
  1970.                                 if ($get_aliases_0 > 0) {
  1971.                                         echo "$get_aliases_0 disabled";
  1972.                                 }
  1973.  
  1974.                                 echo ")";
  1975.                         }
  1976.                        
  1977.                         echo "</td></tr>";
  1978.                 }
  1979.                
  1980.                 echo "<tr bgcolor=\"#eeeeee\"><td align=\"center\">alias</td><td align=\"center\">recipient</td><td align=\"center\" colspan=\"3\">action</td></tr>";
  1981.                 echo "<form method=\"post\">";
  1982.                 echo "<tr bgcolor=\"#ffffff\"><td><input class=\"input\" type=\"text\" name=\"alias_add\" autocomplete=\"off\" maxlength=\"255\" required></td><td><input class=\"input\" type=\"text\" name=\"alias_to\" autocomplete=\"off\" maxlength=\"128\" required></td><td colspan=\"3\"><input class=\"button\" type=\"submit\" value=\"add\"></td></tr>";
  1983.                 echo "</form>";
  1984.        
  1985.                 while ($aliases_row = mysql_fetch_array($get_aliases)) {
  1986.        
  1987.                         if ($aliases_row[3] == "1") {
  1988.                                 $alias_do = "disable";
  1989.                                 $alias_bg = "#ffffff";
  1990.                         }
  1991.        
  1992.                         if ($aliases_row[3] == "0") {
  1993.                                 $alias_do = "enable";
  1994.                                 $alias_bg = "#eeeeee";
  1995.                         }
  1996.        
  1997.                         echo "<tr bgcolor=\"$alias_bg\"><form method=\"post\"><input type=\"hidden\" name=\"alias_mod\" value=\"{$aliases_row[0]}\"><input type=\"hidden\" name=\"alias_old\" value=\"{$aliases_row[1]}\"><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\"><input type=\"hidden\" name=\"alias_usr\" value=\"{$aliases_row[1]}\"><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]}\"><input type=\"hidden\" name=\"alias_usr\" value=\"{$aliases_row[1]}\"><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>";
  1998.                 }
  1999.        
  2000.                 echo "</table>";
  2001.         }
  2002.  
  2003.         echo "</td></tr>";
  2004.         echo "</table>";
  2005. }
  2006.  
  2007. mysql_close($db_link);
  2008.  
  2009. ?>
  2010.  
filedropkartero.git-41992ae.tar.bz2 new
412.12 KB
30 downloads
filedropkartero.git-41992ae.zip
448.41 KB
13 downloads
filedropkartero.git-b404ba2.tar.bz2
411.70 KB
27 downloads
filedropkartero.git-b404ba2.zip
447.96 KB
10 downloads
filedropkartero.git-a7684d9.tar.bz2
411.72 KB
262 downloads
filedropkartero.git-a7684d9.zip
447.96 KB
378 downloads
filedropkartero.git-83512be.tar.bz2
410.26 KB
253 downloads
filedropkartero.git-83512be.zip
445.30 KB
209 downloads
filedropkartero.git-1954b25.tar.bz2
410.21 KB
246 downloads
filedropkartero.git-1954b25.zip
445.30 KB
206 downloads
filedropkartero.git-2f7c910.tar.bz2
410.25 KB
237 downloads
filedropkartero.git-2f7c910.zip
445.29 KB
192 downloads
filedropkartero.git-6317ffb.tar.bz2
410.40 KB
219 downloads
filedropkartero.git-6317ffb.zip
445.28 KB
174 downloads
filedropkartero.git-60ccd7a.tar.bz2
410.40 KB
206 downloads
filedropkartero.git-60ccd7a.zip
445.20 KB
170 downloads
filedropkartero.git-ea6f885.tar.bz2
410.47 KB
10 downloads
filedropkartero.git-ea6f885.zip
445.26 KB
150 downloads
filedropkartero.git-7f580e5.zip
445.17 KB
140 downloads
filedropkartero.git-7f580e5.tar.bz2
410.18 KB
164 downloads
filedropkartero.git-b9364de.tar.bz2
409.41 KB
154 downloads
filedropkartero.git-b9364de.zip
444.09 KB
397 downloads
filedropkartero.git-e9bcd78.zip
444.03 KB
378 downloads
filedropkartero.git-e9bcd78.tar.bz2
409.39 KB
423 downloads
filedropkartero.git-96c60ff.tar.bz2
407.96 KB
417 downloads
filedropkartero.git-96c60ff.zip
441.87 KB
351 downloads
filedropkartero.git-4357b59.tar.bz2
407.17 KB
409 downloads
filedropkartero.git-4357b59.zip
440.69 KB
353 downloads
filedropkartero.git-c6ff319.tar.bz2
407.28 KB
408 downloads
filedropkartero.git-c6ff319.zip
440.70 KB
334 downloads
filedropkartero.git-8b87a29.tar.bz2
407.27 KB
389 downloads
filedropkartero.git-8b87a29.zip
440.71 KB
333 downloads
filedropkartero.git-ee42942.tar.bz2
406.49 KB
348 downloads
filedropkartero.git-ee42942.zip
439.92 KB
311 downloads
filedropkartero.git-867e7e6.tar.bz2
406.75 KB
371 downloads
filedropkartero.git-867e7e6.zip
440.03 KB
314 downloads
filedropkartero.git-3f3fc02.tar.bz2
406.38 KB
366 downloads
filedropkartero.git-3f3fc02.zip
439.71 KB
338 downloads
filedropkartero.git-b6f779d.tar.bz2
406.55 KB
385 downloads
filedropkartero.git-b6f779d.zip
440.00 KB
298 downloads
filedropkartero.git-83f24b0.zip
439.12 KB
280 downloads
filedropkartero.git-52316ec.tar.bz2
406.17 KB
341 downloads
filedropkartero.git-52316ec.zip
439.18 KB
304 downloads
filedropkartero.git-83f24b0.tar.bz2
405.84 KB
337 downloads
filedropkartero.git-8a42d47.tar.bz2
405.73 KB
303 downloads
filedropkartero.git-8a42d47.zip
439.02 KB
276 downloads
filedropkartero.git-830c9cb.tar.bz2
406.08 KB
306 downloads
filedropkartero.git-830c9cb.zip
439.08 KB
274 downloads
filedropkartero.git-ebec1be.tar.bz2
406.16 KB
309 downloads
filedropkartero.git-ebec1be.zip
439.09 KB
304 downloads
filedropkartero.git-7c0b70f.tar.bz2
402.43 KB
293 downloads
filedropkartero.git-7c0b70f.zip
435.91 KB
267 downloads
filedropkartero.git-80edc03.tar.bz2
402.75 KB
307 downloads
filedropkartero.git-80edc03.zip
435.84 KB
279 downloads
filedropkartero.git-b408c23.tar.bz2
402.19 KB
299 downloads
filedropkartero.git-b408c23.zip
435.59 KB
283 downloads
filedropkartero.git-29c0e1f.tar.bz2
401.84 KB
302 downloads
filedropkartero.git-29c0e1f.zip
435.25 KB
295 downloads
filedropkartero.git-9086094.tar.bz2
401.94 KB
303 downloads
filedropkartero.git-9086094.zip
435.34 KB
296 downloads
filedropkartero.git-47ca624.tar.bz2
402.10 KB
301 downloads
filedropkartero.git-47ca624.zip
435.51 KB
263 downloads
filedropkartero.git-81314a5.zip
435.53 KB
283 downloads
filedropkartero.git-81314a5.tar.bz2
402.25 KB
298 downloads
filedropkartero.git-cae7074.zip
435.20 KB
279 downloads
filedropkartero.git-cae7074.tar.bz2
401.98 KB
314 downloads
filedropkartero.git-cc68e56.tar.bz2
402.07 KB
296 downloads
filedropkartero.git-cc68e56.zip
435.16 KB
309 downloads
filedropkartero.git-230f35d.tar.bz2
401.43 KB
282 downloads
filedropkartero.git-230f35d.zip
434.68 KB
296 downloads
filedropkartero.git-5ae58a2.tar.bz2
401.54 KB
285 downloads
filedropkartero.git-5ae58a2.zip
434.68 KB
269 downloads
filedropkartero.git-a591f4b.tar.bz2
401.76 KB
283 downloads
filedropkartero.git-a591f4b.zip
435.17 KB
277 downloads
filedropkartero.git-36876c8.tar.bz2
400.44 KB
281 downloads
filedropkartero.git-36876c8.zip
432.36 KB
299 downloads
filedropkartero.git-a34c9ed.tar.bz2
400.57 KB
305 downloads
filedropkartero.git-a34c9ed.zip
432.27 KB
290 downloads
filedropkartero.git-e828148.zip
433.58 KB
269 downloads
filedropkartero.git-e828148.tar.bz2
400.88 KB
292 downloads
filedropkartero.git-476cdda.tar.bz2
400.60 KB
322 downloads
filedropkartero.git-476cdda.zip
432.26 KB
282 downloads
filedropkartero.git-054c286.tar.bz2
98.09 KB
367 downloads
filedropkartero.git-054c286.zip
109.53 KB
342 downloads
filedropkartero.git-071b099.tar.bz2
98.76 KB
370 downloads
filedropkartero.git-071b099.zip
110.21 KB
342 downloads
filedropkartero.git-551c38d.tar.bz2
98.51 KB
375 downloads
filedropkartero.git-551c38d.zip
110.20 KB
334 downloads
filedropkartero.git-569dc0c.tar.bz2
98.40 KB
370 downloads
filedropkartero.git-569dc0c.zip
109.86 KB
326 downloads
filedropkartero.git-58a052b.tar.bz2
97.95 KB
369 downloads
filedropkartero.git-58a052b.zip
109.36 KB
338 downloads
filedropkartero.git-43a5af3.tar.bz2
97.80 KB
363 downloads
filedropkartero.git-43a5af3.zip
109.30 KB
336 downloads
filedropkartero.git-bbe069d.tar.bz2
98.03 KB
377 downloads
filedropkartero.git-bbe069d.zip
109.19 KB
340 downloads
filedropkartero.git-02f97e1.tar.bz2
97.76 KB
343 downloads
filedropkartero.git-02f97e1.zip
109.24 KB
432 downloads
filedropkartero.git-d82e393.tar.bz2
97.74 KB
375 downloads
filedropkartero.git-d82e393.zip
109.24 KB
341 downloads
filedropkartero.git-7cdd1f5.tar.bz2
98.03 KB
358 downloads
filedropkartero.git-7cdd1f5.zip
109.24 KB
322 downloads
filedropkartero.git-40825aa.tar.bz2
97.71 KB
359 downloads
filedropkartero.git-40825aa.zip
109.16 KB
359 downloads
filedropkartero.git-3dd941b.tar.bz2
97.69 KB
357 downloads
filedropkartero.git-3dd941b.zip
109.12 KB
333 downloads
filedropkartero.git-50f1e46.tar.bz2
97.65 KB
366 downloads
filedropkartero.git-50f1e46.zip
109.02 KB
336 downloads
filedropkartero.git-fdf9225.tar.bz2
93.19 KB
397 downloads
filedropkartero.git-fdf9225.zip
104.25 KB
346 downloads
filedropkartero.git-21415da.tar.bz2
93.24 KB
354 downloads
filedropkartero.git-21415da.zip
104.22 KB
347 downloads
filedropkartero.git-aff5e89.tar.bz2
93.17 KB
374 downloads
filedropkartero.git-aff5e89.zip
104.22 KB
338 downloads
filedropkartero.git-b27ef39.tar.bz2
91.97 KB
374 downloads
filedropkartero.git-b27ef39.zip
102.80 KB
363 downloads
filedropkartero.git-3d6e8a2.tar.bz2
91.99 KB
356 downloads
filedropkartero.git-3d6e8a2.zip
102.77 KB
360 downloads
filedropkartero.git-1442b69.tar.bz2
91.79 KB
352 downloads
filedropkartero.git-1442b69.zip
102.50 KB
363 downloads
filedropkartero.git-6d15918.tar.bz2
91.56 KB
375 downloads
filedropkartero.git-6d15918.zip
102.28 KB
331 downloads
filedropkartero.git-45140d8.tar.bz2
91.52 KB
377 downloads
filedropkartero.git-45140d8.zip
102.23 KB
336 downloads
filedropkartero.git-d5b48e5.tar.bz2
91.35 KB
365 downloads
filedropkartero.git-d5b48e5.zip
102.01 KB
348 downloads
filedropkartero.git-e007e55.tar.bz2
91.35 KB
377 downloads
filedropkartero.git-e007e55.zip
102.01 KB
320 downloads
filedropkartero.git-30fd7e3.tar.bz2
90.87 KB
353 downloads
filedropkartero.git-30fd7e3.zip
101.44 KB
349 downloads
filedropkartero.git-421a4a7.tar.bz2
88.02 KB
92 downloads
filedropkartero.git-421a4a7.zip
97.96 KB
324 downloads
filedropkartero.git-b49b8bc.tar.bz2
88.09 KB
395 downloads
filedropkartero.git-b49b8bc.zip
97.99 KB
341 downloads
filedropkartero.git-1cc9571.tar.bz2
87.74 KB
372 downloads
filedropkartero.git-1cc9571.zip
97.70 KB
345 downloads
filedropkartero.git-159152f.tar.bz2
87.60 KB
370 downloads
filedropkartero.git-159152f.zip
97.52 KB
351 download