984013bcb4e9c0a81917df0cb7a614a618fa0074
bernd Login via Client-Zertifikat...

bernd authored 15 years ago

1) <?php
2) 
3) require_once('inc/security.php');
4) 
5) function get_logins_by_cert($cert) 
6) {
7) 	$cert = mysql_real_escape_string(str_replace(array('-----BEGIN CERTIFICATE-----', '-----END CERTIFICATE-----', ' ', "\n"), array(), $cert));
8) 	$query = "SELECT type,username,startpage FROM system.clientcert WHERE cert='{$cert}'";
9) 	$result = db_query($query);
10) 	if (mysql_num_rows($result) < 1)
11) 		return NULL;
12) 	else {
13) 		$ret = array();
14) 		while ($row = mysql_fetch_assoc($result)) {
15) 			$ret[] = $row;
16) 		}
17) 		return $ret;
18) 	}
19) }
20) 
21) function get_cert_by_id($id) 
22) {
23)   $id = (int) $id;
24) 	if ($id == 0)
25) 	  system_failure('no ID');
26) 	$query = "SELECT id,dn,issuer,cert,username,startpage FROM system.clientcert WHERE `id`='{$id}' LIMIT 1";
27) 	$result = db_query($query);
28) 	if (mysql_num_rows($result) < 1)
29) 		return NULL;
30) 	$ret = mysql_fetch_assoc($result);
31)   DEBUG($ret);
32)   return $ret;
33) }
34) 
35) 
36) function get_certs_by_username($username) 
37) {
38) 	$username = mysql_real_escape_string($username);
39) 	if ($username == '')
40) 	  system_failure('empty username');
41) 	$query = "SELECT id,dn,issuer,cert,startpage FROM system.clientcert WHERE `username`='{$username}'";
42) 	$result = db_query($query);
43) 	if (mysql_num_rows($result) < 1)
44) 		return NULL;
45) 	while ($row = mysql_fetch_assoc($result)) {
46) 	  $ret[] = $row;
47) 	}
48) 	return $ret;
49) }
50) 
51) 
52) function add_clientcert($certdata, $dn, $issuer, $startpage='')
53) {
bernd Ermögliche Client-Cert-Logi...

bernd authored 12 years ago

54)   $type = NULL;
55)   $username = NULL;
56)   if ($_SESSION['role'] == ROLE_SYSTEMUSER) {
57)     $type = 'user';
58)     $username = mysql_real_escape_string($_SESSION['userinfo']['username']);
59)     if (isset($_SESSION['subuser']))
60)       $username = mysql_real_escape_string($_SESSION['subuser']);
61)       $type = 'subuser';
62)   } elseif ($_SESSION['role'] == ROLE_VMAIL_ACCOUNT) {
63)     $type = 'email';
64)     $username = mysql_real_escape_string($_SESSION['mailaccount']);
65)   }
66)   if (! $type || ! $username) {
67)     system_failure('cannot get type or username of login');
68)   }
bernd Login via Client-Zertifikat...

bernd authored 15 years ago

69)   $certdata = mysql_real_escape_string($certdata);
70)   $dn = maybe_null(mysql_real_escape_string($dn));
71)   $issuer = maybe_null(mysql_real_escape_string($issuer));
72)   if ($startpage &&  ! check_path($startpage))
73)     system_failure('Startseite kaputt');
74)   $startpage = maybe_null(mysql_real_escape_string($startpage));
bernd Cert-Login geht jetztauch m...

bernd authored 13 years ago

75) 
bernd Login via Client-Zertifikat...

bernd authored 15 years ago

76)   if ($certdata == '')
77)     system_failure('Kein Zertifikat');
78)   DEBUG($certdata);
79)   DEBUG($dn);
80)   DEBUG($issuer);
81) 
82)   db_query("INSERT INTO system.clientcert (`dn`, `issuer`, `cert`, `type`, `username`, `startpage`) 
bernd Cert-Login geht jetztauch m...

bernd authored 13 years ago

83) VALUES ({$dn}, {$issuer}, '{$certdata}', '{$type}', '{$username}', {$startpage})");
bernd Login via Client-Zertifikat...

bernd authored 15 years ago

84) 
85) }
86) 
87) 
88) function delete_clientcert($id)
89) {
90)   $id = (int) $id;
bernd Ermögliche Client-Cert-Logi...

bernd authored 12 years ago

91)   $type = NULL;
92)   $username = NULL;
93)   if ($_SESSION['role'] == ROLE_SYSTEMUSER) {
94)     $type = 'user';
95)     $username = mysql_real_escape_string($_SESSION['userinfo']['username']);
96)     if (isset($_SESSION['subuser']))
97)       $username = mysql_real_escape_string($_SESSION['subuser']);
98)       $type = 'subuser';
99)   } elseif ($_SESSION['role'] == ROLE_VMAIL_ACCOUNT) {
100)     $type = 'email';
101)     $username = mysql_real_escape_string($_SESSION['mailaccount']);
102)   }
103)   if (! $type || ! $username) {
104)     system_failure('cannot get type or username of login');
105)   }
106)   db_query("DELETE FROM system.clientcert WHERE id={$id} AND type='{$type}' AND username='{$username}' LIMIT 1");