みやみや

5月 062017
 

先日、SharePoint のビューにかけるフィルターで動的値を使えることを知りました。

[Me] と [Today] を使うことで、アクセスしたユーザーとアクセスした日をフィルターとして使えます。

こちらを使って、ノンプラミングで簡単な掲示板を作ってみようと思いました
※ノンプラミングは無理でした _(:3」∠)_

やりたい事(仕様)

  • タイトル、本文、添付ファイルに加えて、掲載期間を指定できる
  • 他人の作ったデーターは掲載期間外の時に閲覧不可
  • 自分の作ったデーターは掲載期間外でも閲覧可能

環境

  • サーバー環境
    • SharePoint Online
  • クライアント環境
    • Windows 10 Pro
    • PowerShell 5.1

用意したリスト

リスト名は 掲示板 にしました。

リストの作成方法は詳しく書きませんが、列の内部名を半角英数字で付けるために、下記表の「列の内部名」で一旦登録して、その後に「列名」に変更しています。

列の内部名 列名 種類 必須
body 本文 複数行テキスト
publish_date 公開日時 日付と時刻
limit_date 掲載期限 日付と時刻
  • 公開日時(publish_date)

  • 掲載期限(limit_date)

フィルターを作成する

フィルターは既存である「すべてのアイテム」を修正しました。

  • 表示
    1. タイトル
    2. 登録者
    3. 公開日時
    4. 掲載期限
  • 並び替え
    1. 公開日時、降順
    2. 掲載期限、昇順
  • フィルター

このフィルターで次を実現している(つもり)です。

(掲載期限 is null and 公開日時 <= 今日) or (掲載日時 >= 今日) or (登録者 = カレントユーザー)

[Today] の落とし穴

SharePoint をやっている人だと常識なのでしょうが、[Today] は日付しか比較してくれません。[Now] とかは用意されていないようです。なんてイケてないんですか… しぇあぽいんとさんツンツンしすぎですね。

このままだと、公開日時 2017/05/06 12:00 とした記事が 2017/05/06 になったら見れてしまいます! いや、いいんですが折角作ったのに悲しい。

そこでぐぐってみると、SharePoint Designer で CAML Query を変更している記事が多いので、そちらを倣って… SharePoint Designer は嫌いなので PowerShell でやることにしました。

[Today] を時間を見るように設定する

PowerShell を起動して下記を実行します

18 行目まではほぼおまじないです。

21 行目で既存のビュー「すべてのアイテム」を取ってきて、26 行目で IncludeTimeValue="True" を付け加えて時間も加える設定をしています。

結果

  • 登録者 2017/05/06 12:01 過ぎ

    登録者は全部データが見えている

  • 別ユーザー 2017/05/06 11:55

    別ユーザーからは 公開日時 ≦ 現在 ≦ 掲載期限 のデーターが見えてる
    #公開期限 12:00 のデーター(パターン2 とパターン6)が見える

  • 別ユーザー 2017/05/06 12:01 過ぎ

    別ユーザーからは 公開日時 ≦ 現在 ≦ 掲載期限 のデーターが見えてる
    #パターン2 とパターン6 のデーターが見えない

参考

4月 232017
 

作成したリストに追加した列情報を JSCOM (JavaScript Client Object Model) で取得するサンプル。

get_schemaXml で取得した情報である程度判る気がする。

4月 162017
 

しぇあぽいんとさんと仲良くなるために、まずは Windows では一番慣れている PowerShell を使って SharePoint Online へアクセスしてみたメモ。

CSOM (クライアント側オブジェクト モデル) を使って、リスト一覧を取得してみます。

環境

  • Windows 10 Pro
  • PowerShell 5.1

事前準備

SharePoint Online 用の SDK がインストールされていない時はインストールします。

サンプルコード

ユーザーが miyamiya@example.com、SharePoint Online の URL が https://<tenant>.sharepoint.com/sites/example と仮定してサンプルコード書く。

考察

一旦 Load で予約して、ExecuteQuery で実際に取得するのが慣れるのに時間がかかりそう。

参考

4月 162017
 

しぇあぽいんとさんと仲良くなるために、まずは Windows では一番慣れている PowerShell を使って SharePoint Online へアクセスしてみたメモ。

環境

  • Windows 10 Pro
  • PowerShell 5.1

事前準備

SharePoint Online 用の SDK をインストールします。

サンプルコード

ユーザーが miyamiya@example.com、SharePoint Online の URL が https://<tenant>.sharepoint.com/sites/example/SitePages/Home.aspx と仮定してサンプルコード書く。

考察

REST API を叩いて JSON を返すサンプルを参考にしましたが、別に REST API を叩きたいわけではなかったので、とりあえずアクセスした画面を HTML で保存するだけを行ってみました。

恐らくユーザー名とパスワードを使うのはあまり良くないのだろうけど、一般ユーザーではこの方法しかないんじゃないかな?と思っています。

参考

4月 152017
 

以前 Ruby を使って Gmail 経由でメール送信 というブログを書きましたが、今度は Windows で定期実行される処理(PowerShell)からレポートメールを送る必要があったのでメモ。

環境

  • Windows 10 Pro
  • PowerShell 5.1

サンプルコード

自分のメールアドレス(差出人)が miyamiya@example.com 、宛先のメールアドレスが misono@example.jp としてサンプルコードを書いてみる。ここでは miyamiya@example.com が Office 365 のアカウントとする。

参考

3月 222017
 

今回訳あって Symfony 1.4 を触ることになり、手元で Symfony 1.4 を勉強する環境を作りました。

少し手こずったのでメモを残します。

前提条件

  • Hyper-V に CentOS 7.3.1611 をセットアップ済み
  • SELinux は disabled
  • firewalld は停止済み
  • Apache, MariaDB は導入済み

yum で必要なパッケージをインストール

root ユーザーで作業を行います

pear で Symfony をインストール

root ユーザーで作業を行います

Symfony のセットアップ

一般ユーザー(ここでは hoge さん)で作業を行います。

frontend_dev.php で IP アドレスを指定されている部分をコメントアウトしました

Apache の設定

root ユーザーで作業を行います

dev.conf は次の記述にします

Apache に設定を反映させます

動作確認

  • http://<ゲスト OS の IP アドレス>:8080/index.php/

  • http://<ゲスト OS の IP アドレス>:8080/frontend_dev.php/

参考 URL

1月 092017
 

fail2ban とは、ログファイルを読み取り、不審なアクセスを行なった IP Address 特定し、当該 IP Address からのアクセスを自動的に一定時間(期間)拒否することができるソフトウェアです。

訳あって、すぐに sshd のポートを変更できないサーバーを任されていますが、Port 22 への攻撃が激しいため fail2ban を導入しました。

作業は全て root で行っていることを前提としています。

環境

  • CentOS 7.2

インストールと起動

fail2ban は EPEL (エンタープライズ Linux 用拡張パッケージ) リポジトリにありますので、まだ EPEL リポジトリを導入していない時は次のように導入します。

EPEL リポジトリの導入が済みましたら、早速 fail2ban のインストールと起動を行います。

これだけで導入は完了です。
続いて sshd の監視を行う設定を書いていきます。

設定

設定ファイルは /etc/fail2ban/jail.conf になりますが、直接触るのではなく、/etc/fail2ban/jail.local を作ることで設定をオーバーライドできるようです。

例えば、下記のような 2 行だけのファイルを作成し、/etc/fail2ban/jail.local として保存すると、sshd の監視を行うことができます。

つまり jail.local に書かれていない記述は jail.conf がデフォルト値として使われるようですので、jail.conf を参考に jail.local を作っていくことを考えればよいかと思います。

しかし、個人的には fail2ban のアップデートを行なった時に動作が変わることを極力防ぐことができるとも考えられるので、/etc/fail2ban/jail.conf をコピーして使っても良いと考えます。

設定の反映

daemon を再起動させます。

動作確認

現在の状態を確認するには次のコマンドで行います。

表示例

現在の ban リストの確認方法は次のコマンドで行います。

表示例

fail2ban-sshd という名前でまとめて、iptables で制御しているようです。

iptables にこのようなルールが追加されていました。

生ログをみてみます。

ban -> unban -> ban -> unban を延々と繰り返している IP Address があります。

このような攻撃への対策も fail2ban で行えます。

常習犯対策

繰り返し不正アクセスを試みる IP Address に対しては、recidive の設定をします。recidive とはオランダ語で「常習犯」という意味のようで、ある一定期間で決められた回数の BAN が行われた IP Address を長期間アクセス拒否にする設定です。

/etc/fail2ban/jail.local に次を追記しました。

3 回 BAN を繰り返した IP Address を対象としています。

設定後は忘れずに daemon を再起動します。

その後ログをみてみます。

しつこい 117.135.144.233 が recidive に引っかかったようです。

とりあえずこんな感じにしました

sshd について、600 秒以内(デフォルト)に 3 回不正アクセスを行なった IP Address を 600 秒間(デフォルト) BAN します

常習犯(recidive)について、1 日以内(デフォルト)に 3 回 BAN になった IP Address を 1 週間(デフォルト) BAN します。

ちなみに複数ポートをチェックする時は

複数ポートを監視する時にはカンマで区切るようです。