Openfire + Miranda NG。 ワンクリックのリモートアシスタンスといくつかの追加機能









この記事は、Mirandaを使用して、ユーザーサポートのための通常のタスクを簡素化する方法に関するいくつかの古いノートのリメイクです。 この記事では、パススルー認証を使用してLinuxにOpenfireをインストールする1001番目の方法については説明しませんが、その機能について説明します。



?replace(?dbsetting(%subject%,?cinfo(%subject%,protocol),MirVer),Miranda NG Jabber 0.95.5.17337 x86 [,,],)
      
      





そして、このガベージを使用して、たとえば、同じVNCまたはradminを使用して、ユーザーとの会話ウィンドウで目的のアイコンをクリックするだけで、ユーザーデスクトップにリモートアクセスする方法。



初期データ: Debian 7、Openfire 4.1.3、Miranda NG 0.95.5。



この例の目標は、Mirandaインターフェースから直接適切なユーザーに接続して、リモートアシスタント(msra)を自動的に起動することです。 すぐにアクセスするためのすべての資格情報を予約します。必要に応じて、追加で入力する必要があります。 これらのトリックは安全性に影響しません。



そのため、OpenfireはすでにDebianで設定されており、Miranda NGは、「ドメインログイン」の突入やレジストリの調整なしで、すぐに資格情報を入力することなくサーバーに固執します。 コンピューター名をリソースとして使用することも示されています。 Mirandaをストックして、特定の「管理者」機能で仕上げる必要があります。 簡略化するために、アセンブリをadminおよびuserと呼びます。 他のものがカスタムとして適切であるという事実にあなたの注意を引きます。 主なことは、MirVerフィールドのどこかに「リソース」フィールドがあり、コンピューター名がリソースとして機能する必要があることですが、それについては以下で詳しく説明します。 リモートアシスタンスは既に機能しているはずです。 繰り返しますが、私たちの場合のミランダは、単なる便利なアドオンです。



次のようになります。




まず、現在の(0.95.5を書いている時点で) 安定したMiranda NGと、 必要なプラグインである ActmanとVariablesをダウンロードします。 これらは最低限必要なものですが、私の集会では、一緒に楽しく過ごせる他のいくつかを紹介します。 プラグインをPluginsフォルダーに入れ、Mirandaを再起動して、ポイントごとに実行します。



1)Miranda内でカスタムアクションを操作するためのメインウィンドウは、 設定→サービス→アクション→アクションです。 緑色のプラス記号で新しいスクリプト(名前を変更するためのF2)を作成し、下部で「実行」アクションを追加します(右上で選択します)。



アクションウィンドウ




2)リモートアシスタントを開始するには、 msra / offerra computer_nameを実行します 。 "Run" deystivaには、パスと引数の2つのフィールドが含まれています。 最初は標準的な方法です。



 %SystemRoot%\system32\msra.exe
      
      





2番目では、特定のユーザーのMirVerフィールドから解析されたキャンプの名前を最後の引数として渡して、指定されたステーションにすぐに接続することを示す必要があります。 現在のミランダNGでは、「MirVer」が値を取ります。



 Miranda NG Jabber 0.95.5.17337 x86 []
      
      





そして、コンピューターの名前がリソースとして機能することに同意しました。 以下、例として、リソースはWS01になります。 2番目のフィールドはスクリプト(Sボタン、上の画面を参照)としてマークする必要があります。そうしないと、変数の魔法が機能しません。



3)[設定]-[ サービス ] [ 変数]→青いVボタンから 、または[アクション]ダイアログから直接[S / T]ボタンを押して、同じVアイコンから変数のヘルプを表示できます。



連絡先プロパティでは、MirVer値はMiranda NG Jabber 0.95.5.17337 x86 [WS01]のようになります。 ポイントは 、 " Miranda NG Jabber 0.95.5.17337 x86 [ " and " ] "の出現箇所を見つけ、それらを空の文字列に置き換えて、出力でWS01のみを取得することです。 コマンドラインパラメーターと名前の検索のコード:



 /offerra ?replace(?dbsetting(%subject%,?cinfo(%subject%,protocol),MirVer),Miranda NG Jabber 0.95.5.17337 x86 [,,],)
      
      





S | Tボタンを押すと、改行が許可されている「テキストエディタ」に移動し、結果が1行に書き込まれることに注意してください。 必要なところと必要でないところのギャップを忘れないでください。



テキストエディター




?replace(x、y、z、...) -X内のすべてのYをZに置き換えます。複数の引数YおよびZが可能です。



ここではすべてが明確です。 上記のいくつかの必須エントリをMirVerで探して、「空」に変更しています。 しかし、正しい連絡先MirVerを取得する方法は? それは私たちを助けるでしょう:



?dbsettings(x、y、z、w) -連絡先XのプラグインYの設定Zを取得するか、zが存在しない場合はWを返します(wはオプション)。



ええ、それは良いですが、それは明確ではありません。 ここでは、特別な連絡先%subject%が助けになります。その説明は、「変数のヘルプ」ウィンドウの2番目のタブにあります。 したがって、連絡先を選択すると、marker%subject%がこの連絡先の値を取ります。 条件付きで、私たちはユーザーと通信し、%subject%にはこの特定の連絡先に関する情報があります。 Xの入手先は?Dbsettings()がわかりました。



次に、選択した連絡先からYのjabberプラグインの値を見つける必要があります(結局、jabberを使用して通信します)。



cinfo(x、y)は、連絡先Xの情報プロパティYです。ここでも、%subject%を取得し、そこからプロトコルプロパティを探します。これには、必要なMirVerフィールドを見つけることができるプロパティの値で、使用中の現在のプロトコルに関する情報が含まれます。 Yを得た



さて、 Z値を使用して、MirVerのみを表示することを示します。 Wは必要ありません。

それだけです。彼らはMiranda NG Jabber 0.95.5.17337 x86 [WS01]という値を取得しました。当然、各連絡先の角括弧内のキャンプの名前は異なります。



そして、見つかった排水溝で変更しますか? `om 'Miranda NG Jabber 0.95.5.17337 x86 [' to ' empty ' and '] change' empty 'to、つまり 不要なものを削除します。 出力は純粋なWS01でありmsra / offera WS01で置き換えられます



4)最後から2番目のステップは、 Tinctures→Services→Actions→Using Actionsに進み、リモートアシスタントボタンを表示する場所をマークすることです。 私の場合、これは、ユーザーと直接やり取りするための、および名簿の連絡先の右ボタン用のメッセージウィンドウ内のボタンのパネルです。



アクションを使用する




5)カスタムボタンの山では、自分の使い慣れたアイコンがあればリモートアシスタントを見つけやすくなるため、可愛さを引き締める必要があります。 設定→アイコン→アクション→登録済みアクション→アイコンのインポート 。 探しているアイコンを含むファイルを指定し、目的のアクションにドラッグします。 そして本当に便利です。

アクションのカスタムアイコン




UPD from: MagicExおよびAbyss777リソースが角括弧内にある場合、 MirVer操作できます。

@MagicExから長い
  strchr(!dbsetting(%subject%、?cinfo(%subject%、protocol)、jid)、@)、1))?substr(!dbsetting(%subject%、?cinfo(%subject%、protocol)、MirVer) 、?add(?strchr(!dbsetting(%subject%、?cinfo(%subject%、protocol)、MirVer)、[)、1)、?sub(?strchr(!dbsetting(%subject%、?cinfo(% subject%、protocol)、MirVer)、])、1)) 




@ Abyss777からの正規表現のショート
 ?regexp_substr( \[(.*)\],!dbsetting(%subject%,!cinfo(%subject%,protocol),MirVer),1)
      
      







リモートアシスタントはこれですべてです。動作を確認してください。 他のいくつかのユーティリティで練習できます。



リモートデスクトップ



 %SystemRoot%\system32\mstsc.exe /v:?replace(?dbsetting(%subject%,?cinfo(%subject%,protocol),MirVer),Miranda NG Jabber 0.95.5.17337 x86 [,,],)
      
      





コンピューター管理スナップ



 mmc.exe compmgmt.msc /computer=?replace(?dbsetting(%subject%,?cinfo(%subject%,protocol),MirVer),Miranda NG Jabber 0.95.5.17337 x86 [,,],)
      
      





UltraVNC



 C:\Program Files (x86)\uvnc bvba\UltraVnc\vncviewer.exe ?replace(!dbsetting(%subject%,?cinfo(%subject%,protocol),MirVer),Miranda NG Jabber 0.95.5.17337 x86 [,,],)
      
      





UltraVNCなどのサードパーティソフトウェアをシステムにインストールする必要があることを忘れないでください。






すべてがクールなようです。 しかし、クライアントが別のサブネット上にあり、実際に独自のDNSサフィックスを持っている場合はどうでしょうか? 目的のサブネットにゲートウェイにアクセスするという質問は残しておきますが、リソース名にDNSが含まれていないため、サフィックスを使用するのはより難しく、名前だけで別の都市のユーザーに到達することはできないため、FQDN全体が必要です。 幸いなことに、ActmanおよびVariablesプラグインを備えたMirandaは非常にクールであるため、解決策があります。 次に、簡単に説明します。便宜上、コードをフォーマットしました。



 ?puts(comp,?replace(?dbsetting(%subject%,?cinfo(%subject%,protocol),MirVer),Miranda NG Jabber 0.95.5.17337 x86 [,,],)) ?if(?stricmp(?dbsetting(%subject%,CList,Group),), ?puts(grp,.jup.com), ?if(?stricmp(?dbsetting(%subject%,CList,Group),), ?puts(grp,.mars.com), ?if(?stricmp(?dbsetting(%subject%,CList,Group),), ?puts(grp,.venus.com), ?puts(grp,.earth.com) ) ) ) ?insert(?get(comp),?get(grp),?len(?get(comp)))
      
      





ここでの一般的な意味は、ユーザーが存在する名簿グループに応じて適切なDNSサフィックスを追加することです。 この例では、ユーザーがこれらのグループのいずれにも属していない場合、Jupiter(.jup.com)、Mars(.mars.com)、Venus(.venus.com)、Earth(.earth.com)の3つのグループを使用します。 。



1)最初の行はコンピューター名の検索に使用されますが、唯一の違いはありますが、現在はを使用して、コンピューター名をcomp変数に書き込みます



?puts(x、y)
?puts(x、y)-YをXという名前の変数として保存します



 ?puts(comp,?replace(?dbsetting(%subject%,?cinfo(%subject%,protocol),MirVer),Miranda NG Jabber 0.95.5.17337 x86 [,,],))
      
      





2)ネストされた演算子を使用しますか?()グループへの対応を探している場合 、突然それらの1つのユーザー



?if(x、y、z)
?if(x、y、z)-Yを表示、XがTRUEの場合、それ以外の場合はZを表示



Stricmp()を使用して 、友人がJupiterから来たかどうか確認し、もしそうなら、その友人を使用しますか?Puts()で、 変数 "grp"を " .jup.com "に設定します



?stricmp(x、y)
?stricmp(x、y)-X = Yの場合はtrue、大文字と小文字を区別しない



 ?stricmp(?dbsetting(%subject%,CList,Group),),?puts(grp,.jup.com)
      
      





木星からではない場合、次の比較ブロックが実行され、類推により別のブロックが実行されます。 その結果、ユーザーが3つの希望する惑星で見つからない場合、デフォルトでは地球から来たと想定し、値.earth.comをgrp変数に割り当てます



3)最後の演算子?Insert()?Get() `sはコンピューター名とドメイン名を結び付け、最終的に目的のFQDNを取得します。



?挿入(x、y、z)?取得(x)
?insert(x、y、z)-ストリングXの位置ZにストリングYを挿入します

?get(x)は、Xという名前のputによって与えられる変数です



 ?insert(?get(comp),?get(grp),?len(?get(comp)))
      
      





?insert()-結果値を出力するためのハック(エコーなどは提供されないため)。



当然、ネストされたステートメントの数は、必要に応じて異なる場合があります。



ご覧のとおり、ミランダの変数アクションの助けを借りて、あらゆる種類のクールなことを行うことができ、機能は引数付きのアプリケーションの実行に限定されません。 必要に応じて、他の機能についても考慮します。 DbEditorPPデータベースのプラグインエディターを使用して、必要なプロトコル値などを検索するのが最も簡単です。 実際、このプラグインを使用して、Cinfo(x、y)に必要なプロパティを開きました。実際、このツールは複数回使用できます。






完成したユーザーアセンブリを、設定と追加のプラグインと共に投稿します。これにより、ミランダでの作業がより便利になります。 ストックMiranda NGにはプラグイン、顔文字、いくつかの小さなものだけが追加され、残りは設定で調整されるという事実に注目します。 純粋なミランダの最小限の変更に重点が置かれました。 ユーザーアセンブリは、よりカスタマイズされています。 ユーザーがしていないすべてのことを有効または無効にする必要があり、管理者アセンブリの有能な従業員がそれを自分で判断します。



UPD:コメントで要求された管理ビルド 。 ユーザーとの違い:

1)3つのプラグインを追加しました:ActMan、Variables、DbEditorPP

2)リモートアシスタンスを追加

3)プロファイルディレクトリの名前を変更し、ランチャーを削除しました



私は意図的に管理者アセンブリへのリンクを提供していません。 私はそれがオリジナルから非常に変更されており、すべてを一掃するのが面倒になるでしょう。 ユーザーバージョンに2、3のプラグインを追加し、例から2、3行をコピーアンドペーストするのが正しいでしょう。 しかし、必要に応じて、レイアウトを教えてください。






最後に、約束されたいくつかの機能



ミランダは、そのアーキテクチャにより、企業環境で使用すると更新が困難です。 更新はPluginUpdaterによって行われます。PluginUpdaterは、MirandaがインストールされているProgramFilesに何かを書き込む権限がありません。 ユーザーがインストールディレクトリへの書き込み権限を持っている場合のオプションは考慮されません。 その結果、Miranda NG自体が%ProgramFiles%に展開され、ユーザープロファイルがOrthodoxの忠実なApplicationData%にあるというスキームがあります。 すでに述べたように、設定は、ユーザープロファイルにありますが、カーネルとプラグインのバージョンに強く結び付けられているため、新しいビルドをロールオーバーしただけでは、すべてが壊れる可能性があります。 2つのオプションがあります。何も更新しないか、更新するが、ユーザーのMirandaプロファイルを再作成します。 両方のオプションが悪いです。 1つのケースでは、セキュリティが低下し、2つ目では、ユーザーが履歴を失います。これも失敗です。 そして、最初のものですべてが明確な場合は、更新について詳しく説明します。



私はInno SetupであるフルタイムのMirandaインストーラーを拒否し、自分のアセンブリをコピーするカスタムスクリプトを支持しました。 理由を説明します。 必要なソフトウェアはすべて、 LUPWPP )を介してWSUSを使用して展開されますが、ミランダの場合、特にテスト段階では、多くの場合、ユーザーのテストグループにアセンブリを更新する必要があり、設定のあるプロファイルはどのような場合でも古いままです。 あなたもそれを終える必要があります。 要するに、私はそれをもっと簡単にすることに決めました。 展開スクリプトはサーバー上のMirandaのバージョンを確認し、システムにインストールされているものよりも大きい場合、バカにして新しいものを書き込みます。 バージョンのiniファイルはMirandaNGCorpMod \ Profiles \ jabber \ profile_settings.iniにあります。 さらに、Mirandaを起動するカスタムランチャーはインストールディレクトリを検索し、ユーザーのプロファイルよりバージョンが新しい場合、プロファイルがクラッシュしてMirandaを起動します。 ミランダ自身は、設定されていないプロファイルでsetting-cln.iniを使用し、必要な設定で新しいプロファイルを作成します。 一般に、デフォルトと異なるすべての設定はsettings.iniによって行われ、Mirandaboot.iniがこれを言います。 次に、ランチャーはさらに数秒間待機し、新しいバージョンをプロファイルディレクトリに書き込みます(念のため、プラスは5秒単位で12回試行されます)。



展開スクリプトはmirandaディレクトリのに配置し、ランチャーはmiranda32.exeの隣のディレクトリに配置する必要があります



ユーザーアセンブリをAutoITにコピーするスクリプト:
 NoTrayIcon ;read current miranda version in ProgramFiles. If error - 0000 $MirCurVer = IniRead(@ProgramFilesDir & '\MirandaNGCorpMod\Profiles\jabber\profile_settings.ini','MirandaNGCorpMod','version','0000') ;read new miranda version in ScriptDir. If error - 0001 $MirNewVer = IniRead(@ScriptDir & '\MirandaNGCorpMod\Profiles\jabber\profile_settings.ini','MirandaNGCorpMod','version','0001') If $MirNewVer > $MirCurVer Then DirRemove(@ProgramFilesDir & '\MirandaNGCorpMod',1) Sleep(300) DirCopy(@ScriptDir & '\MirandaNGCorpMod',@ProgramFilesDir & '\MirandaNGCorpMod') FileCreateShortcut(@ProgramFilesDir & '\MirandaNGCorpMod\miranda_launch.exe',@DesktopCommonDir & '\MirandaNGCorpMod.lnk') FileCreateShortcut(@ProgramFilesDir & '\MirandaNGCorpMod\miranda_launch.exe',@StartupCommonDir & '\MirandaNGCorpMod.lnk') EndIf
      
      







ランチャーコード:
 #NoTrayIcon $sMirandaOptions = '' ;check for command line options for Miranda32.exe If $cmdline[0] > 0 Then For $i = 1 To $cmdline[0] Step 1 $sMirandaOptions = $sMirandaOptions & ' ' & $cmdline[$i] Next EndIf ;read current miranda version. If error - 0000 $MirCurVer = IniRead(@AppDataDir & '\MirandaNGCorpMod\jabber\profile_settings.ini','MirandaNGCorpMod','version','0000') ;read new miranda version. If error - 0001 $MirNewVer = IniRead(@ProgramFilesDir & '\MirandaNGCorpMod\Profiles\jabber\profile_settings.ini','MirandaNGCorpMod','version','0001') ;if exists version in AppData less than ProgramFiles version, remove MirandaNG profile If $MirNewVer > $MirCurVer Then DirRemove(@AppDataDir & '\MirandaNGCorpMod',1) Sleep(300) EndIf ;run miranda with command line parameters Run(@ScriptDir & '\miranda32.exe ' & $sMirandaOptions) Sleep(2000) ;whaiting for miranda creates default profile "jabber.dat". 12 retries, 5 seconds per step For $i = 1 To 12 Step 1 If FileExists(@AppDataDir & '\MirandaNGCorpMod\jabber\jabber.dat') Then ;copy current "profile_settings.ini" to new profile FileCopy(@ProgramFilesDir & '\MirandaNGCorpMod\Profiles\jabber\profile_settings.ini',@AppDataDir & '\MirandaNGCorpMod\jabber\profile_settings.ini') Exit EndIf Sleep(5000) Next
      
      







収集したバージョンが必要な場合は、教えてください。



アセンブリでは、起動時の自動接続を有効にする必要があります設定→ステータス→初期ステータス→ステータスプロファイル→ ステータスウィンドウで「オンライン」を示し、 LoginServerパラメータをジャバーサーバーに変更します。 これは、Mirandaの設定を使用するか、setting-cln.iniファイルを編集することで実行できます。 さて、ヒープの前に、開始時にスクリーンセーバーを変更または削除できます。






それはミランダについてのすべてですが、私はActiveDitectotyからのユーザーの写真留める方法のヒントをオンにするしかありません:



すべての一致はランダムです




予約をします。回路のバージョンはWin2008R2より低くありません。



1)thumbnailPhoto属性のレプリカをGCに含めます(オプションですが価値があります)

windowsitpro.com/active-directory/q-how-can-i-add-pictures-my-users-active-directory-ad

PS経由で同じリンク経由で追加することは可能ですが、不便です。PSをたたき、さらに進んでください:



2)AD www.codetwo.com/freeware/active-directory-photosに写真をアップロードするためのソフトウェアをダウンロードしてインストールします。無料でインストールできますが、ドメイン管理者権限で実行できます。



3)OpenFireコンソールで、パラメーターをスピンします。

ldap.override.avatar true



次のようにvCardのパラメーターを編集します。



 <PHOTO> <TYPE>image/jpeg</TYPE> <BINVAL>{thumbnailPhoto}</BINVAL> </PHOTO>
      
      





4)OpenFireとMirandaNGを再起動すると、すぐにアバターが表示されますが、ユーザーは少なくとも1回はジャバーに接続する必要があります。



さて、確かに。 この記事がお役に立てば幸いです。コメントをお待ちしています。



All Articles