Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
suds — suds 0.4의 클론 + suds-0.4-CVE-2013-2217.patch | Kitploit
도구/GitHubGitHub/osirium/suds
Vulnerability AnalysisScripting & AutomationAPI Security TestingWeb SecurityUtilities & FrameworksAPI Security
GitHubosirium/suds

suds

suds 0.4의 클론 + suds-0.4-CVE-2013-2217.patch

저장소 보기
8년 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

개요

"Suds" 웹 서비스 클라이언트는 LGPL로 라이선스된 python용 경량 soap 기반 클라이언트입니다.

자세한 내용은 다음을 참조하십시오:

  • 프로젝트 사이트: https://fedorahosted.org/suds/
  • 문서: https://fedorahosted.org/suds/wiki/Documentation
  • Epydocs: http://jortel.fedorapeople.org/suds/doc/

릴리스 노트:

버전 0.3.6 (04-31-09):

  • 하드코딩된 /tmp/suds를 tempfile.gettempdir()로 변경하고 suds/를 필요 시 생성.
  • Any.get_attribute()의 반환 타입 수정.
  • file:// URL을 무시하도록 http 캐싱 업데이트.
  • 응답만 주입될 때 메시지 로깅 개선.
  • XInteger 및 XFloat 타입이 반환된 배열을 올바르게 변환하도록 수정.
  • 동일한 네임스페이스를 가진 xs:import 스키마 수정.
  • 외부 참조를 로드하지 않도록 파서를 업데이트하고 XMLSchema.xsd 위치에 Import.bind() 추가.
  • 스키마 닥터 추가 - 런타임에 XSD를 패치하는 데 사용. (Option.doctor 참조)
  • python 2.6의 deprecation 경고 수정.
  • 에 정의된 @default에 대한 동작 추가.
  • @xsi:type 값이 doc/literal에 대해 항상 qualified되도록 변경. (0.3.5 변경 사항 되돌림).
  • @xsi:type이 qualified되는 시점을 제어하는 Option.xstq 옵션 추가.
  • 수정된 티켓: #64, #129, #205, #206, #217, #221, #222, #224, #225, #228, #229, #230

버전 0.3.5 (04-16-09):

  • http 캐싱 추가. 기본값은 (1)일. 메서드 호출에는 적용되지 않음. 자세한 내용은 문서 참조.
  • 더 이상 < fc9 빌드를 지원하지 않으므로 spec에서 fedora 버전 확인 제거.
  • tar.sh로 tarball을 생성하도록 makefile 업데이트.
  • document/literal에 대한 bare/wrapped 판정을 wsdl로 이동.
  • Transport를 패키지로 리팩토링 (http 헤더 로깅 개선).
  • 수정된 티켓: #207, #209, #210, #212, #214, #215

버전 0.3.4 (02-24-09):

  • Import.bind('http://schemas.xmlsoap.org/soap/encoding/')을 정적(자동)으로 적용, 사용자가 더 이상 직접 수행할 필요 없음.
  • {{{UsernameToken}}} 및 평문(clear-text) 비밀번호만 사용하는 기본 ws-security.
  • 딕셔너리를 전달하여 ''sparse'' soap 헤더 지원 추가.
  • 임의의 사용자 정의 soap 헤더 지원 추가.
  • 여러 soap 헤더 항목이 있는 서비스 작업 수정.
  • 스키마 로딩 및 역참조(dereferencing) 알고리즘 개선.
  • 중첩된 soap multiref 수정.
  • elementFormDefault="unqualified"에 대한 더 나은(실제) 지원으로 더 정확한 네임스페이싱 제공.
  • WSDL part 타입이 더 이상 기본적으로 WSDL targetNamespace를 사용하지 않음.
  • 수정된 티켓: #4, #6, #21, #32, #62, #66, #71, #72, #114, #155, #201.

버전 0.3.3 (11-31-08):

  • 더 이상 (tests) 패키지를 설치하지 않음.
  • API-3 제안 구현 ( https://fedorahosted.org/suds/wiki/Api3Proposal )
    • 플러그형 transport
    • 키워드 메서드 인자
    • 기본 transport에서의 기본 http 인증
  • soap 메시지에 네임스페이스 접두어 정규화 추가.
  • 빈 노드의 soap 메시지 정리(pruning) 개선.
  • 수정된 티켓: #51 - #60

버전 0.3.2 (11-7-08):

  • SOAP {{{MultiRef}}} 지원 ''(1차로 r300에서 추가됨)''
  • 새 스키마 태그 지원 추가:
    • xs:include/
    • xs:simpleContent/
    • xs:group/
    • xs:attributeGroup/
  • 새 xs <--> python 타입 변환 지원 추가:
    • xs:int
    • xs:long
    • xs:float
    • xs:double
  • 생성된 노드의 네임스페이싱을 더 정밀하게 하도록 marshaller 및 binding 수정.
  • 스키마 로딩 중 ''xsd'' 패키지 dereference()의 무한 재귀 수정.
  • 스키마 파일을 wsdl 루트 로 가져오는 wsdl:import/ 지원 추가.
  • (&) 이중 인코딩 수정.
  • Client API 추가:
    • setheaders() - 키워드와 동일하지만 모든 호출에 적용.
    • addprefix() - 네임스페이스 접두어 매핑.
    • setlocation() - wsdl의 위치를 재정의. 모든 호출에 적용된다는 점을 제외하면 키워드와 동일.
    • setproxy() - proxy 키워드와 동일하지만 모든 호출에 적용.
  • soap 헤더에 올바른 네임스페이스 접두어 추가.
  • 수정된 티켓: #5, #12, #34, #37, #40, #44, #45, #46, #48, #49, #50, #51

버전 0.3.1 (10-1-08):

  • 0.3 릴리스가 멀티포트 서비스 정의 작업을 불필요하게 어렵게 만든 데 대한 빠른 후속 조치. 고민 끝에(그리고 충분한 숙면 후에), 몇 가지 변경만으로 훨씬 쉬워질 수 있다는 것이 분명해졌습니다: 1) non-soap 바인딩을 걸러냅니다 - 실제 문제를 일으키는 원인이었습니다; 2) 대부분의 서버는 어떤 soap 바인딩(soap 1.1 및 1.2)이든 수용하므로, 포트 자격 없이 메서드를 호출할 때 메서드에 대한 모호한 참조는 거의 모든 경우에 문제없이 작동합니다. 그렇다면 suds가 포트를 선택하도록 그냥 두는 것이 좋겠죠. 필요하지 않은데 사용자가 직접 하게 하지 맙시다. 대부분의 경우 0.2.9 및 이전 버전 사용자는 0.3에서처럼 0.3.1로 이동할 때 코드를 업데이트할 필요가 없습니다.

버전 0.3 (9-30-08):

  • 0.2.9에서 도입된 멀티포트 서비스 지원을 확장. 이 추가 기능은 여러 서비스가 동일한 메서드를 정의할 수 있게 하며 suds가 이를 올바르게 처리합니다. 'SERVICES WITH MULTIPLE PORTS:' 섹션을 참조하십시오.

  • 멀티도큐먼트 document/literal soap 바인딩 스타일 지원 추가. 'MULTI-DOCUMENT Docuemnt/Literal:' 섹션을 참조하십시오.

  • (xs:group, xs:attributeGroup) 태그 지원 추가.

  • Client.last_sent() 및 Client.last_received() 추가.

버전 0.2.9 (9-09-08):

  • 서비스 내 여러 포트 지원.
  • 속성 참조 <xs:attribute ref=""/>
  • sax 패키지의 XML 특수 문자 인코더를 플러그형으로 변경.

버전 0.2.8 (8-28-08):

  • 가 참조하는 문서 루트를 항상 전송하도록 document/literal 바인딩 업데이트. 공간과 사용자 입력을 다시 검토한 결과, 참조된 요소는 항상 문서 루트인 것으로 보입니다.

  • 'binding' schemaLocation을 namespace-uri에 바인딩하는 지원 추가.
    이는 schemaLocation을 지정하지 않으면서도 스키마가 다운로드되기를 기대하는 import를 위한 것입니다. 예: Axis는 schemaLocation 없이 'http://schemas.xmlsoap.org/soap/encoding/'을 참조합니다. 따라서 다음과 같이 수행하면:

    from suds.xsd.sxbasic import Import. Import.bind('http://schemas.xmlsoap.org/soap/encoding/')

    스키마가 schemaLocation에 바인딩되어 다운로드됩니다.

  • 기본 unmarshaller는 /schema/가 필요하지 않음. 리팩토링 중 제거되었어야 했지만 누락되었습니다.

  • kwargs를 send()에 전달하고 wsdl의 서비스 위치를 재정의하는 /location/ kwarg를 추가하도록 client 업데이트.

  • 요소 및/또는 속성을 나타내면서 *선택적(optional)*이고 값이 None인 객체 속성에 대해 XML을 생성하지 않도록 marshaller 업데이트. * 모든 속성을 포함하도록 factory (builder) 업데이트. * SchemaObject에 optional() 메서드 추가.

  • 지정된 경우 작업의 네임스페이스를 재정의하도록 wsdl 업데이트.

  • 스키마 로딩 문제 수정 - import를 처리하기 전에 모든 스키마를 빌드.

  • fedora 제출 준비를 위해 패키징 업데이트.

버전 0.2.7 (8-11-08):

  • document/literal - wrapped 및 unwrapped 탐지/지원 추가.
  • document/literal {wrapped}가 ( 아래의) 문서 루트를 래퍼 요소(적절한 네임스페이스 포함)로 설정하도록 업데이트.
  • maxOccurs를 갖는 , 및 지원 추가. 이로 인해 unmarshaller는 무제한(unbounded) 컬렉션에 포함된 요소의 값을 리스트로 설정합니다.
  • '사용자'가 어떤 자식을 포함할지 직접 결정해야 하므로 의 자식을 생략하도록 client.factory (builder) 업데이트.
  • 가져온 스키마의 타입이 다시 평탄화되지 않도록 평탄화 알고리즘 업데이트.
  • 평탄화/병합 알고리즘 조정.

버전 0.2.6 (8-5-08):

  • xsd 패키지 개편 중 깨진 ENUM 수정.
  • 티켓 #24에 정의된 타입 수정.
  • 티켓 #30에서 보고된 메서드 시그니처의 중복 파라미터 이름 수정.
  • Suds를 LGPL로 라이선스.
  • 티켓 #31의 패치에서 제안한 대로 suds.init()의 로깅 설정 제거. 이제 사용자는 로거를 직접 구성해야 합니다.
  • Client.Factory.create() 대체 구문 지원 추가: 빌드할 타입을 {namespace}name 형식으로 완전히 한정. 예: client.factory.create('{http://blabla.com/ns}Person')

버전 0.2.5 (8-01-08):

  • (XSD) 패키지 개편. 이 새로운 (병합) 방식은 더 단순하고 더 안정적이며 유지보수하기 쉬울 것입니다. 또한 병합된 스키마가 딕셔너리 조회를 통해 조회를 수행하므로 더 나은 성능을 제공할 것입니다.

    이 개편으로 현재의 TypeNotFound 및 xs:extension/ 문제가 해결되기를 바랍니다 :-).

  • dateTime 출력 버그 수정.

  • 자신을 포함하는 xsd 타입에 대한 builder.Builder의 무한 재귀 방지 추가.

버전 0.2.4 (7-28-08):

  • WSDL import 지원 추가: wsdl:import/
  • xsd<->python 타입 변환 지원 추가 (감사: Nathan Van Gheem) 대상:
    • xs:date
    • xs:time
    • xs:dateTime
  • 수정:
    • 버그: schemaLocation이 지정된 Schema .
    • 버그: client/proxy가 출력되기 전까지 서비스 설명에 지정된 네임스페이스가 유효하지 않음.

버전 0.2.3 (7-23-08):

  • 최적화.

버전 0.2.2 (7-8-08):

  • 티켓 #14의 제안대로 Exception.init()을 사용하여 Exception.message를 설정함으로써 예외를 더 /표준/ python 방식으로 업데이트; (p)를 전달하여 WebFault를 발생시키도록 bindings 업데이트

  • bindings에 반환 값의 여러 루트 노드를 처리하는 기능 추가; 리스트가 반환되는 경우와 달리 복합(composite) 객체로 반환

  • soapAction이 따옴표로 묶이도록 수정

  • xs:all/ 지원 추가

  • SchemaObject의 unbounded() 메서드 수정

  • 스키마를 새 (xsd) 패키지로 리팩토링. 파일이 너무 커지고 있었습니다. Query에 execute()를 추가하고 Schema.find()를 직접 사용하는 대신 execute() 쿼리를 사용하도록 suds를 개조. 또한 스키마에서 임시방편(hokey) start() 메서드와 쿼리 증가 로직을 제거.

  • 나가는(outbound) soap 메시지 및/또는 들어오는(inbound) 응답 메시지를 주입하는 데 사용되는 inject 키워드 추가. SoapClient 리팩토링:

    1. send()를 invoke()로 이름 변경
    2. 메시지 전송을 invoke()에서 분리하여 send()에 배치; 호출 kwargs에 inject={'msg=, and reply='}를 사용하여 메시지 및 응답 주입을 허용하는 TestClient 추가
  • 네임스페이스 동작을 더 잘 관리하기 위해 sax에 Namespace 클래스 추가; suds가 Namespace를 import하여 사용하도록 개조

  • 참조된 타입(@base="",@type="" 속성 보유)을 해석하는 데 사용되는 기본 네임스페이스를 변경하여 접두어가 지정되지 않은 경우 targetNamespace 대신 XML (노드) 네임스페이스를 사용하도록 변경.

  • 티켓 #13에서 [email protected]가 정의한 수정 사항 적용

  • 서비스 정의 출력이 전통적인 메서드 시그니처에 더 가까운 ' my_method(arg0{xs:int}, arg1{Person}) ' 대신 ' my_method(xs:int arg0, Person arg1) ' 형태로 서비스 메서드를 표시하도록 업데이트

  • unmarshaller에 xsd/python 타입 변환 추가 (XBoolean만 해당); unmarshaller가 Content 클래스를 사용하도록 리팩토링하여 API를 더 깔끔하게 만들고 marshaller와 unmarshaller 간에 대칭성을 추가하며, 스키마 속성 기반 타입 변환을 위한 좋은 메커니즘 제공

  • Appenders로 marshaller 리팩토링; bindings의 returned_type() 및 returnes_collection() 수정을 지원하기 위해 resolve()에 nobuiltin 플래그 추가.

  • (202,204) http 코드 지원 추가

  • XBoolean 및 매핑 추가; 타입 변환 준비를 위해 TreeResolver에 findattr() 추가

  • 스키마 및 스키마 속성 로딩 업데이트 (깊은 재귀 중지); 가져온 스키마를 더 이상 복사하지 않도록 Imported 스키마 변경. 대신 import 프록시가 find 요청을 대신 처리; 더 나은 서비스 검사를 제공하는 ServiceDefinition 클래스 추가. 네임스페이스 매핑 및 타입 표시도 제공; 스키마 속성 API 단순화; xs:any 및 xs:anyType 지원 추가; 일부 스키마 조회 문제 수정; Binding 클래스 약간 리팩토링; 디버그 로깅 대량 추가 (일부 인자는 비용이 크므로 성능상 일부를 주석 처리해야 할 수 있음).

  • sudsobject.Property 추가. property는 (value) 속성을 포함하는 특수 Object로, 및 과 같은 자식이 없는 스키마 타입에 대해 Builder (factory)가 반환합니다. Builder, Marshallers 및 Resolvers가 Properties를 처리하도록 업데이트; Resolver, Schema도 속성 조회를 처리하도록 업데이트 (누락되어 있었음)

  • 사용자 정의 soap 헤더를 위한 기반 작업 추가.

  • 티켓 #7에 따라 elementFormDefault 수정

  • bindings에서 사용하지 않는 kwargs 제거; wsdl에 bindings 캐시; 레거시 ServiceProxy가 {new} Client API에 위임하도록 개조; 스키마 내 의 'nillable' 속성에 의한 자연스러운 처리를 위해 keyword nil_supported 제거

버전 0.2.1 (5-8-08):

  • 스키마가 3단계로 로드되도록 schema.py SchemaProperty 로딩 순서 업데이트: 1) 원시 트리 빌드. 2) @ref 및 @base와 같은 의존성 해석.
    3) 트리를 평탄화(비정규화)하기 위해 필요에 따라 손자 노드 승격.

    wsdl도 스키마를 한 번만 로드하고 저장하도록 변경되었습니다. 스키마 컬렉션은 2단계로 스키마를 로드하도록 변경되었습니다: 1) 모든 원시 스키마 객체 생성. 2) 스키마 로드.

    이로써 순서가 바뀐 상태에서 참조되는 로컬 된 스키마를 찾을 수 있습니다.
    sax.py Element 인터페이스가 변경되었습니다: attribute()가 get() 및 set()으로 대체되었습니다.
    또한 getitem 및 __setitem__을 사용하여 속성 값에 접근할 수 있습니다.
    sax.py에 대한 Epydocs 업데이트. 그리고 ... 마지막으로 가 이제 올바르게 지원됩니다.

  • 로깅 수정: suds.init.logger()에서 info로 설정하지 않음; 루트 로거에만 핸들러 설정; logger (log)를 클래스에서 모듈로 이동하고 로거 이름에 name 사용. 참고: 이는 soap 메시지 로깅을 활성화하려면 다음을 의미합니다: > > logger('suds.serviceproxy').setLevel(logging.DEBUG) > -- 대신 -- > > logger('serviceproxy').setLevel(logging.DEBUG) >

  • (xsd) 스키마 노드 지원 추가 - 주로 Builder가 반환하는 객체에 영향을 줌

  • serviceproxy.py:set_proxies()가 INFO 대신 DEBUG를 기록하도록 업데이트.

  • 원시 xml과 모델을 모두 표시하도록 schema str 개선 (주로 디버깅용).

버전 0.2 (04-28-08):

  • rpc/encoded soap 스타일에 대한 첫 시도를 포함.

  • Property 클래스를 suds.sudsobject.Object로 대체. Property 클래스는 오래 전에 약간 다른 목적으로 개발되었습니다. suds Object는 더 단순한(보다 직관적인) 접근 방식으로 더 적은 코드가 필요하고 디버거에서 더 잘 작동합니다.

  • Binding(및 encoding)은 wsdl과 더 일관되게 메서드 단위로 선택됩니다. <= 0.1.7에서는 ServiceProxy가 생성될 때 binding이 선택되어 모든 서비스 메서드에 사용되었습니다. binding은 self.binding으로 저장되었습니다. WSDL이 각 작업에 대해 별도의 binding 스타일과 encoding을 제공하므로 Suds도 동일한 방식으로 작동하도록 변경해야 했습니다.* (nil_supported) 및 (faults) 플래그는 **kwargs를 사용하여 서비스 프록시로 전달됩니다. 이러한 플래그 외에도 (http_proxy) 플래그가 추가되어 urllib2.Request 객체로 전달됩니다. 지원되는 인수는 다음과 같습니다:

    • faults = 서버에서 발생한 오류를 발생시킵니다(기본값: True). 그렇지 않으면 서비스 메서드 호출 결과로 (HTTP 코드, 객체) 튜플을 반환합니다.
    • nil_supported = 이 플래그가 True(기본값: True)이면 바인딩은 value=None인 노드에 xsi:nil="true"를 설정합니다. 그렇지 않으면 빈 노드 가 전송됩니다.
    • proxy = 요청에 지정할 HTTP 프록시(기본값: {}). 프록시는 {protocol:proxy,}로 정의됩니다.
  • HTTP 프록시를 지원합니다(위 참조).

  • ServiceProxy는 SoapClient에 위임하도록 리팩터링되었습니다. 서비스 프록시는 getattr()을 통해 웹 서비스를 노출하므로 ServiceProxy 클래스가 제공하는 모든 속성(메서드 포함)은 wsdl에 정의된 WS 연산을 숨깁니다. 따라서 모든 것을 SoapClient로 옮김으로써 서비스 프록시에서 속성과 메서드에 hoky 이름을 사용하지 않아도 wsdl 연산이 더 이상 숨겨지지 않습니다. 대신 서비스 프록시에는 __client__와 factory 속성이 있습니다 (이름 충돌 위험이 실제로 낮아야 합니다). 현재는 get_instance() 및 get_enum() 메서드가 이전 버전과의 호환성을 유지하기 위해 이동되지 않았습니다. 다만 선호되는 API 변경은 다음을 대체하는 것입니다:

    service = ServiceProxy('myurl') person = service.get_instance('person')

    ... 대략 다음과 같은 형태로 ...

    service = ServiceProxy('myurl') person = service.factory.get_instance('person')

    사용자가 새 API로 전환할 시간을 주기 위해 몇 번의 릴리스 후에 get_instance() 및 get_enum() 메서드는 큰 글씨의 공지와 함께 제거될 수 있습니다.

  • wsdl에 섹션이 정의되지 않아 Suds가 http://www.w3.org/2001/XMLSchema 네임스페이스의 접두사를 확인하여 (xs:string)과 같은 내장 유형을 감지할 수 없는 문제를 수정했습니다.

version-0.1.7 (04-08-08):

  • 프로퍼티 값(out) = None 및 빈 태그(in)가 처리되는 방식을 제어하는 Binding.nil_supported가 추가되었습니다.

    • service.binding.nil_supported = True -- 프로퍼티 값 None이 (out)으로 로 마샬링되고, 는 ''로 언마샬링되며 은 None으로 언마샬링됨을 의미합니다.
    • service.binding.nil_supported = False -- 프로퍼티 값 None이 (out)으로 로 마샬링되고, 및 는 None으로 언마샬링됨을 의미합니다. xsi:nil은 실제로 무시됩니다.
    • 기본값은 (TRUE)입니다.
  • sax 파서가 텍스트를 "청크"로 나눌 때 여러 character() 콜백을 처리하도록 Sax 핸들러가 업데이트되었습니다. node.text가 None이면 node.text가 해당 문자들로 설정됩니다. 그렇지 않으면 문자가 추가됩니다. 감사합니다 - [email protected]

  • "text"라는 자연스러운 요소를 허용하기 위해 특수 (text) 속성을 __text__로 대체했습니다.

  • 다음과 같이 유니코드 지원을 추가했습니다:

    • __str__이 있는 모든 클래스에 __unicode__를 추가
    • 모든 str() 호출을 unicode()로 대체
    • str()은 __unicode__의 UTF-8 인코딩 결과를 반환합니다.
  • XML 출력은 HTTP 헤더와 일치하고 유니코드를 지원하는 UTF-8로 인코딩됩니다.

  • SchemaCollection이 builtin() 및 custom() 메서드를 제공하도록 변경되었습니다. 이를 지원하기 위해 sax.py의 Element에 findPrefixes()가 추가되었습니다. 어차피 wsdl과 스키마에는 http://www.w3.org/2001/XMLSchema에 대한 접두사가 많을 수 있으므로 이 방법이 더 나은 방법입니다. doc/lit 및 rpc/lit 바인딩 모두에서 테스트되었습니다.

  • bindings 패키지를 document & rpc에서 literal & encoded로 리팩터링했습니다.

  • 다음과 같은 완전한 네임스페이스 지원의 완성을 포함합니다:

    • 네임스페이스 접두사는 더 이상 wsdl에 정의된 유형을 참조하는 속성 값에서 제거되지 않습니다.
    • 를 사용하여 가져온 스키마는 필요에 따라 네임스페이스 및 접두사 매핑과 재매핑을 올바르게 처리해야 합니다.
    • 모든 유형은 네임스페이스를 포함한 정규화된 조회를 사용하여 해결됩니다.
    • Schema.get_type()은 ns 접두사가 있거나 없는 경로를 지원합니다. 접두사가 지정되지 않으면 스키마의 대상 네임스페이스를 사용하여 유형이 일치됩니다.
  • Property는 추가된 순서대로 속성 이름(키)을 유지합니다. 이는 또한 get_item()과 get_names()가 순서가 지정된 값을 반환함을 의미합니다. (하지만 순서는 실제로 wsdl/schema에 지정된 순서를 사용하여 마샬러에서 수행되어야 한다고 생각합니다.)

schema.py의 대규모 리팩터링. 주요 목표는 네임스페이스로 완전히 정규화된 유형 조회를 준비하는 것입니다. 완료되면 속성 값의 접두사는 더 이상 제거(소거)되지 않습니다. 변경 요약: 1) SchemaProperty 오버레이 클래스가 요청 시가 아닌 __init__에서 생성됩니다. 2) 스키마 가져오기는 Schema가 아닌 새로운 Import 클래스에 의해 수행됩니다. 3) Schema는 팩토리를 사용하여 최상위 속성을 로드합니다. 4) 모든 SchemaProperty /children/ 목록은 SchemaProperty 파생 클래스에서 __cmp__로 정렬됩니다. 이렇게 하면 동일한 이름의 유형이 다음 순서(Import, Complex, Simple, Element)로 해결됩니다. 5) 모든 /children/ SchemaProperty 목록은 요청 시가 아닌 __init__에서 구성됩니다. 6) SchemaGroup이 생성되고 WSDL 클래스가 업데이트되었습니다. 이는 wsdl이 노드를 집계하여 네임스페이스 접두사 매핑이 있는 wsdl 부모 요소에 대한 연결이 끊어지는 것보다 더 잘 작동합니다. 7) 요소는 가져온 스키마의 targetNamespace 및 관련 접두사 매핑에 대한 네임스페이스 재매핑과 접두사 재매핑이 모두 수행되도록 올바르게 처리합니다. 예: SCHMEA-A에는 xmlns:tns=http://nsA로 매핑된 접두사 (tns)가 있고 targetNamespace=http://nsA입니다. SCHEMA-B는 스키마 A를 가져오며 xmlns:abc=http://nsABC로 매핑된 접두사 (abc)가 있습니다. SCHEMA-B는 A를 <import namespace=http://nsB xxx schemaLocation=http://nsA/schema-a.xsd>로 가져옵니다. 따라서 SCHEMA-B가 abc:something과 같은 접두사 (abc)를 사용하여 SCHEMA-A의 요소를 참조하므로 SCHEMA-A의 targetNamespace는 http://nsABC로 업데이트되어야 하며 type=tns:something인 모든 요소는 type=abc:something으로 업데이트되어야 해결될 수 있습니다.

  • 바인딩이 리팩터링될 때 도입된, 노드가 (text, value)로 속성에 추가되는 언마샬링 문제를 수정했습니다.

  • 다양한 Property print 문제를 수정했습니다.

참고:

root@kitploit:~
rpc/literal 바인딩의 대부분을 제공해 주고 #suds에서 많은 협업을 해 준 Coniuro의 Jesper Noehr에게 감사드립니다.

version-0.1.6 (03-06-08):

  • xsd 스키마 가져오기(<import namespace="" schemaLocation=""?>)가 포함된 스키마 섹션을 포함하는 wsdl을 올바르게 처리합니다. schemaLocation이 지정되면 참조된 스키마가 가져와집니다.
  • 아직 처리되지 않은 HTTP 상태 코드에 대해 예외를 발생시킵니다.

version-0.1.5( 02-21-08 ):

  • 계층적 이름으로 모듈이 로거를 가져올 때 더 나은 로깅을 제공합니다.
  • 다른 바인딩을 진정으로 지원하기 위해 필요에 따라 리팩터링했습니다.
  • ElementTree를 대체하는 sax 모듈을 추가했습니다. 이는 더 빠르고 단순하며 네임스페이스(접두사)를 올바르게 처리합니다.

version-0.1.4 (12-21-07):

  • 서비스 메서드 매개변수가 None이 될 수 있도록 지원합니다.
  • property 객체 목록인 메서드 매개변수에 대한 올바른 처리를 추가했습니다.

version-0.1.3 (12-19-07):

  • DocumentReader가 2개 미만의 값으로 매핑할 때 컬렉션(maxOccurs > 1)으로 표시된 노드가 value=[]인 property 객체를 생성하지 못하는 문제를 수정했습니다. 이는 bindings.Document.ReplyHint.stripns()(DocumentReader.stripns()를 사용)가 0.1.2부터 튜플 (ns,tag)을 반환하는 DocumentReader.stripn()으로의 변환이 누락되어 발생했습니다.

version-0.1.2 (12-18-07):

이 릴리스에는 property 추가에 대한 업데이트가 포함되어 있습니다: * metadata 지원 * 오버라이드: getitem, setitem, contans * XML 문서의 네임스페이스를 처리하기 위해 property(reader|writer)가 property.metadata를 사용하도록 변경 * setup.py requires 수정.

version-0.1.1 (12-17-07):

이 릴리스는 fedora 호스팅에서의 첫 릴리스입니다.

도구 다운로드
  • 속성 플래그 (nillable 및 form) 지원 추가

  • Proxy (2세대 API) 클래스 추가

  • 사용자가 x 속성에 접근할 필요가 없도록 접근자/변환 함수 추가. 또한 딕셔너리로 쉽게 변환하고 반복할 수 있도록 todict() 및 get_items() 추가

  • 더 깊이 찾기 전에 최상위 요소에서 @ref 검색

  • SchemaObject에 derived() 추가. 이는 이전 suds 릴리스에서 모든 사용자 정의 타입에 xsi:type을 지정했던 것과 달리 모든 파생 타입(wsdl 클래스)이 xsi:type으로 한정되도록 하는 데 필요합니다. 타입을 지정해야 할 때만 xsi:type을 추가하도록 literal marshaller 업데이트.

  • 상위 요소에 접두어가 있을 때 네임스페이스가 상위로 승격되지 않도록 sax의 ns 승격 변경.

  • binding returned_type()이 (unresolved) Element를 반환하도록 변경

  • 새 기능을 지원하고 보고된 버그를 수정하기 위해, Suds에서 입출력 변환을 제공하는 컴포넌트를 리팩토링하고 발전시키는 작업을 진행 중입니다:

    • Builder ( 변환: XSD 객체 => python 객체 )
    • Marshaller ( 변환: python 객체 => XML/SOAP )
    • Unmarshaller ( 변환: soap/xml => python 객체 )

    이러한 발전은 이 컴포넌트들 간에 더 나은 대칭성을 제공할 것입니다:

    Builder와 Unmarshaller는 다음을 가진 python (sudsobject.Object의 하위 클래스) 객체를 생성합니다:

    • metadata.type = XSD 타입 (SchemaObject)
    • 하위 클래스 이름 ( class.name ) = 스키마 타입 이름.

    그리고

    Marshaller(들)는 Builder 또는 Unmarshaller가 생성한 python 객체를 소비하면서 이 표준 정보를 활용하여 적절한 출력( XML/SOAP )을 생성합니다.

    0.2.1 코드는 대체로 이렇게 동작하지만 ... 완전히 그렇지는 않습니다. 또한 구현에 일부 중복이 있습니다.

    이 작업을 수행하면서 Builder, Marshallers 및 Unmarshaller 클래스에서 사용하는 공통 스키마 타입 "lookup" 기능을 "Resolver" 클래스 계층으로 분리하는 것이 합리적이었습니다. 이는 Builder, Marshallers 및 Unmarshaller 클래스의 복잡성과 중복을 줄이고 더 나은 모듈성을 제공합니다. 이 리팩토링이 완료되자 literal/encoded Marshaller 간의 차이는 매우 작아졌습니다. bindings.literal 및 bindings.encoded 패키지의 코드 양이 적고(계속 줄어들고) Suds 코드베이스를 컴팩트하게 유지하기 위해 모든 마샬링 클래스를 bindings.marshaller 모듈로 옮겼습니다. 모든 bindings.XX 하위 패키지는 제거될 것입니다.

    최종 효과:

    Suds의 모든 주요 컴포넌트:

    • client (이전: service proxy)
    • wsdl
      • schema (xsd package)
      • resolvers
    • output (marshalling)
    • builder
    • input (unmarshalling)

    이제 다음이 개선되었습니다:

    • 모듈성
    • Object 메타데이터에 관한 대칭성.
    • 코드 재사용 (< 1% 코드 중복 --- 바랍니다)
    • 더 느슨한 결합

    ... 그리고 다음 기능/버그 수정을 더 잘 지원합니다:

    • (수정) 속성에 따른 적절한 수준의 XML 요소 한정. 이는 elementFormDefault="qualified"일 때 Suds가 literal 및 encoded 바인딩 모두에 대해 루트 요소에 올바른 네임스페이스를 포함하도록 보장합니다. 이 작업이 제대로 작동하려면 literal marshaller는 (encoded marshaller처럼) 스키마 타입을 인식해야 했습니다. 위에서 설명한 리팩토링 대신 encoded marshaller와 동일한 스키마 타입 조회를 추가했다면 두 클래스는 거의 완전히 중복되었을 것입니다 :-(
  • builder와 unmarshaller는 스키마 타입을 해석하기 위해 schema.Schema.find()를 사용했습니다. 적절한 컨텍스트에서 타입을 해석하기 위해 "person.name.first"와 같은 경로를 구성했습니다. Schema.find()는 상태가 없었기 때문에 호출할 때마다 중간 경로 요소를 해석했습니다. 새로운 resolver 클래스는 상태를 가지며 자식 타입을 훨씬 더 효율적으로 해석합니다.

  • items() 메서드와 같은 sudsobject.Object의 이름 충돌 방지. 모든 메서드(클래스 메서드 포함)를 Object 클래스에 클래스 속성( factory )으로 포함된 Factory 클래스로 옮겼습니다. 이제 모든 속성이 python 내장 명명 규칙을 가지므로 더 이상 이름 충돌이 없어야 합니다. 물론 이는 어떤 wsdl/schema 엔티티 이름도 python 내장 명명 규칙을 가진 이름을 갖지 않는다고 가정하지만 어딘가에서 선을 그어야 합니다 :-)