web-dev-qa-db-ja.com

Gnomeキーリングのロックが解除されているかどうかを確認しますか?

Gnomeキーリングのロックが解除されているかどうかを判断する方法を探しています。主に、デフォルトのもの。 secret-toolを使用して非常に近づきましたが、キーリングがロックされている場合でも、ダイアログが表示されます。

ユーザーにキーリングのロックを解除するように依頼したくありません。

ロックされているか、ロックが解除されているかのどちらかで、話は終わりです。その目的は、ユーザーがキーリングについて知ったり考えたりする必要がないようにすることです。キーリングがロックされている場合は、何かを実行し(すべてのキーリングを削除します)、キーリングがロック解除されている場合は、別のことを実行します(通常どおり続行します)。すべてバックグラウンドでサイレントに実行します。

だから問題は、どのツールが実際にその種のチェックを可能にするのかということです。スクリプトの残りの部分を配置しました。必要なのはsilentsecret-toolの置き換えだけです。

4
DigitalMan

Gnomeキーリングツール(gnomeキーリングをチェックおよび制御するための小さなツールをいくつか作成しました)

ソースとリリース: https://github.com/intika/gnome-keyring-tools

ロックキーリング-gkey-lock.c

_#include <stdio.h>
#include <gnome-keyring.h>

int main() {
    GnomeKeyringResult lock_result = gnome_keyring_lock_all_sync();
    if (lock_result == GNOME_KEYRING_RESULT_OK) {
        printf("Successfully locked\n");
        return 0;
    } else {
        printf("Error locking keyring: %d\n", lock_result);
        return 1;
    }
}
_

キーリングのロックを解除する-gkey-unlock.c

_#include <stdio.h>
#include <gnome-keyring.h>

int main() {
    GnomeKeyringResult lock_result = gnome_keyring_unlock_sync(NULL,NULL);
    if (lock_result == GNOME_KEYRING_RESULT_OK) {
        printf("Successfully unlocked\n");
        return 0;
    } else {
        printf("Error unlocking keyring: %d\n", lock_result);
        return 1;
    }
}
_

キーリングを確認してください-gkey-check.c

_#include <stdio.h>
#include <gnome-keyring.h>

int main() {

  GnomeKeyringInfo *info;
  GnomeKeyringResult gkr;

  gkr = gnome_keyring_get_info_sync(NULL, &info);
  if (gkr != GNOME_KEYRING_RESULT_OK) {
    printf("error\n");
    return -1;
  }
  if (gnome_keyring_info_get_is_locked(info)) {
    printf("locked\n");
    return 0;
  }
  else {
    printf("unlocked\n");
    return -1;
  }
  gnome_keyring_info_free(info);

}
_

構築方法

_cc gkey-lock.c -o gkey-lock -Wall -I/usr/include/gnome-keyring-1 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -lgnome-keyring -lglib-2.0
cc gkey-unlock.c -o gkey-unlock -Wall -I/usr/include/gnome-keyring-1 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -lgnome-keyring -lglib-2.0
cc gkey-check.c -o gkey-check -Wall -I/usr/include/gnome-keyring-1 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -lgnome-keyring -lglib-2.0
_

ボーナス-チェック:Python --gkey-check.py

_import gnomekeyring
print gnomekeyring.get_info_sync(gnomekeyring.get_default_keyring_sync()).get_is_locked()
_

ボーナスII-KDEタスクバー/トレイのGnomeキーリング状態を監視する

文字列unlockedに加えて、ロックが解除されたときにgkey-checkがエラーを返すようにしました。その後、KDE ​​_Server Status_ウィジェットを使用して、コマンド_gkey-check_

3
intika