lg_pod_plugin 1.1.6.6 → 1.1.6.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad00d26eddca0197af9e74cce63dde7b58620b66694e5c97efeb6c8ca00c451d
|
4
|
+
data.tar.gz: 6f67d7bf931020022b87d2bb2de40b74d25716e6a4ef5b1dad0f70b0a7a03e67
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: efa9785b96cd87f2d8af38fa907b6df5f036a7d4c6f3caa8c4cf338d07233271d27c78d1a0177fddda2117a760cefd3adb6f9c111045634e35d733131e774198
|
7
|
+
data.tar.gz: ee86b67391bafbfc0db8b4b9063935b3f736f38487f181e2a729402d6cc1368806ace7f8acb21850b229a0436307e6e099dde50448e305ffa9d3a3acafe2875d
|
data/lib/command/init.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'claide'
|
2
|
+
require 'json'
|
2
3
|
require_relative 'command'
|
3
4
|
|
4
5
|
module LgPodPlugin
|
@@ -7,8 +8,7 @@ module LgPodPlugin
|
|
7
8
|
self.command = "init"
|
8
9
|
self.abstract_command = false
|
9
10
|
self.summary = '初始化gitlab projects 信息'
|
10
|
-
attr_accessor :
|
11
|
-
attr_accessor :password
|
11
|
+
attr_accessor :token
|
12
12
|
attr_accessor :host
|
13
13
|
self.description = <<-DESC
|
14
14
|
Manipulate the download cache for pods, like printing the cache content
|
@@ -17,16 +17,44 @@ module LgPodPlugin
|
|
17
17
|
|
18
18
|
def initialize(argv)
|
19
19
|
self.host = argv.option('host')
|
20
|
-
self.
|
21
|
-
self.password = argv.option('password')
|
20
|
+
self.token = argv.option('token')
|
22
21
|
super
|
23
22
|
end
|
24
23
|
|
25
24
|
def run
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
25
|
+
if self.host.nil? || self.host == ""
|
26
|
+
LgPodPlugin.log_red "传入host不能为空"
|
27
|
+
return
|
28
|
+
end
|
29
|
+
if self.token.nil? || self.token == ""
|
30
|
+
LgPodPlugin.log_red "传入token不能为空"
|
31
|
+
return
|
32
|
+
end
|
33
|
+
token_vaild = GitLabAPI.request_user_emails(self.host, self.token)
|
34
|
+
if token_vaild == "invalid token"
|
35
|
+
LgPodPlugin.log_red "无效的access_token, 请检查私人令牌是否在有限期内"
|
36
|
+
return
|
37
|
+
end
|
38
|
+
refresh_token = ""
|
39
|
+
expires_in = 7879680
|
40
|
+
created_at = Time.now.to_i
|
41
|
+
encrypt_access_token = LUtils.encrypt(self.token, "AZMpxzVxzbo3sFDLRZMpxzVxzbo3sFDZ")
|
42
|
+
hash = {"access_token": encrypt_access_token}
|
43
|
+
hash["token_type"] = "Bearer"
|
44
|
+
hash["expires_in"] = expires_in
|
45
|
+
hash["scope"] = "api"
|
46
|
+
hash["created_at"] = created_at
|
47
|
+
hash["refresh_token"] = refresh_token
|
48
|
+
db_path = LFileManager.download_director.join("database")
|
49
|
+
db_path.mkdir unless db_path.exist?
|
50
|
+
token_file = db_path.join("access_token.json")
|
51
|
+
str = JSON.generate(hash)
|
52
|
+
File.open(token_file.to_path, 'w+') { |f| f.write(str) }
|
53
|
+
LSqliteDb.shared.init_database
|
54
|
+
user_id = LUserAuthInfo.get_user_id(self.host)
|
55
|
+
user_model = LUserAuthInfo.new(user_id, "", "", self.host, self.token, "", (created_at + expires_in))
|
56
|
+
LSqliteDb.shared.insert_user_info(user_model)
|
57
|
+
LgPodPlugin.log_green "设置私人访问令牌成功"
|
30
58
|
end
|
31
59
|
|
32
60
|
end
|
@@ -23,23 +23,11 @@ module LgPodPlugin
|
|
23
23
|
user_info = LSqliteDb.shared.query_user_info(user_id)
|
24
24
|
# 用户授权 token 不存在, 提示用户输入用户名密码
|
25
25
|
unless user_info
|
26
|
-
user_info = GitLabAPI.
|
26
|
+
user_info = GitLabAPI.get_gitlab_access_token(uri, user_id)
|
27
27
|
return nil unless user_info
|
28
28
|
end
|
29
|
-
|
30
|
-
|
31
|
-
if user_info.expires_in <= time_now
|
32
|
-
# 刷新 token 失败时, 通过已经保存的用户名密码来刷新 token
|
33
|
-
new_user_info = GitLabAPI.refresh_gitlab_access_token uri.hostname, user_info.refresh_token
|
34
|
-
if new_user_info.nil?
|
35
|
-
username = user_info.username
|
36
|
-
password = user_info.password
|
37
|
-
user_info = GitLabAPI.get_gitlab_access_token_input(uri, user_id, username, password)
|
38
|
-
return nil unless user_info
|
39
|
-
else
|
40
|
-
user_info = new_user_info
|
41
|
-
end
|
42
|
-
end
|
29
|
+
user_info = GitLabAPI.check_gitlab_access_token_valid(uri, user_info)
|
30
|
+
return nil unless user_info
|
43
31
|
config = LConfig.new
|
44
32
|
config.host = uri.hostname
|
45
33
|
config.access_token = user_info.access_token
|
@@ -7,6 +7,33 @@ module LgPodPlugin
|
|
7
7
|
|
8
8
|
class GitLabAPI
|
9
9
|
|
10
|
+
# 通过读取本地文件获取 access_token
|
11
|
+
def self.get_gitlab_access_token(uri, user_id)
|
12
|
+
text = LUtils.encrypt("AzfAjh-xTzyRBXmYuGBr", "AZMpxzVxzbo3sFDLRZMpxzVxzbo3sFDZ")
|
13
|
+
db_path = LFileManager.download_director.join("database")
|
14
|
+
db_path.mkdir unless db_path.exist?
|
15
|
+
token_file = db_path.join("access_token.json")
|
16
|
+
return self.get_gitlab_access_token_input(uri, user_id, nil, nil) unless token_file.exist?
|
17
|
+
json = JSON.parse(File.read("#{token_file.to_path}"))
|
18
|
+
encrypt_access_token = json["access_token"]
|
19
|
+
return self.get_gitlab_access_token_input(uri, user_id, nil, nil) if encrypt_access_token.nil?
|
20
|
+
access_token = LUtils.decrypt(encrypt_access_token, "AZMpxzVxzbo3sFDLRZMpxzVxzbo3sFDZ")
|
21
|
+
token_vaild = GitLabAPI.request_user_emails(uri.hostname, access_token)
|
22
|
+
if token_vaild == "invalid token"
|
23
|
+
FileUtils.rm_rf token_file
|
24
|
+
return self.get_gitlab_access_token_input(uri, user_id, nil, nil) if encrypt_access_token.nil?
|
25
|
+
end
|
26
|
+
user_id = LUserAuthInfo.get_user_id(uri.hostname)
|
27
|
+
refresh_token = json["refresh_token"]
|
28
|
+
expires_in = json["expires_in"] ||= 7879680
|
29
|
+
created_at = json["created_at"] ||= Time.now.to_i
|
30
|
+
user_model = LUserAuthInfo.new(user_id, "", "", uri.hostname, access_token, refresh_token, (created_at + expires_in))
|
31
|
+
LSqliteDb.shared.insert_user_info(user_model)
|
32
|
+
LgPodPlugin.log_green "请求成功: `access_token` => #{access_token}, expires_in => #{expires_in}"
|
33
|
+
return user_model
|
34
|
+
end
|
35
|
+
|
36
|
+
# 通过输入用户名和密码 获取 access_token
|
10
37
|
def self.get_gitlab_access_token_input(uri, user_id, username = nil, password = nil)
|
11
38
|
unless username && password
|
12
39
|
LgPodPlugin.log_yellow "请输入 `#{uri.to_s}` 的用户名"
|
@@ -18,6 +45,40 @@ module LgPodPlugin
|
|
18
45
|
user_info = LSqliteDb.shared.query_user_info(user_id)
|
19
46
|
return user_info
|
20
47
|
end
|
48
|
+
# 检查 token 是否在有效期内
|
49
|
+
def self.check_gitlab_access_token_valid(uri, user_info)
|
50
|
+
time_now = Time.now.to_i
|
51
|
+
# 判断 token 是否失效
|
52
|
+
if user_info.expires_in <= time_now
|
53
|
+
refresh_token = user_info.refresh_token
|
54
|
+
if refresh_token.nil? || refresh_token == "" # 使用本地令牌访问
|
55
|
+
project_name = LUtils.get_git_project_name(uri.to_s)
|
56
|
+
token_vaild = GitLabAPI.request_user_emails(uri.hostname, user_info.access_token)
|
57
|
+
if token_vaild == "success"
|
58
|
+
new_user_info = LUserAuthInfo.new(user_info.id, "", "", uri.hostname, user_info.access_token, nil, (time_now + 7879680))
|
59
|
+
LSqliteDb.shared.insert_user_info(user_info)
|
60
|
+
return new_user_info
|
61
|
+
else
|
62
|
+
token_file = LFileManager.download_director.join("database").join("access_token.json")
|
63
|
+
FileUtils.rm_rf token_file if token_file.exist?
|
64
|
+
return self.get_gitlab_access_token_input(uri, user_info.id, nil, nil)
|
65
|
+
end
|
66
|
+
else
|
67
|
+
# 刷新 token 失败时, 通过已经保存的用户名密码来刷新 token
|
68
|
+
new_user_info = GitLabAPI.refresh_gitlab_access_token uri.hostname, refresh_token
|
69
|
+
if new_user_info.nil?
|
70
|
+
username = user_info.username
|
71
|
+
password = user_info.password
|
72
|
+
user_info = GitLabAPI.get_gitlab_access_token_input(uri, user_info.user_id, username, password)
|
73
|
+
return nil unless user_info
|
74
|
+
else
|
75
|
+
user_info = new_user_info
|
76
|
+
end
|
77
|
+
end
|
78
|
+
else
|
79
|
+
return user_info
|
80
|
+
end
|
81
|
+
end
|
21
82
|
|
22
83
|
public
|
23
84
|
# 获取 GitLab access_token
|
@@ -228,6 +289,31 @@ module LgPodPlugin
|
|
228
289
|
end
|
229
290
|
end
|
230
291
|
|
292
|
+
# 通过名称搜索项目信息
|
293
|
+
public
|
294
|
+
def self.request_user_emails(host, access_token)
|
295
|
+
begin
|
296
|
+
hash_map = {"access_token": access_token}
|
297
|
+
uri = URI("#{host}/api/v4/user/emails")
|
298
|
+
uri.query = URI.encode_www_form(hash_map)
|
299
|
+
res = Net::HTTP.get_response(uri)
|
300
|
+
if res.body
|
301
|
+
array = JSON.parse(res.body)
|
302
|
+
else
|
303
|
+
array = []
|
304
|
+
end
|
305
|
+
if array.is_a?(Array)
|
306
|
+
return "success"
|
307
|
+
elsif array.is_a?(Hash)
|
308
|
+
return "invalid token"
|
309
|
+
else
|
310
|
+
return "invalid token"
|
311
|
+
end
|
312
|
+
rescue
|
313
|
+
return "invalid token"
|
314
|
+
end
|
315
|
+
end
|
316
|
+
|
231
317
|
end
|
232
318
|
|
233
319
|
end
|
@@ -30,13 +30,6 @@ module LgPodPlugin
|
|
30
30
|
end
|
31
31
|
return if origin_uri.nil?
|
32
32
|
@uri = origin_uri
|
33
|
-
# redirect_url = LProject.shared.redirect_url_hash[origin_uri.host]
|
34
|
-
# if redirect_url
|
35
|
-
# @uri = redirect_url
|
36
|
-
# else
|
37
|
-
# @uri = URI(get_redirect_url(origin_uri.scheme + "://" + origin_uri.host))
|
38
|
-
# LProject.shared.redirect_url_hash[origin_uri.host] = @uri
|
39
|
-
# end
|
40
33
|
@host = @uri.host
|
41
34
|
@scheme = @uri.scheme ||= "https"
|
42
35
|
@hostname = @scheme + "://" + @host
|
@@ -3,20 +3,20 @@ require 'resolv'
|
|
3
3
|
require "ipaddr"
|
4
4
|
require 'base64'
|
5
5
|
require 'fileutils'
|
6
|
-
|
6
|
+
require_relative 'aes-crypt'
|
7
7
|
|
8
8
|
module LgPodPlugin
|
9
9
|
|
10
10
|
class LUtils
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
12
|
+
def self.encrypt(message, password)
|
13
|
+
encrypted_data = AESCrypt.encrypt(message, password)
|
14
|
+
encrypted_data.tr("\n", "")
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.decrypt(message, password)
|
18
|
+
AESCrypt.decrypt message, password
|
19
|
+
end
|
20
20
|
|
21
21
|
def self.md5(text)
|
22
22
|
return "" unless text
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lg_pod_plugin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.6.
|
4
|
+
version: 1.1.6.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- dongzb01
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-06-
|
11
|
+
date: 2023-06-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cocoapods
|