summaryrefslogtreecommitdiff
path: root/ACE/protocols/ace/HTBP/HTID_Generator.cgi
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/protocols/ace/HTBP/HTID_Generator.cgi')
-rw-r--r--ACE/protocols/ace/HTBP/HTID_Generator.cgi78
1 files changed, 78 insertions, 0 deletions
diff --git a/ACE/protocols/ace/HTBP/HTID_Generator.cgi b/ACE/protocols/ace/HTBP/HTID_Generator.cgi
new file mode 100644
index 00000000000..0d57a552d6c
--- /dev/null
+++ b/ACE/protocols/ace/HTBP/HTID_Generator.cgi
@@ -0,0 +1,78 @@
+#!/usr/bin/perl
+
+# This is a sample script that may be used to create domain specific
+# unique ID's rather than using UUID. In a typical scenario, this HTID
+# generator would reside in the same domain as the target server, so
+# that it could be used by any clients of the server. While use of UUID
+# as a unique identifier is perfectly fine, use of a remote generator
+# gives additional benefits, such as the ability to collect metrics on
+# identity requestors.
+
+print "Content-type:text/html\n\n";
+
+$htid = $ENV{'REMOTE_ADDR'};
+
+open(IN,"counts.txt") or dienice("Can't open counts.txt for writing: $!");
+
+flock(IN,2); # lock the file
+seek(IN,0,0); # rewind it to the beginning
+
+$oldtimestamp = <IN>; # read only the first line.
+$save_time = $oldtimestamp;
+
+close(IN);
+
+
+$timestamp = time;
+
+if ($oldtimestamp == $timestamp)
+ {
+ open (IN2, "sec_id.txt") or
+ dienice ("Can't open sec_id.txt for writing: $!");
+
+ flock (IN2, 2);
+ seek (IN2, 0, 0);
+
+ $secondary_id = <IN2>;
+
+ # increment the secondary id
+ ++$secondary_id;
+
+
+ close (IN2);
+ }
+else {
+
+ $secondary_id = 0;
+}
+
+ open(OUT2,">sec_id.txt") or
+ dienice("Can't open outdata.txt for writing: $!");
+
+ flock(OUT2,2); # lock the file
+ seek(OUT2,0,0); # rewind it to the beginning
+
+ print OUT2 "$secondary_id";
+
+ close(OUT2);
+
+
+#save the timestamp for next time
+$oldtimestamp = $timestamp;
+
+
+open(OUT,">counts.txt") or dienice("Can't open outdata.txt for writing: $!");
+
+flock(OUT,2); # lock the file
+seek(OUT,0,0); # rewind it to the beginning
+print OUT "$oldtimestamp\n";
+close(OUT);
+
+
+$result_string = join (".$timestamp", $htid, ".$secondary_id");
+
+print <<EndOfHTML;
+
+$result_string
+
+EndOfHTML