Skip to content

Commit 95fa12f

Browse files
committed
Purge data of deleted users and domains
1 parent e68211c commit 95fa12f

File tree

11 files changed

+97
-14
lines changed

11 files changed

+97
-14
lines changed
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
#!/usr/bin/php
2+
<?php
3+
4+
define('DEBUG', true);
5+
usage(count($argv) < 3 || count($argv) > 4);
6+
7+
$operation = $argv[1];
8+
$host = $argv[2];
9+
10+
$configFile = file_get_contents('/etc/prosody/storage.cfg.lua');
11+
preg_match_all('/(host|database|port|username|password) *= *"?([^"\n]*)"?;/', $configFile, $matches);
12+
$config = array();
13+
foreach($matches[1] AS $ix => $key) {
14+
$config[$key] = $matches[2][$ix];
15+
}
16+
17+
try {
18+
// Connect to database
19+
$db = new mysqli($config['host'], $config['username'], $config['password'], $config['database']);
20+
21+
switch($operation){
22+
case 'user':
23+
usage(count($argv) != 4);
24+
$user = $argv[3];
25+
do_query($db->prepare("DELETE FROM prosody WHERE user = ? AND host = ?"), $host, $user);
26+
do_query($db->prepare("DELETE FROM prosodyarchive WHERE user = ? AND host = ?"), $host, $user);
27+
break;
28+
case 'domain':
29+
do_query($db->prepare("DELETE FROM prosody WHERE host = ?"), $host);
30+
do_query($db->prepare("DELETE FROM prosodyarchive WHERE host = ?"), $host);
31+
do_query($db->prepare("DELETE FROM prosody WHERE host LIKE ?"), "%.$host");
32+
do_query($db->prepare("DELETE FROM prosodyarchive WHERE host LIKE ?"), "%.$host");
33+
break;
34+
}
35+
$db->close();
36+
} catch (Exception $ex) {
37+
var_dump($ex);
38+
}
39+
40+
41+
function do_query($query, $host, $user = false){
42+
if($user !== false)
43+
$query->bind_param('ss', $user, $host);
44+
else
45+
$query->bind_param('s', $host);
46+
$query->execute();
47+
$entries = $query->affected_rows;
48+
$query->close();
49+
if(DEBUG) echo "$entries deleted!\n";
50+
return $entries;
51+
}
52+
53+
function result_false($cond = true) {
54+
if(!$cond) return;
55+
exit(1);
56+
}
57+
58+
function usage($cond = false){
59+
if(!$cond) return;
60+
echo "USAGE: \n prosody-purge domain my.domain.com \n prosody-purge user my.domain.com username \n";
61+
result_false();
62+
}

install/dist/conf/debian60.conf.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@
237237
$conf['prosody']['storage_database'] = 'prosody';
238238
$conf['prosody']['storage_user'] = 'prosody';
239239
$conf['prosody']['storage_password'] = md5(uniqid(rand()));
240-
$conf['prosody']['initial_modules'] = 'roster, saslauth, tls, dialback, disco, carbons, pep, private, blocklist, compression, vard, version, uptime, time, ping, admin_adhoc, mam, bosh, websocket, http_files, announce, proxy65, offline, posix, websocket, webpresence, smacks, csi_battery_saver, pep_vcard_avatar, omemo_all_access';
240+
$conf['prosody']['initial_modules'] = 'roster, saslauth, tls, dialback, disco, carbons, pep, private, blocklist, vcard, version, uptime, time, ping, admin_adhoc, mam, bosh, websocket, http_files, announce, proxy65, offline, posix, websocket, webpresence, smacks, csi_battery_saver, pep_vcard_avatar, omemo_all_access';
241241

242242

243243
?>

install/dist/conf/debian90.conf.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,6 @@
237237
$conf['prosody']['storage_database'] = 'prosody';
238238
$conf['prosody']['storage_user'] = 'prosody';
239239
$conf['prosody']['storage_password'] = md5(uniqid(rand()));
240-
$conf['prosody']['initial_modules'] = 'roster, saslauth, tls, dialback, disco, carbons, pep, private, blocklist, compression, vcard, version, uptime, time, ping, admin_adhoc, mam, bosh, websocket, http_files, announce, proxy65, offline, posix, websocket, webpresence, smacks, csi_battery_saver, pep_vcard_avatar, omemo_all_access';
240+
$conf['prosody']['initial_modules'] = 'roster, saslauth, tls, dialback, disco, carbons, pep, private, blocklist, vcard, version, uptime, time, ping, admin_adhoc, mam, bosh, websocket, http_files, announce, proxy65, offline, posix, websocket, webpresence, smacks, csi_battery_saver, pep_vcard_avatar, omemo_all_access';
241241

242242
?>

install/dist/conf/debiantesting.conf.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@
237237
$conf['prosody']['storage_database'] = 'prosody';
238238
$conf['prosody']['storage_user'] = 'prosody';
239239
$conf['prosody']['storage_password'] = md5(uniqid(rand()));
240-
$conf['prosody']['initial_modules'] = 'roster, saslauth, tls, dialback, disco, carbons, pep, private, blocklist, compression, vard, version, uptime, time, ping, admin_adhoc, mam, bosh, websocket, http_files, announce, proxy65, offline, posix, websocket, webpresence, smacks, csi_battery_saver, pep_vcard_avatar, omemo_all_access';
240+
$conf['prosody']['initial_modules'] = 'roster, saslauth, tls, dialback, disco, carbons, pep, private, blocklist, vcard, version, uptime, time, ping, admin_adhoc, mam, bosh, websocket, http_files, announce, proxy65, offline, posix, websocket, webpresence, smacks, csi_battery_saver, pep_vcard_avatar, omemo_all_access';
241241

242242

243243
?>

install/dist/conf/ubuntu1604.conf.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@
237237
$conf['prosody']['storage_database'] = 'prosody';
238238
$conf['prosody']['storage_user'] = 'prosody';
239239
$conf['prosody']['storage_password'] = md5(uniqid(rand()));
240-
$conf['prosody']['initial_modules'] = 'roster, saslauth, tls, dialback, disco, carbons, pep, private, blocklist, compression, vard, version, uptime, time, ping, admin_adhoc, mam, bosh, websocket, http_files, announce, proxy65, offline, posix, websocket, webpresence, smacks, csi_battery_saver, pep_vcard_avatar, omemo_all_access';
240+
$conf['prosody']['initial_modules'] = 'roster, saslauth, tls, dialback, disco, carbons, pep, private, blocklist, vcard, version, uptime, time, ping, admin_adhoc, mam, bosh, websocket, http_files, announce, proxy65, offline, posix, websocket, webpresence, smacks, csi_battery_saver, pep_vcard_avatar, omemo_all_access';
241241

242242

243243
?>

install/dist/conf/ubuntu1710.conf.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@
233233
$conf['prosody']['storage_database'] = 'prosody';
234234
$conf['prosody']['storage_user'] = 'prosody';
235235
$conf['prosody']['storage_password'] = md5(uniqid(rand()));
236-
$conf['prosody']['initial_modules'] = 'roster, saslauth, tls, dialback, disco, carbons, pep, private, blocklist, compression, vard, version, uptime, time, ping, admin_adhoc, mam, bosh, websocket, http_files, announce, proxy65, offline, posix, websocket, webpresence, smacks, csi_battery_saver, pep_vcard_avatar, omemo_all_access';
236+
$conf['prosody']['initial_modules'] = 'roster, saslauth, tls, dialback, disco, carbons, pep, private, blocklist, vcard, version, uptime, time, ping, admin_adhoc, mam, bosh, websocket, http_files, announce, proxy65, offline, posix, websocket, webpresence, smacks, csi_battery_saver, pep_vcard_avatar, omemo_all_access';
237237

238238

239239
?>

install/lib/installer_base.lib.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1863,7 +1863,9 @@ public function configure_prosody($options = '') {
18631863
// Copy isp libs
18641864
if(!@is_dir('/usr/local/lib/prosody/auth')) mkdir('/usr/local/lib/prosody/auth', 0755, true);
18651865
caselog('cp -rf apps/xmpp_libs/auth_prosody/* /usr/local/lib/prosody/auth/', __FILE__, __LINE__);
1866-
caselog('chmod 755 /usr/local/lib/prosody/auth/authenticate_isp.sh', __FILE__, __LINE__);
1866+
caselog('chmod 755 /usr/local/lib/prosody/auth/authenticate_isp.sh', __FILE__, __LINE__);
1867+
caselog('chown root:ispconfig /usr/local/lib/prosody/auth/prosody-purge', __FILE__, __LINE__);
1868+
caselog('chmod 750 /usr/local/lib/prosody/auth/prosody-purge', __FILE__, __LINE__);
18671869

18681870
// Process db config
18691871
$full_file_name = '/usr/local/lib/prosody/auth/db_conf.inc.php';

install/tpl/xmpp_prosody_conf_global.master

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ modules_enabled = {
3434
"pep",
3535
"private",
3636
"blocklist",
37-
"compression",
3837
"vcard",
3938
"version",
4039
"uptime",

interface/web/mail/templates/xmpp_user_list.htm

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,10 @@ <h1><tmpl_var name="list_head_txt"></h1>
5050
<tmpl_loop name="records">
5151
<tr>
5252
<td><a href="#" data-load-content="mail/xmpp_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="jid"}</a></td>
53+
<tmpl_if name="temporary removed, not used at the moment">
5354
<td><a href="#" data-load-content="mail/xmpp_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="is_domain_admin"}</a></td>
5455
<td><a href="#" data-load-content="mail/xmpp_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="is_muc_admin"}</a></td>
56+
</tmpl_if>
5557
<td class="text-right">
5658
<a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/xmpp_user_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></button>
5759
</td>

server/mods-available/xmpp_module.inc.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ class that contains the function functionname.
7979
*/
8080

8181
$app->modules->registerTableHook('xmpp_domain', 'xmpp_module', 'process');
82+
$app->modules->registerTableHook('xmpp_user', 'xmpp_module', 'process');
8283
$app->services->registerService('xmpp', 'xmpp_module', 'reloadXMPP');
8384
$app->services->registerService('xmpp', 'xmpp_module', 'restartXMPP');
8485

0 commit comments

Comments
 (0)