{"type":"rich","version":"1.0","provider_name":"phorkie","provider_url":"https:\/\/p.cweiske.de\/","title":"ipfire 2 dnsmasq script to generate wildcard subdomains for dhcp-leases","author_name":"Christian Weiske","cache_age":86400,"width":900,"height":900,"html":"<!-- embedding all files of https:\/\/p.cweiske.de\/289 -->\n<link rel=\"stylesheet\" href=\"https:\/\/p.cweiske.de\/css\/embed.css\"\/>\n<div class=\"phork\" id=\"289\">\n    <div class=\"phork-file\">\n <div class=\"phork-content\">\n  <style type=\"text\/css\">\/**\n * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann\n * (http:\/\/qbnz.com\/highlighter\/ and http:\/\/geshi.org\/)\n *\/\n.ini .de1, .ini .de2 {font: normal normal 1em\/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;}\n.ini  {font-family:monospace;}\n.ini .imp {font-weight: bold; color: red;}\n.ini li, .ini .li1 {color: #DDD;}\n.ini .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}\n.ini .co0 {color: #666666; font-style: italic;}\n.ini .sy0 {color: #000066; font-weight:bold;}\n.ini .st0 {color: #933;}\n.ini .re0 {color: #000066; font-weight:bold;}\n.ini .re1 {color: #000099;}\n.ini .re2 {color: #660066;}\n.ini span.xtra { display:block; }\n<\/style><div class=\"code\"><table class=\"ini\"><tbody><tr class=\"li1\"><td class=\"ln\"><pre class=\"de1\">1\n2\n<\/pre><\/td><td class=\"de1\"><pre class=\"de1\"><span class=\"re1\">conf-dir<\/span><span class=\"sy0\">=<\/span><span class=\"re2\">\/etc\/dnsmasq.d\/<\/span>\n&#160;<\/pre><\/td><\/tr><\/tbody><\/table><\/div>\n <\/div>\n <div class=\"phork-meta\">\n  <a href=\"https:\/\/p.cweiske.de\/289\/rev-raw\/ad748152b896d09c6f73a77c99ef10699f4f767a\/etc-dnsmasq.conf\" style=\"float: right\">view raw source<\/a>\n  <a href=\"https:\/\/p.cweiske.de\/289#etc-dnsmasq.conf\">etc-dnsmasq.conf<\/a>\n <\/div>\n<\/div>\n    <div class=\"phork-file\">\n <div class=\"phork-content\">\n  <style type=\"text\/css\">\/**\n * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann\n * (http:\/\/qbnz.com\/highlighter\/ and http:\/\/geshi.org\/)\n *\/\n.bash .de1, .bash .de2 {font: normal normal 1em\/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;}\n.bash  {font-family:monospace;}\n.bash .imp {font-weight: bold; color: red;}\n.bash li, .bash .li1 {color: #DDD;}\n.bash .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}\n.bash .kw1 {color: #000000; font-weight: bold;}\n.bash .kw2 {color: #c20cb9; font-weight: bold;}\n.bash .kw3 {color: #7a0874; font-weight: bold;}\n.bash .co0 {color: #666666; font-style: italic;}\n.bash .co1 {color: #800000;}\n.bash .co2 {color: #cc0000; font-style: italic;}\n.bash .co3 {color: #000000; font-weight: bold;}\n.bash .es1 {color: #000099; font-weight: bold;}\n.bash .es2 {color: #007800;}\n.bash .es3 {color: #007800;}\n.bash .es4 {color: #007800;}\n.bash .es5 {color: #780078;}\n.bash .es_h {color: #000099; font-weight: bold;}\n.bash .br0 {color: #7a0874; font-weight: bold;}\n.bash .sy0 {color: #000000; font-weight: bold;}\n.bash .st0 {color: #ff0000;}\n.bash .st_h {color: #ff0000;}\n.bash .nu0 {color: #000000;}\n.bash .re0 {color: #007800;}\n.bash .re1 {color: #007800;}\n.bash .re2 {color: #007800;}\n.bash .re4 {color: #007800;}\n.bash .re5 {color: #660033;}\n.bash span.xtra { display:block; }\n<\/style><div class=\"code\"><table class=\"bash\"><tbody><tr class=\"li1\"><td class=\"ln\"><pre class=\"de1\">1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n<\/pre><\/td><td class=\"de1\"><pre class=\"de1\"><span class=\"co0\">#!\/bin\/sh<\/span>\n<span class=\"re2\">tld<\/span>=.example\n&#160;\n<span class=\"re2\">mode<\/span>=<span class=\"re4\">$1<\/span>\n<span class=\"re2\">ip<\/span>=<span class=\"re4\">$2<\/span>\n<span class=\"re2\">name<\/span>=<span class=\"re4\">$3<\/span><span class=\"re1\">$tld<\/span>\n&#160;\n<span class=\"re2\">filename<\/span>=<span class=\"st0\">&quot;\/etc\/dnsmasq.d\/wildcard-dhcp-<span class=\"es2\">$ip<\/span>.conf&quot;<\/span>\n<span class=\"kw3\">echo<\/span> $<span class=\"sy0\">@<\/span> <span class=\"sy0\">&gt;&gt;<\/span> <span class=\"sy0\">\/<\/span>tmp<span class=\"sy0\">\/<\/span>log\n<span class=\"kw1\">if<\/span> <span class=\"br0\">&#91;<\/span> <span class=\"st0\">&quot;<span class=\"es2\">$mode<\/span>&quot;<\/span> == add <span class=\"br0\">&#93;<\/span>; <span class=\"kw1\">then<\/span>\n&#160; &#160; <span class=\"kw3\">echo<\/span> <span class=\"st0\">&quot;address=\/.<span class=\"es2\">$name<\/span>\/<span class=\"es2\">$ip<\/span>&quot;<\/span> <span class=\"sy0\">&gt;<\/span> <span class=\"st0\">&quot;<span class=\"es2\">$filename<\/span>&quot;<\/span>\n&#160; &#160; <span class=\"sy0\">\/<\/span>etc<span class=\"sy0\">\/<\/span>init.d<span class=\"sy0\">\/<\/span>dnsmasq restart <span class=\"sy0\">&amp;<\/span>\n<span class=\"kw1\">elif<\/span> <span class=\"br0\">&#91;<\/span> <span class=\"st0\">&quot;<span class=\"es2\">$mode<\/span>&quot;<\/span> == del <span class=\"br0\">&#93;<\/span>; <span class=\"kw1\">then<\/span>\n&#160; &#160; <span class=\"kw2\">rm<\/span> <span class=\"st0\">&quot;<span class=\"es2\">$filename<\/span>&quot;<\/span>\n&#160; &#160; <span class=\"sy0\">\/<\/span>etc<span class=\"sy0\">\/<\/span>init.d<span class=\"sy0\">\/<\/span>dnsmasq restart <span class=\"sy0\">&amp;<\/span>\n<span class=\"kw1\">fi<\/span>\n&#160;<\/pre><\/td><\/tr><\/tbody><\/table><\/div>\n <\/div>\n <div class=\"phork-meta\">\n  <a href=\"https:\/\/p.cweiske.de\/289\/rev-raw\/ad748152b896d09c6f73a77c99ef10699f4f767a\/usr-local-bin-dnsmasq-dhcp-wildcards.sh\" style=\"float: right\">view raw source<\/a>\n  <a href=\"https:\/\/p.cweiske.de\/289#usr-local-bin-dnsmasq-dhcp-wildcards.sh\">usr-local-bin-dnsmasq-dhcp-wildcards.sh<\/a>\n <\/div>\n<\/div>\n    <div class=\"phork-file\">\n <div class=\"phork-content\">\n  <style type=\"text\/css\"><\/style><div class=\"code\"><table class=\"local\"><tbody><tr class=\"li1\"><td class=\"ln\"><pre class=\"de1\">1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n<\/pre><\/td><td class=\"de1\"><pre class=\"de1\">on commit {\r\n&#160; &#160; &#160; &#160; set noname = concat(&quot;dhcp-&quot;, binary-to-ascii(10, 8, &quot;-&quot;, leased-address));\r\n&#160; &#160; &#160; &#160; set ClientIP = binary-to-ascii(10, 8, &quot;.&quot;, leased-address);\r\n&#160; &#160; &#160; &#160; set ClientMac = binary-to-ascii(16, 8, &quot;:&quot;, substring(hardware, 1, 6));\r\n&#160; &#160; &#160; &#160; set ClientName = pick-first-value(option host-name, host-decl-name, config-option host-name, noname);\r\n&#160; &#160; &#160; &#160; # log(concat(&quot;Commit: IP: &quot;, ClientIP, &quot; Mac: &quot;, ClientMac, &quot; Name: &quot;, ClientName));\r\n&#160; &#160; &#160; &#160; execute(&quot;\/usr\/local\/bin\/dnsmasq-dhcp-wildcards&quot;, &quot;add&quot;, ClientIP, ClientName, ClientMac);\r\n}\r\non release {\r\n&#160; &#160; &#160; &#160; set ClientIP = binary-to-ascii(10, 8, &quot;.&quot;, leased-address);\r\n&#160; &#160; &#160; &#160; set ClientMac = binary-to-ascii(16, 8, &quot;:&quot;, substring(hardware, 1, 6));\r\n&#160; &#160; &#160; &#160; # log(concat(&quot;Release: IP: &quot;, ClientIP, &quot; Mac: &quot;, ClientMac));\r\n&#160; &#160; &#160; &#160; # cannot get a ClientName here, for some reason that always fails\r\n&#160; &#160; &#160; &#160; execute(&quot;\/usr\/local\/bin\/dnsmasq-dhcp-wildcards&quot;, &quot;del&quot;, ClientIP, &quot;&quot;, ClientMac);\r\n}\r\non expiry {\r\n&#160; &#160; &#160; &#160; set ClientIP = binary-to-ascii(10, 8, &quot;.&quot;, leased-address);\r\n&#160; &#160; &#160; &#160; # cannot get a ClientMac here, apparently this only works when actually receiving a packet\r\n&#160; &#160; &#160; &#160; # log(concat(&quot;Expired: IP: &quot;, ClientIP));\r\n&#160; &#160; &#160; &#160; # cannot get a ClientName here, for some reason that always fails\r\n&#160; &#160; &#160; &#160; execute(&quot;\/usr\/local\/bin\/dnsmasq-dhcp-wildcards&quot;, &quot;del&quot;, ClientIP, &quot;&quot;, &quot;0&quot;);\r\n}\r\n&#160;<\/pre><\/td><\/tr><\/tbody><\/table><\/div>\n <\/div>\n <div class=\"phork-meta\">\n  <a href=\"https:\/\/p.cweiske.de\/289\/rev-raw\/ad748152b896d09c6f73a77c99ef10699f4f767a\/var-ipfire-dhcp-dhcpd.conf.local\" style=\"float: right\">view raw source<\/a>\n  <a href=\"https:\/\/p.cweiske.de\/289#var-ipfire-dhcp-dhcpd.conf.local\">var-ipfire-dhcp-dhcpd.conf.local<\/a>\n <\/div>\n<\/div>\n<\/div>\n"}
