kartero.org

kartero.org

Git

This blob has been accessed 277 times via Git panel.

  1. <?php
  2.  
  3. header('Content-Type: text/html; charset=UTF-8');
  4. header('Cache-Control: private');
  5. header('X-Frame-Options: SAMEORIGIN');
  6. header('X-XSS-Protection: 1; mode=block');
  7.  
  8. ini_set("session.use_trans_sid","0");
  9. ini_set("mbstring.language","Neutral");
  10. ini_set("mbstring.internal_encoding","UTF-8");
  11. ini_set("mbstring.encoding_translation","On");
  12. ini_set("mbstring.http_input","auto");
  13. ini_set("mbstring.http_output","UTF-8");
  14. ini_set("mbstring.detect_order","auto");
  15. ini_set("mbstring.substitute_character","none");
  16. ini_set("default_charset","UTF-8");
  17.  
  18. error_reporting(E_ERROR);
  19.  
  20. session_cache_limiter(false);
  21. session_start();
  22.  
  23. if ($_SESSION['logged_lvl'] == "subscriber") {
  24.         $fileUsr = sha1($_SESSION['logged_uid']);
  25. }
  26.  
  27. if (isset($_POST['mbox_min']) and !empty($_POST['mbox_min']) and is_numeric($_POST['mbox_min'])) {
  28.         $mbox_min = $_POST['mbox_min'];
  29. }
  30. else {
  31.         $mbox_min = "0";
  32. }
  33.  
  34. if (isset($_POST['mbox_ppg']) and !empty($_POST['mbox_ppg']) and is_numeric($_POST['mbox_ppg'])) {
  35.         $mbox_ppg = $_POST['mbox_ppg'];
  36. }
  37. else {
  38.         $mbox_ppg = "14";
  39. }
  40.  
  41.  
  42. $mbox_max = $mbox_min + $mbox_ppg;
  43.  
  44. function rmdirr($recurse_dirname) {
  45.  
  46.         if (!file_exists($recurse_dirname)) {
  47.                 return false;
  48.         }
  49.  
  50.         if (is_file($recurse_dirname)) {
  51.                 return unlink($recurse_dirname);
  52.         }
  53.  
  54.         $recurse_dir = dir($recurse_dirname);
  55.  
  56.         while (false !== $recurse_entry = $recurse_dir->read()) {
  57.  
  58.                 if ($recurse_entry == '.' || $recurse_entry == '..') {
  59.                         continue;
  60.                 }
  61.  
  62.                 rmdirr("$recurse_dirname/$recurse_entry");
  63.         }
  64.  
  65.         $recurse_dir->close();
  66.         return rmdir($recurse_dirname);
  67. }
  68.  
  69. function ack($ack_string) {
  70.         echo "<table width=\"100%\"><tr></td><div class=\"ack\">$ack_string</div></td></tr></table>";
  71. }
  72.  
  73. function nak($nak_string) {
  74.         echo "<table width=\"100%\"><tr></td><div class=\"nak\">$nak_string</div></td></tr></table>";
  75. }
  76.  
  77. function time_elapsed_string($ptime) {
  78.     $etime = time() - $ptime;
  79.    
  80.     if ($etime < 1) {
  81.         return '0 seconds';
  82.     }
  83.    
  84.     $a = array( 12 * 30 * 24 * 60 * 60  =>  'year',
  85.                 30 * 24 * 60 * 60       =>  'month',
  86.                 7 * 24 * 60 * 60        =>  'week',
  87.                 24 * 60 * 60            =>  'day',
  88.                 60 * 60                 =>  'hour',
  89.                 60                      =>  'minute',
  90.                 1                       =>  'second'
  91.                 );
  92.    
  93.     foreach ($a as $secs => $str) {
  94.         $d = $etime / $secs;
  95.         if ($d >= 1) {
  96.             $r = round($d);
  97.             return $r . ' ' . $str . ($r > 1 ? 's' : '');
  98.         }
  99.     }
  100. }
  101.  
  102. function HumanReadableFilesize($size) {
  103.  
  104.     $mod = 1024;
  105.  
  106.     $units = explode(' ','B KB MB GB TB PB');
  107.     for ($i = 0; $size > $mod; $i++) {
  108.         $size /= $mod;
  109.     }
  110.  
  111.     return round($size, 2) . ' ' . $units[$i];
  112. }
  113.  
  114.  
  115. // cleong@organic.com
  116.  
  117. function get_mime_type(&$struct) {
  118.        
  119.         $primary_mime_type = array("TEXT", "MULTIPART","MESSAGE", "APPLICATION", "AUDIO", "IMAGE", "VIDEO", "OTHER");
  120.  
  121.         if($struct->subtype) {
  122.                 return $primary_mime_type[(int) $struct->type] . '/' .$struct->subtype;
  123.         }
  124.        
  125.         return "TEXT/PLAIN";
  126. }
  127.  
  128. function get_part($stream, $msg_number, $mime_type, $structure = false, $part_number = false) {
  129.    
  130.         if (!$structure) {
  131.                 $structure = imap_fetchstructure($stream, $msg_number, FT_UID);
  132.         }
  133.  
  134.         if ($structure) {
  135.  
  136.                 if ($mime_type == get_mime_type($structure)) {
  137.  
  138.                         if (!$part_number) {
  139.                                 $part_number = "1";
  140.                         }
  141.  
  142.                         $text = imap_fetchbody($stream, $msg_number, $part_number, FT_UID);
  143.  
  144.                         if ($structure->encoding == 3) {
  145.                                 return imap_base64($text);
  146.                         }
  147.                         else if ($structure->encoding == 4) {
  148.                                 return imap_qprint($text);
  149.                         }
  150.                         else {
  151.                                 return $text;
  152.                         }
  153.                 }
  154.    
  155.                 if ($structure->type == 1) /* multipart */ {
  156.                
  157.                         while (list($index, $sub_structure) = each($structure->parts)) {
  158.                        
  159.                                 if ($part_number) {
  160.                                         $prefix = $part_number . '.';
  161.                                 }
  162.                        
  163.                                 $data = get_part($stream, $msg_number, $mime_type, $sub_structure,$prefix .    ($index + 1));
  164.                        
  165.                                 if ($data) {
  166.                                         return $data;
  167.                                 }
  168.                         }
  169.                 }
  170.         }
  171.         return false;
  172. }
  173.  
  174. function extract_emails_from($string){
  175.         preg_match_all("/[\+\=\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-]+/i", $string, $matches);
  176.         return $matches[0];
  177. }
  178.  
  179. function return_bytes($val) {
  180.       $val = trim($val);
  181.       $last = $val{strlen($val) - 1};
  182.  
  183.       switch ($last) {
  184.           case 'k':
  185.           case 'K':
  186.               return(int)$val * 1024;
  187.               break;
  188.           case 'm':
  189.           case 'M':
  190.               return(int)$val * 1048576;
  191.               break;
  192.           default:
  193.               return $val;
  194.       }
  195. }
  196.  
  197. $server_upload_max_filesize = return_bytes(ini_get('upload_max_filesize'));
  198. $server_post_max_size = return_bytes(ini_get('post_max_size'));
  199. $server_memory_limit = return_bytes(ini_get('memory_limit'));
  200.  
  201. $max_file_size = $server_upload_max_filesize;
  202.  
  203. if ($server_upload_max_filesize > $server_post_max_size) {
  204.         $max_file_size = $server_post_max_size;
  205. }
  206.  
  207. if ($server_post_max_size > $server_memory_limit) {
  208.         $max_file_size = $server_memory_limit;
  209. }
  210.  
  211. function is_image($path) {
  212.  
  213.         $a = getimagesize($path);
  214.         $image_type = $a[2];
  215.  
  216.         if (in_array($image_type, array(IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG , IMAGETYPE_BMP))) {
  217.                 return true;
  218.         }
  219.  
  220.         return false;
  221. }
  222.  
  223.  
  224. // chris@isavvy.co.nz
  225.  
  226. class EmailMessage {
  227.  
  228.         protected $connection;
  229.         protected $messageNumber;
  230.        
  231.         public $attachments;
  232.        
  233.         public $getAttachments = true;
  234.        
  235.         public function __construct($connection, $messageNumber) {
  236.        
  237.                 $this->connection = $connection;
  238.                 $this->messageNumber = $messageNumber;
  239.         }
  240.  
  241.         public function fetch() {
  242.                
  243.                 $structure = @imap_fetchstructure($this->connection, $this->messageNumber);
  244.  
  245.                 if (!$structure) {
  246.                         return false;
  247.                 }
  248.                 else {
  249.                         $this->recurse($structure->parts);
  250.                         return true;
  251.                 }
  252.                
  253.         }
  254.        
  255.         public function recurse($messageParts, $prefix = '', $index = 1, $fullPrefix = true) {
  256.  
  257.                 foreach ($messageParts as $part) {
  258.                        
  259.                         $partNumber = $prefix . $index;
  260.  
  261.                         if ($part->type == 2) {
  262.  
  263.                                 $msg = new EmailMessage($this->connection, $this->messageNumber);
  264.                                 $msg->getAttachments = $this->getAttachments;
  265.                                 $msg->recurse($part->parts, $partNumber.'.', 0, false);
  266.  
  267.                                 $this->attachments[] = array(
  268.                                         'type' => $part->type,
  269.                                         'subtype' => $part->subtype,
  270.                                         'filename' => '',
  271.                                         'data' => $msg,
  272.                                         'inline' => false,
  273.                                 );
  274.                         }
  275.                         elseif (isset($part->parts)) {
  276.  
  277.                                 if ($fullPrefix) {
  278.                                         $this->recurse($part->parts, $prefix.$index.'.');
  279.                                 }
  280.                                 else {
  281.                                         $this->recurse($part->parts, $prefix);
  282.                                 }
  283.                         }
  284.                         elseif ($part->type > 2) {
  285.  
  286.                                 if (isset($part->id)) {
  287.  
  288.                                         $id = str_replace(array('<', '>'), '', $part->id);
  289.  
  290.                                         $this->attachments[$id] = array(
  291.                                                 'type' => $part->type,
  292.                                                 'subtype' => $part->subtype,
  293.                                                 'filename' => $this->getFilenameFromPart($part),
  294.                                                 'data' => $this->getAttachments ? $this->getPart($partNumber, $part->encoding) : '',
  295.                                                 'inline' => true,
  296.                                         );
  297.                                 }
  298.                                 else {
  299.                                         $this->attachments[] = array(
  300.                                                 'type' => $part->type,
  301.                                                 'subtype' => $part->subtype,
  302.                                                 'filename' => $this->getFilenameFromPart($part),
  303.                                                 'data' => $this->getAttachments ? $this->getPart($partNumber, $part->encoding) : '',
  304.                                                 'inline' => false,
  305.                                         );
  306.                                 }
  307.                         }
  308.                         $index++;
  309.                 }
  310.         }
  311.        
  312.         function getPart($partNumber, $encoding) {
  313.  
  314.                 $data = imap_fetchbody($this->connection, $this->messageNumber, $partNumber);
  315.  
  316.                 switch($encoding) {
  317.  
  318.                         case 0: return $data; // 7BIT
  319.                         case 1: return $data; // 8BIT
  320.                         case 2: return $data; // BINARY
  321.                         case 3: return base64_decode($data); // BASE64
  322.                         case 4: return quoted_printable_decode($data); // QUOTED_PRINTABLE
  323.                         case 5: return $data; // OTHER
  324.                 }
  325.         }
  326.        
  327.         function getFilenameFromPart($part) {
  328.  
  329.                 $filename = '';
  330.  
  331.                 if ($part->ifdparameters) {
  332.  
  333.                         foreach ($part->dparameters as $object) {
  334.  
  335.                                 if (strtolower($object->attribute) == 'filename') {
  336.                                         $filename = $object->value;
  337.                                 }
  338.                         }
  339.                 }
  340.  
  341.                 if (!$filename && $part->ifparameters) {
  342.  
  343.                         foreach ($part->parameters as $object) {
  344.  
  345.                                 if (strtolower($object->attribute) == 'name') {
  346.                                         $filename = $object->value;
  347.                                 }
  348.                         }
  349.                 }
  350.                 return $filename;
  351.         }
  352. }
  353.  
  354. function kartero_sort_folders($host,$array) {
  355.  
  356.         if (is_array($array)) {
  357.        
  358.                 if (in_array("{$host}INBOX",$array)) {
  359.                         $inbox = array_search("{$host}INBOX",$array);
  360.                         unset($array[$inbox]);
  361.                         unset($inbox);
  362.                 }
  363.        
  364.                 if (in_array("{$host}Sent",$array)) {
  365.                         $sent = array_search("{$host}Sent",$array);
  366.                         unset($array[$sent]);
  367.                 }
  368.                 else {
  369.                         if (isset($sent)) {
  370.                                 unset($sent);
  371.                         }
  372.                 }
  373.        
  374.                 if (in_array("{$host}Trash",$array)) {
  375.                         $trash = array_search("{$host}Trash",$array);
  376.                         unset($array[$trash]);
  377.                 }
  378.                 else {
  379.                         if (isset($trash)) {
  380.                                 unset($trash);
  381.                         }
  382.                 }
  383.  
  384.                 if (in_array("{$host}Spam",$array)) {
  385.                         $spam = array_search("{$host}Spam",$array);
  386.                         unset($array[$spam]);
  387.                 }
  388.                 else {
  389.                         if (isset($spam)) {
  390.                                 unset($spam);
  391.                         }
  392.                 }
  393.        
  394.                 if (in_array("{$host}Drafts",$array)) {
  395.                         $drafts = array_search("{$host}Drafts",$array);
  396.                         unset($array[$drafts]);
  397.                 }
  398.                 else {
  399.                         if (isset($drafts)) {
  400.                                 unset($drafts);
  401.                         }
  402.                 }
  403.  
  404.                 if (in_array("{$host}Junk",$array)) {
  405.                         $junk = array_search("{$host}Junk",$array);
  406.                         unset($array[$junk]);
  407.                 }
  408.                 else {
  409.                         if (isset($junk)) {
  410.                                 unset($junk);
  411.                         }
  412.                 }
  413.  
  414.                 sort($array);
  415.        
  416.                 if (isset($junk)) {
  417.                         array_unshift($array,"{$host}Junk");
  418.                         unset($junk);
  419.                 }
  420.  
  421.                 if (isset($spam)) {
  422.                         array_unshift($array,"{$host}Spam");
  423.                         unset($spam);
  424.                 }
  425.  
  426.                 if (isset($trash)) {
  427.                         array_unshift($array,"{$host}Trash");
  428.                         unset($trash);
  429.                 }
  430.        
  431.                 if (isset($sent)) {
  432.                         array_unshift($array,"{$host}Sent");
  433.                         unset($sent);
  434.                 }
  435.  
  436.                 if (isset($drafts)) {
  437.                         array_unshift($array,"{$host}Drafts");
  438.                         unset($drafts);
  439.                 }
  440.  
  441.                 array_unshift($array,"{$host}INBOX");
  442.        
  443.                 reset($array);
  444.  
  445.                 return $array;
  446.         }
  447. }
  448.  
  449. function kartero_dovecot_quota($quota) {
  450.  
  451.         $prefix = "";
  452.  
  453.         if (strlen($quota) == 0) {
  454.                 $quota = "";
  455.         }
  456.         else {
  457.                 $quota = strip_tags($quota);
  458.                 $quota = strtoupper($quota);
  459.                 $quota = preg_replace("/[^0-9.KMGT]/","",$quota);
  460.  
  461.                 if (strpos($quota,"K")) {
  462.                         $prefix = "K";
  463.                 }
  464.  
  465.                 if (strpos($quota,"M")) {
  466.                         $prefix = "M";
  467.                 }
  468.  
  469.                 if (strpos($quota,"G")) {
  470.                         $prefix = "G";
  471.                 }
  472.  
  473.                 if (strpos($quota,"T")) {
  474.                         $prefix = "T";
  475.                 }
  476.  
  477.                 $quota = preg_replace("/[^0-9.]/","",$quota);
  478.                 $quota = round($quota,0);
  479.         }
  480.  
  481.         $quota = trim($quota);
  482.         $prefix = trim($prefix);
  483.  
  484.         return $quota . $prefix;
  485. }
  486.  
  487. function kartero_resize_image($image,$max_height=70) {
  488.  
  489.         $size = getimagesize($image);
  490.         $width = $size[0];
  491.         $height = $size[1];
  492.  
  493.         if ($height > $max_height) {
  494.  
  495.                 $ratio = $max_height / $height;
  496.                 $new_width = $width * $ratio;
  497.                 $new_height = $max_height;
  498.        
  499.                 $put_image = imagecreatetruecolor($new_width,$new_height);
  500.                 $mimetype = image_type_to_mime_type(exif_imagetype($image));
  501.  
  502.                 switch($mimetype) {
  503.                         case "image/jpg":
  504.                         case "image/jpeg":
  505.                                 $get_image = imagecreatefromjpeg($image);
  506.                                 break;
  507.                         case "image/gif":
  508.                                 $get_image = imagecreatefromgif($image);
  509.                                 break;
  510.                         case "image/png":
  511.                                 $get_image = imagecreatefrompng($image);
  512.                                 break;
  513.                 }
  514.        
  515.                 imagecopyresampled($put_image,$get_image,0,0,0,0,$new_width,$new_height,$width,$height);
  516.  
  517.                 switch($mimetype) {
  518.                         case "image/jpg":
  519.                         case "image/jpeg":
  520.                                 imagejpeg($put_image,$image,80);
  521.                                 break;
  522.                         case "image/gif":
  523.                                 imagegif($put_image,$image);
  524.                                 break;
  525.                         case "image/png":
  526.                                 imagepng($put_image,$image,9);
  527.                                 break;
  528.                 }      
  529.  
  530.                 imagedestroy($put_image);
  531.                 imagedestroy($get_image);
  532.         }
  533. }
  534.  
  535. function kartero_local_storage($element,$storage,$destroy=0) {
  536.  
  537.         $storage = $element . $storage;
  538.         $storage = md5($storage);
  539.  
  540.         if ($destroy != 0) {
  541.                 echo "\n<script>localStorage.removeItem(\"$storage\");</script>\n";
  542.         }
  543.         else {
  544.                 echo "\n<script>var n=document.getElementById(\"$element\");var s=function(){localStorage.setItem(\"$storage\",n.value)};if(window.localStorage){n.value=localStorage.getItem(\"$storage\")}n.onchange=s();setInterval(s,500);window.onunload=s();</script>\n";
  545.         }
  546. }
  547.  
  548. function pass1_process($mbox, $msgno, $path) {
  549.  
  550.         $emailMessage = new EmailMessage($mbox, imap_msgno($mbox,$msgno));
  551.         $emailMessage->fetch();
  552.  
  553.         if (count($emailMessage->attachments > 0)) {
  554.  
  555.                 if (!file_exists($path)) {
  556.                         mkdir($path,0700,1);
  557.                 }
  558.        
  559.                 foreach ($emailMessage->attachments as $key => $attachment) {
  560.  
  561.                         $fileContent = $attachment[data];
  562.  
  563.                         if (($fileContent != "") and (($attachment[inline] == 1) or ($attachment[filename] == ""))) {
  564.                                 $fileName = $key;
  565.                         }      
  566.                         else {
  567.                                 $fileName = $attachment[filename];
  568.                         }
  569.  
  570.                         $fileName = str_replace(" ", "_", $fileName);
  571.                         $fileName = preg_replace("/[^a-zA-Z0-9.\-_@]/u", "", $fileName);
  572.  
  573.                         if (!file_exists("$path/$fileName") and (mb_strlen($fileContent,"8bit") > 0)) {
  574.                                 file_put_contents("$path/$fileName",$fileContent);
  575.                         }
  576.                 }
  577.         }
  578. }
  579.  
  580. function pass2_extract($mbox, $msgno, $p, $partno, $path) {
  581.         $data = ($partno) ? imap_fetchbody($mbox, $msgno, $partno, FT_UID) : imap_body($mbox, $msgno, FT_UID);
  582.         if ($p->encoding == 4)
  583.                 $data = quoted_printable_decode($data);
  584.         else if ($p->encoding == 3)
  585.                 $data = base64_decode($data);
  586.         $params = array();
  587.         if ($p->parameters)
  588.                 foreach ($p->parameters as $x)
  589.                         $params[strtolower($x->attribute)] = $x->value;
  590.         if ($p->dparameters)
  591.                 foreach ($p->dparameters as $x)
  592.                         $params[strtolower($x->attribute)] = $x->value;
  593.         if ($params['filename'] || $params['name']) {
  594.                 $partid = htmlentities($p->id, ENT_QUOTES, "UTF-8");
  595.                 $filename = ($params['filename']) ? $params['filename'] : $params['name'];
  596.                 $attachments[$filename] = $data;
  597.                 $image[$key] = $filename;
  598.         }
  599.         if (count($attachments) > 0) {
  600.                 if (!file_exists($path)) {
  601.                         mkdir($path, 0700, 1);
  602.                 }
  603.                 foreach ($attachments as $key => $val) {
  604.                         $files = glob("$path/*", GLOB_NOSORT);
  605.                         if (count($files) > 0) {
  606.                                 $dup = "0";
  607.                                 foreach ($files as $file) {
  608.                                         if (file_get_contents($file) == $val) {
  609.                                                 $dup++;
  610.                                         }
  611.                                 }
  612.                                 if (($dup == 0) and (mb_strlen($val,"8bit") > 0)) {
  613.                                         file_put_contents("$path/$key", $val);
  614.                                 }
  615.                         }
  616.                         else {
  617.                                 if (mb_strlen($val,"8bit") > 0) {
  618.                                         file_put_contents("$path/$key", $val);
  619.                                 }
  620.                         }
  621.                         unset($files);
  622.                 }
  623.         }
  624. }
  625.  
  626. function pass2_process($mbox, $msgno, $path) {
  627.         $attachments = array();
  628.         $s = imap_fetchstructure($mbox, $msgno, FT_UID);
  629.         if (!$s->parts) {
  630.                 pass2_extract($mbox, $msgno, $s, 0, $path);
  631.         }
  632.         else {
  633.                 foreach ($s->parts as $partno0 => $p) {
  634.                         pass2_extract($mbox, $msgno, $p, $partno0 + 1, $path);
  635.                 }
  636.         }
  637. }
  638.  
  639. function kartero_smime_verify($e) {
  640.         $t = tempnam(sys_get_temp_dir(), 'KSV');
  641.         file_put_contents($t, $e);
  642.         $r = openssl_pkcs7_verify($t, PKCS7_NOVERIFY);
  643.         if ($r === true) {
  644.                 echo '<font color="green">TRUE</font>';
  645.         } elseif ($r == -1) {
  646.               echo '<font color="orange">ERROR</font>';
  647.         } else {
  648.                 echo '<font color="red">FALSE</font>';
  649.         }
  650.         unlink($t);
  651. }
  652.  
  653. function kartero_smime_sign($user, $name, $from, $body, $home, $days = 365) {
  654.  
  655.         preg_match('/^--.*\n?/m', $body, $matches);
  656.  
  657.         if (count($matches) > 0) {
  658.                 $body = 'Content-Type: multipart/mixed; boundary="' . trim(substr($matches[0], 2)) . "\"\n" . $body;
  659.         }
  660.         else {
  661.                 $body = "Content-Type: text/plain\n\n$body";
  662.         }
  663.  
  664.         $body = str_replace("\r", '', $body);
  665.  
  666.         $name = trim($name);
  667.         $user = trim(strtolower($user));
  668.         $from = trim(strtolower($from));
  669.         $home = trim(strtolower($home));
  670.  
  671.         $u = explode('@', $user);
  672.         $n = $u[0];
  673.         $d = $u[1];
  674.         $h = "$home/$d/{$n[0]}/$n/smime";
  675.  
  676.         $key_file = "$h/$from.sign.key";
  677.         $crt_file = "$h/$from.sign.crt";
  678.  
  679.         $msg_file = tempnam(sys_get_temp_dir(), 'MSG');
  680.         file_put_contents($msg_file, $body);
  681.  
  682.         if (file_exists($key_file) and (filemtime($key_file) < (time() - ($days * 86400)))) {
  683.                 unlink($key_file);
  684.         }
  685.  
  686.         if (file_exists($crt_file) and (filemtime($crt_file) < (time() - ($days * 86400)))) {
  687.                 unlink($crt_file);
  688.         }
  689.  
  690.         if (file_exists($key_file) and file_exists($crt_file)) {
  691.                 $key = file_get_contents($key_file);
  692.                 $crt = file_get_contents($crt_file);
  693.         } else {
  694.                 $req_key = openssl_pkey_new(array('digest_alg' => 'sha512', 'private_key_bits' => 4096, 'private_key_type' => OPENSSL_KEYTYPE_RSA));
  695.                 $req_csr = openssl_csr_new(array('countryName' => 'PH', 'stateOrProvinceName' => 'NCR', 'localityName' => 'QC', 'organizationName' => 'kartero.org', 'organizationalUnitName' => explode('@', $from)[1], 'commonName' => $name, 'emailAddress' => $from), $req_key);
  696.                 $req_crt = openssl_csr_sign($req_csr, NULL, $req_key, $days);
  697.  
  698.                 openssl_pkey_export($req_key, $key);
  699.                 openssl_x509_export($req_crt, $crt);
  700.  
  701.                 if (!file_exists($h)) {
  702.                         mkdir($h, 0700, 1);
  703.                 }
  704.                
  705.                 file_put_contents($key_file, $key);
  706.                 file_put_contents($crt_file, $crt);
  707.         }
  708.  
  709.         $sig_file = tempnam(sys_get_temp_dir(), 'SIG');
  710.  
  711.         if (openssl_pkcs7_sign($msg_file, $sig_file, $crt, $key, array(), PKCS7_DETACHED)) {
  712.                 if (openssl_pkcs7_verify($sig_file, PKCS7_NOVERIFY)) {
  713.                         return explode("\n\n", file_get_contents($sig_file), 2);
  714.                 }
  715.         }
  716.  
  717.         unlink($msg_file);
  718.         unlink($sig_file);
  719. }
  720.  
  721. ?>
  722.  
filedropkartero.git-41992ae.tar.bz2 new
412.12 KB
261 downloads
filedropkartero.git-41992ae.zip
448.41 KB
237 downloads
filedropkartero.git-b404ba2.tar.bz2
411.70 KB
247 downloads
filedropkartero.git-b404ba2.zip
447.96 KB
229 downloads
filedropkartero.git-a7684d9.tar.bz2
411.72 KB
233 downloads
filedropkartero.git-a7684d9.zip
447.96 KB
271 downloads
filedropkartero.git-83512be.tar.bz2
410.26 KB
225 downloads
filedropkartero.git-83512be.zip
445.30 KB
200 downloads
filedropkartero.git-1954b25.tar.bz2
410.21 KB
218 downloads
filedropkartero.git-1954b25.zip
445.30 KB
195 downloads
filedropkartero.git-2f7c910.tar.bz2
410.25 KB
208 downloads
filedropkartero.git-2f7c910.zip
445.29 KB
182 downloads
filedropkartero.git-6317ffb.tar.bz2
410.40 KB
193 downloads
filedropkartero.git-6317ffb.zip
445.28 KB
164 downloads
filedropkartero.git-60ccd7a.tar.bz2
410.40 KB
181 downloads
filedropkartero.git-60ccd7a.zip
445.20 KB
160 downloads
filedropkartero.git-ea6f885.tar.bz2
410.47 KB
168 downloads
filedropkartero.git-ea6f885.zip
445.26 KB
142 downloads
filedropkartero.git-7f580e5.zip
445.17 KB
132 downloads
filedropkartero.git-7f580e5.tar.bz2
410.18 KB
139 downloads
filedropkartero.git-b9364de.tar.bz2
409.41 KB
129 downloads
filedropkartero.git-b9364de.zip
444.09 KB
391 downloads
filedropkartero.git-e9bcd78.zip
444.03 KB
371 downloads
filedropkartero.git-e9bcd78.tar.bz2
409.39 KB
395 downloads
filedropkartero.git-96c60ff.tar.bz2
407.96 KB
387 downloads
filedropkartero.git-96c60ff.zip
441.87 KB
343 downloads
filedropkartero.git-4357b59.tar.bz2
407.17 KB
385 downloads
filedropkartero.git-4357b59.zip
440.69 KB
346 downloads
filedropkartero.git-c6ff319.tar.bz2
407.28 KB
383 downloads
filedropkartero.git-c6ff319.zip
440.70 KB
327 downloads
filedropkartero.git-8b87a29.tar.bz2
407.27 KB
363 downloads
filedropkartero.git-8b87a29.zip
440.71 KB
326 downloads
filedropkartero.git-ee42942.tar.bz2
406.49 KB
323 downloads
filedropkartero.git-ee42942.zip
439.92 KB
304 downloads
filedropkartero.git-867e7e6.tar.bz2
406.75 KB
345 downloads
filedropkartero.git-867e7e6.zip
440.03 KB
307 downloads
filedropkartero.git-3f3fc02.tar.bz2
406.38 KB
342 downloads
filedropkartero.git-3f3fc02.zip
439.71 KB
333 downloads
filedropkartero.git-b6f779d.tar.bz2
406.55 KB
362 downloads
filedropkartero.git-b6f779d.zip
440.00 KB
292 downloads
filedropkartero.git-83f24b0.zip
439.12 KB
274 downloads
filedropkartero.git-52316ec.tar.bz2
406.17 KB
318 downloads
filedropkartero.git-52316ec.zip
439.18 KB
297 downloads
filedropkartero.git-83f24b0.tar.bz2
405.84 KB
312 downloads
filedropkartero.git-8a42d47.tar.bz2
405.73 KB
291 downloads
filedropkartero.git-8a42d47.zip
439.02 KB
270 downloads
filedropkartero.git-830c9cb.tar.bz2
406.08 KB
294 downloads
filedropkartero.git-830c9cb.zip
439.08 KB
269 downloads
filedropkartero.git-ebec1be.tar.bz2
406.16 KB
297 downloads
filedropkartero.git-ebec1be.zip
439.09 KB
297 downloads
filedropkartero.git-7c0b70f.tar.bz2
402.43 KB
283 downloads
filedropkartero.git-7c0b70f.zip
435.91 KB
262 downloads
filedropkartero.git-80edc03.tar.bz2
402.75 KB
296 downloads
filedropkartero.git-80edc03.zip
435.84 KB
273 downloads
filedropkartero.git-b408c23.tar.bz2
402.19 KB
287 downloads
filedropkartero.git-b408c23.zip
435.59 KB
277 downloads
filedropkartero.git-29c0e1f.tar.bz2
401.84 KB
291 downloads
filedropkartero.git-29c0e1f.zip
435.25 KB
289 downloads
filedropkartero.git-9086094.tar.bz2
401.94 KB
291 downloads
filedropkartero.git-9086094.zip
435.34 KB
289 downloads
filedropkartero.git-47ca624.tar.bz2
402.10 KB
290 downloads
filedropkartero.git-47ca624.zip
435.51 KB
257 downloads
filedropkartero.git-81314a5.zip
435.53 KB
277 downloads
filedropkartero.git-81314a5.tar.bz2
402.25 KB
284 downloads
filedropkartero.git-cae7074.zip
435.20 KB
273 downloads
filedropkartero.git-cae7074.tar.bz2
401.98 KB
301 downloads
filedropkartero.git-cc68e56.tar.bz2
402.07 KB
284 downloads
filedropkartero.git-cc68e56.zip
435.16 KB
303 downloads
filedropkartero.git-230f35d.tar.bz2
401.43 KB
270 downloads
filedropkartero.git-230f35d.zip
434.68 KB
290 downloads
filedropkartero.git-5ae58a2.tar.bz2
401.54 KB
272 downloads
filedropkartero.git-5ae58a2.zip
434.68 KB
263 downloads
filedropkartero.git-a591f4b.tar.bz2
401.76 KB
272 downloads
filedropkartero.git-a591f4b.zip
435.17 KB
270 downloads
filedropkartero.git-36876c8.tar.bz2
400.44 KB
268 downloads
filedropkartero.git-36876c8.zip
432.36 KB
293 downloads
filedropkartero.git-a34c9ed.tar.bz2
400.57 KB
292 downloads
filedropkartero.git-a34c9ed.zip
432.27 KB
283 downloads
filedropkartero.git-e828148.zip
433.58 KB
264 downloads
filedropkartero.git-e828148.tar.bz2
400.88 KB
279 downloads
filedropkartero.git-476cdda.tar.bz2
400.60 KB
309 downloads
filedropkartero.git-476cdda.zip
432.26 KB
276 downloads
filedropkartero.git-054c286.tar.bz2
98.09 KB
349 downloads
filedropkartero.git-054c286.zip
109.53 KB
334 downloads
filedropkartero.git-071b099.tar.bz2
98.76 KB
351 downloads
filedropkartero.git-071b099.zip
110.21 KB
336 downloads
filedropkartero.git-551c38d.tar.bz2
98.51 KB
357 downloads
filedropkartero.git-551c38d.zip
110.20 KB
326 downloads
filedropkartero.git-569dc0c.tar.bz2
98.40 KB
351 downloads
filedropkartero.git-569dc0c.zip
109.86 KB
318 downloads
filedropkartero.git-58a052b.tar.bz2
97.95 KB
348 downloads
filedropkartero.git-58a052b.zip
109.36 KB
332 downloads
filedropkartero.git-43a5af3.tar.bz2
97.80 KB
344 downloads
filedropkartero.git-43a5af3.zip
109.30 KB
329 downloads
filedropkartero.git-bbe069d.tar.bz2
98.03 KB
357 downloads
filedropkartero.git-bbe069d.zip
109.19 KB
334 downloads
filedropkartero.git-02f97e1.tar.bz2
97.76 KB
324 downloads
filedropkartero.git-02f97e1.zip
109.24 KB
424 downloads
filedropkartero.git-d82e393.tar.bz2
97.74 KB
357 downloads
filedropkartero.git-d82e393.zip
109.24 KB
335 downloads
filedropkartero.git-7cdd1f5.tar.bz2
98.03 KB
340 downloads
filedropkartero.git-7cdd1f5.zip
109.24 KB
316 downloads
filedropkartero.git-40825aa.tar.bz2
97.71 KB
339 downloads
filedropkartero.git-40825aa.zip
109.16 KB
353 downloads
filedropkartero.git-3dd941b.tar.bz2
97.69 KB
339 downloads
filedropkartero.git-3dd941b.zip
109.12 KB
326 downloads
filedropkartero.git-50f1e46.tar.bz2
97.65 KB
347 downloads
filedropkartero.git-50f1e46.zip
109.02 KB
330 downloads
filedropkartero.git-fdf9225.tar.bz2
93.19 KB
379 downloads
filedropkartero.git-fdf9225.zip
104.25 KB
339 downloads
filedropkartero.git-21415da.tar.bz2
93.24 KB
335 downloads
filedropkartero.git-21415da.zip
104.22 KB
342 downloads
filedropkartero.git-aff5e89.tar.bz2
93.17 KB
357 downloads
filedropkartero.git-aff5e89.zip
104.22 KB
331 downloads
filedropkartero.git-b27ef39.tar.bz2
91.97 KB
356 downloads
filedropkartero.git-b27ef39.zip
102.80 KB
356 downloads
filedropkartero.git-3d6e8a2.tar.bz2
91.99 KB
340 downloads
filedropkartero.git-3d6e8a2.zip
102.77 KB
352 downloads
filedropkartero.git-1442b69.tar.bz2
91.79 KB
333 downloads
filedropkartero.git-1442b69.zip
102.50 KB
357 downloads
filedropkartero.git-6d15918.tar.bz2
91.56 KB
356 downloads
filedropkartero.git-6d15918.zip
102.28 KB
323 downloads
filedropkartero.git-45140d8.tar.bz2
91.52 KB
359 downloads
filedropkartero.git-45140d8.zip
102.23 KB
329 downloads
filedropkartero.git-d5b48e5.tar.bz2
91.35 KB
346 downloads
filedropkartero.git-d5b48e5.zip
102.01 KB
341 downloads
filedropkartero.git-e007e55.tar.bz2
91.35 KB
357 downloads
filedropkartero.git-e007e55.zip
102.01 KB
314 downloads
filedropkartero.git-30fd7e3.tar.bz2
90.87 KB
333 downloads
filedropkartero.git-30fd7e3.zip
101.44 KB
341 downloads
filedropkartero.git-421a4a7.tar.bz2
88.02 KB
72 downloads
filedropkartero.git-421a4a7.zip
97.96 KB
318 downloads
filedropkartero.git-b49b8bc.tar.bz2
88.09 KB
377 downloads
filedropkartero.git-b49b8bc.zip
97.99 KB
334 downloads
filedropkartero.git-1cc9571.tar.bz2
87.74 KB
354 downloads
filedropkartero.git-1cc9571.zip
97.70 KB
338 downloads
filedropkartero.git-159152f.tar.bz2
87.60 KB
352 downloads
filedropkartero.git-159152f.zip
97.52 KB
344 downloads
filedropkartero.git-35caaf3.tar.bz2
87.74 KB
335 downloads
filedropkartero.git-35caaf3.zip
97.57 KB
327 downloads
filedropkartero.git-3c9d305.zip
96.67 KB
330 downloads
filedropkartero.git-3c9d305.tar.bz2
86.77 KB
343 downloads
filedropkartero.git-14cb2af.tar.bz2
86.41 KB
342 downloads
filedropkartero.git-14cb2af.zip
96.13 KB
333 downloads
filedropkartero.git-e8f00cb.tar.bz2
86.46 KB
358 downloads
filedropkartero.git-e8f00cb.zip
96.21 KB
322 downloads
filedropkartero.git-bdab380.tar.bz2
86.14 KB
355 downloads
filedropkartero.git-bdab380.zip
95.79 KB
327 downloads
filedropkartero.git-48f9134.tar.bz2
85.78 KB
358 downloads
filedropkartero.git-48f9134.zip
95.48 KB
337 downloads
filedropkartero.git-adb9757.tar.bz2
85.67 KB
347 downloads
filedropkartero.git-adb9757.zip
95.37 KB
327 downloads
filedropkartero.git-1601cbd.zip
95.30 KB
339 downloads
filedropkartero.git-1601cbd.tar.bz2
85.69 KB
329 downloads
filedropkartero.git-18a5106.tar.bz2
85.72 KB
330 downloads
filedropkartero.git-18a5106.zip
95.48 KB
343 downloads
filedropkartero.git-a5b1caa.tar.bz2
85.61 KB
365 downloads
filedropkartero.git-a5b1caa.zip
95.36 KB
337 downloads
filedropkartero.git-effff82.zip
97.06 KB
348 downloads
filedropkartero.git-effff82.tar.bz2
87.13 KB
353 downloads
filedropkartero.git-b70d364.tar.bz2
84.09 KB
391 downloads
filedropkartero.git-b70d364.zip
93.67 KB
343 downloads
filedropkartero.git-48f0e53.tar.bz2
84.16 KB
365 downloads
filedropkartero.git-48f0e53.zip
93.66 KB
336 downloads
filedropkartero.git-c17135e.tar.bz2
84.09 KB
346 downloads
filedropkartero.git-c17135e.zip
93.57 KB
322 downloads
filedropkartero.git-a2e2848.tar.bz2
85.59 KB
351 downloads
filedropkartero.git-a2e2848.zip
100.10 KB
335 downloads
filedropkartero.git-1f683db.tar.bz2
83.55 KB
350 downloads
filedropkartero.git-1f683db.zip
93.24 KB
331 downloads
filedropkartero.git-d342596.tar.bz2
83.57 KB
349 downloads
filedropkartero.git-d342596.zip
93.28 KB
323 downloads
filedropkartero.git-e0131d5.tar.bz2
83.55 KB
352 downloads
filedropkartero.git-e0131d5.zip
93.27 KB
339 downloads
filedropkartero.git-ad467e8.tar.bz2
83.13 KB
360 downloads
filedropkartero.git-ad467e8.zip
92.78 KB
328 downloads
filedropkartero.git-b20e27d.tar.bz2
83.46 KB
365 downloads
filedropkartero.git-b20e27d.zip
93.19 KB
356 downloads
filedropkartero.git-eefd8fe.zip
92.67 KB
360 downloads
filedropkartero.git-eefd8fe.tar.bz2
83.01 KB
349 downloads
filedropkartero.git-bea685a.zip
96.88 KB
336 downloads
filedropkartero.git-bea685a.tar.bz2
84.44 KB
345 downloads
filedropkartero.git-a8bd019.tar.bz2
84.25 KB
359 downloads
filedropkartero.git-a8bd019.zip
96.60 KB
330 downloads
filedropkartero.git-cbc914d.tar.bz2
84.38 KB
353 downloads
filedropkartero.git-cbc914d.zip
96.64 KB
320 downloads
filedropkartero.git-09a2e70.tar.bz2
84.40 KB
333 downloads
filedropkartero.git-09a2e70.zip
96.70 KB
342 downloads
filedropkartero.git-641dc05.tar.bz2
84.37 KB
351 downloads
filedropkartero.git-641dc05.zip
96.73 KB
331 downloads
filedropkartero.git-cde49c6.tar.bz2
84.26 KB
362 downloads
filedropkartero.git-cde49c6.zip
96.59 KB
335 downloads
filedropkartero.git-1d004e0.tar.bz2
77.42 KB
364 downloads
filedropkartero.git-1d004e0.zip
87.56 KB
997 downloads
filedropkartero.git-1f0bf17.tar.bz2
77.47 KB
359 downloads
filedropkartero.git-1f0bf17.zip
87.56 KB
329 downloads
filedropkartero.git-265e63c.tar.bz2
77.43 KB
340 downloads
filedropkartero.git-265e63c.zip
87.52 KB
364 downloads
filedropkartero.git-635a5db.zip
87.60 KB
332 downloads
filedropkartero.git-a041f85.tar.bz2
77.37 KB
365 downloads
filedropkartero.git-a041f85.zip
87.52 KB
362 downloads
filedropkartero.git-ae049a7.tar.bz2
77.44 KB
361 downloads
filedropkartero.git-ae049a7.zip
87.52 KB
333 downloads
filedropkartero.git-eef571a.tar.bz2
20.56 KB
472 downloads
filedropkartero.git-eef571a.zip
25.69 KB
461 downloads
filedropkartero.git-0bc16f5.tar.bz2
82.61 KB
377 downloads
filedropkartero.git-0bc16f5.zip
94.75 KB
369 downloads
filedropkartero.git-2afc0f7.tar.bz2
83.61 KB
379 downloads
filedropkartero.git-2afc0f7.zip
96.00 KB
386 downloads
filedropkartero.git-3529bdf.tar.bz2
77.72 KB
345 downloads
filedropkartero.git-3529bdf.zip
87.92 KB
362 downloads
filedropkartero.git-49aac92.tar.bz2
78.98 KB
390 downloads
filedropkartero.git-49aac92.zip
90.01 KB
364 downloads
filedropkartero.git-5d48f21.tar.bz2
78.65 KB
63 downloads
filedropkartero.git-5d48f21.zip
89.51 KB
394 downloads
filedropkartero.git-635a5db.tar.bz2
77.50 KB
400 downloads
filedropkartero.git-6e34786.tar.bz2
77.76 KB
410 downloads
filedropkartero.git-6e34786.zip
88.09 KB
406 downloads
filedropkartero.git-7dc2fd2.tar.bz2
83.51 KB
459 downloads
filedropkartero.git-7dc2fd2.zip
95.99 KB
412 downloads
filedropkartero.git-9cad005.tar.bz2
78.85 KB
456 downloads
filedropkartero.git-9cad005.zip
90.00 KB
453 downloads
filedropkartero.git-b303f61.tar.bz2
82.57 KB
491 downloads
filedropkartero.git-b303f61.zip
94.78 KB
129 downloads
filedropkartero.git-c15ef85.tar.bz2
77.76 KB
146 downloads
filedropkartero.git-c15ef85.zip
88.16 KB
147 downloads
filedropkartero.git-c99e84d.tar.bz2
83.58 KB
168 downloads
filedropkartero.git-c99e84d.zip
96.01 KB
161 downloads
filedropkartero.git-e5009e6.tar.bz2
78.73 KB
176 downloads
filedropkartero.git-e5009e6.zip
89.69 KB
173 downloads
filedropkartero.git-0502d01.tar.bz2
83.54 KB
191 downloads
filedropkartero.git-0502d01.zip
96.00 KB
186 downloads
filedropkartero.git-44ca46d.tar.bz2
83.73 KB
204 downloads
filedropkartero.git-44ca46d.zip
96.20 KB
195 downloads
filedropkartero.git-834f923.tar.bz2
83.75 KB
209 downloads
filedropkartero.git-834f923.zip
96.14 KB
203 downloads