sharepoint onlineアクセスモニター

10
Visual Studioで作成する SharePointアドイン開発 SharePoint Onlineアクセスモニター 2016年5月 SharePoint Onlineカスタマイズ

Upload: akihiro-ehara

Post on 15-Jan-2017

222 views

Category:

Software


0 download

TRANSCRIPT

Page 1: SharePoint Onlineアクセスモニター

Visual Studioで作成するSharePointアドイン開発

SharePointOnlineアクセスモニター

2016年5月

SharePoint Onlineカスタマイズ

Page 2: SharePoint Onlineアクセスモニター

今回のお題

SharePoint Onlineのアクセスをリアルタイムにモニターする

Page 3: SharePoint Onlineアクセスモニター

利用する仕組み

• プロバイダーホスト型• SignalR(Web Socket)でリアルタイム表示

• UserCustomActions

• すべてのページにJavascriptを埋め込める

• ログ収集用のJavaScriptを埋め込む

Page 4: SharePoint Onlineアクセスモニター

埋め込みスクリプト(function () {

this.send = function () {if (!SP.ClientContext) {

setTimeout(this.send, 100);return;

}var ctx = new SP.ClientContext.get_current();var website = ctx.get_web();var currentUser = website.get_currentUser();ctx.load(currentUser);ctx.executeQueryAsync(function () {

var uid = currentUser.get_email();var r = new XMLHttpRequest(); r.open('POST', '" + actionUrl +@"', true);r.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded' );r.send('title=' + encodeURIComponent(document.title) + '&url='+ encodeURIComponent( location.pathname +

location.search + location.hash) + '&user=' + uid );},function () {

var r = new XMLHttpRequest(); r.open('POST', '" + actionUrl +@"', true);r.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded' );r.send('title=' + encodeURIComponent(document.title) + '&url='+ encodeURIComponent( location.pathname +

location.search + location.hash) + '&user=');});

}setTimeout(this.send, 0);

})();

ログ収集用のWebサービスにタイトルとURLとメールアドレスを送信するJavascript

Page 5: SharePoint Onlineアクセスモニター

JavaScriptの埋め込みprivate void SetUserScript(ClientContext ctx, string script){

var userCustomActions = ctx.Site.UserCustomActions;

ctx.Load(userCustomActions);ctx.ExecuteQuery();var action = userCustomActions.Where(x => x.Title == userScriptName).FirstOrDefault();if (action == null){

action = userCustomActions.Add();action.Location = "ScriptLink";action.Title = userScriptName; ;

}action.ScriptBlock = script??"";action.Sequence = 1000;action.Update();ctx.ExecuteQuery();

//空の場合削除するif (string.IsNullOrWhiteSpace(script)){

action.DeleteObject();ctx.Load(action);ctx.ExecuteQuery();return;

}}

ctx.Site.UserCustomActionsに登録

Page 6: SharePoint Onlineアクセスモニター

ログ受信処理

public ActionResult Write(string user, string title, string url){

var hubContext = GlobalHost.ConnectionManager.GetHubContext<MonitorHub>();hubContext.Clients.All.update(new{

Timestamp = DateTime.Now,User = user,Title = title,Url = url,

});return new HttpStatusCodeResult(200);

}

今回はファイル等には保存せず、SignalRでブロードキャスト送信

Page 7: SharePoint Onlineアクセスモニター

ログ表示処理

$.connection.hub.start().done(function () {$("#connection-satus").text("接続済み");

});var myHub = $.connection.monitorHub;myHub.client.update = function (model) {

$("#messagelist tbody").prepend($('<tr class="msg2"><td colspan="3"><p class="ellipsis">' + model.Url + "</p></td></tr>"));

$("#messagelist tbody").prepend($('<tr class="msg1"><td><p class="ellipsis">‘+ model.Timestamp + '</p></td><td><p class="ellipsis">‘+ model.Title + '</p></td><td><p class="ellipsis">' + model.User + '</p></td></tr>'));

if ($("#messagelist tbody tr").length > 100) {$("#messagelist tbody tr:last-child").remove()$("#messagelist tbody tr:last-child").remove()

}};

SignalRで送信されたデータを画面に表示

Page 8: SharePoint Onlineアクセスモニター

できること/できないこと

•できること• 表示のタイミングでログするため、リストアイテム表示などSharePointの監査ログで収集できない項目もカバーできる

•できないこと• ファイルのプレビューはログ可能だが、ダウンロードや直接表示された場合はログはできない

• SharePointのJavaScriptをHackingすることである程度は対応できる

Page 9: SharePoint Onlineアクセスモニター

まとめ

• UserCustomActionsを使うとログ収集は簡単にできる

• SignalRなどの技術と組み合わせことでリアルタイムにモニターすることも可能

• SharePointのJavaScriptをHackingするとさらにいろいろでき可能性がある

• サンプルコード• https://github.com/akihiroe/SharePointAccessMonitor

Page 10: SharePoint Onlineアクセスモニター

http://www.proaxia-consulting.co.jp

Azure&SharePointアプリケーション開発についてのお問合せ[担当] [email protected]

SharePoint Onlineとファイルサーバーを統合するCloud Storage Lighthttps://www.cloudstoragelight.com

SharePoint 上のファイルをエクスプローラ感覚でサクサク操作するSharePointエクスプローラhttps://www.cloudstoragelight.com/sharepointexplorer/