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