From 0f9fd92899f910b0d7e7f117e2313607d6db9c39 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E8=AB=8F=E8=A8=AA=E5=AD=90?= Date: Wed, 29 Nov 2023 22:16:09 +0900 Subject: [PATCH] =?utf8?q?=E3=83=91=E3=82=B9=E3=83=AF=E3=83=BC=E3=83=89?= =?utf8?q?=E5=89=8A=E9=99=A4=E3=81=AE=E6=A9=9F=E8=83=BD=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 2 ++ LICENSE.txt | 0 Makefile | 4 ++-- README.md | 25 +++++++++++++++++++++++++ delpass.c | 26 ++++++++++++++++++++++++++ delpass.h | 6 ++++++ main.c | 10 +++++----- 7 files changed, 66 insertions(+), 7 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 LICENSE.txt create mode 100644 README.md create mode 100644 delpass.c create mode 100644 delpass.h diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..0a0d870 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,2 @@ +# 1.0.0 +* 最初リリース diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..e69de29 diff --git a/Makefile b/Makefile index 1817151..95f4ea6 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,9 @@ NAME=sp -VERSION=0.0.1 +VERSION=1.0.0 # Linux、Haiku、かIllumos = /usr、FreeBSDかOpenBSD = /usr/local、NetBSD = /usr/pkg PREFIX=/usr CC=cc -FILES=main.c showpass.c yankpass.c addpass.c +FILES=main.c showpass.c yankpass.c addpass.c delpass.c CFLAGS=-Wall -Wextra -g LDFLAGS=-lgpgme diff --git a/README.md b/README.md new file mode 100644 index 0000000..efebab6 --- /dev/null +++ b/README.md @@ -0,0 +1,25 @@ +# sp +シンプルなパスワードマネージャー + +## インストールする方法 +```sh +mkdir -p ~/.local/share/sp +gpg --generate-key +gpg -k | less +``` +鍵をコピーして下さい。 +```sh +echo "(コピーした鍵)" >> ~/.local/share/sp/.gpg-id +``` + +### Linux +```sh +make +doas make install +``` + +### FreeBSDかOpenBSD +```sh +gmake +doas gmake install PREFIX=/usr/local +``` diff --git a/delpass.c b/delpass.c new file mode 100644 index 0000000..406bbbc --- /dev/null +++ b/delpass.c @@ -0,0 +1,26 @@ +#include +#include +#include + +#include "delpass.h" + +void delpass(char* file) { + // パスを準備 + char pwfile[512]; + char* homedir = getenv("HOME"); + if (homedir == NULL) { + perror("ホームディレクトリを受取に失敗。"); + return; + } + + char* basedir = "/.local/share/sp/"; + char* ext = ".gpg"; + snprintf(pwfile, sizeof(pwfile), "%s%s%s%s", homedir, basedir, file, ext); + + if (unlink(pwfile) == -1) { + perror("パスワードを削除出来ませんですた。"); + } + + printf("パスワードを削除しました。\n"); + return; +} diff --git a/delpass.h b/delpass.h new file mode 100644 index 0000000..db43a4e --- /dev/null +++ b/delpass.h @@ -0,0 +1,6 @@ +#ifndef DELPASS_H +#define DELPASS_H + +void delpass(char* file); + +#endif diff --git a/main.c b/main.c index 4c50fc3..2a24e43 100644 --- a/main.c +++ b/main.c @@ -7,15 +7,15 @@ void initpass(char* gpgid); #include "showpass.h" #include "yankpass.h" -void listpass(char* dir); +void listpass(); #include "addpass.h" -void delpass(char* file); +#include "delpass.h" void genpass(char* file, int count, bool issecure); void otppass(char* file); void helpme(); const char* sofname = "sp"; -const char* version = "0.0.1"; +const char* version = "1.0.0"; void helpme() { printf("使い方:\n"); @@ -24,7 +24,7 @@ void helpme() { printf("%s -y <パスワード名> :パスワードを表示せずクリップボードにコピーする\n", sofname); //printf("%s -l :パスワード一覧を表示\n", sofname); printf("%s -a <パスワード名> :パスワードを追加\n", sofname); - //printf("%s -d <パスワード名> :パスワードを削除\n", sofname); + printf("%s -d <パスワード名> :パスワードを削除\n", sofname); //printf("%s -g <文字数> [risk|secure] <パスワード名> :希望文字数でパスワードをランダムに作成する。risk=英数字のみ(不安)、secure=英数字+特別文字(デフォルト)を使用\n", sofname); //printf("%s -o <パスワード名>\n :ワンタイムパスワード(TOTP)を表示。存在しなければ、創作する", sofname); printf("%s -h :ヘルプを表示\n", sofname); @@ -42,7 +42,7 @@ int main (int argc, char* argv[]) { else if (argc == 3 && strcmp(argv[1], "-y") == 0) yankpass(argv[2]); else if (argc == 2 && strcmp(argv[1], "-l") == 0) printf("TODO: 一覧\n"); else if (argc == 3 && strcmp(argv[1], "-a") == 0) addpass(argv[2]); - else if (argc == 3 && strcmp(argv[1], "-d") == 0) printf("TODO: 削除\n"); + else if (argc == 3 && strcmp(argv[1], "-d") == 0) delpass(argv[2]); else if ((argc == 4 || argc == 5) && strcmp(argv[1], "-g") == 0) printf("TODO: パスワードを創作\n"); else if (argc == 3 && strcmp(argv[1], "-o") == 0) printf("TODO: otp\n"); else if (argc == 2 && strcmp(argv[1], "-v") == 0) printf("%s-%s\n", sofname, version); -- 2.43.0