]> git.plutz.net Git - busy/blobdiff - actions/introedit.sh
upgraded to fit new shcgi revision, slightly better input validation, switched to...
[busy] / actions / introedit.sh
index d55b1b2396ee2a97e29519c562a25b4581a2884c..3c6e69843220b896124f309eeba846c2a1cb09e4 100755 (executable)
 # along with Busy.  If not, see <http://www.gnu.org/licenses/>.
 
 
-info="$(echo -E "$_GET[\"i\"]" |grep -Ex 'intro|news')"
+info="$(printf %s\\n "${_GET[i]}" |grep -Ex 'intro|news|[0-9]{10}_[0-9]{3}')"
 
-if [ "$info" = "news" ]; then
-  $ACL_ADDNEWS || info=''
-elif [ "$info" = "intro" ]; then
-  $ACL_EDITINTRO || info=''
-elif [ -z "$info" ]; then
-  $ACL_EDITNEWS || info=''
-fi
-[ -n "$info" ] || echo -n "Location: //${HTTP_HOST}/?p=Error&i=noaccess\n\n"
-[ -n "$info" ] || exit 0
+case "$info" in
+  news)
+    $ACL_ADDNEWS \
+    && file="$(date +%s)_$(apg -M N -a 1 -n 1 -m 3 -x 3).news" \
+    || info=''
+    ;;
+  intro)
+    $ACL_EDITINTRO \
+    && file="intro" \
+    || info=''
+    ;;
+  *) $ACL_EDITNEWS \
+     && file="${info}.news" \
+     || info=''
+esac
 
-[ "$info" = "news" ] && info="$(date +%s)_$(apg -M N -a 1 -n 1 -m 3 -x 3)"
-[ "$info" != "intro" ] && info="${info}.news"
-[ "$info" = "intro" ] && ($ACL_EDITINTRO || info='')
+[ -n "$info" ] || echo -n "Location: ?p=Error&i=noaccess\n\n"
+[ -n "$info" ] || exit 0
 
 cgi_post
 
-[ -z "$_POST[\"cancel\"]" ] && echo -E "$_POST[\"text\"]" >"$_DATA/Home/$info"
+[ -z "${_POST[cancel]}" ] && echo -E "${_POST[text]}" >"$_DATA/Home/${file}"
 
-echo -n "Location: ${HTTP_REFERER}\n\n"
+echo -n "Location: ${HTTP_REFERER}#news_${info}\n\n"