Skip to content

Commit 3e994a8

Browse files
committed
XMPP User and domain changes and Metronome SQL Auth scripts
1 parent d2ba649 commit 3e994a8

File tree

21 files changed

+667
-166
lines changed

21 files changed

+667
-166
lines changed

install/apps/metronome_libs/mod_auth_external/authenticate_isp.php

Lines changed: 0 additions & 65 deletions
This file was deleted.

install/apps/metronome_libs/mod_auth_external/authenticate_isp.sh

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ while read ACTION USER HOST PASS ; do
1212

1313
case $ACTION in
1414
"auth")
15-
if [ `/usr/bin/php /usr/lib/metronome/spicy-modules/mod_auth_external/authenticate_isp.php $USER $HOST $PASS` == 1 ] ; then
15+
if [ `/usr/bin/php /usr/lib/metronome/isp-modules/mod_auth_external/db_auth.php $USER $HOST $PASS 2>/dev/null` == 1 ] ; then
1616
echo $AUTH_OK
1717
[ $USELOG == true ] && { echo "AUTH OK" >> $LOGFILE; }
1818
else
@@ -21,17 +21,17 @@ while read ACTION USER HOST PASS ; do
2121
fi
2222
;;
2323
"isuser")
24-
if [ `/usr/bin/php /usr/lib/metronome/spicy-modules/mod_auth_external/isuser_isp.php $USER $HOST` == 1 ] ; then
24+
if [ `/usr/bin/php /usr/lib/metronome/isp-modules/mod_auth_external/db_isuser.php $USER $HOST 2>/dev/null` == 1 ] ; then
2525
echo $AUTH_OK
26-
[ $USELOG == true ] && { echo "AUTH OK" >> $LOGFILE; }
26+
[ $USELOG == true ] && { echo "ISUSER OK" >> $LOGFILE; }
2727
else
2828
echo $AUTH_FAILED
29-
[ $USELOG == true ] && { echo "AUTH FAILED" >> $LOGFILE; }
29+
[ $USELOG == true ] && { echo "ISUSER FAILED" >> $LOGFILE; }
3030
fi
3131
;;
3232
*)
3333
echo $AUTH_FAILED
34-
[ $USELOG == true ] && { echo "NO ACTION GIVEN" >> $LOGFILE; }
34+
[ $USELOG == true ] && { echo "UNKNOWN ACTION GIVEN: $ACTION" >> $LOGFILE; }
3535
;;
3636
esac
3737

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<?php
2+
ini_set('display_errors', false);
3+
require_once('db_conf.inc.php');
4+
5+
try{
6+
// Connect database
7+
$db = new mysqli($db_host, $db_user, $db_pass, $db_name);
8+
result_false(mysqli_connect_errno());
9+
10+
// Get arguments
11+
$arg_email = '';
12+
$arg_password = '';
13+
14+
result_false(count($argv) != 4);
15+
$arg_email = $argv[1].'@'.$argv[2];
16+
$arg_password = $argv[3];
17+
18+
// check for existing user
19+
$dbmail = $db->real_escape_string($arg_email);
20+
$result = $db->query("SELECT jid, password FROM xmpp_user WHERE jid LIKE '".$dbmail."' AND active='y' AND server_id='".$isp_server_id."'");
21+
result_false($result->num_rows != 1);
22+
23+
$user = $result->fetch_object();
24+
25+
// check for domain autologin api key
26+
$domain_key = 'f47kmm5Yh5hJzSws2KTS';
27+
28+
checkAuth($argv[1], $argv[2], $arg_password, $user->password, $domain_key);
29+
}catch(Exception $ex){
30+
echo 0;
31+
exit();
32+
}
33+
34+
function result_false($cond = true){
35+
if(!$cond) return;
36+
echo 0;
37+
exit();
38+
}
39+
function result_true(){
40+
echo 1;
41+
exit();
42+
}
43+
function checkAuth($user, $domain, $pw_arg, $pw_db, $domain_key){
44+
if(crypt($pw_arg, $pw_db) == $pw_db)
45+
result_true();
46+
47+
if($domain_key){
48+
$datetime = new DateTime();
49+
$datetime->setTimezone(new DateTimeZone("UTC"));
50+
for($t = $datetime->getTimestamp(); $t >= $datetime->getTimestamp()-30; $t--){
51+
$pw_api = md5($domain.'@'.$domain_key.'@'.$user.'@'.$t);
52+
if($pw_api == $pw_arg)
53+
result_true();
54+
}
55+
}
56+
result_false();
57+
}
58+
?>
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?php
2+
$db_user = '{mysql_server_ispconfig_user}';
3+
$db_pass = '{mysql_server_ispconfig_password}';
4+
$db_name = '{mysql_server_database}';
5+
$db_host = '{mysql_server_ip}';
6+
$isp_server_id = '{server_id}';
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?php
2+
ini_set('display_errors', false);
3+
require_once('db_conf.inc.php');
4+
5+
try{
6+
// Connect database
7+
$db = new mysqli($db_host, $db_user, $db_pass, $db_name);
8+
result_false(mysqli_connect_errno());
9+
10+
// Get arguments
11+
$arg_email = '';
12+
13+
result_false(count($argv) != 3);
14+
$arg_email = $argv[1].'@'.$argv[2];
15+
16+
// check for existing user
17+
$dbmail = $db->real_escape_string($arg_email);
18+
$result = $db->query("SELECT jid, password FROM xmpp_user WHERE jid LIKE '".$dbmail."' AND active='y' AND server_id='".$isp_server_id."'");
19+
result_false($result->num_rows != 1);
20+
result_true();
21+
22+
}catch(Exception $ex){
23+
echo 0;
24+
exit();
25+
}
26+
27+
function result_false($cond = true){
28+
if(!$cond) return;
29+
echo 0;
30+
exit();
31+
}
32+
function result_true(){
33+
echo 1;
34+
exit();
35+
}
36+
37+
?>

install/apps/metronome_libs/mod_auth_external/isuser_isp.php

Lines changed: 0 additions & 44 deletions
This file was deleted.

install/lib/installer_base.lib.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1339,6 +1339,16 @@ public function configure_xmpp() {
13391339
// Copy isp libs
13401340
if(!@is_dir('/usr/lib/metronome/isp-modules')) mkdir('/usr/lib/metronome/isp-modules', 0755, true);
13411341
caselog('cp -rf apps/metronome_libs/* /usr/lib/metronome/isp-modules/', __FILE__, __LINE__);
1342+
// Process db config
1343+
$full_file_name = '/usr/lib/metronome/isp-modules/mod_auth_external/db_conf.inc.php';
1344+
$content = rf($full_file_name);
1345+
$content = str_replace('{mysql_server_ispconfig_user}', $conf['mysql']['ispconfig_user'], $content);
1346+
$content = str_replace('{mysql_server_ispconfig_password}', $conf['mysql']['ispconfig_password'], $content);
1347+
$content = str_replace('{mysql_server_database}', $conf['mysql']['database'], $content);
1348+
$content = str_replace('{mysql_server_ip}', $conf['mysql']['ip'], $content);
1349+
$content = str_replace('{server_id}', $conf['server_id'], $content);
1350+
wf($full_file_name, $content);
1351+
13421352

13431353
// Copy init script
13441354
caselog('cp -f apps/metronome-init /etc/init.d/metronome', __FILE__, __LINE__);

install/sql/incremental/upd_0081.sql

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ CREATE TABLE `xmpp_domain` (
2323
`server_id` int(11) unsigned NOT NULL default '0',
2424
`domain` varchar(255) NOT NULL default '',
2525

26-
`auth_method` ENUM( 'isp', 'plain', 'hashed' ) NOT NULL default 'hashed',
26+
`management_method` ENUM( 'normal', 'maildomain' ) NOT NULL default 'normal',
2727
`public_registration` ENUM( 'n', 'y' ) NOT NULL default 'n',
2828
`registration_url` varchar(255) NOT NULL DEFAULT '',
2929
`registration_message` varchar(255) NOT NULL DEFAULT '',
@@ -66,12 +66,8 @@ CREATE TABLE `xmpp_user` (
6666
`sys_perm_group` varchar(5) NOT NULL default '',
6767
`sys_perm_other` varchar(5) NOT NULL default '',
6868
`server_id` int(11) unsigned NOT NULL default '0',
69-
`xmpp_domain_id` int(11) unsigned NOT NULL default '0',
70-
`login` varchar(255) NOT NULL default '',
7169
`jid` varchar(255) NOT NULL default '',
7270
`password` varchar(255) NOT NULL default '',
73-
`is_domain_admin` enum('n','y') NOT NULL default 'n',
74-
`is_muc_admin` enum('n','y') NOT NULL default 'n',
7571
`active` enum('n','y') NOT NULL DEFAULT 'n',
7672
PRIMARY KEY (`xmppuser_id`),
7773
KEY `server_id` (`server_id`,`jid`),

install/sql/ispconfig3.sql

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1977,7 +1977,7 @@ CREATE TABLE `xmpp_domain` (
19771977
`server_id` int(11) unsigned NOT NULL default '0',
19781978
`domain` varchar(255) NOT NULL default '',
19791979

1980-
`auth_method` ENUM( 'isp', 'plain', 'hashed' ) NOT NULL default 'hashed',
1980+
`management_method` ENUM( 'normal', 'maildomain' ) NOT NULL default 'normal',
19811981
`public_registration` ENUM( 'n', 'y' ) NOT NULL default 'n',
19821982
`registration_url` varchar(255) NOT NULL DEFAULT '',
19831983
`registration_message` varchar(255) NOT NULL DEFAULT '',
@@ -2022,12 +2022,8 @@ CREATE TABLE `xmpp_user` (
20222022
`sys_perm_group` varchar(5) NOT NULL default '',
20232023
`sys_perm_other` varchar(5) NOT NULL default '',
20242024
`server_id` int(11) unsigned NOT NULL default '0',
2025-
`xmpp_domain_id` int(11) unsigned NOT NULL default '0',
2026-
`login` varchar(255) NOT NULL default '',
20272025
`jid` varchar(255) NOT NULL default '',
20282026
`password` varchar(255) NOT NULL default '',
2029-
`is_domain_admin` enum('n','y') NOT NULL default 'n',
2030-
`is_muc_admin` enum('n','y') NOT NULL default 'n',
20312027
`active` enum('n','y') NOT NULL DEFAULT 'n',
20322028
PRIMARY KEY (`xmppuser_id`),
20332029
KEY `server_id` (`server_id`,`jid`),

interface/web/mail/form/xmpp_domain.tform.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,11 +98,11 @@
9898
'maxlength' => '255',
9999
'searchable' => 1
100100
),
101-
'auth_method' => array (
101+
'management_method' => array (
102102
'datatype' => 'VARCHAR',
103103
'formtype' => 'SELECT',
104-
'default' => '1',
105-
'value' => array(0 => 'Plain', 1 => 'Hashed', 2 => 'By Email Mailbox')
104+
'default' => '0',
105+
'value' => array(0 => 'Normal', 1 => 'By Mail Domain')
106106
),
107107
'public_registration' => array (
108108
'datatype' => 'VARCHAR',

0 commit comments

Comments
 (0)