Beschreibe hier die neue Seite. |
Nachfolgend CGI-Scripting mit bsh (ShellBsh). Es sind Ausschnitte aus einem realen Webcounter-System. Diese Beispiele sind noch recht anspruchslos. [[Code] Conv() { local h=0000 z=00 conv -'t+ ' $1 while expr "${{1}" :h '%%%([a-fA-F0-9]%{2%}%)' do base -16 h +b z expr "${{1}" :$1 '%%'$h += "$z" done return 0 } # Aufruf: Conv POSTstring ] Das folgende Script ist ein Download-Registrierer, der zwischengeschaltet ist. Die Namen der Dateiquellen enthalten eine verfremdende vorgesetzte Zeichenkette. Darauf wird jeweils ein Link gesetzt, der für den httpd-Server maßgebend ist. (Location:) Die Linknamen sind durch Sekunden-String und Prozeß-ID einzigartig und werden ab einem bestimmten Alter gelöscht, und zwar von diesem Script selbst. Zum Löschen sind also keine cron-Läufe notwendig. Vorteile: Die Inhalte werden nicht kopiert. Der Browser bietet nicht den Script-Namen (get.pl) zum Speichern an, sondern einen individuellen Namen. [[Code] #!/usr/bin/bsh set -f deroot="${DOCUMENT ROOT}?/de" expr "$deroot" :deroot '/de/de' '/de' arg="${QUERY STRING}?" ok=0 expr "$arg" :zn '^%([0-9]%{1,2%}%.[0-9]%{1,3%}%):.' && { expr "$arg" :nam ':%(..*%)$' || nam= expr "$nam" =:nam '%%2f' += '/' expr "$nam" :dir '^%(.*/%)[^/]*$' || dir= expr "$nam" :nam '%([^/]*%)$' || nam= expr "$nam" :erw '%.%([^/.]%{1,%}%)$' || erw= pre=XXXXXXXXXX [ -s "$dir$pre$nam" ] && ok=1 } [ ok -eq 0 ] && { echo "Content-type: text/plain%n" exit 0 } {HTTP REFERER}?="${HTTP REFERER}?::$dir$nam" export {HTTP REFERER}? expr "${REMOTE ADDR}?" :: '127%.0%.0%.' || extern icnt.pl $zn.i0 ifset erw || erw=bin conv -l erw ctyp=text/plain case "$erw" in shtml|html|htm|php3) ctyp=text/html ;; txt|bsh|pl|text) ctyp=text/plain ;; exe|bin|zip|gz|tar|drv|z|obj|o) ctyp=application/octet-stream ;; gif) ctyp=image/gif ;; jpg|jpeg) ctyp=image/jpeg ;; *) ctyp=text/plain ;; esac systime Time cd "$deroot" set +f for lkn in *[0-9][0-9]_[0-9]* do expr "$lkn" :time '^%([0-9]%{8,10}%)_[0-9]%{1,}_' || continue let "Time-time>400" && remove "$lkn" done set -f cd - http_lkn="${Time}_$$_$nam" lkn="$deroot/$http_lkn" [ -e "$lkn" ] && remove "$lkn" link "$dir$pre$nam" "$lkn" clen=0 fstat -sv clen "$dir$pre$nam" Out="Content-Type: $ctyp Location: ../$http_lkn Content-Length: $clen " catv Out exit 0 ] KategorieProgrammierBeispiele |
Es sind Ausschnitte aus einem realen Webcounter-System.
Diese Beispiele sind noch recht anspruchslos.
|
|