ホーム > nao-pon

nao-pon

記事一覧 > XOOPSマニア::UsersWiki/nao-pon/blog

16bit インストーラーの Windows Draw 7 を 64bit Windows (Win10) にインストールする

Changes

[Fusen:4] filter and pump

[Fusen:3] filter and pump

[Fusen:2] filter and pump

[Fusen:1] great article...
https://hpwb.net/2ul39Tl (buybestmassagechair.com)

image~.png

RSS of nao-pon/blog
2017 3月 1 (水)
 

16bit インストーラーの Windows Draw 7 を 64bit Windows (Win10) にインストールする anchor.png

おそらく、Windows 95 の頃から気に入ってずっと使っているアプリケーションで Micrografx の Windows Draw というものがあるのですが、64bit の Windows にインストールすることができず、残していた Windows XP のマシンで使用していたのですが、とうとうその XP のマシンが壊れてしまい、残すは ESXi の中のバーチャルマシンとしての XP で動かすしかなくなってしまいました。

しかし、やはりいつも使用しているマシンで利用したいと考え、最新の Windows 10 で SETUP.EXE を起動してみました。

image~.png

やはり、こうなりますね。インストールできません。
ちょっと調べてみたところ、InstallShield Ver.5.x なら、動作を阻害しているプロセスを止めればインストールできるようなのですが・・・

image~1.png

InstallShield 3.0 のようです。ここで諦めようとおもったのですが、もうひと踏ん張りして検索してみたところ次のサイトが見つかりました。

  • Installing 32-bit programs with 16-bit setup launcher stubs

    InstallShield 3 shortcut

    Download the InstallShield 3 Engine without Windows/Wine:

    View the version properties of the Setup Launcher, usually called SETUP.EXE. (under Windows, right click, select Properties, and click the "Version" tab).

    If the setup version is 3.xx.xxx, then as a convenience, you may download the Setup Engine executable directly from here rather than manually extracting it: Is3Engine.zip

    Place this file in a WRITABLE folder with the rest of your application install files and run it instead of setup.

ということなので、Is3Engine.zip をダウンロードして解凍してできた setup32.exe をインストール CD をまるごとコピーしたフォルダーに置き起動してみます。

image~2.png

おお!来たね〜!

image~3.png

インストールが開始されました。

image~4.png

順調に進みます。

image~5.png

おお!無事に完了した模様。

image~6.png

わーい!見事に起動しました!

image~7.png

ちゃんと使えます!

そして、仕上げに現在のサポート先のインフィニシスのダウンロードページよりアップデーターをダウンロードして適用します。

image~8.png

とても古いアプリケーションですが、自分的には慣れていてとても使いやすいので、これでまた作業が捗ります。 :-)

fusen.dat
id.1:
通りすがりさん : : 18/03/26 22:13

great article...
https://hpwb.net/2ul39Tl (buybestmassagechair.com)

id.2:
通りすがりさん : : 18/04/05 02:10
id.3:
通りすがりさん : : 18/04/05 02:10
id.4:
通りすがりさん : : 18/04/05 02:10

X-elFinder 2.25 をリリースしました

RSS of nao-pon/blog
2017 10月 25 (水)
 

X-elFinder 2.25 をリリースしました anchor.png

X-elFinder 2.25 をリリースしました。ベースの elFinder は今日の時点の最新 Nightly (2.1.29 + Nightly: e9d7e60) になっています。

ベースの elFinder は色々と機能追加したり、パフォーマンスの改善、バグ修正などを行っています。

また、X-elFinder 独自の機能としてマネージャーから XOOPS ログイン/ログアウトができるようになりました。

ツールバーにログイン/ログアウトボタンがあります, login-button.png
ツールバーにログイン/ログアウトボタンがあります
ログインボタンをクリックすると ログインダイアログが開きます, login-dialog.png
ログインボタンをクリックすると ログインダイアログが開きます

X-update でアップデート可能です。お試しください。 :-)

X-elFinder で GoogleDrive のサービスアカウントのボリュームを使う

Changes

anchor.png

Page Top

X-elFinder で GoogleDrive のサービスアカウントのボリュームを使う anchor.png

Tag: X-elFinder GoogleDrive elFinder
Google のAPIには、サービスアカウントというものがあり、個人のアカウントとは独立したサービスを受けることができます。
GoogleDrive をサービスアカウントで利用すると、そのサービスアカウントでしかアクセスできない独立したドライブスペースの割当*1を受けることができます。そのドライブスペースを X-elFinder の微リュームとしてマウントして利用してみよう!という話です。
Page Top

サービスアカウントの作成 anchor.png

ダウンロードした JSON ファイルを xoops_trust_path/upload/xelfinder に保存します。

Page Top

管理画面・一般設定・ボリュームドライバ に追加 anchor.png

xelfinder:GoogleDrive:/:Public@GDrive:id=gp|ext_service_key_file=xxxxxxxxx.json
RSS of nao-pon/blog
2017 4月 21 (金)
 

X-elFinder で GoogleDrive のサービスアカウントのボリュームを使う anchor.png

Google のAPIには、サービスアカウントというものがあり、個人のアカウントとは独立したサービスを受けることができます。

GoogleDrive をサービスアカウントで利用すると、そのサービスアカウントでしかアクセスできない独立したドライブスペースの割当*1を受けることができます。そのドライブスペースを X-elFinder の微リュームとしてマウントして利用してみよう!という話です。

Page Top

サービスアカウントの作成 anchor.png

ダウンロードした JSON ファイルを xoops_trust_path/upload/xelfinder に保存します。

Page Top

管理画面・一般設定・ボリュームドライバ に追加 anchor.png

xelfinder:GoogleDrive:/:Public@GDrive:id=gp|ext_service_key_file=xxxxxxxxx.json

ネットワークで同一セグメント内の複数のゲートウェイに対応する

Changes

問題がなければ iptables コマンドで変更した現在の設定を保存します。

本題がなければ iptables コマンドで変更した現在の設定を保存します。

本題がなければ現在の設定を保存します。

# /sbin/service iptables save

追記: Raspberry Pi にも設定してみました - ネットワークで同一セグメント内の複数のゲートウェイに対応する (Raspberry Pi 編)

尚、今回のネットワーク概略図はオンラインサービスの draw.io を利用して簡単に書いてみました。

RSS of nao-pon/blog
2017 4月 14 (金)
 

ネットワークで同一セグメント内の複数のゲートウェイに対応する anchor.png

先日、プロバイダーのBiglobeはそのままに、コミュファからフレッツ光ネクスト【隼】にインターネット回線を切り替えたのですが、夜間の速度落ち込みが酷いため、V6プラスでの接続を追加しました。

ただ、Web サーバーやメールサーバーはポート開放をする必要があり、V6プラスでは利用できないため、ONU と HGW(NTT のホームゲートウェイ)の間にハブを追加して、そこから分岐して別途 PPPoEv4 用のルーターを繋げて、宅内ネットワークから見て、2系統のゲートウェイを用意して V6プラスと PPPoEv4 の接続をデフォルトゲートウェイを変更することで選択可能にしてあります。

ネットワーク概略, ネットワーク図.png
ネットワーク概略

しかし、Web サーバーでインターネットからデーターを取得する場合に、夜間の遅いときに動作に支障をきたすほどです。具体的には XOOPS Cube Legacy の X-update で legacy コアをダウンロードするのにタイムアウトととなってしまい正常に終了できません。

legacy コアは、10数Mバイトなのですが、これが5分のタイムアウトに引っかかるのですから、めっちゃ遅いことが分かると思います。

そこで、デフォルトルートを V6プラスのルーターにしておき、PPPoEv4 のルーターから入ってきた通信のみそのルーターに返すという仕組みにするばよいのではと考えていました。

ネットワークに疎いので、それをどのようにしたら良いのかが分からずに日にちが過ぎていたのですが、今日たまたまヒントとなるブログ記事に巡り合ったので、早速設定してみました。

そのブログ記事が

本当によく分からないので、とりあえず写経。

iptables で 特定のゲートウェイからの通信にマークをつけるとのこと。

「まっしろなめも帳」さんより引用

 ※ manglee tableをクリア
 # iptables -t mangle -F

 ※ 特定のMACアドレスから通信が入ってきた場合、1番のマークを付ける
 # iptables -t mangle -A INPUT -m mac --mac-source 【PPPoEv4 ルータの MAC アドレス】 -j MARK --set-mark 1

 ※ 入ってきた通信の追跡ができるようmark情報を保存する
 # iptables -t mangle -A INPUT -j CONNMARK --save-mark

 ※ markがついていた通信の関連通信(今回はOUTPUT)のmarkを継続して付与する(save-markの情報をrestoreする)
 # iptables -t mangle -A OUTPUT -j CONNMARK --restore-mark

そして、引用元の記事では一時的なルーティングということらしいのですが、私は恒久的にしたいので /etc/sysconfig/network-scripts 以下に書き込みます。

# vim /etc/sysconfig/network-scripts/route-eth0
default via 【PPPoEv4 ルータの IP アドレス】 table 200
# vim /etc/sysconfig/network-scripts/rule-eth0
fwmark 1 table 200

そして、ネットワークサービスを再起動

# service network restart

念のため、グローバル IP アドレスの確認

$ curl inet-ip.info

V6プラス接続の IP アドレスになりました。

また、携帯の 4G 回線で確認し、外部からの Web サーバーに対するアクセスも問題ないことが確認できました。

問題がなければ iptables コマンドで変更した現在の設定を保存します。

# /sbin/service iptables save

「まっしろなめも帳」さんのお陰で助かりました!ありがとうございます。 :thumb_up:

尚、今回のネットワーク概略図はオンラインサービスの draw.io を利用して簡単に書いてみました。

追記: Raspberry Pi にも設定してみました - ネットワークで同一セグメント内の複数のゲートウェイに対応する (Raspberry Pi 編)

ネットワークで同一セグメント内の複数のゲートウェイに対応する (Raspberry Pi 編)

Changes

前回の「ネットワークで同一セグメント内の複数のゲートウェイに対応する」で設定したルーティングが調子がいいので、Raspberry Pi の Web サーバー(pi2.hypweb.net, phpng.pi2.hypweb.net) にも適用してみます。

RSS of nao-pon/blog
2017 4月 19 (水)
 
ページ内コンテンツ
  • ネットワークで同一セグメント内の複数のゲートウェイに対応する (Raspberry Pi 編)
      • PPPoE v4 ルーターを通ってきた信号にマークを付けます
      • とりあえず確認
      • デフォルトルートの変更
      • 起動時のルーティング設定
      • 再起動
      • 最終確認
    • これで完了!

ネットワークで同一セグメント内の複数のゲートウェイに対応する (Raspberry Pi 編) anchor.png

前回の「ネットワークで同一セグメント内の複数のゲートウェイに対応する」で設定したルーティングが調子がいいので、Raspberry Pi の Web サーバー(pi2.hypweb.net, phpng.pi2.hypweb.net) にも適用してみます。

Raspberry Pi の Webサーバーは、公開 Web サーバーに受けた pi2.hypweb.net, phpng.pi2.hypweb.net へのリクエストを Apache のリバースプロキシで転送しています。そのような環境でもうまくいくのかよく分かりませんが、とにかく設定してみます。

基本的には、前回と同様です。

Page Top

PPPoE v4 ルーターを通ってきた信号にマークを付けます anchor.png

# iptables -t mangle -F
# iptables -t mangle -A INPUT -m mac --mac-source 【PPPoEv4 ルータの MAC アドレス】 -j MARK --set-mark 1
# iptables -t mangle -A INPUT -j CONNMARK --save-mark
# iptables -t mangle -A OUTPUT -j CONNMARK --restore-mark
Page Top

とりあえず確認 anchor.png

  • デフォルトルート変更
    # ip route add default via 192.168.1.1
    # ip route del default via 192.168.1.50
  • ip コマンド実行
    # ip route add default via 192.168.1.50 table 200
    # ip rule add fwmark 1 table 200
  • グローバル確認
    # curl inet-ip.info
  • 外部からの接続確認
    • 携帯の 4G 回線から確認

とりあえず、これで問題ないようですので恒久的な設定を行います。

Page Top

デフォルトルートの変更 anchor.png

Raspberry Pi の Raspbian Jessie では、固定 IP の設定は /etc/dhcpcd.conf に設定してあります。

# vim /etc/dhcpcd.conf
interface eth0
static ip_address=192.168.1.201
static routers=192.168.1.1
static domain_name_servers=192.168.1.92
Page Top

起動時のルーティング設定 anchor.png

/etc/network/interfaces を編集し、"up " に続けて実行するコマンドを記述します。

# vim /etc/network/interfaces
iface eth0 inet manual

up ip route add default via 192.168.1.50 table 200
up ip rule add fwmark 1 table 200
Page Top

再起動 anchor.png

ネットワークのみ再起動したかったのですが、いまいち方法がよく分からず、マシン再起動をしました。

# reboot
Page Top

最終確認 anchor.png

  • グローバル IP アドレスの確認
    $ curl inet-ip.info
  • 外部からの接続確認
    • 携帯の 4G 回線で外からアクセスして確認
Page Top

これで完了! anchor.png

リバースプロキシ経由でも、特に変わることはなく無事に完了しました。

16bit インストーラーの Windows Draw 7 を 64bit Windows (Win10) にインストールする

Changes

image~.png

#navi

RSS of nao-pon/blog
#boxdate

16bit インストーラーの Windows Draw 7 を 64bit Windows (Win10) にインストールする anchor.png

Tag: Windows 16bit setup Draw

おそらく、Windows 95 の頃から気に入ってずっと使っているアプリケーションで Micrografx の Windows Draw というものがあるのですが、64bit の Windows にインストールすることができず、残していた Windows XP のマシンで使用していたのですが、とうとうその XP のマシンが壊れてしまい、残すは ESXi の中のバーチャルマシンとしての XP で動かすしかなくなってしまいました。

しかし、やはりいつも使用しているマシンで利用したいと考え、最新の Windows 10 で SETUP.EXE を起動してみました。

image~.png

やはり、こうなりますね。インストールできません。
ちょっと調べてみたところ、InstallShield Ver.5.x なら、動作を阻害しているプロセスを止めればインストールできるようなのですが・・・

image~1.png

InstallShield 3.0 のようです。ここで諦めようとおもったのですが、もうひと踏ん張りして検索してみたところ次のサイトが見つかりました。

  • Installing 32-bit programs with 16-bit setup launcher stubs

    InstallShield 3 shortcut

    Download the InstallShield 3 Engine without Windows/Wine:

    View the version properties of the Setup Launcher, usually called SETUP.EXE. (under Windows, right click, select Properties, and click the "Version" tab).

    If the setup version is 3.xx.xxx, then as a convenience, you may download the Setup Engine executable directly from here rather than manually extracting it: Is3Engine.zip

    Place this file in a WRITABLE folder with the rest of your application install files and run it instead of setup.

ということなので、Is3Engine.zip をダウンロードして解凍してできた setup32.exe をインストール CD をまるごとコピーしたフォルダーに置き起動してみます。

image~2.png

おお!来たね〜!

image~3.png

インストールが開始されました。

image~4.png

順調に進みます。

image~5.png

おお!無事に完了した模様。

image~6.png

わーい!見事に起動しました!

image~7.png

ちゃんと使えます!

そして、仕上げに現在のサポート先のインフィニシスのダウンロードページよりアップデーターをダウンロードして適用します。

  • Windows Draw 7 サービスパック 2
  • Windows Draw 7.2 サービスパック 5

    尚、このサービスパックはサービスパック4までの修正内容を含んでおりますが、PhotoMagic に対する修正内容は含まれておりません。PhotoMagic の問題を解決するためには、まずはじめにサービスパック2をご利用ください。

image~8.png

とても古いアプリケーションですが、自分的には慣れていてとても使いやすいので、これでまた作業が捗ります。 :-)

ページコメント(0)
#navi
RSS of nao-pon/blog
2017 3月 1 (水)
 

16bit インストーラーの Windows Draw 7 を 64bit Windows (Win10) にインストールする anchor.png

おそらく、Windows 95 の頃から気に入ってずっと使っているアプリケーションで Micrografx の Windows Draw というものがあるのですが、64bit の Windows にインストールすることができず、残していた Windows XP のマシンで使用していたのですが、とうとうその XP のマシンが壊れてしまい、残すは ESXi の中のバーチャルマシンとしての XP で動かすしかなくなってしまいました。

しかし、やはりいつも使用しているマシンで利用したいと考え、最新の Windows 10 で SETUP.EXE を起動してみました。

image~.png

やはり、こうなりますね。インストールできません。
ちょっと調べてみたところ、InstallShield Ver.5.x なら、動作を阻害しているプロセスを止めればインストールできるようなのですが・・・

image~1.png

InstallShield 3.0 のようです。ここで諦めようとおもったのですが、もうひと踏ん張りして検索してみたところ次のサイトが見つかりました。

  • Installing 32-bit programs with 16-bit setup launcher stubs

    InstallShield 3 shortcut

    Download the InstallShield 3 Engine without Windows/Wine:

    View the version properties of the Setup Launcher, usually called SETUP.EXE. (under Windows, right click, select Properties, and click the "Version" tab).

    If the setup version is 3.xx.xxx, then as a convenience, you may download the Setup Engine executable directly from here rather than manually extracting it: Is3Engine.zip

    Place this file in a WRITABLE folder with the rest of your application install files and run it instead of setup.

ということなので、Is3Engine.zip をダウンロードして解凍してできた setup32.exe をインストール CD をまるごとコピーしたフォルダーに置き起動してみます。

image~2.png

おお!来たね〜!

image~3.png

インストールが開始されました。

image~4.png

順調に進みます。

image~5.png

おお!無事に完了した模様。

image~6.png

わーい!見事に起動しました!

image~7.png

ちゃんと使えます!

そして、仕上げに現在のサポート先のインフィニシスのダウンロードページよりアップデーターをダウンロードして適用します。

image~8.png

とても古いアプリケーションですが、自分的には慣れていてとても使いやすいので、これでまた作業が捗ります。 :-)

XOOPS サイトの IPv6 対応の私的メモ

Changes

詳細メモ anchor.png

Page Top

class/protector.php ip_match() anchor.png

#code(php,366-){{
function ip_match( $ips )
{

	foreach( $ips as $ip => $info ) {
		if( $ip ) {
			$ip = strtolower($ip);
			switch( substr( $ip , -1 ) ) {
				case '.' :
				case ':' :
					// foward match
					if( substr( @$_SERVER['REMOTE_ADDR'] , 0 , strlen( $ip ) ) == $ip ) {
						$this->ip_matched_info = $info ;
						return true ;
					}
					break ;
				case '0' :
				case '1' :
				case '2' :
				case '3' :
				case '4' :
				case '5' :
				case '6' :
				case '7' :
				case '8' :
				case '9' :
				case 'a' :
				case 'b' :
				case 'c' :
				case 'd' :
				case 'e' :
				case 'f' :
					// full match
					if( @$_SERVER['REMOTE_ADDR'] == $ip ) {
						$this->ip_matched_info = $info ;
						return true ;
					}
					break ;
				default :
					// perl regex
					if( @preg_match( $ip , @$_SERVER['REMOTE_ADDR'] ) ) {
						$this->ip_matched_info = $info ;
						return true ;
					}
					break ;
			}
		}
	}
	$this->ip_matched_info = null ;
	return false ;

}
}}

  • protector モジュールの class/protector.php ip_match() の IPv6 対応(後述)

hypweb.net の Web サーバーを IPv6 対応しました。
IPv6 でアクセスすると左上に IPv6 の文字が表示されます。
hypweb_IPv6.png

しかし、XOOPS 固有の問題がありちょこちょこ修正しています。

  • xpWiki モジュールの counter, tb テーブルの ip カラムの文字数拡張(モジュールアップデートスクリプトにて対応完了)
  • xpWiki モジュールの counter, tb テーブルの ip カラムの文字数拡張
RSS of nao-pon/blog
2017 2月 14 (火)
 
ページ内コンテンツ
  • XOOPS サイトの IPv6 対応の私的メモ
    • 施した対策
    • ToDo
    • 詳細メモ
      • class/protector.php ip_match()

XOOPS サイトの IPv6 対応の私的メモ anchor.png

hypweb.net の Web サーバーを IPv6 対応しました。
IPv6 でアクセスすると左上に IPv6 の文字が表示されます。

hypweb_IPv6.png

しかし、XOOPS 固有の問題がありちょこちょこ修正しています。

このページはその私的メモで、随時更新していきます。

Page Top

施した対策 anchor.png

  • online テーブルの online_ip カラムの文字数拡張(39文字)
  • protector モジュールの class/protector.php ip_match() の IPv6 対応(後述)
  • protector モジュールの一般設定 信頼できる IP に ^::1$ と ^fe80:: を追加
  • protector モジュールの管理画面の BadIP のリストアップとその保存処理で、有効時間とIPのセパレーターを ":" から "-" に変更(trust/modules/protector/admin/index.php)
  • d3forum の posts テーブルの poster_ip, modifier_ip カラムの文字数拡張(39文字)
  • xpWiki モジュールの counter, tb テーブルの ip カラムの文字数拡張(モジュールアップデートスクリプトにて対応完了)
Page Top

ToDo anchor.png

  • protector の BadIP の登録で IPv6 のプレフィクス長を管理画面で指定できるようにする。
Page Top

詳細メモ anchor.png

Page Top

class/protector.php ip_match() anchor.png

366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
function ip_match( $ips )
{
    foreach( $ips as $ip => $info ) {
        if( $ip ) {
            $ip = strtolower($ip);
            switch( substr( $ip , -1 ) ) {
                case '.' :
                case ':' :
                    // foward match
                    if( substr( @$_SERVER['REMOTE_ADDR'] , 0 , strlen( $ip ) ) == $ip ) {
                        $this->ip_matched_info = $info ;
                        return true ;
                    }
                    break ;
                case '0' :
                case '1' :
                case '2' :
                case '3' :
                case '4' :
                case '5' :
                case '6' :
                case '7' :
                case '8' :
                case '9' :
                case 'a' :
                case 'b' :
                case 'c' :
                case 'd' :
                case 'e' :
                case 'f' :
                    // full match
                    if( @$_SERVER['REMOTE_ADDR'] == $ip ) {
                        $this->ip_matched_info = $info ;
                        return true ;
                    }
                    break ;
                default :
                    // perl regex
                    if( @preg_match( $ip , @$_SERVER['REMOTE_ADDR'] ) ) {
                        $this->ip_matched_info = $info ;
                        return true ;
                    }
                    break ;
            }
        }
    }
    $this->ip_matched_info = null ;
    return false ;
}

LINE の通知音の鳴り分けを Tasker でやってみた

Changes

#navi

RSS of nao-pon/blog
#boxdate

LINE の通知音の鳴り分けを Tasker でやってみた anchor.png

Tag: Android Tasker LINE

超〜〜久々にブログ書いてみようかな。 :hammer:

昨年の年末31日に家族5台分のスマホを MNP でソフトバンクからドコモへ移りました。

スマホの内訳は iPhone 6S 64GB が 4台と Xperia X Perfomance が 1台でいずれも一括0円でした。Xperia は自分のです。実は XZ も一括0円でしたが、サイズ感とMicroUSBを選択して XP にした変わり者です。 :-D

と、前置きはこのぐらいにしてタイトルの件です。

LINE の通知音の鳴り分けをしたくて、Android アプリの Tasker を使って実現してみました。

#pre{{
Profile: LINE通知

Event: Notification [ Owner Application:LINE Title:* Text:* Subtext:* Other Text:* Cat:* New Only:Off ]

Enter: LINE鳴り分け

A1: Variable Set [ Name:%title To:%NTITLE Recurse Variables:Off Do Maths:Off Append:Off ]
A2: Flash [ Text:%title Long:Off ]
A3: Variable Set [ Name:%sound To:0 Recurse Variables:Off Do Maths:Off Append:Off ]
A4: Variable Set [ Name:%sound To:-1 Recurse Variables:Off Do Maths:Off Append:Off ] If [ %title eq LINE ]
A5: Variable Set [ Name:%sound To:1 Recurse Variables:Off Do Maths:Off Append:Off ] If [ %title ~ 太郎* | %title ~ 次郎* ]
A6: Play Ringtone [ Type:Notification Sound:Procyon Stream:5 ] If [ %sound eq 1 ]
A7: Play Ringtone [ Type:Notification Sound:Ray Stream:5 ] If [ %sound eq 0 ]

}}

  • LINE の通知をトリガーにしてタスクを設定します。
  • 通知のタイトルをローカル変数 %title に保存します。
  • デフォルトの通知音用にローカル変数 %sound に 0 をセットします。
  • 太郎さんと次郎さんの通知音のみ特別なものにするため %sound に 1 をセットします。前方一致とするためにワイルドカード * を追加しています。
  • グループトークの通知は、どうやら 2回トリガーされるらしく、タイトルが "LINE" の場合は無視するために %sound に -1 をセットします。
  • %sound = 0 と 1 の通知音を鳴らします。

Tasker で通知音をならすため、ラインアプリ自体の通知音は無効にしておかないと、2重に通知音が鳴ります。

とこんなところです。ラインアプリで通知音鳴り分けを設定できればこんな面倒なことしなくても済むのにね :laught:

XML も置いときます。

#code(LINE通知鳴り分け.xml)

ページコメント(0)
#navi
RSS of nao-pon/blog
2017 1月 16 (月)
 

LINE の通知音の鳴り分けを Tasker でやってみた anchor.png

超〜〜久々にブログ書いてみようかな。 :hammer:

昨年の年末31日に家族5台分のスマホを MNP でソフトバンクからドコモへ移りました。

スマホの内訳は iPhone 6S 64GB が 4台と Xperia X Perfomance が 1台でいずれも一括0円でした。Xperia は自分のです。実は XZ も一括0円でしたが、サイズ感とMicroUSBを選択して XP にした変わり者です。 :-D

と、前置きはこのぐらいにしてタイトルの件です。

LINE の通知音の鳴り分けをしたくて、Android アプリの Tasker を使って実現してみました。

Profile: LINE通知
 Event: Notification [ Owner Application:LINE Title:* Text:* Subtext:* Other Text:* Cat:* New Only:Off ]
Enter: LINE鳴り分け
 A1: Variable Set [ Name:%title To:%NTITLE Recurse Variables:Off Do Maths:Off Append:Off ]
 A2: Flash [ Text:%title Long:Off ]
 A3: Variable Set [ Name:%sound To:0 Recurse Variables:Off Do Maths:Off Append:Off ]
 A4: Variable Set [ Name:%sound To:-1 Recurse Variables:Off Do Maths:Off Append:Off ] If [ %title eq LINE ]
 A5: Variable Set [ Name:%sound To:1 Recurse Variables:Off Do Maths:Off Append:Off ] If [ %title ~ 太郎* | %title ~ 次郎* ]
 A6: Play Ringtone [ Type:Notification Sound:Procyon Stream:5 ] If [ %sound eq 1 ]
 A7: Play Ringtone [ Type:Notification Sound:Ray Stream:5 ] If [ %sound eq 0 ]
  • LINE の通知をトリガーにしてタスクを設定します。
  • 通知のタイトルをローカル変数 %title に保存します。
  • デフォルトの通知音用にローカル変数 %sound に 0 をセットします。
  • 太郎さんと次郎さんの通知音のみ特別なものにするため %sound に 1 をセットします。前方一致とするためにワイルドカード * を追加しています。
  • グループトークの通知は、どうやら 2回トリガーされるらしく、タイトルが "LINE" の場合は無視するために %sound に -1 をセットします。
  • %sound = 0 と 1 の通知音を鳴らします。

Tasker で通知音をならすため、ラインアプリ自体の通知音は無効にしておかないと、2重に通知音が鳴ります。

とこんなところです。ラインアプリで通知音鳴り分けを設定できればこんな面倒なことしなくても済むのにね :laught:

XML も置いときます。

fileLINE通知鳴り分け.xml
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
<taskerdata sr="" dvi="1" tv="4.9u3m">
    <profile sr="prof56" ve="2">
        <cdate>
            1484378254333
        </cdate>
        <edate>
            1484570390541
        </edate>
        <id>
            56
        </id>
        <mid0>
            55
        </mid0>
        <nme>
            LINE通知
        </nme>
        <event sr="con0" ve="2">
            <code>
                461
            </code>
            <app sr="arg0">
                <appclass>
                    jp.naver.line.android.activity.SplashActivity
                </appclass>
                <apppkg>
                    jp.naver.line.android
                </apppkg>
                <label>
                    LINE
                </label>
            </app>
            <str sr="arg1" ve="3">
            </str>
            <str sr="arg2" ve="3">
            </str>
            <str sr="arg3" ve="3">
            </str>
            <str sr="arg4" ve="3">
            </str>
            <str sr="arg5" ve="3">
                <int sr="arg6" val="0">
                </int>
            </str>
        </event>
    </profile>
    <task sr="task55">
        <cdate>
            1484377764924
        </cdate>
        <edate>
            1484570390541
        </edate>
        <id>
            55
        </id>
        <nme>
            LINE鳴り分け
        </nme>
        <action sr="act0" ve="7">
            <code>
                547
            </code>
            <str sr="arg0" ve="3">
                %title
            </str>
            <str sr="arg1" ve="3">
                %NTITLE
            </str>
            <int sr="arg2" val="0">
            </int>
            <int sr="arg3" val="0">
            </int>
            <int sr="arg4" val="0">
            </int>
        </action>
        <action sr="act1" ve="7">
            <code>
                548
            </code>
            <str sr="arg0" ve="3">
                %title
            </str>
            <int sr="arg1" val="0">
            </int>
        </action>
        <action sr="act2" ve="7">
            <code>
                547
            </code>
            <str sr="arg0" ve="3">
                %sound
            </str>
            <str sr="arg1" ve="3">
                0
            </str>
            <int sr="arg2" val="0">
            </int>
            <int sr="arg3" val="0">
            </int>
            <int sr="arg4" val="0">
            </int>
        </action>
        <action sr="act3" ve="7">
            <code>
                547
            </code>
            <str sr="arg0" ve="3">
                %sound
            </str>
            <str sr="arg1" ve="3">
                -1
            </str>
            <int sr="arg2" val="0">
            </int>
            <int sr="arg3" val="0">
            </int>
            <int sr="arg4" val="0">
                <conditionlist sr="if">
                    <condition sr="c0" ve="3">
                        <lhs>
                            %title
                        </lhs>
                        <op>
                            0
                        </op>
                        <rhs>
                            LINE
                        </rhs>
                    </condition>
                </conditionlist>
            </int>
        </action>
        <action sr="act4" ve="7">
            <code>
                547
            </code>
            <str sr="arg0" ve="3">
                %sound
            </str>
            <str sr="arg1" ve="3">
                1
            </str>
            <int sr="arg2" val="0">
            </int>
            <int sr="arg3" val="0">
            </int>
            <int sr="arg4" val="0">
                <conditionlist sr="if">
                    <bool0>
                        Or
                    </bool0>
                    <condition sr="c0" ve="3">
                        <lhs>
                            %title
                        </lhs>
                        <op>
                            2
                        </op>
                        <rhs>
                            太郎*
                        </rhs>
                    </condition>
                    <condition sr="c1" ve="3">
                        <lhs>
                            %title
                        </lhs>
                        <op>
                            2
                        </op>
                        <rhs>
                            次郎*
                        </rhs>
                    </condition>
                </conditionlist>
            </int>
        </action>
        <action sr="act5" ve="7">
            <code>
                192
            </code>
            <int sr="arg0" val="1">
                <str sr="arg1" ve="3">
                    Procyon
                </str>
            </int>
            <int sr="arg2" val="5">
                <conditionlist sr="if">
                    <condition sr="c0" ve="3">
                        <lhs>
                            %sound
                        </lhs>
                        <op>
                            0
                        </op>
                        <rhs>
                            1
                        </rhs>
                    </condition>
                </conditionlist>
            </int>
        </action>
        <action sr="act6" ve="7">
            <code>
                192
            </code>
            <int sr="arg0" val="1">
                <str sr="arg1" ve="3">
                    Ray
                </str>
            </int>
            <int sr="arg2" val="5">
                <conditionlist sr="if">
                    <condition sr="c0" ve="3">
                        <lhs>
                            %sound
                        </lhs>
                        <op>
                            0
                        </op>
                        <rhs>
                            0
                        </rhs>
                    </condition>
                </conditionlist>
            </int>
        </action>
    </task>
</taskerdata>

XMail Server の SPF(Sender Policy Framework) 対応

Changes

[Fusen:1] aaaaaaaaaaa

#navi #navi

 
Thu 1 Jan 1970
 
 

[Fusen:1 by 通りすがりさん]455

2008 4月 9 (水)
 
ページ内コンテンツ
    • XMail Server の SPF(Sender Policy Framework) 対応
    • Mail::SPF::Query が必要です
    • フィルター定義
      • プログラムソース

XMail Server の SPF(Sender Policy Framework) 対応 anchor.png

xpWiki のプラグイン moblog では、メールによってページを作成することができますが、認証判断は送信元メールアドレスのみで行っています。

できるだけ簡単に投稿できるようにしたかったので、敢えて Subject や本文にパスワードを入れたりする仕様にしなかったのですが、他人の成りすましによる偽投稿が可能なので、なんとか防がなければいけません。

その、動作検証するのに SPF 環境が必要なので、自宅サーバーの XMail Server (Win32) に SPF フィルターを導入しました。

調べてみると、XMail の Web サイトに、xm-spf.pl という perl のフィルターがありましたので、導入してみましたが上手く動きません。早速、ソースを眺めてみましたが、久々の perl なので、結構手間取りましたが、数箇所おかしなところがあったので、修正し、Mail Header に "Received-SPF:" を付け加えるフィルターも書いてみました。

Mail::SPF::Query のレスポンスが "fail" だった場合、XMail に終了コード(4)を返しますので、問答無用で受け取り拒否します。

Page Top

Mail::SPF::Query が必要です anchor.png

サーバー機のコマンドプロンプトで

>cpan
>install Mail::SPF::Query

として、インストールして置いてください。

Page Top

フィルター定義 anchor.png

  • SMTP RCPT 後処理 フィルター (Mail::SPF::Query を使用して判定します)
    • filespf_rcpt.pl
    • フィルター定義
      起動コマンド最初の引数その他の引数
      C:\Perl\bin\perl.exe[絶対パス]/spf_rcpt.pl--file $(FILE) --tmp c:/winnt/temp
      C:\Perl\bin は環境に合わせる--tmp の引数は、システムのテンポラリディレクトリ
  • SMTPセッション終了後処理 (Mail Header に "Received-SPF: [判定結果]" を書き加えます。)
    • filespf_in.pl
    • フィルター定義
      送信者アドレスあて先アドレスリモートIPローカルIP起動ファイル起動コマンドと引数
      **0.0.0.0/00.0.0.0/0spf_in.tab"C:\Perl\bin\perl.exe" "[絶対パス]/spf_in.pl" "$(FILE)" "c:/winnt/temp"
      C:\Perl\bin は環境に合わせる
      c:/winnt/temp は SMTP RCPT 後処理 フィルターと合わせる
    • SpamAssassin を利用しているなら、spf_in.tab を SpamAssassin の定義の前に持ってくると、SpamAssassin で Header 判定できるようになります。
Page Top

プログラムソース anchor.png

filespf_rcpt.pl
Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
!
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
-
-
-
|
!
-
-
|
!
-
-
|
!
-
-
|
!
-
-
|
!
-
-
|
!
-
-
|
!
-
-
|
!
-
-
|
!
-
-
|
!
-
-
|
!
-
-
|
!
-
-
|
!
-
-
|
!
-
-
|
!
-
-
|
!
-
-
|
!
-
-
|
!
-
-
|
!
-
-
|
!
-
|
!
!
 
-
|
!
 
-
|
|
|
|
-
|
|
!
-
!
|
|
-
!
-
!
|
-
!
|
|
-
!
-
|
|
-
|
!
!
 
-
|
!
 
 
-
|
-
-
|
!
|
!
!
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
-
-
-
|
|
|
|
!
!
!
 
-
|
|
!
 
 
#!/usr/bin/perl
#
# spf_rcpt.pl based on xm-spf.pl by nao-pon (hypweb.net)
#
# xm-spf.pl by Davide Libenzi ( XMail Perl filter for SPF )
# Copyright (C) 2004  Davide Libenzi
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#
# Davide Libenzi <davidel@xmailserver.org>
#
 
use strict;
use Mail::SPF::Query;
 
my $opt_file = undef;
my $opt_ip = undef;
my $opt_sender = undef;
my $opt_helo = undef;
my $opt_rcpt_to = undef;
my $opt_local = undef;
my $opt_trusted = undef;
my $opt_guess = undef;
my $opt_exp = undef;
my $opt_max_lookup = undef;
my $opt_sanitize = undef;
my $opt_name = "spfquery";
my $opt_debug = 0;
my $opt_keep_comments = 0;
my $opt_fallback = undef;
my $opt_override = undef;
my $opt_dns = undef;
my $opt_help = undef;
my $opt_pcode = 0;
my $opt_fcode = 3;
my @opt_bypass = ();
 
push(@opt_bypass, "^127\\.0\\.0\\.1\$");
my $mid;
my $opt_tmp = undef;
my $i;
 
for ($i = 0; $i <= $#ARGV; $i++) {
    if ($ARGV[$i] eq "--file") {
        if (++$i <= $#ARGV) {
            $opt_file = $ARGV[$i];
        }
    } elsif ($ARGV[$i] eq "--tmp") {
        if (++$i <= $#ARGV) {
            $opt_tmp = $ARGV[$i];
        }
    } elsif ($ARGV[$i] eq "--ip") {
        if (++$i <= $#ARGV) {
            $opt_ip = $ARGV[$i];
        }
    } elsif ($ARGV[$i] eq "--sender") {
        if (++$i <= $#ARGV) {
            $opt_sender = $ARGV[$i];
        }
    } elsif ($ARGV[$i] eq "--helo") {
        if (++$i <= $#ARGV) {
            $opt_helo = $ARGV[$i];
        }
    } elsif ($ARGV[$i] eq "--rcpt-to") {
        if (++$i <= $#ARGV) {
            $opt_rcpt_to = $ARGV[$i];
        }
    } elsif ($ARGV[$i] eq "--debug") {
        if (++$i <= $#ARGV) {
            $opt_debug = int($ARGV[$i]);
        }
    } elsif ($ARGV[$i] eq "--local") {
        if (++$i <= $#ARGV) {
            $opt_local = $ARGV[$i];
        }
    } elsif ($ARGV[$i] eq "--trusted") {
        if (++$i <= $#ARGV) {
            $opt_trusted = $ARGV[$i];
        }
    } elsif ($ARGV[$i] eq "--guess") {
        if (++$i <= $#ARGV) {
            $opt_guess = $ARGV[$i];
        }
    } elsif ($ARGV[$i] eq "--expl") {
        if (++$i <= $#ARGV) {
            $opt_exp = $ARGV[$i];
        }
    } elsif ($ARGV[$i] eq "--max-lookup") {
        if (++$i <= $#ARGV) {
            $opt_max_lookup = $ARGV[$i];
        }
    } elsif ($ARGV[$i] eq "--sanitize") {
        if (++$i <= $#ARGV) {
            $opt_sanitize = $ARGV[$i];
        }
    } elsif ($ARGV[$i] eq "--name") {
        if (++$i <= $#ARGV) {
            $opt_name = $ARGV[$i];
        }
    } elsif ($ARGV[$i] eq "--fallback") {
        if (++$i <= $#ARGV) {
            $opt_fallback = $ARGV[$i];
        }
    } elsif ($ARGV[$i] eq "--override") {
        if (++$i <= $#ARGV) {
            $opt_override = $ARGV[$i];
        }
    } elsif ($ARGV[$i] eq "--dns") {
        if (++$i <= $#ARGV) {
            $opt_dns = $ARGV[$i];
        }
    } elsif ($ARGV[$i] eq "--pcode") {
        if (++$i <= $#ARGV) {
            $opt_pcode = $ARGV[$i];
        }
    } elsif ($ARGV[$i] eq "--fcode") {
        if (++$i <= $#ARGV) {
            $opt_fcode = $ARGV[$i];
        }
    } elsif ($ARGV[$i] eq "--bypass") {
        if (++$i <= $#ARGV) {
            push(@opt_bypass, $ARGV[$i]);
        }
    } elsif ($ARGV[$i] eq "--help") {
        $opt_help = 1;
    }
}
 
if ($opt_help) {
    exit($opt_pcode);
}
 
if (defined($opt_file)) {
 
    my $ln;
    my @hvars;
 
    if (!open(MFIL, "$opt_file")) {
        print STDERR "unable to open ${opt_file}\n";
        exit($opt_pcode);
    }
# Read message info
    $ln = <MFIL>;
    chomp($ln);
    @hvars = split(/;/, $ln);
# Discard SMTP domain
    $ln = <MFIL>;
# Discard message ID
    $mid = <MFIL>;
    chomp($mid);
# Read MAIL FROM
    $ln = <MFIL>;
    chomp($ln);
    close(MFIL);
# Handle both cases of early message file and spool file
    ($opt_sender = $ln) =~ s/[^<]+<([^>]*)>.*/$1/;
    if ($#hvars > 3) {
        $opt_helo = $hvars[0];
        ($opt_ip = $hvars[1]) =~ s/\[([^:]+)\]:[0-9]+/$1/;
    } else {
        ($opt_ip = $hvars[0]) =~ s/\[([^:]+)\]:[0-9]+/$1/;
    }
}
 
if (!defined($opt_helo) && ($opt_sender =~ /\@/)) {
    ($opt_helo = $opt_sender) =~ s/.*\@(.*)/$1/;
}
 
my $reg;
for ($i = 0; $i <= $#opt_bypass; $i++) {
    $reg = $opt_bypass[$i];
    if ($opt_ip =~ /$reg/) {
        if ($opt_debug) {
            print "whitelist ip ${opt_ip}\n";
        }
        exit($opt_pcode);
    }
}
 
my $query = new Mail::SPF::Query(ipv4       => $opt_ip,
                 sender     => $opt_sender,
                 helo       => $opt_helo,
                 local      => $opt_local,
                 trusted    => $opt_trusted,
                 guess      => $opt_guess,
                 default_explanation => $opt_exp,
                 max_lookup => $opt_max_lookup,
                 sanitize   => $opt_sanitize,
                 myhostname => $opt_name,
                 fallback   => $opt_fallback,
                 override   => $opt_override,
                 debug      => $opt_debug,
                 );
my ($result, $smtp_comment, $header_comment, $spf_record, $detail) = $query->result();
my $rcode = ($result eq "fail") ? $opt_fcode: $opt_pcode;
 
if (defined($opt_file)) {
    if ($rcode eq 0) {
        if (defined($opt_tmp) && $mid){
            open(FILE,">${opt_tmp}/${mid}.SPF");
                flock(FILE,2);
                print FILE "Received-SPF: ".$result." ( $header_comment )";
            close(FILE);
        }
    }
}
 
if ($opt_debug) {
    print $query->result . "\n";
    print $rcode;
}
 
exit($rcode);
filespf_in.pl
Everything is expanded.Everything is shortened.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
-
|
|
|
|
!
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
-
|
|
-
|
!
-
|
|
|
|
|
|
|
|
|
|
!
|
!
 
 
 
 
 
 
 
#!/usr/bin/perl
#
# spf_in.pl by nao-pon (hypweb.net)
# License: GPL
#
 
use strict;
 
my $file = $ARGV[0];
my $temp = $ARGV[1];
 
open(FILE, $file) || exit(0);
my @tmp = <FILE>;
close(FILE);
 
if (!@tmp) {exit(0);}
 
my @dat = ();
my $check = 0;
my $i = 0;
my $mid;
my $spf_file;
my $spf;
foreach(@tmp){
    $i++;
    chomp;
    if ($i eq 3) {
        $mid = $_;
    }
    if (!$check && /^<<MAIL\-DATA>>$/) {
        $check = 1;
        push(@dat, "$_\n");
        $spf_file = "${temp}/${mid}.SPF";
        open(FILE, $spf_file) || exit(0);
        $spf = <FILE>;
        close(FILE);
        unlink($spf_file);
        chomp($spf);
        push(@dat, "$spf\n");
        next;
    }
    push(@dat, "$_\n");
}
 
open(FILE,">$file");
    flock(FILE,2);
    print FILE @dat;
close(FILE);
 
exit(7);

elFinder 2.1.6, X-elFinder 2.01 をリリース

Changes

#block(right,width:230px,around){{

RSS of nao-pon/blog
2016 1月 19 (火)
 

elFinder 2.1.6, X-elFinder 2.01 をリリース anchor.png

elFinder 2.1.6 と それを搭載した X-elFinder 2.01 をリリースしました。

並べ替え可能なお気に入り, sortable_places.png
並べ替え可能なお気に入り
検索画面でのホルダを開くメニュー, open_folder.png
検索画面でのホルダを開くメニュー
JPEG保存時の品質指定, jpeg_quality.png
JPEG保存時の品質指定
自動更新ボタン, auto_sync_button.png
自動更新ボタン
Page Top

elFinder 2.1.6 anchor.png

Changelog の日本語バージョン

  • Fixed #1074 マルチボリューム時の startPath オプションの適正化
  • Fixed #1172 リネーム時にマウスクリックで確定させるとエラーメッセージが大量に出る問題の修正 (enbug)
  • Fixed #1174 ページ内に複数の elFinder インスタンスが存在する場合に完全対応
  • Plugin: AutoResize に新しいオプション `preserveExif`(Exif 情報を残す) の追加 ( Imagick クラス使用時のみ )
  • Fixed #179 JPEG の保存時に品質を指定可能
  • Fixed #1176 HTTP ロングポーリングによる自動更新と inotifywait に対応
  • Fixed #1181 LocalFileSystem ボリームでの検索が case sensitive になっていた問題を修正 & 検索高速化
  • コンテキストメニューの「リロード」メニューに「自動更新」ボタンを追加
  • クライアント(JavaScript 側)設定に `syncStart` を追加
  • 検索結果画面の最適化 - ツールチップに保存場所を表示など
  • ボリュームルートオプションに検索時タイムアウトの `searchTimeout` (デフォルト 30秒) を追加
  • クライアント側コマンドに `opendir` を追加 - 検索結果画面でフォルダーを開くコンテキストメニュー
  • 「お気に入り」を並べ替え可能とした
  • Fixed #1193 ファイルを開く場合に個別 URL でアクセス可能であればその URL で開く
  • その他のバグ修正や調整など
Page Top

X-elFinder 2.01 anchor.png

  • elFinder 2.1.6 をマージ
  • 管理画面に新規項目追加
    • 自動更新間隔(管理者):秒
      • 自動で更新チェックをする間隔を秒数で指定します。
    • 自動更新間隔(特定グループ):秒
    • 自動更新間隔(登録ユーザー):秒
    • 自動更新間隔(ゲスト):秒
    • すぐに自動更新を開始する
      • コンテキストメニューの「リロード」で自動更新の開始・停止ができます。
  • デフォルトで使用する jQuery を 1.12.0 に変更
  • xelfinder_db ボリューム(共有ホルダ)でのホルダ指定の検索を正常化
  • その他細かい調整

elFinder 2.1.5, X-elFinder 1.99 をリリース

Changes

elFinder 2.1.4 以降の更新内容です。
elFinder-rm-dialog.png

    • 2015-12-26 Naoki Sawada
    • 2015-12-16 Naoki Sawada
RSS of nao-pon/blog
2015 12月 26 (土)
 

elFinder 2.1.5, X-elFinder 1.99 をリリース anchor.png

elFinder 2.1.5 および elFinder 2.1.5 を搭載した X-elFinder 1.99 をリリースしました。

elFinder 2.1.4 以降の更新内容です。
elFinder-rm-dialog.png

Changlog
  • 2015-12-26 Naoki Sawada
    • elFinder (2.1.5):
      1. Fixed bug that can't in writable with `chmod`
      2. Show remove item info in confirm dialog on `rm` action
      3. Fixed #1165, MIME types maintenance (doc, dot, xlt, xla)
      4. Fixed problem if filename included character that can't be json encode
      5. Added option `convmap` to Normalizer plugin
      6. And some minor bug fixes
  • 2015-12-16 Naoki Sawada
    • elFinder (2.1.4):
      1. Fixed #1163 Dropbox driver supported windows server
      2. Fixed search problem on Windows server

elFinder 2.1.4 では、主に Windows サーバー向けの修正。
elFinder 2.1.5 では、

  • 属性変更で書き込み禁止にすると、書き込み許可に戻せないバグの修正
  • アイテム削除時の確認ダイアログにアイテムの詳細情報を表示
  • MIMEタイプの誤り修正
  • ファイル名に JSON エンコードできない文字が含まれるアイテムが存在すると何も表示されなくなる問題の修正
  • Normalizer プラグインに `convmap` オプションを追加
  • その他のバグ修正など

などのが含まれています。

なお、X-elFinder は、X-update でアップデートできます。

    To Top