2018/01/17


仕事でサーバを運用していると某国からのアタックがそこそこ多いのだけど、出来れば早急にブロックしてしまいたかったので IP アドレスから whois を引いて CIDR 形式で表示出来るツールを作った。昔はこういうの Perl で書いた気がする。

GitHub - mattn/iputil
https://github.com/mattn/iputil

ライブラリとして作ったけど、コマンドも用意してあります。

$ go get github.com/mattn/iputil/cmd/iprange

実行結果のイメージはこんな感じ。

$ iprange [IPアドレス]
XXX.XXX.XXX.XXX/16
YYY.YY.YYY.YY/16
...

あとはこの結果を使って ufw (Universal FireWall) を使っているのであれば

$ iprange [ヤバいIPアドレス] | xargs -n 1 sudo ufw insert 1 deny from

とかすれば一発でアクセス元をブロック出来る。(はず)

Posted at by



2018/01/09


Windows と Linux 間でちょっとしたファイル転送をしたいと思った時に msys2 の ssh コマンドや WinSCP が入ってなくて、さらにレジストリなどを汚したくない環境で手軽に使える使えるファイル転送ソフトが欲しかった。Linux 側から Samba で繋いでも良いんだけど、その用途の為だけに Samba いれたくないなと思ったのでバイナリを1個ポンとコピーすれば使える物を作った。

GitHub - mattn/ft

ft is CLI tool that transfer files.

https://github.com/mattn/ft

使うには両方の端末に ft というコマンドがインストールされている必要がある。「Go が入れられるなら msys2 も(ry」とか言われてしまいそうだけど、実際にそういう環境や要件ってあるのですよ。はい。

Go で書いたので go get が出来る環境ならば1発でインストール出来ます。使い方は、ファイルを送りたい側が

$ ft serve

を実行し、受け取りたい側が

$ ft download -a 192.168.123.4

の様に実行する。serve を実行した側のカレントディレクトリ配下が download を実行したカレントディレクトリ配下に転送される。

仕組みは gRPC のストリーム API で作られている。一つはファイルの一覧を返す ListFiles、もう一つはバイナリを転送する為の Download というインタフェース。

syntax = "proto3";

//google.protobuf.Timestamp
//import google_protobuf "github.com/golang/protobuf/ptypes/timestamp";
import "google/protobuf/timestamp.proto";

package proto;

service FileTransferService {
  rpc ListFiles(ListRequestType) returns (stream ListResponseType) {};
  rpc Download(DownloadRequestType) returns (stream DownloadResponseType) {};
}

message ListRequestType {
}

message ListResponseType {
  string name = 1;
  int64 size = 2;
  uint32 mode = 3;
  google.protobuf.Timestamp modTime = 4
}

message DownloadRequestType {
  string name = 1;
}

message DownloadResponseType {
  bytes data = 1;
}

Download もストリームになっているのでデカいファイルでも転送出来ます。通信は gRPC のレベルで圧縮されます。現状は in-secure になっているけど、今後 secure オプションも付けていきたいと思う。TLS 通信をサポートしています。

Posted at by



2017/12/27


Twitter でだけで告知しててこっちで書いて無かったので。

私用の TODO 管理には Wunderlist を使っていたのだけど、Wunderlist は Microsoft に買収され Microsoft To-Do が出来た。機能に差があり慣れないと移行しづらかったけど、いつ無くなるか分からない Wunderlist を使い続けるのもアレだったので移行した。その際にデータ移行で使ったりコマンドラインから追加したりしたかったので CLI 書いた。

GitHub - mattn/to-do

Dismiss Join GitHub today GitHub is home to over 20 million developers working together to host and ...

https://github.com/mattn/to-do

使い方はシェル操作好きそうな人向け。

NAME:
   to-do - Microsoft To-Do client

USAGE:
   to-do [global options] command [command options] [arguments...]

VERSION:
   0.0.1

COMMANDS:
     add, a     Add new to-do item
     delete, x  Delete specified to-do item
     done, d    Done the specified to-do item
     list, l    Show to-do items
     show, s    Show specified to-do item
     help, h    Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --help, -h     show help
   --version, -v  print the version

list コマンドには --json もあるので jq 等のコマンドと連携も出来る。

Posted at by