summaryrefslogtreecommitdiff
path: root/src/serv/direct.cc
blob: 1e7c2d6b6bc4910c21f71c6712f1d2bda6ecc679 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/*************************************************************************
 *
 * HTCd - Copyright (C) 1998-2006 Henrik Rydberg
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 */

#include <serv/htcd.h>
#include <mt/dates.h>

const mstring log_cmd="\\group:\\user.id";

TOK_IMPL(error) {
  throw("htc: 'error' no longer supported");
}

TOK_IMPL(log) {
  htcd_req* htc=Reqd(env);
  MLOCK(htc->htcd()->mutex);
  fp_stream& tlog=htc->htcd()->errlog;
  tlog<<"["<<time(0)<<"]["<<htc->tcp->node.ip<<"]["
      <<htc->tcp->node.name<<":"<<htc->tcp->port<<"]["
      <<htc->group<<":"<<htc->user.uid()<<"] ";
  env.parg(tlog,0);
  tlog<<"\n";
  tlog.flush();
}

TOK_IMPL(output) {
  env.parg(*Reqd(env)->output,0);
}

void envAddDirect(tokmap& T)
{
  TOK_ADD(output,"r",tok_t::PUBLIC,
          "%Redirect to output stream\n"
          "%Syntax: \\output{body}\n"
          "%\n"
          "%Normally used on server-level, when output refers\n"
          "%to a socket.\n"
          );

  TOK_ADD(error,"r",tok_t::SYSONLY,
          "%Redirect to error stream\n"
          "%Syntax: \\error{body}\n"
          "%\n"
          "%Normally used for debugging and loggin of errors.\n"
          );

  TOK_ADD(log,"r",tok_t::SYSONLY,
          "%Message log\n"
          "%Syntax: \\log{msg}\n"
          "%\n"
          "%Outputs to log stream a single line with pre-set information:\n"
          "%\n"
          "%IP address\n"
          "%Time\n"
          "%Request\n"          
          "%Response\n"          
          );
}