追記

野良犬日記 2.1

RDF/RSS
この日記の検索

最近のツッコミ:


2022-07-28 (Thu) [長年日記]

_ [srv]Github Pages でも cross-site isolation

できるらしい

https://github.com/gzuidhof/coi-serviceworker

これで任意の HTML 置き場から ffmpeg.wasm できる (サーバからのレスポンスを変更できなくてもいい)


2022-07-26 (Tue) [長年日記]

_ [srv]Youtube API の応答を中継したい

Youtube のコメントを見る Chrome 拡張を作ってみたが、もし公開するなら API鍵を拡張の中に含めないほうがいいらしいので、OpenWRT の Lua CGI で中継できるのかどうか試行してみた。

しかし、使おうと思った luci.httpclient が https の処理に nixio.tls を必要とするのに、OpenWRT の nixio は tls 抜きで作られており、うまくいかなかった。

とりあえず wget を呼ぶとかいうアホくさいことをして、動くことだけ確認したところでもうやめた。

 #!/usr/bin/lua
 local nixio = require("nixio")

 local host = nixio.getenv("HTTP_HOST") or ""
 if host ~= "example.com" then
  return
 end

 local method = nixio.getenv("REQUEST_METHOD") or ""
 if method ~= "GET" then
  return
 end

 local q = nixio.getenv("QUERY_STRING") or ""
 local vid = string.match(q, "^vid=([0-9A-Za-z_-]+)$")
 local vidlen = string.len(vid or "")

 if vidlen == 11 then
  local pipe = io.popen("wget -q -O - 'https://www.googleapis.com/youtube/v3/commentThreads?maxResults=10&order=relevance&part=snippet&textFormat=plaintext&key=XXXXX&videoId=" .. vid .. "'")
  local json = pipe:read("*a")
  local result = {pipe:close()}

  print("Access-Control-Allow-Origin: https://www.youtube.com\r")
  print("Content-Type: application/json; charset=UTF-8\r")
  print("\r")
  if result[1] and type(json) == "string" and json:len() > 1 then
   print(json)
  else
   print('{"items":[]}')
  end
 end

2022-06-20 (Mon) [長年日記]

_ [ahk]AutoHotkey で検索回数を減らすために覚えておくこと

AHK1.1 系の話になるが、だいたい括弧のつくタイプの

 Foo(arg)

は引数が expression なので、変数はそのまま書くし文字列はクオートする。しかし

 Bar, arg

は変数を %var% しなければいけない(ことが多い)し文字列はそのまま書く(ことが多い)。

つまり

 Foo(var, "v=" v)

 Bar, %var%, v=%v%

みたいな感じになることが多い。そのままだと頭が混乱するので、

 Foo(var, "v=" v)
 Bar, % var, % "v=" v

というように書き方を似せておくと書きやすい。

これまでは毎回 expression かどうかを調べていたけど、 これだけで調べる回数が大幅に減った。

それでも意味の分からない仕様が多くて面倒なことに変わりはないが。


2022-05-02 (Mon) [長年日記]

_ [music] SCLL の既視感

今頃になって Spangle call Lilli line というバンドを知った。

英語みたいに聞こえる日本語、のような実際には日本語ですらないような歌詞が付いていて面白い。

I know you can be って言ってるのかと思わせて、やっぱり「あの花瓶」かな、と思わせておいて、「あの過敏揺らす日 わずかに」って何やねん。

そんな歌詞なので、他のことに集中していると無視できて作業用 BGM に良いし、あとから歌詞をチェックすると笑える。

でも、こういうの初めてというよりは、どこかで見たことあるな~、と思っていた。

その既視感が今ちょうど分かった。これ自動文字起こし (の失敗) で見るやつだ。昔は多かったし、今でも滑舌の悪い日本語 YouTube 動画で見ることができる。

「……するとUIが全て日本語になります」と言っている動画の字幕が「……するという愛が全て日本語になります」と表示されたのを見た瞬間、ビビッと来た。

あ~すっきりした。


2021-07-25 (Sun) [長年日記]

_ [srv]OpenWRTで直接公開する

古い PC とか使うと熱暴走が怖いし、いろいろ面倒になってきたので、OpenWRT 自体を公開しちゃう方法も調べてみた。(そのまま公開するかどうかは保留中)

WAN が一つなら問題ないけど、普段 IPv6 / DS-Lite を出口にしつつ、PPPoE への要求にだけ (DS-Lite 側じゃなくて) PPPoE 側で答えるようにするのは結構難しかった。

iptables で mark 付けたりして、うまくできるのかもしれないけど、よく分からなかった。

mwan3

けっきょく mwan3 を使った。

DS-Lite と PPPoE に metric を振っておいて、policy と rule を作っていく。

ぜんぶ書きかえるのは面倒だったので、PPPoE は wanb_only という policy、DS-Lite 優先は wan_wanb という policy を流用した。

ルールは順番が大事なので、

config rule 'httpd'
       option dest_ip '0.0.0.0/0'
       option family 'ipv4'
       option proto 'tcp'
       option src_ip '192.168.1.1'
       option src_port '8080,8443'
       option sticky '0'
       option use_policy 'wanb_only'

config rule 'default_rule_v4'
       option dest_ip '0.0.0.0/0'
       option family 'ipv4'
       option proto 'all'
       option sticky '0'
       option use_policy 'wan_wanb'

みたいな感じで、特例を先に書くみたい。

firewall

あとは普通に firewall で

config rule
       option name 'Allow-HTTP'
       option src 'pppoe'
       option family 'ipv4'
       option proto 'tcp'
       option dest_port '80 443'
       option target 'ACCEPT'

config redirect
       option name 'http'
       option src 'pppoe'
       list proto 'tcp'
       option src_dport '80'
       option dest_port '8080'
       option dest 'lan'
       option target 'DNAT'
       option dest_ip '192.168.1.1'

みたいな感じでいいんじゃないかな。

lan から pppoe を通って出られるようになっていれば、 pppoe の zone の既定では input も forward も ACCEPT する必要がない。 いまどき input 開けてて問題なのかどうかは知らない。

uhttpd

LuCI を公開することはないだろうから、uhttpd は listen_http='0.0.0.0:80' になっているのを '192.168.1.1:80' とかに絞っておくほうが分かりやすそう。 私なら、そうしておいても絶対どっちがどっちか分からなくなる気がするけど。

ddns と acme

LuCI で ddns の設定をしたりステータス確認ができたりするのは、やっぱり楽。

Let's encrypt の acme も LuCI から設定できるみたいだけど、こちらはディスクが一杯になりそうだから試していない。acme っていうパッケージを入れて設定ファイルから手作業でやって /etc/init.d/acme start して数分後に logread するのも、そんなに手間ではない。


2002|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|10|11|12|
2011|02|04|05|06|07|08|09|10|11|12|
2012|01|03|04|05|06|09|11|12|
2013|02|03|09|10|11|
2014|02|03|04|06|09|
2015|11|
2016|01|04|09|10|
2017|04|05|07|
2018|04|08|12|
2019|07|08|10|
2020|04|05|06|07|08|
2021|01|02|07|
2022|05|06|07|