]> bicyclesonthemoon.info Git - ott/bsta/blob - reset.1.pl
reworked Coincidence chat
[ott/bsta] / reset.1.pl
1 ###RUN_PERL: #!/usr/bin/perl
2
3 # reset is generated from reset.1.pl.
4 #
5 # Reset BSTA state
6 #
7 # Copyright (C) 2016 - 2018, 2023  Balthasar SzczepaƄski
8 #
9 # This program is free software: you can redistribute it and/or modify
10 # it under the terms of the GNU Affero General Public License as
11 # published by the Free Software Foundation, either version 3 of the
12 # License, or (at your option) any later version.
13 #
14 # This program is distributed in the hope that it will be useful,
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 # GNU Affero General Public License for more details.
18 #
19 # You should have received a copy of the GNU Affero General Public License
20 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
21
22 use strict;
23 use utf8;
24 use Encode::Locale ('decode_argv');
25 use Encode ('encode', 'decode');
26
27 ###PERL_LIB: use lib /botm/lib/bsta
28 use botm_common (
29         'read_data_file', 'write_data_file',
30 );
31 use bsta_lib (
32         'STATE', 'INTF_STATE', 'CHAT_STATE',
33         'write_index'
34 );
35
36 binmode STDIN,  ':encoding(UTF-8)';
37 binmode STDOUT, ':encoding(UTF-8)';
38 binmode STDERR, ':encoding(UTF-8)';
39 decode_argv();
40
41 ###PERL_DATA_CHAT_PATH:     DATA_CHAT_PATH     = /botm/data/bsta/chat
42 ###PERL_DATA_SETTINGS_PATH: DATA_SETTINGS_PATH = /botm/data/bsta/state
43 ###PERL_DATA_STATE_PATH:    DATA_STATE_PATH    = /botm/data/bsta/state
44 ###PERL_DATA_STORY_PATH:    DATA_STORY_PATH    = /botm/data/bsta/story
45
46 ###PERL_RESET_PASSWORD:     RESET_PASSWORD     = ''
47
48 my %story;
49 my %state;
50 my %chat;
51 my %settings;
52
53 delete @ENV{qw(IFS CDPATH ENV BASH_ENV)};
54 ###PERL_SET_PATH: $ENV{'PATH'} = /usr/local/bin:/usr/bin:/bin;
55
56 %settings = read_data_file(DATA_SETTINGS_PATH());
57 unless (
58         ($ARGV[0] ne '') && (
59                 ($ARGV[0] eq $settings{'password'}) ||
60                 ($ARGV[0] eq RESET_PASSWORD())
61         )
62 ) {
63         print STDERR "Wrong password; no reset.\n";
64         exit 1;
65 }
66
67 %state = (
68         'state' => STATE->{'inactive'},
69         'last'  => 0,
70         'ongtime' => '',
71         'nextong' => '',
72         'ip1' => '',
73         'ip2' => '',
74         'ip3' => ''
75 );
76 %story = (
77         'id'      => 0,
78         'letter'  => '',
79         'lastip'  => '0.0.0.0',
80         'content' => '',
81         'pass'    => 0,
82         'state'   => INTF_STATE->{'X'}
83 );
84 %chat = (
85         'id'      => 0,
86         'state'   => CHAT_STATE->{'disconnected'},
87         'content' => ''
88 );
89
90 write_data_file(DATA_STATE_PATH(), '', '', \%state);
91 write_data_file(DATA_STORY_PATH(), '', '', \%story);
92 write_data_file(DATA_CHAT_PATH() , '', '', \%chat);
93
94 write_index(
95         \%state,
96         \%settings,
97         $story{'pass'},
98         $story{'state'},
99         0 # pause
100 );