問題タブ [gio]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gstreamer - Gstreamer でソース固有マルチキャストの送信元アドレスを指定する方法
ソース固有のマルチキャストを受信するように gstreamer1.0 クライアントをセットアップしようとしています。マルチキャストのグループ IP を設定する方法は明らかですが、送信元アドレスを設定するためのプロパティが表示されません。 http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good-plugins/html/gst-plugins-good-plugins-udpsrc.html
gtk - Gio.Settings で再配置可能なスキーマのパスを取得するには?
Gio.Settings では、次を使用して再配置可能なスキーマを一覧表示できます
そして私は使用することができます
インスタンスを取得しGio.Settings
ます。path
しかし、特定の に現在使用されているすべての値を取得するにはどうすればよいschema_id
ですか?
linux - gsettings を動的に作成できますか?
gsettings を使用してオブジェクトを保存できるのか、それともすべてを静的に設定する必要があるのか知りたいです。ユーザー オブジェクトなどのオブジェクトを gsettings に保存できますか? 各ユーザーの固定プロパティでユーザーを追加および削除できますか?
javascript - GJS での一連の非同期タスクの後に何かをスケジュールするにはどうすればよいですか?
GJS と GNOME プラットフォーム (GTK+、GLib、Gio、GObject) を使用して JavaScript で簡単なデスクトップ アプリケーションを作成しています。以下のコードは、私が直面している状況を示しており、アプリケーションが使用するファイルにアクセスする必要がないため、簡単に再現できます。要するに、一連の非同期タスク (一連のファイルの内容の読み込み) を完了した後、指定されたコード行を実行したいと思います。どうすれば GJS でこれを行うことができますか?
PS: 提供されたコードでは、すべての非同期タスクを終了する前に示されたコード行を実行しても、アプリケーションが正しく動作することは妨げられません。ただし、ファイルが読み込まれるたびにリストをソートするのではなく、アプリケーションの起動時に一度だけリストをソートしたいと考えています。そしてもちろん、その方法を知っていれば、別の状況でも役立ちます。
smtp - サーバー側の SMTP STARTTLS を実装するにはどうすればよいですか?
Vala と GLib + GIO を使用して単純な SMTP サーバーを実装しようとしています。
プレーンテキスト通信は今のところ問題ありませんが、STARTTLS を使用した TLS になるとさらに難しくなります。
これは私がこれまでに持っているコードです:
と で有効な SSL 証明書vsmtpd.key
(vsmtpd.crt
私は で生成しましたopenssl req -x509 -newkey rsa:2048 -keyout vsmtpd.key -out vsmtpd.pem -days 365 -nodes
) を指定して、プログラムを開始し、次の OpenSSL コマンドを実行して STARTTLS をテストします。
私のプログラムからの出力は次のとおりです。
OpenSSL からの出力は次のとおりです。
出力から私が理解していることは、私のプログラムは TLS ハンドシェイクが完了する前に接続を閉じます。(Thunderbird と Claws Mail も使ってみました)
ここで何が間違っていますか?
GTLsServerConnection
PS: STARTTLS の状況で使用する方法の例が見つかりませんでした。
アップデート:
OpenSSL の -ssl2、-ssl3、-tls1、-tls1_1、-tls1_2 オプションも試しましたが、これも機能しません。
収量:
したがって、クライアントは「client hello A」を送信しますが、サーバーは正しい「server hello A」を送信しません。
別の方法として、 を試すこともできますgnutls-cli --crlf --starttls-proto=smtp --port 10025 localhost
。
からの出力GNUTLS_DEBUG_LEVEL=11 ./vsmtpd
は次のとおりです。
python - libsecret を使用して、ロック解除されたアイテムのラベルにアクセスできません
libsecret を使用する小さなプログラムに取り組んでいます。このプログラムは Secret.Service を作成できるはずです...
...そのサービスから特定のコレクションを取得します...
...そして、そのコレクション内のすべてのアイテムをリストします。これは、ラベルを印刷するだけです。
重要な詳細は、コレクションが最初にロックされている可能性があることです。そのため、その可能性をチェックしてコレクションのロックを解除しようとするコードを含める必要があります。
コレクションが最初にロック解除されたときに、現在持っているコードで必要なことをすべて実行できるため、これは重要です。ただし、コレクションが最初にロックされている場合、ロックを解除した後でも、内部のアイテムからラベルを取得できません。私ができることは、Service を disconnect() し、Service を再作成し、ロックが解除された Collection を取得することです。このようにして、各 Item のラベルを読み取ることができます。もう 1 つの興味深い点は、ラベルが一度読み取られると、ラベルにアクセスするためにサービスを再接続する必要がなくなったことです。これは非常に洗練されていないように思われるので、別の解決策を探し始めました。
Collection は Gio.DBusProxy から継承され、このクラスはアクセスするオブジェクトからのデータをキャッシュすることに気付きました。だから私はそれが私にとって問題であると仮定しています.キャッシュを更新していません。ドキュメントには、Gio.DBusProxy が元のオブジェクトの変更を検出できるはずであると記載されているため、これは奇妙ですが、それは起こっていません。
そのクラスのキャッシュを更新する方法がわかりません。私はいくつかのタツノオトシゴ (libsecret を使用する別のアプリケーション) の vala コードを調べましたが、完全に解読できませんでした。vala をコーディングすることはできませんが、Object.emit() メソッドについて言及されています。その方法を使用して目標を達成する方法がまだわかりません。ドキュメント ( https://lazka.github.io/pgi-docs/Secret-1/# ) から、別の有望なメソッド Object.notify() を見つけました。これは、キャッシュを有効にする変更の通知を送信できるようです。更新されていますが、まだ適切に使用できていません。
これについて gnome-keyring メーリングリストにも投稿しました...
https://mail.gnome.org/archives/gnome-keyring-list/2015-November/msg00000.html
...これまでのところ回答がなく、この問題について言及しているbugzillaレポートがgnome.orgで見つかりました...
https://bugzilla.gnome.org/show_bug.cgi?id=747359
...これまでのところ(7か月)解決策はありません。
したがって、誰かがこの問題に光を当てることができれば、それは素晴らしいことです. そうしないと、残念なことに、いくつかの洗練されていないコードが私の小さなプログラムに侵入する可能性があります。
編集-0:
Python3 で問題を再現するためのコードを次に示します。このスニペットは、1 つのアイテム「test_item」を含むコレクション「test_col」を作成し、コレクションをロックします。libsecret は、この新しいコレクションに必要なパスワードを要求することに注意してください。
次に、gnome-keyring-daemon を再起動する必要があります。ログアウトして再度ログインするか、コマンドラインを使用できます。
これによりキーリングがセットアップされ、最初にロックされているコレクションを開こうとすることができます。このコード スニペットでそれを行うことができます。以前に設定したパスワードをもう一度入力するように求められることに注意してください。
このコードは、アイテム ラベルを 2 回読み取ろうとします。失敗する通常の方法では、空の文字列が表示され、回避策を使用してサービスを切断し、再接続する必要があります。