ちょっと前まではもしかしてFTPサーバ入れとくの最高なんじゃねとか言ってた気もしました。
Androidのアプリがさー。CIFSが一番ちゃんと動くのですよ。そうなのよ。対応してるアプリも多いしさ。畜生め。
FTPで、画像が直接開けて、スワイプで次の画像に行けて、ってアプリがそもそも滅多に無い。そんなアプリも、FTPだと何かもう接続切れたり固まったりロード失敗したり異様に重くなったりしまくって大変です。何故だ。
鯖のせいかもしれないと思って、Filezilla Serverの代わりにpyftpdlibで即席FTP鯖も書いてみたりしたんですよ。ソースもサンプルまんまに近いけど一応載せとくか。
from pyftpdlib import ftpserver
HOST = '0.0.0.0'
PORT = 21
USER_LIST = (
# (username, password, homedir[, perm])
('hogeuser', 'hogeplainpassword', 'D:/hogefolder'),
('piyouser', 'piyoplainpassword', 'D:/piyofolder'),
)
FTP_TIMEOUT = 2
DTP_TIMEOUT = 2
IN_BUFFER_SIZE = 1048576
OUT_BUFFER_SIZE = 1048576
def ftp_server():
authorizer = ftpserver.DummyAuthorizer()
for user in USER_LIST:
authorizer.add_user(*user)
dtp_handler = ftpserver.DTPHandler
dtp_handler.timeout = DTP_TIMEOUT
dtp_handler.ac_in_buffer_size = IN_BUFFER_SIZE
dtp_handler.ac_out_buffer_size = OUT_BUFFER_SIZE
handler = ftpserver.FTPHandler
handler.authorizer = authorizer
handler.timeout = FTP_TIMEOUT
handler.dtp_handler = dtp_handler
address = (HOST, PORT)
ftpd = ftpserver.FTPServer(address, handler)
ftpd.serve_forever()
if __name__ == '__main__':
ftp_server()
即席テストなのでもう平文パスワードとか男らしいコードに惚れて火傷するぜ。
ファイル名はCP932になっちゃうけど、元々CP932なFTP鯖が欲しかったのでちょうど良かった。
バカみたいに短いタイムアウトになってるのは、Androidの色々なファイルマネージャーからFTP掛けてログ見てると結構怪しい挙動のが多くて、つーかFTPの仕様自体が曖昧なのかもだけど、まー色々あって短くしてみたのだった。でも、あちらを立てればこちらが立たず的な状況になったので、多分こんな短くない方がいい気はしました。
つーかFTP諦めたんで、この辺は全部どうでもいい話である。
で、CIFSでやってみたらド安定だったので。うむ。Androidでも便利だし、Windowsではもちろん超便利だし。
WANになったらまた掌を返すかもしれんけどさ。
つーことで、何かめんどくさいイメージだったけど、ちゃんと調べたらそうでもなかった、という話。
いやまー「結局どれがファイル共有の設定なんですか」「これで動いてるけど本当に大丈夫なのか」って感じの面倒さは物凄いですが。
まあ、Windowsはどうしてもなあ。過去の資産の膨大さがとてつもないから、機能を整理する訳にも行かずに増築を繰り返すとこうなってしまうのかもしれない、とは思うのですよ。もちろん、MSはアホウなんじゃねーのかな、という感じのソレも多々ありますが。つーか良く考えたら7で動かないソフトとか結構あるもんな。ハハハ。何が過去の資産だ。
で。
適当なサーバソフトなんかで「アクセスにはIDとパスワードが必要なようにしたいぜー(普通そうだろ)」となると、ユーザー情報はソフトの設定で登録するだけみたいなのが多いんで気楽だけど、Windowsのファイル共有の場合、IDとパスワードはWindowsのユーザーとして登録してやらんと駄目、ってのがまず面倒そうだなーと思ってた。ユーザー作成っつーと、コンパネ→ユーザーアカウント、しか知らなかったし。あれで作るとフォルダとか作られるよなあ。
でも、コンピュータの管理の中からユーザー作れば良かったのな。簡単じゃないか。
ただ、それだけだとユーザーの切り替えとかの画面にはユーザー名が出ちゃうんで、ログイン可能にしつつも名前は出さない、という設定を探したら、
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList]
"hogeuser"=dword:00000000
みたいなレジストリを登録すれば行けるのな。少なくともXPとVistaと7では行けるらしい。うちの7では行けた。
hogeuser
は対象ユーザー名で。複数書けば複数行ける模様。まあ、SpecialAccounts\UserList
とかで検索すればもっとまともな解説に当たることでしょう。
んで、ファイル共有の設定も、フォルダのプロパティ→共有→詳細な共有、から適当にそれっぽく設定したら行けた。パスワードを必要にする設定は、アクセス許可のとこでEveryone消して、適当なユーザーを追加してフルコントロールでも与えといて、と。
これでいいのかどうか物凄く怪しいのだが。間違ってたら教えてください是非。
つーか十分めんどくさかったんで、いっそSambaのWindows版とか無いものかと探しそうになりました。落ち着け、Sambaも面倒だ。
で、今んとこ実に快適ではあります。それはそれはもう。
ただ、何だかんだ面倒な気がするし、NASでも買った方が格段に楽そうだけど。でもバックアップも考えると結構な費用になるしなあ。