mirror of
https://github.com/fastogt/fastocloud_admin.git
synced 2025-03-09 23:38:52 +00:00
Sock impl
This commit is contained in:
parent
08a6a27eb1
commit
4c0b38ebe6
4 changed files with 21 additions and 19 deletions
|
@ -4,6 +4,7 @@ from pyfastocloud.fastocloud_client import FastoCloudClient, Fields, Commands
|
||||||
from pyfastocloud.client_handler import IClientHandler
|
from pyfastocloud.client_handler import IClientHandler
|
||||||
from pyfastocloud.json_rpc import Request, Response
|
from pyfastocloud.json_rpc import Request, Response
|
||||||
from pyfastocloud.client_constants import ClientStatus
|
from pyfastocloud.client_constants import ClientStatus
|
||||||
|
import pyfastocloud.socket.gevent as gsocket
|
||||||
|
|
||||||
from app.service.stream_handler import IStreamHandler
|
from app.service.stream_handler import IStreamHandler
|
||||||
import app.common.constants as constants
|
import app.common.constants as constants
|
||||||
|
@ -44,7 +45,7 @@ class ServiceClient(IClientHandler):
|
||||||
self.id = sid
|
self.id = sid
|
||||||
self._request_id = 0
|
self._request_id = 0
|
||||||
self._handler = handler
|
self._handler = handler
|
||||||
self._client = FastoCloudClient(host, port, self)
|
self._client = FastoCloudClient(host, port, self, gsocket)
|
||||||
self._set_runtime_fields()
|
self._set_runtime_fields()
|
||||||
|
|
||||||
def connect(self):
|
def connect(self):
|
||||||
|
@ -192,10 +193,7 @@ class ServiceClient(IClientHandler):
|
||||||
self._handler.on_client_state_changed(status)
|
self._handler.on_client_state_changed(status)
|
||||||
|
|
||||||
# private
|
# private
|
||||||
def _set_runtime_fields(self, http_host=None, vods_host=None, cods_host=None,
|
def _set_runtime_fields(self, http_host=None, vods_host=None, cods_host=None, version=None, os=None, vods_in=None):
|
||||||
version=None,
|
|
||||||
os=None,
|
|
||||||
vods_in=None):
|
|
||||||
self._http_host = http_host
|
self._http_host = http_host
|
||||||
self._vods_host = vods_host
|
self._vods_host = vods_host
|
||||||
self._cods_host = cods_host
|
self._cods_host = cods_host
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
from app.common.subscriber.entry import Subscriber, Device
|
from app.common.subscriber.entry import Subscriber, Device
|
||||||
from pyfastocloud.subscriber_client import SubscriberClient
|
from pyfastocloud.subscriber_client import SubscriberClient
|
||||||
from pyfastocloud.client import make_utc_timestamp
|
from pyfastocloud.client import make_utc_timestamp
|
||||||
|
import pyfastocloud.socket.gevent as gsocket
|
||||||
|
|
||||||
|
|
||||||
class SubscriberConnection(SubscriberClient):
|
class SubscriberConnection(SubscriberClient):
|
||||||
def __init__(self, sock, addr, handler):
|
def __init__(self, sock, addr, handler):
|
||||||
super(SubscriberConnection, self).__init__(sock, addr, handler)
|
super(SubscriberConnection, self).__init__(sock, addr, handler, gsocket)
|
||||||
self._info = None
|
self._info = None
|
||||||
self._current_stream_id = str()
|
self._current_stream_id = str()
|
||||||
self._device = None
|
self._device = None
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
import logging
|
||||||
|
import socket
|
||||||
|
|
||||||
from app.service.service_manager import ServiceManager
|
from app.service.service_manager import ServiceManager
|
||||||
|
|
||||||
from app.service.subscriber_client import SubscriberConnection
|
from app.service.subscriber_client import SubscriberConnection
|
||||||
|
@ -6,17 +9,12 @@ from app.common.constants import PlayerMessage
|
||||||
from pyfastocloud.subscriber_client import Commands
|
from pyfastocloud.subscriber_client import Commands
|
||||||
from pyfastocloud.client import make_utc_timestamp
|
from pyfastocloud.client import make_utc_timestamp
|
||||||
from pyfastocloud.client_handler import IClientHandler, Request, Response, ClientStatus
|
from pyfastocloud.client_handler import IClientHandler, Request, Response, ClientStatus
|
||||||
|
import pyfastocloud.socket.gevent as gsocket
|
||||||
from gevent import socket
|
|
||||||
from gevent import select
|
|
||||||
|
|
||||||
import logging
|
|
||||||
|
|
||||||
|
|
||||||
def check_is_auth_client(client) -> bool:
|
def check_is_auth_client(client) -> bool:
|
||||||
if not client:
|
if not client:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
return client.is_active()
|
return client.is_active()
|
||||||
|
|
||||||
|
|
||||||
|
@ -27,7 +25,7 @@ class SubscribersServiceManager(ServiceManager, IClientHandler):
|
||||||
|
|
||||||
def __init__(self, host: str, port: int, socketio):
|
def __init__(self, host: str, port: int, socketio):
|
||||||
super(SubscribersServiceManager, self).__init__(host, port, socketio)
|
super(SubscribersServiceManager, self).__init__(host, port, socketio)
|
||||||
serversock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
serversock = gsocket.Socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
serversock.bind((host, SubscribersServiceManager.SUBSCRIBER_PORT))
|
serversock.bind((host, SubscribersServiceManager.SUBSCRIBER_PORT))
|
||||||
serversock.listen(10)
|
serversock.listen(10)
|
||||||
self._subscribers_server_socket = serversock
|
self._subscribers_server_socket = serversock
|
||||||
|
@ -47,7 +45,7 @@ class SubscribersServiceManager(ServiceManager, IClientHandler):
|
||||||
if server.is_connected():
|
if server.is_connected():
|
||||||
rsockets.append(server.socket())
|
rsockets.append(server.socket())
|
||||||
|
|
||||||
readable, writeable, _ = select.select(rsockets, [], [], 1)
|
readable, writeable, _ = gsocket.Select(rsockets, [], [], 1)
|
||||||
ts_sec = make_utc_timestamp() / 1000
|
ts_sec = make_utc_timestamp() / 1000
|
||||||
for read in readable:
|
for read in readable:
|
||||||
# income subscriber connection
|
# income subscriber connection
|
||||||
|
|
15
server.py
15
server.py
|
@ -1,13 +1,16 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
from app import app, servers_manager
|
import logging
|
||||||
import argparse
|
import argparse
|
||||||
from gevent.pywsgi import WSGIServer
|
|
||||||
import gevent
|
import gevent
|
||||||
|
from gevent.pywsgi import WSGIServer
|
||||||
|
|
||||||
PROJECT_NAME = 'iptv_admin'
|
from app import app, servers_manager
|
||||||
|
|
||||||
|
PROJECT_NAME = 'fastocloud_iptv_admin'
|
||||||
HOST = '0.0.0.0'
|
HOST = '0.0.0.0'
|
||||||
PORT = 8080
|
PORT = 8080
|
||||||
|
LOGS_PATH = PROJECT_NAME + '.log'
|
||||||
|
|
||||||
|
|
||||||
def servers_refresh():
|
def servers_refresh():
|
||||||
|
@ -18,10 +21,12 @@ if __name__ == '__main__':
|
||||||
parser = argparse.ArgumentParser(prog=PROJECT_NAME, usage='%(prog)s [options]')
|
parser = argparse.ArgumentParser(prog=PROJECT_NAME, usage='%(prog)s [options]')
|
||||||
parser.add_argument('--port', help='port (default: {0})'.format(PORT), default=PORT)
|
parser.add_argument('--port', help='port (default: {0})'.format(PORT), default=PORT)
|
||||||
parser.add_argument('--host', help='host (default: {0})'.format(HOST), default=HOST)
|
parser.add_argument('--host', help='host (default: {0})'.format(HOST), default=HOST)
|
||||||
|
parser.add_argument('--logs_path', help='logs path (default: {0})'.format(LOGS_PATH), default=LOGS_PATH)
|
||||||
|
|
||||||
argv = parser.parse_args()
|
argv = parser.parse_args()
|
||||||
|
|
||||||
import logging
|
logging.basicConfig(filename=argv.logs_path, filemode='a', level=logging.DEBUG,
|
||||||
logging.basicConfig(filename='admin.log', filemode='w', level=logging.DEBUG, format='%(asctime)s.%(msecs)03d [%(levelname)s] %(message)s', datefmt='%H:%M:%S')
|
format='%(asctime)s.%(msecs)03d [%(levelname)s] %(message)s', datefmt='%H:%M:%S')
|
||||||
|
|
||||||
http_server = WSGIServer((argv.host, argv.port), app)
|
http_server = WSGIServer((argv.host, argv.port), app)
|
||||||
srv_greenlet = gevent.spawn(http_server.serve_forever)
|
srv_greenlet = gevent.spawn(http_server.serve_forever)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue