slitaz-forge view ns/web/index.cgi @ rev 586

ns: tiny edits
author Paul Issott <paul@slitaz.org>
date Sun Dec 07 12:30:51 2014 +0000 (2014-12-07)
parents 8c2372deec88
children 95605b3559a8
line source
1 #!/bin/sh
3 # Get parameters with GET, POST and FILE functions
4 . /usr/bin/httpd_helper.sh
6 OWNERFILE=name.users
7 ip="$(GET ip)"
8 [ "$ip" ] || ip=$REMOTE_ADDR
9 name="$(GET name)"
10 name="${name%.by.slitaz.org}"
11 if [ "$name" -a "$REMOTE_USER" ]; then
12 header
13 addip=yes
14 case " $(GET) " in
15 *\ remove\ *|*\ delete\ *|*\ wipe\ *)
16 addip=
17 esac
18 case "$name" in
19 @*) echo "$name not allowed. Abort."
20 exit 1 ;;
21 *\**) base="${name//\*/}"
22 if grep -qs "^[^ ]*${base//./\\.} " $OWNERFILE ; then
23 owner="$(sed "/^[^ ]*${base//./\\.} /!d;s/.* //" $OWNERFILE | uniq | xargs echo)"
24 if [ "$addip" -o "$owner" != "$REMOTE_USER" ]; then
25 echo "$base is already used by $owner. Abort."
26 exit 1
27 fi
28 fi
29 esac
30 if grep -qs "^$name " $OWNERFILE || grep -qs "^\$name " $OWNERFILE ; then
31 owner="$(sed "/^$name /!d;s/.* //" $OWNERFILE)"
32 [ "$owner" ] || owner="$(sed "/^\$name /!d;s/.* //" $OWNERFILE)"
33 if [ "$owner" != "$REMOTE_USER" ]; then
34 echo "$name is already used by $owner. Abort."
35 exit 1
36 fi
37 else
38 echo "$name $(date -u) $REMOTE_USER" >> $OWNERFILE
39 fi
40 [ "$addip" ] || sed -i "/^$name /d;/^\$name /d" $OWNERFILE
41 ttl=900
42 [ "$(GET ttl)" ] && ttl="$(GET ttl)"
43 req="server 127.0.0.1"
44 if [ "$(GET mx)" ]; then
45 mx="$(GET mx)"
46 [ "$mx" ] || mx=$ip
47 req="$req
48 update delete $name.by.slitaz.org MX"
49 [ "$addip" ] && req="$req
50 update add $name.by.slitaz.org $ttl MX 10 $mx"
51 fi
52 type="A"
53 echo "$ip" | grep -q : && type="AAAA"
54 [ "$(GET ns)" ] && type="NS"
55 [ "$(GET txt)" ] && type="TXT" && ip="$(GET txt)"
56 [ "$(GET cname)" ] && type="CNAME" && ip="$(GET cname)"
57 req="$req
58 update delete $name.by.slitaz.org $type"
59 [ "$addip" ] && req="$req
60 update add $name.by.slitaz.org $ttl $type $ip"
61 echo "$req
62 send" | nsupdate 2>&1
63 else
64 #header "text/html; charset=utf-8"
65 cat <<EOT
66 <!DOCTYPE html>
67 <html xmlns="http://www.w3.org/1999/xhtml">
68 <head>
69 <title>SliTaz Name Server</title>
70 <meta charset="utf-8" />
71 <link rel="shortcut icon" href="favicon.ico" />
72 <link rel="stylesheet" type="text/css" href="style.css" />
73 <style type="text/css">
74 #header h1 {
75 margin: 0;
76 padding: 8px 0 0 42px;
77 width: 250px;
78 }
79 #logo {
80 background: url(/images/logo.png) no-repeat left;
81 position: absolute;
82 float: left;
83 left: 0px;
84 top: 0px;
85 width: 40px;
86 height: 40px;
87 }
88 pre { font-size: 100%; }
89 </style>
90 </head>
91 <body>
93 <div id="header">
94 <div id="logo"></div>
95 <div id="network">
96 <a href="http://www.slitaz.org/">Home</a>
97 <a href="http://bugs.slitaz.org/">Bugs</a>
98 <a href="http://hg.slitaz.org/?sort=lastchange">Hg</a>
99 <a href="http://forum.slitaz.org/">Forum</a>
100 <a href="http://roadmap.slitaz.org/">Roadmap</a>
101 <a href="http://pizza.slitaz.me/">Pizza</a>
102 <a href="http://tank.slitaz.org/">Tank</a>
103 </div>
104 <h1><a href="./">SliTaz Name Server</a></h1>
105 </div>
107 <!-- Content -->
108 <div id="content">
109 <h3>Status</h3>
110 <p>
111 There are $(wc -l < $OWNERFILE) record(s) and
112 $(sed 's/.* //' $OWNERFILE | sort | uniq | wc -l) user(s)
113 in the by.slitaz.org domain.</p>
114 EOT
115 if grep -qs " $REMOTE_USER$" $OWNERFILE; then
116 cat <<EOT
117 $REMOTE_USER has $(grep " $REMOTE_USER$" $OWNERFILE | wc -l) names:
118 <pre>
119 EOT
120 for i in $(grep " $REMOTE_USER$" $OWNERFILE | sed 's/ .*//'); do
121 dig @127.0.0.1 $i.by.slitaz.org ANY | grep ^$i
122 done
123 cat <<EOT
124 </pre>
126 Your current IP address is $REMOTE_ADDR
127 EOT
128 fi
129 cat <<EOT
130 <h3>Usage</h3>
131 <pre>
132 $ wget -O - "http://user:pass@ns.slitaz.org/?name=&lt;name&gt;[&ip=&lt;ip1&gt;][&mx[=&lt;ip2&gt;]]"
133 $ wget -O - "http://user:pass@ns.slitaz.org/?name=&lt;name&gt;&remove[&mx]"
134 </pre>
135 <pre>
136 $ wget -O - "http://user:pass@ns.slitaz.org/?name=&lt;name&gt;&ns=&lt;ip&gt;"
137 $ wget -O - "http://user:pass@ns.slitaz.org/?name=&lt;name&gt;&ns&remove"
138 </pre>
139 <pre>
140 $ wget -O - "http://user:pass@ns.slitaz.org/?name=&lt;name&gt;&{txt|cname}=&lt;text&gt;"
141 $ wget -O - "http://user:pass@ns.slitaz.org/?name=&lt;name&gt;&{txt|cname}&remove"
142 </pre>
143 <h3>Examples</h3>
144 <ul>
145 <li>
146 Update myblog.by.slitaz.org with my current IP address.
147 <pre>
148 $ wget -O - "http://user:pass@ns.slitaz.org/?name=myblog"
149 </pre>
150 </li>
151 <li>
152 Update myblog.by.slitaz.org with the IP address 1.2.3.4.
153 <pre>
154 $ wget -O - "http://user:pass@ns.slitaz.org/?name=myblog&ip=1.2.3.4"
155 </pre>
156 </li>
157 <li>
158 Update myblog.by.slitaz.org with the IPv6 address 1:2:3::4:5
159 <pre>
160 $ wget -O - "http://user:pass@ns.slitaz.org/?name=myblog&ip=1:2:3::4:5"
161 </pre>
162 </li>
163 <li>
164 Remove myblog.by.slitaz.org from the name server.
165 <pre>
166 $ wget -O - "http://user:pass@ns.slitaz.org/?name=myblog&remove"
167 </pre>
168 </li>
169 <li>
170 Update myserver.by.slitaz.org with my current IP address and declare a mail server.
171 <pre>
172 $ wget -O - "http://user:pass@ns.slitaz.org/?name=myserver&mx"
173 </pre>
174 </li>
175 <li>
176 Update myserver.by.slitaz.org with my current IP address and use a mail server at 1.2.3.4.
177 <pre>
178 $ wget -O - "http://user:pass@ns.slitaz.org/?name=myserver&mx=1.2.3.4"
179 </pre>
180 </pre>
181 </li>
182 <li>
183 The Addams family use a name server at 1.2.3.4.
184 <pre>
185 $ wget -O - "http://user:pass@ns.slitaz.org/?name=*.addams&ns=1.2.3.4"
186 $ nslookup blog.gomez.addams.by.slitaz.org
187 Name: blog.gomez.addams.by.slitaz.org
188 Address 1: 5.6.7.8
189 </pre>
190 </li>
191 </ul>
192 </div>
194 <div id="footer">
195 <a href="http://www.slitaz.org/">SliTaz Website</a>
196 <a href="index.cgi">Name Server</a>
197 </div>
199 </body>
200 </html>
201 EOT
202 fi