Mosquittoに、Python Paho MQTT libraryを使ってアクセスする

あらかじめ起動しておいたMosquittoにPython Paho MQTT library (pkgsrc/net/py-paho-mqtt 2.1.0)を使って、Mosquittoの受信したデータを、InfluxDB 1 (pkgsrc/databases/influxdb)に保存する。 なぜInfluxDBに保存するのかと言うと、最終的にMosquittoで受信したデータをGrafana (pkgsrc/www/grafana)で表示するためである。

乱数をMosquittoに送信し、それを購読して、InfluxDBに保存する。

#!/usr/pkg/bin/python3.14

#
# Subscribe mosquitto MQTT server and store data into InfluxDB 1
#

import time
import random
import ssl

from paho.mqtt.enums import MQTTProtocolVersion
import paho.mqtt.client as mqtt
from influxdb import InfluxDBClient

# Connection information for InfluxDB 1.x
INFLUXDB_HOSTNAME = 'localhost'
INFLUXDB_PORT = 8086
INFLUXDB_DATABASE = 'mqtt001'
INFLUXDB_USERID = 'admin'
INFLUXDB_PASSWORD = 'ADMIN_PASSWORD'

# Connection information of MQTT
MQTT_BROKER = 'MYHOSTNAME'
MQTT_PORT = 8883
MQTT_TOPIC = 'topic/0001'

# Instantiate InfluxDB
influx_client = InfluxDBClient (
    host=INFLUXDB_HOSTNAME,
    port=INFLUXDB_PORT,
    username=INFLUXDB_USERID,
    password=INFLUXDB_PASSWORD,
    database=INFLUXDB_DATABASE
)

# Create database at first at once
influx_client.create_database(INFLUXDB_DATABASE)

# Callback function for MQTT subscription
def on_message (client, userdata, message):
    payload = message.payload.decode('utf-8')
    timestamp = int(time.time() * 1000000000) # in ns
    # debug print
    print (f'Received: {payload}')

    json_body = [
        {
            "measurement": "sensor_data",
            "tags": {
                "device": "dev001_reg700"
            },
            "fields": {
                "value": float(payload)
            },
            "time": timestamp
         }
    ]

    # Write data to InfluxDB
    influx_client.write_points(json_body)

# Create MQTT client
mqtt_client = mqtt.Client(
    callback_api_version=mqtt.CallbackAPIVersion.VERSION2,
    protocol=MQTTProtocolVersion.MQTTv5
)

# Assign callback function on receiving
mqtt_client.on_message = on_message

# Setup TLS connection
tls_context = ssl.create_default_context()
tls_context.verify_mode = ssl.CERT_REQUIRED
mqtt_client.tls_set_context(tls_context)

# Use user ID and password auth
PUBSUB_ID = 'user001'
PUBSUB_PW = 'password001'
mqtt_client.username_pw_set(
    username=PUBSUB_ID,
    password=PUBSUB_PW
)

# Connect to broker
mqtt_client.connect(
    host=MQTT_BROKER,
    port=MQTT_PORT, 
    keepalive=60
)


# Start to subscribe
mqtt_client.subscribe(topic=MQTT_TOPIC)
## debug print
print (f'Subscribe topic: {MQTT_TOPIC}')

# main loop in another thread
mqtt_client.loop_start()


# Testing publishing
while True:
    value = round(random.uniform(10, 30), 2)
    mqtt_client.publish(MQTT_TOPIC, str(value))
    print(f'Published: {value}')
    time.sleep(1)

Mosquittoを安全に利用する

はじめに

pkgsrc/net/mosquitto-2.1.2nb1を使う機会があったのだが、なるべく安全な方法で利用したいと思っていた。 TLS証明書を利用して暗号化された経路で通信し、接続にはユーザーIDとパスワードによるユーザー認証を利用し、ユーザー毎にアクセス制限を設定したい。 また、受信した情報はファイルに保存しておきたい。

設定は/usr/pkg/etc/mosquitto.confに書けば良い。

TLS証明書を利用する

Let's Encryptで取得したTLS証明書が使える。 以下のように設定すれば良い。 これは、pkgsrc/security/acmeshを使って取得したものだが、どのような方法で取得しても良い。

certfile /var/db/mosquitto/.acme.sh/MYHOSTNAME.net_ecc/fullchain.cer
keyfile /var/db/mosquitto/.acme.sh/MYHOSTNAME_ecc/app4.ryoon.net.key
cafile /var/db/mosquitto/.acme.sh/MYHOSTNAME_ecc/ca.cer

接続にユーザーIDとパスワードによるユーザー認証を利用する

ユーザー毎にアクセス制限を設定するためにも、ユーザーIDとパスワードによりユーザー認証をした上で接続する必要がある。 これは、以下のように設定すれば良い。

password_file /var/db/mosquitto/mosquitto.passwd

この中身は、mosquitto_passwd(1)で生成すれば良い。 以下のようにユーザーIDとパスワードをmosquitto.passwdとして用意しておき、mosquitto_passwdコマンドでパスワードをハッシュ化したファイルに変換すれば良い。 ハッシュアルゴリズムも選択できるようだ。

$ cat mosquitto.passwd
user001:password001
user002:password002
$ mosquitto_passwd -U mosquitto.passwd
$ cat mosquitto.passwd
user001:$7$1000$qmp3mSmMucnEwhH3vLWRLquFBPYVQFdALWJwvihS7UI6d2cTKSma77hbTeYFSoJ+M/WTowwzUg7klW+7ClbNng==$YxIm/PFeBoiCN9xBvV9XR1XWK6VqIJrwE432iX7b5ygnoyKKMRSHf9rk/9Lw02Gp9FWfhwnPU8ugzPJUIDzImA==
user002:$7$1000$x8FPjLROciMpi7q7OIkV+cdzEf+Eo02kGMuPaWALcoS9Vt7G9J/um376TaGuSDOj76HSvL8HIla8HHQx7DkJGQ==$3V1pN+4ApuSBPtnyzxfSWSnUb01Q0EjQ6LmkAQb+VetHuxCkcJkzEhQyG2Y6F7MWgG1DqfyrJIWCF7pYqHuquQ==

ユーザー毎にアクセス制限を設定する

まず、アクセス制限の内容を読み込むように/usr/pkg/etc/mosquitto.confに以下のように設定する。

acl_file /var/db/mosquitto/mosquitto.acl

その上で、/var/db/mosquitto/mosquitto.aclを以下のように設定する。 user001は全てのトピックに読み書きでき、user002は全てのトピックに書き込みだけできるようにする。 データと投入するクライアントはuser002でアクセスして来ることを想定し、user001で接続することを想定している。 user001は書き込みはできなくても良いのだが。

$ cat /var/db/mosquitto/mosquitto.acl
user user001
topic readwrite #

user user002
topic write #

受信したデータをファイルに保存する

/var/db/mosquitto/mosquitto.dbに保存するように設定する。

autosave_interval 60
autosave_on_changes true
persistence true
persistence_file mosquitto.db
persistence_location /var/db/mosquitto

その他

他にも設定してある内容は以下のようだ。

# mosquitto daemonを動かすユーザー
user mosquitto
# 待ち受けるポート
istener 8883
# ログとしてsyslogに出力するレベル
log_type debug

NetBSDでPostgreSQLサーバーを動かす

NetBSDでPostgreSQLサーバーを動かすのだが、受け付ける接続数を多くしたい。 具体的には/usr/pkg/pgsql/data/postgresql.confでmax_connectionsに100を設定したい。

そうするには、kern.ipc.semmnikern.ipc.semmnsの数を増加させる必要があるようだ。

# vi /etc/sysctl.conf
kern.ipc.semmni=100
kern.ipc.semmns=512

この位に増やせば、以下のように設定できるようだ。

# vi /usr/pkg/pgsql/data/postgresql.conf
max_connections = 100

man pageによると、以下のように説明されている。

$ man 7 sysctl
kern.ipc.semmni
        Max number of number of semaphore identifiers.

kern.ipc.semmns
        Max number of number of semaphores in system.

Microsoftのoutlook.comで作ることのできる電子メールアドレスのドメイン

hotmail.comにアカウントを作ったのはFreeBSDベースのサーバーが使われていると聞いた頃だったような気がする。既にMicrosoftのサービスになっていたような気がするが、まだ20世紀だった気もする。 ローカルパートが4文字で電子メールアドレスを取得できたので、それなりに早い時期に作ったのだろう。 それから、live.comやlive.jp、msn.comといったドメインで電子メールアドレスが作れるようになり、hotmail.co.jpというドメインでも作れるようになった気がする。

今は、hotmail.comに加えて、outlook.comとoutlook.jpというドメインが利用できるようになっている。 だが、それはウェブブラウザーのHTTPのAccespt-Languageヘッダーによることは分かっていた。 Firefoxの各言語設定で、どういうドメインで電子メールアドレスを作れるのか調べてみた。 どれも日本のIPアドレスから調べているので、純粋にAccespt-Languageヘッダーの最初の言語による違いを表にしている。

ちゃんと取得完了できるかというのは、言語をfrに設定して、outlook.frドメインの電子メールアドレスを取得できたので、他もできそうに思う。

言語 ドメイン
en-us outlook.com hotmail.com
en outlook.com hotmail.com
ja outlook.jp outlook.com hotmail.com
ab outlook.com hotmail.com
ach outlook.com hotmail.com
aa outlook.com hotmail.com
af outlook.com hotmail.com
ak outlook.com hotmail.com
tw outlook.com hotmail.com
sq outlook.com hotmail.com
am outlook.com hotmail.com
ar-dz outlook.sa outlook.com hotmail.com
ar-bh outlook.sa outlook.com hotmail.com
ar-eg outlook.sa outlook.com hotmail.com
ar-iq outlook.sa outlook.com hotmail.com
ar-jo outlook.sa outlook.com hotmail.com
ar-kw outlook.sa outlook.com hotmail.com
ar-lb outlook.sa outlook.com hotmail.com
ar-ly outlook.sa outlook.com hotmail.com
ar-ma outlook.sa outlook.com hotmail.com
ar-om outlook.sa outlook.com hotmail.com
ar-qa outlook.sa outlook.com hotmail.com
ar-sa outlook.sa outlook.com hotmail.com
ar-sy outlook.sa outlook.com hotmail.com
ar-tn outlook.sa outlook.com hotmail.com
ar-ae outlook.sa outlook.com hotmail.com
ar-ye outlook.sa outlook.com hotmail.com
ar outlook.sa outlook.com hotmail.com
an outlook.com hotmail.com
hy outlook.com hotmail.com
as outlook.com hotmail.com
ast outlook.com hotmail.com
av outlook.com hotmail.com
ae outlook.com hotmail.com
ay outlook.com hotmail.com
az outlook.com hotmail.com
bm outlook.com hotmail.com
ba outlook.com hotmail.com
eu outlook.es outlook.com hotmail.com
be outlook.com hotmail.com
bn outlook.com hotmail.com
bi outlook.com hotmail.com
bs outlook.com hotmail.com
br outlook.com hotmail.com
bg outlook.com hotmail.com
my outlook.com hotmail.com
ca-valencia outlook.com hotmail.com
ca outlook.es outlook.com hotmail.com
ch outlook.com hotmail.com
ce outlook.com hotmail.com
ny outlook.com hotmail.com
zh-cn outlook.com hotmail.com
zh-hk outlook.com hotmail.com
zh-sg outlook.com hotmail.com
zh-tw outlook.com hotmail.com
zh outlook.com hotmail.com
cu outlook.com hotmail.com
cv outlook.com hotmail.com
kw outlook.com hotmail.com
co outlook.com hotmail.com
cr outlook.com hotmail.com
crh outlook.com hotmail.com
hr outlook.com hotmail.com
cs outlook.cz outlook.com hotmail.com
da outlook.dk outlook.com hotmail.com
dv outlook.com hotmail.com
nl-be outlook.be outlook.com hotmail.com
nl outlook.com hotmail.com
dz outlook.com hotmail.com
en-au outlook.com outlook.com.au hotmail.com
en-bz outlook.com hotmail.com
en-ca outlook.com hotmail.com
en-ie outlook.ie outlook.com hotmail.com
en-jm outlook.com hotmail.com
en-nz outlook.co.nz outlook.com hotmail.com
en-ph outlook.ph outlook.com hotmail.com
en-za outlook.com hotmail.com
en-tt outlook.com hotmail.com
en-gb outlook.com hotmail.com
en-zw outlook.com hotmail.com
eo outlook.com hotmail.com
et outlook.com hotmail.com
ee outlook.com hotmail.com
fo outlook.com hotmail.com
fj outlook.com hotmail.com
tl outlook.com hotmail.com
fi outlook.com hotmail.com
fr-be outlook.be outlook.com hotmail.com
fr-ca outlook.com hotmail.com
fr-fr outlook.fr outlook.com hotmail.com
fr-lu outlook.com hotmail.com
fr-mc outlook.fr outlook.com hotmail.com
fr-ch outlook.com hotmail.com
fr outlook.fr outlook.com hotmail.com
fy outlook.com hotmail.com
fur outlook.com hotmail.com
ff outlook.com hotmail.com
gl outlook.com hotmail.com
lg outlook.com hotmail.com
ka outlook.com hotmail.com
de-at outlook.com outlook.at hotmail.com
de-de outlook.de outlook.com hotmail.com
de-li outlook.de outlook.com hotmail.com
de-lu outlook.de outlook.com hotmail.com
de-ch outlook.com hotmail.com
de outlook.de outlook.com hotmail.com
el outlook.com.gr outlook.com hotmail.com
kl outlook.com hotmail.com
gn outlook.com hotmail.com
gu outlook.com outlook.in hotmail.com
ht outlook.com hotmail.com
ha outlook.com hotmail.com
haw outlook.com hotmail.com
he outlook.co.il outlook.com hotmail.com
hz outlook.com hotmail.com
hil outlook.com hotmail.com
hi outlook.com outlook.in hotmail.com
ho outlook.com hotmail.com
hu outlook.hu outlook.com hotmail.com
is outlook.com hotmail.com
io outlook.com hotmail.com
ig outlook.com hotmail.com
id outlook.co.id outlook.com hotmail.com
ia outlook.com hotmail.com
ie outlook.com hotmail.com
iu outlook.com hotmail.com
ik outlook.com hotmail.com
ga outlook.com hotmail.com
it-ch outlook.it outlook.com hotmail.com
it outlook.it outlook.com hotmail.com
jv outlook.com hotmail.com
kab outlook.com hotmail.com
kn outlook.com outlook.in hotmail.com
kr outlook.com hotmail.com
cak outlook.com hotmail.com
ks outlook.com hotmail.com
csb outlook.com hotmail.com
kk outlook.com hotmail.com
km outlook.com hotmail.com
ki outlook.com hotmail.com
rw outlook.com hotmail.com
ky outlook.com hotmail.com
rn outlook.com hotmail.com
tlh outlook.com hotmail.com
kv outlook.com hotmail.com
kg outlook.com hotmail.com
kok outlook.com hotmail.com
ko-kp outlook.com hotmail.com
ko-kr outlook.kr outlook.com hotmail.com
ko outlook.kr outlook.com hotmail.com
ku outlook.com hotmail.com
lo outlook.com hotmail.com
ltg outlook.com hotmail.com
la outlook.com hotmail.com
lv outlook.lv outlook.com hotmail.com
lij outlook.com hotmail.com
li outlook.com hotmail.com
ln outlook.com hotmail.com
lt outlook.com hotmail.com
dsb outlook.com hotmail.com
lu outlook.com hotmail.com
lb outlook.com hotmail.com
mk-mk outlook.com hotmail.com
mk outlook.com hotmail.com
mai outlook.com hotmail.com
mg outlook.com hotmail.com
ms outlook.my outlook.com hotmail.com
ml outlook.com outlook.in hotmail.com
mt outlook.com hotmail.com
gv outlook.com hotmail.com
mi outlook.com hotmail.com
mr outlook.com outlook.in hotmail.com
mh outlook.com hotmail.com
zam outlook.com hotmail.com
mix outlook.com hotmail.com
mn outlook.com hotmail.com
na outlook.com hotmail.com
nv outlook.com hotmail.com
nd outlook.com hotmail.com
nr outlook.com hotmail.com
ng outlook.com hotmail.com
ne outlook.com hotmail.com
no outlook.com hotmail.com
nb outlook.com hotmail.com
nn outlook.com hotmail.com
oc outlook.com hotmail.com
or outlook.com hotmail.com
oj outlook.com hotmail.com
om outlook.com hotmail.com
os outlook.com hotmail.com
pi outlook.com hotmail.com
ps outlook.com hotmail.com
fa-ir outlook.com hotmail.com
fa outlook.com hotmail.com
pl outlook.com hotmail.com
pt-br outlook.com outlook.com.br hotmail.com
pt-pt outlook.pt outlook.com hotmail.com
pt outlook.pt outlook.com hotmail.com
pa-in outlook.com outlook.in hotmail.com
pa-pk outlook.com hotmail.com
pa outlook.com hotmail.com
qu outlook.com hotmail.com
rm outlook.com hotmail.com
ro-md outlook.com hotmail.com
ro-ro outlook.com hotmail.com
ro outlook.com hotmail.com
ru-md outlook.com hotmail.com
ru outlook.com hotmail.com
sm outlook.com hotmail.com
sg outlook.com hotmail.com
sa outlook.com hotmail.com
sat outlook.com hotmail.com
skr outlook.com hotmail.com
sc outlook.com hotmail.com
sco outlook.com hotmail.com
gd outlook.com hotmail.com
sr outlook.com hotmail.com
ii outlook.com hotmail.com
szl outlook.com hotmail.com
sd outlook.com hotmail.com
si outlook.com hotmail.com
ss outlook.com hotmail.com
sk outlook.sk outlook.com hotmail.com
sl outlook.com hotmail.com
so outlook.com hotmail.com
son-ml outlook.com hotmail.com
son outlook.com hotmail.com
nso outlook.com hotmail.com
st outlook.com hotmail.com
meh outlook.com hotmail.com
es-ar outlook.com.ar outlook.com hotmail.com
es-bo outlook.com hotmail.com
es-cl outlook.cl outlook.com hotmail.com
es-co outlook.com hotmail.com
es-cr outlook.com hotmail.com
es-do outlook.com hotmail.com
es-ec outlook.com hotmail.com
es-sv outlook.com hotmail.com
es-gt outlook.com hotmail.com
es-hn outlook.com hotmail.com
es-mx outlook.com hotmail.com
es-ni outlook.com hotmail.com
es-pa outlook.com hotmail.com
es-py outlook.com hotmail.com
es-pe outlook.com hotmail.com
es-pr outlook.com hotmail.com
es-es outlook.es outlook.com hotmail.com
es-uy outlook.com hotmail.com
es-ve outlook.com hotmail.com
es outlook.es outlook.com hotmail.com
su outlook.com hotmail.com
sw outlook.com hotmail.com
sv-fi outlook.com hotmail.com
sv-se outlook.com hotmail.com
sv outlook.com hotmail.com
ty outlook.com hotmail.com
tg outlook.com hotmail.com
ta outlook.com outlook.in hotmail.com
tt outlook.com hotmail.com
te outlook.com outlook.in hotmail.com
th outlook.co.th outlook.com hotmail.com
bo outlook.com hotmail.com
tig outlook.com hotmail.com
ti outlook.com hotmail.com
to outlook.com hotmail.com
trs outlook.com hotmail.com
ts outlook.com hotmail.com
tn outlook.com hotmail.com
tr outlook.com outlook.com.tr hotmail.com
tk outlook.com hotmail.com
ug outlook.com hotmail.com
uk outlook.com hotmail.com
hsb outlook.com hotmail.com
ur outlook.com hotmail.com
uz outlook.com hotmail.com
ve outlook.com hotmail.com
vi outlook.com.vn outlook.com hotmail.com
vo outlook.com hotmail.com
wa outlook.com hotmail.com
cy outlook.com hotmail.com
wo outlook.com hotmail.com
xh outlook.com hotmail.com
yi outlook.com hotmail.com
yo outlook.com hotmail.com
za outlook.com hotmail.com
zu outlook.com hotmail.com

mu4eを日本語の電子メールに対して使ってみる

以前、mu4e使おうとしたことがあるのだが、日本語の電子メールを検索できないだけでなく、正常に表示もできなかったので、あきらめてしまっていた。 結局、Notmuchで試したら何も問題なく動いたので、Notmuchを使い始めて、今に至っている。

いつの間にか、mu4eもpkgsrc/mail/muとしてpkgsrcにも収録されるようになっているので、mu-1.14.1nb1を使ってみた。

いろいろ試してみると、以下のようにすれば日本語の電子メールも正しく扱えるようにデータベースを構築できた。 --support-ngrams trueを追加しておけば、XAPIAN_CJK_NGRAM環境変数を定義しておく必要はないようだ。

$ mu init --maildir ~/.maildir --personal-address my-first@example.com --personal-address my-second@example.org --personal-address my-third@example.jp --personal-address my-fourth@example.net --support-ngrams true
$ mu index

Emacsの設定は、特に特別なものである必要はないようだった。 ただ、私にはmu4eのキーバインディングは合わないので、やはりNotmuchを使うことにした。

Adobe Acrobat Readerのオフラインインストーラーを入手する

Adobe Acrobat Readerのオフラインインストーラーを入手したくて、https://get.adobe.com/jp/reader/enterprise/からダウンロードしようとすると、言語をAll Languages (MUI)に設定しないと、Windows 11用の64ビット版はダウンロードできない。

2026年5月18日時点では、以下のURIからダウンロードされるようだ。

https://ardownload3.adobe.com/pub/adobe/acrobat/win/AcrobatDC/2600121529/AcroRdrDCx642600121529_MUI.exe

以前は、その他のバージョンのダウンロードからオフラインインストーラーを入手できたのだが、今はスタブインストーラーしか入手できないようだ。

ftp.adobe.comの現状

かつては、ftp://ftp.adobe.comにアクセスして、いろいろなものがダウンロードできたのだが、ftp.adobe.comは既にftpではログインできなくなっている。

$ ftp ftp.adobe.com
Connected to ftpgen.wip4.adobe.com.
500 OOPS: failed to open xferlog log file:/apps/log/ftp/ftp.adobe.com/xferlog
ftp>

のようになるので、ftpdは動いているのだろうが、ちゃんと設定されていないということのようだ。

http://ftp.adobe.com/を開くと、http://download.adobe.com/にリダイレクトされる。 *.adobe.comに有効なDigiCert発行のTLS証明書が設定されているのでhttpsなアクセスもできる。だが、その表示はRed Hat Enterprise Linux Test Pageである。httpdはヘッダーを見る限りApache httpdのようだ。

Google AdSenseに出稿している観察が必要なように思えるウェブサイト

はじめに

このウェブサイトはGoogle Bloggerを使っており、Google AdSenseが簡単に組み込めるので利用している。 ただ、ほとんど収入はない。

Google AdSenseは、様々な人が出稿できるのも、様々な人がウェブサイトに掲載できるのも非常に良いと思っているのだが、詐欺を働くウェブサイトも多数出稿しているのは問題である。 amplifyapp.comやondigitalocean.appのサブドメインでホストされているものは、Windowsでセキュリティー警告が出ているかのような、でもあまり出来の良くないウェブページを表示するようになることがほとんどであるように思う。 初期のGoogleの審査時は無題なウェブサイトで、時間が経ったら詐欺のウェブサイトに自動的に遷移するように変えられているように見える。 以下が例である。 ただ残念なことに、NetBSD上のFirefoxは、OpenGLがハードウェアでサポートされていないと全画面表示をしようとするとクラッシュしてしまう問題があり、時折勝手に全画面表示しようとしてFirefoxをクラッシュさせてしまうのだけが問題である。

こういうものはGoogle AdSenseのコンソールからblockあるいはblock and report adをすれば良いし、自分のウェブサイト以外で見付けたらreportしても良い。 でも非常に手間はかかる。 こんな手間を掛けて、ほぼ存在しない収入しかもたらさないGoogle AdSenseをウェブサイトに掲載しておきたいかと言うと、そんな気持ちは全くしない。 だが、こういう状況を把握できるのは、広告を掲載しているからでもあるので、難しい。

今回話題にしたいのは、そういうものではなく、独自のドメインを持っていて、明らかに存在しない会社をよそおっているウェブサイトである。

こういうウェブサイトは、短命なものもあれば、長い期間存続しているものもあるようである。 明確に意図も分からないが、問い合わせしてしまった人に害をなすのかもしれない。 いくつか記載しておき、後で再確認できるようにしよう。 他にも多数あるが、全てを書くのは面倒だ。

観察すべきウェブサイト

いずれにしてもドメインがおかしいというのはあるのだが、それは前提なので、特別な理由がなければ改めては記載しない。

https://calendarmethodi.com/というウェブサイトは「清流ドレインサービス」という会社のウェブサイトとされていて、住所は〒542-0081 大阪府大阪市中央区 南船場4-4-10で、電話番号は06-6123-9087と記載されている。 2005年に法人化したと書いてあるので、国税庁の法人番号公表サイトに掲載されているはずであるが、当然のように掲載されていない。 そもそも日本のこういう企業が、ITベンチャー企業のような構成のウェブサイトを持っているはずもなさそうだが。

https://dussh-eremino.by/というウェブサイトは、会社名は掲載されていない。スポーツと教育の価値を伝えるビデオ撮影・ビデオ編集という表題である。 掲載されている住所は〒150-0001 東京都渋谷区神宮前6-23-4で、電話番号は+81 3-6427-8891である。 少なくとも日本で国内向けの仕事をしている企業は+81-3のような電話番号の表示をすることはないように思う。

https://gravescarefulpa.com/というウェブサイトは、「快床フロアリング」という会社のウェブサイトとされていて、住所は〒220-0012 神奈川県横浜市西区みなとみらい3-5-1 横浜ランドマークタワー 13階、電話番号は045-221-6678と記載されている。 2004年に設立されたと記載されているので、国税庁の法人番号公表サイトに掲載されているはずだが、当然のように掲載されていない。 これもITベンチャー企業のような構成のウェブサイトで、不自然な感じがする。

https://iqspace.by/というウェブサイトは、「株式会社東京ビデオプロダクション」という会社のウェブサイトとされていて、住所は〒160-0023 東京都新宿区西新宿6-12-7で、電話番号は03-4589-2471と記載されている。 東京ビデオプロダクションという会社はあるようだが、このウェブサイトとは別なようである。https://tokyo-videoproduction.com/なのだが、これはこれで実態が分からない。 いずれにしても、国税庁の法人番号公表サイトに掲載されていない。 そもそも.byドメインであり、これはベラルーシのドメインであり、ちょっと普通に選択肢になる国とは思えないが、人により感覚は異なるかもしれない。

https://neon-route.fun/は、ここまでとは違って英語のウェブサイトである。 もしかしたら私がウェブブラウザーのロケールをen-usにしているからしれないが。 会社名は見付けることができなかったが、事業としては日本国中での荷物の配送のようである。 住所は3-5-7 Shibuya, Shibuya City, Tokyo 150-0002, Japanで、電話番号は+81-3-6824-3322と記載されている。 会社名がない以外にはあやしくないかもしれないが、日本は簡単に日本国内を網羅するような運送業を簡単に始めたり維持したりできるような恵まれた国ではないはずな気もする。

https://pluperfectttyvo.com/は日本語のウェブサイトで「緑峰インフラ建設」という会社のウェブサイトとされている。 これもITベンチャー企業のような構成で、不自然な気がする。 これ限らないが、式会社等の法人格の記載もなく、日本の会社のウェブサイトとしては不自然な気もする。 1992年設立とのことだが、国税庁の法人番号公表サイトに掲載もない。 住所は〒460-0003 愛知県名古屋市中区錦3-15-20 名古屋三越栄店 本館 10階と記載があるが、デパートの10階に道路工事専門の建設会社が入居しているとは思えない。 電話番号は052-956-4488と記載されている。 Googleで社名を検索すると、大阪で40年歴史があるというウェブサイトや、名古屋の会社であるがURIの違うウェブサイトも検索結果に表示される。 ただ、そのURIに接続はできなかったが。

https://rhythmmovebeat.com/は英語のウェブサイトで「Mado Hikari」という会社のウェブサイトとされている。 住所は9-2-7 Akasaka, Minato-ku Tokyo 107-0052であり、電話番号は+81 3 3586-9127と記載されている。 そもそも英語だというのが不自然だが、私のウェブブラウザーのロケールの問題かもしれない。

https://seatescapechill.com/は英語のウェブサイトで「Yasuragi Seiso」という会社のウェブサイトとされている。 住所は2-9-15 Komagome, Toshima-ku, Tokyo 170-0003であり、電話番号は+81 3 3917-5841と記載されている。 英語だとこういう雰囲気でも良いのかなと思ってしまわない訳ではないが、おそらく本当のウェブサイトではない気がする。

https://shillultramoder.com/は日本語のウェブサイトで「シル・ウルトラモーダン・ドレインソリューションズ」という会社のウェブサイトとされており、住所は東京都江東区有明2-1-1 有明ガーデンズオフィスタワー 8階、電話番号は03-5634-8890と記載されている。 ただウェブサイトのタイトルは「スーズ」となっている。 ドメインは社名と合っているが、「客服マネージャー」という用語があり、まあ普通の日本の企業とは感じられない。

おわりに

しばらくしたら再度見てみるようにしよう。

Lightning to USB Type-CなLightningヘッドホンアダプターを使ってみる

手元に、いくつもLightning接続のイヤホンを持っている。これは、iPhone 14以前用のイヤホンであり、Lightning接続のEarpodsということである。 昔のiPhoneにはEarpodsが付属していたし、サードパーティーのイヤホンを買ったこともあったようだ。

iPhoneに限らずAndroidスマートフォンでもφ3.5mmイヤホン端子がなくなってしまい、φ3.5mmイヤホン端子をUSB Type-Cに変換するDAC内蔵の変換器を使っていたのだが、イヤホンというのは消耗品なので、φ3.5mmイヤホン端子のイヤホンが手元になくなって来てしまった。 なので、結果的に手元に多数残っているLightning接続のイヤホンをUSB Type-C端子に接続して利用したくなった。

ウェブで検索しても、どういう変換デバイスを利用すれば良いのかは明確ではないように感じた。 Apple製の汎用のLightningからUSB Type-Cへの変換器 (USB-C - Lightningアダプタ)は間違いなく利用できるはずだ。ただし、外部ディスプレイアダプターとは組み合わせることができないらしい。 サードパーティーの製品は、様々な機能の組み合わせがある。充電の可否、オーディオサポートの可否(今回気にしているのはこれだ)、データ通信の可否、CarPlayサポートの可否、USB OTGサポートの可否、マイクサポートの有無などである。

だが、どこにもどういうUSBデバイスとしてLightning Earpodsが見えるかは明確に書かれていないようだった。 また、オーディオサポートをしているサードパーティーのデバイスでもDAC搭載と書いているものも書いていないものもあり、実際にどういう仕様のデバイスが存在して使えるのかは分からない。

まず、サードパーティーの変換器について、私が理解した内容を書いておきたい。 ただし、私はCarPlayは利用していないし、マイクサポートのないサードパーティー変換器も試していないので、それについては分からないので、書いていない。

  • オーディオサポートがある変換器だけがLightning Earpodsをイヤホンとして利用するのに利用できる
  • USB OTG対応でないと、USB接続のヘッドホンのようなUSBデバイスを接続するのには利用できない。
  • 充電が可能なものだけが、USB Type-C接続での充電に利用できる。
  • データ通信が可能なものだけが、PCに接続してiPhone内の写真を取り出したり、WindowsのiTunes appを使ってiOSのアップデートやバックアップの取得をするのに利用できる。

Apple純正の変換器は、説明文に記載があるように、充電もデータ通信もマイクサポートを含んだオーディオサポートもある。 サードパーティーではこの組み合わせの商品はないように見えた。 ただし、USB OTGサポートはない。 エラーが発生するので、Ligtning Earpodsが接続されていることを前提に動作しているのかもしれない。

どのように認識されるか

どのように認識されるかと言うと、NetBSDのdmesgを示すのが私には一番分かりやすい。

Apple純正の変換器にあらかじめLightning Earpodsを挿した上で、PCに接続すると、以下のようになる。

uaudio0 at uhub8 port 4 configuration 1 interface 0
uaudio0: Generic (0x0020) CtoL Audio (0x0b21), rev 2.00/1.00, addr 4
uaudio0: audio rev 1.00
audio2 at uaudio0: playback, capture, full duplex, independent
audio2: slinear_le:16 2ch 48000Hz, blk 11520 bytes (60ms) for playback
audio2: slinear_le:16 1ch 48000Hz, blk 15360 bytes (160ms) for recording
spkr3 at audio2: PC Speaker (synthesized)
wsbell at spkr3 not configured
uhidev3 at uhub8 port 4 configuration 1 interface 3
uhidev3: Generic (0x0020) CtoL Audio (0x0b21), rev 2.00/1.00, addr 4, iclass 3/0
uhid11 at uhidev3: input=2, output=0, feature=0

Apple純正の変換器にあらかじめLightning Earpodsを挿さずに、PCに接続すると、以下のようになる。

uhub8: device problem, disabling port 4

サードパーティーの変換器をPCに接続すると、以下のようになる。 この場合には、あらかじめLightning Earpodsを挿してあっても挿してなくても変化はない。

uaudio0 at uhub8 port 4 configuration 1 interface 0
uaudio0: Generic (0x0020) AB13X USB Audio (0x0b21), rev 2.00/1.00, addr 4
uaudio0: audio rev 1.00
audio2 at uaudio0: playback, capture, full duplex, independent
audio2: slinear_le:16 2ch 48000Hz, blk 11520 bytes (60ms) for playback
audio2: slinear_le:16 1ch 48000Hz, blk 12480 bytes (130ms) for recording
spkr3 at audio2: PC Speaker (synthesized)
wsbell at spkr3 not configured
uhidev3 at uhub8 port 4 configuration 1 interface 3
uhidev3: Generic (0x0020) AB13X USB Audio (0x0b21), rev 2.00/1.00, addr 4, iclass 3/0
uhidev3: 1 report ids
uhid11 at uhidev3 reportid 1: input=2, output=0, feature=0

いくぶんか違いはあるが、基本的にはVID/PID=0x0020/0x0b21というUSB 2.0なUSB Audio 1.0デバイスとして認識されるようだ。 また、サードパーティーのイヤホンを接続しても特に違いはない。

このサードパーティーの変換器はDAC搭載と書かれているが、おそらく書いていなくてもDACは搭載されていると考えて良いような気がする。

記名式Suicaに定期券を割り当てられなくなった

通勤定期券を記名式Suicaのカードで利用している。 その通勤定期券を継続購入しようとしたのだが、券売機に挿入してもどうやっても認識してもらえなかった。 既存の通勤定期券は問題なく利用できるし、チャージ残高を確認もできるので、NFCチップが破損している訳ではないのは分かった。

多機能券売機では、定期券の継続購入を画面上で選んで、指示通りSuicaをを挿入すると、利用できないSuicaであると画面上に表示される。 指定席券売機では、定期券の購入を画面上で選んで、定期券として利用中のSuicaを挿入すると継続購入の画面へ遷移できるはずなのだが、Suicaを挿入すると、硬貨の投入口が閉じるのでSuicaが挿入されたことは認識されるのだが、Suicaを投入するようにという画面から先には進めない。

どうにも分からなかったので、みどりの窓口に行ったところ、カード裏面上部にある、2箇所の幅広の黒いバーが消えかけているために、認識されないとのことだった。 NFCとしての機能には全く問題がないとのことだった。

みどりの窓口で新しいSuicaへ無料で移行してもらったのだが、みどりの窓口の機器もその2箇所の黒いバーがないと認識しないようで、黒色の油性ペンでバーを描いてから処理していた。

裏面下部のSuicaの番号が消えてしまって交換になったことがあったので、番号の部分が消えないような財布に入れていたのだが、それでは不十分だったらしい。 区間の情報が見えるのが好きではないので、裏側が目に入るように財布にSuicaを入れていたのだが、それは良くないと言うことなのだろう。 区間の印字された表面が見えるように財布に入れるようにしよう。

mltermで、TERM=xterm-256colorを自動的に設定させる

いまだにterminal emulatorとして何を使えば良いのか良く分からないでいる。 別に英語と日本語が表示できれば良いし、贅沢を言えばヨーロッパの言語にあるアクセント記号が付いたラテンアルファベットが表示されれば、ほぼ十分だ。 キリル文字で書かれたロシア語を読みたい時はあるが、Firefoxで表示されれば良く、terminal emulatorで表示できなくて困ったことはない。

さすがに今になってktermというのも気が引けるし(UTF-8にも対応しているバージョンがあるので、悪い選択肢ではないはずではある)、xtermは何だか使いにくい気がしてしまう。 かと言って、vteベースのgnome-terminalを使って快適な感じもしない。 と言うことで、消去法的ではあるのだが、mltermを使っている。

mltermで1つ不満だったのは、256色表示ができるはずなのに、それを有効化できていないということだった。 Changelogを眺めてみると、~/.mlterm/mainに、termtype=xterm-256colorという行を追加すれけば良かった。 これによって、mltermでecho $TERMを実行すると、xterm-256colorと表示されるようになり、256色表示もできるようになる。

無料でキリスト教の聖書を読む

残念ながら生粋の無神論者なので、宗教を信じていないし、神に祈らないし、宗教の儀式にも付き合い以上の関与もしないのだが、宗教がどういうものなのかには興味がある。 岩波講座 宗教を斜め読みする程度の興味しかないのだが。

とは言っても、いくつか聖典的なものは読んでおきたいと言う気持ちは持っていた。 と言うことで調べてみると、旧約聖書と新約聖書はYouVersionというAndroid appで無料で読むことができるらしいと分かった。

実際にインストールして、ログインしてみると、以下のような日本語訳の聖書を読むことができた。英語以外にもネパール語やビルマ語、ペルシア語、スワヒリ語などでも聖書を読むことができるようだ。

  • 新共同訳 (聖書 新共同訳)
  • 口語訳 (聖書 口語訳)
  • 口語訳 (japnese: 聖書 口語訳)
  • JA1955
  • JCB (リビングバイブル)
  • ERV訳 (ERV訳 --読みやすい聖書--)
  • NJB (新改訳)

口語訳が2つあるのは良く分からない。創世記の最初の部分だけ見ると同じな気がするが、ちゃんと比較はしていない。

とりあえず新共同訳を読むのが良いように見えたので、これを読んでみることにしよう。 ダウンロードしてみると、「聖書 新共同訳 旧約聖書続編付き」と書かれているので、旧約聖書の外典も含まれているのであろう。 少なくとも新共同訳は朗読機能もあって、text to speech機能ではなく人間が朗読しているようだった。 これで聞いてみるのも良いかもしれない。

旧約聖書とは言ってもユダヤ教的視点で日本語訳されているのではないような気がするので、あくまでキリスト教の聖書一式が読めるのだというのが現時点での理解である。

w3mでウェブを検索する

GoogleBingがJavaScriptが使えないと検索できなくなって久しい。 w3mでウェブを検索するのが難しくなってしまった。

DuckDuckGoはJavaScriptなしでも検索できる。 以下のように実行すれば、検索画面を開くことができる。

$ w3m https://duckduckgo.com/

pkgsrc/print/py-pdfを使って、PDFファイル中のハイパーリンクを抽出する

とある自治体が法令に基づいて公開しているPDFファイル一式を入手したかったのだが、そのPDFファイルへのリンク先が1つのPDFファイル中のハイパーリンクという形でしか提供されていなかった。 と言うことで、pkgsrc/textproc/py-pdfからpy314-pdf-6.7.0をインストールして抽出することにした。

と言うことで、以下のようなスクリプトを書いてみた。

$ cat extract-hyperlinks.py
#!/usr/pkg/bin/python3.14
#
# Usage:
# $ cd /usr/pkgsrc/textproc/py-pdf
# $ make install
# $ ./extract-hyperlinks.py target.pdf > links.txt
# $ wget -i links.txt

import sys
from pypdf import PdfReader

pdfpath = sys.argv[1]

reader = PdfReader(pdfpath)

for page in reader.pages:
  if '/Annots' in page:
    for annot in page['/Annots']:
      annotation = annot.get_object()
      if "/A" in annotation and "/URI" in annotation["/A"]:
        uri = annotation["/A"]["/URI"]

        print(f"{uri}")

以下のように利用すれば良い。

$ python3.14 extract-hyperlinks.py ../hyperlinks.pdf > links.txt

Metabaseでlog4jを使ってログを出力する

pkgsrc/www/metabaseを最新にアップデートするのは怠けているのだが、手元ではほぼ常に最新版を使っている。 pkgsrc/www/metabaseのインストールするrcスクリプトには、log4jによりログを出力する設定が含まれている。 また、そのrcスクリプトが利用するlog4j2.xmlという設定ファイルの雛形も含まれている。 なので、pkgsrcからMetabaseをインストールすれば、/var/log/metabase/metabase.logに、設定されたようにログが出力される。

log4jによりログを出力するのは、私の用途では重要なのだが、少なくとも私がMetabaseを使い始めた時にはあまり情報がなかったように思う。 もうずいぶんと前の話なので、今は十分に説明するウェブページが世間にはあるようだ。

Grafanaには、BASIC認証を設定できない

Grafanaを簡単にどういうものか説明できるほど良く理解していないが、私の使い方で言えば、時系列データを保存しているデータベースがあって、その内容を折れ線グラフでプロットして、その値によってアラートを出すように設定できるダッシュボードのウェブページである。 ビジネス・インテリジェンス・システムのようなものであるような気もする。

私は、少し古いがpkgsrc/www/grafanaから11.0.0をインストールし、データベースは、pkgsrc/databases/influxdbを手元でアップデートしてInfluxDB 1.8.10をインストールして使っている。 ウェブサーバーがないと使えない訳ではないと思うが、Apache httpdをリバースプロキシーとして利用している。

Grafanaには、もちろんログイン機能があって、ログインしなければダッシュボードを見ることはできない。 そもそもやりたかったのは、そもそもGrafanaのログイン画面へ行くこともできないようにすることだった。 そうだとすると、一番簡単なのは、BASIC認証を設定することであるように思えた。

しかし、BASIC認証は使えない。 と言うのは、ユーザー追加をする際に、Grafana自体が自身のAPIを利用する場合にBASIC認証を利用しているからであるようである。 Apache httpdでBASIC認証した上で、ユーザー追加をすると、追加したユーザーでしかログインできなくなるばかりか、そのユーザーからログアウトすることもできなくなってしまう。

おとなしく、Grafana備え付けのログイン画面を使っておくのが一番良さそうである。

Windows 11でwgetを使ってhttpsなウェブサイトから情報を取得する

Windows 11でhttpsなウェブサイトから情報を取得したいのだが、ウェブ上にある多くの古いwgetのWindows用のバイナリーは、TLS 1.2以降に対応しておらず私の接続先には利用できなかった。 また、このwgetを動かす環境は、ユーザー認証付きのHTTPプロキシーサーバーを経由しないとイントラネット外のウェブサイトへ接続することはできない。 このような状況でWindows 11のマシンでwgetを利用する方法を書いておく。

wgetのバイナリーを入手する

Windows binaries of GNU Wgetで公開されているwgetバイナリーは、新しいTLSのバージョンにも対応していた。 他にもおそらく使えるバイナリーを配布している所はあるかもしれないが、具体的には確認していない。

具体的には、バージョン1.21.4のバイナリーをダウンロードして利用した。

設定値をファイルに格納する

ユーザー認証付きHTTPプロキシーサーバーを利用する必要があり、これらを毎回コマンドライン引数として入力するのは煩雑になる。 また、パスワードをコマンドライン引数として与えるのも、パスワードが画面上に表示されてしまい、うれしくない。

ということで、設定値はwgetrc.txtというテキストファイルに予め記入しておくことにした。 その内容は以下のようにした。

> type wgetrc.txt
use_proxy=on
http_proxy=http://10.1.1.1:8080/
https_proxy=http://10.1.1.1:8080/
proxy_user=(YOUR USERID)
proxy_password=(YOUR PASSWORD)
check_certificate=off

ここで、check_certificate=offはTLS証明書のチェックを省略している。 これは良い習慣ではない。

実行例

このwgetrc.txtファイルを使いつつ、ウェブサイトから情報を取得するには、以下のようにすれば良い。

> wget.exe --config=wgetrc.txt -nc -r https://www.ryoon.net/

MetabaseをOracle databaseへクエリーするAPIサーバーとして利用する

Oracle databaseに各クライアントPC上のMicrosoft Excel VBAからアクセスしようとすると、Oracle Instant Clientのインストールが必要になる。 ODBC経由だとデータソースの設定が必要になり、皿に初期設定は手間がかかるが、Excel VBAからアクセスする程度であれば、ADO DB経由でも問題ない。 この場合には、tnsnames.oraに接続先を設定する必要はなく、接続文字列に直接接続先を記載すれば良いので、とりあえずOracle Instant Clientをインストールさえして置けば良い。 ただ、Oracle社の用意しているOracle Instant Clientのインストーラーは冗長かつ何をしているか分かりにく、インストールに失敗するとインストーラーはまた別のディレクトリーにインストールしてしまうので、同じ緩急を作るのも面倒だ。 これについては、必要なファイルと処理のみを解析して抜き出したWindowsバッチファイルを用意しているので、個人的には解決はしているが…。

とは言っても、あくまでWindowsバッチファイルであり、環境変数の設定は手作業でするようになってもいるので、インストールには手間がかかる。 そもそもOracle Instant Clientをインストールしない方法を探していた。

過去にはJRubyからJDBCを使ってOracle databaseにアクセスし、結果を返すサーバーを書いてもいたのだが、利用者の認証や権限設定も欠けており、起動させておくのも面倒なので、実用できてはいなかった。

metabaseのドキュメントを読んでいたら、アクセストークンを発行して、それによりREST APIでMetabaseに登録されたデータベースにクエリーを投げて、その結果をJSONやCSV形式で返してくれる仕組みがあった。 今回は本来は使うべきであるセッションIDは使わないのだが、curlコマンドで試した内容を書いておく。

アクセスする例

最初に、前提となる情報を書いておく。

今回使うユーザーグループ権限のAPIキー
mb_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=
MetabaseサーバーのURI (都合上HTTPでしかアクセスできない)
http://mbserv.example.com/
アクセスするデータベースの番号 (JDBC経由で接続できるようにウェブUIで設定されている)
2

このMetabaseサーバーが設置され、クライアントのWindows PCが接続されているイントラネットは、イントラネット外の80版ポートに接続するにはHTTPプロキシサーバーを経由する必要がある。 だが、イントラネット内にあるMetabaseサーバーにはHTTPプロキシサーバー経由ではアクセスできないので、HTTPプロキシサーバーを掴ない設定も重要である。

グループの一覧を取得する。 これはOracle databaseには無関係なMetabaseの機能に対する問い合わせである。

$ curl --noproxy mbserv.example.com -H 'x-api-key: mb_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=' -X GET 'http://mbserv.example.com/api/permissions/group'

MBQL JSON形式でSQLのクエリーの結果を取得する。 結果はMBQLのJSON形式であり、前半にデータが、後半にコラム情報が収録されており、Excel VBAであればVBA-FastDictionaryVBA-FastJSONを使えば解析しデータを利用するのが幹太になる。

$ curl --noproxy mbserv.example.com -H 'x-api-key: mb_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=' -H 'Content-Type: application/json' -X POST 'http://mbserv.example.com/api/dataset' -d '{ "database": 2, "native": { "query": "select * from myschema.MYTABLE1" }, "type": "native"}'

CSV形式でSQLのクエリーの結果を取得する。

$ curl --noproxy mbserv.example.com -H 'x-api-key: mb_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=' -H 'Content-Type: application/x-www-form-urlencoded' -X POST 'http://mbserv.example.com/api/dataset/csv' -d 'query={ "database": 2, "native": { "query": "select * from myschema.MYTABLE1" }, "type": "native"}'

これで、Oracle Instant Clientをインストールせずに、クライアントWindows PCからOracle databseの内容を参照できるようになった。

MetabaseでActive Directory認証する際に、ユーザーIDでも電子メールアドレスでも、ログインユーザーIDとして使えるようにする

MetabaseでActive Directory認証するで書いておいたような設定でMetabaseを運用して来たのだが、Metabaseのログイン画面にはログインユーザーID欄に「ユーザーネームまたはメールアドレス」と書かれているためか、電子メールアドレスを入力してログインできないという苦情を言う人が多いという問題があった。 駄目だったらユーザーIDでログインできるか試せば良いと私などは思うが、そんな発想にならない人ばかりに囲まれている。 そもそもなぜそういう発想をすることができるかということも説明しても理解してもらえないので、ユーザーIDでも電子メールアドレスでもログインするしかないだろう。

と言うことで、Active Directoryの項目を調べてみると、以下のような項目が使えそうであった。

  • ユーザーIDはsAMAccountNameという項目であり、既に利用している。
  • ユーザー認証に利用できる電子メールアドレスは、userPrincipalNameという項目になっているらしい。
  • 電子メールアドレスはmailという項目にも格納されているらしい。

と言うことで、これら3つのいずれかをloginに使えば良さそうだ。

以下のように設定していたので、変更しよう。

(&(sAMAccountName={login}))

変更後は以下のようにした。

(&(|(sAMAccountName={login})(mail={login})(userPrincipalName={login}))(objectClass=user))

これで、電子メールアドレスでもユーザーIDでもいずれでもログインIDとして与えてもログインできるようになった。

Mosquittoに、Python Paho MQTT libraryを使ってアクセスする

あらかじめ起動しておいたMosquitto にPython Paho MQTT library (pkgsrc/net/py-paho-mqtt 2.1.0)を使って、Mosquittoの受信したデータを、InfluxDB 1 (pkgsrc/databases/influ...