fQi%dZddlZddlZddlZddlmZmZmZddlm Z m Z ej dZ dZ dZdZd ZGd d ejZGd d eZGddeZGddeZGddeZGddeZGddeZGddeZGddeZGddeZGddeZGd d!eZGd"d#eZGd$d%eZ Gd&d'eZ!Gd(d)eZ"Gd*d+eZ#Gd,d-eZ$Gd.d/eZ%Gd0d1eZ&Gd2d3eZ'Gd4d5eZ(dS)6zSMPP Commands moduleN)consts exceptionspdu)flagostrzsmpplib.commandc  idtdtdtdtdtdt dt dtd td td td td tdtdtdtdt t"t$t&d||fi|S#t($rt+jd|zwxYw)z+Return instance of a specific command classbind_transmitterbind_transmitter_resp bind_receiverbind_receiver_respbind_transceiverbind_transceiver_respdata_sm data_sm_resp generic_nack submit_smsubmit_sm_resp deliver_smdeliver_sm_respquery_sm query_sm_respunbind unbind_resp) enquire_linkenquire_link_respalert_notificationzCommand "%s" is not supported)BindTransmitterBindTransmitterResp BindReceiverBindReceiverRespBindTransceiverBindTransceiverRespDataSM DataSMResp GenericNAckSubmitSM SubmitSMResp DeliverSM DeliverSMRespQuerySM QuerySMRespUnbind UnbindResp EnquireLinkEnquireLinkRespAlertNotificationKeyErrorrUnknownCommandError) command_namekwargss _/home/jenkins/workspace/simtester-sanitize/venv/lib/python3.11/site-packages/smpplib/command.pyfactoryr6!s\]  #%8  \  !"2    $%8   v  J  K    l  )  }    [ f! " :# $(!0"3)   * +*%+00*)/+00 0, ]]],-L|-[\\\]s B+B.."CctjtjD]\}}||kr|cSt jd|z)zeReturn optional_params name by given code. If code is unknown, raise UnkownCommandError exceptionz Unknown SMPP command code "0x%x")six iteritemsrOPTIONAL_PARAMSrr2)codekeyvalues r5get_optional_namer>?sTmF$:;; U D==JJJ   ()Kd)R S SScr tj|S#t$rtjd|zwxYw)znReturn optional_params code by given command name. If name is unknown, raise UnknownCommandError exceptionzUnknown SMPP command name "%s")rr:r1rr2)names r5get_optional_coderBJsMV%d++ VVV,-MPT-TUUUVs"6cXtjd|||dzd|dzfS)Nz>Hr)structunpack)dataposs r5 unpack_shortrITs. =tCAI / / 2C!G ;;r?ceZdZdZiZdfd ZdZdZdZdZ d Z d Z d Z d Z d ZdZdZddZddZdZdZdZdZdZxZS)CommandzSMPP PDU Command classTFc *tt|jdi|||_||_|r.|d||_|dtj |_ |j di|dS)Nsequencestatus) superrK__init__allow_unknown_opt_paramscommandget _next_seqrMr SMPP_ESME_ROKrN _set_vars)selfrS need_sequencerRr4 __class__s r5rQzCommand.__init__]s%gt%/////(@%  -fjj44< NN,,DM ::h   ' .DK       r?c tj|D]6\}}t||rt||t |||7dS)z$set attributes accordingly to kwargsN)r8r9hasattrgetattrsetattr)rXr4r<r=s r5rWzCommand._set_varsks]-// * *JC4%% *s););)Cc5))) * *r?ct|dr(t|jr|tj}|jD]"}|j|}||r|jtur| |}|r||z }P|jtur| |}|r||z }{|jtur||}|r||z }|jtur||}||z }|jtur||}||z }|jtur||}|r||z }$|S)z$Generate binary data from the objectprep)r\callabler`r EMPTY_STRING params_orderparamsfield_is_optionaltypeint_generate_int_tlvstr_generate_string_tlvr_generate_ostring_tlv _generate_int_generate_string_generate_ostring)rXbodyfieldparamr=s r5generate_paramszCommand.generate_paramsqs 4  Xdi%8%8  IIKKK"& & &EK&E%%e,, &:$$ 22599E& Z3&& 55e<)_int_pack_formatr]rEpackr NULL_STRING)rXrpfmtrGs r5rlzCommand._generate_intsM##E**tU##  &;sSy$// /% %r?ct||}t|j|dr6|j|j}||t d}nt|j|drft |pd|j|jkr|d|j|jdz }|r|t dz}nt d}t|||tj |S)Generate string valuesizermax) r]r\rdrljustchrlenrr^r8b)rXrp field_valuerr=s r5rmzCommand._generate_stringsdE** 4;u%v . . ;u%*D%%dCFF33EE T[' / / ;$"%%U);)???)!DK,>,BQ,F*FG  #c!ff,Ae[)))uU||r?c.t||}|r|SdS)0Generate octet string value (no null terminator)N)r])rXrpr=s r5rnzCommand._generate_ostrings%e$$  L4r?c||}t||}t|}|j|j}d}|t jd|z|||}|S)rxN>HH)rzr]rBrdrrEr{)rXrpr}rG field_code field_lengthr=s r5rhzCommand._generate_int_tlvsi##E**tU##&u-- {5).   K ZtLLE r?ctt||}t|}t|j|drO|j|j}||t d}tjd|||z}nt|j|drt|pd|j|j kr|d|j|j dz }|rM|t dz}t|}tjd||| z}nd}|S)rrrrrrrN) r]rBr\rdrrrrEr{rrencode)rXrprrrfvaluer=rs r5rjzCommand._generate_string_tlvs%dE** &u-- 4;u%v . . ;u%*D &&tSVV44FKz4886AEE T[' / / ;$"%% E(:(>>>)!DK,>,BQ,F*FG  $s1vv-"6{{  E:|DDv}}V r?c t||}n#YdSxYwt|}d}|r(t|}tjd|||z}|S)rNr)r]rBrrEr{)rXrprrr=rs r5rkzCommand._generate_ostring_tlvsm !$..KK 44&u--   O{++LKz<@@;NE scFtj|j|jS)zReturn format type)rINT_PACK_FORMATSrdrrus r5rzzCommand._int_pack_formats&t{5'9'>??r?c|j|j}||}tjd|z||||z\}t |||||z }||fS)zX Parse fixed-length chunk from a PDU. Return (data, pos) tuple. ry)rdrrzrErFr^)rXrprGrHrr}rs r5 _parse_intzCommand._parse_intso {5!&##E**}S3YSt^0DEE e[))) t Syr?Nc|&|tj|}||z }n|dz}t||||||z||dzz }||fS)z\ Parse variable-length string from a PDU. Return (data, pos) tuple. Nr)findrr|r^)rXrprGrHlengthends r5 _parse_stringzCommand._parse_stringsk >))F.44C3YFF aKFeT#cFl"23444 vzSyr?c|/|j|j}tt||}t ||||||z||z }||fS)zU Parse an octet string from a PDU. Return (data, pos) tuple. )rd len_fieldrgr]r^)rXrprGrHr length_fields r5_parse_ostringzCommand._parse_ostringsb >;u-7L|4455FeT#cFl"23444 v Syr?c@t|j|drdSdS)z6Return True if field has fixed length, False otherwiserTFr\rdrus r5is_fixedzCommand.is_fixed"s' 4;u%v . . 4ur?cd}t|}|jD]}|j|}||ks||rn{|jt ur||||\}}U|jtur||||\}}~|jtur| |||\}}||kr| ||ddSdS)z$Parse data into the object structurerN) rrcrdrerfrgrrirrrparse_optional_params)rXrGrHdlenrprqs r5 parse_paramszCommand.parse_params)s4yy& B BEK&Ed{{d44U;;{zS   OOE4== ccs"" ..udC@@ cct## //tSAA c ::  & &tCDDz 2 2 2 2 2 :r?cPt|}d}||kr t||\}}t||\}} t|}nD#tj$r2}|jr%t d|||z }Yd}~yd}~wwxYw|j|}|j tur| |||\}}nS|j tur| ||||\}}n)|j tur|||||\}}||k dSdS)zParse optional parameters. Optional parameters have the following format: * type (2 bytes) * length (2 bytes) * value (variable, bytes) rz.Unknown optional parameter type 0x%x, skippingN)rrIr>rr2rRloggerwarningrdrfrgrrirrr) rXrGrrH type_coderrperqs r5rzCommand.parse_optional_params=sP4yyDjj)$44NIs&tS11KFC ))441   0NN#SU^___6MCHHHH  K&EzS   OOE4== ccs"" ..udCHH cct## //tS&II c'DjjjjjjsAB'B  B  Bc,t|j|S)z,Return True if field exists, False otherwiserrus r5 field_existszCommand.field_exists]st{E***r?ct|dr ||jvrdS|tjvrdS|rdSdS)z1Return True if field is optional, False otherwisemandatory_fieldsFT)r\rrr: is_vendorrus r5rezCommand.field_is_optionalasX 4+ , , $:O1O1O5 f, , ,4 ^^   5ur?)TFN)__name__ __module__ __qualname____doc__rdrQrWrrrvrlrmrnrhrjrkrzrrrrrrrre __classcell__rZs@r5rKrKXsh  F ! ! ! ! ! !*** """H;;; &&&(   ,   @@@   "    333(JJJ@+++       r?rKceZdZdZdZdZdS)ParamzCommand parameter info classc d|vrtd|dtttt fvr%t d|dzd}|D]}||vrtd|z|d|_dD]}||vrt||||dS)NrfzParameter Type not definedzInvalid parameter type: %s)rfrminrrzKey '%s' not allowed here)rrrr) r1rTrgrirr ValueErrorrfr^)rXr4 valid_keyskrqs r5rQzParam.__init__rs   788 8 ::f  c3d%; ; ;9FJJv???#JJv&& 8 4 4EeVE]333 4 4r?cVddt|jdfS)zShows type of Param in consolerz $$>>>>>>>>>r?rc"eZdZdZfdZxZS)r!z(Bind as receiver and transmitter commandc Jtt|j|fi|dSr)rPr!rQrs r5rQzBindTransceiver.__init__s.-ot$$-g@@@@@@@r?rrs@r5r!r!sG22AAAAAAAAAr?r!c\eZdZdZeedeeddZdZfdZ xZ S)rz*Response for bind as a transmitter commandrrrr)rsc_interface_versionc tt|j|fddi||jdit|jdSNrYFrO)rPrrQrWrrrdrs r5rQzBindTransmitterResp.__init__so1!4((1' N N NFL N N N 66$-- 4466666r?rrs@r5rrsw44U,,, %3Q 7 7 7F 9L777777777r?rc"eZdZdZfdZxZS)r z'Response for bind as a reciever commandc Jtt|j|fi|dSr)rPr rQrs r5rQzBindReceiverResp.__init__s/.%%.wAA&AAAAAr?rrs@r5r r sG11BBBBBBBBBr?r c"eZdZdZfdZxZS)r"z*Response for bind as a transceiver commandc Jtt|j|fi|dSr)rPr"rQrs r5rQzBindTransceiverResp.__init__s/1!4((1'DDVDDDDDr?rrs@r5r"r"sG44EEEEEEEEEr?r"c(eZdZdZideeddeeddeedd eed d eedd eedd eed deeddeeddeeddeeddeeddeeddeeddeeddeeddeedideeddeeddeeddeeddeeddeeddeedd eed!d"eedd#eed$d%eed&d'eedd(eed)d*eedd+eedd,eed!d-.d/eedeed&eedd0.eedd0.eedeedeedeedeedeedee1eedeedeedd2 Z d3Z fd4Z xZ S)5r#zBdata_sm command is used to transfer data between SMSC and the ESME service_typersource_addr_tonrrsource_addr_npi source_addr dest_addr_ton dest_addr_npidestination_addr esm_classregistered_delivery data_coding source_portrDsource_addr_subunitsource_network_typesource_bearer_typesource_telematics_iddestination_portdest_addr_subunitdest_network_typedest_bearer_typedest_telematics_idsar_msg_ref_numsar_total_segmentssar_segment_seqnummore_messages_to_sendqos_time_to_live payload_typemessage_payloadreceipted_message_idA message_statenetwork_error_codeuser_message_referenceprivacy_indicator callback_numrfrrcallback_num_pres_indrf) callback_num_atagsource_subaddressdest_subaddressuser_response_code display_time sms_signal ms_validityms_msg_wait_facilitiesnumber_of_messagesalert_on_message_deliverylanguage_indicatorits_reply_typeits_session_info)/rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r r rrrrrrrrrrrrrrc tt|j|fi||jdit|jdSr)rPr#rQrWrrrdrs r5rQzDataSM.__init__sT$fd$W7777766$-- 4466666r?) rrrrrrirgrrrdrcrQrrs@r5r#r#sLL23A...255c2222 55c2222 uu#2... 2 Ca000 2 Ca000 2 EEs3332 UU!,,,2 uu#A6662 uu#A...2 uu#A...2 uu#A6662 uu#A6662 ee1555!2" 3Q 7 7 7#2$ EEs333%2& UU!444'22( UU!444)2* EEs333+2, ee1555-2. 55c222/20 ee1555122 ee1555324 Ca!8!8!8526 EEs333728 3Q///92: 55d444;2< 3B 7 7 7=2> Ca000?2@ eeA666A2B !%%Sq"9"9"9C2D UU!444E2F 4QB777G2H Ca!8!8!8I22J#U444"U;;; 5cqb999#e15553Q///e1---u#A..."'%Sq"9"9"9#e1555%*U%5%5%5#e1555%Sq111!Es333c222FhL*777777777r?r#ceZdZdZeedeedeedeedeeddZdZfd Z xZ S) r$zReponse command for data_smrrr rr) message_iddelivery_failure_reasonradditional_status_info_text dpf_resultc tt|j|fi||jdit|jdSr)rPr$rQrWrrrdrs r5rQzDataSMResp.__init__2sT(j$(;;F;;;66$-- 4466666r?rrs@r5r$r$s%%e"---$)5cs#;#;#;#e!444',u#3'?'?'?e1---  FL777777777r?r$c.eZdZdZiZdZgZfdZxZS)r%z&General Negative Acknowledgement classrOc Ntt|j|fddi|dSNrYF)rPr%rQrs r5rQzGenericNAck.__init__>s3)k4  )'QQQ&QQQQQr?) rrrrrdrc_defsrQrrs@r5r%r%7sV00 FL ERRRRRRRRRr?r%cHeZdZdZdZdZdZdZdZdZ dZ dZ dZ dZ dZdZdZdZdZdZdZdZideeddeed d eed d eed d eed deed deed deed deed deed deeddeeddeed deed deed deed deed ideedddeed d eed d!eed d"eed d#eed d$eed d%eed d&eed d'eed d(eed d)eed*d+eed d,eed-d./d0eed d1eedd2/d3eedd2/eed eed eed eed eed eed ee4eed eed eed eed d5 Zd6Zfd7Zd8ZxZS)9r&zsubmit_sm command class This command is used by an ESME to submit short message to the SMSC. submit_sm PDU does not support the transaction mode.Nrrrrrrrrrrrrrr protocol_id priority_flagschedule_delivery_timevalidity_periodrreplace_if_present_flagrsm_default_msg_id sm_length short_messagerfrrr rDrrrrrrrrrrrr r rr rrrrrr) rrrrrrrrrrussd_service_op)-rrrrrrrrr,r-r.r0rr1rr2r3r4r rrrrrrrrrrr r rrrrrrrrrrrrrr7c tt|j|fi||jdit|jdSr)rPr&rQrWrrrdrs r5rQzSubmitSM.__init__sT&h&w99&99966$-- 4466666r?c|jr;t|ddrtdt|j|_dSd|_dS)Prepare to generate binary datarNz6`message_payload` can not be used with `short_message`r)r4r]rrr3rs r5r`z SubmitSM.prepsU   t.55 [ !YZZZ !344DNNNDNNNr?) rrrrrrrrrrrrr,r-r.r0rr1rr2r3r4rrirgrrrdrcrQr`rrs@r5r&r&Bsh<<LOOKMMIKM"O#KIM03A...055c2220 55c2220 uu#2... 0 Ca000 0 Ca000 0 EEs3330 UU!,,,0 uu#A...0 Ca0000 !%%Sb"9"9"90 55cr2220 uu#A6660 "55c#:#:#:0 uu#A...0 UU!444!0" UU!,,,#00$ Dc[III%0* !%%Sq"9"9"9+0, uu#A...-0. uu#A666/00 EEs333102 UU!444304 55c222506 ee1555708 ee155590: Ca!8!8!8;0< 3Q///=0> 55d444?0@ UU!444A0B 4QB777C0D Ca!8!8!8E0F UU;;;G0H 55cqb999I00J$e15553Q///e1---u#A..."'%Sq"9"9"9#e1555%*U%5%5%5#e1555%Sq111!Es333 5c222_000FdL*77777r?r&cDeZdZdZdeediZdZfdZxZ S)r'zResponse command for submit_smr"rr)r"c tt|j|fddi||jdit|jdSr)rPr'rQrWrrrdrs r5rQzSubmitSMResp.__init__sY*lD!!*7RR%R6RRR66$-- 4466666r?) rrrrrrirdrcrQrrs@r5r'r'sb(( ee"---F#L777777777r?r'c leZdZdZideeddeeddeedd eed d eedd eedd eed deeddeeddeeddeeddeeddeeddeeddeeddeeddeedideedddeeddeeddeedd eedd!eedd"eedd#eedd$eedd%eedd&eed'd(eed)d*+d,eedd-+d.eedd-+d/eedd0eedd1eed2eedeed3eedeedeedd4Zd5Z fd6Z xZ S)7r(zTdeliver_sm command class, similar to submit_sm but has different optional paramsrrrrrrrrrrrrrr,r-r.r/r0rr1rr2r3r4r5r6r rDrrrrrrr rrrr rr rrrrrrrr r)rrrrr)'rrrrrrrrr,r-r.r0rr1rr2r3r4r rrrrrrr rrr rrrrrrrrrrc tt|j|fi||jdit|jdSr)rPr(rQrWrrrdrs r5rQzDeliverSM.__init__3sT'i'::6:::66$-- 4466666r?) rrrrrrirgrrdrcrQrrs@r5r(r(sl))*3A...*55c222* 55c222* uu#2... * Ca000 * Ca000 * EEs333* UU!,,,* uu#A...* Ca000* !%%Sb"9"9"9* 55cr222* uu#A666* "55c#:#:#:* uu#A...* UU!444!*" UU!,,,#**$ Dc[III%** !%%Sq"9"9"9+*, uu#A...-*. EEs333/*0 55c2221*2 ee15553*4 ee15555*6 ee15557*8 UU!4449*: 3Q///;*< 55d444=*> 4QB777?*@ UU;;;A*B 55cqb999C*D ee1555E*F EEs333G*H eeA666I**JCa000 %3B 7 7 7$u#A666"U!444!&Ca!8!8!8S***FXL&777777777r?r(c&eZdZdZdZfdZxZS)r)z5deliver_sm_response response class, same as submit_smNc Jtt|j|fi|dSr)rPr)rQrs r5rQzDeliverSMResp.__init__<s.+mT""+G>>v>>>>>r?)rrrrr"rQrrs@r5r)r)8sC??J?????????r?r)ceZdZdZdZdZdZdZee dee dee dee ddZ dZ fd Z d ZxZS) r*zquery_sm command class This command is used by an ESME to query the state of a short message to the SMSC. source_addr* values must match those supplied when the message was submitted.Nrrrrr)r"rrrc tt|j|fi||jdit|jdSr)rPr*rQrWrrrdrs r5rQzQuerySM.__init___sT%gt%g8888866$-- 4466666r?c2|jstddS)r:z`message_id` is mandatoryN)r"rrs r5r`z QuerySM.prepcs' :899 9 : :r?)rrrrr"rrrrrirgrdrcrQr`rrs@r5r*r*?sUU JOOK e"--- 5c222 5c222u#2... FL 77777:::::::r?r*ceZdZdZdZeedeedeedeeddZdZ fd Z xZ S) r+zResponse command for query_smrrrr/rr)r" final_dater error_codec tt|j|fddi||jdit|jdSr)rPr+rQrWrrrdrs r5rQzQuerySMResp.__init__{sY)k4  )'QQQ&QQQ66$-- 4466666r?) rrrrrrrirgrdrcrQrrs@r5r+r+js'''e"---e"---Ca000e1--- FL 777777777r?r+c*eZdZdZiZdZfdZxZS)r,zUnbind commandrOc Jtt|j|fi|dSr)rPr,rQrs r5rQzUnbind.__init__s.$fd$W7777777r?rrrrrdrcrQrrs@r5r,r,sH FL888888888r?r,c*eZdZdZiZdZfdZxZS)r-zUnbind response commandrOc Ntt|j|fddi|dSr))rPr-rQrs r5rQzUnbindResp.__init__s3(j$(PPPPPPPPr?rJrs@r5r-r-sQ!! FLQQQQQQQQQr?r-c*eZdZdZiZdZfdZxZS)r.zEnquire link commandrOc Jtt|j|fi|dSr)rPr.rQrs r5rQzEnquireLink.__init__s.)k4  )'<rBrIPDUrKobjectrrrr!rr r"r#r$r%r&r'r(r)r*r+r,r-r.r/r0rOr?r5r]s( ++++++++++%%%%%%%%  , - -]]]<TTTVVV<<<TTTTTcgTTTn<<<<>>>>?>>> AAAAAoAAA 77777'777"BBBBB*BBB EEEEE-EEE N7N7N7N7N7WN7N7N7b777777774RRRRR'RRR]]]]]w]]]@ 7 7 7 7 77 7 7 7E7E7E7E7E7E7E7E7P?????L???(:(:(:(:(:g(:(:(:V77777'777,88888W888QQQQQQQQ====='===VVVVVgVVV.7.7.7.7.7.7.7.7.7.7r?