From 6d86cef692700ed54305d322fd166f786b92a3e6 Mon Sep 17 00:00:00 2001 From: Roland Gruber Date: Sat, 13 Sep 2014 14:43:44 +0000 Subject: [PATCH] support pooling of IP ranges (RFE 107) --- lam/HISTORY | 1 + lam/docs/manual-sources/howto.xml | 43 +- lam/docs/manual-sources/images/dhcpConf1.png | Bin 0 -> 11308 bytes lam/docs/manual-sources/images/dhcpConf2.png | Bin 0 -> 13429 bytes lam/docs/manual-sources/images/dhcpConf3.png | Bin 0 -> 23023 bytes lam/docs/manual-sources/images/ranges.png | Bin 41654 -> 75163 bytes lam/lib/html.inc | 2 +- lam/lib/modules/fixed_ip.inc | 2 +- lam/lib/modules/range.inc | 580 ++++++++++++++----- lam/lib/types/dhcp.inc | 12 + lam/style/500_layout.css | 5 + 11 files changed, 496 insertions(+), 149 deletions(-) create mode 100644 lam/docs/manual-sources/images/dhcpConf1.png create mode 100644 lam/docs/manual-sources/images/dhcpConf2.png create mode 100644 lam/docs/manual-sources/images/dhcpConf3.png diff --git a/lam/HISTORY b/lam/HISTORY index c4525e65..c7760dea 100644 --- a/lam/HISTORY +++ b/lam/HISTORY @@ -1,5 +1,6 @@ September 2014 4.7 - Nginx webserver support + - DHCP: support pooling of IP ranges (RFE 107) - Personal: support pager attribute (hidden by default) - renamed config/lam.conf_sample to lam.conf.sample and config.cfg_sample to config.cfg.sample - LAM Pro: diff --git a/lam/docs/manual-sources/howto.xml b/lam/docs/manual-sources/howto.xml index ba4cd35c..b83feaf9 100644 --- a/lam/docs/manual-sources/howto.xml +++ b/lam/docs/manual-sources/howto.xml @@ -4243,9 +4243,12 @@ Attention: If the Active Directory schema is used then LAM will always use dn an DHCP You can mange your DHCP server with LAM. It supports to manage - subnets, fixed IP entries, IP ranges and DDNS. The DHCP can be activated - by adding the account type DHCP to your server profile. Please also add - the DHCP modules. + subnets, fixed IP entries, IP ranges and DDNS. + + Configuration + + The DHCP management can be activated by adding the account type + DHCP to your server profile. Please also add the DHCP modules. LAM requires that you use an LDAP entry with the object class "dhcpService" or "dhcpServer" as suffix for this account type. If the @@ -4256,6 +4259,36 @@ Attention: If the Active Directory schema is used then LAM will always use dn an + Add account type: + + + + + + + + + + Set suffix: + + + + + + + + + + Add modules: + + + + + + + + + Example server entry: @@ -4375,6 +4408,10 @@ Run slapindex to rebuild the index. IP ranges may be specified. + If you use failover pools for your IP ranges please use the pool + options on the bottom. Here you can add DHCP pools (object class + "dhcpPool") and specify the failover peer. + diff --git a/lam/docs/manual-sources/images/dhcpConf1.png b/lam/docs/manual-sources/images/dhcpConf1.png new file mode 100644 index 0000000000000000000000000000000000000000..ac065498680eed6ab21f7cd70d368d89a054b620 GIT binary patch literal 11308 zcmeHtRa9GD7-eXG3Pp>yMN5l26e&=k1&S4ScMa|m0u(LY0>L3z(BcjSiWisQ65QP# z=60TDUglxmX05p^$w_YRy64<;KH1;iCrn8}3KxqE3j_k;%1BG7fIv@7f$y1^Pk_&1 znY-6O^VCI5Mhz1ab8cC23HbTkQCiyt1bUGMyxq_Wot%GyKyN@Y5}(yP)AkoU^oTYe zK}W;uu|I+c+EH)6*DIl6gcFfmezIGb)hVF_+tjGH)+XTT)PQ$OCmMI`i!~6;nIDP@ zv})KXzGHshBltVCaR2Zjb>n4wFW%1P{mJ_7$y&pv$mK_m%VkMIu`DH!7$!{+b6b@w z2xygZLXrt-f?liy{9iWhWm>r^g(@m4CnqP2;ovL(7h;%MlEIwUC{38G+ryogsHiAD zKK@T>v%>QK`B(c{8aEvs!Wx<9>+4Gz_6+D8Y%6!Dy0N(l@$%B9B@TKaRzScloIk#M zuA!k3lIYxUcdf(UcaK(Z32& zE}qaSNia^j!N!~*3V8GD*RLQknwZN)xRiG@JuWy(^jG`?smXFBx8twVX2?1tj z_j>)MdhkpXMfs%x4=gGNU6?_YjE^BYyQobPq>Am z6VxZ<3P-JM|L3tIN~^{p9a~*fgAR(4?C^cDB{R9|Z*lN#@HnhQQi7GV7V`|`|7*Y% zPLF0wa{yIWb9#rd*ZlIwj8pZmqKr9kjgF1Yt~V|^FDOhRdjdSOeHWmzNI#Sig^@hb z*;ANVK7K@a*#hQ5{Y8Tu2AgvO-A5IdMQz4%6>-JVz78=CRWHkzcqyC2vXiZ=$u1ONTkoOLxt1-gwdZxfbt)L-e7$AGI2MZ#%*ddzy^at3QM8#QlR^Qe25D`sWIPtR~bPkpFlK&HdUAi+`EGG!mR zl81i}YY^$um-0nMnMdZt^J7M9Yfrk+wv5c9>&|%h@Nn^Oz2uCC@x{d|$*gQa)hc6s z$nXVuMTssK;tZ{6&ir))R)+sLL~EGU`5?9Qf*35i6C4`TsCH}Gc`pVH4{)GciSWXC zE|(I(%C0_b9Wi$q-*PtP4p<*v6s@Yr=2`T$W(}FVwDeFflS#gA&B@^3zf4R_PeIhw zF?V+>lFoeh%*8WRQJXn_;xxw|{(l4bd#^Ayw zvr;<&`MQ2aU&e}u&9Ka`#W&wCNz|*Fhm#U$#=&+)X=>WfF-4Sg(lrW438U7L^XFKA z6)D|1{URC`$j^OLFOmH6)>lHJ2bo{i)1C1$qU+nY76bwdp`xm#m94aG(8iPe^QW=< ztO}SjPe`?de{Q-j-7^U5nOEZP(GIAmR9ypgY|%_R!r(A|pid%Ta2 zj|X=tg<1?GDfg2mu<2U3H(sz!$>DbMh{pJ<`TLA;nN_xr9^q6)q;uvq59NeOZ!jC} zb@BgKDH^*5iWgA>{H!^6S~HC_!b)b2u7 zdr-y6-CpID_1+CPv$}8`oIbW)dvi7^xAS^z{2`J$XKY{7twXy$#n;>Ai&b zE&U>?AMlK9y0vm}5#bLXlGqwtx5r{cA3nHj4EX!|lXaRp38oM2opnc%vk@rBhfHW^ z*Y#%;Ykw@_CFnmzLFphS`IdebGg#k0N6)^CPf`+}3m6z`j)(D9LN2LI4X7(EhnG>! z?O-ZsiFHjQ7^W*bcp(y!w_a!8dvekVg3dDDX6Owz>D4kj&lgVJ&jul`iE?9Hkh(XJ zm+J@}*n!>VmuNA~)tUF)+zJ^VXKL+qE3RgSeXV&?uCA^I1_lJR5YK{uW#wpVD-u!T zRn^$dS8Vja7xB3o7)tkhhK?>xYf_@YLaM7RV>XGNPkA!c1m^B{K&;y^Z7Qe^47FGz z=~sE4gVKdOEM8e`4y7CV9HZ+xpKXnHc1lpiOd-A|E_Z}hiRQgG?T!p1VxSUo|5Z@% zy=V0`zl!#~*Xf4ceEsOc0`y?M0XSM8A8uEBV*300)6>$jv$JRG91Ld!4Vv8Tka_Z; zrGo8A$Il9R75D-BESRdyDkc>HT}Q zwY9ayM(Cs53JL}7-dtO2Y7oA4b}!MWJM!yS=uAI7alW8fhk{B0 zVZ3c$mrb{E1c@X8-KCt%eHAv<`mu}vOqR=VcOdaTt z8GFa$U@E`x!zN#cF1Ut1`!L9~LN`!6)aQ1vr(e@Ho6&oEqy_usZ<~5pIrzMmvXx@# zv{(5Zh7Zpsn+O~q#IQ0nltMYkIr7^Jxz$DOx;I^`12q5~88i}`8$fIBafm%vW6GYe zCEen%K?M;t469lcUNI&(XGCn3x)n;~IcHJ~-mzOZx$nou#X-)t+FE{lpM&RW?Qna% zLyV&-1e_1%1z@u4hliqGCuUMoQlLym@FA*ss?3l9(`39rIb;%tykRDhwW`Td-)^nU z;_x+O0#D;S%b>L7$)9p#;f{74VXqS&f$N)vCVZk{6rUH&~k0DGhPTP2h2&MLje;3izu45jSLnGK8TiDxE;l6a}Y zhr?)_%Z^e9xJ#N_@A_&Lo>L)+OsR2}VSXwhk%hUo+`-Rw{JV6P5~qo0EA%#otZ&L; zdZxx^tEM$(DC4}l=d^X5alZ0gvvB<4tWemGf%;&A#dcz+WEl7M@6WioI(9$D!|{}f z(JBk6j@B72w)04*6dtC;-dxLJeZJprSJGmhQ%Z&72~ozEL+XC%3mmXn_S=J*H&h>q zH`i!|{0^p8{p@XK$03UkTD3ltdt1E4Iftk)`1Qk@A}MR3j^bm!1%&!DG7|~gST{Gf z^B4qMF>RDMrlVg9{Sfk6Q-l82wQwkZ>JGLF203ei7(3SJI zoV0X#ZEbW|n0AA+c`Bcsi7C8fFZsP?u8Oss+`xQ;%j(KX5tXBPlV!T?TA3|i2G8*{ zNHwG63QP0&?CvC^_jsLF{yZnT!QX%Rx2b7T@uG7^SIqP4FG}=>XsnI4v2mm>%aE13 zHd$0ip0&Fm7Z(>J3)S4D$G-Vpik1)tgIU+i0tUgRQ@z!I&E4c4vfcMq)MY~sFktj2 z-_)2XxlDqxT4oTM1mldVPyWDIQSUUlFwyqV=0D+fM!jvz6N;^wDv9OBOeg&G?1`N< z|E5XS$XOO!c=p93+3k%@Alg#RXyC=;4Z{~Rz@5h$!Rm~hJLs2 z!4kPztb`F?-sL=_)&G4npVa#Oq1;;4A>hr8)Wyi|Am#KxG7lH{bORcaDC8^f!FQh1 z{l*V_5gYReCf&K(jd#C$M^bx~n2r&OyU#+X-D@^BC5eAyzWKR!esVJJx1LPw+8;Dw zB1Px>WpfQ6JJ`9`e&khmyDWY2Nh%<6q>+&BZIq-J|K&mRshGfbR}*NVtg?!Mo}N|_ zV@bW&^vsMhF)SmaRHOLx>tYa-nfyeHST$Gk*WOn*xA`hbe9S^;(8-( zM7+-!0q5l4;CTN&4zkb_L){A0RGpojwRUqChl}ugZR%)r;l!E0RaI5{`};H24h{|n z2u=OL5Z>{K1MixvfK>g|vpZdb=#x*+^)NsnKM?O9qH>XYv&P4q*Exv2OmZRUMr>VO zQ(4(d(AAB%7o-U;;!>z6p$Yo?_iuuj=MYyA0Y*W&-NGs$ft%4&RuIy6n%YLq|a=vXbHpg9`?{m)6yt9hCh)x z6c4M<7?}Qyxi~KrA}NsctTNDR#sYi3n)EzCrf~^oSl<{YpkYs znVFf1j!g<6yR;8ZVkH_e6aul3&)sZE>3rk@GO;1p0wySZNVRrZNp&S-? zTg9S}^*-LwiUP)iQ{Z4QqB5P>f5~$6oggPWdo;=BLi24*f8wL@;gd?+Uv##4W>cfN zEi+=P{|#_vBDY!CrOO`uf}ecmz3_V~0vB~3_yMomGpu!O;}F7EcqKZ|$cbu2;|xKX zglDVT_h{Z-sY)EO_n6d)4EE~QJtS6Eo(zkmtCw(sYcEHKhQ}YS7@kUQ&nR zMqOO_v>fxvD90b$n-rK*R2c{CbH$zfbB+1GhHZdrU{U?r(d#gm1z|=exiWma+dVq5 zA7p%SoT=4=+>)4m8iTr^ zD?$b2d2_~;G^Z8i<^AuFMF3bfv66qexc*HQ(&C+mi%VSp`kwIP-k$9$m?Y7_jTd#L zhgds%UFf%%YF~=D*7QG zzmta6SksmaOU70RKO0XqE{K?zxWa=S?a$OyReAYzM@Nl`(6?{Cz)K+-uR~JKAxW-x zdYY3>cc-}-y{+wSNChFLt5{Z?|29jWpeoc^U2%PO3>83wr=g&d)m+@UuvcL~A15Fn zKq>4UPb*_-X}S6;EiH|Q3>WeQAZc(Q2!I)pMO4<*1Y^w=8D|$16qpF~7^rHJUl-3n zx((U_)fbAop|aWR)d&2a*M$z(w4dxCSFPkf~$?wRe3%d10Q}Wx-bH>ltJDCFC zRr3|h4MRdh85kIBYIG1Puc@h9-S>5B=V_%o`k5zRhDlr=F6J{bv#{9QUhIc>43MWtGCt%*=hqr9KlN@mAU1zEmuWGr823AS6-P`wXZLA~lNHn3)AVk2167_r{7b z!QSw(qyaJ%oA>O@s*vAq?I{c8n+km z?OOkjHUi6GIvbwZoQnKsINpIJMzxN6Nm&^9U4?33m@IT@$w^d{x;AZ?L9sL4{ME*2 z&OjI3?{R*~&XyLRD)%J`%rU;H{=>!2jMr#>KgQXiwdtv0`@>CYjkdM`RA8gF*WxJ;isJk9TXNG_P#g_~`TFKN1h>o0%i{uxzXT75d0 zGKz*4S;n!5RNdLzw%;W(S}cmtE%QZ*H#VN*Ib&IyY&x)&m)3ig6J=#(0jUKG7nhgm zaI!?#*|}07AGz(?+uK`OT59VxoFUAi-kYZh08HIGg3CD!j zR8+oee}4jKbNBoPDA{`B7+g3i!p|AxlFA(xTbd!4f*!HUslsi#|M;yB32fzkr~A zY*7_#+JmFrXlt5yr2OA!*TYGt)euYgh6UUPVVx&KG>m?_DB!p3aIlo$%u5d*7Xmr% zb~{C%$PndpN5i34BSPJ7s3h+2`+xwNz;_8gw_!Bp>nwcdTf7=MqwdeK4H{NdYkhk8 z;XaL?>!B_!Z!v)qB}J&HQS8NkYV|a-cehd%AUOvbO?q0|HK4Adp`oE)UtV4g#iP7A zLn@+Weu*G;XuaptMHQ;%$1y1SK3s3|$m5goFbWH&v%v-3c7RgfDg^*;R9q&Vz;rV6 zS-F>0{FQtdJIkohyfac~zzkk_6ds`_Cl~TOGU}*?!>NVr%+1$#z#A)sU`})Me=Byo zQ(Oj~Q2^XXG6&7Sy1IHwQu~A)MAq=@S6W!yW|~M%kCMqr+o1RP?%_+P!(y%uNxW%D zg3=}iOGI(E0G;ygZG1r^DZAb)5)u+ZLVy$m@T!=Ym?JS+h*;Kq?R{MV!95%0-}fI5 zYQ8m3fea1;Ni6y#?SQfZ1CL_5#wHO4QwOXx1fM!OXM|JGF$9Q0UjM{fqu^x1te2nzD9}wP z`1yM}F%HoDEx;M#PY_zj1{r|rFDIT|P!-V)#A7yt91n|e_k`8H>Mf3TtRCaQ@1+1f z*Fat`S>^4|co>XVi}4=={H_zmq+4sNt)ru(qGED#ivye-DGuBfK}1A+1xj)U)bC^% z>uiqZsV$%2G>ZiIvyqZ5YWdCuGsfr!`=v`Rpn+lT=HLE zyh%(10Q1cL{~Pv%;dohutO+vh4V0E|5GJc0HAf>&9dK6oK_7Ob?zbE4awDfw_I;}O zmK2z=r!9!5{zOieYRtT#0=1p`tEzV)mu1>QI56dWr)FAjsmQ`MU0{ZBSp5{dj+UH2 z-^sZCa6+%7KYqT6{GMV_@cu2B?DNf?(+51z*ckT>ei9?BCU%80Aw8QQLXU~OvXi>J5(FofIub4zd28{g7OOzoH zNa4BG7P}>3Bt59NTX8Khzxq)r0U^m1ROVK$8NuEe{jU z;mr^hS=KXqd>$f5D?^_#Kh+Fji1T96?K>vQ$G}UmWi&k5Z@-5B?pLOI>F56Ej|@&n z`TBpK(}Yd|Aq69@V4$?D;^+v^FJ0J3#olMu?qqVDzsGi_@i0H?Yn~$cBQkH{JxZH% zzr-okS4XE}eL83E8E)j#K{8(Yv&Z{O`3_xUV;Y%Fd^9o4<|I}h1+SZdu9cNB5rPE( zL;-~!D>Jiz%LO5P7|!igt&qRiu=@tIH}3}MB#J2?!iP7Xej2+L$ANv`9xKy}M)$|S zr*h&5XnL4K_Vj-}_|5Ca3S!l-&05*xTKt9PFWfX$1S<^1v(IA$clE)GT8P~*^o2AH zWd(6Sy0r(Z?2j9BH8>q|$sZfv9KyqhB)M^j?z{S!-RM3oiY$a1GhYouFd=uo)W-Je}(X&2I=U?^E~~ zNOTVl?&{`hY7h{Go_KV*aWxSGX1ubZ0$ceeZDy|5Q0YwGM2Z#6&9O-a;oje&+S_7e z`Fq<#%bb!Y^R2A6v0NVjhID*`EW22y-44Rgl+ERdw%%SEhFb^C%OCCSD`|VhrKJkp z&7FARa`bG>^}P%44}Ui~t|~T3$Kv4Pk_qM>VpQeN&dw$+J^_Tg(W*58x(?3JhYx5V z650SWhA54%RMYQQF`Zt-@!x_f>_PKjk>zAqghathiug2CwsQtD_ZFpjOZq0A; z)wQuapoQb4py?|03qK-&9nQ_o%&a%zJwPZCoAcF%uYW}Oy=&i~33wC9VpY@FXM%}& zgbu3EGIQ6S2W&~F`iO&(akln;3K%<|-4lKNbezKk7>qnmCf1DMgSW+b5l4fQh3Ed+Z#ov^8`e&T~@s_jWk(3SH zKa42*;1LoWmuDS~aGZJ+v~aVwo~b~7MyF1YjSa|b| zZmg3e#Q$wr4Bw)}0~z{UKLtsg9f0*tQyr%I*4F{{ljndgI)eZU9nO*Aaxie%^9UFx zyFsG{7iZ85Z)GiRRjQA!6rcp3rXRvX+-lvLhC}b;W2ktgnQPeC*#YhZz)kN5)^~Pr zK>Om)B46KTq^IM80CLxbHMr@a?~s2+sQSSgX%D(uY)>Y!gx`+3f?f$7Kv^n8Z{KYF z$Z}AFGGTAD;)CMo{ibuKtU#W2XH_h7FxYUa&{I(D;g$Txw8duW(~ne#5nD0Sbz)+( zpg-~a8`Cp&-1AdD>>eI3L5^>V^@}DBauyaAPd~v$79wp97Cf|=ZMrVT@*^xn z>nz)wq$=ouA%Z?>Z7wlOM!XP<`eFWl{W<6rPkCKd5cDj5Fy5rX>aLyu#OXc$X0=Ig zuJ)JJTrEP{jAW*)r}wJa=qxf!d;Z+-N@R9!u47cW)>mK7td)wylA70f1OO>@wli{! z#PyAWgPxFfl<;m*OMF}4+sU#BCl?oY*LZn2-@|U1h{dj^hKP^W8gM~CfDUGGfJVs^ zJgVvO>qVX_r;gZY%DLyk0TzQkb@tlFzfn+&34B9OuZ9Q-4QDTbOWkIOoB1&JwU6&G zm2o$(-)wznPY<%I%jq=F9Qr7qO(9(6$68@R1Oj1q{M!p~7_!{)7NBi%Rpzq9Z#0B; z{^{1NcM|wuH9>bO=k>lQRC8m7U_&C?vgezBK!hOSaRY5!nwSI@4`Tuu?M)jGmqfl0 zE5qyeOQi(U{`L{n*8K{M?lg+2Ok0o?xShn#eOhd@Pv|56!=pO0oA1FnuT33R@Dm`{ zX+Bwgyb^tgd29`MT!qR4iu`wMRK5hzPrXsz|5MEox$n=!$6f)qVtJSdKb( zO8$bFev_*`@~G_%;P_6ow`))3*=2t4jC|rm1=&^)fBK3M3?loWS~QWOKIg!HYWMg!`reRWBvSMa&pBN+QfFVc*~t!tuRHd-hs_ELef#-B!7UFW9Y}R z?(S1#@;(Ex529cHv+`n@Imy9q~+)4DmI!@ zx6Z*TS!0|y)3eh>vTAtl0T_xDswz~qw%ZP40mmZLFZ~X38n{?AS-C01S#s2hy5+Bo z26hASA0Bc_O3oKG9iZHPVFqQ?g1Ip=RqN}0Kpju&_izu$0dCb}1@s1a-+b+}S4uM{ zc8Z!LR<$|hTO417YwW}ibJJyIF*PIJi4F6NOiZnYd1Mf8`H8wOThqWYa>jO(Q0XZG zLbD%)`sULpDJb{c1Z8tZ6XThig;S}bT6-6C%vukCQKj$--8A&yTO(1QpF-p_c*bUC zKGRlW9g^KFR0hv^P!wn(yCn&E-=3T$f92KvtVT`dnTbSJS^Talu&Enm(>dQ4b(C%I zJ+*BxD0{R$?kg{S*W^wP-HQ1j4t?}Dz`)Dc8nO258G0ApoiTfb%=m#P{#5rOEJD<> zz$j_D>CkEzW%~5Vy8(^w5uz`rD-};kp&>Y_328nZM+ttPI65SpPojqOv%3}V$}5#v zhT8cQkY|^ow$FD3E8UbH!{RnRdd2orl7Kl4^$n`-55fjL9_BqaW6taRUdG`ur^_N# z3teRq8p&EdEvk1*3eN+DGRWqS2Qn4e{p_|q4fSzd6};|C+lP@Xw}p2PtArpicFlFt zzH~~xGh!v4!iiCxbdfTp3}?|q~dCOZvtJh@{yO~j!Zzunu0zKngy0M^BzPbRJ#pITwMc3sHOuh>(_o}?3xwUUu?R5Fj+ey#e--5=}mYg z232<3vDfNhSQGp<-&p^&AVO4Zm`Xw>t*oO|ibnz@dl`ws6*JV+O*?VknOU)f5O7bT z6MpTv-2rFH6(X_QXK!X)pG)^kiylwyOC`4}YEoUg!y+jO=jnJp8I;m_-Tg|d?9A2u zlNjC$Hgx4~Xf^)>jakmyPQsHDq`j;9z&4j8WP6*&+1emRSM-le|93t z5j!u@QqLV{QS(;!-p&~x!@&Qla!9<8Cml}89rObfKm!6{f|k%;T=~ST^C;!HdW%KdI#~ts+Bb$}r+M506=jVNcY)2=~ z@8cO^MXF&k;?JbYIgSfM6UEbU&K?X+{pRa$_qRgXO#ON^D0Lh<%{b@#dA!dq0oV?^_FW$F5_!Vag$~ z9a4lQrbM_HO5=Zd*FKeLHC!KM$?p{|2V!i8oNNrH0su8V%?zMn40I;Qe3<=s7+Q-+lF?q>JxC{}pFk z25)$M{61p~-(kVcAacETdbsIx#{1cSnIq8JAu5dQ91k>qx2Z)U&MVZPG=;&TUt0mBF@RUa zK0I3WzAOLy?#sx3pufM&MBH0S2{p-EqW&e=7g)jVS8lepdrNJBGuB}R<@PUYH>ZNA z-CufpUP+h8(7@lw1Q>tH&*2p;s!x-ZhkS7RVe}xiy6c{WNpmKal~uu%kWis6cg+pTh6p3yXmbf)t?Owsg`Z@yx-Vo=?eA+bsNaJ z?yQdI%)Np@nx5eSTTsbjQ1VTAiNa2qwoJi!pbT$qAsxZDXL5lC&@cbc^#|O`;(u(^ oNCYN8Nn+A;qW>S7^+%A2O!)YoGgT?D-xnnFMM0ue%qZZ00F_Z-#{d8T literal 0 HcmV?d00001 diff --git a/lam/docs/manual-sources/images/dhcpConf2.png b/lam/docs/manual-sources/images/dhcpConf2.png new file mode 100644 index 0000000000000000000000000000000000000000..dc47c315ac6536704e85083e8e58d74acab30ddf GIT binary patch literal 13429 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

5d&%x4b*q!`COYAwzed1m4_^0h}QCsk;>m4JN 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 BBxV2r literal 0 HcmV?d00001 diff --git a/lam/docs/manual-sources/images/dhcpConf3.png b/lam/docs/manual-sources/images/dhcpConf3.png new file mode 100644 index 0000000000000000000000000000000000000000..7111326e1a85d0ba5cb1c5fcc8b804b1027e4a89 GIT binary patch literal 23023 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 B+HC*; literal 0 HcmV?d00001 diff --git a/lam/docs/manual-sources/images/ranges.png b/lam/docs/manual-sources/images/ranges.png index 43e25be6db7f7732ee5f643c5e6224c276e556d5..2bc7c4da282ea12173dfe4e7cf18b2926040dd07 100644 GIT binary patch literal 75163 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�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 h0ftHbpU5FNJW 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 V`WCinGbOVS2D-*5@;Qf_{{f*fWz7Hp diff --git a/lam/lib/html.inc b/lam/lib/html.inc index 19849bf1..12f0eebd 100644 --- a/lam/lib/html.inc +++ b/lam/lib/html.inc @@ -624,7 +624,7 @@ class htmlInputField extends htmlElement { } /** - * Sets the field size. + * Sets the field size (default is 30). * * @param int $fieldSize size */ diff --git a/lam/lib/modules/fixed_ip.inc b/lam/lib/modules/fixed_ip.inc index eeb829d5..dad8ce86 100644 --- a/lam/lib/modules/fixed_ip.inc +++ b/lam/lib/modules/fixed_ip.inc @@ -41,7 +41,7 @@ $Id$ class fixed_ip extends baseModule { /** fixed ips */ - public $fixed_ip; + public $fixed_ip = array(); /** already processed? */ public $processed = false; diff --git a/lam/lib/modules/range.inc b/lam/lib/modules/range.inc index e74da9b0..a8f02d2c 100644 --- a/lam/lib/modules/range.inc +++ b/lam/lib/modules/range.inc @@ -51,6 +51,11 @@ class range extends baseModule { /** For check, if IPs overlaped. */ public $overlaped; + + /** list of pools that currently exist in LDAP */ + private $poolsOrig = array(); + /** list of pools that need to be updated in LDAP */ + private $poolsNew = array(); /** * Returns true if this module can manage accounts of the current type, otherwise false. @@ -88,19 +93,35 @@ class range extends baseModule { $return['attributes'] = array('dhcpRange'); // help Entries $return['help'] = array( - 'range_from' => array( + 'range_from' => array( "Headline" => _("Range from"), "Text" => _("The starting IP address of the range.") - ) , 'range_to' => array( + ), + 'range_to' => array( "Headline" => _("Range to"), "Text" => _("The ending IP address of the range.") - ) , 'drop_range' => array( + ), + 'drop_range' => array( "Headline" => _("Delete range"), "Text" => _("Deletes an IP range.") - ) , 'add_range' => array( + ), + 'add_range' => array( "Headline" => _("New range"), "Text" => _("Adds input fields for a new IP range.") - ) ); + ), + 'add_pool' => array( + "Headline" => _("New pool"), + "Text" => _("Adds a new range pool.") + ), + 'poolName' => array( + "Headline" => _("Name"), 'attr' => 'cn', + "Text" => _("The pool's name.") + ), + 'poolPeer' => array( + "Headline" => _("Failover peer"), 'attr' => 'dhcpStatements', + "Text" => _("The pool's failover peer.") + ), + ); // available PDF fields $return['PDF_fields'] = array('ranges' => _('Ranges')); @@ -114,6 +135,8 @@ class range extends baseModule { $this->messages['range_errors'][0] = array('ERROR', _('One or more errors occured. The invalid fields are marked.'), ''); $this->messages['add_range'][0] = array('ERROR', _('New range'), _('Adding the range failed because errors occured.')); $this->messages['drop_range'][0] = array('ERROR', _('Delete range'), _('It is not possible to delete all ranges.')); + $this->messages['pool_cn'][0] = array('ERROR', _('Name'), _('Please enter a pool name.')); + $this->messages['pool_range'][0] = array('ERROR', _('Please enter at least one range for pool "%s".'), null); } /** @@ -225,8 +248,6 @@ class range extends baseModule { if ($this->getAccountContainer()->dn_orig!=$_SESSION['config']->get_suffix('dhcp')) { $this->orig = $attr; $this->attributes = $attr; - - // Load DHCP Options: if (isset($attr['dhcpRange']) && is_array($attr['dhcpRange'])) { natcasesort($attr['dhcpRange']); @@ -237,6 +258,8 @@ class range extends baseModule { $this->ranges[$id] = array('range_start'=>$ex[0],'range_end'=>$ex[1]); } } + // load pools + $this->loadPools(); } } @@ -290,107 +313,171 @@ class range extends baseModule { */ public function process_attributes() { $errors = array(); - - $droped = false; // Was a Range droped??? - if ($this->getAccountContainer()->dn_orig!=$_SESSION['config']->get_suffix('dhcp')) { - if ($this->getAccountContainer()->getAccountModule('dhcp_settings')->attributes['cn'][0]!="") { - $was_a_error = false; - $this->reset_overlaped_range(); + if ($this->getAccountContainer()->dn_orig == $_SESSION['config']->get_suffix('dhcp')) { + return $errors; + } + $subnet = $this->getAccountContainer()->getAccountModule('dhcp_settings')->attributes['cn'][0]; + $mask = $this->getAccountContainer()->getAccountModule('dhcp_settings')->getDHCPOption('subnet-mask'); + $errorOccured = false; + $this->reset_overlaped_range(); + if ($this->getAccountContainer()->getAccountModule('dhcp_settings')->attributes['cn'][0]!="") { - foreach($this->ranges AS $id=>$arr) { + foreach($this->ranges AS $id=>$arr) { + // Check if range is to drop + if (isset($_POST['drop_range_'.$id])) { + // drop Range: + unset($this->ranges[$id]); + unset($this->attributes['dhcpRange'][$id]); + continue; + } - // Check if range is to drop - if (isset($_POST['drop_range_'.$id])) { - // Drop Range: - unset($this->ranges[$id]); - unset($this->attributes['dhcpRange'][$id]); - $droped = true; - continue; - } + // if the inputs are empty, then do nothing: + if ($_POST['range_start_'.$id]=="" && $_POST['range_end_'.$id]=="") { + unset($this->attributes['dhcpRange'][$id]); + } + else { + // Check range_start: + $_POST['range_start_'.$id] = trim($_POST['range_start_'.$id]); + if (!check_ip($_POST['range_start_'.$id])) { + $errorOccured = true; + } + $this->ranges[$id]['range_start'] = $_POST['range_start_'.$id]; - // if the inputs are empty, then do nothing: - if ($_POST['range_start_'.$id]=="" && $_POST['range_end_'.$id]=="") { - unset($this->attributes['dhcpRange'][$id]); + // Check end: + $_POST['range_end_'.$id] = trim($_POST['range_end_'.$id]); + if (!check_ip($_POST['range_end_'.$id])) { + $errorOccured = true; + } + $this->ranges[$id]['range_end'] = $_POST['range_end_'.$id]; + + // Check if ip overlaped: + if(!$this->overlaped_range($_POST['range_start_'.$id],$_POST['range_end_'.$id])) { + $errorOccured = true; + } + + // Check if Subnet and range first are valid: + if (!range::check_subnet_range($_POST['range_start_'.$id], $subnet, $mask)) { + $errorOccured = true; + } + + // Check if Subnet and range last are valid: + if (!range::check_subnet_range($_POST['range_end_'.$id], $subnet, $mask)) { + $errorOccured = true; + } + + // Check if Range is valid + if (!$this->check_range($_POST['range_start_'.$id],$_POST['range_end_'.$id])) { + $errorOccured = true; + } + + // Check, if range_start and range_end are ok! + if (!$errorOccured) { + $this->attributes['dhcpRange'][$id] = $_POST['range_start_'.$id]." ".$_POST['range_end_'.$id]; } else { - $mask = $this->getAccountContainer()->getAccountModule('dhcp_settings')->getDHCPOption('subnet-mask'); - // Check range_start: - $_POST['range_start_'.$id] = trim($_POST['range_start_'.$id]); - if (!check_ip($_POST['range_start_'.$id])) { - $this->ranges[$id]['range_start'] = $_POST['range_start_'.$id]; - $was_a_error = true; - } - else - { - $this->ranges[$id]['range_start'] = $_POST['range_start_'.$id]; - } + unset($this->attributes['dhcpRange'][$id]); + } + } + } + } - // Check end: - $_POST['range_end_'.$id] = trim($_POST['range_end_'.$id]); - if (!check_ip($_POST['range_end_'.$id])) { - $this->ranges[$id]['range_end'] = $_POST['range_end_'.$id]; - $was_a_error = true; - } - else - { - $this->ranges[$id]['range_end'] = $_POST['range_end_'.$id]; - } - - // Check if ip overlaped: - if(!$this->overlaped_range($_POST['range_start_'.$id],$_POST['range_end_'.$id])) { - $was_a_error = true; - } - - // Check if Subnet and range first are valid: - if (!range::check_subnet_range($_POST['range_start_'.$id],$this->getAccountContainer()->getAccountModule('dhcp_settings')->attributes['cn'][0], $mask)) { - $was_a_error = true; - } - - // Check if Subnet and range last are valid: - if (!range::check_subnet_range($_POST['range_end_'.$id],$this->getAccountContainer()->getAccountModule('dhcp_settings')->attributes['cn'][0], $mask)) { - $was_a_error = true; - } - - // Check if Range is valid - if (!$this->check_range($_POST['range_start_'.$id],$_POST['range_end_'.$id])) { - $was_a_error = true; - } - - // Check, if range_start and range_end are ok! - if (!$was_a_error) { - $this->attributes['dhcpRange'][$id] = $_POST['range_start_'.$id]." ".$_POST['range_end_'.$id]; - } - else { - unset($this->attributes['dhcpRange'][$id]); - } + // Add new Range + if(isset($_POST['add_range'])) { + // Check, if there where no errors: + if ($errorOccured) { + $errors[] = $this->messages['add_range'][0]; + } + else + { + // Add Range: + $this->ranges[] = array('range_start'=>'','range_end'=>''); + } + } + + // update pool data + foreach ($this->poolsNew as $index => $pool) { + // delete pool + if (isset($_POST['del_pool_' . $index])) { + unset($this->poolsNew[$index]); + continue; + } + // name + $this->poolsNew[$index]['cn'][0] = trim($_POST['pool_cn_' . $index]); + if (empty($this->poolsNew[$index]['cn'][0])) { + $errors[] = $this->messages['pool_cn'][0]; + } + // failover peer + $peer = trim($_POST['pool_peer_' . $index]); + if (!empty($this->poolsNew[$index]['dhcpstatements'])) { + // remove old peer setting + foreach ($this->poolsNew[$index]['dhcpstatements'] as $indexS => $stmt) { + if (strpos($stmt, 'failover peer "') === 0) { + unset($this->poolsNew[$index]['dhcpstatements'][$indexS]); + break; } } } - - // Check if there was a error: - if ($was_a_error) { - $errors[] = $this->messages['range_errors'][0]; + if (!empty($peer)) { + $this->poolsNew[$index]['dhcpstatements'][] = 'failover peer "' . $peer . '"'; } - - // Add new Range - if(isset($_POST['add_range'])) { - // Check, if there where no errors: - if ($was_a_error) { - $errors[] = $this->messages['add_range'][0]; - } - else - { - // Add Range: - $this->ranges[] = array('range_start'=>'','range_end'=>''); + if (!empty($this->poolsNew[$index]['dhcprange'])) { + foreach ($this->poolsNew[$index]['dhcprange'] as $rIndex => $range) { + // delete pool range + if (isset($_POST['drop_poolrange_' . $index . '_' . $rIndex])) { + unset($this->poolsNew[$index]['dhcprange'][$rIndex]); + continue; + } + $from = trim($_POST['pool_from_' . $index . '_' . $rIndex]); + $to = trim($_POST['pool_to_' . $index . '_' . $rIndex]); + if (empty($from) && empty($to)) { + unset($this->poolsNew[$index]['dhcprange'][$rIndex]); + } + else { + $this->poolsNew[$index]['dhcprange'][$rIndex] = $from . ' ' . $to; + // check ranges + if (!check_ip($from) || !check_ip($to)) { + $errorOccured = true; + } + elseif (!$this->overlaped_range($from, $to)) { + $errorOccured = true; + } + elseif (!range::check_subnet_range($from, $subnet, $mask) || !range::check_subnet_range($to, $subnet, $mask)) { + $errorOccured = true; + } + elseif (!$this->check_range($from, $to)) { + $errorOccured = true; + } + } } } - - - $this->processed = true; + // check if at least one range is still set + if (empty($this->poolsNew[$index]['dhcprange'])) { + $error = $this->messages['pool_range'][0]; + $error[] = array(htmlspecialchars($this->poolsNew[$index]['cn'][0])); + $errors[] = $error; + } + // add pool range + if (isset($_POST['add_poolrange_' . $index])) { + $this->poolsNew[$index]['dhcprange'][] = ''; + } } + // add a new pool + if (isset($_POST['add_pool'])) { + $this->poolsNew[] = array( + 'objectclass' => array('dhcpPool'), + 'dhcprange' => array('') + ); + } + + // Check if there was a error: + if ($errorOccured) { + $errors[] = $this->messages['range_errors'][0]; + } + + $this->processed = true; return $errors; } - + /** * Returns the HTML meta data for the main account page. * @@ -400,66 +487,257 @@ class range extends baseModule { $return = new htmlTable(); if ($this->getAccountContainer()->getAccountModule('dhcp_settings')->attributes['cn'][0]=="") { $return->addElement(new htmlStatusMessage('INFO', _("Please fill out the DHCP settings first."))); + return $return; } - else { - // If $ranges is not a array, then create it - if (!is_array($this->ranges)) { - $this->ranges = array(); - } - $this->reset_overlaped_range(); - $mask = $this->getAccountContainer()->getAccountModule('dhcp_settings')->getDHCPOption('subnet-mask'); - foreach($this->ranges AS $id=>$arr) { - - // Range start - $error = ""; - if (isset($this->ranges[$id]['range_start']) && !empty($this->ranges[$id]['range_start'])) { - if ($this->processed && !check_ip($this->ranges[$id]['range_start'])) { - $error = _("The IP address is invalid."); - } elseif($this->processed && !$this->check_range($this->ranges[$id]['range_start'],$this->ranges[$id]['range_end'])) { - $error = _("The range end needs to be greater than the range start."); - } elseif ($this->processed && !range::check_subnet_range($this->ranges[$id]['range_start'],$this->getAccountContainer()->getAccountModule('dhcp_settings')->attributes['cn'][0], $mask)) { - $error = _("The IP does not match the subnet."); - } elseif ($this->processed && !$this->overlaped_range($this->ranges[$id]['range_start'],$this->ranges[$id]['range_end']) ) { - $error = _("The range conflicts with another range."); - } + // If $ranges is not a array, then create it + if (!is_array($this->ranges)) { + $this->ranges = array(); + } + $this->reset_overlaped_range(); + $mask = $this->getAccountContainer()->getAccountModule('dhcp_settings')->getDHCPOption('subnet-mask'); + $subnet = $this->getAccountContainer()->getAccountModule('dhcp_settings')->attributes['cn'][0]; + foreach($this->ranges AS $id=>$arr) { + // Range start + $error = ""; + if (isset($this->ranges[$id]['range_start']) && !empty($this->ranges[$id]['range_start'])) { + if ($this->processed && !check_ip($this->ranges[$id]['range_start'])) { + $error = _("The IP address is invalid."); + } elseif($this->processed && !$this->check_range($this->ranges[$id]['range_start'],$this->ranges[$id]['range_end'])) { + $error = _("The range end needs to be greater than the range start."); + } elseif ($this->processed && !range::check_subnet_range($this->ranges[$id]['range_start'], $subnet, $mask)) { + $error = _("The IP does not match the subnet."); + } elseif ($this->processed && !$this->overlaped_range($this->ranges[$id]['range_start'],$this->ranges[$id]['range_end']) ) { + $error = _("The range conflicts with another range."); } - $fromInput = new htmlTableExtendedInputField(_('Range from'), 'range_start_'.$id, $this->ranges[$id]['range_start'], 'range_from'); - $fromInput->setRequired(true); - $return->addElement($fromInput); - $return->addElement(new htmlOutputText($error), true); - // Range end - $error = ""; - if (isset($this->ranges[$id]['range_end']) && !empty($this->ranges[$id]['range_end'])) { - if ($this->processed && !check_ip($this->ranges[$id]['range_end'])) { - $error = _("The IP address is invalid."); - } elseif ($this->processed && !range::check_subnet_range($this->ranges[$id]['range_end'],$this->getAccountContainer()->getAccountModule('dhcp_settings')->attributes['cn'][0], $mask)) { - $error = _("The IP does not match the subnet."); - } - } - $toInput = new htmlTableExtendedInputField(_('Range to'), 'range_end_'.$id, $this->ranges[$id]['range_end'], 'range_to'); - $toInput->setRequired(true); - $return->addElement($toInput); - $return->addElement(new htmlOutputText($error), true); - // Drop range: - $dropButton = new htmlButton('drop_range_'.$id, _('Delete range')); - $dropButton->colspan = 2; - $return->addElement($dropButton); - $return->addElement(new htmlHelpLink('drop_range'), true); - - $return->addElement(new htmlSpacer(null, '10px'), true); } - - // add new range - $addButton = new htmlButton('add_range', _('New range')); - $addButton->colspan = 2; - $return->addElement($addButton); - $return->addElement(new htmlHelpLink('add_range')); + $fromInput = new htmlTableExtendedInputField(_('Range from'), 'range_start_'.$id, $this->ranges[$id]['range_start'], 'range_from'); + $fromInput->setRequired(true); + $return->addElement($fromInput); + $return->addElement(new htmlOutputText($error), true); + // Range end + $error = ""; + if (isset($this->ranges[$id]['range_end']) && !empty($this->ranges[$id]['range_end'])) { + if ($this->processed && !check_ip($this->ranges[$id]['range_end'])) { + $error = _("The IP address is invalid."); + } elseif ($this->processed && !range::check_subnet_range($this->ranges[$id]['range_end'], $subnet, $mask)) { + $error = _("The IP does not match the subnet."); + } + } + $toInput = new htmlTableExtendedInputField(_('Range to'), 'range_end_'.$id, $this->ranges[$id]['range_end'], 'range_to'); + $toInput->setRequired(true); + $return->addElement($toInput); + $return->addElement(new htmlOutputText($error), true); + // Drop range: + $dropButton = new htmlButton('drop_range_'.$id, _('Delete range')); + $dropButton->colspan = 2; + $dropButton->setIconClass('deleteButton'); + $return->addElement($dropButton); + $return->addElement(new htmlHelpLink('drop_range'), true); + + $return->addElement(new htmlSpacer(null, '10px'), true); } + // add new range + $addButton = new htmlButton('add_range', _('New range')); + $addButton->setIconClass('createButton'); + $addButton->colspan = 2; + $return->addElement($addButton); + $return->addElement(new htmlHelpLink('add_range'), true); + + // pools + if (!empty($this->poolsNew)) { + $return->addElement(new htmlSubTitle(_('Pools')), true); + foreach ($this->poolsNew as $index => $poolAttrs) { + $cn = !empty($poolAttrs['cn'][0]) ? $poolAttrs['cn'][0] : ''; + $nameField = new htmlTableExtendedInputField(_('Name'), 'pool_cn_' . $index, $cn, 'poolName'); + $nameField->setRequired(true); + $return->addElement($nameField); + $delPoolButton = new htmlButton('del_pool_' . $index, _('Delete pool')); + $delPoolButton->setIconClass('trashButton'); + $return->addElement($delPoolButton, true); + $peer = ''; + if (!empty($poolAttrs['dhcpstatements'])) { + foreach ($poolAttrs['dhcpstatements'] as $statement) { + if (strpos($statement, 'failover peer "') === 0) { + $peer = substr($statement, strlen('failover peer "'), -1); + } + } + } + $return->addElement(new htmlTableExtendedInputField(_('Failover peer'), 'pool_peer_' . $index, $peer, 'poolPeer'), true); + $return->addVerticalSpace('10px'); + if (!empty($poolAttrs['dhcprange'])) { + foreach ($poolAttrs['dhcprange'] as $rIndex => $range) { + $range = explode(' ', $range); + $from = !empty($range[0]) ? $range[0] : ''; + $to = !empty($range[1]) ? $range[1] : ''; + $fromInput = new htmlTableExtendedInputField(_('Range from'), 'pool_from_' . $index . '_' . $rIndex, $from, 'range_from'); + $fromInput->setRequired(true); + $toInput = new htmlTableExtendedInputField(_('Range to'), 'pool_to_' . $index . '_' . $rIndex, $to, 'range_to'); + $toInput->setRequired(true); + $return->addElement($fromInput); + $message = ''; + if (!empty($from) && $this->processed) { + if (!check_ip($from)) { + $message = _("The IP address is invalid."); + } + elseif (!$this->check_range($from, $to)) { + $message = _("The range end needs to be greater than the range start."); + } + elseif (!range::check_subnet_range($from, $subnet, $mask)) { + $message = _("The IP does not match the subnet."); + } + elseif (!$this->overlaped_range($from, $to)) { + $message = _("The range conflicts with another range."); + } + } + $return->addElement(new htmlOutputText($message), true); + $return->addElement($toInput); + $message = ''; + if (!empty($to) && $this->processed) { + if (!check_ip($to)) { + $message = _("The IP address is invalid."); + } + elseif (!range::check_subnet_range($to, $subnet, $mask)) { + $message = _("The IP does not match the subnet."); + } + } + $return->addElement(new htmlOutputText($message), true); + // drop range + $dropButton = new htmlButton('drop_poolrange_' . $index . '_' . $rIndex, _('Delete range')); + $dropButton->colspan = 2; + $dropButton->setIconClass('deleteButton'); + $return->addElement($dropButton); + $return->addElement(new htmlHelpLink('drop_range'), true); + $return->addElement(new htmlSpacer(null, '10px'), true); + } + } + // add new range + $newButton = new htmlButton('add_poolrange_' . $index, _('New range')); + $newButton->colspan = 2; + $newButton->setIconClass('createButton'); + $return->addElement($newButton); + $return->addElement(new htmlHelpLink('add_range'), true); + $return->addVerticalSpace('20px'); + } + $return->addVerticalSpace('20px'); + } + + // add new range pool + $addButton = new htmlButton('add_pool', _('New pool')); + $addButton->setIconClass('createButton'); + $addButton->colspan = 2; + $return->addElement($addButton); + $return->addElement(new htmlHelpLink('add_pool'), true); + return $return; } + /** + * Allows the module to run commands after the LDAP entry is changed or created. + * + * Calling this method requires the existence of an enclosing {@link accountContainer}. + * + * @param boolean $newAccount new account + * @param array $attributes LDAP attributes of this entry + * @return array array which contains status messages. Each entry is an array containing the status message parameters. + */ + public function postModifyActions($newAccount, $attributes) { + $errors = array(); + // update pool data + // add new pools + foreach ($this->poolsNew as $pool) { + $found = false; + foreach ($this->poolsOrig as $poolOrig) { + if ($pool['cn'][0] == $poolOrig['cn'][0]) { + $found = true; + break; + } + } + if (!$found) { + // create new pool + $dn = 'cn=' . $pool['cn'][0] . ',' . $this->getAccountContainer()->finalDN; + if (isset($pool['dn'])) { + unset($pool['dn']); + } + $success = @ldap_add($_SESSION['ldap']->server(), $dn, $pool); + if (!$success) { + $msg = sprintf(_('Was unable to create DN: %s.'), $dn); + logNewMessage(LOG_ERR, $msg . getDefaultLDAPErrorString($_SESSION['ldap']->server())); + $errors[] = array('ERROR', $msg, getDefaultLDAPErrorString($_SESSION['ldap']->server())); + } + } + } + // update existing pools + foreach ($this->poolsNew as $pool) { + foreach ($this->poolsOrig as $poolOrig) { + if ($pool['cn'][0] == $poolOrig['cn'][0]) { + // check for changes + $mod = array(); + // check attributes + $attrs = array('dhcpstatements', 'dhcprange'); + foreach ($attrs as $attr) { + $changed = false; + if (empty($pool[$attr]) && empty($poolOrig[$attr])) { + continue; + } + if ((!empty($pool[$attr]) && empty($poolOrig[$attr])) + || (empty($pool[$attr]) && !empty($poolOrig[$attr])) + || (sizeof($pool[$attr]) != sizeof($poolOrig[$attr]))) { + $changed = true; + } + else { + sort($pool[$attr]); + sort($poolOrig[$attr]); + foreach ($pool[$attr] as $index => $val) { + if ($val != $poolOrig[$attr][$index]) { + $changed = true; + } + } + } + if ($changed && isset($pool[$attr])) { + $mod[$attr] = $pool[$attr]; + } + elseif ($changed) { + $mod[$attr] = array(); + } + } + if (!empty($mod)) { + $dn = 'cn=' . $pool['cn'][0] . ',' . $this->getAccountContainer()->finalDN; + $success = @ldap_modify($_SESSION['ldap']->server(), $dn, $mod); + if (!$success) { + $msg = sprintf(_('Was unable to modify attributes of DN: %s.'), $dn); + logNewMessage(LOG_ERR, $msg . getDefaultLDAPErrorString($_SESSION['ldap']->server())); + $errors[] = array('ERROR', $msg, getDefaultLDAPErrorString($_SESSION['ldap']->server())); + } + } + break; + } + } + } + // delete obsolete pools + foreach ($this->poolsOrig as $poolOrig) { + $found = false; + foreach ($this->poolsNew as $pool) { + if ($poolOrig['cn'][0] == $pool['cn'][0]) { + $found = true; + break; + } + } + if (!$found) { + // delete pool + $dn = 'cn=' . $poolOrig['cn'][0] . ',' . $this->getAccountContainer()->finalDN; + $success = @ldap_delete($_SESSION['ldap']->server(), $dn); + if (!$success) { + $msg = sprintf(_('Was unable to delete DN: %s.'), $dn); + logNewMessage(LOG_ERR, $msg . getDefaultLDAPErrorString($_SESSION['ldap']->server())); + $errors[] = array('ERROR', $msg, getDefaultLDAPErrorString($_SESSION['ldap']->server())); + } + } + } + return $errors; + } + /** * Returns a list of modifications which have to be made to the LDAP account. * @@ -502,6 +780,20 @@ class range extends baseModule { return $return; } + /** + * Loads the list of pools from LDAP. + */ + private function loadPools() { + $dn = $this->getAccountContainer()->dn_orig; + $this->poolsOrig = searchLDAP($dn, '(objectclass=dhcpPool)', array('*')); + foreach ($this->poolsOrig as &$pool) { + if (!empty($pool['dhcprange'])) { + sort($pool['dhcprange']); + } + } + $this->poolsNew = $this->poolsOrig; + } + } ?> diff --git a/lam/lib/types/dhcp.inc b/lam/lib/types/dhcp.inc index 4390a118..b9e067fb 100644 --- a/lam/lib/types/dhcp.inc +++ b/lam/lib/types/dhcp.inc @@ -238,6 +238,18 @@ class lamDHCPList extends lamList { $ranges[] = "".$ex[0]."

-
".$ex[1].""; } } + $pooledRanges = searchLDAP($entry['dn'], '(objectclass=dhcpPool)', array('dhcprange')); + foreach ($pooledRanges as $pool) { + if (empty($pool['dhcprange'])) { + continue; + } + foreach($pool['dhcprange'] AS $id => $value) { + if (!empty($value) && !is_numeric($value)) { + $ex = explode(" ", $value); + $ranges[] = "".$ex[0]."
-
".$ex[1].""; + } + } + } natcasesort($ranges); echo implode('', $ranges); echo""; diff --git a/lam/style/500_layout.css b/lam/style/500_layout.css index f6755fa7..ddc21612 100644 --- a/lam/style/500_layout.css +++ b/lam/style/500_layout.css @@ -216,6 +216,11 @@ table.collapse { background-position: 0px 0px !important; } +.trashButton { + background-image: url(../graphics/trash.png) !important; + background-position: 0px 0px !important; +} + .smallPadding span { padding: 0.1em 0.4em !important; }