summaryrefslogtreecommitdiff
path: root/scripts/gpgfillmissingemail.php
blob: 39f9d8f1a6eaf3a91160f296105f7980ee796863 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<? /*
    LibreSSL - CAcert web application
    Copyright (C) 2004-2008  CAcert Inc.

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; version 2 of the License.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
*/
	require_once("../includes/mysql.php"); //general.php");
	//include "../includes/general.php";

function gpg_hex2bin($data)
	{
		while(strstr($data, "\\x"))
		{
			$pos = strlen($data) - strlen(strstr($data, "\\x"));
			$before = substr($data, 0, $pos);
			$char = chr(hexdec(substr($data, $pos + 2, 2)));
			$after = substr($data, $pos + 4);
			$data = $before.$char.$after;
		}
		return(utf8_decode($data));
	}


function csvize($str) 
{
	if (strpos($str, "\"") != "" || strpos($str, ",") != "") {
		return "\"" . str_replace("\"", "\"\"", $str) . "\"";
	}
	return $str;
}
	mb_regex_encoding("UTF-8");

echo "Seaching ...\n";
	$res = mysql_query("SELECT * FROM gpg WHERE crt != '' and email=''");
	if (!$res) {
		echo "Query FROM gpg failed!\n";
		exit;
	}
echo "Found:\n";

	$keys = array();
	while ($row = mysql_fetch_assoc($res)) {
	    echo "ID: ".$row["id"]."\n"; 
		$crt=$row["crt"];

		$gpg = `gpg --with-colons --homedir /tmp $crt 2>/dev/null`;
		//echo "gpg says\n".htmlspecialchars($gpg);
		foreach (explode("\n", $gpg) as $line) 
		{
			$bits = explode(":", $line);
			if ($bits[0] != "pub" && $bits[0] != "uid") {
				continue;
			}
			if($bits[0] == "pub")
			{


				if (preg_match("/<([\w.-]*\@[\w.-]*)>/", $bits[9],$match)) 
				{
                                  //echo "Found: ".$match[1];
                                   $mail = trim(gpg_hex2bin($match[1]));


				echo "EMail: *$mail**\n";
				echo "update gpg set email='$mail' where id=$row[id]\n";
				  mysql_query("update gpg set email='$mail' where id=$row[id];");
				}
			}
		}


	}
	echo "Done\n";
	mysql_free_result($res);


?>