Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
D
douban-api-proxy
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
captainwong
douban-api-proxy
Commits
24286694
Commit
24286694
authored
Dec 05, 2020
by
Ozzieisaacs
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' into Develop
parents
7aabfc57
15bb0ce9
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
45 additions
and
30 deletions
+45
-30
editbooks.py
cps/editbooks.py
+1
-1
kobo.py
cps/kobo.py
+1
-1
simpleldap.py
cps/services/simpleldap.py
+2
-2
config_edit.html
cps/templates/config_edit.html
+1
-1
web.py
cps/web.py
+40
-25
No files found.
cps/editbooks.py
View file @
24286694
...
...
@@ -588,7 +588,7 @@ def edit_book(book_id):
# create the function for sorting...
calibre_db
.
update_title_sort
(
config
)
book
=
calibre_db
.
get_filtered_book
(
book_id
)
book
=
calibre_db
.
get_filtered_book
(
book_id
,
allow_show_archived
=
True
)
# Book not found
if
not
book
:
...
...
cps/kobo.py
View file @
24286694
...
...
@@ -52,7 +52,7 @@ from .services import SyncToken as SyncToken
from
.web
import
download_required
from
.kobo_auth
import
requires_kobo_auth
,
get_auth_token
KOBO_FORMATS
=
{
"KEPUB"
:
[
"KEPUB"
],
"EPUB"
:
[
"EPUB3"
,
"EPUB"
]}
KOBO_FORMATS
=
{
"KEPUB"
:
[
"KEPUB"
,
"EPUB3"
],
"EPUB"
:
[
"EPUB"
]}
KOBO_STOREAPI_URL
=
"https://storeapi.kobo.com"
KOBO_IMAGEHOST_URL
=
"https://kbimages1-a.akamaihd.net"
...
...
cps/services/simpleldap.py
View file @
24286694
...
...
@@ -85,8 +85,8 @@ def init_app(app, config):
log
.
error
(
e
)
def
get_object_details
(
user
=
None
,
group
=
None
,
query_filter
=
None
,
dn_only
=
Fals
e
):
return
_ldap
.
get_object_details
(
user
,
group
,
query_filter
,
dn_only
)
def
get_object_details
(
user
=
None
,
query_filter
=
Non
e
):
return
_ldap
.
get_object_details
(
user
,
query_filter
=
query_filter
)
def
bind
():
...
...
cps/templates/config_edit.html
View file @
24286694
...
...
@@ -332,7 +332,7 @@
<input
type=
"text"
class=
"form-control"
id=
"config_ldap_group_members_field"
name=
"config_ldap_group_members_field"
value=
"{% if config.config_ldap_group_members_field != None %}{{ config.config_ldap_group_members_field }}{% endif %}"
autocomplete=
"off"
>
</div>
<div
class=
"form-group"
>
<label
for=
"ldap_import_user_filter"
>
{{_('LDAP
Authentica
tion')}}
</label>
<label
for=
"ldap_import_user_filter"
>
{{_('LDAP
Member User Filter Detec
tion')}}
</label>
<select
name=
"ldap_import_user_filter"
id=
"ldap_import_user_filter"
class=
"form-control"
data-control=
"ldap_member_user_object"
>
<option
value=
"0"
{%
if
config
.
config_ldap_member_user_object =
=
""
%}
selected
{%
endif
%}
>
{{ _('Autodetect') }}
</option>
<option
value=
"1"
{%
if
config
.
config_ldap_member_user_object
%}
selected
{%
endif
%}
>
{{ _('Custom Filter') }}
</option>
...
...
cps/web.py
View file @
24286694
...
...
@@ -328,37 +328,51 @@ def import_ldap_users():
user
=
username
.
decode
(
'utf-8'
)
if
'='
in
user
:
# if member object field is empty take user object as filter
if
config
.
config_ldap_member_user_object
:
query_filter
=
config
.
config_ldap_member_user_object
else
:
query_filter
=
config
.
config_ldap_user_object
try
:
if
config
.
config_ldap_member_user_object
:
user_identifier
=
extract_user_identifier
(
user
,
config
.
config_ldap_member_user_object
)
else
:
user_identifier
=
extract_user_identifier
(
user
,
config
.
config_ldap_user_object
)
user_identifier
=
extract_user_identifier
(
user
,
query_filter
)
except
Exception
as
e
:
log
.
warning
(
e
)
continue
else
:
user_identifier
=
user
if
ub
.
session
.
query
(
ub
.
User
)
.
filter
(
ub
.
User
.
nickname
==
user_identifier
.
lower
())
.
first
():
log
.
warning
(
"LDAP User:
%
s Already in Database"
,
user_identifier
)
query_filter
=
None
try
:
user_data
=
services
.
ldap
.
get_object_details
(
user
=
user_identifier
,
query_filter
=
query_filter
)
except
AttributeError
as
e
:
log
.
exception
(
e
)
continue
user_data
=
services
.
ldap
.
get_object_details
(
user
=
user_identifier
,
group
=
None
,
query_filter
=
None
,
dn_only
=
False
)
if
user_data
:
content
=
ub
.
User
()
# user_login_field = extract_dynamic_field_from_filter(user, config.config_ldap_user_object)
content
.
nickname
=
user_identifier
# user_data[user_login_field][0].decode('utf-8')
content
.
password
=
''
# dummy password which will be replaced by ldap one
user_login_field
=
extract_dynamic_field_from_filter
(
user
,
config
.
config_ldap_user_object
)
username
=
user_data
[
user_login_field
][
0
]
.
decode
(
'utf-8'
)
# check for duplicate username
if
ub
.
session
.
query
(
ub
.
User
)
.
filter
(
func
.
lower
(
ub
.
User
.
nickname
)
==
username
.
lower
())
.
first
():
# if ub.session.query(ub.User).filter(ub.User.nickname == username).first():
log
.
warning
(
"LDAP User
%
s Already in Database"
,
user_data
)
continue
kindlemail
=
''
if
'mail'
in
user_data
:
content
.
email
=
user_data
[
'mail'
][
0
]
.
decode
(
'utf-8'
)
user
email
=
user_data
[
'mail'
][
0
]
.
decode
(
'utf-8'
)
if
(
len
(
user_data
[
'mail'
])
>
1
):
content
.
kindle_mail
=
user_data
[
'mail'
][
1
]
.
decode
(
'utf-8'
)
kindlemail
=
user_data
[
'mail'
][
1
]
.
decode
(
'utf-8'
)
else
:
log
.
debug
(
'No Mail Field Found in LDAP Response'
)
content
.
email
=
user
+
'@email.com'
useremail
=
username
+
'@email.com'
# check for duplicate email
if
ub
.
session
.
query
(
ub
.
User
)
.
filter
(
func
.
lower
(
ub
.
User
.
email
)
==
useremail
.
lower
())
.
first
():
log
.
warning
(
"LDAP Email
%
s Already in Database"
,
user_data
)
continue
content
=
ub
.
User
()
content
.
nickname
=
username
content
.
password
=
''
# dummy password which will be replaced by ldap one
content
.
email
=
useremail
content
.
kindle_mail
=
kindlemail
content
.
role
=
config
.
config_default_role
content
.
sidebar_view
=
config
.
config_default_show
content
.
allowed_tags
=
config
.
config_allowed_tags
...
...
@@ -386,16 +400,17 @@ def extract_user_data_from_field(user, field):
if
match
:
return
match
.
group
(
1
)
else
:
raise
Exception
(
"Could Not Parse LDAP User:
%
s"
,
user
)
raise
Exception
(
"Could Not Parse LDAP User:
{}"
.
format
(
user
)
)
# CN=Firstname LastName,OU=Laba,OU=...,DC=...,DC=...
# CN=user displayname,OU=ouname1,OU=ouname2,OU=ouname3,DC=domain,DC=domain
def
extract_user_identifier
(
user
,
filter
):
def
extract_dynamic_field_from_filter
(
user
,
filter
):
match
=
re
.
search
(
"([a-zA-Z0-9-]+)=
%
s"
,
filter
,
re
.
IGNORECASE
|
re
.
UNICODE
)
if
match
:
dynamic_field
=
match
.
group
(
1
)
return
match
.
group
(
1
)
else
:
raise
Exception
(
"Could Not Parse LDAP User:
%
s"
,
user
)
raise
Exception
(
"Could Not Parse LDAP Userfield: {}"
,
user
)
def
extract_user_identifier
(
user
,
filter
):
dynamic_field
=
extract_dynamic_field_from_filter
(
user
,
filter
)
return
extract_user_data_from_field
(
user
,
dynamic_field
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment