Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/isida/3.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordiSabler <dissy@ya.ru>2014-01-08 00:29:45 +0400
committerdiSabler <dissy@ya.ru>2014-01-08 00:29:45 +0400
commit6b7a7899f7515bd247dec15a4b4423a4ed47207d (patch)
tree096c96a913d8f5f610863ecfe80ab1920cf54df6
parent0f493088560be8b3120b2327851c865eb03847d0 (diff)
add: action for visitors by timeout
-rw-r--r--data/locales/ru.txt13
-rw-r--r--data/locales/ua.txt8
-rw-r--r--plugins/main.py4
-rw-r--r--plugins/muc.py30
4 files changed, 43 insertions, 12 deletions
diff --git a/data/locales/ru.txt b/data/locales/ru.txt
index b8194d6..e9752cd 100644
--- a/data/locales/ru.txt
+++ b/data/locales/ru.txt
@@ -1115,6 +1115,7 @@ just passed! только прошло!
Updated: %s Обновлено: %s
Command is locked! Команда заблокирована!
I don't know %s Я не знаю кто такой %s
+Too long was without voice! Слишком долго был без голоса!
Ban user. Забанить участника.
Ban user by jid. Забанить участника по jid.
Unban user. Разбанить участника
@@ -1484,6 +1485,8 @@ Censor muc filter is %s Действия muc-цензора: %s
Censor filter Muc-цензор
Blacklist %s Чёрный список %s
Blacklist for caps Чёрный список для капсов
+Time for visitors action %s Время для действия над гостем %s
+Time for visitors action Время для действия над гостем
Type of list %s Тип списка %s
Type of list for caps Тип списка для капсов
Bomb. Action for bomb explode %s Bomb. Действие при взрыве: %s
@@ -1514,6 +1517,8 @@ Adblock muc filter is %s Блокировка рекламы: %s
Adblock filter Фильтр блокировки рекламы
Karma. Moderator role when karma is higher than %s Наделять полномочиями модератора при повышении кармы до %s
Give a moderator role when karma is higher than defined value Наделять полномочиями модератора при повышении кармы выше заданного значения
+Hash. Time to disable action %s Хеш. Время отключения действия: %s
+Time to disable action Время отключения действия при повышенной активности хеша
Custom rules for censor is %s Правила для пользовательского цензора %s
Custom rules for censor Правила для пользовательского цензора
Bomb. Reason %s Bomb. Причина с которой будет действие: %s
@@ -1568,8 +1573,8 @@ Hash. Action for already joined %s Хеш. Действие для уже под
Action for already joined Действие для уже подключенных клиентов
Bomb. Allow random unexplosive bombs %s Bomb. Иногда не взрывать бомбы %s
Allow some times take unexplosive bombs Иногда не взрывать бомбы
-Hash. Time to disable action %s Хеш. Время отключения действия: %s
-Time to disable action Время отключения действия при повышенной активности хеша
+Action for visitors is %s Действие над гостем %s
+Action for visitors Действие над гостем
Action for invalid items %s Действие для некорректных элементов %s
Action for invalid items Действие для некорректных элементов
Mute all public messages %s Подавление всех публичных сообщений %s
@@ -1820,5 +1825,5 @@ Youtube settings Настройки youtube
API settings Настройки API
# write locale file: ru.txt
-# total: 1492
-# missed translations: 9
+# total: 1497
+# missed translations: 5
diff --git a/data/locales/ua.txt b/data/locales/ua.txt
index 63c29cf..cca195f 100644
--- a/data/locales/ua.txt
+++ b/data/locales/ua.txt
@@ -1514,6 +1514,8 @@ Adblock muc filter is %s Блокування реклами: %s
Adblock filter Фільтр блокування реклами
Karma. Moderator role when karma is higher than %s Надавати повноваження модератора при підвищенні карми до %s
Give a moderator role when karma is higher than defined value Надавати повноваження модератора при підвищенні карми вище вказаного значення
+Hash. Time to disable action %s Хеш. Час відключення дії: %s
+Time to disable action Час відключення дії при підвищеній активності хешу
Custom rules for censor is %s Правила для користувацького цензора %s
Custom rules for censor Правила для користувацького цензора
Bomb. Reason %s Bomb. Причина з якою буде дія: %s
@@ -1568,8 +1570,6 @@ Hash. Action for already joined %s Хеш. Дія для вже підключе
Action for already joined Дія для вже підключених клієнтів
Bomb. Allow random unexplosive bombs %s Bomb. Іноді не підривати бомби: %s
Allow some times take unexplosive bombs Іноді не підривати бомби
-Hash. Time to disable action %s Хеш. Час відключення дії: %s
-Time to disable action Час відключення дії при підвищеній активності хешу
Action for invalid items %s Дія для некоректних елементів %s
Action for invalid items Дія для некоректних елементів
Mute all public messages %s Придушення всих публічних повідомленнь %s
@@ -1820,5 +1820,5 @@ Youtube settings Налаштування Youtube
API settings Налаштування API
# write locale file: ua.txt
-# total: 1492
-# missed translations: 9
+# total: 1497
+# missed translations: 5
diff --git a/plugins/main.py b/plugins/main.py
index db4aea0..708ec86 100644
--- a/plugins/main.py
+++ b/plugins/main.py
@@ -1557,6 +1557,8 @@ config_prefs = {'url_title': ['Url title is %s', 'Automatic show title of urls i
'set_default_locale': ['Set default locale %s', 'Ignore users locale and use one locale for all users in room', ['off','en'] + [tmp[:-4] for tmp in os.listdir(loc_folder[:-6]) if tmp[-4:]=='.txt'], 'off'],
'store_users_url': ['Store Users URL %s', 'Store Users URL', [True,False], True],
'trusted_servers': ['Trusted servers %s', 'Servers list marked as trusted. They are excluded from any actions with servers', None, ''],
+ 'visitor_action': ['Action for visitors is %s', 'Action for visitors', ['off','kick','ban'], 'off'],
+ 'visitor_action_time': ['Time for visitors action %s', 'Time for visitors action', None, '1800'],
# MUC-Filter messages
@@ -1681,7 +1683,7 @@ config_prefs = {'url_title': ['Url title is %s', 'Automatic show title of urls i
config_group_other = ['Other settings','#room-other',
['url_title','parse_define','clear_answer','smiles','autoturn','make_stanza_jid_count','content_length','acl_multiaction',
- 'paste_xhtml_images','set_default_locale','store_users_url','trusted_servers'],None]
+ 'paste_xhtml_images','set_default_locale','store_users_url','trusted_servers','visitor_action','visitor_action_time'],None]
config_group_censor = ['Censor settings','#room-censor',
['censor','censor_warning','censor_action_member','censor_action_non_member',
diff --git a/plugins/muc.py b/plugins/muc.py
index 5dcd5d7..f42faa9 100644
--- a/plugins/muc.py
+++ b/plugins/muc.py
@@ -21,6 +21,8 @@
# #
# --------------------------------------------------------------------------- #
+visitors_list = {}
+
# -------------- affiliation -----------------
def global_ban(type, jid, nick, text):
@@ -193,9 +195,31 @@ def check_unban():
for t in ul: sender(xmpp.Node('iq', {'id': get_id(), 'type': 'set', 'to':t[0]}, payload = [xmpp.Node('query', {'xmlns': xmpp.NS_MUC_ADMIN},[xmpp.Node('item',{'affiliation':'none', 'jid':getRoom(unicode(t[1]))},[])])]))
cur_execute('delete from tmp_ban where time<%s;',(tt,))
-global execute, timer
-
-timer = [check_unban]
+def check_visitor():
+ global visitors_list
+ ITT = int(time.time())
+ for t in visitors_list:
+ room = t.split('/')[0]
+ VISITOR_ACT = get_config(getRoom(room),'visitor_action')
+ if VISITOR_ACT != 'off' and ITT > visitors_list[t]:
+ reason = [xmpp.Node('reason',{},L('Too long was without voice!',t))]
+ if VISITOR_ACT == 'kick': sender(xmpp.Node('iq', {'id': get_id(), 'type': 'set', 'to':room}, payload = [xmpp.Node('query', {'xmlns': xmpp.NS_MUC_ADMIN},[xmpp.Node('item',{'role':'none', 'nick':t.split('/',1)[1]},reason)])]))
+ else: sender(xmpp.Node('iq', {'id': get_id(), 'type': 'set', 'to':room}, payload = [xmpp.Node('query', {'xmlns': xmpp.NS_MUC_ADMIN},[xmpp.Node('item',{'affiliation':'outcast', 'jid':get_jid_by_nick(t.split('/',1))},reason)])]))
+
+def visitor_presence(room,jid,nick,type,mass):
+ global visitors_list
+ if getRoom(jid) == getRoom(Settings['jid']): return
+ was_joined = not mass[7] or is_start
+ if type == 'error': return
+ elif type == 'unavailable':
+ try: visitors_list.pop('%s/%s' % (room,nick))
+ except: pass
+ if mass[1] == 'visitor': visitors_list['%s/%s' % (room,nick)] = int(time.time()) + get_config_int(getRoom(room),'visitor_action_time')
+
+global execute, timer, presence_control
+
+timer = [check_unban,check_visitor]
+presence_control = [visitor_presence]
execute = [(7, 'ban_past', muc_ban_past, 2, 'Ban user.'),
(7, 'ban', muc_ban, 2, 'Ban user.'),