FirefoxとWebExtensionとExtensionIDと。

はじめに

FirefoxのWebExtensionとNativeMessagingHostで通信をしようとしていまいちうまくいかなくていろいろ触ってみました。

まずは結論

ExtensionIDの確認がしたければ、とりあえず

console.log(chrome.runtime.id)

で吐かせましょう。

どうやってExtensionIDは決まるのか。

 "applications": {
     "gecko": {
         "id": "/^([a-z0-9-._]*@[a-z0-9-._]+|\{[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]
 {12}-\})$/i"
     }
 }

f:id:paihu:20170906222440p:plain

  • 署名済みなら addons.firefox.com の署名ページ f:id:paihu:20170906224651p:plain

  • 未署名をabout:debugging 経由で読み込んだら

毎回変わる [a-f0-9]+@temporary-addon というもの
これは、 chrome.runtime.id を表示させないとわからない気がします。
内部UUIDとは関係なさそう。

開発中どうすれば

素直に manifest.jsonに書くのがよさそうな気がします。

でも、これ書くとクロスブラウザ的な開発したいとき、 chromeに読み込ませると警告が出るのがいやらしい。。

とはいえ、開発中くらいID固定しないととってもつらいです。

CentOS7にISC Kea インストールする

メモだけ

インストール

yum -y install epel-release
yum -y install gcc gcc-c++ boost-devel flex
yum -y install log4cplus-devel botan-devel
yum -y install mysql-devel postgresql-devel
curl -L http://ftp.isc.org/isc/kea/1.2.0/kea-1.2.0.tar.gz -o kea-1.2.0.tar.gz
tar axf kea-1.2.0.tar.gz
cd kea-1.2.0
./configure --with-dhcp-mysql --with-dhcp-pgsql --enable-shell --prefix=/opt/kea
make install
ldconfig

DB初期化(mariadb)

# yum -y install mariadb-server
# systemctl start mariadb
# mysqladmin -u root password 'root'
# mysql -u root -p
password: ****
mysql> create user 'kea'@'localhost' IDENTIFIED BY 'kea';
mysql> create database 'kea';
mysql> grant all on kea.* to 'kea';
mysql> exit;
# kea-admin  lease-init mysql -u kea -p kea -n kea

設定(databaseにMariadbを指定)

    "lease-database": {
        "type": "mysql",
        "name": "kea",
        "user": "kea",
        "password": "kea",
        "host": "localhost",
        "port": 3306
    },
     "hosts-database": {
         "type": "mysql",
         "name": "kea",
         "user": "kea",
         "password": "kea",
         "host": "localhost",
         "port": 3306
     },

データベースの内部については http://kea.isc.org/wiki/HostReservationsHowTo ここを。

IPV4なら hosts に いわゆる固定IPアドレス払い出し用情報、 lease4 に 払い出したIPv4 情報 が載ってます。

select (HEX(hwaddr)),(HEX(address)) from lease4;

とかでリースしているIPAddresとMacAddressの組み合わせが見られますね。

ログとれた

OSQuery で process_eventsをゲットしようとしてみたところ、どうもうまくいってない。

具体的には、audit.logにはどんどんログたまってるのに select * from process_events; しても1件も取れず。 osqueryd 動かしていても result.logが全く記録されない感じ。

環境

Process

[vagrant@localhost ~]$ ps aux | grep osquer[y]
root     18816  0.0  1.7 217572  8516 ?        SNsl 01:41   0:00 /usr/bin/osqueryd --flagfile /etc/osquery/osquery.flags --config_path /etc/osquery/osquery.conf
root     18819  0.0  1.8 357320  9432 ?        SNl  01:41   0:00 osqueryd: worker

config

[vagrant@localhost ~]$ cat /etc/osquery/osquery.conf
{
  "schedule": {
    "process_events": {
      "query": "select * from process_events;",
      "interval": 60
    },
    "user_events": {
      "query": "select * from user_events;",
      "interval": 60
    }
  }
}

flag

[vagrant@localhost ~]$ cat /etc/osquery/osquery.flags
--disable_events=false
--disable_audit=false
--audit_allow_config=true
--audit_persist=true

INFO

[vagrant@localhost ~]$ cat /var/log/osquery/osqueryd.INFO
Log file created at: 2017/08/07 01:41:22
Running on machine: localhost.localdomain
Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
I0807 01:41:22.665422 18819 events.cpp:824] Event publisher failed setup: kernel: Cannot access /dev/osquery
I0807 01:41:22.665441 18819 events.cpp:824] Event publisher failed setup: syslog: Publisher disabled via configuration

追記

よくわからないけれど、再起動で拾えるようになった。