まず、私たちが持っているもの:主にWindows XP、Windows 2k3で自然に発生したドメイン、そしてgentoo linuxがインストールされている通常のマシン(またはサーバー)(オプションでMySQL)を含む〜150台のマシンの小さなネットワーク。
タスク:jabberサーバーをインストールし、ADのグループを使用して一般名簿を作成し、icqゲートをそれに接続して、jabberクライアントを稼働中のマシンに配置します。
ejabberdをインストールする
ejabberdのインストールを開始する前に、すべてが揃っていることを確認する必要があります。そうすれば、彼はそれを必要とする可能性があります。
- GNU Make
- Gcc
- libexpat 1.95以降
- アーラン/ OTP R10B-9以上
- STARTTLS、SASL、およびSSL暗号化用のOpenSSL 0.9.6以降。 オプション、強く推奨。
- Zlib 1.2.3以降、ストリーム圧縮のサポート(XEP-0138)。 オプション。
- IRCトランスポート(mod_irc)用のGNU Iconv 1.8以降。 オプション。 GNU Libcを搭載したシステムでは必要ありません。
安定版に共有名簿をインストールできなかったため、sjaからejabberd自体をビルドします。 これを行うには、次を実行します。
 user$ svn checkout svn.process-one.net/ejabberd 
      
        
        
        
      
    
      
      これを収集します。アセンブリパラメーターに--enable-odbcを含めることを忘れないでください
user$ cd ejabberd/trunk/src/ 
      
        
        
        
      
     user$ ./configure --enable-odbc 
      
        
        
        
      
     user$ make 
      
        
        
        
      
     user$ sudo make install 
      
        
        
        
      
    
      
      一部のエラーが表示されなかった場合は、さらに先に進みます。次のステップでは、共有名簿のモジュールを収集します。 モジュール自体のソースコードは、まだmod_shared_roster_ldap.erlです。
 user$ wget -c www.ejabberd.im/files/contributions/mod_shared_roster_ldap.erl 
      
        
        
        
      
     user$ erlc -I ejabberd/trunk/src/ mod_shared_roster_ldap.erl 
      
        
        
        
      
    
      
      そのようなメッセージが表示されても心配しないでください
./mod_shared_roster_ldap.erl:19: Warning: behaviour gen_mod undefined 
      
        
        
        
      
     ./mod_shared_roster_ldap.erl:289: Warning: variable 'User' is unused 
      
        
        
        
      
    
      
      さて、新しいモジュールをまとめて残りにコピーします
user$ sudo cp mod_shared_roster_ldap.beam /lib/ejabberd/ebin/ 
      
        
        
        
      
    
      
      Ejabberdのセットアップ
ルートに移動して( sudo -i || su )、/ etc / ejabberd /に移動します。 そこでejabberd.cfgというファイルに興味があり、お気に入りのエディターで開いて編集を開始します。 私は%%でエスケープされるいくつかのコメントを使用して設定をもたらします:
override_global. 
      
        
        
        
      
     override_local. 
      
        
        
        
      
     override_acls. 
      
        
        
        
      
     
      
        
        
        
      
     {loglevel, 4}. 
      
        
        
        
      
     
      
        
        
        
      
     %%   ,      
      
        
        
        
      
     ,       admin@domain %% 
      
        
        
        
      
     {watchdog_admins, ["admin@domain"]}. 
      
        
        
        
      
     %%  ,    ejabberd,       
      
        
        
        
      
     cartman.           hostname %% 
      
        
        
        
      
     {hosts, ["cartman"]}. 
      
        
        
        
      
     {listen, 
      
        
        
        
      
     [ 
      
        
        
        
      
     %%       %% 
      
        
        
        
      
     {5222, ejabberd_c2s, [ 
      
        
        
        
      
     {access, c2s}, 
      
        
        
        
      
     {shaper, c2s_shaper}, 
      
        
        
        
      
     {max_stanza_size, 65536} 
      
        
        
        
      
     ]}, 
      
        
        
        
      
     %%      ,     . SSL %% 
      
        
        
        
      
     {5223, ejabberd_c2s, [ 
      
        
        
        
      
     {access, c2s}, 
      
        
        
        
      
     {shaper, c2s_shaper}, 
      
        
        
        
      
     %%    ,     %% 
      
        
        
        
      
     {certfile, "/etc/ejabberd/cert/ejabberd.pem"}, tls, 
      
        
        
        
      
     {max_stanza_size, 65536} 
      
        
        
        
      
     ]}, 
      
        
        
        
      
     %%      jabber  %% 
      
        
        
        
      
     {5269, ejabberd_s2s_in, [ 
      
        
        
        
      
     {shaper, s2s_shaper}, 
      
        
        
        
      
     {max_stanza_size, 131072} 
      
        
        
        
      
     ]}, 
      
        
        
        
      
     %%       ,     pyucq-t %% 
      
        
        
        
      
     {8888, ejabberd_service, [ 
      
        
        
        
      
     {access, all}, 
      
        
        
        
      
     {shaper_rule, fast}, 
      
        
        
        
      
     {ip, {127, 0, 0, 1}}, 
      
        
        
        
      
     %%     %% 
      
        
        
        
      
     {hosts, ["icq.cartman"], 
      
        
        
        
      
     %% ,        pyicq-t %% 
      
        
        
        
      
     [{password, "123456"}]} 
      
        
        
        
      
     ]}, 
      
        
        
        
      
     
      
        
        
        
      
     %%    ejabberd,        %% 
      
        
        
        
      
     {5280, ejabberd_http, [ 
      
        
        
        
      
     http_poll, 
      
        
        
        
      
     web_admin 
      
        
        
        
      
     ]} 
      
        
        
        
      
     
      
        
        
        
      
     ]}. 
      
        
        
        
      
     
      
        
        
        
      
     %%    ldap %% 
      
        
        
        
      
     {auth_method, ldap}. 
      
        
        
        
      
     %%  ,     domain.local %% 
      
        
        
        
      
     {ldap_servers, ["domain.local"]}. 
      
        
        
        
      
     {ldap_uids, [{"sAMAccountName"}]}. 
      
        
        
        
      
     {ldap_base, "dc=domain,dc=local"}. 
      
        
        
        
      
     %%       ,      root,  ""  "" Users,   ldap (   ?) %% 
      
        
        
        
      
     {ldap_rootdn, "cn=root,cn=Users,dc=domain,dc=local"}. 
      
        
        
        
      
     %%   %% 
      
        
        
        
      
     {ldap_password, "123456"}. 
      
        
        
        
      
     %%    ,     jabber (  ) %% 
      
        
        
        
      
     {shaper, normal, {maxrate, 10000}}. 
      
        
        
        
      
     {shaper, fast, {maxrate, 500000}}. 
      
        
        
        
      
     %%  ,     admin %% 
      
        
        
        
      
     {acl, admin, {user, "admin", "cartman"}}. 
      
        
        
        
      
     %%   ,   %% 
      
        
        
        
      
     {acl, admin, {user, "admin2", "cartman"}}. 
      
        
        
        
      
     {acl, local, {user_regexp, ""}}. 
      
        
        
        
      
     {access, max_user_sessions, [{10, all}]}. 
      
        
        
        
      
     {access, local, [{allow, local}]}. 
      
        
        
        
      
     %%     ,       ,      jabber  %% 
      
        
        
        
      
     {access, c2s, [{deny, blocked}, 
      
        
        
        
      
     {allow, all}]}. 
      
        
        
        
      
     {access, c2s_shaper, [{none, admin}, 
      
        
        
        
      
     {normal, all}]}. 
      
        
        
        
      
     {access, s2s_shaper, [{fast, all}]}. 
      
        
        
        
      
     {access, announce, [{allow, admin}]}. 
      
        
        
        
      
     {access, configure, [{allow, admin}]}. 
      
        
        
        
      
     {access, muc_admin, [{allow, admin}]}. 
      
        
        
        
      
     {access, muc, [{allow, all}]}. 
      
        
        
        
      
     {access, pubsub_createnode, [{allow, all}]}. 
      
        
        
        
      
     %%  ,       AD %% 
      
        
        
        
      
     {access, register, [{deny, all}]}. 
      
        
        
        
      
     
      
        
        
        
      
     {language, "ru"}. 
      
        
        
        
      
     
      
        
        
        
      
     {modules, 
      
        
        
        
      
     [ 
      
        
        
        
      
     {mod_adhoc, []}, 
      
        
        
        
      
     {mod_announce, [{access, announce}]}, % recommends mod_adhoc 
      
        
        
        
      
     {mod_caps, []}, 
      
        
        
        
      
     {mod_configure,[]}, % requires mod_adhoc 
      
        
        
        
      
     {mod_disco, []}, 
      
        
        
        
      
     {mod_echo, [{host, "echo.localhost"}]}, 
      
        
        
        
      
     {mod_last, []}, 
      
        
        
        
      
     {mod_muc, [ 
      
        
        
        
      
     {access, muc}, 
      
        
        
        
      
     {access_create, muc}, 
      
        
        
        
      
     {access_persistent, muc}, 
      
        
        
        
      
     {access_admin, muc_admin} 
      
        
        
        
      
     ]}, 
      
        
        
        
      
     %%   ,      ,   ,   . %% 
      
        
        
        
      
     {mod_muc_log, [ 
      
        
        
        
      
     {access, muc}, 
      
        
        
        
      
     {access_create, muc}, 
      
        
        
        
      
     {access_admin, muc_admin}, 
      
        
        
        
      
     {access_log, muc}, 
      
        
        
        
      
     {outdir, "/var/log/muc_log"}, 
      
        
        
        
      
     {top_link, {"http://cartman/", "JABBER SERVER"}} 
      
        
        
        
      
     ]}, 
      
        
        
        
      
     {mod_offline, []}, 
      
        
        
        
      
     {mod_privacy, []}, 
      
        
        
        
      
     {mod_private, []}, 
      
        
        
        
      
     {mod_pubsub, [ % requires mod_caps 
      
        
        
        
      
     {access_createnode, pubsub_createnode}, 
      
        
        
        
      
     {plugins, ["default", "pep"]} 
      
        
        
        
      
     ]}, 
      
        
        
        
      
     {mod_register, [ 
      
        
        
        
      
     {welcome_message, {"Welcome", 
      
        
        
        
      
     "Hi! Welcome to this Jabber server."}}, 
      
        
        
        
      
     %%  ,     ,   ,   ,     ,        . %% 
      
        
        
        
      
     {registration_watchers, ["admin@cartman"]}, 
      
        
        
        
      
     {access, register} 
      
        
        
        
      
     ]}, 
      
        
        
        
      
     {mod_roster, []}, 
      
        
        
        
      
     {mod_stats, []}, 
      
        
        
        
      
     {mod_time, []}, 
      
        
        
        
      
     %%    vcard  AD,         %% 
      
        
        
        
      
     {mod_vcard_ldap, 
      
        
        
        
      
     [{host, "users.cartman"}, 
      
        
        
        
      
     {ldap_vcard_map, 
      
        
        
        
      
     [{"NICKNAME", "%u", []}, 
      
        
        
        
      
     {"GIVEN", "%s", ["givenName"]}, 
      
        
        
        
      
     {"MIDDLE", "%s", ["initials"]}, 
      
        
        
        
      
     {"FAMILY", "%s", ["sn"]}, 
      
        
        
        
      
     {"FN", "%s", ["displayName"]}, 
      
        
        
        
      
     {"EMAIL", "%s", ["mail"]}, 
      
        
        
        
      
     {"ORGNAME", "%s", ["company"]}, 
      
        
        
        
      
     {"ORGUNIT", "%s", ["department"]}, 
      
        
        
        
      
     {"CTRY", "%s", ["c"]}, 
      
        
        
        
      
     {"LOCALITY", "%s", ["l"]}, 
      
        
        
        
      
     {"STREET", "%s", ["streetAddress"]}, 
      
        
        
        
      
     {"REGION", "%s", ["st"]}, 
      
        
        
        
      
     {"PCODE", "%s", ["postalCode"]}, 
      
        
        
        
      
     {"TITLE", "%s", ["title"]}, 
      
        
        
        
      
     {"URL", "%s", ["wWWHomePage"]}, 
      
        
        
        
      
     {"DESC", "%s", ["description"]}, 
      
        
        
        
      
     {"TEL", "%s", ["telephoneNumber"]}]}, 
      
        
        
        
      
     {ldap_search_fields, 
      
        
        
        
      
     [{"User", "%u"}, 
      
        
        
        
      
     {"Name", "givenName"}, 
      
        
        
        
      
     {"Family Name", "sn"}, 
      
        
        
        
      
     {"Email", "mail"}, 
      
        
        
        
      
     {"Phone", "telephoneNumber"} 
      
        
        
        
      
     ]}, 
      
        
        
        
      
     {ldap_search_reported, 
      
        
        
        
      
     [{"Full Name", "FN"}, 
      
        
        
        
      
     {"Nickname", "NICKNAME"}, 
      
        
        
        
      
     {"Email", "EMAIL"}]} 
      
        
        
        
      
     ]}, 
      
        
        
        
      
     %%  shared_roster.        department,     AD %% 
      
        
        
        
      
     {mod_shared_roster_ldap, 
      
        
        
        
      
     [{ldap_groupattr,"department"}, 
      
        
        
        
      
     {ldap_groupdesc,"department"}, 
      
        
        
        
      
     %%        ,       ,    AD  JabberUsers,    "" Users.     ,      JabberUsers %% 
      
        
        
        
      
     {ldap_rfilter, "(&(memberOf=CN=JabberUsers,CN=Users,DC=klondike,DC=local) (|(userAccountControl=66050)(userAccountControl=66048)))"}, 
      
        
        
        
      
     {ldap_memberattr,"sAMAccountName"}, 
      
        
        
        
      
     {ldap_userdesc,"cn"} 
      
        
        
        
      
     ] 
      
        
        
        
      
     }, 
      
        
        
        
      
     {mod_version, []} 
      
        
        
        
      
     ]}. 
      
        
        
        
      
    
      
      トレーラーにはすべて準備が整っています。SSL証明書を追加しましょう(bamが便利です)
mkdir /etc/ejabberd/cert 
      
        
        
        
      
     cd /etc/ejabberd/cert 
      
        
        
        
      
     openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem 
      
        
        
        
      
     openssl rsa -in privkey.pem -out privkey.pem 
      
        
        
        
      
     cat privkey.pem >> ejabberd.pem 
      
        
        
        
      
     rm privkey.pem 
      
        
        
        
      
    
      
      pyicq-tをインストールして構成する
snv || svc || gitからそれを収集することはありません。それは、gentooで利用可能になり、かなり機能しているからです(主に、USE =“ webinterface”を含めることを忘れないでください。
user$ sudo emerge net-im/pyicq-t 
      
        
        
        
      
    
      
      ** / etc / jabber / pyicq-t.xmlにある彼の(彼女の)congfigによって、すべてがさらに修正されています。
<pyicqt> 
      
        
        
        
      
     <jid>icq.cartman</jid> 
      
        
        
        
      
     <spooldir>/var/spool/jabber</spooldir> 
      
        
        
        
      
     <pid>/var/run/jabber/pyicq-t.pid</pid> 
      
        
        
        
      
     <mainServer>127.0.0.1</mainServer> 
      
        
        
        
      
     <mainServerJID>cartman</mainServerJID> 
      
        
        
        
      
     <website>http://cartman/</website> 
      
        
        
        
      
     <supportJid>admin@cartman</supportJid> 
      
        
        
        
      
     <port>8888</port> 
      
        
        
        
      
     <webport>12345</webport> 
      
        
        
        
      
     <secret>123456</secret> 
      
        
        
        
      
     <lang>ru</lang> 
      
        
        
        
      
     <encoding>cp-1251</encoding> 
      
        
        
        
      
     <icqServer>login.icq.com</icqServer> 
      
        
        
        
      
     <icqPort>5190</icqPort> 
      
        
        
        
      
     <usemd5auth/> 
      
        
        
        
      
     <sessionGreeting>Welcome to icq gate of Cartman server</sessionGreeting> 
      
        
        
        
      
     <enableShutdownMessage/> 
      
        
        
        
      
     <customShutdownMessage>Sorry but icq gete will be shutdown.</customShutdownMessage> 
      
        
        
        
      
     <registerMessage>You have succsefull registed</registerMessage> 
      
        
        
        
      
     <crossChat/> 
      
        
        
        
      
     <enableAutoInvite/> 
      
        
        
        
      
     <xstatusessupport/> 
      
        
        
        
      
     <detectunicode>1</detectunicode> 
      
        
        
        
      
     <admins> 
      
        
        
        
      
     <jid>admin@cartman</jid> 
      
        
        
        
      
     </admins> 
      
        
        
        
      
     <reactor>epoll</reactor> 
      
        
        
        
      
     <!--<xdbDriver>xmlfiles</xdbDriver>--> 
      
        
        
        
      
     <xdbDriver>mysql</xdbDriver> 
      
        
        
        
      
     <xdbDriver_mysql> 
      
        
        
        
      
     <username>pyicqt</username> 
      
        
        
        
      
     <password>12345678</password> 
      
        
        
        
      
     <database>pyicqt</database> 
      
        
        
        
      
     <server>localhost</server> 
      
        
        
        
      
     <format>encrypted</format> 
      
        
        
        
      
     </xdbDriver_mysql> 
      
        
        
        
      
     <avatarsOnlyOnChat/> 
      
        
        
        
      
     </pyicqt> 
      
        
        
        
      
    
      
      私はおそらくそれについてコメントしないでしょう、設定自体のコメントはすでに非常に
良い、私が気づく唯一のことは8888です
私たちがいる方法で、ジャバーにねじ込まれているポート
彼らはjabber設定を登録しました。123456はjabberへのゲートアクセスのパスワードです。* .xmlファイルから情報のストレージを削除し、MySQLに転送します。以下にその方法を示します。
MySQLのインストール方法と起動方法、およびユーザーとデータベースの作成方法については説明しません。 一般に、MySQLは既にpyicqtデータベースで動作しており、pyicqtユーザーの完全な権限があり、パスワード12345678を使用してログインできます。次に、gentuvodsの場合は、/ usr / lib / python2.5 / site-packages / pyicq-フォルダーに移動しますt / tools /そして、次のことを行います
user$ mysql -u pyicqt -D pyicqt -p 
      
        
        
        
      
     mysql> \. db-setup.mysql 
      
        
        
        
      
    
      
      さて、これをすべて実行してみましょうか? 最初にejabberdを起動することにより、ejabberdctlを介して実行し、すぐにpyicq-tを実行します
user$ sudo ejabberdctl start 
      
        
        
        
      
     user$ sudo /etc/init.d/pyicq-t start 
      
        
        
        
      
    
      
      そして、jabberログを調べ始めます。
user$ sudo tail -F /var/log/ejabberd/ejabberd.log 
      
        
        
        
      
    
      
      そうでない場合、いくつかの恐ろしい恐怖は発生しません-すべての話題。 クライアントの構成を開始します。
クライアントの構成とインストール
原則として、私は多くのグースクライアントを感じました(私自身は長い間mcabberを使用しています)、そして
Windows XPを搭載したクライアントマシンでは、
PSIはより進化しており、PSIは
JabberクライアントとSparkは、MSIパッケージを持つ唯一のクライアントです。 どっち
あなたは自分で決定し、賭けます。私は、HELLの政治家を通じて、私がそれらをどのように置くかを個人的に示します。
PSI
原則として、これは良くありません。設定を中断するためにPythonを使用しました
クライアントマシン上にあるため、それぞれにインストールする必要があります
(これは簡単に行われます-彼はMSIパッケージを持っているので、ADを介して強打します)。 次に、自分でPSIを設定し、アカウントを追加して、すべてがどのように機能するか、グループがどのように表示されるか、オフラインユーザーがハングする方法を確認し、PSIを設定します。 完了したら、閉じます。 * C:\ Documents and Settings \%USERNAME%\ PsiData \ profiles \ default \ accounts.xmlに移動して編集し、行admin @ cartman (最後のどこか)を探します(adminは、ジャバーを入力したアカウントです、およびADのアカウント)で管理者をQWERTYUIOPに置き換え、保存して、それをaccounts_oldに名前変更します 。 次のステップは、全員の読み取り権限でボールを作成することです。 \\ server4 \ psi_installを持ち 、 C:\ Documents and Settings \%USERNAME%\ PsiDataおよびC:\ Program Files \ Psiを ドロップするとします (読み取り権限が必要です)すべてである)。 \\ server4 \ psi_install \ PsiData \ profiles \ defaultに 移動し、そこにpsi_settings.pyという名前のPythonスクリプトをコピーします 。
-  #!/usr/env/bin python
 
 # -*- coding: utf-8 -*-
 
 import os
 
 import re
 
 import sys
 
 username = os.getenv('USERNAME')
 
 find_accountname = re.compile('^\s{0,3}<jid type="QString" >(.+)@cartman</jid>$')
 
 change_username = re.compile('QWERTYUIOP')
 
 fr = open('accounts_old', 'r')
 
 fw = open('accounts.xml', 'w+')
 
 for i in fr.readlines():
 
 if find_accountname.search(i):
 
 i = change_username.sub(username, i)
 
 fw.write(i)
 
 fr.close()
 
 fw.close()
 
 
 
 
-  #!/usr/env/bin python
 
 # -*- coding: utf-8 -*-
 
 import os
 
 import re
 
 import sys
 
 username = os.getenv('USERNAME')
 
 find_accountname = re.compile('^\s{0,3}<jid type="QString" >(.+)@cartman</jid>$')
 
 change_username = re.compile('QWERTYUIOP')
 
 fr = open('accounts_old', 'r')
 
 fw = open('accounts.xml', 'w+')
 
 for i in fr.readlines():
 
 if find_accountname.search(i):
 
 i = change_username.sub(username, i)
 
 fw.write(i)
 
 fr.close()
 
 fw.close()
 
 
 
 
-  #!/usr/env/bin python
 
 # -*- coding: utf-8 -*-
 
 import os
 
 import re
 
 import sys
 
 username = os.getenv('USERNAME')
 
 find_accountname = re.compile('^\s{0,3}<jid type="QString" >(.+)@cartman</jid>$')
 
 change_username = re.compile('QWERTYUIOP')
 
 fr = open('accounts_old', 'r')
 
 fw = open('accounts.xml', 'w+')
 
 for i in fr.readlines():
 
 if find_accountname.search(i):
 
 i = change_username.sub(username, i)
 
 fw.write(i)
 
 fr.close()
 
 fw.close()
 
 
 
 
-  #!/usr/env/bin python
 
 # -*- coding: utf-8 -*-
 
 import os
 
 import re
 
 import sys
 
 username = os.getenv('USERNAME')
 
 find_accountname = re.compile('^\s{0,3}<jid type="QString" >(.+)@cartman</jid>$')
 
 change_username = re.compile('QWERTYUIOP')
 
 fr = open('accounts_old', 'r')
 
 fw = open('accounts.xml', 'w+')
 
 for i in fr.readlines():
 
 if find_accountname.search(i):
 
 i = change_username.sub(username, i)
 
 fw.write(i)
 
 fr.close()
 
 fw.close()
 
 
 
 
-  #!/usr/env/bin python
 
 # -*- coding: utf-8 -*-
 
 import os
 
 import re
 
 import sys
 
 username = os.getenv('USERNAME')
 
 find_accountname = re.compile('^\s{0,3}<jid type="QString" >(.+)@cartman</jid>$')
 
 change_username = re.compile('QWERTYUIOP')
 
 fr = open('accounts_old', 'r')
 
 fw = open('accounts.xml', 'w+')
 
 for i in fr.readlines():
 
 if find_accountname.search(i):
 
 i = change_username.sub(username, i)
 
 fw.write(i)
 
 fr.close()
 
 fw.close()
 
 
 
 
-  #!/usr/env/bin python
 
 # -*- coding: utf-8 -*-
 
 import os
 
 import re
 
 import sys
 
 username = os.getenv('USERNAME')
 
 find_accountname = re.compile('^\s{0,3}<jid type="QString" >(.+)@cartman</jid>$')
 
 change_username = re.compile('QWERTYUIOP')
 
 fr = open('accounts_old', 'r')
 
 fw = open('accounts.xml', 'w+')
 
 for i in fr.readlines():
 
 if find_accountname.search(i):
 
 i = change_username.sub(username, i)
 
 fw.write(i)
 
 fr.close()
 
 fw.close()
 
 
 
 
-  #!/usr/env/bin python
 
 # -*- coding: utf-8 -*-
 
 import os
 
 import re
 
 import sys
 
 username = os.getenv('USERNAME')
 
 find_accountname = re.compile('^\s{0,3}<jid type="QString" >(.+)@cartman</jid>$')
 
 change_username = re.compile('QWERTYUIOP')
 
 fr = open('accounts_old', 'r')
 
 fw = open('accounts.xml', 'w+')
 
 for i in fr.readlines():
 
 if find_accountname.search(i):
 
 i = change_username.sub(username, i)
 
 fw.write(i)
 
 fr.close()
 
 fw.close()
 
 
 
 
-  #!/usr/env/bin python
 
 # -*- coding: utf-8 -*-
 
 import os
 
 import re
 
 import sys
 
 username = os.getenv('USERNAME')
 
 find_accountname = re.compile('^\s{0,3}<jid type="QString" >(.+)@cartman</jid>$')
 
 change_username = re.compile('QWERTYUIOP')
 
 fr = open('accounts_old', 'r')
 
 fw = open('accounts.xml', 'w+')
 
 for i in fr.readlines():
 
 if find_accountname.search(i):
 
 i = change_username.sub(username, i)
 
 fw.write(i)
 
 fr.close()
 
 fw.close()
 
 
 
 
-  #!/usr/env/bin python
 
 # -*- coding: utf-8 -*-
 
 import os
 
 import re
 
 import sys
 
 username = os.getenv('USERNAME')
 
 find_accountname = re.compile('^\s{0,3}<jid type="QString" >(.+)@cartman</jid>$')
 
 change_username = re.compile('QWERTYUIOP')
 
 fr = open('accounts_old', 'r')
 
 fw = open('accounts.xml', 'w+')
 
 for i in fr.readlines():
 
 if find_accountname.search(i):
 
 i = change_username.sub(username, i)
 
 fw.write(i)
 
 fr.close()
 
 fw.close()
 
 
 
 
-  #!/usr/env/bin python
 
 # -*- coding: utf-8 -*-
 
 import os
 
 import re
 
 import sys
 
 username = os.getenv('USERNAME')
 
 find_accountname = re.compile('^\s{0,3}<jid type="QString" >(.+)@cartman</jid>$')
 
 change_username = re.compile('QWERTYUIOP')
 
 fr = open('accounts_old', 'r')
 
 fw = open('accounts.xml', 'w+')
 
 for i in fr.readlines():
 
 if find_accountname.search(i):
 
 i = change_username.sub(username, i)
 
 fw.write(i)
 
 fr.close()
 
 fw.close()
 
 
 
 
-  #!/usr/env/bin python
 
 # -*- coding: utf-8 -*-
 
 import os
 
 import re
 
 import sys
 
 username = os.getenv('USERNAME')
 
 find_accountname = re.compile('^\s{0,3}<jid type="QString" >(.+)@cartman</jid>$')
 
 change_username = re.compile('QWERTYUIOP')
 
 fr = open('accounts_old', 'r')
 
 fw = open('accounts.xml', 'w+')
 
 for i in fr.readlines():
 
 if find_accountname.search(i):
 
 i = change_username.sub(username, i)
 
 fw.write(i)
 
 fr.close()
 
 fw.close()
 
 
 
 
-  #!/usr/env/bin python
 
 # -*- coding: utf-8 -*-
 
 import os
 
 import re
 
 import sys
 
 username = os.getenv('USERNAME')
 
 find_accountname = re.compile('^\s{0,3}<jid type="QString" >(.+)@cartman</jid>$')
 
 change_username = re.compile('QWERTYUIOP')
 
 fr = open('accounts_old', 'r')
 
 fw = open('accounts.xml', 'w+')
 
 for i in fr.readlines():
 
 if find_accountname.search(i):
 
 i = change_username.sub(username, i)
 
 fw.write(i)
 
 fr.close()
 
 fw.close()
 
 
 
 
-  #!/usr/env/bin python
 
 # -*- coding: utf-8 -*-
 
 import os
 
 import re
 
 import sys
 
 username = os.getenv('USERNAME')
 
 find_accountname = re.compile('^\s{0,3}<jid type="QString" >(.+)@cartman</jid>$')
 
 change_username = re.compile('QWERTYUIOP')
 
 fr = open('accounts_old', 'r')
 
 fw = open('accounts.xml', 'w+')
 
 for i in fr.readlines():
 
 if find_accountname.search(i):
 
 i = change_username.sub(username, i)
 
 fw.write(i)
 
 fr.close()
 
 fw.close()
 
 
 
 
-  #!/usr/env/bin python
 
 # -*- coding: utf-8 -*-
 
 import os
 
 import re
 
 import sys
 
 username = os.getenv('USERNAME')
 
 find_accountname = re.compile('^\s{0,3}<jid type="QString" >(.+)@cartman</jid>$')
 
 change_username = re.compile('QWERTYUIOP')
 
 fr = open('accounts_old', 'r')
 
 fw = open('accounts.xml', 'w+')
 
 for i in fr.readlines():
 
 if find_accountname.search(i):
 
 i = change_username.sub(username, i)
 
 fw.write(i)
 
 fr.close()
 
 fw.close()
 
 
 
 
-  #!/usr/env/bin python
 
 # -*- coding: utf-8 -*-
 
 import os
 
 import re
 
 import sys
 
 username = os.getenv('USERNAME')
 
 find_accountname = re.compile('^\s{0,3}<jid type="QString" >(.+)@cartman</jid>$')
 
 change_username = re.compile('QWERTYUIOP')
 
 fr = open('accounts_old', 'r')
 
 fw = open('accounts.xml', 'w+')
 
 for i in fr.readlines():
 
 if find_accountname.search(i):
 
 i = change_username.sub(username, i)
 
 fw.write(i)
 
 fr.close()
 
 fw.close()
 
 
 
 
-  #!/usr/env/bin python
 
 # -*- coding: utf-8 -*-
 
 import os
 
 import re
 
 import sys
 
 username = os.getenv('USERNAME')
 
 find_accountname = re.compile('^\s{0,3}<jid type="QString" >(.+)@cartman</jid>$')
 
 change_username = re.compile('QWERTYUIOP')
 
 fr = open('accounts_old', 'r')
 
 fw = open('accounts.xml', 'w+')
 
 for i in fr.readlines():
 
 if find_accountname.search(i):
 
 i = change_username.sub(username, i)
 
 fw.write(i)
 
 fr.close()
 
 fw.close()
 
 
 
 
スクリプトは悲惨で、急いで書いた
そのため、ほとんどのユーザーは限られた権限で作業するため、 C:\ Documents and Settings \%USERNAME%*のディレクトリからPSIを起動することにしました。 [グループポリシー]-> [ユーザーの構成]-> [Windowsの構成]-> [スクリプト(ログイン/ログアウト)]のスナップインに進み、[システムへのログイン]を選択します。 [ファイルの表示]をクリックし、* copy_psi.cmdというファイルを作成して、内容を変更します。
@Echo off 
      
        
        
        
      
     IF EXIST "C:\Python25\python.exe" ( 
      
        
        
        
      
     IF NOT EXIST "C:\Documents and Settings\%USERNAME%\Psi\psi.exe" ( 
      
        
        
        
      
     xcopy \dc\Soft\ezotrank\psi_ad\* "C:\Documents and Settings\%USERNAME%" /E /C 
      
        
        
        
      
     cd "C:\Documents and Settings\%USERNAME%\PsiData\profiles\default" 
      
        
        
        
      
     python psi_settings.py 
      
        
        
        
      
     reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v psi_run /d "C:\Documents and Settings\%USERNAME%\Psi\psi.exe" 
      
        
        
        
      
     ) 
      
        
        
        
      
     ) 
      
        
        
        
      
    
      
      さて、これで終わりです。GPに追加して、喫煙しましょう。
スパーク
すぐに気に入らなかったのは、RAMを非常に愛するJavaで書かれていることですが、市場の企業セグメントを対象としており、おそらくOpenFire(原則として、これと一部の人々の発案)、特に有料版で非常にうまく機能します。 私が一番気に入ったのは、スクリーンショット付きの組み込み機能です。 通常、 sparkを使用してダウンロードし、ADを使用して設定するのは簡単です。
いくつかのメモ:
ハリネズミのウェブフェイスはcartmanに配置されます :5280 /管理者ログイン
パスワードは、ejabberd.cfgに登録したadminです。つまり、admin @ cartmanです。
Webマズルpyicq-t cartman :12345