Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
喜羊羊3508
Dak
提交
02609f0d
D
Dak
项目概览
喜羊羊3508
/
Dak
12 个月 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Dak
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
02609f0d
编写于
10月 26, 2009
作者:
M
Mark Hymers
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
move extensions back into main code base
Signed-off-by:
N
Mark Hymers
<
mhy@debian.org
>
上级
0dada7c5
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
77 addition
and
154 deletion
+77
-154
config/debian/extensions.py
config/debian/extensions.py
+0
-100
dak/dak.py
dak/dak.py
+0
-54
daklib/queue.py
daklib/queue.py
+77
-0
未找到文件。
config/debian/extensions.py
已删除
100644 → 0
浏览文件 @
0dada7c5
import
sys
,
os
,
textwrap
import
apt_pkg
import
daklib.utils
,
daklib
.
database
import
yaml
import
daklib.extensions
from
daklib.extensions
import
replace_dak_function
def
check_transition
():
changes
=
dak_module
.
changes
reject
=
dak_module
.
reject
Cnf
=
dak_module
.
Cnf
sourcepkg
=
changes
[
"source"
]
# No sourceful upload -> no need to do anything else, direct return
# We also work with unstable uploads, not experimental or those going to some
# proposed-updates queue
if
"source"
not
in
changes
[
"architecture"
]
or
"unstable"
not
in
changes
[
"distribution"
]:
return
# Also only check if there is a file defined (and existant) with
# checks.
transpath
=
Cnf
.
get
(
"Dinstall::Reject::ReleaseTransitions"
,
""
)
if
transpath
==
""
or
not
os
.
path
.
exists
(
transpath
):
return
# Parse the yaml file
sourcefile
=
file
(
transpath
,
'r'
)
sourcecontent
=
sourcefile
.
read
()
try
:
transitions
=
yaml
.
load
(
sourcecontent
)
except
yaml
.
YAMLError
,
msg
:
# This shouldn't happen, there is a wrapper to edit the file which
# checks it, but we prefer to be safe than ending up rejecting
# everything.
daklib
.
utils
.
warn
(
"Not checking transitions, the transitions file is broken: %s."
%
(
msg
))
return
# Now look through all defined transitions
for
trans
in
transitions
:
t
=
transitions
[
trans
]
source
=
t
[
"source"
]
expected
=
t
[
"new"
]
# Will be None if nothing is in testing.
current
=
daklib
.
database
.
get_suite_version
(
source
,
"testing"
)
if
current
is
not
None
:
compare
=
apt_pkg
.
VersionCompare
(
current
,
expected
)
if
current
is
None
or
compare
<
0
:
# This is still valid, the current version in testing is older than
# the new version we wait for, or there is none in testing yet
# Check if the source we look at is affected by this.
if
sourcepkg
in
t
[
'packages'
]:
# The source is affected, lets reject it.
rejectmsg
=
"%s: part of the %s transition.
\n\n
"
%
(
sourcepkg
,
trans
)
if
current
is
not
None
:
currentlymsg
=
"at version %s"
%
(
current
)
else
:
currentlymsg
=
"not present in testing"
rejectmsg
+=
"Transition description: %s
\n\n
"
%
(
t
[
"reason"
])
rejectmsg
+=
"
\n
"
.
join
(
textwrap
.
wrap
(
"""Your package
is part of a testing transition designed to get %s migrated (it is
currently %s, we need version %s). This transition is managed by the
Release Team, and %s is the Release-Team member responsible for it.
Please mail debian-release@lists.debian.org or contact %s directly if you
need further assistance. You might want to upload to experimental until this
transition is done."""
%
(
source
,
currentlymsg
,
expected
,
t
[
"rm"
],
t
[
"rm"
])))
reject
(
rejectmsg
+
"
\n
"
)
return
@
replace_dak_function
(
"process-unchecked"
,
"check_signed_by_key"
)
def
check_signed_by_key
(
oldfn
):
changes
=
dak_module
.
changes
reject
=
dak_module
.
reject
if
changes
[
"source"
]
==
"dpkg"
:
fpr
=
changes
[
"fingerprint"
]
(
uid
,
uid_name
,
is_dm
)
=
dak_module
.
lookup_uid_from_fingerprint
(
fpr
)
if
fpr
==
"5906F687BD03ACAD0D8E602EFCF37657"
or
uid
==
"iwj"
:
reject
(
"Upload blocked due to hijack attempt 2008/03/19"
)
# NB: 1.15.0, 1.15.2 signed by this key targetted at unstable
# have been made available in the wild, and should remain
# blocked until Debian's dpkg has revved past those version
# numbers
oldfn
()
check_transition
()
dak/dak.py
浏览文件 @
02609f0d
...
@@ -36,47 +36,6 @@ G{importgraph}
...
@@ -36,47 +36,6 @@ G{importgraph}
import
sys
import
sys
import
imp
import
imp
import
daklib.utils
import
daklib.utils
import
daklib.extensions
################################################################################
class
UserExtension
:
def
__init__
(
self
,
user_extension
=
None
):
if
user_extension
:
m
=
imp
.
load_source
(
"dak_userext"
,
user_extension
)
d
=
m
.
__dict__
else
:
m
,
d
=
None
,
{}
self
.
__dict__
[
"_module"
]
=
m
self
.
__dict__
[
"_d"
]
=
d
def
__getattr__
(
self
,
a
):
if
a
in
self
.
__dict__
:
return
self
.
__dict__
[
a
]
if
a
[
0
]
==
"_"
:
raise
AttributeError
,
a
return
self
.
_d
.
get
(
a
,
None
)
def
__setattr__
(
self
,
a
,
v
):
self
.
_d
[
a
]
=
v
################################################################################
class
UserExtension
:
def
__init__
(
self
,
user_extension
=
None
):
if
user_extension
:
m
=
imp
.
load_source
(
"dak_userext"
,
user_extension
)
d
=
m
.
__dict__
else
:
m
,
d
=
None
,
{}
self
.
__dict__
[
"_module"
]
=
m
self
.
__dict__
[
"_d"
]
=
d
def
__getattr__
(
self
,
a
):
if
a
in
self
.
__dict__
:
return
self
.
__dict__
[
a
]
if
a
[
0
]
==
"_"
:
raise
AttributeError
,
a
return
self
.
_d
.
get
(
a
,
None
)
def
__setattr__
(
self
,
a
,
v
):
self
.
_d
[
a
]
=
v
################################################################################
################################################################################
...
@@ -194,13 +153,6 @@ Available commands:"""
...
@@ -194,13 +153,6 @@ Available commands:"""
def
main
():
def
main
():
"""Launch dak functionality."""
"""Launch dak functionality."""
Cnf
=
daklib
.
utils
.
get_conf
()
if
Cnf
.
has_key
(
"Dinstall::UserExtensions"
):
userext
=
UserExtension
(
Cnf
[
"Dinstall::UserExtensions"
])
else
:
userext
=
UserExtension
()
functionality
=
init
()
functionality
=
init
()
modules
=
[
command
for
(
command
,
_
)
in
functionality
]
modules
=
[
command
for
(
command
,
_
)
in
functionality
]
...
@@ -238,12 +190,6 @@ def main():
...
@@ -238,12 +190,6 @@ def main():
# Invoke the module
# Invoke the module
module
=
__import__
(
cmdname
.
replace
(
"-"
,
"_"
))
module
=
__import__
(
cmdname
.
replace
(
"-"
,
"_"
))
module
.
dak_userext
=
userext
userext
.
dak_module
=
module
daklib
.
extensions
.
init
(
cmdname
,
module
,
userext
)
if
userext
.
init
is
not
None
:
userext
.
init
(
cmdname
)
module
.
main
()
module
.
main
()
################################################################################
################################################################################
...
...
daklib/queue.py
浏览文件 @
02609f0d
...
@@ -38,8 +38,11 @@ import apt_pkg
...
@@ -38,8 +38,11 @@ import apt_pkg
import
utils
import
utils
import
commands
import
commands
import
shutil
import
shutil
import
textwrap
from
types
import
*
from
types
import
*
import
yaml
from
dak_exceptions
import
*
from
dak_exceptions
import
*
from
changes
import
*
from
changes
import
*
from
regexes
import
*
from
regexes
import
*
...
@@ -1263,11 +1266,85 @@ class Upload(object):
...
@@ -1263,11 +1266,85 @@ class Upload(object):
except
:
except
:
self
.
rejects
.
append
(
"%s: deb contents timestamp check failed [%s: %s]"
%
(
filename
,
sys
.
exc_type
,
sys
.
exc_value
))
self
.
rejects
.
append
(
"%s: deb contents timestamp check failed [%s: %s]"
%
(
filename
,
sys
.
exc_type
,
sys
.
exc_value
))
###########################################################################
def
check_transition
(
self
,
session
):
cnf
=
Config
()
sourcepkg
=
self
.
pkg
.
changes
[
"source"
]
# No sourceful upload -> no need to do anything else, direct return
# We also work with unstable uploads, not experimental or those going to some
# proposed-updates queue
if
"source"
not
in
self
.
pkg
.
changes
[
"architecture"
]
or
\
"unstable"
not
in
self
.
pkg
.
changes
[
"distribution"
]:
return
# Also only check if there is a file defined (and existant) with
# checks.
transpath
=
cnf
.
get
(
"Dinstall::Reject::ReleaseTransitions"
,
""
)
if
transpath
==
""
or
not
os
.
path
.
exists
(
transpath
):
return
# Parse the yaml file
sourcefile
=
file
(
transpath
,
'r'
)
sourcecontent
=
sourcefile
.
read
()
try
:
transitions
=
yaml
.
load
(
sourcecontent
)
except
yaml
.
YAMLError
,
msg
:
# This shouldn't happen, there is a wrapper to edit the file which
# checks it, but we prefer to be safe than ending up rejecting
# everything.
utils
.
warn
(
"Not checking transitions, the transitions file is broken: %s."
%
(
msg
))
return
# Now look through all defined transitions
for
trans
in
transitions
:
t
=
transitions
[
trans
]
source
=
t
[
"source"
]
expected
=
t
[
"new"
]
# Will be None if nothing is in testing.
current
=
get_source_in_suite
(
source
,
"testing"
,
session
)
if
current
is
not
None
:
compare
=
apt_pkg
.
VersionCompare
(
current
.
version
,
expected
)
if
current
is
None
or
compare
<
0
:
# This is still valid, the current version in testing is older than
# the new version we wait for, or there is none in testing yet
# Check if the source we look at is affected by this.
if
sourcepkg
in
t
[
'packages'
]:
# The source is affected, lets reject it.
rejectmsg
=
"%s: part of the %s transition.
\n\n
"
%
(
sourcepkg
,
trans
)
if
current
is
not
None
:
currentlymsg
=
"at version %s"
%
(
current
)
else
:
currentlymsg
=
"not present in testing"
rejectmsg
+=
"Transition description: %s
\n\n
"
%
(
t
[
"reason"
])
rejectmsg
+=
"
\n
"
.
join
(
textwrap
.
wrap
(
"""Your package
is part of a testing transition designed to get %s migrated (it is
currently %s, we need version %s). This transition is managed by the
Release Team, and %s is the Release-Team member responsible for it.
Please mail debian-release@lists.debian.org or contact %s directly if you
need further assistance. You might want to upload to experimental until this
transition is done."""
%
(
source
,
currentlymsg
,
expected
,
t
[
"rm"
],
t
[
"rm"
])))
self
.
rejects
.
append
(
rejectmsg
)
return
###########################################################################
###########################################################################
def
check_signed_by_key
(
self
):
def
check_signed_by_key
(
self
):
"""Ensure the .changes is signed by an authorized uploader."""
"""Ensure the .changes is signed by an authorized uploader."""
session
=
DBConn
().
session
()
session
=
DBConn
().
session
()
self
.
check_transition
(
session
)
(
uid
,
uid_name
,
is_dm
)
=
lookup_uid_from_fingerprint
(
self
.
pkg
.
changes
[
"fingerprint"
],
session
=
session
)
(
uid
,
uid_name
,
is_dm
)
=
lookup_uid_from_fingerprint
(
self
.
pkg
.
changes
[
"fingerprint"
],
session
=
session
)
# match claimed name with actual name:
# match claimed name with actual name:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录