2

MySQL を介して新しいグループを挿入する方法を知っており、ある程度は機能します。問題は、グループを手動で挿入すると、データベースの変更がメモリにロードされないことです。プロセスに HUP シグナルを送信することはできますが、それは厄介でハックです。私はエレガンスを望みます:)

可能であれば、MySQL を介してグループに変更 (追加/削除/変更) を行い、HTTP 要求を openfire サーバーに送信して新しい変更を読み取ることです。または、別の方法として、ユーザー サービスの仕組みと同様に、グループを追加/削除/変更します。

誰かが助けてくれれば幸いです。

4

1 に答える 1

1

HUP シグナルの送信が機能する場合、Openfire に新しいグループを読み取らせるための非常にシンプルでエレガントで効率的な方法であると私には思えます。特に、Openfire サーバーで次のコマンドを使用して実行する場合 ( Linux/Unix OS を実行しています):

pkill -f -HUP openfire

Openfire にグループの再読み取りを促す HTTP 要求を送信したい場合は、次の Python スクリプトを実行する必要があります。これは Openfire 3.8.2 を対象としており、Ubuntu ではpython- mechanizeパッケージでインストールされる Python の mechanize ライブラリに依存しています。スクリプトは Openfire サーバーにログインし、[キャッシュの概要] ページを表示して、[グループ] および [グループ メタデータ キャッシュ] オプションを選択し、[送信] ボタンを有効にしてから、フォームを送信してこれら 2 つのキャッシュをクリアします。

#!/usr/bin/python

import mechanize
import cookielib

# Customize to suit your setup
of_host = 'http://openfire.server:9090'
of_user = 'admin_username'
of_pass = 'admin_password'

# Initialize browser and cookie jar
br = mechanize.Browser()
br.set_cookiejar(cookielib.LWPCookieJar())

# Log into Openfire server
br.open(of_host + '/login.jsp')
br.select_form('loginForm')
br.form['username'] = of_user
br.form['password'] = of_pass
br.submit()

# Select which cache items to clear in the Cache Summary page
# On my server, 13 is Group and 14 is Group Metadata Cache
br.open(of_host + '/system-cache.jsp')
br.select_form('cacheForm')
br.form['cacheID'] = ['13','14']

# Activate the submit button and submit the form
c = br.form.find_control('clear')
c.readonly = False
c.disabled = False
r = br.submit()

# Uncomment the following line if you want to view results
#print r.read()
于 2013-08-14T18:50:42.777 に答える