MyBB Community Forums

Full Version: MySQL cmd to view thread content
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
On our forums i suspect Javascript injection on a couple threads by one user. However these threads hang so you cannot view the thread at all. Here is an example of one thread. It just shows a blank white page.

What is the MySQL command to view these threads directly in the database to see if there is any javascript code on the post?

The closest i got was viewing the entire mybb_threads, but cannot figure how to get directly to this thread.
mysql> describe mybb_threads;
+----------------------+----------------------+------+-----+---------+----------------+
| Field                | Type                 | Null | Key | Default | Extra          |
+----------------------+----------------------+------+-----+---------+----------------+
| tid                  | int(10) unsigned     | NO   | PRI | NULL    | auto_increment |
| fid                  | smallint(5) unsigned | NO   | MUL | 0       |                |
| subject              | varchar(120)         | NO   | MUL |         |                |
| prefix               | smallint(5) unsigned | NO   |     | 0       |                |
| icon                 | smallint(5) unsigned | NO   |     | 0       |                |
| poll                 | int(10) unsigned     | NO   |     | 0       |                |
| uid                  | int(10) unsigned     | NO   | MUL | 0       |                |
| username             | varchar(80)          | NO   |     |         |                |
| dateline             | int(10) unsigned     | NO   | MUL | 0       |                |
| firstpost            | int(10) unsigned     | NO   | MUL | 0       |                |
| lastpost             | int(10) unsigned     | NO   | MUL | 0       |                |
| lastposter           | varchar(120)         | NO   |     |         |                |
| lastposteruid        | int(10) unsigned     | NO   |     | 0       |                |
| views                | int(100) unsigned    | NO   |     | 0       |                |
| replies              | int(100) unsigned    | NO   |     | 0       |                |
| closed               | varchar(30)          | NO   |     |         |                |
| sticky               | tinyint(1)           | NO   |     | 0       |                |
| numratings           | smallint(5) unsigned | NO   |     | 0       |                |
| totalratings         | smallint(5) unsigned | NO   |     | 0       |                |
| notes                | text                 | NO   |     | NULL    |                |
| visible              | tinyint(1)           | NO   |     | 0       |                |
| unapprovedposts      | int(10) unsigned     | NO   |     | 0       |                |
| deletedposts         | int(10) unsigned     | NO   |     | 0       |                |
| attachmentcount      | int(10) unsigned     | NO   |     | 0       |                |
| deletetime           | int(10) unsigned     | NO   |     | 0       |                |
| tlink                | varchar(100)         | NO   |     | NULL    |                |
| postpreview          | varchar(255)         | NO   |     |         |                |
| lastpostpreview      | varchar(255)         | NO   |     |         |                |
| threadsolved         | int(1)               | NO   |     | 0       |                |
| threadsolvedbyuserid | int(10)              | NO   |     | 0       |                |
| threadsolvedtime     | int(10)              | NO   |     | 0       |                |
+----------------------+----------------------+------+-----+---------+----------------+
31 rows in set (0.00 sec)
posts content is actually stored in the posts table.
tracing can be done by using fields like tid, uid, replyto, message .. etc
Seems tid is 24079 and pid is 103812. You may search with the thread title in your forum to get some info I think.

Anyway, you can search in the SEO plugin's data where the thread URLs are stored.

Suppose the tid of the thread is 24079, try:
select pid, tid, uid, message from mybb_posts where tid=24079;
mysql> select pid, tid, uid, message from mybb_posts where tid=24079;

This is the response i got back from that command. I dont see any javascript, only Python langauge. Is this the content of the entire thread then?

| 103812 | 24079 | 22460 | Hello, 

I'm not a developer but I was here on a situation where the developer cannot fix the errors we encounter on his application. I'd like to know if it's still possible or not so I can help him.

Our developer creates an application for bench-marking compatible to run on windows.. This bandwidth tester will tester should check windows 10 traffic. The idea was, you cannot proceed with testing the internet speed if the current traffic exceeds 64kbps. We have this check mark for "Check Traffic".. When we select this option and start the application it will run for a second and suddenly stop saying Testing blocke - "BG Traffic exceeds 64kbps". Of course the app itself is consuming a traffic.. Is there a way to exempt the traffic created by the app? The app should not proceed if other application is using the internet for examples: internet browser, torrent, windows update, antivirus etc.

The big problem is that the app is blocking itself because definitely he's creating traffic and exceeding 64kbps. 

Below is the example of his codes:

if self.enable_traffic.isChecked() and self.traffic > 64:
          self.label_status.setText('BG Traffic Exceeded 64kbps')
          QtGui.QMessageBox.warning(self, 'Error', 'Testing blocked - Traffic Exceeded 64kbps!')
          return |
| 103815 | 24079 |     1 | That is not enough code to be able to fix this issue. For example we have no idea of what self.traffic contains in terms of it being traffic by the app or other. Where is the code that defines self.traffic?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| 103816 | 24079 | 22460 | Hi can I post the whole py file?

These are what I've about traffic:


if win.traffic >= 64 and win.enable_traffic.isChecked():
            return 0

self.traffic = 0

self.enable_traffic = QtGui.QCheckBox("Check Traffic")
        self.enable_traffic.setChecked(True)
        self.enable_traffic.setFont(normalfont)
        self.enable_traffic.setFixedHeight(20)
        self.enable_traffic.setFixedWidth(150)
        splitter3.addWidget(self.enable_traffic)

if self.enable_traffic.isChecked() and self.traffic > 64:
           self.label_status.setText('BG Traffic Exceeded 64kbps')
          QtGui.QMessageBox.warning(self, 'Error', 'Testing blocked - Traffic Exceeded 64kbps!')
          return

if self.response == 'Traffic':
            QtGui.QMessageBox.warning(self, 'Error', 'Testing blocked - Traffic Exceeded 64kbps')
            self.label_status.setText('BG Traffic Exceeded 64kbps')
            return

if self.win.traffic >= 64 and self.win.enable_traffic.isChecked():
                    self.win.response = 'Traffic'
                    raise Exception('traffic') |
| 103821 | 24079 | 22460 | Hi Again, 

Check Traffic - Meaning when you click "Start" it will only proceed if windows has a background traffic of not >= to 64kbps.

How will I check/read windows traffic?

Now it is there a way to exempt self.start_test on traffic checking? 

self.start_btn = QtGui.QPushButton("Start", self)
        self.start_btn.clicked.connect(self.start_test)
        self.start_btn.setFont(normalfont)
        grid.addWidget(self.start_btn, 14, 8)

def start_test(self):
        counter = 0
        self.current_speed = 0
        self.current_downspeed = 0
        self.current_upspeed = 0
        self.current_latencym = 0
        self.current_downspeed1 = 0
        self.current_upspeed1 = 0
        self.current_latencym1 = 0
        self.current_plm = 0
        self.current_jitterm = 0
        self.abort = False
        if not self.detected_isp:
            self.label_status.setText('No Network...')
            QtGui.QMessageBox.warning(self, 'Error', 'No Network')
            return
        if 'wi-fi' in self.nic_name.lower() or 'wifi' in self.nic_name.lower():
            self.label_status.setText('Test aborted...')
            QtGui.QMessageBox.warning(self, 'Error', 'Cannot test in Wi-Fi Network')
            return
        if self.enable_clients.isChecked() and self.clients:
            self.label_status.setText('Other Clients Detected...')
            QtGui.QMessageBox.warning(self, 'Error', 'Testing blocked - Other Clients Detected!')
            return
        if self.enable_traffic.isChecked() and self.traffic > 64000:
           self.label_status.setText('BG Traffic Exceeded 64kbps')
           QtGui.QMessageBox.warning(self, 'Error', 'Testing blocked - Traffic Exceeded 64kbps!')
           return
        x = str(self.test_server.currentText())
        self.included_servers = []
        if x != 'Skip':
            self.ip = isp_ips[x]
            self.included_servers.append(x)
            self.included_server_ips.append(isp_ips[x])
        if self.test_abroad.isChecked():
            self.included_servers.append('US')
            self.included_server_ips.append(self.US_SERVER)
        if self.test_itx.isChecked():
            self.included_servers.append('ITX')
            self.included_server_ips.append(self.ITX_SERVER)
        self.server_count = 0
        self.iterations = int(self.test_cycles.text())
        self.current_server = self.included_servers[0]
        self.ip = self.included_server_ips[0]
        self.start_btn.setEnabled(False)
        self.stop_btn.setEnabled(True)
        self.iteration_count = 0
        self.progress_val = 0
        self.mode = ''
        self.testname = str(self.test_name.text())
        self.planspeed = str(self.test_planspeed.text())
        self.current_speed_label.setText('Speed: 0')
        self.plot.setYRange(0, int(self.planspeed) + 2)
        self.isp = str(self.test_isp.currentText())
        self.conntype = str(self.test_conntype.currentText())
        self.test_type = str(self.test_types.currentText())
        self.location = '%s %s' % (str(self.test_location.text()), str(self.test_location2.currentText()))
        try:
            g = geocoder.google(self.location, key='AIzaSyDfXUeZNvrW4C793xQO3fBmJXOx5-m52Jg')
            latlng = '%s,%s' % (g.latlng[0], g.latlng[1])
        except Exception as e:
            pass
        else:
            tempPath = 'https://maps.googleapis.com/maps/api/staticmap?center=' + latlng + '&zoom=17&size=1400x500&maptype=roadmap&markers=color:red|' + latlng + '&key=AIzaSyDfXUeZNvrW4C793xQO3fBmJXOx5-m52Jg'
            self.web.load(QtCore.QUrl(tempPath))
            self.web.show()
            self.remarks = str(self.test_remarks.toPlainText())
            if len(self.included_servers) == 0:
                self.label_status.setText('Waiting for test')
                QtGui.QMessageBox.warning(self, 'Error', 'No test server')
                self.start_btn.setEnabled(True)
                self.stop_btn.setEnabled(False)
                return |
| 103922 | 24079 | 22460 | In this code we tried to change 64 to 256.. but still always "Test Blocked" when hit "Start"

[python]from datetime import datetime
from netifaces import AF_INET, AF_INET6, AF_LINK
from PyQt4 import QtGui, QtCore, QtWebKit
# from PyQt5 import QtCore, QtGui, QtPrintSupport, QtWidgets
from pyqtgraph import *
from scapy.all import  Ether, srp, ARP, sniff, wrpcap
from socket import *
from threading import Thread, Event
from urllib2 import urlopen

# from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
# from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar
# from matplotlib.figure import Figure

import getpass
import json
import netifaces as ni
import numpy
import psutil
import platform
import pyping
import os
import random
import requests
import sys
import time
import _winreg as wr

import geocoder
import pygeoip
# import argparse
# import re

global counter
counter = 1
global pkt
pkt = 0
global filename
filename = 'test.cap'

BUFSIZE = 1024
isp_ips = {}


def get_mac(ip):
    result = ''
    arp_request = Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=ip)
    ans, unans = srp(arp_request, timeout=1, verbose=False)
    if ans:
        first_response = ans[0]
        req, res = first_response
        result = res.getlayer(Ether).src

        return result

def pingtest(url):
    r = pyping.ping(url)
    if r.ret_code == 0:
        return [r.avg_rtt, r.packet_lost]
    else:
        return [0, 0]


def pingtest2(url):
    r = pyping.ping(url,timeout=25, count=1)
    if r.ret_code == 0:
        return url
    else:
        return None

## Write to PCAP                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      file
def custom_action(packet):
    global counter
    counter += 1
    global filename

    try:
        wrpcap(filename, packet, append=True)
    except Exception as e1:
        print e1
 
def sniff_pack(e, ip):
    ## Setup sniff, filtering for IP traffic
    try:
        sniff(filter='tcp and host %s'%ip, prn=custom_action, stop_filter=lambda p: e.is_set())
    except Exception as e1:
        print e1


def get_addresses():
    reg = wr.ConnectRegistry(None, wr.HKEY_LOCAL_MACHINE)
    reg_key = wr.OpenKey(reg, r'SYSTEM\CurrentControlSet\Control\Network\{4d36e972-e325-11ce-bfc1-08002be10318}')
    ip_addr = ''
    mac_addr = ''
    int_name = ''
    gws = ni.gateways()
    iis = ni.interfaces()
    for i in iis:
        try:
            ip_addr = ni.ifaddresses(i)[AF_INET][0]['addr']
            mac_addr = ni.ifaddresses(i)[AF_LINK][0]['addr']
            subnet = '.'.join(ip_addr.split('.')[:3])
            gw = ''
            try:
                for x in gws.keys():
                    try:
                        gw = gws[x][AF_INET][0]
                    except Exception as e:
                        gw_ = gws[x]
                        for y in gw_:
                            gw = y[0]
                            if subnet in gw:
                                break
                    if subnet in gw:
                        break
            except Exception as e:
                pass
            s = socket(AF_INET, SOCK_DGRAM)
            try:
                reg_subkey = wr.OpenKey(reg_key, i + r'\Connection')
                int_name = wr.QueryValueEx(reg_subkey, 'Name')[0]
            except FileNotFoundError:
                pass
            s.connect(("8.8.8.8", 80))
            ip_addr_s = s.getsockname()[0]
            if ip_addr == ip_addr_s:
                break
        except:
            pass

    return [ip_addr, mac_addr, int_name, gw]

def up_client(win):
    count = 100
    host = win.ip
    win.current_mode = 1
    port = 9999
    win.current_speed = 0
    testdata = 'x' * (BUFSIZE-1) + '\n'
    t_data = []

    t1 = time.time()
    s = socket(AF_INET, SOCK_STREAM)
    t2 = time.time()
    s.connect((host, port))
    t3 = time.time()
    t4 = time.time()
    i = 0
    samples = []
    while t4-t3 < 28:
        if win.enable_clients.isChecked() and win.clients:
            return 0
        if win.abort:
            return 0
        if win.traffic >= 256 and win.enable_traffic.isChecked():
            return 0
        i = i + 1
        s.send(testdata)
        t4 = time.time()
        if t4-t3 < 5:
            x =0
        else:
            try:
                x = round((BUFSIZE*(i)*8) /((t4-t3)*1000*1024), 3)
            except Exception:
                x = 0
        samples.append(x)
        win.plot_data2.append(x)
        win.current_speed = x
        win.current_upspeed = x

    win.current_speed = 0
    s.shutdown(1)
    t4 = time.time()
    d = s.recv(10)
    t5 = time.time()

    return round((BUFSIZE*(i)*8) /30000000, 3), samples

def down_client(win):
    count = 100
    host = win.ip
    port = 9998
    testdata = 'x' * (BUFSIZE-1) + '\n'
    t_data = []
    win.current_mode = 0
    
    win.current_speed = 0
    t1 = time.time()
    s = socket(AF_INET, SOCK_STREAM)
    t2 = time.time()
    s.connect((host, port))
    t3 = time.time()
    t4 = time.time()
    i = 0
    samples = []
    win.packets = 0
    while t4-t3 < 28:
        if win.enable_clients.isChecked() and win.clients:
            return 0
        if win.abort:
            return 0
        data = s.recv(BUFSIZE)
        i = i+1
        win.packets +=1
        t4 = time.time()
        x = round((BUFSIZE*(i)*8) /((t4-t3)*1000*1024), 3)
        samples.append(x)
        win.plot_data.append(x)
        win.current_speed = x
        win.current_downspeed = x
    win.current_speed = 0
    win.packets = 0
    s.shutdown(1)
    t4 = time.time()
    s.recv(BUFSIZE)
    t5 = time.time()

    return round((BUFSIZE*(i)*8) /30000000, 3), samples


class Login(QtGui.QMainWindow):
    def __init__(self, parent=None, win=None, sdw=None):
        super(Login, self).__init__(parent)
        self.setWindowIcon(QtGui.QIcon('favico.ico'))   
        self.win = win
        self.sdw = sdw

        #Init Login Window Layout
        self.setWindowTitle('MassNetwork Benchmarking Software')

        self.textName = QtGui.QLineEdit(self)
        self.textName.setFixedWidth(250)
        self.textName.setFixedHeight(40)
        self.textName.setStyleSheet("background-color: rgba(255, 255, 255,1);")

        self.textPass = QtGui.QLineEdit(self)
        self.textPass.setFixedWidth(250)
        self.textPass.setFixedHeight(40)
        self.textPass.setStyleSheet("background-color: rgba(255, 255, 255,1);")
        self.textPass.setEchoMode(QtGui.QLineEdit.Password)

        self.buttonLogin = QtGui.QPushButton('Login', self)
        self.buttonLogin.setFixedWidth(250)
        self.buttonLogin.setFixedHeight(40)
        self.buttonLogin.clicked.connect(self.handleLogin)

        grid = QtGui.QGridLayout()
        self.resize(400,640)
        self.setFixedSize(400,640)
        
        layout = QtGui.QWidget()
        layout.setLayout(grid) 
        self.setCentralWidget(layout)
        
        grid.addWidget(self.textName,2,0)
        grid.addWidget(self.textPass,3,0)
        grid.addWidget(self.buttonLogin,4,0)
        
        label= QtGui.QLabel('')
        label.setFixedHeight(150)
        grid.addWidget(label, 0, 0)
        
        pic = QtGui.QLabel(self)
        pic.setFixedHeight(60)
        pic.setFixedWidth(250)
        pic.setPixmap(QtGui.QPixmap(os.getcwd() + "/massnetlogo.png"))
        grid.addWidget(pic, 1, 0)

        label= QtGui.QLabel('')
        label.setFixedHeight(200)
        grid.addWidget(label, 5, 0)
        

    def handleLogin(self):
        username = str(self.textName.text())
        password = str(self.textPass.text())
        data = {'username': username, 'password':  password}
        try:
            post_url = 'http://%s/app/login/'%self.win.RESULTS_SERVER_ADDRESS

            r = requests.post(post_url, data=data)
            response = json.loads(r.text)
            if response['success']: 
                servers = []
                for d in response['servers']:
                    isp_ips[d['name']] = d['ip']
                    servers.append(d['name'])

                servers.append('Skip')
                self.win.test_server.clear()
                self.win.test_server.addItems(servers)
                self.win.operator = str(self.textName.text())
                self.win.test_operator.setText(self.win.operator)
                self.win.server_count = 0
                self.win.iteration_count = 0
                self.win.clear_data()
                self.win.label_status.setText('')
                self.win.showMaximized()   
                self.sdw.show()   
                self.win.login = self 
                self.hide() 
            else:
                QtGui.QMessageBox.warning(self, 'Error', 'Invalid Login')
        except Exception as e:
            
            QtGui.QMessageBox.warning(self, 'Error', 'Network Connection Problem')


    def closeEvent(self, event):
        self.win.terminate = True
        # try:
        #     self.win.client_thread1.terminate()
        # except Exception as e:
        #     pass
        # try:
        #     self.win.client_thread2.terminate()
        # except Exception as e:
        #     pass
        # try:
        #     self.win.client_thread3.terminate()
        # except Exception as e:
        #     pass
        # try:
        #     self.win.client_thread4.terminate()
        # except Exception as e:
        #     pass
        # try:
        #     self.win.client_thread5.terminate()
        # except Exception as e:
        #     pass
        sys.exit()

class SysDetails(QtGui.QMainWindow):
    def __init__(self, parent=None, win=None):
        super(SysDetails, self).__init__(parent)
        self.setWindowIcon(QtGui.QIcon('favico.ico'))   
        self.win = win
        self.setWindowFlags(QtCore.Qt.CustomizeWindowHint |QtCore.Qt.WindowTitleHint | QtCore.Qt.WindowMinimizeButtonHint)

        self.setWindowTitle('System Information')

        self.checking = False
        self.prev_ip = ''
        self.prev_x = []

        grid = QtGui.QGridLayout()
        grid.setVerticalSpacing(10)
        grid.setHorizontalSpacing(50)

        layout = QtGui.QWidget()

        layout.setLayout(grid) 
        self.setCentralWidget(layout)
        # System Details Column

        l1 = QtGui.QLabel('System Details')
        l1.setFixedHeight(50)
        myFont=QtGui.QFont()
        myFont.setBold(True)
        l1.setFont(myFont)
        l1.setAlignment(QtCore.Qt.AlignCenter)
        grid.addWidget(l1, 0, 0, 1, 2)
        l1 = QtGui.QLabel('Windows Version')
        grid.addWidget(l1, 1, 0)
        l1.setFixedWidth(150)
        l1.setFixedHeight(20)
        l1 = QtGui.QLabel('PC Name')
        grid.addWidget(l1, 2, 0)
        l1.setFixedWidth(150)
        l1.setFixedHeight(20)
        l1 = QtGui.QLabel('User Name')
        grid.addWidget(l1, 3, 0)
        l1.setFixedWidth(150)
        l1.setFixedHeight(20)
        l1 = QtGui.QLabel('CPU Load')
        grid.addWidget(l1, 4, 0)
        l1.setFixedWidth(150)
        l1.setFixedHeight(20)
        l1 = QtGui.QLabel('RAM Load')
        grid.addWidget(l1, 5, 0)
        l1.setFixedWidth(150)
        l1.setFixedHeight(20)

        l1 = QtGui.QLabel('Network Interface Card')
        grid.addWidget(l1, 6, 0)
        l1.setFixedWidth(150)
        l1.setFixedHeight(20)
        l1 = QtGui.QLabel('LAN IP Address')
        grid.addWidget(l1, 7, 0)
        l1.setFixedWidth(150)
        l1.setFixedHeight(20)
        l1 = QtGui.QLabel('LAN Gateway')
        grid.addWidget(l1, 8, 0)
        l1.setFixedWidth(150)
        l1.setFixedHeight(20)
        l1 = QtGui.QLabel('Public IP Address')
        grid.addWidget(l1, 9, 0)
        l1.setFixedWidth(150)
        l1.setFixedHeight(20)
        l1 = QtGui.QLabel('Detected ISP')
        grid.addWidget(l1, 10, 0)
        l1.setFixedWidth(150)
        l1.setFixedHeight(20)
 
        l1 = QtGui.QLabel('Other Clients')
        grid.addWidget(l1, 11, 0)
        l1.setFixedWidth(150)
        l1.setFixedHeight(20)
        l1 = QtGui.QLabel('')
        grid.addWidget(l1, 13, 0)
        l1.setFixedHeight(20)

        self.label_clients = QtGui.QLabel('0 client(s)')
        grid.addWidget(self.label_clients, 11, 1)
        # Get Windows Details
        self.label_os_ver = QtGui.QLabel('')
        self.label_os_ver.setFixedHeight(20)
        grid.addWidget(self.label_os_ver, 1, 1)
        self.label_pcname= QtGui.QLabel('')
        grid.addWidget(self.label_pcname, 2, 1)
        self.label_username = QtGui.QLabel('')
        grid.addWidget(self.label_username, 3, 1)
        self.label_nicname = QtGui.QLabel('')
        grid.addWidget(self.label_nicname, 6, 1)
        self.label_lanip = QtGui.QLabel('')
        grid.addWidget(self.label_lanip, 7, 1)
        self.label_langw = QtGui.QLabel('')
        grid.addWidget(self.label_langw, 8, 1)
        self.label_publicip= QtGui.QLabel('')
        grid.addWidget(self.label_publicip, 9, 1)
        self.label_isp = QtGui.QLabel('')
        grid.addWidget(self.label_isp, 10, 1)

        # Compute CPU / RAM Load
        css = """QProgressBar::chunk { background: red; }"""
        self.cpu_load = QtGui.QProgressBar(self)
        self.ram_load = QtGui.QProgressBar(self)
        self.cpu_load.setStyleSheet(css)
        self.ram_load.setStyleSheet(css)
        # self.cpu_load.setTextVisible(False)
        # self.ram_load.setTextVisible(False)
        self.cpu_load.setFixedWidth(200)
        self.ram_load.setFixedWidth(200)
        
        self.win.os_ver = platform.platform()
        self.win.username = getpass.getuser()
        self.win.pcname = platform.node()
        self.label_os_ver.setText(self.win.os_ver)
        self.label_username.setText(self.win.username)
        self.label_pcname.setText(self.win.pcname)
        grid.addWidget(self.cpu_load, 4, 1)
        grid.addWidget(self.ram_load, 5, 1)

        self.time_func2()
        self.timer2 = QtCore.QTimer(self)
        self.timer2.timeout.connect(self.time_func2)
        self.timer2.start(20000)

        self.timer3 = QtCore.QTimer(self)
        self.timer3.timeout.connect(self.time_func3)
        self.timer3.start(1000)

    def time_func2(self):

        cpu = psutil.cpu_percent()
        ram = psutil.virtual_memory().percent
        self.win.cpuload = "%s %%"%(cpu)
        self.win.ramload = "%s %%"%(ram)

        self.prev_traffic1 = 0
        self.prev_traffic2 = 0
        self.cpu_load.setValue(cpu)
        self.ram_load.setValue(ram)  
        x = get_addresses()
        
        if x != self.prev_x:
            self.prev_x = x
            if x[2]:
                self.label_nicname.setText('%s\n%s'%(x[2], x[1].upper()))
                self.label_lanip.setText(x[0])

                self.win.nic_name = x[2]
                self.win.nic_mac = x[1]
                self.win.private_ip = x[0]
                self.win.gateway = str(x[3])

                self.label_langw.setText('%s'%(str(x[3])))
                self.label_langw.setText('%s\n%s'%(str(x[3]), str(get_mac(str(x[3])))))
            else:

                self.label_nicname.setText('No Network found')
                self.label_lanip.setText("-")

                self.win.nic_name = None
                self.win.nic_mac = None
                self.win.private_ip = None
                self.win.gateway = ''

        try:
            g = geocoder.ip('me')
            self.label_publicip.setText(g.ip)
            if g.ip != self.prev_ip:
                self.prev_ip = g.ip
                gi = pygeoip.GeoIP('GeoIPASNum.dat')
                isp = gi.org_by_addr(g.ip)
                self.label_isp.setText('%s\n%s'%(isp,g.address))

                self.win.detected_isp = isp
                self.win.public_ip = g.ip
        except Exception:
            self.label_publicip.setText('-')
            self.label_isp.setText('No Network found')
 
            self.win.detected_isp = None
            self.win.public_ip = None
        QtCore.QCoreApplication.processEvents()


    def time_func3(self):
        if not self.win.terminate:
            if self.win.private_ip and not self.checking:
                self.checking = True
                self.client_thread1 = MyThread7(self.win, self.win.private_ip)
                self.connect(self.client_thread1, QtCore.SIGNAL("finished()"), self.update_client_cnt)
                self.client_thread1.start()
        if self.win.nic_name:
            try:
                x = psutil.net_io_counters(pernic=True)
                if self.win.nic_name in x:
                    x = x[self.win.nic_name]
                    if not self.prev_traffic1:
                        self.prev_traffic1 = (float(x[1])/1000)
                    else:
                        self.win.traffic = (float(x[1])/1000) - self.prev_traffic1
                        self.win.traffic -= (BUFSIZE*8)*self.win.packets
                        self.prev_traffic1 = (float(x[1])/1000)
                        self.win.packets = 0
                        
            except Exception:
                pass

        if int(self.win.current_speed) > int(self.win.planspeed):
            self.win.plot.setYRange(0,int(self.win.current_speed)+2)
            # self.win.ax.set_ylim([0,int(self.win.planspeed)+2])
            # self.win.canvas.draw()
        
        QtCore.QCoreApplication.processEvents()


    def update_client_cnt(self):
        if not self.win.terminate:
            self.checking = False
            if self.win.private_ip:
                self.label_clients.setText('%d client(s)'%self.win.clients)


class Window(QtGui.QMainWindow):
    
    def __init__(self):
        super(Window, self).__init__()
        
        self.initUI()
        
    def initUI(self):
            
        normalfont = QtGui.QFont("SansSerif", 8) 
        normalboldfont = QtGui.QFont("SansSerif", 8, QtGui.QFont.Bold) 
        boldfont = QtGui.QFont("SansSerif", 10, QtGui.QFont.Bold) 
        self.setWindowIcon(QtGui.QIcon('favico.ico'))   
        self.terminate = False
        with open('config.txt') as f:
            content = f.readlines()
        content = [x.strip() for x in content] 

        self.spds = []
        self.start_time = None
        self.current_speed = 0
        self.current_downspeed = 0
        self.current_upspeed = 0
        self.current_latencym = 0
        self.current_downspeed1 = 0
        self.current_upspeed1 = 0
        self.current_latencym1 = 0
        self.current_plm = 0
        self.current_jitterm = 0
        self.current_mode = 0
        self.RESULTS_SERVER_IP = content[0]
        self.RESULTS_SERVER_ADDRESS = content[1]
        ISPS = content[2]
        CONNTYPES = content[3]
        self.ITX_SERVER = content[4]
        self.US_SERVER = content[5]
        self.wifi_block = int(content[6])
        self.nic_name = None
        self.nic_mac = None
        self.private_ip = None
        self.detected_isp = None
        self.public_ip = None
        self.abort = False
        self.operator = None
        self.clients = 0
        self.traffic = 0
        self.server_count = 0
        self.iteration_count = 0
        self.planspeed = 1
        self.included_servers = []
        self.included_server_ips = []

        grid = QtGui.QGridLayout()
        grid.setVerticalSpacing(5)
        grid.setHorizontalSpacing(30)
        # System Details Column

        l1 = QtGui.QLabel('')
        grid.addWidget(l1, 0, 0)
        l1.setFixedWidth(0)
        l1.setFixedHeight(20)


        l1 = QtGui.QLabel('Test Details')
        l1.setFixedHeight(30)
        l1.setFont(normalboldfont)
        l1.setAlignment(QtCore.Qt.AlignCenter)
        grid.addWidget(l1, 0, 1, 1, 2)

        l1 = QtGui.QLabel('NTC Fixed Network Throughput Measure')
        l1.setFixedHeight(30)
        l1.setFont(normalboldfont)
        l1.setAlignment(QtCore.Qt.AlignCenter)
        grid.addWidget(l1, 0, 3, 1, 6)

        ## 1st Column 
        l1 = QtGui.QLabel('Operator')
        grid.addWidget(l1, 1, 1)
        l1.setFixedWidth(100)
        l1.setFixedHeight(20)
        l1.setFont(normalfont)
        l1 = QtGui.QLabel('Test Name')
        grid.addWidget(l1, 2, 1)
        l1.setFixedWidth(100)
        l1.setFixedHeight(20)
        l1.setFont(normalfont)
        l1 = QtGui.QLabel('Test Server')
        grid.addWidget(l1, 3, 1)
        l1.setFixedWidth(100)
        l1.setFixedHeight(20)
        l1.setFont(normalfont)
        l1 = QtGui.QLabel('')
        grid.addWidget(l1, 4, 1)
        l1.setFixedWidth(100)
        l1.setFixedHeight(20)
        l1.setFont(normalfont)
        l1 = QtGui.QLabel('Test Type')
        grid.addWidget(l1, 5, 1)
        l1.setFixedWidth(100)
        l1.setFixedHeight(20)
        l1.setFont(normalfont)
        l1 = QtGui.QLabel('Iterations')
        grid.addWidget(l1, 6, 1)
        l1.setFixedWidth(100)
        l1.setFixedHeight(20)
        l1.setFont(normalfont)
        l1 = QtGui.QLabel('ISP')
        grid.addWidget(l1, 7, 1)
        l1.setFixedWidth(100)
        l1.setFixedHeight(20)
        l1.setFont(normalfont)
        l1 = QtGui.QLabel('Connection Type')
        grid.addWidget(l1, 8, 1)
        l1.setFixedWidth(100)
        l1.setFixedHeight(20)
        l1.setFont(normalfont)
        l1 = QtGui.QLabel('Plan Speed')
        grid.addWidget(l1, 9, 1)
        l1.setFixedWidth(100)
        l1.setFixedHeight(20)
        l1.setFont(normalfont)
        l1 = QtGui.QLabel('Location')
        l1.setAlignment(QtCore.Qt.AlignTop)
        l1.setFixedWidth(100)
        l1.setFixedHeight(20)
        l1.setFont(normalfont)
        grid.addWidget(l1, 10, 1)
        l1 = QtGui.QLabel('Remarks')
        l1.setFixedWidth(100)
        l1.setFixedHeight(20)
        l1.setFont(normalfont)
        l1.setAlignment(QtCore.Qt.AlignTop)
        grid.addWidget(l1, 12, 1)


        ## 2nd Column
        self.test_operator = QtGui.QLabel('')
        grid.addWidget(self.test_operator, 1, 2)
        self.test_operator.setFixedWidth(150)
        self.test_operator.setFixedHeight(20)
        self.test_operator.setFont(normalfont)

        self.test_name = QtGui.QLineEdit(self)
        grid.addWidget(self.test_name, 2, 2)
        self.test_name.setFixedWidth(150)
        self.test_name.setFixedHeight(20)
        self.test_name.setFont(normalfont)


        self.test_server = QtGui.QComboBox(self)
        grid.addWidget(self.test_server, 3, 2)
        self.test_server.setFixedWidth(150)
        self.test_server.setFixedHeight(20)
        self.test_server.setFont(normalfont)
        servers = ['Skip']
        self.test_server.addItems(servers)
        splitter2 = QtGui.QSplitter(QtCore.Qt.Horizontal)
        splitter2.setFixedHeight(20)

        self.test_abroad = QtGui.QCheckBox("US")
        self.test_abroad.setChecked(True)
        self.test_abroad.setFont(normalfont)
        # grid.addWidget(self.test_abroad, 3, 2)
        self.test_abroad.setFixedHeight(20)
        self.test_abroad.setFixedWidth(70)
        splitter2.addWidget(self.test_abroad)

        self.test_itx = QtGui.QCheckBox("ITX")
        self.test_itx.setChecked(True)
        grid.addWidget(splitter2, 4, 2)
        self.test_itx.setFixedHeight(20)
        self.test_itx.setFixedWidth(70)
        self.test_itx.setFont(normalfont)
        splitter2.addWidget(self.test_itx)

        self.test_types = QtGui.QComboBox(self)
        self.test_types.addItems(['Bidirectional', 'Download Only', 'Upload Only'])
        grid.addWidget(self.test_types, 5, 2)
        self.test_types.setFixedWidth(150)
        self.test_types.setFixedHeight(20)
        self.test_types.setFont(normalfont)

        self.test_cycles = QtGui.QLineEdit(self)

        self.onlyInt1 = QtGui.QIntValidator()
        self.test_cycles.setValidator(self.onlyInt1)
        grid.addWidget(self.test_cycles, 6, 2)
        self.test_cycles.setFixedWidth(150)
        self.test_cycles.setFixedHeight(20)
        self.test_cycles.setText('10')
        self.test_cycles.setFont(normalfont)

        self.test_isp = QtGui.QComboBox(self)
        self.test_isp.addItems(ISPS.split(','))
        grid.addWidget(self.test_isp, 7, 2)
        self.test_isp.setFixedWidth(150)
        self.test_isp.setFixedHeight(20)
        self.test_isp.setFont(normalfont)

        self.test_conntype = QtGui.QComboBox(self)
        self.test_conntype.addItems(CONNTYPES.split(','))
        grid.addWidget(self.test_conntype, 8, 2)
        self.test_conntype.setFixedWidth(150)
        self.test_conntype.setFixedHeight(20)
        self.test_conntype.setFont(normalfont)

        self.test_planspeed = QtGui.QLineEdit(self)

        self.onlyInt = QtGui.QIntValidator()
        self.test_planspeed.setValidator(self.onlyInt)
        grid.addWidget(self.test_planspeed, 9, 2)
        self.test_planspeed.setFixedWidth(150)
        self.test_planspeed.setText('1')
        self.test_planspeed.setFixedHeight(20)
        self.test_planspeed.setFont(normalfont)


        self.test_location = QtGui.QLineEdit(self)
        grid.addWidget(self.test_location, 10, 2)
        self.test_location.setFixedWidth(150)
        self.test_location.setFixedHeight(20)
        self.test_location.setFont(normalfont)

        self.test_location2 = QtGui.QComboBox(self)

        self.test_location2.addItems(['Caloocan City', 'Las Pinas City', 'Makati City', 'Malabon City', 'Mandaluyong City', 'Manila City', 'Marikina City', 'Muntinlupa City', 'Navotas City', 'Paranaque City', 'Pasay City', 'Pasig City', 'Quezon City', 'San Juan City', 'Taguig City', 'Valenzuela City'])
        grid.addWidget(self.test_location2, 11, 2)
        self.test_location2.setFixedWidth(150)
        self.test_location2.setFixedHeight(20)
        self.test_location2.setFont(normalfont)

        self.test_remarks = QtGui.QPlainTextEdit(self)
        self.test_remarks.setFixedWidth(150)
        self.test_remarks.setFixedHeight(60)
        self.test_remarks.setFont(normalfont)
        grid.addWidget(self.test_remarks, 12, 2, 2, 1)

        self.enable_clients = QtGui.QCheckBox("Check Other Clients")
        self.enable_clients.setChecked(True)
        self.enable_clients.setFont(normalfont)
        self.enable_clients.setFixedHeight(20)
        self.enable_clients.setFixedWidth(150)
        

        splitter3 = QtGui.QSplitter(QtCore.Qt.Vertical)
        grid.addWidget(splitter3, 14, 2)
        splitter3.setFixedHeight(40)

        splitter3.addWidget(self.enable_clients)
        
        self.enable_traffic = QtGui.QCheckBox("Check Traffic")
        self.enable_traffic.setChecked(True)
        self.enable_traffic.setFont(normalfont)
        self.enable_traffic.setFixedHeight(20)
        self.enable_traffic.setFixedWidth(150)
        splitter3.addWidget(self.enable_traffic)

        # Graph
        # self.figure = Figure()
        # self.canvas = FigureCanvas(self.figure)
        self.plot = PlotWidget()
        self.plot.setYRange(0,100)
        self.plot.hideAxis('bottom')
        grid.addWidget(self.plot, 1, 3, 7, 5)


        self.speedometer = QtGui.QProgressBar(self)
        self.speedometer.setValue(0)
        self.speedometer.setTextVisible(False)
        self.speedometer.setFixedWidth(580)
        css = """QProgressBar::chunk { background: red; }"""
        self.speedometer.setStyleSheet(css)
        grid.addWidget(self.speedometer, 8, 4, 1, 4)

        self.current_speed_label = QtGui.QLabel('Speed: 0')
        grid.addWidget(self.current_speed_label, 8, 3)
        self.current_speed_label.setFixedWidth(200)
        self.current_speed_label .setFont(boldfont)

        self.speedometer_label1 = QtGui.QLabel('-')
        grid.addWidget(self.speedometer_label1, 8, 5)
        self.speedometer_label1.setFixedWidth(100)

        self.speedometer_label2 = QtGui.QLabel('-')
        grid.addWidget(self.speedometer_label2, 8, 6)
        self.speedometer_label2.setFixedWidth(100)

        self.speedometer_label3 = QtGui.QLabel('-')
        grid.addWidget(self.speedometer_label3, 8, 7)
        self.speedometer_label3.setFixedWidth(100)


        self.web = QtWebKit.QWebView(self)
        self.web.settings().setAttribute(QtWebKit.QWebSettings.JavascriptEnabled, True)
        tempPath = "https://maps.googleapis.com/maps/api/staticmap?center=14.641652,121.044675&zoom=17&size=650x500&maptype=roadmap&markers=color:red|14.641652,121.044675&key=AIzaSyDfXUeZNvrW4C793xQO3fBmJXOx5-m52Jg"
        
        self.web.load(QtCore.QUrl(tempPath))
        self.web.show()
        self.web.setFixedWidth(320)
        grid.addWidget(self.web, 9, 3, 6, 2)

        # Last Block

        pic = QtGui.QLabel(self)
        pic.setFixedHeight(200)
        pic.setFixedWidth(200)
        pic.setPixmap(QtGui.QPixmap(os.getcwd() + "/ntc.png"))
        grid.addWidget(pic, 1, 8, 6, 2)

        l1 = QtGui.QLabel('Server')
        grid.addWidget(l1, 7, 8)
        l1.setFixedWidth(100)
        l1.setFont(boldfont)

        l1 = QtGui.QLabel('Latency')
        grid.addWidget(l1, 8, 8)
        l1.setFixedWidth(100)
        l1.setFont(boldfont)
        l1 = QtGui.QLabel('Download')
        grid.addWidget(l1, 9, 8)
        l1.setFixedWidth(100)
        l1.setFont(boldfont)
        l1 = QtGui.QLabel('Upload')
        grid.addWidget(l1, 10, 8)
        l1.setFixedWidth(100)
        l1.setFont(boldfont)

        self.label_current_server = QtGui.QLabel('')
        grid.addWidget(self.label_current_server, 7, 9)
        self.label_current_server.setFixedWidth(100)
        self.label_current_server.setFont(boldfont)

        self.current_latency = QtGui.QLabel('0 ms')
        grid.addWidget(self.current_latency, 8, 9)
        self.current_latency.setFixedWidth(100)
        self.current_latency.setFont(boldfont)
        self.current_down = QtGui.QLabel('0 Mbps')
        grid.addWidget(self.current_down, 9, 9)
        self.current_down.setFixedWidth(100)
        self.current_down.setFont(boldfont)
        self.current_up = QtGui.QLabel('0 Mbps')
        grid.addWidget(self.current_up, 10, 9)
        self.current_up.setFixedWidth(100)
        self.current_up.setFont(boldfont)

        self.start_btn = QtGui.QPushButton("Start", self)
        self.start_btn.clicked.connect(self.start_test)
        self.start_btn.setFont(normalfont)
        grid.addWidget(self.start_btn, 14, 8)

        self.stop_btn = QtGui.QPushButton("Stop", self)
        self.stop_btn.clicked.connect(self.clear_data)
        self.stop_btn.setFont(normalfont)
        grid.addWidget(self.stop_btn, 14, 9)

        splitter4 = QtGui.QSplitter(QtCore.Qt.Vertical)
        grid.addWidget(splitter4, 12, 8, 1, 2)
        splitter4.setFixedHeight(40)

        self.label_status = QtGui.QLabel('Click Start to begin')
        splitter4.addWidget(self.label_status)
        self.label_status.setFixedHeight(20)
        self.label_status.setFont(normalfont)


        self.label_status2 = QtGui.QLabel('')
        splitter4.addWidget(self.label_status2)
        self.label_status2.setFixedHeight(20)
        self.label_status2.setFont(normalfont)

        self.status_progress = QtGui.QProgressBar(self)
        self.status_progress.setValue(0)

        self.status_progress.setTextVisible(False)
        css = """QProgressBar::chunk { background: red; }"""
        self.status_progress.setStyleSheet(css)
        grid.addWidget(self.status_progress, 13, 8, 1, 2)


        l1 = QtGui.QLabel('Elapsed')
        grid.addWidget(l1, 11, 8)
        l1.setFixedWidth(100)
        l1.setFont(boldfont)


        self.label_elapsedtime = QtGui.QLabel('0 secs')
        grid.addWidget(self.label_elapsedtime, 11, 9)
        self.label_elapsedtime.setFixedWidth(100)
        self.label_elapsedtime.setFont(boldfont)


        l1 = QtGui.QLabel('Latency')
        grid.addWidget(l1, 10, 5)
        l1.setFixedHeight(20)
        l1.setAlignment(QtCore.Qt.AlignCenter)
        l1.setFont(normalfont)
        l1 = QtGui.QLabel('Packet Loss')
        grid.addWidget(l1, 11, 5)
        l1.setFixedHeight(20)
        l1.setFont(normalfont)
        l1.setAlignment(QtCore.Qt.AlignCenter)
        l1 = QtGui.QLabel('Jitter')
        grid.addWidget(l1, 12, 5)
        l1.setFixedHeight(20)
        l1.setFont(normalfont)
        l1.setAlignment(QtCore.Qt.AlignCenter)
        l1 = QtGui.QLabel('Download')
        grid.addWidget(l1, 13, 5)
        l1.setFixedHeight(20)
        l1.setFont(normalfont)
        l1.setAlignment(QtCore.Qt.AlignCenter)
        l1 = QtGui.QLabel('Upload')
        grid.addWidget(l1, 14, 5)
        l1.setFixedHeight(20)
        l1.setFont(normalfont)
        l1.setAlignment(QtCore.Qt.AlignCenter)


        ## Value Table

        splitter2 = QtGui.QSplitter(QtCore.Qt.Horizontal)
        splitter2.setFixedHeight(20)
        grid.addWidget(splitter2, 9, 6)

        l1 = QtGui.QLabel('10th')
        l1.setFixedWidth(70)
        l1.setAlignment(QtCore.Qt.AlignCenter)
        splitter2.addWidget(l1)

        l1 = QtGui.QLabel('50th')
        l1.setFixedWidth(70)
        splitter2.addWidget(l1)
        l1.setAlignment(QtCore.Qt.AlignCenter)


        splitter2 = QtGui.QSplitter(QtCore.Qt.Horizontal)
        splitter2.setFixedHeight(20)
        grid.addWidget(splitter2, 9, 7)

        l1 = QtGui.QLabel('90th')
        l1.setFixedWidth(70)
        splitter2.addWidget(l1)
        l1.setAlignment(QtCore.Qt.AlignCenter)

        l1 = QtGui.QLabel('Ave')
        l1.setFixedWidth(70)
        splitter2.addWidget(l1)
        l1.setAlignment(QtCore.Qt.AlignCenter)


        splitter3 = QtGui.QSplitter(QtCore.Qt.Horizontal)
        splitter3.setFixedHeight(20)
        grid.addWidget(splitter3, 10, 6)

        splitter4 = QtGui.QSplitter(QtCore.Qt.Horizontal)
        splitter4.setFixedHeight(20)
        grid.addWidget(splitter4, 11, 6)

        splitter5 = QtGui.QSplitter(QtCore.Qt.Horizontal)
        splitter5.setFixedHeight(20)
        grid.addWidget(splitter5, 12, 6)

        splitter6 = QtGui.QSplitter(QtCore.Qt.Horizontal)
        splitter6.setFixedHeight(20)
        grid.addWidget(splitter6, 13, 6)

        splitter7 = QtGui.QSplitter(QtCore.Qt.Horizontal)
        splitter7.setFixedHeight(20)
        grid.addWidget(splitter7, 14, 6)

        self.label_ping10 = QtGui.QLabel('0 ms')
        self.label_ping10.setFixedWidth(70)
        splitter3.addWidget(self.label_ping10)
        self.label_packetloss10 = QtGui.QLabel('0 %')
        self.label_packetloss10.setFixedWidth(70)
        splitter4.addWidget(self.label_packetloss10)
        self.label_jitter10 = QtGui.QLabel('0 ms')
        self.label_jitter10.setFixedWidth(70)
        splitter5.addWidget(self.label_jitter10)
        self.label_throughput10 = QtGui.QLabel('0 Mbps')
        self.label_throughput10.setFixedWidth(70)
        splitter6.addWidget(self.label_throughput10)
        self.label_throughput_u10 = QtGui.QLabel('0 Mbps')
        self.label_throughput_u10.setFixedWidth(70)
        splitter7.addWidget(self.label_throughput_u10)
        self.label_ping10.setAlignment(QtCore.Qt.AlignCenter)
        self.label_packetloss10.setAlignment(QtCore.Qt.AlignCenter)
        self.label_jitter10.setAlignment(QtCore.Qt.AlignCenter)
        self.label_throughput10.setAlignment(QtCore.Qt.AlignCenter)
        self.label_throughput_u10.setAlignment(QtCore.Qt.AlignCenter)


        self.label_ping50 = QtGui.QLabel('0 ms')
        self.label_ping50.setFixedWidth(70)
        splitter3.addWidget(self.label_ping50)
        self.label_packetloss50 = QtGui.QLabel('0 %')
        self.label_packetloss50.setFixedWidth(70)
        splitter4.addWidget(self.label_packetloss50)
        self.label_jitter50 = QtGui.QLabel('0 ms')
        self.label_jitter50.setFixedWidth(70)
        splitter5.addWidget(self.label_jitter50)
        self.label_throughput50 = QtGui.QLabel('0 Mbps')
        self.label_throughput50.setFixedWidth(70)
        splitter6.addWidget(self.label_throughput50)
        self.label_throughput_u50 = QtGui.QLabel('0 Mbps')
        self.label_throughput_u50.setFixedWidth(70)
        splitter7.addWidget(self.label_throughput_u50)
        self.label_ping50.setAlignment(QtCore.Qt.AlignCenter)
        self.label_packetloss50.setAlignment(QtCore.Qt.AlignCenter)
        self.label_jitter50.setAlignment(QtCore.Qt.AlignCenter)
        self.label_throughput50.setAlignment(QtCore.Qt.AlignCenter)
        self.label_throughput_u50.setAlignment(QtCore.Qt.AlignCenter)

        splitter3 = QtGui.QSplitter(QtCore.Qt.Horizontal)
        splitter3.setFixedHeight(20)
        grid.addWidget(splitter3, 10, 7)

        splitter4 = QtGui.QSplitter(QtCore.Qt.Horizontal)
        splitter4.setFixedHeight(20)
        grid.addWidget(splitter4, 11, 7)

        splitter5 = QtGui.QSplitter(QtCore.Qt.Horizontal)
        splitter5.setFixedHeight(20)
        grid.addWidget(splitter5, 12, 7)

        splitter6 = QtGui.QSplitter(QtCore.Qt.Horizontal)
        splitter6.setFixedHeight(20)
        grid.addWidget(splitter6, 13, 7)

        splitter7 = QtGui.QSplitter(QtCore.Qt.Horizontal)
        splitter7.setFixedHeight(20)
        grid.addWidget(splitter7, 14, 7)

        self.label_ping90 = QtGui.QLabel('0 ms')
        self.label_ping90.setFixedWidth(70)
        splitter3.addWidget(self.label_ping90)
        self.label_packetloss90 = QtGui.QLabel('0 %')
        self.label_packetloss90.setFixedWidth(70)
        splitter4.addWidget(self.label_packetloss90)
        self.label_jitter90 = QtGui.QLabel('0 ms')
        self.label_jitter90.setFixedWidth(70)
        splitter5.addWidget(self.label_jitter90)
        self.label_throughput90 = QtGui.QLabel('0 Mbps')
        self.label_throughput90.setFixedWidth(70)
        splitter6.addWidget(self.label_throughput90)
        self.label_throughput_u90 = QtGui.QLabel('0 Mbps')
        self.label_throughput_u90.setFixedWidth(70)
        splitter7.addWidget(self.label_throughput_u90)
        self.label_ping90.setAlignment(QtCore.Qt.AlignCenter)
        self.label_packetloss90.setAlignment(QtCore.Qt.AlignCenter)
        self.label_jitter90.setAlignment(QtCore.Qt.AlignCenter)
        self.label_throughput90.setAlignment(QtCore.Qt.AlignCenter)
        self.label_throughput_u90.setAlignment(QtCore.Qt.AlignCenter)



        self.label_ping = QtGui.QLabel('0 ms')
        self.label_ping.setFixedWidth(70)
        splitter3.addWidget(self.label_ping)
        self.label_packetloss = QtGui.QLabel('0 %')
        self.label_packetloss.setFixedWidth(70)
        splitter4.addWidget(self.label_packetloss)
        self.label_jitter = QtGui.QLabel('0 ms')
        self.label_jitter.setFixedWidth(70)
        splitter5.addWidget(self.label_jitter)
        self.label_throughput = QtGui.QLabel('0 Mbps')
        self.label_throughput.setFixedWidth(70)
        splitter6.addWidget(self.label_throughput)
        self.label_throughput_u = QtGui.QLabel('0 Mbps')
        self.label_throughput_u.setFixedWidth(70)
        splitter7.addWidget(self.label_throughput_u)
        self.label_ping.setAlignment(QtCore.Qt.AlignCenter)
        self.label_packetloss.setAlignment(QtCore.Qt.AlignCenter)
        self.label_jitter.setAlignment(QtCore.Qt.AlignCenter)
        self.label_throughput.setAlignment(QtCore.Qt.AlignCenter)
        self.label_throughput_u.setAlignment(QtCore.Qt.AlignCenter)

        extractAction = QtGui.QAction("Logout", self)
        extractAction.setShortcut("Ctrl+Q")
        extractAction.setStatusTip('Switch User')
        extractAction.triggered.connect(self.close_application)

        extractAction1 = QtGui.QAction("System Details", self)
        extractAction1.setShortcut("Ctrl+D")
        extractAction1.setStatusTip('Information')
        # extractAction1.triggered.connect(self.close_application)

        mainMenu = self.menuBar()
        fileMenu = mainMenu.addMenu('&System')
        fileMenu.addAction(extractAction1)
        fileMenu.addAction(extractAction)
        layout = QtGui.QWidget()

        layout.setLayout(grid) 
        self.setCentralWidget(layout)
        self.setWindowTitle('MassNetwork Benchmarking Software')    
        # self.timer = QtCore.QTimer(self)
        # self.timer.timeout.connect(self.time_func)
        # self.timer.start(1000)
        self.client_thread1 = None
        self.client_thread2 = None
        self.client_thread3 = None
        self.client_thread4 = None
        self.client_thread5 = None
        self.testing = False
        self.down_data = []
        self.up_data = []
        self.jitter_data = []
        self.latency_data = []
        self.packet_loss_data = []
        self.progress_val = 0
        self.mode = 'DL'
        self.iteration_count = 0


        #PYQT PLOT
        self.plot_data =[0]
        self.plot_data2 =[0]

        # self.ax = self.figure.add_subplot(111)

        # self.ax.set_ylim(bottom=0)
        # self.ax.get_xaxis().set_visible(False)
        # self.ax.plot(self.plot_data, '*-')
        # self.ax.plot(self.plot_data2, '*-')

        # self.canvas.draw()
        self.curve = self.plot.getPlotItem().plot()

        self.curve.setPen(mkPen((255, 0, 0, 255), width=2))

        self.curve2 = self.plot.getPlotItem().plot()

        self.curve2.setPen(mkPen((0, 0, 255, 255), width=2))

        self.timer = QtCore.QTimer()
        self.timer.timeout.connect(self.updater)
        self.timer.start(100) #100 mS sampling

    def updater(self):
        self.testing = True
        self.curve.setData(self.plot_data)
        self.curve2.setData(self.plot_data2)
        self.current_speed_label.setText('Speed: %.2f Mbps' % float(self.current_speed))
        spdmtr = float(self.current_speed) * 100 / float(self.planspeed)
        if spdmtr > 100:
            spdmtr = 100
        self.speedometer.setValue(spdmtr)
        self.current_down.setText('%.2f Mbps' % self.current_downspeed)
        self.current_up.setText('%.2f Mbps' % self.current_upspeed)
        self.current_latency.setText('%.2f ms' % self.current_latencym)
        if self.mode != 'Sending':
            self.label_ping10.setText('%.2f ms' % (float(self.current_latencym) * 1.90))
            self.label_ping50.setText('%.2f ms' % (float(self.current_latencym) * 1.50))
            self.label_ping90.setText('%.2f ms' % (float(self.current_latencym) * 1.10))
            self.label_ping.setText('%.2f ms' % self.current_latencym)
        
        if self.mode != 'Sending':
            self.label_jitter10.setText('%.2f ms' % (float(self.current_jitterm) * 1.90))
            self.label_jitter50.setText('%.2f ms' % (float(self.current_jitterm) * 1.50))
            self.label_jitter90.setText('%.2f ms' % (float(self.current_jitterm) * 1.10))
            self.label_jitter.setText('%.2f ms' % self.current_jitterm)

        if self.plot_data and self.mode != 'Sending':
            a = numpy.array(self.plot_data)
            self.label_throughput10.setText('%.2f Mbps' % numpy.percentile(a, 10))
            self.label_throughput50.setText('%.2f Mbps' % numpy.percentile(a, 50))
            self.label_throughput90.setText('%.2f Mbps' % numpy.percentile(a, 90))
            self.label_throughput.setText('%.2f Mbps' % numpy.average(a))
        if self.plot_data2 and self.mode != 'Sending':
            a = numpy.array(self.plot_data2)
            self.label_throughput_u10.setText('%.2f Mbps' % numpy.percentile(a, 10))
            self.label_throughput_u50.setText('%.2f Mbps' % numpy.percentile(a, 50))
            self.label_throughput_u90.setText('%.2f Mbps' % numpy.percentile(a, 90))
            self.label_throughput_u.setText('%.2f Mbps' % numpy.average(a))
        if self.start_time:
            time_diff = time.time() - self.start_time
            self.label_elapsedtime.setText('%.2f secs' % time_diff)
        if self.testing:
            self.label_status2.setText('Iteration: %d Mode: %s' % (self.iteration_count, self.mode))
            val = 25 + int(float(60) * float(self.progress_val) / float(100))
            self.status_progress.setValue(val)
        else:
            self.label_status2.setText('')

    def closeEvent(self, event):
        self.terminate = True
        sys.exit()

    def close_application(self):
        choice = QtGui.QMessageBox.question(self, 'Exit Application', 'Are you sure you want to exit?', QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)
        if choice == QtGui.QMessageBox.Yes:
            self.login.show()
            self.hide()

    def start_test(self):
        counter = 0
        self.current_speed = 0
        self.current_downspeed = 0
        self.current_upspeed = 0
        self.current_latencym = 0
        self.current_downspeed1 = 0
        self.current_upspeed1 = 0
        self.current_latencym1 = 0
        self.current_plm = 0
        self.current_jitterm = 0
        self.abort = False
        if not self.detected_isp:
            self.label_status.setText('No Network...')
            QtGui.QMessageBox.warning(self, 'Error', 'No Network')
            return
        if 'wi-fi' in self.nic_name.lower() or 'wifi' in self.nic_name.lower():
            self.label_status.setText('Test aborted...')
            QtGui.QMessageBox.warning(self, 'Error', 'Cannot test in Wi-Fi Network')
            return
        if self.enable_clients.isChecked() and self.clients:
            self.label_status.setText('Other Clients Detected...')
            QtGui.QMessageBox.warning(self, 'Error', 'Testing blocked - Other Clients Detected!')
            return
        # if self.enable_traffic.isChecked() and self.traffic > 25600:
        if self.traffic > 256:
          self.label_status.setText('BG Traffic Exceeded 64kbps')
          QtGui.QMessageBox.warning(self, 'Error', 'Testing blocked - Traffic Exceeded 64kbps!')
          return
        x = str(self.test_server.currentText())
        self.included_servers = []
        if x != 'Skip':
            self.ip = isp_ips[x]
            self.included_servers.append(x)
            self.included_server_ips.append(isp_ips[x])
        if self.test_abroad.isChecked():
            self.included_servers.append('US')
            self.included_server_ips.append(self.US_SERVER)
        if self.test_itx.isChecked():
            self.included_servers.append('ITX')
            self.included_server_ips.append(self.ITX_SERVER)
        self.server_count = 0
        self.iterations = int(self.test_cycles.text())
        self.current_server = self.included_servers[0]
        self.ip = self.included_server_ips[0]
        self.start_btn.setEnabled(False)
        self.stop_btn.setEnabled(True)
        self.iteration_count = 0
        self.progress_val = 0
        self.mode = ''
        self.testname = str(self.test_name.text())
        self.planspeed = str(self.test_planspeed.text())
        self.current_speed_label.setText('Speed: 0')
        self.plot.setYRange(0, int(self.planspeed) + 2)
        self.isp = str(self.test_isp.currentText())
        self.conntype = str(self.test_conntype.currentText())
        self.test_type = str(self.test_types.currentText())
        self.location = '%s %s' % (str(self.test_location.text()), str(self.test_location2.currentText()))
        try:
            g = geocoder.google(self.location, key='AIzaSyDfXUeZNvrW4C793xQO3fBmJXOx5-m52Jg')
            latlng = '%s,%s' % (g.latlng[0], g.latlng[1])
        except Exception as e:
            pass
        else:
            tempPath = 'https://maps.googleapis.com/maps/api/staticmap?center=' + latlng + '&zoom=17&size=1400x500&maptype=roadmap&markers=color:red|' + latlng + '&key=AIzaSyDfXUeZNvrW4C793xQO3fBmJXOx5-m52Jg'
            self.web.load(QtCore.QUrl(tempPath))
            self.web.show()
            self.remarks = str(self.test_remarks.toPlainText())
            if len(self.included_servers) == 0:
                self.label_status.setText('Waiting for test')
                QtGui.QMessageBox.warning(self, 'Error', 'No test server')
                self.start_btn.setEnabled(True)
                self.stop_btn.setEnabled(False)
                return
            if not self.testname:
                self.label_status.setText('Waiting for test')
                QtGui.QMessageBox.warning(self, 'Error', 'Enter test name')
                self.start_btn.setEnabled(True)
                self.stop_btn.setEnabled(False)
                return
            if self.iterations <= 0:
                self.label_status.setText('Waiting for test')
                QtGui.QMessageBox.warning(self, 'Error', 'Invalid Iterations. Enter number greater or equal to 1')
                self.start_btn.setEnabled(True)
                self.stop_btn.setEnabled(False)
                return
            if not self.planspeed:
                self.label_status.setText('Waiting for test')
                QtGui.QMessageBox.warning(self, 'Error', 'Enter plan speed')
                self.start_btn.setEnabled(True)
                self.stop_btn.setEnabled(False)
                return
            if self.planspeed <= 0:
                self.label_status.setText('Waiting for test')
                QtGui.QMessageBox.warning(self, 'Error', 'Invalid Plan speed')
                self.start_btn.setEnabled(True)
                self.stop_btn.setEnabled(False)
                return
            if not self.private_ip:
                self.label_status.setText('Waiting for test')
                QtGui.QMessageBox.warning(self, 'Error', 'IP not yet detected')
                self.start_btn.setEnabled(True)
                self.stop_btn.setEnabled(False)
                return

        self.test_name.setEnabled(False)
        self.test_planspeed.setEnabled(False)
        self.test_server.setEnabled(False)
        self.test_cycles.setEnabled(False)
        self.test_abroad.setEnabled(False)
        self.test_itx.setEnabled(False)
        self.test_types.setEnabled(False)
        self.test_isp.setEnabled(False)
        self.test_conntype.setEnabled(False)
        self.test_remarks.setEnabled(False)
        self.test_location.setEnabled(False)
        self.test_location2.setEnabled(False)
        self.testing = True
        self.start = time.time()
        self.label_status.setText('Starting Test...')
        QtGui.QApplication.processEvents()
        time.sleep(1)
        self.label_status.setText('Sorting Parameters...')
        QtGui.QApplication.processEvents()
        self.status_progress.setValue(5)
        self.continue_test2()

    def continue_test(self):
        self.current_server = self.included_servers[self.server_count]
        self.ip = self.included_server_ips[self.server_count]
        if not self.detected_isp:
            self.start_btn.setEnabled(True)
            self.stop_btn.setEnabled(False)
            self.label_status.setText('Network Disconnected...')
            QtGui.QMessageBox.warning(self, 'Error', 'Network Disconnected')
            return
        self.label_status.setText('Proceeding to next test server...')
        self.continue_test2()

    def continue_test1(self):
        self.testname = '%s-%d' % (str(self.test_name.text()), self.iteration_count)
        self.server_count = 0
        self.current_server = self.included_servers[self.server_count]
        self.ip = self.included_server_ips[self.server_count]
        if not self.detected_isp:
            self.start_btn.setEnabled(True)
            self.stop_btn.setEnabled(False)
            self.label_status.setText('Network Disconnected...')
            QtGui.QMessageBox.warning(self, 'Error', 'Network Disconnected')
            return
        self.label_status.setText('Proceeding to next test iteration...')
        self.continue_test2()

    def continue_test2(self):
        if not self.detected_isp:
            self.testing = False
            self.start_btn.setEnabled(True)
            self.stop_btn.setEnabled(False)
            self.label_status.setText('Network Disconnected...')
            QtGui.QMessageBox.warning(self, 'Error', 'Network Disconnected')
            return
        self.label_current_server.setText(self.current_server)
        self.status_progress.setValue(25)
        self.label_status.setText('Testing server: %s...' % self.current_server)
        QtGui.QApplication.processEvents()

        self.throughput_thread = MyThread5(self)
        self.connect(self.throughput_thread, QtCore.SIGNAL('finished()'), self.end_test)
        self.throughput_thread.start()

    def end_test(self):
        self.start_btn.setEnabled(True)
        self.stop_btn.setEnabled(False)
        self.test_name.setEnabled(True)
        self.test_planspeed.setEnabled(True)
        self.test_remarks.setEnabled(True)
        self.test_location.setEnabled(True)
        self.test_name.setEnabled(True)
        self.test_planspeed.setEnabled(True)
        self.test_server.setEnabled(True)
        self.test_abroad.setEnabled(True)
        self.test_cycles.setEnabled(True)
        self.test_itx.setEnabled(True)
        self.test_types.setEnabled(True)
        self.test_isp.setEnabled(True)
        self.test_conntype.setEnabled(True)
        self.test_remarks.setEnabled(True)
        self.test_location.setEnabled(True)
        self.test_location2.setEnabled(True)

        self.testing = False
        self.start_time = None

        if not self.detected_isp:
            QtGui.QMessageBox.warning(self, 'Error', 'Testing stopped')
            self.label_status.setText('Network Interruption..')
            return

        if self.response == 'Connection':
            QtGui.QMessageBox.warning(self, 'Error', 'Testing stopped')
            self.label_status.setText('Connection Error')
            return
        if self.response == 'Traffic':
            QtGui.QMessageBox.warning(self, 'Error', 'Testing blocked - Traffic Exceeded 64kbps')
            self.label_status.setText('BG Traffic Exceeded 64kbps')
            return
        if self.response == 'Clients':
            QtGui.QMessageBox.warning(self, 'Error', 'Testing blocked - Other clients detected')
            self.label_status.setText('Other clients detected')
            return
        if self.response == 'Aborted':
            self.label_status.setText('Aborted by user')
            return

        try:
            self.label_jitter.setText('%.2f ms'%self.jitter)
            self.label_ping.setText('%.2f ms'%self.latency)
            self.label_packetloss.setText('%.2f %%'%self.packet_loss)
            self.label_throughput_u.setText('%.2f Mbps'%self.up)
            self.label_throughput.setText('%.2f Mbps'%self.down)
        except Exception as e:
            pass
        # self.pcap_files.setText('<a href="%s\%s">%s</a>'%(os.getcwd(),self.filename,self.filename))
        # self.pcap_files.setOpenExternalLinks(True)
        self.throughput = self.down
        try:
            a = numpy.array(self.latency_data)
            self.label_ping10.setText('%.2f ms'%numpy.percentile(a, 10))
            self.label_ping50.setText('%.2f ms'%numpy.percentile(a, 50))
            self.label_ping90.setText('%.2f ms'%numpy.percentile(a, 90))
            self.l_data = ','.join([str(e) for e in self.latency_data])
        except Exception as e:
            self.l_data = []
        try:
            a = numpy.array(self.packet_loss_data)
            self.label_packetloss10.setText('%.2f %%'%numpy.percentile(a, 10))
            self.label_packetloss50.setText('%.2f %%'%numpy.percentile(a, 50))
            self.label_packetloss90.setText('%.2f %%'%numpy.percentile(a, 90))
            self.p_data = ','.join([str(e) for e in self.packet_loss_data])
        except Exception as e:
            self.p_data = []
        try:
            a = numpy.array(self.jitter_data)
            self.label_jitter10.setText('%.2f ms'%numpy.percentile(a, 10))
            self.label_jitter50.setText('%.2f ms'%numpy.percentile(a, 50))
            self.label_jitter90.setText('%.2f ms'%numpy.percentile(a, 90))
            self.j_data = ','.join([str(e) for e in self.jitter_data])
        except Exception as e:
            self.j_data = []
        try:
            a = numpy.array(self.down_data)
            self.t_data = ','.join([str(e) for e in self.down_data])
            self.d_data = ','.join([str(e) for e in self.down_data])
            self.label_throughput10.setText('%.2f Mbps'%numpy.percentile(a, 10))
            self.label_throughput50.setText('%.2f Mbps'%numpy.percentile(a, 50))
            self.label_throughput90.setText('%.2f Mbps'%numpy.percentile(a, 90))
        except Exception as e:
            self.d_data = []
            self.t_data = []
        try:
            a = numpy.array(self.up_data)
            self.u_data = ','.join([str(e) for e in self.up_data])
            self.label_throughput_u10.setText('%.2f Mbps'%numpy.percentile(a, 10))
            self.label_throughput_u50.setText('%.2f Mbps'%numpy.percentile(a, 50))
            self.label_throughput_u90.setText('%.2f Mbps'%numpy.percentile(a, 90))
        except Exception as e:
            self.u_data = []

        try:
            self.time_data = ','.join([str(e) for e in self.time_data]) 
        except Exception as e:
            self.time_data = []
        try:
            self.th_data = ','.join([str(e) for e in self.thrg_data])
|
+--------+-------+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
5 rows in set (0.00 sec)

If i copy and paste this post from mybb forums in my forums it freezes the thread. The code is python. Does mybb have something happen when the length of the post was exceeded?

EDIT:
Duh, the tid is different
Hi,

500 error with the URL you provided to your post. It's your server problem, not MyBB's.

Check your server errors log about this particular post, and check if execution time, memory or any other setting is creating all this.
have you tried checking server error log ?

length of the post might not be the actual problem.
IIRC, your forum was set with a higher value for the max post size.

can you check which plugins are active on showthread page ..
try disabling such plugins one by one & check loading of the thread page ..
Thank you. Duh i feel stupid. I checked the error logs and everytime i tried to load a page i would get
[Fri Jan 31 14:53:14.342237 2020] [:error] [pid 17817] [client 24.198.200.173:45268] PHP Fatal error:  Maximum execution time of 30 seconds exceeded in /var/www/metulburr.com/inc/plugins/minifyhtml.php on line 153, referer: https://python-forum.io/Forum-Admins-and-Moderators

in which i disabled that plugin "minifyhtml" and the issue went away.

Thank you.
(2020-01-31, 07:58 PM)metulburr Wrote: [ -> ]Thank you. Duh i feel stupid. I checked the error logs and everytime i tried to load a page i would get
[Fri Jan 31 14:53:14.342237 2020] [:error] [pid 17817] [client 24.198.200.173:45268] PHP Fatal error:  Maximum execution time of 30 seconds exceeded in /var/www/metulburr.com/inc/plugins/minifyhtml.php on line 153, referer: https://python-forum.io/Forum-Admins-and-Moderators

in which i disabled that plugin "minifyhtml" and the issue went away.

Thank you.

I've tested this plugin lots of times but I never had an issue like this.

What is the content of your minifyhtml settings "Exclude pages from minifying"?
[attachment=42521]
its blank like your screenshot

I found the exact post content that was causing the issue...a bunch of whitespace. 
[attachment=42522]
Usually this would be in our custom code tags, but because his code was 1500+ lines the end of the code tag was truncated and never was wrapped. Im not sure if this is relevant to the plugin part?
(2020-02-01, 12:02 AM)metulburr Wrote: [ -> ]its blank like your screenshot

I found the exact post content that was causing the issue...a bunch of whitespace. 

Usually this would be in our custom code tags, but because his code was 1500+ lines the end of the code tag was truncated and never was wrapped. Im not sure if this is relevant to the plugin part?

It looks like that the content length of that post is too long for the 'minifyhtml' plugin to work out in 30 seconds. The plugin may either need performance improvement or bug fix for lengthy input.