add more service examples
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
44f8d01399
commit
f5c2f72917
21
examples/var_service/ftpd/log/run
Executable file
21
examples/var_service/ftpd/log/run
Executable file
@ -0,0 +1,21 @@
|
||||
#!/bin/sh
|
||||
|
||||
user=logger
|
||||
|
||||
logdir="/var/log/service/`(cd ..;basename $PWD)`"
|
||||
mkdir -p "$logdir" 2>/dev/null
|
||||
chown -R "$user": "$logdir"
|
||||
chmod -R go-rwxst,u+rwX "$logdir"
|
||||
rm logdir
|
||||
ln -s "$logdir" logdir
|
||||
|
||||
# make this dir accessible to logger
|
||||
chmod a+rX .
|
||||
|
||||
exec >/dev/null
|
||||
exec 2>&1
|
||||
exec \
|
||||
env - PATH="$PATH" \
|
||||
softlimit \
|
||||
setuidgid "$user" \
|
||||
svlogd -tt "$logdir"
|
4
examples/var_service/ftpd/p_log
Executable file
4
examples/var_service/ftpd/p_log
Executable file
@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
|
||||
cd log/logdir || exit 1
|
||||
cat @* current | $PAGER
|
17
examples/var_service/ftpd/run
Executable file
17
examples/var_service/ftpd/run
Executable file
@ -0,0 +1,17 @@
|
||||
#!/bin/sh
|
||||
|
||||
#exec >/dev/null
|
||||
exec 2>&1
|
||||
exec </dev/null
|
||||
|
||||
user=www
|
||||
user=root
|
||||
|
||||
exec \
|
||||
env - PATH="$PATH" \
|
||||
softlimit \
|
||||
tcpsvd \
|
||||
-vE -l 0 -c 40 \
|
||||
0.0.0.0 21 \
|
||||
setuidgid "$user" \
|
||||
ftpd -vv -t10 /pub/ftpd_root
|
4
examples/var_service/ftpd/w_log
Executable file
4
examples/var_service/ftpd/w_log
Executable file
@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
|
||||
cd log/logdir || exit 1
|
||||
watch -n2 'w=`ttysize w`; h=`ttysize h`; tail -$((h-3)) current 2>&1 | cut -b0-$((w-2))'
|
BIN
examples/var_service/getty_tty1/alt08x16+unimap.fnt
Normal file
BIN
examples/var_service/getty_tty1/alt08x16+unimap.fnt
Normal file
Binary file not shown.
26
examples/var_service/getty_tty1/cfg
Executable file
26
examples/var_service/getty_tty1/cfg
Executable file
@ -0,0 +1,26 @@
|
||||
#!/bin/sh
|
||||
|
||||
if test x"$TERM" = x"" -o x"$TERM" = x"unknown"; then
|
||||
TERM="linux"
|
||||
echo "* Setting TERM='$TERM'"
|
||||
fi
|
||||
export TERM
|
||||
|
||||
ttyname=`tty`
|
||||
ttybase="${ttyname%%[0123456789]*}" # strip numeric tail
|
||||
|
||||
if test x"$ttybase" = x"/dev/vc/" -o x"$ttybase" = x"/dev/tty"; then
|
||||
echo "* Activating Cyrillic KOI8-R -> CP866 font map"
|
||||
echo -ne "\033(K" >"$ttyname"
|
||||
|
||||
echo "* Loading screen font"
|
||||
setfont \
|
||||
-C "$ttyname" \
|
||||
-m "$PWD/koi8r_to_uni.trans" \
|
||||
"$PWD/alt08x16+unimap.fnt" \
|
||||
|| echo "! setfont failure"
|
||||
|
||||
echo "* Loading keymap"
|
||||
loadkeys "$PWD/ru_koi8r.keymap" \
|
||||
|| echo "! loadkeys failure"
|
||||
fi
|
256
examples/var_service/getty_tty1/koi8r_to_uni.trans
Normal file
256
examples/var_service/getty_tty1/koi8r_to_uni.trans
Normal file
@ -0,0 +1,256 @@
|
||||
0x00 U+0000 # NULL (NUL)
|
||||
0x01 U+0001 # START OF HEADING (SOH)
|
||||
0x02 U+0002 # START OF TEXT (STX)
|
||||
0x03 U+0003 # END OF TEXT (ETX)
|
||||
0x04 U+0004 # END OF TRANSMISSION (EOT)
|
||||
0x05 U+0005 # ENQUIRY (ENQ)
|
||||
0x06 U+0006 # ACKNOWLEDGE (ACK)
|
||||
0x07 U+0007 # BELL (BEL)
|
||||
0x08 U+0008 # BACKSPACE (BS)
|
||||
0x09 U+0009 # CHARACTER TABULATION (HT)
|
||||
0x0a U+000A # LINE FEED (LF)
|
||||
0x0b U+000B # LINE TABULATION (VT)
|
||||
0x0c U+000C # FORM FEED (FF)
|
||||
0x0d U+000D # CARRIAGE RETURN (CR)
|
||||
0x0e U+000E # SHIFT OUT (SO)
|
||||
0x0f U+000F # SHIFT IN (SI)
|
||||
0x10 U+0010 # DATALINK ESCAPE (DLE)
|
||||
0x11 U+0011 # DEVICE CONTROL ONE (DC1)
|
||||
0x12 U+0012 # DEVICE CONTROL TWO (DC2)
|
||||
0x13 U+0013 # DEVICE CONTROL THREE (DC3)
|
||||
0x14 U+0014 # DEVICE CONTROL FOUR (DC4)
|
||||
0x15 U+0015 # NEGATIVE ACKNOWLEDGE (NAK)
|
||||
0x16 U+0016 # SYNCHRONOUS IDLE (SYN)
|
||||
0x17 U+0017 # END OF TRANSMISSION BLOCK (ETB)
|
||||
0x18 U+0018 # CANCEL (CAN)
|
||||
0x19 U+0019 # END OF MEDIUM (EM)
|
||||
0x1a U+001A # SUBSTITUTE (SUB)
|
||||
0x1b U+001B # ESCAPE (ESC)
|
||||
0x1c U+001C # FILE SEPARATOR (IS4)
|
||||
0x1d U+001D # GROUP SEPARATOR (IS3)
|
||||
0x1e U+001E # RECORD SEPARATOR (IS2)
|
||||
0x1f U+001F # UNIT SEPARATOR (IS1)
|
||||
0x20 U+0020 # SPACE
|
||||
0x21 U+0021 # EXCLAMATION MARK
|
||||
0x22 U+0022 # QUOTATION MARK
|
||||
0x23 U+0023 # NUMBER SIGN
|
||||
0x24 U+0024 # DOLLAR SIGN
|
||||
0x25 U+0025 # PERCENT SIGN
|
||||
0x26 U+0026 # AMPERSAND
|
||||
0x27 U+0027 # APOSTROPHE
|
||||
0x28 U+0028 # LEFT PARENTHESIS
|
||||
0x29 U+0029 # RIGHT PARENTHESIS
|
||||
0x2a U+002A # ASTERISK
|
||||
0x2b U+002B # PLUS SIGN
|
||||
0x2c U+002C # COMMA
|
||||
0x2d U+002D # HYPHEN-MINUS
|
||||
0x2e U+002E # FULL STOP
|
||||
0x2f U+002F # SOLIDUS
|
||||
0x30 U+0030 # DIGIT ZERO
|
||||
0x31 U+0031 # DIGIT ONE
|
||||
0x32 U+0032 # DIGIT TWO
|
||||
0x33 U+0033 # DIGIT THREE
|
||||
0x34 U+0034 # DIGIT FOUR
|
||||
0x35 U+0035 # DIGIT FIVE
|
||||
0x36 U+0036 # DIGIT SIX
|
||||
0x37 U+0037 # DIGIT SEVEN
|
||||
0x38 U+0038 # DIGIT EIGHT
|
||||
0x39 U+0039 # DIGIT NINE
|
||||
0x3a U+003A # COLON
|
||||
0x3b U+003B # SEMICOLON
|
||||
0x3c U+003C # LESS-THAN SIGN
|
||||
0x3d U+003D # EQUALS SIGN
|
||||
0x3e U+003E # GREATER-THAN SIGN
|
||||
0x3f U+003F # QUESTION MARK
|
||||
0x40 U+0040 # COMMERCIAL AT
|
||||
0x41 U+0041 # LATIN CAPITAL LETTER A
|
||||
0x42 U+0042 # LATIN CAPITAL LETTER B
|
||||
0x43 U+0043 # LATIN CAPITAL LETTER C
|
||||
0x44 U+0044 # LATIN CAPITAL LETTER D
|
||||
0x45 U+0045 # LATIN CAPITAL LETTER E
|
||||
0x46 U+0046 # LATIN CAPITAL LETTER F
|
||||
0x47 U+0047 # LATIN CAPITAL LETTER G
|
||||
0x48 U+0048 # LATIN CAPITAL LETTER H
|
||||
0x49 U+0049 # LATIN CAPITAL LETTER I
|
||||
0x4a U+004A # LATIN CAPITAL LETTER J
|
||||
0x4b U+004B # LATIN CAPITAL LETTER K
|
||||
0x4c U+004C # LATIN CAPITAL LETTER L
|
||||
0x4d U+004D # LATIN CAPITAL LETTER M
|
||||
0x4e U+004E # LATIN CAPITAL LETTER N
|
||||
0x4f U+004F # LATIN CAPITAL LETTER O
|
||||
0x50 U+0050 # LATIN CAPITAL LETTER P
|
||||
0x51 U+0051 # LATIN CAPITAL LETTER Q
|
||||
0x52 U+0052 # LATIN CAPITAL LETTER R
|
||||
0x53 U+0053 # LATIN CAPITAL LETTER S
|
||||
0x54 U+0054 # LATIN CAPITAL LETTER T
|
||||
0x55 U+0055 # LATIN CAPITAL LETTER U
|
||||
0x56 U+0056 # LATIN CAPITAL LETTER V
|
||||
0x57 U+0057 # LATIN CAPITAL LETTER W
|
||||
0x58 U+0058 # LATIN CAPITAL LETTER X
|
||||
0x59 U+0059 # LATIN CAPITAL LETTER Y
|
||||
0x5a U+005A # LATIN CAPITAL LETTER Z
|
||||
0x5b U+005B # LEFT SQUARE BRACKET
|
||||
0x5c U+005C # REVERSE SOLIDUS
|
||||
0x5d U+005D # RIGHT SQUARE BRACKET
|
||||
0x5e U+005E # CIRCUMFLEX ACCENT
|
||||
0x5f U+005F # LOW LINE
|
||||
0x60 U+0060 # GRAVE ACCENT
|
||||
0x61 U+0061 # LATIN SMALL LETTER A
|
||||
0x62 U+0062 # LATIN SMALL LETTER B
|
||||
0x63 U+0063 # LATIN SMALL LETTER C
|
||||
0x64 U+0064 # LATIN SMALL LETTER D
|
||||
0x65 U+0065 # LATIN SMALL LETTER E
|
||||
0x66 U+0066 # LATIN SMALL LETTER F
|
||||
0x67 U+0067 # LATIN SMALL LETTER G
|
||||
0x68 U+0068 # LATIN SMALL LETTER H
|
||||
0x69 U+0069 # LATIN SMALL LETTER I
|
||||
0x6a U+006A # LATIN SMALL LETTER J
|
||||
0x6b U+006B # LATIN SMALL LETTER K
|
||||
0x6c U+006C # LATIN SMALL LETTER L
|
||||
0x6d U+006D # LATIN SMALL LETTER M
|
||||
0x6e U+006E # LATIN SMALL LETTER N
|
||||
0x6f U+006F # LATIN SMALL LETTER O
|
||||
0x70 U+0070 # LATIN SMALL LETTER P
|
||||
0x71 U+0071 # LATIN SMALL LETTER Q
|
||||
0x72 U+0072 # LATIN SMALL LETTER R
|
||||
0x73 U+0073 # LATIN SMALL LETTER S
|
||||
0x74 U+0074 # LATIN SMALL LETTER T
|
||||
0x75 U+0075 # LATIN SMALL LETTER U
|
||||
0x76 U+0076 # LATIN SMALL LETTER V
|
||||
0x77 U+0077 # LATIN SMALL LETTER W
|
||||
0x78 U+0078 # LATIN SMALL LETTER X
|
||||
0x79 U+0079 # LATIN SMALL LETTER Y
|
||||
0x7a U+007A # LATIN SMALL LETTER Z
|
||||
0x7b U+007B # LEFT CURLY BRACKET
|
||||
0x7c U+007C # VERTICAL LINE
|
||||
0x7d U+007D # RIGHT CURLY BRACKET
|
||||
0x7e U+007E # TILDE
|
||||
0x7f U+007F # DELETE (DEL)
|
||||
0x80 U+2500 # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x81 U+2502 # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x82 U+250C # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x83 U+2510 # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x84 U+2514 # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x85 U+2518 # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x86 U+251C # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x87 U+2524 # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x88 U+252C # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x89 U+2534 # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x8a U+253C # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x8b U+2580 # UPPER HALF BLOCK
|
||||
0x8c U+2584 # LOWER HALF BLOCK
|
||||
0x8d U+2588 # FULL BLOCK
|
||||
0x8e U+258C # LEFT HALF BLOCK
|
||||
0x8f U+2590 # RIGHT HALF BLOCK
|
||||
0x90 U+2591 # LIGHT SHADE
|
||||
0x91 U+2592 # MEDIUM SHADE
|
||||
0x92 U+2593 # DARK SHADE
|
||||
0x93 U+2320 # TOP HALF INTEGRAL
|
||||
0x94 U+25A0 # BLACK SQUARE
|
||||
0x95 U+2219 # BULLET OPERATOR
|
||||
0x96 U+221A # SQUARE ROOT
|
||||
0x97 U+2248 # ALMOST EQUAL TO
|
||||
0x98 U+2264 # LESS-THAN OR EQUAL TO
|
||||
0x99 U+2265 # GREATER-THAN OR EQUAL TO
|
||||
0x9a U+00A0 # NO-BREAK SPACE
|
||||
0x9b U+2321 # BOTTOM HALF INTEGRAL
|
||||
0x9c U+00B0 # DEGREE SIGN
|
||||
0x9d U+00B2 # SUPERSCRIPT TWO
|
||||
0x9e U+00B7 # MIDDLE DOT
|
||||
0x9f U+00F7 # DIVISION SIGN
|
||||
0xa0 U+2550 # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0xa1 U+2551 # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0xa2 U+2552 # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0xa3 U+0451 # CYRILLIC SMALL LETTER IO
|
||||
0xa4 U+2553 # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0xa5 U+2554 # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0xa6 U+2555 # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0xa7 U+2556 # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0xa8 U+2557 # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0xa9 U+2558 # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0xaa U+2559 # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0xab U+255A # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0xac U+255B # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0xad U+255C # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0xae U+255D # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0xaf U+255E # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0xb0 U+255F # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0xb1 U+2560 # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0xb2 U+2561 # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0xb3 U+0401 # CYRILLIC CAPITAL LETTER IO
|
||||
0xb4 U+2562 # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0xb5 U+2563 # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0xb6 U+2564 # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0xb7 U+2565 # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0xb8 U+2566 # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0xb9 U+2567 # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0xba U+2568 # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0xbb U+2569 # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0xbc U+256A # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0xbd U+256B # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0xbe U+256C # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0xbf U+00A9 # COPYRIGHT SIGN
|
||||
0xc0 U+044E # CYRILLIC SMALL LETTER YU
|
||||
0xc1 U+0430 # CYRILLIC SMALL LETTER A
|
||||
0xc2 U+0431 # CYRILLIC SMALL LETTER BE
|
||||
0xc3 U+0446 # CYRILLIC SMALL LETTER TSE
|
||||
0xc4 U+0434 # CYRILLIC SMALL LETTER DE
|
||||
0xc5 U+0435 # CYRILLIC SMALL LETTER IE
|
||||
0xc6 U+0444 # CYRILLIC SMALL LETTER EF
|
||||
0xc7 U+0433 # CYRILLIC SMALL LETTER GHE
|
||||
0xc8 U+0445 # CYRILLIC SMALL LETTER HA
|
||||
0xc9 U+0438 # CYRILLIC SMALL LETTER I
|
||||
0xca U+0439 # CYRILLIC SMALL LETTER SHORT I
|
||||
0xcb U+043A # CYRILLIC SMALL LETTER KA
|
||||
0xcc U+043B # CYRILLIC SMALL LETTER EL
|
||||
0xcd U+043C # CYRILLIC SMALL LETTER EM
|
||||
0xce U+043D # CYRILLIC SMALL LETTER EN
|
||||
0xcf U+043E # CYRILLIC SMALL LETTER O
|
||||
0xd0 U+043F # CYRILLIC SMALL LETTER PE
|
||||
0xd1 U+044F # CYRILLIC SMALL LETTER YA
|
||||
0xd2 U+0440 # CYRILLIC SMALL LETTER ER
|
||||
0xd3 U+0441 # CYRILLIC SMALL LETTER ES
|
||||
0xd4 U+0442 # CYRILLIC SMALL LETTER TE
|
||||
0xd5 U+0443 # CYRILLIC SMALL LETTER U
|
||||
0xd6 U+0436 # CYRILLIC SMALL LETTER ZHE
|
||||
0xd7 U+0432 # CYRILLIC SMALL LETTER VE
|
||||
0xd8 U+044C # CYRILLIC SMALL LETTER SOFT SIGN
|
||||
0xd9 U+044B # CYRILLIC SMALL LETTER YERU
|
||||
0xda U+0437 # CYRILLIC SMALL LETTER ZE
|
||||
0xdb U+0448 # CYRILLIC SMALL LETTER SHA
|
||||
0xdc U+044D # CYRILLIC SMALL LETTER E
|
||||
0xdd U+0449 # CYRILLIC SMALL LETTER SHCHA
|
||||
0xde U+0447 # CYRILLIC SMALL LETTER CHE
|
||||
0xdf U+044A # CYRILLIC SMALL LETTER HARD SIGN
|
||||
0xe0 U+042E # CYRILLIC CAPITAL LETTER YU
|
||||
0xe1 U+0410 # CYRILLIC CAPITAL LETTER A
|
||||
0xe2 U+0411 # CYRILLIC CAPITAL LETTER BE
|
||||
0xe3 U+0426 # CYRILLIC CAPITAL LETTER TSE
|
||||
0xe4 U+0414 # CYRILLIC CAPITAL LETTER DE
|
||||
0xe5 U+0415 # CYRILLIC CAPITAL LETTER IE
|
||||
0xe6 U+0424 # CYRILLIC CAPITAL LETTER EF
|
||||
0xe7 U+0413 # CYRILLIC CAPITAL LETTER GHE
|
||||
0xe8 U+0425 # CYRILLIC CAPITAL LETTER HA
|
||||
0xe9 U+0418 # CYRILLIC CAPITAL LETTER I
|
||||
0xea U+0419 # CYRILLIC CAPITAL LETTER SHORT I
|
||||
0xeb U+041A # CYRILLIC CAPITAL LETTER KA
|
||||
0xec U+041B # CYRILLIC CAPITAL LETTER EL
|
||||
0xed U+041C # CYRILLIC CAPITAL LETTER EM
|
||||
0xee U+041D # CYRILLIC CAPITAL LETTER EN
|
||||
0xef U+041E # CYRILLIC CAPITAL LETTER O
|
||||
0xf0 U+041F # CYRILLIC CAPITAL LETTER PE
|
||||
0xf1 U+042F # CYRILLIC CAPITAL LETTER YA
|
||||
0xf2 U+0420 # CYRILLIC CAPITAL LETTER ER
|
||||
0xf3 U+0421 # CYRILLIC CAPITAL LETTER ES
|
||||
0xf4 U+0422 # CYRILLIC CAPITAL LETTER TE
|
||||
0xf5 U+0423 # CYRILLIC CAPITAL LETTER U
|
||||
0xf6 U+0416 # CYRILLIC CAPITAL LETTER ZHE
|
||||
0xf7 U+0412 # CYRILLIC CAPITAL LETTER VE
|
||||
0xf8 U+042C # CYRILLIC CAPITAL LETTER SOFT SIGN
|
||||
0xf9 U+042B # CYRILLIC CAPITAL LETTER YERU
|
||||
0xfa U+0417 # CYRILLIC CAPITAL LETTER ZE
|
||||
0xfb U+0428 # CYRILLIC CAPITAL LETTER SHA
|
||||
0xfc U+042D # CYRILLIC CAPITAL LETTER E
|
||||
0xfd U+0429 # CYRILLIC CAPITAL LETTER SHCHA
|
||||
0xfe U+0427 # CYRILLIC CAPITAL LETTER CHE
|
||||
0xff U+042A # CYRILLIC CAPITAL LETTER HARD SIGN
|
12
examples/var_service/getty_tty1/login.sh
Executable file
12
examples/var_service/getty_tty1/login.sh
Executable file
@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
|
||||
ttyname=`tty`
|
||||
ttybase="${ttyname%%[0123456789]*}" # strip numeric tail
|
||||
|
||||
if test "$ttybase" = "/dev/tty"; then
|
||||
tail="${ttyname:8}"
|
||||
echo "* Setting terminal device's owner to $LOGIN_UID:$LOGIN_GID"
|
||||
chown "$LOGIN_UID:$LOGIN_GID" "/dev/vcs$tail" "/dev/vcsa$tail"
|
||||
fi
|
||||
# We can do this also, but login does it itself
|
||||
# chown "$LOGIN_UID:$LOGIN_GID" "$ttyname"
|
183
examples/var_service/getty_tty1/ru_koi8r.keymap
Normal file
183
examples/var_service/getty_tty1/ru_koi8r.keymap
Normal file
@ -0,0 +1,183 @@
|
||||
keymaps 0,1, 2,3, 4,6, 8,10, 12,14
|
||||
#
|
||||
# This one is for generating koi8r Russian chars
|
||||
# Cyr/Lat switches: RightAlt, Shift+Ctrl, Ctrl+Shift
|
||||
# (last one does not work for dark and obscure reasons 8( )
|
||||
#
|
||||
# plain,shift, plain,shift, ctrl,ctrl alt,alt ctrlalt,ctrlalt
|
||||
# lat-------- cyr-------- lat cyr lat cyr lat cyr
|
||||
#
|
||||
#Shift 1
|
||||
#AltGr (cyr) 2
|
||||
#Control 4
|
||||
#Alt 8
|
||||
#ShiftL 16
|
||||
#ShiftR 32
|
||||
#CtrlL 64
|
||||
#CtrlR 128
|
||||
#============== plain ========= shift========== plain cyr ===== shift cyr ===== ctrl ================== ctrl cyr ============== alt =================== alt cyr =============== ctrlalt =============== ctrlalt cyr ===========
|
||||
keycode 1 = Escape Escape Escape Escape Escape Escape Meta_Escape Meta_Escape SAK SAK
|
||||
keycode 2 = one exclam one exclam exclam exclam Meta_one Meta_one
|
||||
keycode 3 = two at two at nul nul Meta_two Meta_two
|
||||
keycode 4 = three numbersign three numbersign three three Meta_three Meta_three
|
||||
keycode 5 = four dollar four dollar Control_backslash Control_backslash Meta_four Meta_four
|
||||
keycode 6 = five percent five percent Control_bracketright Control_bracketright Meta_five Meta_five
|
||||
keycode 7 = six asciicircum six asciicircum Control_asciicircum Control_asciicircum Meta_six Meta_six
|
||||
keycode 8 = seven ampersand seven ampersand Control_underscore Control_underscore Meta_seven Meta_seven
|
||||
keycode 9 = eight asterisk eight asterisk eight eight Meta_eight Meta_eight
|
||||
keycode 10 = nine parenleft nine parenleft nine nine Meta_nine Meta_nine
|
||||
keycode 11 = zero parenright zero parenright zero zero Meta_zero Meta_zero
|
||||
keycode 12 = minus underscore minus underscore Control_underscore Control_underscore Meta_minus Meta_minus
|
||||
keycode 13 = equal plus equal plus equal equal Meta_equal Meta_equal
|
||||
keycode 14 = Delete Delete Delete Delete BackSpace BackSpace Meta_Delete Meta_Delete
|
||||
keycode 15 = Tab Tab Tab Tab Tab Tab Meta_Tab Meta_Tab
|
||||
keycode 16 = q Q 202 234 Control_q Control_q Meta_q Meta_q Meta_Control_q Meta_Control_q
|
||||
keycode 17 = w W 195 227 Control_w Control_w Meta_w Meta_w Meta_Control_w Meta_Control_w
|
||||
keycode 18 = e E 213 245 Control_e Control_e Meta_e Meta_e Meta_Control_e Meta_Control_e
|
||||
keycode 19 = r R 203 235 Control_r Control_r Meta_r Meta_r Meta_Control_r Meta_Control_r
|
||||
keycode 20 = t T 197 229 Control_t Control_t Meta_t Meta_t Meta_Control_t Meta_Control_t
|
||||
#============== plain ========= shift========== plain cyr ===== shift cyr ===== ctrl ================== ctrl cyr ============== alt =================== alt cyr =============== ctrlalt =============== ctrlalt cyr ===========
|
||||
keycode 21 = y Y 206 238 Control_y Control_y Meta_y Meta_y Meta_Control_y Meta_Control_y
|
||||
keycode 22 = u U 199 231 Control_u Control_u Meta_u Meta_u Meta_Control_u Meta_Control_u
|
||||
keycode 23 = i I 219 251 Control_i Control_i Meta_i Meta_i Meta_Control_i Meta_Control_i
|
||||
keycode 24 = o O 221 253 Control_o Control_o Meta_o Meta_o Meta_Control_o Meta_Control_o
|
||||
keycode 25 = p P 218 250 Control_p Control_p Meta_p Meta_p Meta_Control_p Meta_Control_p
|
||||
keycode 26 = bracketleft braceleft 200 232 Escape Escape Meta_bracketleft Meta_bracketleft
|
||||
keycode 27 = bracketright braceright 223 255 Control_bracketright Control_bracketright
|
||||
keycode 28 = Return
|
||||
# Shift+Ctrl - Cyrillic
|
||||
keycode 29 = Control AltGr_Lock Control AltGr_Lock Control Control Control Control Control Control
|
||||
keycode 30 = a A 198 230 Control_a Control_a Meta_a Meta_a Meta_Control_a Meta_Control_a
|
||||
keycode 31 = s S 217 249 Control_s Control_s Meta_s Meta_s Meta_Control_s Meta_Control_s
|
||||
keycode 32 = d D 215 247 Control_d Control_d Meta_d Meta_d Meta_Control_d Meta_Control_d
|
||||
keycode 33 = f F 193 225 Control_f Control_f Meta_f Meta_f Meta_Control_f Meta_Control_f
|
||||
keycode 34 = g G 208 240 Control_g Control_g Meta_g Meta_g Meta_Control_g Meta_Control_g
|
||||
keycode 35 = h H 210 242 Control_h Control_h Meta_h Meta_h Meta_Control_h Meta_Control_h
|
||||
keycode 36 = j J 207 239 Control_j Control_j Meta_j Meta_j Meta_Control_j Meta_Control_j
|
||||
keycode 37 = k K 204 236 Control_k Control_k Meta_k Meta_k Meta_Control_k Meta_Control_k
|
||||
keycode 38 = l L 196 228 Control_l Control_l Meta_l Meta_l Meta_Control_l Meta_Control_l
|
||||
keycode 39 = semicolon colon 214 246 semicolon semicolon Meta_semicolon Meta_semicolon
|
||||
keycode 40 = apostrophe quotedbl 220 252 Control_g Control_g Meta_apostrophe Meta_apostrophe
|
||||
#============== plain ========= shift========== plain cyr ===== shift cyr ===== ctrl ================== ctrl cyr ============== alt =================== alt cyr =============== ctrlalt =============== ctrlalt cyr ===========
|
||||
keycode 41 = grave asciitilde grave asciitilde nul nul Meta_grave Meta_grave
|
||||
keycode 42 = Shift
|
||||
keycode 43 = backslash bar backslash bar Control_backslash Control_backslash Meta_backslash Meta_backslash
|
||||
keycode 44 = z Z 209 241 Control_z Control_z Meta_z Meta_z Meta_Control_z Meta_Control_z
|
||||
keycode 45 = x X 222 254 Control_x Control_x Meta_x Meta_x Meta_Control_x Meta_Control_x
|
||||
keycode 46 = c C 211 243 Control_c Control_c Meta_c Meta_c Meta_Control_c Meta_Control_c
|
||||
keycode 47 = v V 205 237 Control_v Control_v Meta_v Meta_v Meta_Control_v Meta_Control_v
|
||||
keycode 48 = b B 201 233 Control_b Control_b Meta_b Meta_b Meta_Control_b Meta_Control_b
|
||||
keycode 49 = n N 212 244 Control_n Control_n Meta_n Meta_n Meta_Control_n Meta_Control_n
|
||||
keycode 50 = m M 216 248 Control_m Control_m Meta_m Meta_m Meta_Control_m Meta_Control_m
|
||||
keycode 51 = comma less 194 226 comma comma Meta_comma Meta_comma
|
||||
keycode 52 = period greater 192 224 Compose Compose Meta_period Meta_period
|
||||
keycode 53 = slash question slash question Delete Delete Meta_slash Meta_slash Meta_question Meta_question
|
||||
# Ctrl+Shift - Cyrillic (not working???)
|
||||
keycode 54 = Shift Shift Shift Shift AltGr_Lock AltGr_Lock Shift Shift Shift Shift
|
||||
keycode 55 = KP_Multiply
|
||||
keycode 56 = Alt
|
||||
keycode 57 = space space space space nul nul Meta_space Meta_space
|
||||
keycode 58 = Caps_Lock
|
||||
keycode 59 = F1 F11 F1 F11 F1 F1 Console_1 Console_1 Console_1 Console_1
|
||||
keycode 60 = F2 F12 F2 F12 F2 F2 Console_2 Console_2 Console_2 Console_2
|
||||
#============== plain ========= shift========== plain cyr ===== shift cyr ===== ctrl ================== ctrl cyr ============== alt =================== alt cyr =============== ctrlalt =============== ctrlalt cyr ===========
|
||||
keycode 61 = F3 F13 F3 F13 F3 F3 Console_3 Console_3 Console_3 Console_3
|
||||
keycode 62 = F4 F14 F4 F14 F4 F4 Console_4 Console_4 Console_4 Console_4
|
||||
keycode 63 = F5 F15 F5 F15 F5 F5 Console_5 Console_5 Console_5 Console_5
|
||||
keycode 64 = F6 F16 F6 F16 F6 F6 Console_6 Console_6 Console_6 Console_6
|
||||
keycode 65 = F7 F17 F7 F17 F7 F7 Console_7 Console_7 Console_7 Console_7
|
||||
keycode 66 = F8 F18 F8 F18 F8 F8 Console_8 Console_8 Console_8 Console_8
|
||||
keycode 67 = F9 F19 F9 F19 F9 F9 Console_9 Console_9 Console_9 Console_9
|
||||
keycode 68 = F10 F20 F10 F20 F10 F10 Console_10 Console_10 Console_10 Console_10
|
||||
keycode 69 = Num_Lock Bare_Num_Lock Num_Lock Bare_Num_Lock
|
||||
keycode 70 = Scroll_Lock Show_Memory Scroll_Lock Show_Memory Show_State Show_State
|
||||
keycode 71 = KP_7 KP_7 KP_7 KP_7 KP_7 KP_7 Ascii_7 Ascii_7
|
||||
keycode 72 = KP_8 KP_8 KP_8 KP_8 KP_8 KP_8 Ascii_8 Ascii_8
|
||||
keycode 73 = KP_9 KP_9 KP_9 KP_9 KP_9 KP_9 Ascii_9 Ascii_9
|
||||
keycode 74 = KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract
|
||||
keycode 75 = KP_4 KP_4 KP_4 KP_4 KP_4 KP_4 Ascii_4 Ascii_4
|
||||
keycode 76 = KP_5 KP_5 KP_5 KP_5 KP_5 KP_5 Ascii_5 Ascii_5
|
||||
keycode 77 = KP_6 KP_6 KP_6 KP_6 KP_6 KP_6 Ascii_6 Ascii_6
|
||||
keycode 78 = KP_Add KP_Add KP_Add KP_Add KP_Add KP_Add KP_Add KP_Add
|
||||
keycode 79 = KP_1 KP_1 KP_1 KP_1 KP_1 KP_1 Ascii_1 Ascii_1
|
||||
keycode 80 = KP_2 KP_2 KP_2 KP_2 KP_2 KP_2 Ascii_2 Ascii_2
|
||||
#============== plain ========= shift========== plain cyr ===== shift cyr ===== ctrl ================== ctrl cyr ============== alt =================== alt cyr =============== ctrlalt =============== ctrlalt cyr ===========
|
||||
keycode 81 = KP_3 KP_3 KP_3 KP_3 KP_3 KP_3 Ascii_3 Ascii_3
|
||||
keycode 82 = KP_0 KP_0 KP_0 KP_0 KP_0 KP_0 Ascii_0 Ascii_0
|
||||
keycode 83 = KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period KP_Period Boot Boot
|
||||
keycode 84 = Last_Console
|
||||
keycode 85 =
|
||||
keycode 86 = less greater less greater less less Meta_less Meta_less
|
||||
keycode 87 = F11 F11 F11 F11 F11 F11 Console_11 Console_11 Console_11 Console_11
|
||||
keycode 88 = F12 F12 F12 F12 F12 F12 Console_12 Console_12 Console_12 Console_12
|
||||
keycode 89 =
|
||||
keycode 90 =
|
||||
keycode 91 =
|
||||
keycode 92 =
|
||||
keycode 93 =
|
||||
keycode 94 =
|
||||
keycode 95 =
|
||||
keycode 96 = KP_Enter
|
||||
keycode 97 = Control
|
||||
keycode 98 = KP_Divide
|
||||
keycode 99 = Control_backslash
|
||||
# Right Alt - Cyrillic
|
||||
keycode 100 = AltGr_Lock
|
||||
#============== plain ========= shift========== plain cyr ===== shift cyr ===== ctrl ================== ctrl cyr ============== alt =================== alt cyr =============== ctrlalt =============== ctrlalt cyr ===========
|
||||
keycode 101 = Break
|
||||
keycode 102 = Find
|
||||
keycode 103 = Up
|
||||
keycode 104 = Prior Scroll_Backward Prior Scroll_Backward Prior Prior Prior Prior Prior Prior
|
||||
keycode 105 = Left Left Left Left Left Left Left Left Decr_Console Decr_Console
|
||||
keycode 106 = Right Right Right Right Right Right Right Right Incr_Console Incr_Console
|
||||
keycode 107 = Select
|
||||
keycode 108 = Down
|
||||
keycode 109 = Next Scroll_Forward Next Scroll_Forward Next Next Next Next Next Next
|
||||
keycode 110 = Insert
|
||||
keycode 111 = Remove Remove Remove Remove Remove Remove Remove Remove Boot Boot
|
||||
keycode 112 = Macro
|
||||
keycode 113 = F13
|
||||
keycode 114 = F14
|
||||
keycode 115 = Help
|
||||
keycode 116 = Do
|
||||
keycode 117 = F17
|
||||
keycode 118 = KP_MinPlus
|
||||
keycode 119 = Pause
|
||||
keycode 120 =
|
||||
#============== plain ========= shift========== plain cyr ===== shift cyr ===== ctrl ================== ctrl cyr ============== alt =================== alt cyr =============== ctrlalt =============== ctrlalt cyr ===========
|
||||
keycode 121 =
|
||||
keycode 122 =
|
||||
keycode 123 =
|
||||
keycode 124 =
|
||||
keycode 125 =
|
||||
keycode 126 =
|
||||
keycode 127 =
|
||||
|
||||
string F1 = "\033[[A"
|
||||
string F2 = "\033[[B"
|
||||
string F3 = "\033[[C"
|
||||
string F4 = "\033[[D"
|
||||
string F5 = "\033[[E"
|
||||
string F6 = "\033[17~"
|
||||
string F7 = "\033[18~"
|
||||
string F8 = "\033[19~"
|
||||
string F9 = "\033[20~"
|
||||
string F10 = "\033[21~"
|
||||
string F11 = "\033[23~"
|
||||
string F12 = "\033[24~"
|
||||
string F13 = "\033[25~"
|
||||
string F14 = "\033[26~"
|
||||
string F15 = "\033[28~"
|
||||
string F16 = "\033[29~"
|
||||
string F17 = "\033[31~"
|
||||
string F18 = "\033[32~"
|
||||
string F19 = "\033[33~"
|
||||
string F20 = "\033[34~"
|
||||
string Find = "\033[1~"
|
||||
string Insert = "\033[2~"
|
||||
string Remove = "\033[3~"
|
||||
string Select = "\033[4~"
|
||||
string Prior = "\033[5~"
|
||||
string Next = "\033[6~"
|
||||
string Macro = "\033[M"
|
||||
string Pause = "\033[P"
|
30
examples/var_service/getty_tty1/run
Executable file
30
examples/var_service/getty_tty1/run
Executable file
@ -0,0 +1,30 @@
|
||||
#!/bin/sh
|
||||
|
||||
exec >/dev/null
|
||||
exec 2>&1
|
||||
exec </dev/null
|
||||
|
||||
user=root
|
||||
baud=38400
|
||||
delay=3
|
||||
export TERM=linux
|
||||
|
||||
tty="/dev/${PWD##*/getty_}"
|
||||
|
||||
if ! test -e "$tty"; then
|
||||
exec env - sleep 32000
|
||||
fi
|
||||
|
||||
sleep "$delay"
|
||||
|
||||
chown "$user" "$tty" # - devfs made happy
|
||||
|
||||
exec <"$tty" >"$tty" 2>&1
|
||||
# using . in order to be able to set env (TERM etc) in cfg
|
||||
test -x ./cfg && . ./cfg
|
||||
|
||||
exec \
|
||||
env - "TERM=$TERM" PATH="$PATH" LOGIN_PRE_SUID_SCRIPT="$PWD/login.sh" \
|
||||
softlimit \
|
||||
setuidgid "$user" \
|
||||
getty "$baud" "$tty" "$TERM"
|
15
examples/var_service/gpm/run
Executable file
15
examples/var_service/gpm/run
Executable file
@ -0,0 +1,15 @@
|
||||
#!/bin/sh
|
||||
|
||||
exec >/dev/null
|
||||
exec 2>&1
|
||||
exec </dev/null
|
||||
|
||||
user=root
|
||||
options="-D -2 -m /dev/psaux -t ps2"
|
||||
#options="-D -2 -m /dev/ttyS0 -t bare"
|
||||
|
||||
exec \
|
||||
env - PATH="$PATH" \
|
||||
softlimit \
|
||||
setuidgid "$user" \
|
||||
gpm $options
|
21
examples/var_service/httpd/log/run
Executable file
21
examples/var_service/httpd/log/run
Executable file
@ -0,0 +1,21 @@
|
||||
#!/bin/sh
|
||||
|
||||
user=logger
|
||||
|
||||
logdir="/var/log/service/`(cd ..;basename $PWD)`"
|
||||
mkdir -p "$logdir" 2>/dev/null
|
||||
chown -R "$user": "$logdir"
|
||||
chmod -R go-rwxst,u+rwX "$logdir"
|
||||
rm logdir
|
||||
ln -s "$logdir" logdir
|
||||
|
||||
# make this dir accessible to logger
|
||||
chmod a+rX .
|
||||
|
||||
exec >/dev/null
|
||||
exec 2>&1
|
||||
exec \
|
||||
env - PATH="$PATH" \
|
||||
softlimit \
|
||||
setuidgid "$user" \
|
||||
svlogd -tt "$logdir"
|
4
examples/var_service/httpd/p_log
Executable file
4
examples/var_service/httpd/p_log
Executable file
@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
|
||||
cd log/logdir || exit 1
|
||||
cat @* current | $PAGER
|
18
examples/var_service/httpd/run
Executable file
18
examples/var_service/httpd/run
Executable file
@ -0,0 +1,18 @@
|
||||
#!/bin/sh
|
||||
|
||||
#exec >/dev/null
|
||||
exec 2>&1
|
||||
exec </dev/null
|
||||
|
||||
user=www
|
||||
user=root
|
||||
|
||||
echo "* Starting tcpsvd for httpd [$$]"
|
||||
exec \
|
||||
env - PATH="$PATH" \
|
||||
softlimit \
|
||||
tcpsvd \
|
||||
-v -E -l localhost -c 5 \
|
||||
0 88 \
|
||||
setuidgid "$user" \
|
||||
httpd -vvv -i -h /pub/httpd_root
|
4
examples/var_service/httpd/w_log
Executable file
4
examples/var_service/httpd/w_log
Executable file
@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
|
||||
cd log/logdir || exit 1
|
||||
watch -n2 'w=`ttysize w`; h=`ttysize h`; tail -$((h-3)) current 2>&1 | cut -b0-$((w-2))'
|
18
examples/var_service/inetd/inetd.conf
Normal file
18
examples/var_service/inetd/inetd.conf
Normal file
@ -0,0 +1,18 @@
|
||||
# [ADDR:]service_name must be in /etc/services, or port number
|
||||
# socket_type stream/dgram/raw/rdm/seqpacket
|
||||
# protocol tcp/udp
|
||||
# wait/nowait[.max] wait is usually for udp, nowait for tcp
|
||||
# max: max copies to run
|
||||
# user[.group] or user[:group] user and group to run under
|
||||
# binary program to run
|
||||
# arg0 arg1 arg2... arguments, INCLUDING program name (arg0)
|
||||
|
||||
# serv socket pro w/nw user binary args
|
||||
|
||||
# IPv6
|
||||
555 dgram udp6 wait root echo echo Hello IPv6 udp world
|
||||
# ...with ADDR prefix:
|
||||
::1:444 stream tcp6 nowait root echo echo Hello IPv6 localhost
|
||||
|
||||
# Rarely seen case: tcp *wait* service
|
||||
telnet stream tcp wait root telnetd telnetd -w10
|
21
examples/var_service/inetd/log/run
Executable file
21
examples/var_service/inetd/log/run
Executable file
@ -0,0 +1,21 @@
|
||||
#!/bin/sh
|
||||
|
||||
user=logger
|
||||
|
||||
logdir="/var/log/service/`(cd ..;basename $PWD)`"
|
||||
mkdir -p "$logdir" 2>/dev/null
|
||||
chown -R "$user": "$logdir"
|
||||
chmod -R go-rwxst,u+rwX "$logdir"
|
||||
rm logdir
|
||||
ln -s "$logdir" logdir
|
||||
|
||||
# make this dir accessible to logger
|
||||
chmod a+rX .
|
||||
|
||||
exec >/dev/null
|
||||
exec 2>&1
|
||||
exec \
|
||||
env - PATH="$PATH" \
|
||||
softlimit \
|
||||
setuidgid "$user" \
|
||||
svlogd -tt "$logdir"
|
4
examples/var_service/inetd/p_log
Executable file
4
examples/var_service/inetd/p_log
Executable file
@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
|
||||
cd log/logdir || exit 1
|
||||
cat @* current | $PAGER
|
17
examples/var_service/inetd/run
Executable file
17
examples/var_service/inetd/run
Executable file
@ -0,0 +1,17 @@
|
||||
#!/bin/sh
|
||||
|
||||
#exec >/dev/null
|
||||
exec 2>&1
|
||||
exec </dev/null
|
||||
|
||||
echo "* Starting inetd [$$]"
|
||||
exec \
|
||||
env - PATH="$PATH" \
|
||||
softlimit \
|
||||
inetd -f -e "$PWD/inetd.conf"
|
||||
|
||||
# inetd [-f] [-q len] [conf]
|
||||
# -f Run in foreground
|
||||
# -e Log to stderr (default is syslog)
|
||||
# -q N Set the size of the socket listen queue to N
|
||||
# (default: 128)
|
4
examples/var_service/inetd/w_log
Executable file
4
examples/var_service/inetd/w_log
Executable file
@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
|
||||
cd log/logdir || exit 1
|
||||
watch -n2 'w=`ttysize w`; h=`ttysize h`; tail -$((h-3)) current 2>&1 | cut -b0-$((w-2))'
|
@ -1,21 +1,20 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Since per-process /proc/net/ (-> /proc/self/net/) appeared,
|
||||
# we need to be root
|
||||
user=root
|
||||
tty="/dev/tty9"
|
||||
|
||||
chmod -R a+X . # or else env will moan
|
||||
chown $user: $tty # devfs made happy
|
||||
|
||||
cmd="nmeter '%t %c x %x p%p f %f b %b m %m if%[nif]'"
|
||||
|
||||
exec >/dev/null
|
||||
exec 2>&1
|
||||
exec </dev/null
|
||||
|
||||
# Since per-process /proc/net/ (-> /proc/self/net/) appeared,
|
||||
# we need to be root
|
||||
user="root"
|
||||
tty="/dev/tty9"
|
||||
cmd="nmeter '%t %c x %x p%p f %f b %b m %m if%[nif]'"
|
||||
|
||||
chmod -R a+X . # or else env will moan
|
||||
chown "$user": "$tty" # devfs made happy
|
||||
|
||||
eval exec \
|
||||
setuidgid "$user" \
|
||||
env - PATH="$PATH" \
|
||||
setuidgid "$user" \
|
||||
<"$tty" >"$tty" 2>&1 \
|
||||
$cmd
|
||||
|
Loading…
Reference in New Issue
Block a user