From 6470f9ef7279cb757aa4c1370e09b67a671608bc Mon Sep 17 00:00:00 2001 From: Mike Hiretsky Date: Tue, 21 Jun 2011 14:46:53 +0400 Subject: [PATCH] Add uuid generation for rnd function. Change name net to cidr. --- i18n/cl_lib_ru.mo | Bin 26017 -> 26050 bytes pym/cl_template.py | 18 +++++++----------- pym/utils/ip.py | 20 ++++++++++++-------- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/i18n/cl_lib_ru.mo b/i18n/cl_lib_ru.mo index 539c4dcc7bc3eec81fc447f793c6b1d003468678..e5054c4125fcbbbdf53650b309edcddf07881861 100644 GIT binary patch delta 2379 zcmXZdZ%kEn7{Kx8_>akuzrqbIyg+aP5y3(Q3={|hLJTB?o1q|>(G^lC2hFolu0NM0 zb(^*{oh>RWO1prp1~1ANG^So+<#23J`NHZ&y{I%9qwmAH+uiy6&hMVz`905bo^$W{ zG2`1Ym>N+Aust#EvN# zfTb9Om8kdGi=o(&BId#dZYK0b?_mh`VHgghZgd^(IEfn2JzRs!*NUWJGA_d1Sc6WC z!~x_ZV;pqd9n^i6rHYhcbgC)xFoOe3EWtAvh37F5hfp_~#w?u29L!oLl7a200e+0} zcnK+j{D`qQk6M{nqFjlEerr$@J!CS_NROdz{0?RsBA=m_`sejl#2M*UK!vD*G@}OI ziyFvHjKCmHbR#=zB{Fe4p1?A^fy5*U8$_N!vywp-gI;XLS$qf&aL}GOjk@6kYAIK+ zYYAqd&cA{>KZ3+6zvF|riU!gO=Al-k2`QfRpjKuWx3a%XGbm=lzEPwRpGCdUhmYVK zYQ#B2lZOW}7cU@7;`bkdVZXER+OIrGU2WrVjkam$)GKf4K`2!b9PAk93`7YFE`xQxEA|A6UQ{lG<^$}h} zZRUHZ*QL>DS~(ZS;itvaMVsp?6S`m)=_hf};(A_(T1q$S4Q5eao9t36lWx>!ehO&| z=|wxvU;-MCTRKoHT88@lF>J+iCIju_&@vGkRf;ebO-#hkQ8So8-5_9xb$veS21oH# zJd2%}ST1rLKR~@-(oU*{`!F5{F&S^-S~QoC&dUtaQ78H_9cM5D!z!#EC_oqIXOJRD zU?qKmRUEYGF5nuxg7@Jq)Fz(8P>d!D+C)-NOW%TgZ_3;Li7)VVz8FV+w$3Um12?YZ z{0eGiCb1cp(I`Q97_~Ac#^Tr5gi}bYQc!I@vXiLmZ=?29B%Ph7??pKSoj8G+_&w4F zGLK#?t`T_(=TL80TT3~y5BFe*)5^$&8b}Z7>o$f_Sju88c|B?cx=|}UjyZbaBJL81 zxfqSbxDFdoOZ67UU_aV%!hilZYNaBcwto8yP@A+GHPe%rhuX#j8m%9mT-1%bJjKBcM!%;oxZL>4I~RP% zFvR;$=wibd@cb9H+VFZK!=I1x^e3J5ge2SUceNjBv)4D;9f#Uoj#NkMz9SBM%VE2t zz5U>RZ+Y@$y2n*J?a8i9OY8TI_`dNC`UZT%cHgCO_juQMw||-4TIU<$f+7Ff5@&Vb E|6g@ev;Y7A delta 2337 zcmXZddrZ}37{Kx8XOc+V4hn({I2@BZ2^wfX9xkGB3y=_j5)r|Q2*Si>t@Fppu-4Rd zSgtl~m}WPSal*OjAC$8jE744>+(K)s^-m3k%q_L=!+W;F`MmG@yFAbP{GQ+8%W-R9 z+!{Xa=Smlmwj_}P?8CKq6$>#qnLn(?DBO;fxDOZOcNm6O(1CyAG7Lx&v7-YQVG#ym z8R~tuVkmZ}h-*H8n+3hm+Zci;(1xR^fxbpNUP4W18spGP6?q8baRF9gJ=S124k8~p z&zD~J4{DsdSb?@Qm&n5mn$koTVjo7}yO@B(sDUQ&5uC$Z%%p6Y*nyhh`?vx>Mv5Tc zV?55GRwjxpmtvmJYSfLkxfp1sJ*a`-!YoVV1JqLgyvk&poM95mLrtUwHSvDbL@whJ zT*yQNMWR+B9XDYwR^UY>Cy80jV?|dPgIWgt*p4%}2AlZOUhtp>97n1qenc(BOw{#P zP}ff*xyns^5W})e!fR10vJEMo96+tiDCQGiCK;5l5ScB~iaStG{01MzS=5Zzkc|_Y zaXk(om&z2b#E5k!kv!bU{Att*p29@Dhdr1`)`55wTZk{8GALppB**Na26abnjKx!^ z8UKKq*uTirkr*1G5zCRP%10Q4zu*S^%QsKYGtHNa#jKa2CU_W2i7%533edrJ3vnk# z<4M%S&LbaL#J1I9 zd4(`o#lkXl;ufq!`bdUQo9uU-FFCDzka;<3v;B%}S{``JRHoGD0n|tM6>2k2qn?*Q zqiN+@(SgTGsEan&1s3#z8Kj>ijuzK>9cn4vs5h9wYFu4rcJdnPGe3m1h4iBxui;9( z?K7_2RJ0iNcn@~r5f=mPV*d&e8dTO}8t%meJdV19anu0!P|weK+yv;tUgq!M%NScJ zvLD|=y`Q~G+co|dC^&bN_gCw@43!h;IUc*dWyxH_XE_N{QLy8~^YWSJO z3cj@I1~3lKVI*EhZQ@xBMH^YrCgMOX{VwFVOWyP?e28yw;9JyZTT^Rx;KrrQ&!JZ4 z61L-A48&(?7_H1+jK>jd!z)Oxl3QmU*+JCnr%-z;h|YHEd$EauF7#p+eu1=s%%K+x z>P_ae_$2e326N*h*v$NI)E$*KnnXHLU$;*%0#mq1OJ0Clfp*ji4`Z&Lc!NOz#yn;I zJtko~^Fq`ccVR4g(2gU%`H!fTn#LvQ*k+nE8+E69(22*87e#L3{g~3k&o*YFOPg$n zf!^pR3`f81rn#cApLqf9!{1O#-oUn6yq~XP4)e393EsjYjA=E2n>{7LE!L=KFu2n4dhZ0!S=NYm zHuOHr63=a0wDq|+JnV&tz~}dLB-%T>?TKB@yFKyA%ROUB{+`#9j(QuCuV#eKADuWe WadzU2IU}es!;{+Zhqt4#HsF76en2z; diff --git a/pym/cl_template.py b/pym/cl_template.py index 8d5a0ae..ecc5eb3 100644 --- a/pym/cl_template.py +++ b/pym/cl_template.py @@ -2751,6 +2751,7 @@ class templateFunction(_error, _shareTemplate, _shareTermsFunction): первый аргумент: 'num' - числа, 'pas' - цифры и буквы + 'uuid' - цифры и строчные буквы a-f второй аргумент: количество символов """ @@ -2760,11 +2761,13 @@ class templateFunction(_error, _shareTemplate, _shareTermsFunction): len(terms)!=2: self.printErrTemplate() cl_overriding.exit(1) - fArgvNames = ['num','pas'] + fArgvNames = {'num':string.digits, + 'pas':string.ascii_letters + string.digits, + 'uuid':string.ascii_lowercase[:6] + string.digits} if not terms[0] in fArgvNames: self.printErrTemplate() cl_overriding.printERROR(\ - _("first argument function is not 'num' or 'pas'")) + _("first argument function must be 'num','pas' or 'uuid'")) cl_overriding.exit(1) try: lenStr = int(terms[1]) @@ -2773,15 +2776,8 @@ class templateFunction(_error, _shareTemplate, _shareTermsFunction): cl_overriding.printERROR(\ _("two argument function is not number")) cl_overriding.exit(1) - if terms[0] == fArgvNames[0]: - replace=''.join([random.choice(string.digits)\ - for i in xrange(lenStr)]) - elif terms[0] == fArgvNames[1]: - replace=''.join([random.choice(string.ascii_letters + \ - string.digits) for i in xrange(lenStr)]) - else: - self.printErrTemplate() - cl_overriding.exit(1) + choiceStr = fArgvNames[terms[0]] + replace = ''.join([random.choice(choiceStr) for i in xrange(lenStr)]) textTemplateTmp = textTemplateTmp[:resS.start()] + replace +\ textTemplateTmp[resS.end():] return textTemplateTmp diff --git a/pym/utils/ip.py b/pym/utils/ip.py index b49c1fc..bec371d 100644 --- a/pym/utils/ip.py +++ b/pym/utils/ip.py @@ -62,8 +62,8 @@ def checkNet(net): """Check net""" if not reNet.match(net): return False - mask = strIpToIntIp(netToMask(int(net))) - ip,op,net = net.partition('/') + ip,op,cidr = net.partition('/') + mask = strIpToIntIp(cidrToMask(int(cidr))) return (strIpToIntIp(ip)&mask) == (strIpToIntIp(ip)) maskDigs = map(lambda x:str(x),(0b10000000,0b11000000,0b11100000,0b11110000, @@ -106,19 +106,23 @@ def intIpToStrIp(addr): return "{0}.{1}.{2}.{3}".format( addr>>24,(addr>>16)&0xff,(addr>>8)&0xff,addr&0xff) -def maskToNet(mask): +def maskToCidr(mask): """Convert mask specified by str to net""" mask = strIpToIntIp(mask) return 32-int(math.log(((~mask) & 0xffffffff)+1,2)) -def netToMask(net): +def cidrToMask(cidr): """Convert net to mask specified by str""" - return intIpToStrIp((2**net-1)<<(32-net)) + return intIpToStrIp((2**cidr-1)<<(32-cidr)) -def getIpNet(ip,mask): +def getIpNet(ip,mask=None,cidr=None): """Get net (xx.xx.xx.xx/xx) by ip address and mask""" ip = strIpToIntIp(ip) - net = maskToNet(mask) + if not mask is None: + net = maskToCidr(mask) + else: + net = int(cidr) + mask = cidrToMask(net) mask = strIpToIntIp(mask) return "{ip}/{net}".format(ip=intIpToStrIp(ip&mask), net=net) @@ -127,7 +131,7 @@ def isIpInNet(checkip,*ipnets): """Check is ip in specified nets""" return map(lambda x:x[0], filter(lambda x:strIpToIntIp(checkip)&x[2] == strIpToIntIp(x[1])&x[2], - map(lambda x:(x[0],x[1][0],strIpToIntIp(netToMask(int(x[1][1])))), + map(lambda x:(x[0],x[1][0],strIpToIntIp(cidrToMask(int(x[1][1])))), map(lambda x:(x,x.partition('/')[0::2]), ipnets))))