Dmitry Novikov 8 years ago
parent
commit
892f680989
  1. 4
      abonapp/templates/abonapp/editAbon.html
  2. 4
      abonapp/templates/abonapp/group_list.html
  3. 34
      abonapp/templates/abonapp/peoples.html
  4. 18
      accounts_app/templates/accounts/acc_list.html
  5. 15
      accounts_app/templates/accounts/login.html
  6. 4
      agent/commands/dhcp.py
  7. 22
      agent/mod_mikrotik.py
  8. 2
      clientsideapp/templates/clientsideapp/ext.html
  9. 2
      devapp/models.py
  10. 2
      devapp/templates/devapp/custom_dev_page/onu.html
  11. 44
      dhcp_lever.py
  12. 5
      msg_app/admin.py
  13. 2
      msg_app/locale/ru/LC_MESSAGES/django.po
  14. 9
      mydefs.py
  15. 71
      queue_mngr.py
  16. 2
      systemd_units/djing_telebot.service
  17. 2
      telebot.py
  18. 2
      templates/all_base.html
  19. 4
      templates/base.html

4
abonapp/templates/abonapp/editAbon.html

@ -4,7 +4,7 @@
{% block content %} {% block content %}
<div class="row"> <div class="row">
<div class="col-sm-6">
<div class="col-sm-6 col-xs-8">
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading"> <div class="panel-heading">
<h3 class="panel-title">{% trans 'Change subscriber' %}</h3> <h3 class="panel-title">{% trans 'Change subscriber' %}</h3>
@ -131,7 +131,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="col-sm-6">
<div class="col-sm-6 col-xs-4">
{% if perms.abonapp.change_abon %} {% if perms.abonapp.change_abon %}
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading"> <div class="panel-heading">

4
abonapp/templates/abonapp/group_list.html

@ -23,7 +23,7 @@
</a> </a>
{% if order_by == 'title' %}<span class="glyphicon glyphicon-filter"></span>{% endif %} {% if order_by == 'title' %}<span class="glyphicon glyphicon-filter"></span>{% endif %}
</th> </th>
<th width="100">
<th width="100" class="hidden-xs">
{% trans 'Number of subscribers' %} {% trans 'Number of subscribers' %}
</th> </th>
<th width="100">#</th> <th width="100">#</th>
@ -34,7 +34,7 @@
<tr> <tr>
<td>{{ gr.pk }}</td> <td>{{ gr.pk }}</td>
<td><a href="{% url 'abonapp:people_list' gr.pk %}">{{ gr.title }}</a></td> <td><a href="{% url 'abonapp:people_list' gr.pk %}">{{ gr.title }}</a></td>
<td>{{ gr.usercount }}</td>
<td class="hidden-xs">{{ gr.usercount }}</td>
<td class="btn-group"> <td class="btn-group">
{% if perms.abonapp.delete_abongroup %} {% if perms.abonapp.delete_abongroup %}
{% if gr.usercount == 0 %} {% if gr.usercount == 0 %}

34
abonapp/templates/abonapp/peoples.html

@ -14,52 +14,52 @@
<h3>{% trans 'The people in the selected group' %}</h3> <h3>{% trans 'The people in the selected group' %}</h3>
<div class="row"> <div class="row">
<div class="col-lg-10">
<div class="col-lg-10 col-md-8">
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-striped table-bordered"> <table class="table table-striped table-bordered">
<thead> <thead>
<tr> <tr>
<th>#</th>
<th>
<th class="hidden-xs">#</th>
<th class="col-xs-1">
<a href="{% url 'abonapp:people_list' abon_group.pk %}?{% url_replace request order_by=username dir=dir|default:"down" %}"> <a href="{% url 'abonapp:people_list' abon_group.pk %}?{% url_replace request order_by=username dir=dir|default:"down" %}">
{% trans 'Sub' %} {% trans 'Sub' %}
</a> </a>
{% if order_by == 'username' %}<span class="glyphicon glyphicon-filter"></span>{% endif %} {% if order_by == 'username' %}<span class="glyphicon glyphicon-filter"></span>{% endif %}
</th> </th>
<th>{% trans 'Last traffic' %}</th>
<th>
<th class="hidden-xs">{% trans 'Last traffic' %}</th>
<th class="col-xs-1 hidden-md">
<a href="{% url 'abonapp:people_list' abon_group.pk %}?{% url_replace request order_by=ip_address dir=dir|default:"down" %}"> <a href="{% url 'abonapp:people_list' abon_group.pk %}?{% url_replace request order_by=ip_address dir=dir|default:"down" %}">
{% trans 'Ip address' %} {% trans 'Ip address' %}
</a> </a>
{% if order_by == 'ip_address' %}<span class="glyphicon glyphicon-filter"></span>{% endif %} {% if order_by == 'ip_address' %}<span class="glyphicon glyphicon-filter"></span>{% endif %}
</th> </th>
<th>
<th class="col-xs-2">
<a href="{% url 'abonapp:people_list' abon_group.pk %}?{% url_replace request order_by=fio dir=dir|default:"down" %}"> <a href="{% url 'abonapp:people_list' abon_group.pk %}?{% url_replace request order_by=fio dir=dir|default:"down" %}">
{% trans 'fio' %} {% trans 'fio' %}
</a> </a>
{% if order_by == 'fio' %}<span class="glyphicon glyphicon-filter"></span>{% endif %} {% if order_by == 'fio' %}<span class="glyphicon glyphicon-filter"></span>{% endif %}
</th> </th>
<th>
<th class="col-xs-2">
<a href="{% url 'abonapp:people_list' abon_group.pk %}?{% url_replace request order_by=street dir=dir|default:"down" %}"> <a href="{% url 'abonapp:people_list' abon_group.pk %}?{% url_replace request order_by=street dir=dir|default:"down" %}">
{% trans 'Street' %} {% trans 'Street' %}
</a> </a>
{% if order_by == 'street' %}<span class="glyphicon glyphicon-filter"></span>{% endif %} {% if order_by == 'street' %}<span class="glyphicon glyphicon-filter"></span>{% endif %}
</th> </th>
<th width="100">
<th class="col-xs-1">
<a href="{% url 'abonapp:people_list' abon_group.pk %}?{% url_replace request order_by=house dir=dir|default:"down" %}"> <a href="{% url 'abonapp:people_list' abon_group.pk %}?{% url_replace request order_by=house dir=dir|default:"down" %}">
{% trans 'Apartment' %} {% trans 'Apartment' %}
</a> </a>
{% if order_by == 'house' %}<span class="glyphicon glyphicon-filter"></span>{% endif %} {% if order_by == 'house' %}<span class="glyphicon glyphicon-filter"></span>{% endif %}
</th> </th>
<th width="150">{% trans 'Telephone' %}</th>
<th width="150">{% trans 'Service' %}</th>
<th width="50">
<th class="col-xs-2">{% trans 'Telephone' %}</th>
<th class="col-xs-2">{% trans 'Service' %}</th>
<th class="hidden-xs col-sm-1">
<a href="{% url 'abonapp:people_list' abon_group.pk %}?{% url_replace request order_by=ballance dir=dir|default:"down" %}"> <a href="{% url 'abonapp:people_list' abon_group.pk %}?{% url_replace request order_by=ballance dir=dir|default:"down" %}">
{% trans 'Ballance' %} {% trans 'Ballance' %}
</a> </a>
{% if order_by == 'ballance' %}<span class="glyphicon glyphicon-filter"></span>{% endif %} {% if order_by == 'ballance' %}<span class="glyphicon glyphicon-filter"></span>{% endif %}
</th> </th>
<th width="10">#</th>
<th class="col-xs-1">#</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -70,7 +70,7 @@
{% else %} {% else %}
<tr class="danger"> <tr class="danger">
{% endif %} {% endif %}
<td>{% if human.stat_cache and human.stat_cache.is_online %}
<td class="hidden-xs">{% if human.stat_cache and human.stat_cache.is_online %}
<span class="glyphicon glyphicon-ok text-success"></span> <span class="glyphicon glyphicon-ok text-success"></span>
{% else %} {% else %}
<span class="glyphicon glyphicon-remove-sign text-muted"></span> <span class="glyphicon glyphicon-remove-sign text-muted"></span>
@ -78,7 +78,7 @@
<td> <td>
<a href="{% url 'abonapp:abon_home' human.group.pk human.pk %}">{{ human.username }}</a> <a href="{% url 'abonapp:abon_home' human.group.pk human.pk %}">{{ human.username }}</a>
</td> </td>
<td>
<td class="hidden-xs">
{% if human.stat_cache %} {% if human.stat_cache %}
{% if human.stat_cache.is_today %} {% if human.stat_cache.is_today %}
{{ human.stat_cache.last_time|date:"H:i" }} {{ human.stat_cache.last_time|date:"H:i" }}
@ -87,7 +87,7 @@
{% endif %} {% endif %}
{% endif %} {% endif %}
</td> </td>
<td>{{ human.ip_address|default:_('Not assigned') }}</td>
<td class="hidden-md">{{ human.ip_address|default:_('Not assigned') }}</td>
<td>{{ human.fio }}</td> <td>{{ human.fio }}</td>
<td>{{ human.street|default:_('Not assigned') }}</td> <td>{{ human.street|default:_('Not assigned') }}</td>
<td>{{ human.house|default:'-' }}</td> <td>{{ human.house|default:'-' }}</td>
@ -102,7 +102,7 @@
{% else %}&mdash;&mdash;&mdash; {% else %}&mdash;&mdash;&mdash;
{% endif %} {% endif %}
</td> </td>
<td>{{ human.ballance }}</td>
<td class="hidden-xs">{{ human.ballance }}</td>
<td> <td>
{% if can_del_trf %} {% if can_del_trf %}
<a href="{% url 'abonapp:del_abon' %}?id={{ human.pk }}" class="btn btn-danger btn-sm"> <a href="{% url 'abonapp:del_abon' %}?id={{ human.pk }}" class="btn btn-danger btn-sm">
@ -140,7 +140,7 @@
</table> </table>
</div> </div>
</div> </div>
<div class="col-lg-2 sidebar-offcanvas">
<div class="col-lg-2 col-md-4">
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading">{% trans 'Streets' %}</div> <div class="panel-heading">{% trans 'Streets' %}</div>
<div class="list-group"> <div class="list-group">

18
accounts_app/templates/accounts/acc_list.html

@ -14,11 +14,11 @@
<thead> <thead>
<tr> <tr>
<th class="col-sm-1">Фото</th> <th class="col-sm-1">Фото</th>
<th>Ник</th>
<th>ФИО (или ник если нет)</th>
<th class="col-sm-2">Телефон</th>
<th class="col-sm-2">Email</th>
<th width="150">&mdash;</th>
<th class="col-sm-2">Ник</th>
<th class="col-sm-4">ФИО (или ник если нет)</th>
<th class="col-sm-2 hidden-xs">Телефон</th>
<th class="col-sm-2 hidden-xs">Email</th>
<th class="col-sm-1 hidden-xs">&mdash;</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -30,11 +30,11 @@
</a></td> </a></td>
<td><a href="{% url 'acc_app:other_profile' usr.id %}">{{ usr.username }}</a></td> <td><a href="{% url 'acc_app:other_profile' usr.id %}">{{ usr.username }}</a></td>
<td>{{ usr.get_full_name }}</td> <td>{{ usr.get_full_name }}</td>
<td>{% if usr.telephone %}<a href="tel:{{ usr.telephone }}">{{ usr.telephone }}</a>{% else %}
<td class="hidden-xs">{% if usr.telephone %}<a href="tel:{{ usr.telephone }}">{{ usr.telephone }}</a>{% else %}
Нету{% endif %}</td> Нету{% endif %}</td>
<td>{% if usr.email %}<a href="mailto:{{ usr.email }}">{{ usr.email }}{% else %}
<td class="hidden-xs">{% if usr.email %}<a href="mailto:{{ usr.email }}">{{ usr.email }}{% else %}
Нету{% endif %}</a></td> Нету{% endif %}</a></td>
<td class="btn-group">
<td class="btn-group hidden-xs">
<a href="#" class="btn btn-sm btn-default disabled" <a href="#" class="btn btn-sm btn-default disabled"
title="Дать задание"> title="Дать задание">
<span class="glyphicon glyphicon-tasks"></span> <span class="glyphicon glyphicon-tasks"></span>
@ -78,4 +78,4 @@
{% include 'toolbar_page.html' with pag=users %} {% include 'toolbar_page.html' with pag=users %}
{% endblock %}
{% endblock %}

15
accounts_app/templates/accounts/login.html

@ -15,6 +15,10 @@
margin: 10% auto; margin: 10% auto;
position: relative; position: relative;
} }
footer{
position: absolute;
bottom: 0;
}
</style> </style>
</head> </head>
<body> <body>
@ -60,5 +64,14 @@
</div> </div>
</div> </div>
<footer class="footer">
<div class="container">
<p class="text-muted">
Напишите нам <i>is-ttk@ya.ru</i>.
</p>
</div>
</footer>
</div>
</body> </body>
</html>
</html>

4
agent/commands/dhcp.py

@ -20,12 +20,12 @@ def dhcp_commit(client_ip, client_mac, switch_mac, switch_port):
print('D:', _('User settings is not dynamic')) print('D:', _('User settings is not dynamic'))
return return
if not abon.is_access(): if not abon.is_access():
print('D:', _('User is not access to service'))
print('D:', 'User %s is not access to service' % abon.username)
return return
abon.ip_address = client_ip abon.ip_address = client_ip
abon.is_dhcp = True abon.is_dhcp = True
abon.save(update_fields=['ip_address']) abon.save(update_fields=['ip_address'])
print('S:', _("Ip address:'%s' update for '%s' successfull, on port: %s") % (client_ip, abon.get_short_name(), port))
#print('S:', _("Ip address:'%s' update for '%s' successfull, on port: %s") % (client_ip, abon.get_short_name(), port))
except Abon.DoesNotExist: except Abon.DoesNotExist:
print('N:', _("User with device '%s' does not exist") % dev) print('N:', _("User with device '%s' does not exist") % dev)
except Device.DoesNotExist: except Device.DoesNotExist:

22
agent/mod_mikrotik.py

@ -4,7 +4,7 @@ import binascii
from abc import ABCMeta from abc import ABCMeta
from hashlib import md5 from hashlib import md5
from .core import BaseTransmitter, NasFailedResult, NasNetworkError from .core import BaseTransmitter, NasFailedResult, NasNetworkError
from mydefs import ping
from mydefs import ping, singleton
from .structs import TariffStruct, AbonStruct, IpStruct from .structs import TariffStruct, AbonStruct, IpStruct
from . import settings as local_settings from . import settings as local_settings
from django.conf import settings from django.conf import settings
@ -17,14 +17,23 @@ LIST_USERS_ALLOWED = 'DjingUsersAllowed'
LIST_USERS_BLOCKED = 'DjingUsersBlocked' LIST_USERS_BLOCKED = 'DjingUsersBlocked'
@singleton
class ApiRos: class ApiRos:
"Routeros api" "Routeros api"
sk = None
is_login = False
def __init__(self, ip, port):
if self.sk is None:
sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sk.connect((ip, port or getattr(local_settings, 'NAS_PORT', 8728)))
self.sk = sk
def __init__(self, sk):
self.sk = sk
self.currenttag = 0 self.currenttag = 0
def login(self, username, pwd): def login(self, username, pwd):
if self.is_login:
return
chal = None chal = None
for repl, attrs in self.talk_iter(["/login"]): for repl, attrs in self.talk_iter(["/login"]):
chal = binascii.unhexlify(attrs['=ret']) chal = binascii.unhexlify(attrs['=ret'])
@ -34,6 +43,7 @@ class ApiRos:
md.update(chal) md.update(chal)
for r in self.talk_iter(["/login", "=name=" + username, for r in self.talk_iter(["/login", "=name=" + username,
"=response=00" + binascii.hexlify(md.digest()).decode('utf-8')]): pass "=response=00" + binascii.hexlify(md.digest()).decode('utf-8')]): pass
self.is_login = True
def talk_iter(self, words): def talk_iter(self, words):
if self.writeSentence(words) == 0: return if self.writeSentence(words) == 0: return
@ -143,6 +153,7 @@ class ApiRos:
class TransmitterManager(BaseTransmitter, metaclass=ABCMeta): class TransmitterManager(BaseTransmitter, metaclass=ABCMeta):
def __init__(self, login=None, password=None, ip=None, port=None): def __init__(self, login=None, password=None, ip=None, port=None):
ip = ip or getattr(local_settings, 'NAS_IP') ip = ip or getattr(local_settings, 'NAS_IP')
if ip is None: if ip is None:
@ -150,10 +161,7 @@ class TransmitterManager(BaseTransmitter, metaclass=ABCMeta):
if not ping(ip): if not ping(ip):
raise NasNetworkError('NAS %s не пингуется' % ip) raise NasNetworkError('NAS %s не пингуется' % ip)
try: try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((ip, port or getattr(local_settings, 'NAS_PORT', 8728)))
self.s = s
self.ar = ApiRos(s)
self.ar = ApiRos(ip, port)
self.ar.login(login or getattr(local_settings, 'NAS_LOGIN'), password or getattr(local_settings, 'NAS_PASSW')) self.ar.login(login or getattr(local_settings, 'NAS_LOGIN'), password or getattr(local_settings, 'NAS_PASSW'))
except ConnectionRefusedError: except ConnectionRefusedError:
raise NasNetworkError('Подключение к %s отклонено (Connection Refused)' % ip) raise NasNetworkError('Подключение к %s отклонено (Connection Refused)' % ip)

2
clientsideapp/templates/clientsideapp/ext.html

@ -94,7 +94,7 @@
<div id="footer"> <div id="footer">
<div class="container"> <div class="container">
<p class="text-muted"> <p class="text-muted">
Напишите разработчику <i>djing-developer@yandex.ru</i>.
Напишите разработчику <i>is-ttk@ya.ru</i>.
</p> </p>
</div> </div>
</div> </div>

2
devapp/models.py

@ -109,6 +109,8 @@ def dev_post_save_signal(sender, instance, **kwargs):
code = 'uy' code = 'uy'
elif grp == 79 or grp == 91: elif grp == 79 or grp == 91:
code = 'zrk' code = 'zrk'
elif grp == 95:
code = 'yst'
newmac = str(instance.mac_addr) newmac = str(instance.mac_addr)
call(["%s/devapp/onu_register.sh" % settings.BASE_DIR, newmac, code]) call(["%s/devapp/onu_register.sh" % settings.BASE_DIR, newmac, code])

2
devapp/templates/devapp/custom_dev_page/onu.html

@ -16,7 +16,7 @@
<ul class="list-group"> <ul class="list-group">
<li class="list-group-item">{% trans 'Ip address' %}: {{ dev.ip_address }}</li> <li class="list-group-item">{% trans 'Ip address' %}: {{ dev.ip_address }}</li>
<li class="list-group-item">{% trans 'Mac' %}: {{ dev.mac_addr }}</li> <li class="list-group-item">{% trans 'Mac' %}: {{ dev.mac_addr }}</li>
<li class="list-group-item">{% trans 'Description' %} {{ dev.comment }}</li>
<li class="list-group-item">{% trans 'Description' %}: {{ dev.comment }}</li>
{% for da in dev_accs %} {% for da in dev_accs %}
<li class="list-group-item">{% trans 'Attached user' %}: <li class="list-group-item">{% trans 'Attached user' %}:
{% if da.group %} {% if da.group %}

44
dhcp_lever.py

@ -1,25 +1,53 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import sys import sys
from redis import Redis
from rq import Queue
import socket
def die(text): def die(text):
print(text) print(text)
exit(1) exit(1)
'''
obj = {
'client_ip': ip2int('127.0.0.1'),
'client_mac': 'aa:bb:cc:dd:ee:ff',
'switch_mac': 'aa:bb:cc:dd:ee:ff',
'switch_port': 3,
'cmd': 'commit'
}
'''
def send_to(data, addr='127.0.0.1', port=5436):
from pickle import dumps
try:
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((addr, port))
data = dumps(data)
s.send(data)
except ConnectionRefusedError:
print('ERROR: connection refused')
if __name__ == "__main__": if __name__ == "__main__":
argv = sys.argv argv = sys.argv
if len(argv) < 3: if len(argv) < 3:
die('Too few arguments, exiting...') die('Too few arguments, exiting...')
action = argv[1] action = argv[1]
q = Queue(connection=Redis())
if action == 'commit': if action == 'commit':
if len(argv) < 6: if len(argv) < 6:
die('Too few arguments, exiting...') die('Too few arguments, exiting...')
q.enqueue('agent.commands.dhcp.dhcp_commit', argv[2], argv[3], argv[4], int(argv[5]))
elif action == 'expiry':
q.enqueue('agent.commands.dhcp.dhcp_expiry', argv[2])
elif action == 'release':
q.enqueue('agent.commands.dhcp.dhcp_release', argv[2])
dat = {
'client_ip': argv[2],
'client_mac': argv[3],
'switch_mac': argv[4],
'switch_port': int(argv[5]),
'cmd': 'commit'
}
send_to(dat)
elif action == 'expiry' or action == 'release':
dat = {
'client_ip': argv[2],
'cmd': action
}
send_to(dat)

5
msg_app/admin.py

@ -1,3 +1,6 @@
from django.contrib import admin from django.contrib import admin
from . import models
admin.site.register(models.Message)
admin.site.register(models.Conversation)
# Register your models here.

2
msg_app/locale/ru/LC_MESSAGES/django.po

@ -146,7 +146,7 @@ msgstr "Создать беседу"
#: templates/msg_app/modal_new_conversation.html:19 #: templates/msg_app/modal_new_conversation.html:19
msgid "for select multiple press ctrl and click on field" msgid "for select multiple press ctrl and click on field"
msgstr "Для выбора нескольких ывриантов зажмите ctrl и кликните вариант"
msgstr "Для выбора нескольких вариантов зажмите ctrl и кликните нужный вариант"
#: templates/msg_app/modal_new_conversation.html:28 #: templates/msg_app/modal_new_conversation.html:28
msgid "Add" msgid "Add"

9
mydefs.py

@ -215,3 +215,12 @@ class MultipleException(Exception):
class LogicError(Exception): class LogicError(Exception):
pass pass
def singleton(class_):
instances = {}
def getinstance(*args, **kwargs):
if class_ not in instances:
instances[class_] = class_(*args, **kwargs)
return instances[class_]
return getinstance

71
queue_mngr.py

@ -1,30 +1,55 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import os import os
import sys
from rq import Connection, Worker
from pickle import loads
from pid.decorator import pidfile from pid.decorator import pidfile
import socket
import django import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djing.settings")
from agent import NasFailedResult, NasNetworkError
from django.core.exceptions import ValidationError
"""
Заустить этот скрипт как демон, он соединяет redis и django
"""
@pidfile()
def main():
'''
obj = {
'client_ip': ip2int('127.0.0.1'),
'client_mac': 'aa:bb:cc:dd:ee:ff',
'switch_mac': 'aa:bb:cc:dd:ee:ff',
'switch_port': 3,
'cmd': 'commit'
}
'''
def on_new_data(client_sock, ip):
from agent.commands.dhcp import dhcp_commit, dhcp_expiry, dhcp_release
data = client_sock.recv(16384)
data = loads(data)
action = data['cmd']
if action == 'commit':
dhcp_commit(
data['client_ip'], data['client_mac'],
data['switch_mac'], data['switch_port']
)
elif action == 'expiry':
dhcp_expiry(data['client_ip'])
elif action == 'release':
dhcp_release(data['client_ip'])
client_sock.close()
@pidfile(pidname='queue_mngr.py.pid', piddir='/run')
def serve(addr='127.0.0.1', port=5436):
try: try:
django.setup()
with Connection():
qs = sys.argv[1:] or ['default']
w = Worker(qs)
w.work()
except (NasNetworkError, NasFailedResult) as e:
print('NAS:', e)
except (ValidationError, ValueError) as e:
print('ERROR:', e)
if __name__ == "__main__":
main()
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((addr, port))
s.listen(3)
print('ready')
while True:
conn, client_addr = s.accept()
on_new_data(conn, client_addr)
except ConnectionRefusedError:
print('ERROR: connection refused')
if __name__ == '__main__':
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djing.settings")
django.setup()
serve()

2
systemd_units/djing_telebot.service

@ -4,7 +4,7 @@ Description=Djing telegram bot
[Service] [Service]
Type=simple Type=simple
ExecStart=/usr/bin/python3 ./telebot.py > /dev/null ExecStart=/usr/bin/python3 ./telebot.py > /dev/null
PIDFile=/run/telebot.py.pid
PIDFile=/run/djing_telebot.pid
WorkingDirectory=/var/www/djing WorkingDirectory=/var/www/djing
TimeoutSec=9 TimeoutSec=9
Restart=always Restart=always

2
telebot.py

@ -7,7 +7,7 @@ from telepot import DelegatorBot
from telepot.delegate import per_chat_id, create_open, pave_event_space from telepot.delegate import per_chat_id, create_open, pave_event_space
@pidfile()
@pidfile(pidname='djing_telebot.pid', piddir='/run')
def main(): def main():
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djing.settings") os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djing.settings")
django.setup() django.setup()

2
templates/all_base.html

@ -31,7 +31,7 @@
<span class="icon-bar"></span> <span class="icon-bar"></span>
<span class="icon-bar"></span> <span class="icon-bar"></span>
</button> </button>
<a class="navbar-brand" href="{% url 'acc_app:other_profile' request.user.id %}">InternetService</a>
<a class="navbar-brand hidden-xs" href="{% url 'acc_app:other_profile' request.user.id %}">InternetService</a>
</div> </div>
<div class="navbar-collapse collapse"> <div class="navbar-collapse collapse">
<ul class="nav navbar-nav"> <ul class="nav navbar-nav">

4
templates/base.html

@ -2,7 +2,7 @@
{% block base_content %} {% block base_content %}
<!-- Left menu --> <!-- Left menu -->
<div class="col-sm-2 sidebar sidebar-offcanvas" role="navigation">
<div class="col-sm-3 col-md-2 sidebar sidebar-offcanvas" role="navigation">
<div class="row profile_img"> <div class="row profile_img">
<div class="col-sm-5"> <div class="col-sm-5">
@ -82,7 +82,7 @@
<!-- END Left menu --> <!-- END Left menu -->
<!-- Main content --> <!-- Main content -->
<div class="col-sm-10 col-sm-offset-2 main">
<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
<p class="pull-left visible-xs"> <p class="pull-left visible-xs">
<button type="button" data-toggle="offcanvas"></button> <button type="button" data-toggle="offcanvas"></button>
</p> </p>

Loading…
Cancel
Save