FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
python-gitlab/tools/generate_token.py at master · pythonthings/python-gitlab · GitHub
pythonthings
python-gitlab
Repository navigation
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
python-gitlab
/
tools
/
generate_token.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
executable file
·
65 lines (47 loc) · 1.62 KB
Breadcrumbs
python-gitlab
/
tools
/
generate_token.py
Copy path
File metadata and controls
executable file
·
65 lines (47 loc) · 1.62 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/usr/bin/env python
import
sys
try
:
from
urllib
.
parse
import
urljoin
except
ImportError
:
from
urlparse
import
urljoin
from
bs4
import
BeautifulSoup
import
requests
endpoint
=
"http://localhost:8080"
root_route
=
urljoin
(
endpoint
,
"/"
)
sign_in_route
=
urljoin
(
endpoint
,
"/users/sign_in"
)
pat_route
=
urljoin
(
endpoint
,
"/profile/personal_access_tokens"
)
login
=
"root"
password
=
"5iveL!fe"
def
find_csrf_token
(
text
):
soup
=
BeautifulSoup
(
text
,
"lxml"
)
token
=
soup
.
find
(
attrs
=
{
"name"
:
"csrf-token"
})
param
=
soup
.
find
(
attrs
=
{
"name"
:
"csrf-param"
})
data
=
{
param
.
get
(
"content"
):
token
.
get
(
"content"
)}
return
data
def
obtain_csrf_token
():
r
=
requests
.
get
(
root_route
)
token
=
find_csrf_token
(
r
.
text
)
return
token
,
r
.
cookies
def
sign_in
(
csrf
,
cookies
):
data
=
{
"user[login]"
:
login
,
"user[password]"
:
password
}
data
.
update
(
csrf
)
r
=
requests
.
post
(
sign_in_route
,
data
=
data
,
cookies
=
cookies
)
token
=
find_csrf_token
(
r
.
text
)
return
token
,
r
.
history
[
0
].
cookies
def
obtain_personal_access_token
(
name
,
csrf
,
cookies
):
data
=
{
"personal_access_token[name]"
:
name
,
"personal_access_token[scopes][]"
: [
"api"
,
"sudo"
],
}
data
.
update
(
csrf
)
r
=
requests
.
post
(
pat_route
,
data
=
data
,
cookies
=
cookies
)
soup
=
BeautifulSoup
(
r
.
text
,
"lxml"
)
token
=
soup
.
find
(
"input"
,
id
=
"created-personal-access-token"
).
get
(
"value"
)
return
token
def
main
():
csrf1
,
cookies1
=
obtain_csrf_token
()
csrf2
,
cookies2
=
sign_in
(
csrf1
,
cookies1
)
token
=
obtain_personal_access_token
(
"default"
,
csrf2
,
cookies2
)
print
(
token
)
if
__name__
==
"__main__"
:
main
()
Back
|
FazBrowse Home
|
New Git URL