-
Notifications
You must be signed in to change notification settings - Fork 0
/
GitHubOtpCreator.py
52 lines (47 loc) · 2.49 KB
/
GitHubOtpCreator.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!python3
#encoding:utf-8
import os.path
import configparser
import argparse
from database.src.Database import Database
import pyotp
import pyperclip
import web.log.Log
class GitHubOtpCreator:
def __init__(self):
self.__path_dir_this = os.path.abspath(os.path.dirname(__file__))
self.__db = Database(self.__path_dir_this)
# self.__db = Database()
self.__db.Initialize()
def Create(self):
self.__totp = pyotp.TOTP(self.__GetUserSecret())
# print("otp = {0}".format(self.__totp.now()))
web.log.Log.Log().Logger.info("otp = {0}".format(self.__totp.now()))
pyperclip.copy(self.__totp.now())
def __GetUserSecret(self):
parser = argparse.ArgumentParser(
description='GitHub Repository Uploader.',
)
parser.add_argument('-u', '--username', '--user')
args = parser.parse_args()
username = args.username
if None is username:
config = configparser.ConfigParser()
config.read('./config.ini')
if not('GitHub' in config):
raise Exception('ユーザ名が必要です。しかし起動引数にもconfig.iniにも存在しません。起動引数なら第一引数にユーザ名を渡してください。iniならGitHubセクションUserキーにユーザ名を指定してください。')
if not('User' in config['GitHub']):
raise Exception('ユーザ名が必要です。しかし起動引数にもconfig.iniにも存在しません。起動引数なら第一引数にユーザ名を渡してください。iniならGitHubセクションUserキーにユーザ名を指定してください。')
username = config['GitHub']['User']
# print("username = {0}".format(username))
web.log.Log.Log().Logger.info("username = {0}".format(username))
account = self.__db.Accounts['Accounts'].find_one(Username=username)
if None is account:
raise Exception('ユーザ {0} はDBのAccountsテーブルに存在しません。登録してから再度実行してください。'.format(username))
twofactor = self.__db.Accounts['TwoFactors'].find_one(AccountId=account['Id'])
if None is twofactor:
raise Exception('ユーザ {0} はDBのTwoFactorsテーブルに存在しません。登録してから再度実行してください。'.format(username))
return twofactor['Secret']
if __name__ == '__main__':
c = GitHubOtpCreator()
c.Create()