[Error][Multimedia Console]
メールをチェックしていると,QNAP NAS からのメール…
[Error][Multimedia Console] デバイスからの通知: TS253D
NAS 名: TS253D
重大度: Error
日付/時刻: 2022/09/05 02:10:53
アプリ名: Multimedia Console
カテゴリー: データベース
メッセージ: [Multimedia Console] データベースの修復に失敗しました。データベースが破損しており、修復できません。[Multimedia Console] > [インデックス] > [再インデックス化] でマルチメディアコンテンツデータベースを再構築してください。
「QuLog Center」にエラーログは残っているが「Multimedia Console」には特にそれらしい表示はない.
「QuMagie」などでも特に問題と思われる現象はなさそう.
「再起動」をスケジュール しているので,その影響か?
2022/09/07
NAS を再起動したら,また同じメッセージが送られてきた.
メッセージにある様に「再インデックス化」することに.
2022/09/08
インデックスはできていると思うが,NAS の再起動時また記録されてしまう.
2022/09/09
「Multimedia Console」の更新版(2.0.1)があったので更新.
これで状況はよくなるか?
GetActiveView
いつも面倒と思う CView の取得.
https://dev.mish.work/wordpress/2022/05/20/drop-lnk-on-mdi-exe/
普通は,CDocument から CView を操作することはあまりないものと思う.
が,今回はテスト用のコードで CView での表示情報を更新したくなった.
{
CFrameWnd* pFrameWnd = (CFrameWnd*)AfxGetMainWnd() ;
CFrameWnd* pActiveFrame = pFrameWnd->GetActiveFrame() ;
{
CXxxView* pView = (CXxxView*)pFrameWnd->GetActiveView() ;
if (pActiveFrame != NULL) {
pView = (CXxxView*)pActiveFrame->GetActiveView() ;
}
if (pView != NULL) {
PartsA sel_pa = *(pView->GetSelectP()) ;
{
PartsA err_pa = ::xx_get_error_xx(...) ;
sel_pa += err_pa ;
}
*(pView->GetSelectP()) = sel_pa ;
}
}
UpdateAllViews(NULL) ;
}
それを関数に.
CView* Get_active_view (void)
{
CFrameWnd* pFrameWnd = (CFrameWnd*)AfxGetMainWnd() ;
CFrameWnd* pActiveFrame = pFrameWnd->GetActiveFrame() ;
{
CView* pView = pFrameWnd->GetActiveView() ;
if (pActiveFrame != NULL) {
pView = pActiveFrame->GetActiveView() ;
}
return pView ;
}
return NULL ;
}
クリップボード ビューア
以前まとめたもの.
ClipView.doc
MSDNのドキュメントは,”Creating a Clipboard Viewer Window” で見つかる.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms649016.aspx
mk:@MSITStore:j:\MSDN\ipc.chm::/hh/winbase/clipbrd_47ok.htm
WM_CREATE ビューアとしての登録
NextWnd = ::SetClipboardViewer(hWnd) ;
WM_DESTORY ビューアの登録解除
::ChangeClipboardChain(hWnd,NextWnd) ;
WM_CHANGECBCHAIN 他のビューアが登録解除された
if ((HWND)wParam == NextWnd) { NextWnd = (HWND)lParam ; }
else if (NextWnd != NULL) { ::SendMessage(NextWnd,uMsg,wParam,lParam) ; }
WM_DRAWCLIPBOARD クリップボードの内容が更新された
// 描画または相当の動作
if (NextWnd != NULL) { ::SendMessage(NextWnd,uMsg,wParam,lParam) ; }
Authentication for … failed.
ASUSTOR NAS からのメール.
This is a system event notification sent from AS5202T.
Event Level: WARNING
Date: 2022/08/13 00:00
User: SYSTEM
Event: [Certificate Manager] Authentication for mish.myasustor.com failed.
NAS の ADM に入って「設定」-「証明書管理者」.
「mish.myasustor.com」を選んで「編集」.「証明書を更新」.
何故かうまく更新できない.QNAP NAS の方はうまく更新されている.
回数制限に引っ掛かってしまったので後日.
ポートフォワーディングの設定?
それとも,他ユーザによる myasustor.com での制限?
2022/08/19
回数制限が解除された?みたいで,再度「証明書を更新」.
うまく更新できない.
そのうち,また回数制限に.
ASUSTOR のコミュニティサイトで,同様の投稿があった.
設定を適用できません。 再試行してください。 (Ref. 5401)
ひょっとして,どこかの不具合?
2022/08/23
Let’s Encrypt から次のメールが届いた.
Let’s Encrypt certificate expiration notice for domain “as.mish.work” (and 1 more)
Let’s Encrypt Expiry Bot
Hello,
Your certificate (or certificates) for the names listed below will expire in 17 days (on 10 Sep 22 07:26 +0000). Please make sure to renew your certificate before then, or visitors to your web site will encounter errors.
We recommend renewing certificates automatically when they have a third of their total lifetime left. For Let’s Encrypt’s current 90-day certificates, that means renewing 30 days before expiration. See https://letsencrypt.org/docs/integration-guide/ for details.
as.mish.work
mish.myasustor.com
For details about when we send these emails, please visit: https://letsencrypt.org/docs/expiration-emails/ In particular, note that this reminder email is still sent if you’ve obtained a slightly different certificate by adding or removing names. If you’ve replaced this certificate with a newer one that covers more or fewer names than the list above, you may be able to ignore this message.
For any questions or support, please visit: https://community.letsencrypt.org/ Unfortunately, we can’t provide support by email.
If you are receiving this email in error, unsubscribe at:
http://delivery.letsencrypt.org/track/unsub.php?u=30850198&id=82858f9794a44c0f8e72a5c25c74eb4d.WZdjCQO96%2FOPKKnNcXSSJq4c5Ck%3D&r=https%3A%2F%2Fmandrillapp.com%2Funsub%3Fmd_email%3Di%252A%252A%252A%252A%2540a%252A%252A%252A%252A.%252A%252A%252A
Please note that this would also unsubscribe you from other Let’s Encrypt service notices, including expiration reminders for any other certificates.
Regards,
The Let’s Encrypt Team
2022/08/28
今日も「証明書を更新」が押せるようになったが,また回数制限に.
それで,いろいろと調べていて,LAN 内であれば mish.myasustor.com にアクセスできることは確認した.
WAN から(スマートフォンの回線で現状は IPv4 接続)はアクセスできない.
nslookup で見ると IPv4 のアドレスが表示されない.
先日の ADM のアップデートで IPv6 がサポートされるようになり,その影響か?
一度「設定」-「ネットワーク」-「一般」の「IPv6を有効にする」のチェックを外して,付け直し.
それにより,IPv4 での接続ができるようにはなった.
2022/09/05
IPv4 で外から接続できることを確認して「証明書を更新」してみたが,これでもうまくいかない.
「ポートフォワーディング」を設定して NAS に転送する様にしても特に変わらず.
2022/09/12
今度は「新しい証明書を作成する」でやってみた.
すると「サブジェクトの別名」を指定しなければうまくいく.
「サブジェクトの別名」で「as.mish.work」を指定した場合に,うまくたどり着けない?
別の証明書として,as.mish.work を登録することにした.
CWinApp::m_pszAppName
今更の内容ではあるが…
MFC の SDI や MDI で,アプリケーション名は,作成したプロジェクト名?になる.
ダイアログベースで作成した場合は exe 名になってしまう.
困ることがあるのが exe 名を変更した場合のレジストリキー.
CWinApp::m_pszAppName はヘルプにある様に,AFX_IDS_APP_TITLE がなければ exe 名となる.
コードは MFC 6 のものだが,MFC 14.3 でも同様.
CWinApp::SetRegistryKey で m_pszAppName を利用している.
exe 名と異なるものを使用する場合,リソースの AFX_IDS_APP_TITLE を変更するか,なければ追加すれば良い.
VC 2022 ビルドでエラー
VC 2022 でビルドしようとすると,次の様なエラー.
—————————
Microsoft Visual Studio
—————————
オブジェクト参照がオブジェクト インスタンスに設定されていません。
—————————
OK
—————————
プロジェクトの設定などを見直しても特に怪しい部分はなさそう.
ビルド時に生成される幾つかのファイルを手動で削除しても特に変わらない.
さっきまで動作していた VC 2019 も同様のエラーに.
以前うまく動作しているはずのプロジェクトをコピーして,ビルドしようとしても同様.
こうなると,プロジェクトの設定ではなく,環境っぽい.
PC を再起動してうまく動作する様になった.
…\System32\MicrosoftEdgeCP.exe
…\System32\MicrosoftEdgeCP.exe が存在するのに,stat などでうまく読み取れない.
ファイルが存在しているかどうかをチェックするために,CFileStatus などを利用している.
CFileStatus::GetStatus() で,幾つかのファイルが正しくチェックできない.
コードをデバッガで追いかけていくと,::FindFirstFile で INVALID_HANDLE_VALUE となってしまう.
検索 すると次の様なものがあった.
FindFirstFile関数はx64環境においてシステムファイルが検索できない?
x86 の場合次のものを呼出して切替える必要があるみたい.
Wow64DisableWow64FsRedirection
Wow64RevertWow64FsRedirection
File System Redirector
今回 ::GetFileVersionInfo から始まって … いろいろとあったのでメモ.
VC 14 以降での stat.c の場所
VC 14 以降,<sys/stat.h> 関係が大きく変更されている?
CFileStatus でアサート
今回 stat 関数内をデバッグしようとしていて,ソースの場所がすぐにわからなかった.
#ifdef _MSC_VER
#define s_stat struct _stati64
#define TSTAT _tstati64
#else
#define s_stat struct stat
#define TSTAT stat
#endif
VC 12 以前は,(VS)\VC\crt\src\ 以下に存在する.
VC で,#include <sys/stat.h> としている所を「右クリック」-「ドキュメント<sys/stat.h>を開く」.
その位置を幾つか上に行って,Include の並びに Source があり,その対応する所に存在する.
VC 2015 以降のどれかで対応がつくと,それ以外でも対応したもの(10.0.?????.0)が開かれる?
NAS OpenVPN サーバ設定
以前 ASUS ルータ で 設定 したが,最近安定しないので NAS で設定した.
OpenVPN の設定手順は次の様なもの.
1. VPN サーバで OpenVPN の有効化と設定.
2. .ovpn ファイルの出力.
3. .ovpn ファイルの編集.
4. OpenVPN が NAS に到達できる様に,ルータやファイアウォールを設定.
5. OpenVPN クライアント で .ovpn ファイルを取り込み.
6. クライアントから「接続」.
Synology NAS
「パッケージセンター」で「VPN Server」を「インストール」.
追加された「VPN Server」を起動.
「OpenVPN」を選んで「OpenVPN サーバーを有効にする」にチェック.
この時「ポート」は「1194」から変更(例えば 51234 )して,「適用」.
これで「エクスポート設定」が押せるようになる.
出力した .ovpn を「メモ帳」などで開いて編集.
先頭の方にある次の行の「YOUR_SERVER_IP」を変更.
remote YOUR_SERVER_IP 51234
remote 27.92.xxx.xxx 51234
DDNS を使用している場合は xxx.myds.me などの指定も可能.
私の場合,動作確認のために 192.168.0.xxx の .ovpn も用意している.
OpenVPN クライアントでの接続時の「ユーザ名」などは,NAS のユーザ情報が利用される.
ルータのポートの設定は次の様なものを追加.
ASUSTOR NAS
「App Central」で「VPN Server」を「インストール」.
「VPN Server」を起動して「OpenVPN」を「ON」に.
「権限」で「ユーザー」を「追加」,「適用」.
「設定」-「OpenVPN」で「ポート」などを変更し「構成ファイルのダウンロード」.
.ovpn 内の OPENVPN_SERVER_IP を変更.
後は同様に OpenVPN クライアントで取り込めば良い.
QNAP NAS
「App Center」で「QVPN Service」を「インストール」.
「QVPN Service 3」を開いて「OpenVPN」の設定.
「設定ファイルのダウンロード」したファイルを OpenVPN クライアントへ.
2023/01/29
Synology NAS で「サーバーCNを認証」にチェックを入れているとエラーになることがある様です.
Android から Synology VPN Server に接続できない
::GetFileVersionInfo
以前から使用している FileVer.?xx が MFC に依存しているので,その書き直し.
Win8 の頃だったと思うが,OS のバージョンの取得方法が面倒になった.
システム バージョンの取得
オペレーティング システムのバージョン
欲しいのは動作 OS のバージョン文字列なので WinVer.exe などから取得する様にしていた.
で,書き換えようと思って調べていると…
exe のプロパティで表示されるファイルバージョンと異なることに気付いた.
::GetFileVersionInfo で取得すると次の文字列が返ってくる.
10.0.19041.1826 (WinBuild.160101.0800)
次の様なコードを書いて ::GetFileVersionInfo で返されるものをダンプ.
{
DWORD VerHandle = 0 ;
DWORD VerInfoSize = 0 ;
v_char VerData ;
VerInfoSize = ::GetFileVersionInfoSize(LPTSTR(file.c_str()),&VerHandle) ;
VerData.resize(VerInfoSize*2) ;
if (::GetFileVersionInfo(LPTSTR(file.c_str()),VerHandle,VerInfoSize,&VerData[0])) {
tstring tmp_path = ::Get_i_Tools_tmp_date() ;
tstring tmp_name = ::Path_AddLastSP(tmp_path) + ::Path_GetName(file) + _T(".dmp") ;
::v_c_Save(tmp_name.c_str(),VerData) ;
}
}
ファイルバージョンの取得.
{
/*
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,53,2022,1
PRODUCTVERSION 1,53,2022,1
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "041104b0"
BEGIN
VALUE "Comments", "\0"
VALUE "CompanyName", "\0"
VALUE "FileDescription", "3D Viewer\0"
VALUE "FileVersion", "1, 53, 2022, 1\0"
VALUE "InternalName", "i3DV\0"
VALUE "LegalCopyright", "Copyright (C) 2013-2022 I. Nakagawa\0"
VALUE "LegalTrademarks", "\0"
VALUE "OriginalFilename", "i3DV.exe\0"
VALUE "PrivateBuild", "\0"
VALUE "ProductName", "i_Tools\0"
VALUE "ProductVersion", "1, 53, 2022, 1\0"
VALUE "SpecialBuild", "\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x411, 1200
END
END
*/
tstring StringFileInfo ;
{
struct LANGANDCODEPAGE {
WORD wLanguage ; // 0x411
WORD wCodePage ; // 1200 0x4b0
} *lpTranslate = NULL ;
UINT lenT = 0 ;
if (::VerQueryValue(&VerData[0],_T("\\VarFileInfo\\Translation"),(void**)&lpTranslate,&lenT)) {
tstring lang_cp_str = ::u32to0t(lpTranslate->wLanguage,16,4) +
::u32to0t(lpTranslate->wCodePage,16,4) ; // "041104b0"
StringFileInfo = _T("\\StringFileInfo\\") + lang_cp_str + _T("\\") ;
}
}
{
UINT lenFV = 0 ;
TCHAR* lpFV = NULL ;
tstring name = _T("FileVersion") ;
if (::VerQueryValue(&VerData[0],LPTSTR((StringFileInfo+name).c_str()),(void**)&lpFV,&lenFV)) {
std::terr << lpFV << std::endl ;
}
}
}
QNAP NAS Notes Station 3
Twitter を見ていたら「Notes Station」というものがあった.
Synology NAS の「Note Station」と似た様なものと思われる.
インストール方法などは次の所.
https://www.qnap.com/ja-jp/how-to/tutorial/article/notes-station-3
Edge に Notes Station 3 Clipper を追加.
PC からだと次の様な指定でアクセスできる.
http://(QNAP NAS):8080/ns/
スマートフォン用は Qnote3 .
ADM 4.1.0.RJ52 の更新で …
ASUSTOR NAS の ADM 4.0 から 4.1 への更新で?,Web サーバなどが動作しなくなった.
「Web Center」で「Web サーバー」を設定.
これで //as.mish.work/ でアクセスできるようにはなった.
が,WordPress や Joomla! がうまく動作していない.
「Apache HTTP Server」に切替えれば良いものと思うが,エラーになってしまう.
WordPress は,それぞれの記事の表示で「404 Not Found」となっていまう.
Joomla! は「グローバル設定」-「SEO設定」-「フレンドリURL」を「いいえ」で動作する様にはなる.
どこかの設定が足りないものと思うが,ちょっとわからないのでこのままとする.
「保存」した VirtualBox の環境が起動できない.
「保存状態を破棄」して起動できた.
夜になって,ADM 4.1.0.RJ72 がリリースされている.
更新後,「Apache HTTP Server」を指定できることを確認.
WordPress と Joomla! はうまく機能する様になった.
ファームの不具合だった?
更新して,今度は VirtualBox に入れなくなってしまった.
Linux Center は問題なさそう.
VC 2019 以降の include
%LOCALAPPDATA%\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props がないとの問い合わせが…
次の所は以前まとめたもの.VC 2010 以降は,これが引き継がれるものと思っていた.
VC include lib のパス
私の環境の VC 2022 で確認すると,ちゃんと引き継がれている.
検索すると VC 2019 から Microsoft.Cpp.Win32.user.props は使用されなくなった?
Microsoft.Cpp.Win32.user.props file missing
Visual Studio プロジェクトの設定を共有または再利用する
今の所は Win32 のみなので,また今度時間がある時に調べる.
VC Linux の include 設定
MFC OnUpdate… が来ない?
自前の Doc::UpdateCommand で CCmdUI の処理を実装して,イベントが来なかった.
原因は,範囲の指定が間違っていた.
ON_UPDATE_COMMAND_UI_RANGE (ID_Start, ID_End, OnUpdateCmd)
すぐに気づかなかったのでメモ.
vector<long> などを文字列に
std::vector<long> の文字列への変換.
何年も前に書いたコードで,使い方を忘れているのでそのまとめ.
次の様な関数を用意している.
template <class VX> tstring Vx_To_tstring(const VX& vx,LPCTSTR sp=_T(" "))
次の様な使い方で long の配列を文字列へ変換できる.
tstring vl_str = ::Vx_To_tstring<v_long>(long_ary) ;
ツールバーのコマンドが効かない
ある AP の動作で,ツールバーの一部のコマンドが入らない.
いろいろと確認すると,x64 exe で,リリース版,デバッグ版は関係ない.
x86 exe は問題ない(ちゃんと機能する).
2015/11 の exe でも同様の現象を確認.
メニューの同様のコマンドは問題ない.
ツールバーがちらつくので,UPDATE_COMMAND_UI の実装でうまくない部分があると思われる.
一時的に Disable にしているなど…
調べるのに時間がかかりそうなので,取りあえずメモ.
状態により,次の矛盾したものが呼ばれることがあったため修正.
pCmdUI->Enable(FALSE) ;
pCmdUI->Enable(TRUE) ;
WordPress のバックアップ
Twitter を見ていたら,次の様なものがあった.
QNAPはWordPressを対象に、ライセンスフリーでオールインワンのバックアップソリューションを発表
チュートリアルを見ると,WordPress のプラグインと MARS と言う NAS アプリを使うみたい.
How to Back up and Restore a WordPress Website Using Multi- Application Recovery Service (MARS)?
WordPress の「QNAP Backup」で表示される「AccessKey」を「コピー」.
MARS の「アプリケーション」-「WordPress」で「サービスの追加」.
MARS の「バックアップ」で「バックアップジョブの作成」.
「今すぐバックアップ」でバックアップが始まる.
ログを見ると「成功」にはなっているが,転送サイズが 656 Byte なので,うまく動作していない?
ここを同じ様にやってみたら,うまくバックアップはできたと思われる.
DS116 entware
localtime が正しく求められない ままの環境.
https://jml.mish.work/index.php/various/nas/synology-nas.html
ある程度 DS220+ に移行したので,SSH 接続環境の再設定.
CLI コマンドの導入.
DS220+ と同様 .
名前 :「SynoCommunity」
場所 :「https://packages.synocommunity.com/」
「SynoCli File Tools」をインストールして tree , mc , nano などを追加.
これで追加した tree は,localtime が正しく求められている.
Entware のインストール.
Install on Synology NAS
Iwao@DS116:~$ sudo -i
Password:
root@DS116:~# mkdir -p /volume1/@Entware/opt
root@DS116:~# rm -rf /opt
root@DS116:~# mkdir /opt
root@DS116:~# mount -o bind "/volume1/@Entware/opt" /opt
root@DS116:~# uname -m
armv7l
root@DS116:~# wget -O - https://bin.entware.net/armv7sf-k3.2/installer/generic.sh | /bin/sh
--2022-06-15 14:51:04-- https://bin.entware.net/armv7sf-k3.2/installer/generic.sh
タスクスケジューラの登録.
「作成」-「トリガーされたタスク」-「ユーザー指定のスクリプト」.
「Entware」「root」「ブートアップ」を指定.
「タスク設定」タブのスクリプトを記述するの所に,貼り付け.
NAS を再起動.
gcc のインストール.
Iwao@DS116:~$ sudo -i
root@DS116:~# opkg update
Downloading http://bin.entware.net/armv7sf-k3.2/Packages.gz
Updated list of available packages in /opt/var/opkg-lists/entware
root@DS116:~# opkg install gcc
Installing gcc (7.4.0-7) to root...
TS-253D SSL 証明書の更新
DS220+ を追加 して,その後いろいろと設定を変更したためか,TS-253D の証明書がうまく更新されない.
「コントロールパネル」-「セキュリティ」-「SSL 証明書…」-「証明書更新」でエラーになる.
原因は,以前「代替名」で指定していた jml.mish.work などがうまくなかったものと思われる.
現在 jml.mish.work は DS220+ の方に割り当てている.
もう一度,「証明書の交換」から入って,次の様に指定することで取得できた.
同様に AS5202T の方も…
こちらの場合は一度削除する必要があった.
2022/06/13
Synology NAS DS116 は,まだ完全に移行できていないので,ポートマッピングの設定を一時的に変更して取得.
次の画像は「既存の認証を書き換えます」としたもの.
「サブジェクトの指定の別名」での区切り文字(セミコロン)が間違っているため,「完了」が押せない.
Win.ini [Mail] MAPI=1
Win.ini がなくて MAPI が動作しなかった(Disable だった)と報告を受けた.
4 年位前に書き直した MAPI を使用したコードではチェックしない様にしたが,古いコードもまだ存在する.
それらのコードは MFC のコード docmapi.cpp を参考にしたもの.
VC 2022 のコードを見ると,Win.ini の [MAIL] の MAPI をチェックしている.
最初のコードを書いた 20 年以上前(VC 98)とそれほど変わっていない.
何もインストールしていない環境で Win.ini は存在する?
Win10 Pro 21H2 では次のものが存在している.
何かをアンインストールすると削除されることがあるのか?