Line data Source code
1 : // SPDX-FileCopyrightText: 2016 Anne Jan Brouwer
2 : // SPDX-License-Identifier: GPL-3.0-or-later
3 : #ifndef SRC_PASS_H_
4 : #define SRC_PASS_H_
5 :
6 : #include "enums.h"
7 : #include "executor.h"
8 : #include "userinfo.h"
9 :
10 : #include <QProcess>
11 : #include <QQueue>
12 : #include <QString>
13 : #include <cassert>
14 : #include <map>
15 :
16 : /*!
17 : \class Pass
18 : \brief Acts as an abstraction for pass or pass imitation
19 : */
20 : class Pass : public QObject {
21 0 : Q_OBJECT
22 :
23 : bool wrapperRunning;
24 : QStringList env;
25 :
26 : protected:
27 : Executor exec;
28 :
29 : typedef Enums::PROCESS PROCESS;
30 :
31 : public:
32 : Pass();
33 : void init();
34 :
35 156 : virtual ~Pass() {}
36 : virtual void GitInit() = 0;
37 : virtual void GitPull() = 0;
38 : virtual void GitPull_b() = 0;
39 : virtual void GitPush() = 0;
40 : virtual void Show(QString file) = 0;
41 : virtual void OtpGenerate(QString file) = 0;
42 : virtual void Insert(QString file, QString value, bool force) = 0;
43 : virtual void Remove(QString file, bool isDir) = 0;
44 : virtual void Move(const QString srcDir, const QString dest,
45 : const bool force = false) = 0;
46 : virtual void Copy(const QString srcDir, const QString dest,
47 : const bool force = false) = 0;
48 : virtual void Init(QString path, const QList<UserInfo> &users) = 0;
49 : virtual auto Generate_b(unsigned int length, const QString &charset)
50 : -> QString;
51 :
52 : void GenerateGPGKeys(QString batch);
53 : auto listKeys(QStringList keystrings, bool secret = false) -> QList<UserInfo>;
54 0 : auto listKeys(const QString &keystring = "", bool secret = false)
55 : -> QList<UserInfo>;
56 : void updateEnv();
57 : static auto getGpgIdPath(const QString &for_file) -> QString;
58 : static auto getRecipientList(const QString &for_file) -> QStringList;
59 : // TODO(bezet): getRecipientString is useless, refactor
60 : static auto getRecipientString(const QString &for_file,
61 : const QString &separator = " ",
62 : int *count = NULL) -> QStringList;
63 :
64 : protected:
65 : void executeWrapper(PROCESS id, const QString &app, const QStringList &args,
66 : bool readStdout = true, bool readStderr = true);
67 : auto generateRandomPassword(const QString &charset, unsigned int length)
68 : -> QString;
69 : auto boundedRandom(quint32 bound) -> quint32;
70 :
71 : virtual void executeWrapper(PROCESS id, const QString &app,
72 : const QStringList &args, QString input,
73 : bool readStdout = true, bool readStderr = true);
74 :
75 : protected slots:
76 : virtual void finished(int id, int exitCode, const QString &out,
77 : const QString &err);
78 :
79 : signals:
80 : void error(QProcess::ProcessError);
81 : void startingExecuteWrapper();
82 : void statusMsg(const QString &, int);
83 : void critical(const QString &, const QString &);
84 :
85 : void processErrorExit(int exitCode, const QString &err);
86 :
87 : void finishedAny(const QString &, const QString &);
88 : void finishedGitInit(const QString &, const QString &);
89 : void finishedGitPull(const QString &, const QString &);
90 : void finishedGitPush(const QString &, const QString &);
91 : void finishedShow(const QString &);
92 : void finishedOtpGenerate(const QString &);
93 : void finishedInsert(const QString &, const QString &);
94 : void finishedRemove(const QString &, const QString &);
95 : void finishedInit(const QString &, const QString &);
96 : void finishedMove(const QString &, const QString &);
97 : void finishedCopy(const QString &, const QString &);
98 : void finishedGenerate(const QString &, const QString &);
99 : void finishedGenerateGPGKeys(const QString &, const QString &);
100 : };
101 :
102 : #endif // SRC_PASS_H_
|