Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
suds — نسخة من suds 0.4 مع رقعة suds-0.4-CVE-2013-2217.patch | Kitploit
أدوات/GitHubGitHub/osirium/suds
تحليل الثغرات الأمنيةالبرمجة النصية والأتمتةاختبار أمان APIأمن الويبالأدوات والمكوناتأمن واجهات برمجة التطبيقات
GitHubosirium/suds

suds

نسخة من suds 0.4 مع رقعة suds-0.4-CVE-2013-2217.patch

عرض المستودع
منذ 8 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

نظرة عامة

عميل خدمات الويب "Suds" هو عميل خفيف الوزن يعتمد على SOAP للغة Python، وهو مرخص تحت رخصة LGPL.

للحصول على التفاصيل، زر:

  • موقع المشروع: 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().
  • تحديث التخزين المؤقت لـ HTTP لتجاهل عناوين file://.
  • تحسين تسجيل الرسائل عند حقن الرد فقط.
  • إصلاح أنواع XInteger و XFloat لترجمة المصفوفات المُرجَعة بشكل صحيح.
  • إصلاح استيراد مخطط xs:import بنفس مساحة الاسم.
  • تحديث المحلل لعدم تحميل المراجع الخارجية وإضافة Import.bind() لموقع XMLSchema.xsd.
  • إضافة طبيب المخطط - يُستخدم لتعديل XSDs في وقت التشغيل. (انظر Option.doctor)
  • إصلاح تحذيرات الإهمال في Python 2.6.
  • إضافة سلوك لـ @default المُعرّف على .
  • تغيير قيمة @xsi:type لتكون مؤهلة دائمًا لـ doc/literal. (يعيد التغيير من 0.3.5).
  • إضافة خيار Option.xstq للتحكم في وقت تأهيل @xsi:type.
  • إصلاح التذاكر: #64, #129, #205, #206, #217, #221, #222, #224, #225, #228, #229, #230

الإصدار 0.3.5 (04-16-09):

  • إضافة التخزين المؤقت لـ HTTP. الافتراضي هو يوم (1). لا ينطبق على استدعاء الطريقة. راجع: التوثيق للحصول على التفاصيل.
  • إزالة التحقق من إصدار fedora في المواصفات حيث لم يعد البناء < fc9.
  • تحديث makefile لإنشاء الأرشيف باستخدام tar.sh.
  • نقل تحديد bare/wrapped إلى wsdl لـ document/literal.
  • إعادة هيكلة Transport إلى حزمة (توفر تسجيلًا أفضل لرؤوس HTTP).
  • إصلاح التذاكر: #207, #209, #210, #212, #214, #215

الإصدار 0.3.4 (02-24-09):

  • ربط ثابت (تلقائي) Import.bind('http://schemas.xmlsoap.org/soap/encoding/')، لم يعد المستخدمون بحاجة للقيام بذلك.
  • أمان wsdl أساسي مع {{{UsernameToken}}} وكلمة مرور نص عادي فقط.
  • إضافة دعم لرؤوس soap ''المتفرقة'' عبر تمرير قاموس
  • إضافة دعم لرؤوس soap معرفة من قبل المستخدم بشكل تعسفي
  • إصلاح عمليات الخدمة ذات إدخالات رؤوس soap متعددة.
  • تحسينات في خوارزميات تحميل المخطط وإزالة المرجع.
  • إصلاح مراجع multirefs المتداخلة في soap.
  • دعم أفضل (حقيقي) لـ elementFormDefault="unqualified" يوفر تسمية أكثر دقة.
  • أنواع أجزاء WSDL لم تعد افتراضية إلى targetNamespace الخاص بـ WSDL.
  • إصلاح التذاكر: #4, #6, #21, #32, #62, #66, #71, #72, #114, #155, #201.

الإصدار 0.3.3 (11-31-08):

  • لم يعد يُثبّت حزمة (الاختبارات).
  • تنفيذ اقتراح API-3 ( https://fedorahosted.org/suds/wiki/Api3Proposal )
    • نقل قابل للتوصيل
    • وسائط طريقة الكلمات المفتاحية
    • مصادقة http أساسية في النقل الافتراضي
  • إضافة تطبيع بادئة مساحة الاسم في رسالة soap.
  • تحسين تقليم رسالة soap للعقد الفارغة.
  • إصلاح التذاكر: #51 - #60

الإصدار 0.3.2 (11-7-08):

  • دعم SOAP {{{MultiRef}}} ''(تمت إضافة المرور الأول في r300)''
  • إضافة دعم لعلامات المخطط الجديدة:
    • xs:include/
    • xs:simpleContent/
    • xs:group/
    • xs:attributeGroup/
  • إضافة دعم لتحويلات xs <--> python الجديدة:
    • xs:int
    • xs:long
    • xs:float
    • xs:double
  • مراجعة المُشكّل والربط لزيادة دقة تسمية العقد المنتجة.
  • إصلاح العودية اللانهائية في حزمة ''xsd'' في dereference() أثناء تحميل المخطط.
  • إضافة دعم لـ wsdl:import/ لملفات المخطط في جذر wsdl .
  • إصلاح الترميز المزدوج لـ (&)
  • إضافة واجهة برمجة تطبيقات العميل:
    • setheaders() - نفس الكلمة المفتاحية ولكن تعمل لجميع الاستدعاءات.
    • addprefix() - تعيين بادئات مساحة الاسم.
    • setlocation() - تجاوز الموقع في wsdl؛ نفس الكلمة المفتاحية لجميع الاستدعاءات.
    • setproxy() - نفس وكيل الكلمة المفتاحية لجميع الاستدعاءات.
  • إضافة بادئة مساحة اسم مناسبة لرؤوس soap.
  • إصلاح التذاكر: #5, #12, #34, #37, #40, #44, #45, #46, #48, #49, #50, #51

الإصدار 0.3.1 (10-1-08):

  • متابعة سريعة لإصدار 0.3 الذي جعل العمل مع تعريفات الخدمة متعددة المنافذ أصعب من اللازم. بعد التفكير (وليلة نوم جيدة)، بدا واضحًا أن بعض التغييرات ستجعل هذا أسهل بكثير: 1) فلترة روابط غير soap - كانت تسبب المشكلة الحقيقية؛ 2) نظرًا لأن معظم الخوادم تكون راضية بأي من روابط soap (soap 1.1 و 1.2)، فإن المراجع الغامضة للطرق عند استدعائها دون تأهيل المنفذ ستعمل بشكل جيد في كل حالة تقريبًا. لذا، لماذا لا نسمح لـ suds باختيار المنفذ. دعنا لا نجبر المستخدم على فعل ذلك عند عدم الحاجة. في معظم الحالات، المستخدمون على الإصدار 0.2.9 والإصدارات السابقة لن يضطروا لتحديث كودهم عند الانتقال إلى 0.3.1 كما قد يفعلون في 0.3.

الإصدار 0.3 (9-30-08):

  • توسيع دعم الخدمات متعددة المنافذ الذي تم تقديمه في 0.2.9. هذه الإضافة، توفر لخدمات متعددة تعريف نفس الطريقة وسيقوم suds بمعالجتها بشكل صحيح. انظر القسم 'الخدمات ذات المنافذ المتعددة:'

  • إضافة دعم لنمط ربط soap متعدد المستندات document/literal. انظر القسم 'مستندات متعددة Docuemnt/Literal:'

  • إضافة دعم لعلامات (xs:group, xs:attributeGroup).

  • إضافة Client.last_sent() و Client.last_received().

الإصدار 0.2.9 (9-09-08):

  • دعم منافذ متعددة داخل الخدمة.
  • مراجع السمات <xs:attribute ref=""/>
  • جعل مشفر الأحرف الخاصة في XML في حزمة sax - قابل للتوصيل

الإصدار 0.2.8 (8-28-08):

  • تحديث ربط document/literal لإرسال جذر المستند المشار إليه بواسطة دائمًا. بعد مراجعة أخرى للمساحة ومدخلات المستخدم، يبدو أن العنصر المشار إليه هو دائمًا جذر المستند.

  • إضافة دعم لربط مواقع المخططات 'binding' بمساحة اسم uri. هذا مخصص للاستيرادات التي لا تحدد موقع مخطط وما زالت تتوقع تنزيل المخطط. على سبيل المثال: يشير Axis إلى 'http://schemas.xmlsoap.org/soap/encoding/' بدون موقع مخطط. لذا، عن طريق القيام بما يلي:

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

    يتم ربط المخطط بموقع مخطط ويتم تنزيله.

  • المُفكك الأساسي لا يحتاج إلى /schema/. كان يجب إزالته أثناء إعادة الهيكلة لكنه فات.

  • تحديث العميل لتمرير kwargs إلى send() وإضافة وسيط /location/ لتجاوز موقع الخدمة في wsdl.

  • تحديث المُشكّل لعدم إصدار XML لسمات الكائن التي تمثل عناصر و/أو سمات كلاهما اختياري وقيمته=None. * تحديث المصنع (الباني) لتضمين جميع السمات. * إضافة طريقة optional() إلى SchemaObject.

  • تحديث wsdl لتجاوز مساحة الاسم في العملية إذا تم تحديدها.

  • إصلاح مشكلة تحميل المخطط - بناء جميع المخططات قبل معالجة الاستيرادات.

  • تحديث التعبئة استعدادًا لتقديمها إلى fedora

الإصدار 0.2.7 (8-11-08):

  • إضافة اكتشاف/دعم لـ document/literal - مغلف وغير مغلف.
  • تحديث document/literal {مغلف} لتعيين جذر المستند (تحت ) ليكون العنصر المغلف (بمساحة اسم مناسبة).
  • إضافة دعم لـ , و مع maxOccurs وجعل المُفكك يعين قيمًا للعناصر الموجودة في مجموعة غير محددة كقائمة.
  • تحديث client.factory (الباني) لحذف أبناء لأن 'المستخدم' يحتاج حقًا إلى تحديد أي الأبناء يضمّن.
  • تحديث خوارزمية التسطيح لمنع إعادة التسطيح للأنواع من المخططات المستوردة.
  • تعديلات على خوارزميات التسطيح/الدمج.

الإصدار 0.2.6 (8-5-08):

  • إصلاح ENUMs المكسورة أثناء إعادة هيكلة حزمة xsd.
  • إصلاح النوع كما هو معرف في التذكرة #24.
  • إصلاح أسماء معلمات مكررة في توقيعات الطريقة كما ورد في التذكرة #30.
  • ترخيص Suds كـ LGPL.
  • إزالة إعداد التسجيل في suds.init() كما اقترحه التصحيح في التذكرة #31. سيحتاج المستخدمون الآن إلى تكوين المسجل.
  • إضافة دعم لـ Client.Factory.create() بديل: صيغة لتأهيل النوع بالكامل ليتم بناؤه كـ {namespace}name. على سبيل المثال: client.factory.create('{http://blabla.com/ns}Person')

الإصدار 0.2.5 (8-01-08):

  • إعادة هيكلة حزمة (XSD). هذا النهج الجديد (الدمج) أبسط ويجب أن يكون أكثر موثوقية وقابلية للصيانة. كما يجب أن يوفر أداءً أفضل نظرًا لأن المخطط المدمج يقوم بعمليات البحث عبر بحث القاموس.

    يجب أن تؤدي هذه الإعادة إلى إصلاح مشاكل TypeNotFound الحالية و xs:extension/، آمل :-).

  • إصلاح خطأ طباعة dateTime.

  • إضافة منع العودية اللانهائية في builder.Builder لأنواع xsd التي تحتوي على نفسها.

الإصدار 0.2.4 (7-28-08):

  • إضافة دعم لاستيرادات WSDL: wsdl:import/
  • إضافة دعم لتحويلات xsd<->python (بفضل: Nathan Van Gheem) لـ:
    • xs:date
    • xs:time
    • xs:dateTime
  • تم الإصلاح:
    • خطأ: استيراد المخطط مع تحديد schemaLocation.
    • خطأ: مساحات الأسماء المحددة في وصف الخدمة غير صالحة حتى يتم طباعة العميل/الوكيل.

الإصدار 0.2.3 (7-23-08):

  • تحسينات.

الإصدار 0.2.2 (7-8-08):

  • تحديث الاستثناءات لتكون أكثر /standard/ في Python باستخدام Exception.init() لتعيين Exception.message كما اقترحته التذكرة #14؛ تحديث الروابط لرفع WebFault مع تمرير (p)

  • إضافة قدرة في الروابط على التعامل مع عُقد جذر متعددة في القيم المُرجَعة؛ تُرجع ككائن مركب على عكس عندما تُرجع القوائم

  • إصلاح soapAction ليتم إحاطتها بعلامات اقتباس

  • إضافة دعم لـ xs:all/

  • إصلاح طريقة unbounded() في SchemaObject

  • إعادة هيكلة المخطط إلى حزمة جديدة (xsd). الملفات أصبحت كبيرة جدًا. إضافة execute() إلى Query وتعديل suds لاستخدام execute() للاستعلام بدلاً من استخدام Schema.find() مباشرة. أيضًا، نقل طرق start() غير الملائمة من المخطط، بالإضافة إلى زيادة الاستعلام.

  • إضافة كلمة مفتاحية inject تُستخدم لحقن رسائل soap الصادرة و/أو رسائل الرد الواردة. إعادة هيكلة SoapClient و

    1. إعادة تسمية send() إلى invoke()
    2. فصل إرسال الرسائل عن invoke() ووضعه في send()؛ إضافة TestClient الذي يسمح لـ invocation kwargs بامتلاك inject={'msg=, و reply='} للرسالة وحقن الرد
  • إضافة فئة Namespace إلى sax لإدارة أفضل لسلوك مساحة الاسم؛ تعديل suds لاستيراد واستخدام Namespace

  • تغيير مساحة الاسم الافتراضية المستخدمة لحل الأنواع المشار إليها (التي تحتوي على سمات @base="",@type="") بحيث عندما لا يتم تحديد بادئة: تستخدم مساحة اسم XML (العقدة) بدلاً من targetNamespace.

  • تطبيق الإصلاح كما هو معرف بواسطة [email protected] في التذكرة #13

  • تحديث تعريف الخدمة لعرض طرق الخدمة كـ ' my_method(xs:int arg0, Person arg1) ' بدلاً من ' my_method(arg0{xs:int}, arg1{Person}) ' الأكثر شبهاً بتوقيعات الطرق التقليدية

  • إضافة تحويلات xsd/python إلى المُفكك (XBoolean فقط)؛ إعادة هيكلة المُفكك لاستخدام فئة Content التي تجعل واجهات برمجة التطبيقات أنظف، وتضيف تماثلًا بين المُشكّل(ات) والمُفكك(ات)، وتوفر آلية جيدة لتحويلات النوع القائمة على خاصية المخطط

  • إعادة هيكلة المُشكّل مع Appenders؛ إضافة علم nobuiltin إلى resolve() لدعم إصلاح returned_type() و returnes_collection() في الروابط.

  • إضافة دعم لأكواد http (202,204)

  • إضافة XBoolean والتعيينات؛ إضافة findattr() إلى TreeResolver استعدادًا لتحويلات النوع

  • تحديث تحميل المخطط وخصائص المخطط (تم إيقاف العودية العميقة)؛ تغيير المخططات المستوردة بحيث لم تعد تنسخ المخططات المستوردة، بدلاً من ذلك يقوم وكلاء الاستيراد بإعادة توجيه الطلبات؛ إضافة فئة ServiceDefinition التي توفر فحص خدمة أفضل؛ كما توفر تعيين مساحة الاسم وإظهار الأنواع؛ تم تبسيط واجهة برمجة تطبيقات خصائص المخطط؛ تمت إضافة دعم لـ xs:any و xs:anyType؛ تم إصلاح بعض مشاكل البحث في المخطط؛ إعادة هيكلة فئات الربط بشكل طفيف؛ تمت إضافة الكثير من تسجيل التصحيح (قد يلزم التعليق على بعضها من أجل الأداء - بعض الوسائط باهظة الثمن).

الإصدار 0.2.1 (5-8-08):

  • تحديث تسلسل تحميل خاصية Schema.py SchemaProperty بحيث يتم تحميل المخطط في 3 خطوات: 1) بناء الشجرة الخام. 2) حل التبعيات مثل @ref و @base.
    3) ترقية الأحفاد حسب الحاجة لتسطيح (إزالة التسوية) الشجرة.

    تم تغيير wsdl أيضًا لتحميل المخطط مرة واحدة فقط وتخزينه. تم تغيير مجموعة المخططات لتحميل المخططات في خطوتين: 1) إنشاء جميع كائنات المخطط الخام. 2) تحميل المخططات.

    يضمن هذا أنه يمكن العثور على المخططات المستوردة محليًا عند الإشارة إليها خارج الترتيب.
    تم تغيير واجهة Element في sax.py: تم استبدال attribute() بواسطة get() و set().
    أيضًا، يمكن استخدام getitem و setitem للوصول إلى قيم السمات.
    تم تحديث Epydocs لـ sax.py. وأخيرًا... أصبح مدعومًا بشكل صحيح الآن.

  • إصلاح التسجيل عن طريق: عدم تعيينه إلى info في suds.init.logger()؛ تعيين المعالج على المسجل الجذر فقط؛ نقل المسجل (log) من الفئات إلى الوحدات واستخدام name لاسم المسجل. ملاحظة: هذا يعني أنه لتمكين تسجيل رسائل soap: > > logger('suds.serviceproxy').setLevel(logging.DEBUG) > -- بدلاً من -- > > logger('serviceproxy').setLevel(logging.DEBUG) >

  • إضافة دعم لعُقد في مخطط (xsd) والتي تؤثر بشكل أساسي على الكائنات المُرجَعة بواسطة الباني

  • تحديث serviceproxy.py:set_proxies() لتسجيل DEBUG بدلاً من INFO.

  • تحسين schema str لإظهار كل من xml الخام والنموذج (بشكل أساسي للتصحيح).

الإصدار 0.2 (04-28-08):

  • يحتوي على القسم الأول لنمط soap rpc/encoded.

  • استبدال فئة Property بـ suds.sudsobject.Object. تم تطوير فئة Property منذ وقت طويل مع غرض مختلف قليلاً. كائن suds هو نهج أبسط (أكثر مباشرة) يتطلب كود أقل ويعمل بشكل أفضل في المصحح.

  • يتم اختيار الربط (والتشفير) على أساس كل طريقة وهو أكثر اتساقًا مع wsdl. في <= 0.1.7، كان الربط يُختار عند إنشاء ServiceProxy ويُستخدم لجميع طرق الخدمة. تم تخزين الربط كـ self.binding. نظرًا لأن WSDL يوفر نمط ربط منفصل و ترميز لكل عملية، كان يجب تغيير Suds للعمل بنفس الطريقة.* تم تمرير العلامات (nil_supported) و (faults) إلى وكيل الخدمة باستخدام **kwargs. بالإضافة إلى هذه العلامات، تمت إضافة علامة (http_proxy) وتمريرها إلى كائن urllib2.Request. الوسيطات التالية مدعومة:

    • faults = رفع الأخطاء التي يرفعها الخادم (الافتراضي:True)، وإلا فسيتم إرجاع مجموعة من استدعاء طريقة الخدمة كـ (رمز http، كائن).
    • nil_supported = ستقوم الربطات بتعيين xsi:nil="true" على العقد التي لها قيمة=None عندما تكون هذه العلامة True (الافتراضي:True). وإلا، يتم إرسال عقدة فارغة .
    • proxy = وكيل http يتم تحديده في الطلبات (الافتراضي:{}). يتم تعريف الوكيل كـ {protocol:proxy,}
  • دعم وكيل Http (انظر أعلاه).

  • تمت إعادة هيكلة ServiceProxy لتخويل SoapClient. نظرًا لأن وكيل الخدمة يفضح خدمات الويب عبر getattr()، فإن أي سمة (بما في ذلك الطرق) التي يوفرها الفصل ServiceProxy تخفي عمليات WS المحددة بواسطة wsdl. لذا، من خلال نقل كل شيء إلى SoapClient، لم تعد عمليات wsdl مخفية دون الحاجة إلى استخدام أسماء hoky للسمات والطرق في وكيل الخدمة. بدلاً من ذلك، يحتوي وكيل الخدمة على السمات 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).

الإصدار-0.1.7 (04-08-08):

  • تمت إضافة Binding.nil_supported للتحكم في كيفية معالجة قيم الخصائص (خارج) = None والوسم الفارغ (داخل).

    • service.binding.nil_supported = True -- يعني أن قيم الخصائص = None يتم تجميعها (خارج) كـ و يتم فك تجميعها كـ '' و يتم فك تجميعها كـ None.
    • service.binding.nil_supported = False -- يعني أن قيم الخصائص = None يتم تجميعها (خارج) كـ و و يتم فك تجميعها كـ None. يتم تجاهل xsi:nil حقًا.
    • الافتراضي هو (TRUE)
  • تم تحديث معالج Sax للتعامل مع استدعاءات character() المتعددة عندما يقوم محلل sax بـ "تقطيع" النص. عندما يكون node.text هو None، يتم تعيين node.text إلى الأحرف. وإلا، يتم إلحاق الأحرف. شكرًا - [email protected]

  • تم استبدال السمة الخاصة (text) بـ text للسماح بالعناصر الطبيعية المسماة "text"

  • تمت إضافة دعم unicode عن طريق:

    • إضافة unicode إلى جميع الفئات التي تحتوي على str
    • استبدال جميع استدعاءات str() بـ unicode().
    • تقوم str() بإرجاع نتيجة مشفرة بـ UTF-8 من unicode.
  • تم ترميز مخرجات XML كـ UTF-8 والتي تطابق رأس HTTP وتدعم unicode.

  • تم تغيير SchemaCollection لتوفير طريقتي builtin() و custom(). لدعم ذلك، تمت إضافة findPrefixes() إلى Element في sax.py. هذا نهج أفضل على أي حال نظرًا لأن wsdl والمخططات قد تحتوي على العديد من البادئات إلى http://www.w3.org/2001/XMLSchema. تم اختباره مع كل من روابط doc/lit و rpc/lit

  • تمت إعادة هيكلة حزم الربطات من document & rpc إلى literal & encoded

  • يحتوي على إكمال الدعم الكامل لمساحات الأسماء كما يلي:

    • لم يعد يتم تجريد بادئات مساحة الاسم من قيم السمات التي تشير إلى أنواع معرفة في wsdl.
    • يجب أن تتعامل المخططات المستوردة باستخدام بشكل صحيح مع تعيين مساحة الاسم والبادئة وإعادة التعيين حسب الحاجة.
    • يتم حل جميع الأنواع باستخدام عمليات بحث مؤهلة بالكامل (مع مساحات الأسماء).
    • تدعم Schema.get_type() المسارات مع وبدون بادئات ns. عندما لا يتم تحديد بادئة يتم مطابقة النوع باستخدام مساحة الاسم المستهدفة للمخطط.
  • تحتفظ Property بأسماء السمات (المفاتيح) بالترتيب الذي تمت إضافتها به. وهذا يعني أيضًا أن get_item() و get_names() تُرجع قيمًا مرتبة. (على الرغم من أنني أشك في أن الترتيب يحتاج حقًا إلى أن يتم في المجمّع باستخدام الترتيب المحدد في wsdl/schema)

إعادة هيكلة رئيسية لـ schema.py. الهدف الأساسي هو التحضير لعمليات بحث عن الأنواع مؤهلة بالكامل بواسطة مساحة الاسم. بمجرد الانتهاء، لن يتم بعد الآن تجريد البادئات من قيم السمات (تطهيرها). ملخص التغيير: 1) تم إنشاء فئات تراكب SchemaProperty في init بدلاً من عند الطلب. 2) يتم تنفيذ واردات المخطط بواسطة فئة Import جديدة بدلاً من Schema. 3) يقوم Schema بتحميل الخصائص من المستوى الأعلى باستخدام مصنع. 4) جميع قوائم /children/ لـ SchemaProperty يتم فرزها بواسطة cmp في الفئات المشتقة من SchemaProperty. يضمن ذلك حل الأنواع التي تحمل نفس الاسم بالترتيب التالي (Import، Complex، Simple، Element). 5) يتم بناء جميع قوائم /children/ لـ SchemaProperty في init بدلاً من عند الطلب. 6) تم إنشاء SchemaGroup وتحديث فئة WSDL. يعمل هذا بشكل أفضل من أن يقوم wsdl بتجميع عقد مما يقطع الارتباط بعنصر wsdl الأصلي الذي يحتوي على تعيين بادئة مساحة الاسم. 7) يتم التعامل مع عنصر بشكل صحيح حيث يتم إجراء كل من إعادة تعيين مساحة الاسم وإعادة تعيين بادئة مساحة الاسم المستهدفة للمخطط المستورد وتعيين البادئة المرتبطة - يتم تنفيذها. مثال: SCHMEA-A بها بادئة (tns) معينة كـ xmlns:tns=http://nsA ولها targetNamespace=http://nsA. SCHEMA-B تقوم باستيراد المخطط A ولها بادئة (abc) معينة كـ xmlns:abc=http://nsABC. SCHEMA-B تستورد A كـ <import namespace=http://nsB xxx schemaLocation=http://nsA/schema-a.xsd>. لذا، نظرًا لأن SCHEMA-B ستشير إلى عناصر SCHEMA-A بالبادئة (abc) مثل abc:something، يجب تحديث targetNamespace لـ SCHEMA-A إلى http://nsABC ويجب تحديث جميع العناصر ذات type=tns:something لتصبح type=abc:something حتى يمكن حلها.

  • إصلاح مشكلة فك التجميع حيث تتم إضافة العقد إلى الخاصية كـ (نص، قيمة). تم تقديم هذا عندما تمت إعادة هيكلة الربطات.

  • إصلاح مشاكل طباعة Property المختلفة.

ملاحظات:

root@kitploit:~
شكرًا لـ Jesper Noehr من Coniuro على غالبية ربط rpc/literal و
على الكثير من التعاون في #suds.

الإصدار-0.1.6 (03-06-08):

  • يوفر معالجة صحيحة لـ wsdls التي تحتوي على أقسام مخطط تحتوي على واردات مخطط xsd: <import namespace="" schemaLocation=""?>. يتم استيراد المخططات المرجعية عند تحديد schemaLocation.
  • يثير استثناءات لرموز حالة http التي لم يتم التعامل معها بالفعل.

الإصدار-0.1.5 (02-21-08):

  • يوفر تسجيلًا أفضل في الوحدات يحصل على المسجلين بأسماء هرمية.
  • تمت إعادة الهيكلة حسب الحاجة لدعم روابط أخرى حقًا.
  • تمت إضافة وحدة sax التي تحل محل ElementTree. هذا أسرع وأبسط و يتعامل مع مساحات الأسماء (البادئات) بشكل صحيح.

الإصدار-0.1.4 (12-21-07):

  • يوفر إمكانية أن تكون معلمات طريقة الخدمة None.
  • إضافة معالجة صحيحة لمعلمات الطريقة التي هي قوائم من كائنات الخصائص.

الإصدار-0.1.3 (12-19-07):

  • إصلاح مشكلة حيث العقد المميزة كمجموعة (maxOccurs > 1) لم تكن تنشئ كائنات خاصية بقيمة=[] عند تعيينها داخليًا مع قيم < 2 بواسطة DocumentReader. سببها فقدان bindings.Document.ReplyHint.stripns() (الذي يستخدم DocumentReader.stripns()) تحويل إلى DocumentReader.stripn() الذي يعيد الآن مجموعة (ns,tag) كما في 0.1.2.

الإصدار-0.1.2 (12-18-07):

هذا الإصدار يحتوي على تحديث للخاصية يضيف: * دعم البيانات الوصفية * تجاوزات: getitem، setitem، contans * تغييرات خاصية (reader|writer) لاستخدام property.metadata للتعامل مع مساحات الأسماء لمستندات XML. * إصلاح متطلبات setup.py.

الإصدار-0.1.1 (12-17-07):

يمثل هذا الإصدار أول إصدار مستضاف في fedora.

تنزيل الأداة
  • إضافة sudsobject.Property؛ الخاصية هي كائن خاص يحتوي على سمة (value) ويُعاد بواسطة الباني (المصنع) لأنواع المخطط بدون أبناء مثل: و ؛ تم تحديث الباني، والمُشكّلات والمحللون للتعامل مع الخصائص؛ تم تحديث المحلل والمخطط أيضًا للتعامل مع عمليات بحث السمات (كانت مفقودة)

  • إضافة أساس لرؤوس soap معرفة من قبل المستخدم.

  • إصلاح elementFormDefault حسب التذكرة #7

  • إزالة kwargs غير المستخدمة من الروابط؛ تخزين الروابط مؤقتًا في wsdl؛ تعديل ServiceProxy القديم لتوكيل إلى واجهة برمجة تطبيقات العميل {الجديدة}؛ إزالة كلمة مفتاحية nil_supported لصالح المعالجة الطبيعية بواسطة سمة 'nillable' على داخل المخططات

  • إضافة دعم لعلامات سمة (nillable و form)

  • إضافة فئة Proxy (الجيل الثاني من واجهة برمجة التطبيقات)

  • إضافة دوال الوصول/التحويل بحيث لا يحتاج المستخدم إلى الوصول إلى سمات x. إضافة أيضًا todict() و get_items() للتحويل السهل إلى قاموس والتكرار

  • البحث في العناصر ذات المستوى الأعلى عن @ref قبل البحث بشكل أعمق

  • إضافة derived() إلى SchemaObject. هذا مطلوب لضمان أن جميع الأنواع المشتقة (فئات wsdl) مؤهلة بواسطة xsi:type دون تحديد xsi:type لجميع الأنواع المخصصة كما في الإصدارات السابقة من suds. تحديث المشكّل الحرفي لإضافة xsi:type فقط عندما يحتاج النوع إلى التحديد.

  • تغيير ترقية ns في sax لمنع ns من الترقية إلى الأصل عندما يكون للأصل البادئة.

  • تغيير returned_type() للربط لإرجاع العنصر (غير المحلول)

  • من أجل دعم الميزات الجديدة وإصلاح الأخطاء المُبلّغ عنها، أنا في طور إعادة هيكلة وتطوير المكونات في Suds التي توفر ترجمات الإدخال/الإخراج:

    • الباني (يترجم: كائنات XSD => كائنات Python)
    • المُشكّل (يترجم: كائنات Python => XML/SOAP)
    • المُفكك (يترجم: soap/xml => كائنات Python)

    سيوفر هذا التطور تماثلًا أفضل بين هذه المكونات كما يلي:

    سينتج الباني والمُفكك كائنات Python (فئة فرعية من sudsobject.Object) مع:

    • metadata.type = نوع XSD (SchemaObject)
    • اسم الفئة الفرعية ( class.name ) = اسم نوع المخطط.

    و

    بينما يستهلك المُشكّل(ات) كائنات Python المنتجة بواسطة الباني أو المُفكك، سيستفيد من هذه المعلومات القياسية ل إخراج المخرجات المناسبة (XML/SOAP).

    يتصرف كود 0.2.1 في الغالب بهذه الطريقة ولكن... ليس تمامًا. أيضًا، تحتوي التطبيقات على بعض التكرار.

    أثناء القيام بذلك، كان من المنطقي استخراج وظيفة "البحث" عن نوع المخطط المشتركة المستخدمة بواسطة فئات الباني والمُشكّلات والمُفكك إلى تسلسل هرمي من فئات "المحلل". هذا يقلل من التعقيد والتكرار لفئات الباني والمُشكّلات والمُفكك ويسمح بشكل أفضل للوحدات. بمجرد اكتمال هذه إعادة الهيكلة، أصبح الفرق بين المُشكّلات الحرفية/المشفرة صغيرًا جدًا. نظرًا لأن كمية الكود في حزم bindings.literal و bindings.encoded كانت صغيرة (وتصبح أصغر) وفي مصلحة الحفاظ على قاعدة كود Suds مضغوطة، قمت بنقل جميع فئات التشكيل إلى وحدة bindings.marshaller. ستتم إزالة جميع الحزم الفرعية bindings.XX.

    التأثير الصافي:

    جميع المكونات الرئيسية لـ Suds:

    • العميل (قديم: وكيل الخدمة)
    • wsdl
      • المخطط (حزمة xsd)
      • المحلولون
    • المخرجات (التشكيل)
    • الباني
    • الإدخال (إلغاء التشكيل)

    الآن لديها أفضل:

    • الوحدات
    • التماثل فيما يتعلق ببيانات تعريف الكائن.
    • إعادة استخدام الكود (< 1% تكرار كود --- آمل)
    • الاقتران الأضعف

    ... وتوفر بشكل أفضل للميزات/إصلاحات الأخطاء التالية:

    • (إصلاح) المستوى المناسب لتأهيل عنصر XML بناءً على سمة المخطط elementFormDefault="". سيضمن هذا أنه عندما يكون elementFormDefault="qualified"، سيقوم Suds بتضمين مساحة الاسم المناسبة على العناصر الجذرية لكل من الروابط الحرفية والمشفرة. لكي يعمل هذا بشكل صحيح، احتاج المُشكّل الحرفي (مثل المُشكّل المشفر) إلى أن يكون على دراية بنوع المخطط. لو كنت قد أضفت نفس البحث عن نوع المخطط كما في المُشكّل المشفر بدلاً من إعادة الهيكلة الموصوفة أعلاه، لكانت الفئتان تقريبًا نسخة مكررة كاملة من بعضهما البعض :-(
  • استخدم الباني والمُفكك Schema.find() لحل أنواع المخطط. قاموا ببناء مسار كـ "person.name.first" لحل الأنواع في السياق المناسب. نظرًا لأن Schema.find() كان عديم الحالة، فقد حل عناصر المسار الوسيطة في كل استدعاء. فئات المحلل الجديدة ذات حالة وتحل أنواع الأطفال بكفاءة أكبر.

  • منع تصادمات الأسماء في sudsobject.Object مثل طريقة items(). لقد نقلت جميع الطرق (بما في ذلك طرق الفئة) إلى فئة Factory المضمنة في فئة Object كخاصية فئة ( factory ). الآن بعد أن جميع السمات لها تسمية Python مضمنة، يجب ألا يكون لدينا المزيد من تصادمات الأسماء. هذا بالطبع يفترض أنه لا توجد أسماء كيانات wsdl/moment سيكون لها اسم مع تسمية Python المضمنة ولكن يجب أن أرسم خطًا في مكان ما :-)