mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-25 01:07:22 +00:00
83 lines
1.6 KiB
Python
Executable File
83 lines
1.6 KiB
Python
Executable File
#!/usr/bin/python3
|
|
# -*- coding: utf-8 -*-
|
|
#
|
|
# File: misc.py
|
|
#
|
|
# Miscellaneous support routines.
|
|
#
|
|
import socket
|
|
import os, os.path
|
|
import time
|
|
|
|
# This function opens a UNIX socket in the role of server,
|
|
# launches a child process, accepts the child's connection,
|
|
# and finally returns the connection and the socket file name.
|
|
class open_sock():
|
|
fn = ''
|
|
sf = ''
|
|
pid = ''
|
|
conn = ''
|
|
addr = ''
|
|
lfn = ''
|
|
olfn = ''
|
|
lfh = ''
|
|
|
|
def __init__(self):
|
|
def child():
|
|
pn = '/usr/local/fbin/fbt'
|
|
os.execl(pn, pn)
|
|
os._exit(99)
|
|
|
|
self.fn = '/tmp/fbt_sock'
|
|
if os.path.exists(self.fn):
|
|
os.remove(self.fn)
|
|
|
|
server = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
|
|
server.bind(self.fn)
|
|
server.listen(1)
|
|
|
|
self.pid = os.fork()
|
|
if self.pid == 0:
|
|
child()
|
|
|
|
self.conn, self.addr = server.accept()
|
|
self.lfn = '/var/log/fbt/gui.log'
|
|
self.olfn = '/var/log/fbt/gui.log.old'
|
|
if os.path.isfile(self.olfn):
|
|
os.unlink(self.olfn)
|
|
if os.path.isfile(self.lfn):
|
|
os.rename(self.lfn, self.olfn)
|
|
self.lfh = open(self.lfn, mode='wt')
|
|
# self.lfh.truncate()
|
|
self.sf = self.conn.makefile()
|
|
|
|
|
|
def get_conn(self):
|
|
return self.conn
|
|
|
|
def get_fn(self):
|
|
return self.fn
|
|
|
|
def get_pid(self):
|
|
return self.pid
|
|
|
|
def send_command(self, cmd):
|
|
self.conn.send((cmd + '\n').encode('utf-8'))
|
|
self.lfh.write('> ' + cmd + '\n')
|
|
|
|
def sock_reply(self):
|
|
sf = self.sf
|
|
line = sf.readline().strip()
|
|
self.lfh.write('< ' + line + '\n')
|
|
return line
|
|
|
|
def sock_close(self):
|
|
self.lfh.close()
|
|
self.conn.close()
|
|
return os.waitpid(self.pid, 0)
|
|
|
|
def mk_sock():
|
|
osock = open_sock()
|
|
return osock
|
|
|