2012-06-04 2 views
0

XMPP 서버를 사용하여 응용 프로그램을 채팅하는 jabber에서 작업 중입니다. mysql 쿼리를 사용하여 명단을 추가해야하므로 2 명의 사용자 친구를 만들고 싶습니다. 두 테이블에 항목을 만듭니다. (1) ofRosterGroups의 (2) ofRoster (2). 두 테이블 모두에 항목을 만들지 만 작동하지 않습니다.xmpp 서버 및 로스터 문제

누락 된 부분이 있습니까? 관리자 패널에서이 작업을 수행 할 수 있지만 그렇게하고 싶지는 않습니다.

답변

1

나는 openfire (openfire 설정과 같은 SQL의 테이블)를 사용하고 있다고 생각합니다. 그렇다면 편집해야하는 테이블은 "ofGroupUser"입니다. 그룹에 사용자를 추가하려면 해당 테이블에 sql을 삽입해야합니다. 여기서 그룹 이름은 사용자를 추가하려는 그룹이고 사용자 이름은 그룹에 추가하려는 사용자이고 administrator는 해당 사용자의 플래그입니다 사용자 권한 (0 만 사용). 삽입 예제는 다음과 같습니다.

INSERT INTO ofGroupUser VALUES ("group name", "user", administrator);

그러나 위 게시물에서 언급했듯이 서버에 즉시 영향을 미치지 않으므로이 방법을 사용하는 것은 좋지 않습니다. openfire (또는 사용중인 서버)가 시작시 데이터베이스를 읽는 것만으로 인해 이러한 변경이 이루어 지도록 서버를 다시 시작해야합니다. 일단 모든 것을 캐시하면 관리 콘솔을 통해 사용자 또는 그룹을 추가하는 등의 요청에 따라 데이터베이스를 편집하지만 읽을 수는 없으며 서버를 다시 시작할 때까지 추가 내용을 볼 수 없습니다.

기본적으로 수동 SQL 삽입을 수행하면 원하는 결과가 생성되고 일부 기능을 테스트하는 경우 서버를 다시 시작하는 동안 정상적으로 작동합니다. 만약 당신이 openfire를 사용하고 있고 웹 UI 외에도 어떤 방법으로 그룹 관리 작업을해야한다면, 나는 다른 서버를 사용할 것입니다. 내가 아는 한, 오픈 파이어 (Openfire)는 그것의 웹 UI가 아닌 다른 행정부와 정말 위대하지 않습니다. Here은 많은 오픈 소스 xmpp 서버 목록입니다. 내가 ejabberd (위에서 언급 한 바와 같이)은 mod_ctlextra (here is the man page for it which lists commands)라는 확장 모듈을 사용하여 ejabberdctl이라는 매우 훌륭한 제어 도구를 가지고 있다고 가정하고 내가 원하는 것을 수행 할 수있게 해줄 것이다. 그렇다면 SQL에 대해 걱정할 필요가없고 다시 시작해야합니다. 도구가 있어야합니다.

사이드 노트에서 ejabberd는 언어 작성의 성격 상 매우 효율적입니다 (Erlang). 좋은 물건.

희망 하시겠습니까?

+0

예. 나는 openfire를 사용하고있다. 당신의 도움을 주셔서 감사합니다. – Tarun

0

아마도 ejabberd와 함께 odbc 모듈을 사용하고있을 것입니다. SQL 스키마는 질문에 언급 된 테이블이 아닌 두 개의 테이블 rostergroupsrosterusers을 정의합니다. 어떤 경우 든 이 아니고이 테이블을 직접 업데이트해야합니다. ejabberd는 내부 상태를 유지하고 변경 사항에 대한 알림을받지 않습니다.

이동 방법은 실제로 사용자가 상호 구독을 보내고 rfc에 따라이를 수락하는 것입니다. Roster Item Exchange도 유용 할 수 있습니다.