Quantcast
Channel: それマグで!
Viewing all 1867 articles
Browse latest View live

python でSMTPの接続をチェック

$
0
0

メールというのは、老頭児なインフラのくせに、以外に今でも使われていてて困る。

SMTPでつながらないのでテスト。

で、SMTPでメールが送れないので接続テストしようと思った。

python

pythonは smtplib を使えばかんたんに認証できる。

from smtplib  import SMTP_SSL
smtp = SMTP_SSL('xxxx.znlc.jp',465)
smtp.login('takuyaXXXX','MY_PASSWORD')
>> (235, b'2.7.0 Authentication successful')

もし、接続に失敗しログインに失敗すると

smtplib.SMTPAuthenticationError: (535, b'5.7.8 Error: authentication failed:')

になる。

TELNET( openssl s_client ) で実験するのも良い。

パスワードをメールで送るのやめてほしい

とくにパスワードの復旧やアカウントのアクティベーションには、欠かせない 不安定なSMSよりは信頼できるツールではある。

そんなメールですが、メールアドレスを貰ってももらったメールのドメイン名(MX)やユーザー名とアカウントがただしいか接続チェックしないとメールソフトの設定がうまくいかないときに切り分けができない

SMSは電話番号に紐づくので変更が面倒だし、電話がいつでも手元にあるとは限らない SMSの電話番号は個人情報に深く関連づいていて、いったん流出すると手がつけられないので 余り使いたくない・・・

メールって以外になくならないよね。

ただ、たんなるSMTP通信プロトコルして使われているので、応用性もあるので20世紀世代が死ぬまで、まだまだ使われるんだろうな。 いまじゃ、「パスワードの定期変更のお願い」が来るのばかりだけど。

通知代わりにメール送るの割とやめてほしいんだよね。

IMAPは優秀だよね。


raspi(ARM) と intel でbashスクリプトを共通化する

$
0
0

linuxで使ってるシェルスクリプトを汎用化したい

Raspberry Pi3 と IntelCore i7で使ってるシェルスクリプトを使いまわそうとすると、たまにエラーになる。

判別できないので、「判別式」が必要

uname -m

intel CPU のとき

takuya@:~$ uname -m
x86_64

rPi 3 のとき

uname -m
armv7l

dpkg を使う

dpkg --print-architecture

Intel / AMDx86_64 のとき

takuya@sakura:~$ dpkg --print-architecture
amd64

raspiberry Pi のとき

takuya@raspi3:~ $ dpkg --print-architecture
armhf

orange Pi なども同じだった。

注意するポイント

今回ハマったのは /usr/lib のなかで モジュールを調べて更新されてるかとか、ハッシュ値を比較してたので、ハマった。

/usr/lib/arm-linux-gnueabihf
/usr/lib/x86_64-linux-gnu/

Laravel artisan serve で storageの画像が配信されない問題とか.user.iniでxdebugを有効にできない問題。

$
0
0

Laravelに移行中。

ローカル開発環境でデバッグしてると、Storageにツッコんだファイルが見れないので困ってた。

しょせん、PHPなので期待してはいけない。

よくある解決策

artisan storage:link

これで、ストレージがリンクされるから見れるはずだよ。っていうんだけど、うん見えないんだよ。

本当の原因

Stroage::url 

Storage::url が返すURLがAPP_URL を見ているので、artisan serve のポートを書かないといけない。

artisan serve コマンドを上書きする。

artisan make:command MyServer 

で、自作の起動スクリプトを作って、次のように、上書きする。

<?phpnamespace App\Console\Commands;

use Illuminate\Foundation\Console\ServeCommand;

class MyServer extends ServeCommand {/**   * Get the full server command.   * @return string   */protectedfunction serverCommand(){// ini ファイルを読み込む$ini_scan_dir= base_path();
    $addtional_env=" PHP_INI_SCAN_DIR=:$ini_scan_dir";
    // serve のときは.envを無視してAPP_URLを直接渡す。$addtional_env.=" APP_URL=http://{$this->host()}:{$this->port()}";
    $cmd=parent::serverCommand();
    $cmd=$addtional_env.$cmd;
    
    return$cmd;
  }}

artisan serve を上書きして解決する問題。

artisan serve はメインで使うように設計されてないのだろう。みんなはHomesteadでやってるから多分永遠に気づかれない。

phpの phpinfoで出てくる 設定の php.ini を直接書き換えるのは面倒なので、.user.iniでやって xdebugを有効にしたり xdebug.idekey を書いたり出来るんだけど、そういうことはマイナーらしくてやらないんですね。。。。

MacやLinuxでExcel用にUTF-8のCSVを作るための BOM

$
0
0

CSVなんてひさびさに使うわ

ExcelCSVを開くために、日本語を化けさせない方法は2つあって

  1. cp932(sjis)で保存する
  2. UTF-8で保存してBOMを付ける。

さすがに、cp932 はないし、とっとと退場していただきたい。

2のUTF-8とBOMつける方法を選ぶ。

CSVを BOM(byte order mark) の付加・除去

nkfが手っ取り早い

nkf --overwrite --oc=UTF-8-BOM src.csv
nkf --overwrite --oc=UTF-8 src.csv

Excelで開くときに重要

ExcelでUTF-8CSVを開くときに文字化けするんですよね。

Excel以外のソフトウェア、たとえばNumbers.appとかだとBOMとか無関係に文字化けしない。

ディレクトリ単位でシェルの環境変数を切り替えるdirenv

$
0
0

npm / rbenv / pyenv みたいな感じの bashenv がほしい。

npm などを ディレクトリ単位で切り替えていると、どうしてもbashrc と整合性が合わなくなる時がある。

そのために、ディレクトリ単位でシェルの設定やエイリアスを切り替えられると便利だよね。

ってことで調べたてたら見つけたのでメモ

インストールと利用

brew install direnv

初期設定

eval "$(direnv hook bash)"

必要であれば、.bashrc に追記する。

利用

適当な作業用ディレクトリ(ここでは /tmp 、普段は Project フォルダ)に入る

takuya@$ cd /tmp
takuya@tmp$ mkdir tmp

direnv を有効にする

takuya@tmp$ direnv allow .

環境変数を設定した $DIR/.envrc を作る

カレントディレクトリに作った時点で即時にロードされてカッコイイ。

takuya@tmp$ echo "export foo=bar" > .envrc
direnv: loading .envrc
direnv: export +foo

別のディレクトリに移動すると環境変数が消される。

takuya@tmp$ cd ~
direnv: unloading
takuya@~$

先程のディレクトリに戻ると、環境変数が再ロードされる。

takuya@~$ cd -
/tmp/tmp
direnv: loading .envrc
direnv: export +foo

便利な点

毎回まいかい、source 叩かなくて良くなって嬉しい。

しかも、元の環境に戻してくれる。便利。

さらなる便利な点。

環境変数が名前かぶってたらどうなるのかな?

takuya@~$ cd ~
takuya@~$ pwd
/Users/takuya
takuya@~$ export foo=baaaa
takuya@~$ echo $foo
baaaa
## この状態で direnv による上書きをしてみる。
takuya@~$ cd /tmp/tmp
direnv: loading .envrc
direnv: export ~foo
takuya@tmp$ echo $foo
bar
takuya@tmp$ cd -
/Users/takuya
direnv: unloading
### 元通り!!!
takuya@~$ echo $foo
baaaa
takuya@~$

わりと安心して使えるし細かいことを考えなくて良くなるので便利だと思う。

残念な点

alias とか function は読み込んでくれないんだよなぁ。

参考資料

laravel で phpunitのテスト実行時に、PhpStormからXdebugを有効にする。user.iniを有効にして実行

$
0
0

xdebugを有効にしてphpunitを実行したい。

Xdebugの設定をしたとしても、phpunitの設定だとか、xdebugや日付などの php.iniを作るのが不便。

プロジェクトを切り替える毎に、php.iniを見直すのは割と面倒くさい。

phpには user.iniがある

phpには実行時に、php.iniを読み込んでグローバル設定を、プロジェクト毎の設定で上書きすることが出来る。

これを laravelから使う。

やりかた

  1. IntelliJ(phpStrorm)で xdebugをリッスンする
  2. xdebugを有効にする設定を書く
  3. デバッグポイントを指定する
  4. artisan コマンドで 2のiniを読み込む

.iniを作る

takuya@laravel$ cat - > .php.user.ini
xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_log=/tmp/xdebug.log
xdebug.idekey=takuya1st

Laravel のホームディレクトリに user.iniを作る

artisanコマンドの定義

php artisan:make command RunTest

実行

php artisan test

ソースコード

<?phpnamespace App\Console\Commands;

use Illuminate\Console\Command;

class RunTest extends Command
{/**   * The name and signature of the console command.   * @var string   */protected$signature='test {filter?}';
  /**   * The console command description.   * @var string   */protected$description='phpunit でテスト実行';
  
  /**   * Create a new command instance.   * @return void   */publicfunction__construct(){parent::__construct();
  }/**   * Execute the console command.   * @return mixed   */publicfunction handle (){$filter='';
    if($this->argument('filter')){$filter=$this->argument('filter');
      $filter="--filter=/$filter/i";
    }$cmd="./vendor/bin/phpunit".''.$filter;
    
    // laravel ルートディレクトリにある .user.ini を読み込ませる$ini_scan_dir= base_path();
    $addtional_env=" PHP_INI_SCAN_DIR=:$ini_scan_dir";
    $cmd=$addtional_env.$cmd;
    
    
    // dd($cmd);passthru($cmd);
  }}

JetBrains での設定

別途、記事にします。ご参考ください

ポイント

メリット

xdebugがぱぱっと使えるようになるとメッチャ捗る。

laravel のdd/dumpよりも楽になる。

とくに phpunitは複数がマルチに動くので debugger があると助かる。

LaravelのPHPStorm/IntelliJ IDEA でphpのデバッグ(xdebug)をビルトインサーバーで行う

$
0
0

#

LaravelのPHPStorm/IntelliJ IDEA でphpデバッグ(xdebug)をビルトインサーバーで行う

laravel をxdebugデバッグする、やり方はいっぱいある。

いっぱいあるのに、ネットに情報が殆どないので。さすがphper といったところか

Xdebugデバッグをする。

alias server='php -dxdebug.remote_enable=1 -dxdebug.remote_autostart=1 \
-dxdebug.remote_host=localhost -dxdebug.remote_port=9000 \
-dxdebug.remote_log=/tmp/xdebug.log -S localhost:8080 -t  public/'

いろいろ調べてみたら

artisan serve

このサーバー起動で用いられているコマンドの中身を見てみたら次のようになっていた。

SeverCommand.php ( 一部抜粋

<?phpclass ServeCommand extends Command
{protected$name='serve';

    publicfunction handle(){chdir(public_path());
        $this->line("<info>Laravel development server started:</info> <http://{$this->host()}:{$this->port()}>");

        passthru($this->serverCommand());
    }protectedfunction serverCommand(){returnsprintf('%s -S %s:%s %s/server.php',
            ProcessUtils::escapeArgument((new PhpExecutableFinder)->find(false)),
            $this->host(),
            $this->port(),
            ProcessUtils::escapeArgument(base_path()));
    }}

サーバー起動にpassthru って嫌な予感しか無い。

artisan サーバーには ini を渡せない。

php php -d name=valueで設定を渡す機能があるが、 artisan serve は何を血迷った実装なのか、内部的に'/usr/bin/php server.php'を直接起動するラッパーに過ぎない。所詮 PHPer ってことですよね・・・

そこで解決策として、このページの最初に記載したとおり、 自分で phpを 叩くしか無いのです。

IntelliJ IDEA で 文字列をサクッと選択する

$
0
0

サクッと選択する

文字列を選択するのに、Shiftで選択範囲を拡張してると不便。

option + ↑
option + ↓

これで、選択範囲を拡張できる。 ダブルクオートのなかやシングルクォートのなかの文字列を選択できる.

また、HTMLのタグとタグに挟まれた、要素の文字列や、クラス名なども選択が出来る。

また、{ / }などカッコで囲まれた部分も選択できるので、メソッドの内部や if 分の丸括弧の中もぱぱっと選択できる。

vimだとサクッと選択できるので楽になってたことをIDEで出来るので、メインで使うのに楽になった。

phpstorm や pycharm / rubymime なども基本操作は同じ。

実際の例

youtu.be


Raspiのomxplayerがalsaに対応してたので、USBスピーカーが使える

$
0
0

omxplayer が alsa使えるようになってる!

omxplayer は hdmiか raspi の オーディオジャックしか使えなかった。まぁハードウェアのデコーダーを活かすためなんだろうけど。音声くらいなら問題ないので、出力先を変えるほうが便利だよねって思ってた。

いままで

mplayer -ao alsa:device=plughw=1.0 input

これから

omxplayer --hw --timeout 60s -o alsa:plughw:1,0 {input}

omxplayer で済む。

これまでは、シェルスクリプトで再生する系のコマンドは、mplayerとomxplayerを切り替えて使っていたけど、これからはomxplayer だけでいける。楽だわ

出力するスピーカーを選ぶことが出来るようになるのは便利。

バイス一覧のとり方

aplay -l

または

aplay -L

関連資料

参考資料

USBスピーカー

MySQLで複数のIPアドレスを指定

$
0
0

mysqlで複数のIPアドレスを指定する

NICを指定したり、アドレスを指定したい。DockerだのVBoxだとか、複数にIPがあるときに全アドレスでlistenするとIptableをしっかり書かなくてはいけなくなったりするので、面倒くさい。

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 127.0.0.1
bind-address            = 192.168.2.5
#
# * Fine Tuning

2つ書けばOK

'0.0.0.0'で全アドレスをListenしてしまうと不都合が多いので指定できるのは嬉しい。

NHK のニュースのTSとm3u8の動画を保存したりしてffmpegで遊ぶ

$
0
0

 NHKのニュースをアーカイブして後でみたいなと思ったり

用意するもの

はいこれだけ。

使い方

python nhk_news_web_video.py URL

きっかけ

このニュースがすごく印象的だったのでどうしても保存したかった。

このニュースはパスワードのクソ仕様に世間がようやく気付いた<嚆矢>だとおもってる。記念に残しておこうと思った。

f:id:takuya_1st:20180329233645p:plain:w200

「パスワードの定期変更は不要」総務省が呼びかけ改める

3月28日 18時27分

インターネットのパスワードを定期的に変更するよう呼びかけてきた総務省は、変更のしかたによってはかえって不正アクセスを受けやすくなるとして、安全なパスワードの場合は定期的に変更する必要はないと呼びかけの内容を改めています。

総務省はインターネットの安全な利用法に関するサイトの中で、パスワードの定期的な変更を呼びかけてきました。

しかし去年11月、この呼びかけの内容を、「定期的に変更する必要はない」に改めました。 その理由について総務省は、パスワードを定期的に変更すると、かえってパスワードの作り方がパターン化したり、複数のサイトで同じパスワードが使い回されるおそれが高まったりして、不正アクセスを受けやすくなるためとしています。

ソースコード

gist.github.com

NHKのニュースWEBの現在の仕様

  • 基本的に m3u8 を使う。
  • ニュースページに iframe でビデオページが埋まってる
  • iframe のビデオページは サムネイルとvideoタグで構成されてる。
  • iframe のビデオページにm3u8 があり、m3u8の中身はh264 の ts の列挙

このわかりやすい仕様なので、m3u8をとりだして ffmpegするだけ。

NHKのニュース保存とかでくっそ面倒なアプリを買う必要もないし、ffmpegとHTML解釈さえ出来るとソレで終わるんだけど、、、な・・・

gitlab のデータベースにアクセスする一番簡単な方法

$
0
0

あれこれ、調べたりしようとしたけど、コレが最短。

takuya@sakura:~$ sudo gitlab-rails dbconsole

gitlabの内部の postgresql /mysqlのポートやIPを調べてパスワードを調べて、どのユーザー名でーとか考えなくていいから良いよねコレで。

コマンドを起動するだけなので、docker exec から 直接起動したり出来るので便利。

スキャンされたファイルが白黒なのでフルカラーにして色つけた編集できるようにする。

$
0
0

モノクロスキャンの画像は割と面倒くさい。

複合機を使って、jpg tiffや pdf でスキャンするときに、モノクロでスキャンすると、JPEGがGrayで作られてしまう。

編集しても色が消える。

グレイで作られた画像ファイルをそのまま編集しても、色情報が失われて、白黒で保存される。たとえば、MacPreview.app などのちゃんとした画像ソフトはモノクロを意識してちゃんと保存してくれる。Photoshopなどでも元ファイルからいったん別ファイルに書き出さないとカラープロファイルが変わらない。

magick でなんとかする。

ちょっとした編集をしたり、スキャンした画像にプレビュー.app で蛍光ペンマーカーを引いても色情報が失われてしまうので、とっととフルカラーつまりsRGBにしたい。

convert input.jpg   -colorspace sRGB -type truecolor out.jpg

またはmogrify で

mogrify input.jpg   -colorspace sRGB -type truecolor out.jpg

実際にやってみる。

たとえば、次のような感じ。

takuya@Desktop$ identify  20180323170514098.tif
20180323170514098.tif[0] TIFF 4968x3508 4968x3508+0+0 1-bit Bilevel Gray 5.28382MiB 0.000u 0:00.000
20180323170514098.tif[1] TIFF 4968x3508 4968x3508+0+0 1-bit Bilevel Gray 5.28382MiB 0.000u 0:00.000
20180323170514098.tif[2] TIFF 4968x3508 4968x3508+0+0 1-bit Bilevel Gray 5.28382MiB 0.000u 0:00.000
20180323170514098.tif[3] TIFF 4968x3508 4968x3508+0+0 1-bit Bilevel Gray 5.28382MiB 0.000u 0:00.000
20180323170514098.tif[4] TIFF 4968x3508 4968x3508+0+0 1-bit Bilevel Gray 5.28382MiB 0.000u 0:00.000
20180323170514098.tif[5] TIFF 4968x3508 4968x3508+0+0 1-bit Bilevel Gray 5.28382MiB 0.000u 0:00.000
20180323170514098.tif[6] TIFF 4968x3508 4968x3508+0+0 1-bit Bilevel Gray 5.28382MiB 0.000u 0:00.000
20180323170514098.tif[7] TIFF 4968x3508 4968x3508+0+0 1-bit Bilevel Gray 5.28382MiB 0.000u 0:00.000
20180323170514098.tif[8] TIFF 4968x3508 4968x3508+0+0 1-bit Bilevel Gray 5.28382MiB 0.000u 0:00.000
20180323170514098.tif[9] TIFF 4968x3508 4968x3508+0+0 1-bit Bilevel Gray 5.28382MiB 0.000u 0:00.000
20180323170514098.tif[10] TIFF 4968x3508 4968x3508+0+0 1-bit Bilevel Gray 5.28382MiB 0.000u 0:00.000
20180323170514098.tif[11] TIFF 4968x3508 4968x3508+0+0 1-bit Bilevel Gray 5.28382MiB 0.000u 0:00.000

フルカラーにしたもの

convert コマンドと colorspaceを組みわせて出力された結果がコレ。

20180323170514098-0.jpg JPEG 4968x3508 4968x3508+0+0 8-bit sRGB 4.82438MiB 0.000u 0:00.000
20180323170514098-1.jpg JPEG 4968x3508 4968x3508+0+0 8-bit sRGB 2.75272MiB 0.000u 0:00.000
20180323170514098-10.jpg JPEG 4968x3508 4968x3508+0+0 8-bit sRGB 2.47305MiB 0.000u 0:00.000
20180323170514098-11.jpg JPEG 4968x3508 4968x3508+0+0 8-bit sRGB 3233910B 0.000u 0:00.000
20180323170514098-2.jpg JPEG 4968x3508 4968x3508+0+0 8-bit sRGB 5.17893MiB 0.000u 0:00.000
20180323170514098-3.jpg JPEG 4968x3508 4968x3508+0+0 8-bit sRGB 2.19638MiB 0.000u 0:00.000
20180323170514098-4.jpg JPEG 4968x3508 4968x3508+0+0 8-bit sRGB 2.43567MiB 0.000u 0:00.000
20180323170514098-5.jpg JPEG 4968x3508 4968x3508+0+0 8-bit sRGB 2.36627MiB 0.000u 0:00.000
20180323170514098-6.jpg JPEG 4968x3508 4968x3508+0+0 8-bit sRGB 2.15146MiB 0.000u 0:00.000
20180323170514098-7.jpg JPEG 4968x3508 4968x3508+0+0 8-bit sRGB 2.09416MiB 0.000u 0:00.000
20180323170514098-8.jpg JPEG 4968x3508 4968x3508+0+0 8-bit sRGB 7.13491MiB 0.000u 0:00.000
20180323170514098-9.jpg JPEG 4968x3508 4968x3508+0+0 8-bit sRGB 7228270B 0.000u 0:00.000

時々とまどう

白黒で複合機スキャンすると、複合機はGrayなカラー情報を使った画像を出力してくれるのだが、あとでちょいちょい編集をしようとすると割と面倒くさい。カラーだと色補正が効かなったりするので、親切でやってくれるんだろうけど。複合機でカラースキャンしてくれれば十分で、あとでぱぱっと画像編集をすれば済むのでモノクロスキャンののGray埋め込みは、編集時にハイライトが白黒にされてしまって、時々焦ることが在る。便利なのか不便なのかよくわからない感じありますよね。

スキャンが必要な状況が辛い。

もとのExcelシートそのままや、そこからJPG化したり、PDF化して渡してくれればいいのに、どうしてプリント(印刷物)にして配布したり。さらにそれをスキャンして寄越すのだろうか。。。辛さ在る。

参考資料

https://stackoverflow.com/questions/34874771/convert-jpg-image-from-grayscale-to-rgb-using-imagemagick

要素を辿るのに closestで 親要素的に辿っていく

WEBサーバー(nginx/apache)で、ディレクトリをオシャレに共有する

$
0
0

ディレクトリのインデックス機能をオシャレにする。

ファイルをネットワーク共有する一番手っ取り早い方法は、HTTPサーバーで共有することだと思いません?

認証を入れればアクセスログが残るし、どのファイルが何処にあるか解るし、Slackに貼って渡すのも便利だし。

h5ai でオシャレする。

h5ai をつかうと、わりとエクスプローラーっぽくなって、html5 auto index の略かな?

インストールした結果は

ためしに、うちのサーバーに入れてみた結果がこれ

f:id:takuya_1st:20180408013031p:plain

インストールと設定

公式のリリース zip を取ってくる

zip を取ってくる。

 curl -LJO https://release.larsjung.de/h5ai/h5ai-0.29.0.zip

公開ディレクトリにインストールする。

cd /var/www/example.com/html

ここで展開する。

 unar h5ai-0.29.0.zip

phpの設定をするんだけど、一番手っ取り早い手段があって。それは、Directory Index に設定するだけ

upstream php-fpm {
  server unix:/var/run/php/php-fpm.sock;
}

server{
   ## 略index  /_h5ai/public/index.php ;

  location ~ \.(php)$ {
    include fastcgi_params;
    fastcgi_index index.php;
    fastcgi_param   SCRIPT_FILENAME         $document_root$fastcgi_script_name;
    fastcgi_pass php-fpm;
  }

apacheのとき

DrectoryIndex  /_h5ai/public/index.php ;

apacheの場合のphp設定は、は mod_phpphp-fpm で設定が大きく異なるので割愛。

あとは、サーバーをリロード(再起動)すれば、ディレクトリ表示が盛れる!

認証に関してはいろいろ手法が在るのでコレは別のエントリに記述する。

参考資料

h5ai · modern HTTP web server index for Apache httpd, lighttpd, nginx and Cherokee · larsjung.de

Indexページは盛れる! | 技術情報ブログ | マネージドホスティングのディーネット


nginxのサイト毎の設定が面倒なのでワイルドカードでディレクトリの有無で設定する

$
0
0

nginx のサイト毎の設定が面倒くさい。

サイトが追加されるたびに、ドメインとファイルを追加するのは面倒なので、ワイルドカードで設定したい。

Apacheだとワイルドカード的なことを割と面倒くさい感じで rewrite組合せたり、virtualhost 設定をしたりだったけど、

nginx だと 正規表現と名前付き後方参照パターンマッチングで済む。

設定例

upstream php-fpm {
  server unix:/var/run/php/php-fpm.sock;
}


server {
        listen 81 ;

  server_name"~^(?<domain>.+)$";

        root /var/www/virtualhosts/$domain/www-data;

        # Add index.php to the list if you are using PHPindex /_h5ai/public/index.php ;

        server_name$domain;

        location / {
    autoindexon;
                try_files$uri$uri/ =404;
        }

  location ~ \.(php)$ {
    include fastcgi_params;
    fastcgi_index index.php;
    fastcgi_param   SCRIPT_FILENAME         $document_root$fastcgi_script_name;
    fastcgi_pass php-fpm;
  }
}

設定のポイント

これで、正規表現のパターンマッチングをして、 domain という名前で後方参照出来るようにする。

  server_name "~^(?<domain>.+)$";

これで、domain にマッチさせる。

        root /var/www/virtualhosts/$domain/www-data;

応用編

サイトのサブドメイン毎に設定したいときも同じ

  server_name "~^(?<subdomain>.+).example.com$";

こうすれば、サブドメインごとのマッチングも簡単に。

   root /var/www/example.com/$subdomain/www-data;

設定するメリット

ドメインディレクトリを作ればサブドメインドメイン毎のサイト公開ができるようになる。

この手順だと誰でも設定できるようになるので、あとはwordpressの中身をコピペすれば動くようになる。

docker で wordpressを作らなくても良くなるのは便利だよ。

参考資料

http://nginx.org/en/docs/http/server_names.html

関連資料

ワイルドカードでApacheのVirtualHost-はてなブログでやってるあれ - それマグで!

中間者攻撃するわ、公衆WiFiを語るのにフィルタリングするわ、これはダメでしょ

$
0
0

とある公衆WiFiにログインしたんですが。

これ、完全に中間者攻撃の状態ですよね。リダイレクトすらしない。WEB技術のマナーも糞もあったもんじゃない。

ログイン画面がこれ

http://t.coのURLに ログイン画面がインジェクション(改竄)されている。

f:id:takuya_1st:20180410011634p:plain

別のログイン画面の結果がこれ。

僕のブログのURLが完全に書き換わっている。

f:id:takuya_1st:20180409202104p:plain

URLそのままでは、通信の改竄に当たる

ドメインそのままで通信内容を書き換えるのは、改竄に値する。通信を提供するサービスとして、あってはならないことだ。

WEBブラウザは、ドメイン単位でセキュリティの権限を管理するSame Origin Policyがあるが、この状態では、同一生成元ポリシーがおかしなことになる。このままでは、パスワードの自動入力が正しく動作しないために、おかしなことになる。

リダイレクトしないから、暗号化通信で中間者攻撃になる。

完全に中間者攻撃としてブラウザに検出されている。

これは、セキュリティ上やっていはいけない感じがある。

f:id:takuya_1st:20180409202209p:plain

なぜだめか?

ドメインの詐称で中間者攻撃を「ただしい」とする仕様はユーザーに間違った知識を植え付ける可能性がある。

とくに、改竄される状態が「正しい」と公式宣言する現状は危うい。

しかも文字コードISO-2022-JPって

いつの時代ですかこれ。。。いまどきUTF-8使わないサイトとか久しぶりに見た。 仮にiOSだとこれどうなるんだろうか。

f:id:takuya_1st:20180409203005p:plain

はてブが止まる。

ニュースの閲覧もダメなんですか。。。

f:id:takuya_1st:20180410004506p:plain

SNSはフィルタリング対象ですか?

f:id:takuya_1st:20180409205050p:plain

HTTPSもIPベースで止めてるんですね。通信エラーにしかみえないのは、問題が多いですよね。フィルタリングしてると明示しないと

f:id:takuya_1st:20180409205200p:plain

f:id:takuya_1st:20180409205515p:plainGoogle Chromeが通信エラーとして処理するから、画面のキャプチャの状態になりChromeに救われている。

通信エラーによりストップ理由も明示されない。

通信エラーになりストップ理由が閲覧不可能になっている。

ストップされる理由が表示されないはまるで駄目ではないですか?

せめて、ストップされる理由がHTTPSで表示されるようにしてほしいです。

どの通信がストップ対象になるのか明示されないでフィルタリングはありえないと思いませんか。

何処が納入したんですかコレ

どこだよ、この事業者は、と思った。どこの機器ですかね?この辺の業者ですか?フルノ?

この入札要件書いた明石市Wifiをやる市役所職員はなんなのですか?調達要件を書く前に、すこしくらいは他の市町村や公衆無線LANを調べたんですか?

社内(庁内)の無線LANと、公衆WiFiの区別がついてないですよね。

公務員試験の合格者なら

憲法くらいは、ちゃんと勉強してるよね?憲法21条第2項を読み直してください。条文を思い出してほしいです。

利用規約にアレコレ書いたとしてやって良いことと悪いことが在る。とくに一般向けに解放してる公衆WiFiであればなおさらですよ。

盗聴しておいて、「セキュリティは万全です」はちょっと自己矛盾ではないですかね。

関連資料

明石市の職員さんには、以下の資料を読んでいただきたく思います。

日本国憲法第21条 - Wikipedia

Wi-Fi提供者向け手引きの「通信の秘密保護」と「届出義務」について

http://www.soumu.go.jp/main_sosiki/joho_tsusin/security/cmn/wi-fi/Wi-Fi_manual_for_AP.pdf

青少年ではないですから、フィルタリングには同意できないし、同意項目もないですよね。

サービスの提供者と利用条件は市役所や図書館のHPで閲覧できないけどありなの?

そういえば、地方公共団体には届出義務があったはずだけど、165条の通信事業者がフィルタリングや改竄するってありなの?(今度調べる

特定のサイトを閲覧できないようにしていた公衆無線 LAN に行政指導

Wisprについて

調達要件にwisprの文言を入れときゃよかったのに・・・

WISPr について - eggshell blue

図書館の自由に関する宣言について

なぜ、わざわざ晒し者にしてるのか、

理由はというと「図書館の自由に関する宣言」にある。 「知る権利」を提供する図書館で、こんないい加減なフィルタリングが行われているから、ムカついたので記述することにした。

図書館の自由に関する宣言

  • 第3 図書館は利用者の秘密を守る
  • 第4 図書館はすべての検閲に反対する

一般向けの公衆無線LANは職員向けの庁内LANと似てるけど同じではないでしょ。

ssh 公開鍵の指紋を確認して、gitの公開鍵ログインが通ってるか確認する。

$
0
0

サーバーのSSHのログを見ていると次のようなものがある。

git(gitlab)は 単一ユーザとしてログインして、アプリ内で別ユーザに分割するので、アクセスログを見ていると、どのログがどの公開鍵かぱっとわからない。

Accepted publickey for git from 110.66.166.xxx port ssh2: RSA SHA256:ZBTKfSJOp46Wa
Accepted publickey for git from 122.249.189.xxx port ssh2: RSA SHA256:6hsJqs+UYtaqn
Accepted publickey for git from 153.183.186.xxx port ssh2: RSA SHA256:2UsYMJTNfHog
Accepted publickey for git from 153.183.186.xxx port ssh2: RSA SHA256:6hsJqs+UYtaqn
Accepted publickey for git from 153.183.189.xxx port ssh2: RSA SHA256:NxqmEpe7bbWv
Accepted publickey for git from 183.76.241.xxx port ssh2: RSA SHA256:3R31KV8N0vK6u
Accepted publickey for git from 49.106.193.xxx port ssh2: RSA SHA256:qpG9ikqYC8kkcx

公開鍵のフィンガープリントを取得する。

ssh-keygen -lf path/to/id_rsa.pub

このコマンドを使うと、公開鍵から指紋を 取り出すことが出来る

takuya@sample$ ssh-keygen -lf out.pub
2048 SHA256:NxqmEpe7bbWvK86VQn5Xhxxxxxxxxxxxxxx takuya@test (RSA)

指紋のハッシュをSHA256で取り出すのでサーバーのログと一致して嬉しい。

gitlab などに登録された公開鍵はmd5

管理画面からは指紋がMD5なのでぱっとわからない。

公開鍵のフィンガープリントはMD5でもアプリで表示されることがあるのでその方法でも一致を確認できる

takuya@sample$ ssh-keygen -E md5  -lf  out.pub
2048 MD5:5f:37:90:4b:c3:e1:6a:fe:fd:d2:ea:7a:00:00:00:00 takuya@test (RSA)

指紋のみかたをしっておく

せっかくハッシュを見たら解るのに、意外と使いこなせないので調べた。

参考資料

SSHの鍵の指紋が正しいものかどうかチェックする方法 - くろの雑記帳

コミック発売日をを見てたら、よつばと!見つけて、わりと楽しみな4月

$
0
0

何気なくAmazonの新刊を眺めてたら

よつばと!の14が出るんですね。

そのまま、Amazonの新刊みていたら、4−5月はわりと楽しみな一ヶ月あった。

4月発売予定のロングタイトル。

ながく続いてるタイトルが続々と発売日を迎えるので本当に!?これ全部連休中に読めるか?ってワクワクしてる。

テンション上がってきたので、備忘録代わりに新刊一覧を貼っておきます。

とくに、「デミちゃんは語りたい」「ダンジョン飯」「よつばと!」は楽しみ。隔年発売のタイトルいっぱいじゃないですかぁ

大型連休前後ってコミックスの発売日が重なるんですかね?そういうものなの?

4月5月で楽しみな発売日タイトル。忘れないようにメモ

多いので、逐一メモしないと忘れる。。。ほしいものリストだとソートとか面倒だし。ココに書いておこうかなと

亜人ちゃんは語りたい(6): ヤンマガKCSP

亜人ちゃんは語りたい(6): ヤンマガKCSP

ダンベル何キロ持てる? 4 (裏少年サンデーコミックス)

ダンベル何キロ持てる? 4 (裏少年サンデーコミックス)

あまんちゅ!  12 (BLADECOMICS)

あまんちゅ! 12 (BLADECOMICS)

王家の紋章(63): プリンセス・コミックス (プリンセスコミックス)

王家の紋章(63): プリンセス・コミックス (プリンセスコミックス)

インフェクション(10) (講談社コミックス)

インフェクション(10) (講談社コミックス)

キミイロ少女 完全版 (百合姫コミックス)

キミイロ少女 完全版 (百合姫コミックス)

cut コマンドで途中を棄てる(除外)する

$
0
0

cut コマンドで中間を削除したい時

絡む指定の複数の条件を 感まで繋げば、途中のカラムをすてて、歯抜けを作ることが出来る。

cut -f 2-5,7-10

ほかにも、カンマでつなぐのは複数個作れて

cut -f 1,3,5,7

のように数字を書いてもいいし、数字が続く場合は、 4-9のようにハイフンも使える。便利

参考資料

'cut' command - Tutorial : How to 'cut' all fields except the ones specified or invert field selection

Viewing all 1867 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>