# ============================================================================
# Fisier de configurare CService (Serviciul de Canale) — Underchat
# ============================================================================
# $Id: cservice.example.conf.in,v 1.9 2005/12/06 18:12:44 kewlio Exp $
#
# Acest fisier controleaza comportamentul botului X (CService).
# Toate setarile sunt documentate mai jos in limba romana.
# ============================================================================

# ============================================================================
# SECTIUNEA 1: CONEXIUNEA LA BAZA DE DATE (PostgreSQL)
# ============================================================================

# Adresa IP sau hostname-ul serverului PostgreSQL.
# Botul X se conecteaza la aceasta adresa pentru a citi/scrie datele.
sql_host = 10.1.100.252

# Portul pe care asculta serverul PostgreSQL (implicit: 5432).
sql_port = 5432

# Numele bazei de date.
# Baza se creeaza din sablonul doc/cservice.sql.
sql_db = cservice

# Numele de utilizator pentru autentificarea la PostgreSQL.
sql_user = gnuworld

# Parola pentru autentificarea la PostgreSQL.
sql_pass = foo

# ============================================================================
# SECTIUNEA 2: IDENTITATEA BOTULUI PE RETEA
# ============================================================================

# Nickname-ul botului (cum apare pe retea).
nickname = X

# Username-ul botului (partea de dinaintea @ in user@host).
username = cservice

# Hostname-ul botului (partea de dupa @ in user@host).
hostname = underchat.org

# Descrierea (realname/GECOS) — apare la /whois.
userdescription = For help type: /msg X help

# Modurile utilizatorului setate la conectare.
# +i = invizibil, +d = nu primeste mesaje de canal, +k = serviciu (nu poate fi ucis).
mode = +idk

# ============================================================================
# SECTIUNEA 3: CANALE DE ADMINISTRARE SI NOTIFICARI
# ============================================================================

# URL-ul paginii web pentru vizualizarea aplicatiilor de canale in asteptare.
pending_page_url = http://cservice.underchat.org/live/view_app.php

# Canalul unde se trimit notificari despre flood, avertismente si exceptii.
# Toate alertele de securitate ale botului ajung aici.
relay_channel = #CSC

# Canalul pentru informatii utile dar mai putin urgente
# (cunoscut si ca "canalul de relay al utilizatorilor privilegiati").
# Mai putin zgomotos decat debug_channel.
priv_relay_channel = #CSC

# Canalul pentru informatii de depanare (debug).
# Foarte detaliat — poate fi deranjant, folosit doar de dezvoltatori.
debug_channel = #CSC

# Canalul programatorilor.
# Se foloseste pentru a extrage nivelurile de acces ale dezvoltatorilor.
coder_channel = #CSC

# ============================================================================
# SECTIUNEA 4: INTERVALE DE VERIFICARE SI TEMPORIZARE
# ============================================================================

# La cate secunde verifica botul baza de date pentru actualizari.
# Valoare curenta: la fiecare 3 minute (180s).
update_interval = 180

# Durata ferestrei de monitorizare a flood-ului (in secunde).
# Botul numara mesajele primite/trimise in aceasta perioada.
flood_duration = 30

# Pragul de flood la intrare (input).
# Daca un utilizator acumuleaza 3000 de puncte in 'flood_duration' secunde,
# este considerat flood si va fi ignorat.
input_flood = 3000

# Pragul de flood la iesire (output).
# Daca botul trimite mai mult de 20480 octeti (20 KB) in 'flood_duration' secunde,
# limiteaza traficul de iesire.
output_flood = 20480

# Durata minima (in secunde) inainte de a seta un topic intr-un canal activ.
# Previne schimbarea prea frecventa a topicului. Valoare curenta: 30 minute.
topic_duration = 1800

# La cate secunde verifica botul conturile de utilizator inactive din memorie.
# Valoare curenta: la fiecare ora (3600s).
expire_interval = 3600

# Cat timp (in secunde) trebuie sa fie inactiv un cont inainte de a fi
# scos din cache (memoria rapida). Valoare curenta: 1 ora.
cache_interval = 3600

# La cate secunde verifica si salveaza botul modificarile la canalele
# aflate in asteptare (pending). Valoare curenta: 30 minute.
pending_duration = 1800

# La cate secunde verifica botul daca conexiunea la baza de date
# este inca activa. Valoare curenta: la fiecare 10 secunde.
connection_check_frequency = 10

# De cate ori incearca botul sa se reconecteze la baza de date
# (la fiecare 'connection_check_frequency' secunde) inainte de a renunta
# si a se opri complet. Valoare curenta: 5 incercari.
connection_retry_total = 5

# La cate secunde verifica botul canalele cu limita flotanta (floating-limit)
# pentru a vedea daca trebuie actualizata limita.
# Nota: 30s este o valoare buna. Folositi 60s daca aveti multe canale
# si CPU limitat.
limit_check = 30

# Cate secunde asteapta botul dupa pornire inainte de a permite login-uri.
# Util pe retele aglomerate cu burst mare — lasa lucrurile sa se stabilizeze
# pentru a reduce incarcarea bazei de date.
login_delay = 5

# ============================================================================
# SECTIUNEA 5: SISTEM DE NOTE (MESAJE INTRE UTILIZATORI)
# ============================================================================

# Perioada (in secunde) in care se verifica daca cineva a trimis prea multe note.
# Valoare curenta: 1 ora.
note_duration = 3600

# Numarul maxim de note permise in perioada 'note_duration'.
# Exemplu: maximum 5 note pe ora.
note_limit = 5

# Cate note pot fi stocate simultan pentru un utilizator.
# 0 este interzis (se va folosi 3 implicit).
max_notes = 30;

# ============================================================================
# SECTIUNEA 6: PRE-INCARCARE SI CACHE
# ============================================================================

# Pre-incarca conturile de utilizator care au fost active in ultimele X zile.
# La pornire, botul incarca in memorie toti utilizatorii care s-au autentificat
# in ultimele 'preload_user_days' zile, pentru a evita interogari masive la
# baza de date in timpul burst-ului initial (sincronizare retea).
preload_user_days = 1

# ============================================================================
# SECTIUNEA 7: JURNALIZARE (LOGURI)
# ============================================================================

# Fisierul de jurnal pentru comenzile administratorilor.
# Inregistreaza toate comenzile executate de administratori.
admin_logfile = admin.log

# Fisierul de jurnal pentru TOATE comenzile, de la toti utilizatorii.
# Necesita USE_COMMAND_LOG activat in cservice_config.h la compilare.
command_logfile = cs.log

# ============================================================================
# SECTIUNEA 8: COMANDA HELLO (INREGISTRARE CONT NOU)
# ============================================================================

# Perioada de blocare (in secunde) pentru comanda HELLO.
# Functioneaza doar daca ALLOW_HELLO este definit in cservice_config.h.
# Previne abuzul prin flood de comenzi HELLO.
# Valoare curenta: 1 ora — un utilizator poate da HELLO o data pe ora.
hello_block_period = 3600

# Daca este setat pe 1, parola generata pentru contul nou va fi trimisa pe email.
# Daca este setat pe 0, parola este afisata direct utilizatorului.
# IMPORTANT: pachetul mailutils sau mailx trebuie instalat pe sistem!
hello_sendmail_enabled = 0

# Adresa de email a expeditorului pentru emailurile trimise la inregistrarea
# unui cont nou (campul "From:").
sendmail_from = cservice@underchat.org

# ============================================================================
# SECTIUNEA 9: RELAY WEB SI COMPORTAMENT CANALE
# ============================================================================

# La cate secunde verifica botul mesaje noi de la relay-ul web
# (interfata web de administrare).
webrelay_interval = 10;

# Dupa cate secunde de inactivitate botul paraseste un canal.
# Se iau in calcul doar intrarile/iesirile (JOIN/PART), nu mesajele (PRIVMSG).
# Valoare curenta: 2 zile (172800 secunde).
part_idle_chan = 172800

# ============================================================================
# SECTIUNEA 10: AUTENTIFICARE TOTP (PAROLA UNICA BAZATA PE TIMP)
# ============================================================================

# Activeaza/Dezactiveaza autentificarea TOTP (Two-Factor Authentication).
# Trebuie activat si in mod.cservice/cservice_config.h la compilare.
# 1 = TOTP activat, 0 = TOTP dezactivat.
enable_totp = 0

# ============================================================================
# SECTIUNEA 11: EXPIRARE CONTURI SI CANALE (MIA — Missing In Action)
# ============================================================================

# Dupa cate zile de inactivitate expira conturile de utilizator.
# 0 = nu expira niciodata.
# Valoare curenta: 365 zile (1 an).
users_expire_days = 365

# Dupa cate zile de absenta a managerului se seteaza flag-ul MIA pe canal.
# MIA = "Missing In Action" (Manager absent).
# 0 = nu se seteaza niciodata.
# Valoare curenta: 90 zile (3 luni).
MIA_start_days = 90

# Dupa cate zile de la setarea flag-ului MIA se sterge (purge) canalul.
# Valoare curenta: 100 zile.
MIA_end_days = 100

# La cate ore verifica botul baza de date pentru utilizatori inactivi.
# Nu poate fi 0 — implicit 8 ore.
# Valoare curenta: la fiecare ora.
users_db_idle = 1

# La cate ore verifica botul baza de date pentru canale cu manageri absenti.
# Nu poate fi 0 — implicit 3 ore.
# Valoare curenta: la fiecare ora.
channels_db_idle = 1

# Lungimea unei ore in secunde.
# Se aplica doar functionalitatilor noi de expirare utilizatori/canale.
# Nu poate fi 0 (se va folosi 1 implicit).
hour_seconds = 3600

# Lungimea unei zile in secunde.
# Se aplica doar functionalitatilor noi de expirare utilizatori/canale.
# Nu poate fi 0 (se va folosi 1 implicit).
day_seconds = 86400

# Descrierea afisata cand incepe perioada MIA (managerul nu s-a autentificat).
MIA_start_desc = Manager has failed to login. To vote for new manager send mail to cservice@underchat.org

# URL-ul MIA — informatii suplimentare.
MIA_URL = Only 400+ Ops

# Descrierea afisata cand se termina perioada MIA (managerul s-a autentificat din nou).
MIA_end_desc = Manager has logged in. This was the last warning for failure to login

# ============================================================================
# SECTIUNEA 12: JUDECATORUL (THE JUDGE) — Sistem automat de aprobare canale
# ============================================================================
# Aceste setari controleaza procesul automat de inregistrare a canalelor noi.
# Utilizatorii aplica pentru un canal, aduna sustinatori, iar "Judecatorul"
# decide automat daca aplicatia este aprobata.
# ============================================================================

# Numarul minim de sustinatori necesari pentru o aplicatie de canal.
required_supporters = 2

# Lungimea unei "zile de judecator" in secunde (folosit pentru testare rapida).
# Valoare normala ar fi 86400 (o zi reala).
# Valoare curenta: 360s (6 minute — probabil pentru teste).
judge_day_seconds = 360

# Cate zile trebuie sa aiba un cont inainte de a putea inregistra un canal.
min_days_before_reg = 1

# Cate zile trebuie sa aiba un cont inainte de a putea sustine o aplicatie.
min_days_before_support = 1

# Cate aplicatii de canale poate sustine un utilizator simultan.
max_concurrent_supports = 3

# Cate zile este blocat un utilizator de la inregistrare daca nu aduna
# suficienti sustinatori.
noreg_days_on_nosupport = 1

# Daca este 1, aplicatia este respinsa automat daca utilizatorul are
# flag de frauda. 0 = nu se respinge automat.
reject_app_on_userfraud = 1

# Daca este 1, se declanseaza o recenzie (review) cand cineva face obiectie
# la o aplicatie.
rewiev_on_object = 1

# Dupa cate unitati de timp expira recenziile (review-urile).
rewievs_expire_time = 100

# Dupa cate unitati de timp expira aplicatiile aflate in asteptare (pending).
pendings_expire_time = 30

# Numarul maxim de zile pentru procesul de aplicare.
max_days = 3

# Numarul minim de intrari unice (utilizatori diferiti) necesare in canal.
unique_joins = 5

# Numarul total minim de intrari (JOIN-uri) necesare in canal.
joins = 10

# Numarul minim de sustinatori.
min_supporters = 2

# Numarul minim de intrari in canal cerut fiecarui sustinator.
min_supporters_joins = 2

# Cu cate zile inainte de expirare se trimit notificari.
notify_days = 2

# Cate zile au sustinatorii la dispozitie pentru a-si confirma sustinerea.
support_days = 1

# ID-ul utilizatorului CService care actioneaza ca "reviewer" (examinator).
reviewer_id = 1

# ============================================================================
# SECTIUNEA 13: MESAJE DE BUNA-VENIRE PENTRU CANALE NOI
# ============================================================================

# Mesajul trimis pe canal la acceptarea unei aplicatii noi.
# %s se inlocuieste cu numele canalului.
# Pentru dezactivare, folositi '' (gol).
welcome_newchan_message = Congratulations! Channel %s has been registered!

# Topicul setat automat pe un canal nou acceptat.
# Se aplica doar daca canalul nu are deja un topic.
# Pentru dezactivare, folositi '' (gol).
# TOPIC_TRACK trebuie definit (#define) in \include\gnuworld_config.h.
welcome_newchan_topic = *** Congratulations! Your channel application has been accepted! ***

# ============================================================================
# SECTIUNEA 14: HOSTNAME-URI REZERVATE / RESTRICTIONATE
# ============================================================================
# Hostname-uri care nu pot fi setate de utilizatorii obisnuiti.
# Se accepta wildcard (caractere de inlocuire, ex: *.underchat.org).
# Hostname-ul botului si sufixul de host ascuns se adauga automat.
#