#!/usr/bin/env python3
import time
import socket
import json
import os
import syslog
from multiprocessing import Queue, Process
import pypledge
def ValidateInput(q):
syslog.syslog(syslog.LOG_INFO, 'Validation Started')
pypledge.pledge([ 'stdio'])
q.get()
print(q)
print(type(q))
message = input.decode()
try:
messageJson = json.dumps(message)
except Exception:
syslog.syslog(syslog.LOG_ERR, 'Error in Json Parsing')
syslog.syslog(syslog.LOG_INFO, time.gmtime() + messageJson)
def CoreServer(q):
syslog.syslog(syslog.LOG_INFO,'Server Started')
pypledge.pledge(['inet', 'stdio'])
HOST = '127.0.0.1' # Standard loopback interface address (localhost)
PORT = 65432 # Port to listen on (non-privileged ports are > 1023)
run_flag = true
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: # ipv4 i tcp
s.setblocking(0)
s.bind((HOST, PORT))
s.listen()
conn, addr = s.accept()
print(conn)
with conn:
while True:
while True:
try:
data = conn.recv(1024)
except socket.error, e:
err = e.args[0]
if err == errno.EWOULDBLOCK:
continue
break
q.put(data)
syslog.syslog(syslog.LOG_INFO,q)
if not data:
break
conn.sendall(data)
s.close()
def RunningServer():
syslog.syslog(syslog.LOG_INFO, 'Main Process is Started')
pypledge.pledge(['proc', 'stdio'])
queue = Queue()
print("Process id before forking: {}".format(os.getpid()))
core = Process(target=CoreServer, args=(queue,))
valid = Process(target=ValidateInput, args=(queue,))
core.start()
valid.start()
RunningServer()
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}