From 3986528b95f2b4bf94dc5d9d8c39efd1fe915e92 Mon Sep 17 00:00:00 2001 From: Christian Damken Date: Tue, 23 Apr 2013 00:25:16 +0200 Subject: [PATCH] initial commit --- asrc-server.py | 225 ++++++++++++++++++++++++++++++++++++++++++++++ doc/reference.rtf | 149 ++++++++++++++++++++++++++++++ 2 files changed, 374 insertions(+) create mode 100755 asrc-server.py create mode 100644 doc/reference.rtf diff --git a/asrc-server.py b/asrc-server.py new file mode 100755 index 0000000..b369a83 --- /dev/null +++ b/asrc-server.py @@ -0,0 +1,225 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# +# asrc-server.py +# +# Copyright 2012 - 2013 Fanir-Thuban +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301, USA. +# +# +# aSRC (Aliased Server Remote Control) +# - SERVER - +# +# program version: 0.0.0.20130422 +# protocol version: 0.2.20130422 +# +# + + + +import sys, os, socket, socketserver, threading, time + + +class ThreadedRequestHandler(socketserver.StreamRequestHandler): + + def handle(self): + + # Set time for timeout in seconds + self.timeout = TIMEOUT + + # Print a line with the adress of the connected client + if DEBUGLEVEL >=3: + print("Client connected: " + str(self.client_address)) + + # Send MOTD + self.request.sendall(bytes(motd + "\r\n", ENCODING)) + + # Receive data + self.data = str(self.rfile.readline().strip(), ENCODING) + + + # Look if the received message is an + # valid alias or a predefined command + + # if it's 'version', return the server and protocol version + if self.data == "version": + + if DEBUGLEVEL >= 2: print("Got valid service command from" + + str(self.client_address) + ": ", self.data) + + # send status code + self.request.sendall(bytes("000 Received 'version'", ENCODING)) + + # send response + self.request.sendall(bytes( + "Server: " + ServerVersion + "\r\n"\ + "Protocol: " + ProtocolVersion + "\r\n", ENCODING)) + + # if it's 'help', give a little help + elif self.data == 'help': + + if DEBUGLEVEL >= 2: print("Got valid command from" + + str(self.client_address) + ": ", self.data) + + # send status code + self.request.sendall(bytes("000 Received 'help'", ENCODING)) + + # send the list of aliases + self.request.sendall(bytes("Aviable aliases:\r\n", ENCODING)) + for i in aliases.keys(): + self.request.sendall(bytes(str(i) + "\r\n", ENCODING)) + self.request.sendall(bytes("\r\n", ENCODING)) + + # if it's a valid userdefined command + elif self.data in aliases: + + # send status code + self.request.sendall(bytes( + "<<:0x0130:Received valid command\r\n", ENCODING)) + + # ohmagawd! a debug message!!1! + if DEBUGLEVEL >= 2: print("Got valid command from" + + str(self.client_address) + ": ", self.data) + + # execute the aliased command + g_dict, l_dict = {}, {} + exec(str(aliases[self.data]), g_dict, l_dict) + + # send may contain data to send to the client + if l_dict["send"]: + self.request.sendall(bytes(str( + l_dict["send"]) + "\r\n", ENCODING)) + else: + self.request.sendall(bytes("\r\n", ENCODING)) + + # ALL IS LOST!!1! this have to be invalid! + else: + + # send status code + self.request.sendall(bytes( + "<<:0x0230:Received invalid command\r\n", ENCODING)) + + if DEBUGLEVEL >= 2: print("Got invalid command from", + str(self.client_address), ": ", self.data) + + +class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer): + pass + + +def main(): + print("aSRC Server\r\n"\ + "Server version: " + ServerVersion + "\r\n"\ + "Protocol version: " + ProtocolVersion + "\r\n\r\n"\ + "To stop the server, press Ctrl-C\r\n") + + try: + if DEBUGLEVEL >= 1: print("Initializing server...") + # Create server + server = ThreadedTCPServer((HOST, PORT), ThreadedRequestHandler) + + if DEBUGLEVEL >= 1: print("Starting server on", + server.server_address[0], "port", server.server_address[1], "...") + # Start a thread with the server -- that thread will then start one + # more thread for each request + ServerThread = threading.Thread(target = server.serve_forever) + + # Exit the server thread when the main thread terminates + ServerThread.daemon = True + ServerThread.start() + while True: + time.sleep(10) + + except KeyboardInterrupt: + print("\r\nGot Ctrl-C, shutting down server...") + + try: server.shutdown() + except: print("Failed to shutdown server correctly, "\ + "socket may be still in use or wasn't even started:", + sys.exc_info()) + except: + print("\r\nAn error occured:\r\n", sys.exc_info(), "\r\n") + + + if DEBUGLEVEL >= 3: input("Press Enter to continue\r\n") + return 0 + + +if __name__ == '__main__': + + ServerVersion = "0.0.0" + ProtocolVersion = "0.0.0" + + + ############## + # SETTINGS # + ############## + + # IP or hostname (use 0.0.0.0 for all interfaces) and port, on which + # the server should listen + HOST = '127.0.0.1' + PORT = 24642 + + # Timeout of a connection in seconds - obviously still doesn't work... + TIMEOUT = 4 + + # Encoding to be used when communicating with a client + ENCODING = 'utf-8' + + # Dictionary of aliases. Use python syntax. You can use + # the variable send for text to send to the client. + # + # Shell commands can be executed with: + # import subprocess + # send = subprocess.check_output(["command", "arg", "somemorearg"]) + # + # You don't have to include sys, os, socket, socketserver, + # threading and time, through they are included already. + aliases = dict( + who = ''' +import subprocess +send = subprocess.check_output(["whoami"]) +''', + where = ''' +import subprocess +send = subprocess.check_output(["pwd"]) +''', + uname = ''' +import os +send = os.uname() +''', + date = ''' +import subprocess +send = subprocess.check_output(["date"]) +''', + ping_fanir = ''' +import subprocess +send = subprocess.check_output(["ping", "-c 2", "fanir.de"]) +''') + + # This is sent to the client after the connection is established + motd = "Welcome! This is only a test server, for developing purposes.\r\n"\ + "Here (may) be more text..." + + # Verbosity of logging. + # Can be from 0 (only default output) to 3 (debug messages) + DEBUGLEVEL = 3 + ############## + + + main() diff --git a/doc/reference.rtf b/doc/reference.rtf new file mode 100644 index 0000000..20a35aa --- /dev/null +++ b/doc/reference.rtf @@ -0,0 +1,149 @@ +{\rtf1\ansi\deff3\adeflang1025 +{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}{\f1\froman\fprq2\fcharset2 Symbol;}{\f2\fswiss\fprq2\fcharset0 Arial;}{\f3\froman\fprq2\fcharset128 Liberation Serif{\*\falt Times New Roman};}{\f4\fswiss\fprq2\fcharset128 Liberation Sans{\*\falt Arial};}{\f5\fmodern\fprq1\fcharset128 DejaVu Sans Mono;}{\f6\fnil\fprq2\fcharset128 WenQuanYi Zen Hei Sharp;}{\f7\fmodern\fprq1\fcharset128 WenQuanYi Zen Hei Sharp;}{\f8\fnil\fprq2\fcharset128 Lohit Devanagari;}{\f9\fnil\fprq0\fcharset128 Lohit Devanagari;}{\f10\fmodern\fprq1\fcharset128 Lohit Devanagari;}} +{\colortbl;\red0\green0\blue0;\red128\green0\blue0;\red255\green255\blue0;\red128\green128\blue128;} +{\stylesheet{\s0\snext0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af6\langfe2052\dbch\af8\afs24\alang1081\loch\f3\fs24\lang1031 Standard;} +{\s1\sbasedon15\snext16\ilvl0\outlinelevel0\sb240\sa120\keepn\b\hich\af6\dbch\af8\afs32\ab\loch\f4\fs32 \u220\'3fberschrift 1;} +{\s2\sbasedon15\snext16\ilvl1\outlinelevel1\sb240\sa120\keepn\i\b\hich\af6\dbch\af8\afs28\ai\ab\loch\f4\fs28 \u220\'3fberschrift 2;} +{\s3\sbasedon15\snext16\ilvl2\outlinelevel2\sb240\sa120\keepn\b\hich\af6\dbch\af8\afs28\ab\loch\f4\fs28 \u220\'3fberschrift 3;} +{\s4\sbasedon15\snext16\ilvl3\outlinelevel3\sb240\sa120\keepn\i\b\hich\af6\dbch\af8\afs23\ai\ab\loch\f4\fs23 \u220\'3fberschrift 4;} +{\s15\sbasedon0\snext16\sb240\sa120\keepn\hich\af6\dbch\af8\afs28\loch\f4\fs28 \u220\'3fberschrift;} +{\s16\sbasedon0\snext16\sb0\sa120 Textk\u246\'3frper;} +{\s17\sbasedon16\snext17\sb0\sa120\dbch\af9 Liste;} +{\s18\sbasedon0\snext18\sb120\sa120\noline\i\dbch\af9\afs24\ai\fs24 Beschriftung;} +{\s19\sbasedon0\snext19\noline\dbch\af9 Verzeichnis;} +{\s20\sbasedon0\snext20\li0\ri0\lin0\rin0\fi0\sb0\sa0\hich\af7\dbch\af10\afs20\loch\f5\fs20 Vorformatierter Text;} +{\s21\sbasedon0\snext21\noline Tabellen Inhalt;} +{\s22\sbasedon21\snext22\qc\noline\b\ab Tabellen \u220\'3fberschrift;} +}{\*\listtable{\list\listtemplateid1 +{\listlevel\levelnfc255\leveljc0\levelstartat1\levelfollow0{\leveltext \'00;}{\levelnumbers;}\fi-432\li432} +{\listlevel\levelnfc255\leveljc0\levelstartat1\levelfollow0{\leveltext \'00;}{\levelnumbers;}\fi-576\li576} +{\listlevel\levelnfc255\leveljc0\levelstartat1\levelfollow0{\leveltext \'00;}{\levelnumbers;}\fi-720\li720} +{\listlevel\levelnfc255\leveljc0\levelstartat1\levelfollow0{\leveltext \'00;}{\levelnumbers;}\fi-864\li864} +{\listlevel\levelnfc255\leveljc0\levelstartat1\levelfollow0{\leveltext \'00;}{\levelnumbers;}\fi-1008\li1008} +{\listlevel\levelnfc255\leveljc0\levelstartat1\levelfollow0{\leveltext \'00;}{\levelnumbers;}\fi-1152\li1152} +{\listlevel\levelnfc255\leveljc0\levelstartat1\levelfollow0{\leveltext \'00;}{\levelnumbers;}\fi-1296\li1296} +{\listlevel\levelnfc255\leveljc0\levelstartat1\levelfollow0{\leveltext \'00;}{\levelnumbers;}\fi-1440\li1440} +{\listlevel\levelnfc255\leveljc0\levelstartat1\levelfollow0{\leveltext \'00;}{\levelnumbers;}\fi-1584\li1584}\listid1} +}{\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}}{\info{\author Fanir }{\creatim\yr2013\mo4\dy22\hr21\min58}{\revtim\yr0\mo0\dy0\hr0\min0}{\printim\yr0\mo0\dy0\hr0\min0}{\comment LibreOffice}{\vern3500}}\deftab709\deftab643 + +{\*\pgdsctbl +{\pgdsc0\pgdscuse195\pgwsxn11906\pghsxn16838\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\pgdscnxt0 Standard;}} +\formshade\paperh16838\paperw11906\margl1134\margr1134\margt1134\margb1134\sectd\sbknone\sectunlocked1\pgndec\pgwsxn11906\pghsxn16838\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc +\pgndec\pard\plain \s1\ilvl0\outlinelevel0\sb240\sa120\keepn\b\hich\af6\dbch\af8\afs32\ab\loch\f4\fs32{\listtext\pard\plain \tab}\ls1 \li432\ri0\lin432\rin0\fi-432\sb240\sa120{\rtlch \ltrch\loch\lang1033 +Protocol reference} +\par \pard\plain \s2\ilvl1\outlinelevel1\sb240\sa120\keepn\i\b\hich\af6\dbch\af8\afs28\ai\ab\loch\f4\fs28{\listtext\pard\plain \tab}\ls1 \li576\ri0\lin576\rin0\fi-576{\rtlch \ltrch\loch\lang1033 +Abstract} +\par \pard\plain \s16\sb0\sa120{\rtlch \ltrch\loch\lang1033 +The current protocol version is 0.2.20130422} +\par \pard\plain \s16\sb0\sa120{\i\ai\rtlch \ltrch\loch\lang1033 +Warning: The protocol is still in development and may change often!} +\par \pard\plain \s2\ilvl1\outlinelevel1\sb240\sa120\keepn\i\b\hich\af6\dbch\af8\afs28\ai\ab\loch\f4\fs28{\listtext\pard\plain \tab}\ls1 \li576\ri0\lin576\rin0\fi-576{\rtlch \ltrch\loch\lang1033 +Structure} +\par \pard\plain \s20\li0\ri0\lin0\rin0\fi0\sb0\sa0\hich\af7\dbch\af10\afs20\loch\f5\fs20{\rtlch \ltrch\loch\lang1033 +asrcp \line \line
\line \line } +\par \pard\plain \s2\ilvl1\outlinelevel1\sb240\sa120\keepn\i\b\hich\af6\dbch\af8\afs28\ai\ab\loch\f4\fs28{\listtext\pard\plain \tab}\ls1 \li576\ri0\lin576\rin0\fi-576{\rtlch \ltrch\loch\lang1033 +Header lines} +\par \pard\plain \s16\sb0\sa120{\rtlch \ltrch\loch\lang1033 +Header lines have the form:} +\par \pard\plain \s16\sb0\sa120{\rtlch \ltrch\loch\lang1033 +name=value} +\par \pard\plain \s16\sb0\sa120{\rtlch \ltrch\loch\lang1033 +The following attributes are available:} +\par \pard\plain \s16\sb0\sa120{\rtlch \ltrch\loch\lang1033 +[[[[ INSART MOAR 'ERE!!1! ^_^ ]]]]} +\par \pard\plain \s2\ilvl1\outlinelevel1\sb240\sa120\keepn\i\b\hich\af6\dbch\af8\afs28\ai\ab\loch\f4\fs28{\listtext\pard\plain \tab}\ls1 \li576\ri0\lin576\rin0\fi-576{\rtlch \ltrch\loch\lang1033 +Status Codes} +\par \trowd\trql\ltrrow\trrh472\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrt\brdrhair\brdrw1\brdrcf1\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx698\clbrdrt\brdrhair\brdrw1\brdrcf1\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx4113\clbrdrt\brdrhair\brdrw1\brdrcf1\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\clbrdrr\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s22\qc\noline\b\ab\intbl{\rtlch \ltrch\loch\lang1033 +Code}\cell\pard\plain \s22\qc\noline\b\ab\intbl{\rtlch \ltrch\loch\lang1033 +Description}\cell\pard\plain \s22\qc\noline\b\ab\intbl{\rtlch \ltrch\loch\lang1033 +Annotations}\cell\row\pard\trowd\trql\ltrrow\trrh472\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrt\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s3\ilvl2\outlinelevel2\sb240\sa120\keepn\b\hich\af6\dbch\af8\afs28\ab\loch\f4\fs28\intbl{\listtext\pard\plain \tab}\ls1 \li720\ri0\lin720\rin0\fi-720\sb240\sa120{\rtlch \ltrch\loch\lang1033 +000 - 400 server side}\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s4\ilvl3\outlinelevel3\sb240\sa120\keepn\i\b\hich\af6\dbch\af8\afs23\ai\ab\loch\f4\fs23\intbl{\listtext\pard\plain \tab}\ls1 \li864\ri0\lin864\rin0\fi-864\sb240\sa120{\rtlch \ltrch\loch\lang1033 +000 information}\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx698\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx4113\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\clbrdrr\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +001}\cell\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +OK}\cell\pard\plain \s21\noline\intbl\rtlch \ltrch\loch\lang1033 +\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx698\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx4113\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\clbrdrr\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +002}\cell\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +Server Version}\cell\pard\plain \s21\noline\intbl\rtlch \ltrch\loch\lang1033 +\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx698\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx4113\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\clbrdrr\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +003}\cell\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +Protocol Version}\cell\pard\plain \s21\noline\intbl\rtlch \ltrch\loch\lang1033 +\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx698\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx4113\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\clbrdrr\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +004}\cell\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +MOTD}\cell\pard\plain \s21\noline\intbl\rtlch \ltrch\loch\lang1033 +\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrt\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s4\ilvl3\outlinelevel3\sb240\sa120\keepn\i\b\hich\af6\dbch\af8\afs23\ai\ab\loch\f4\fs23\intbl{\listtext\pard\plain \tab}\ls1 \li864\ri0\lin864\rin0\fi-864\sb240\sa120{\rtlch \ltrch\loch\lang1033 +100 authentication and maintenance}\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx698\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx4113\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\clbrdrr\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +101}\cell\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +Challenge}\cell\pard\plain \s21\noline\intbl\rtlch \ltrch\loch\lang1033 +\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx698\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx4113\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\clbrdrr\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +102}\cell\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +Success}\cell\pard\plain \s21\noline\intbl\rtlch \ltrch\loch\lang1033 +\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx698\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx4113\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\clbrdrr\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +103}\cell\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +Failure}\cell\pard\plain \s21\noline\intbl\rtlch \ltrch\loch\lang1033 +\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx698\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx4113\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\clbrdrr\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +104}\cell\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +Too Many Tries}\cell\pard\plain \s21\noline\intbl\rtlch \ltrch\loch\lang1033 +\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrt\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s4\ilvl3\outlinelevel3\sb240\sa120\keepn\i\b\hich\af6\dbch\af8\afs23\ai\ab\loch\f4\fs23\intbl{\listtext\pard\plain \tab}\ls1 \li864\ri0\lin864\rin0\fi-864\sb240\sa120{\rtlch \ltrch\loch\lang1033 +200 command}\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx698\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx4113\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\clbrdrr\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +201}\cell\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +Valid}\cell\pard\plain \s21\noline\intbl\rtlch \ltrch\loch\lang1033 +\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx698\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx4113\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\clbrdrr\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +202}\cell\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +Valid Service Command}\cell\pard\plain \s21\noline\intbl\rtlch \ltrch\loch\lang1033 +\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx698\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx4113\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\clbrdrr\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +203}\cell\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +Invalid}\cell\pard\plain \s21\noline\intbl\rtlch \ltrch\loch\lang1033 +\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx698\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx4113\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\clbrdrr\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +204}\cell\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +Failed}\cell\pard\plain \s21\noline\intbl\rtlch \ltrch\loch\lang1033 +\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx698\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx4113\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\clbrdrr\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +205}\cell\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +Continue}\cell\pard\plain \s21\noline\intbl\rtlch \ltrch\loch\lang1033 +\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrt\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s4\ilvl3\outlinelevel3\sb240\sa120\keepn\i\b\hich\af6\dbch\af8\afs23\ai\ab\loch\f4\fs23\intbl{\listtext\pard\plain \tab}\ls1 \li864\ri0\lin864\rin0\fi-864\sb240\sa120{\rtlch \ltrch\loch\lang1033 +300 program}\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx698\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx4113\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\clbrdrr\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +301}\cell\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +Unhandled Exception}\cell\pard\plain \s21\noline\intbl\rtlch \ltrch\loch\lang1033 +\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx698\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx4113\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\clbrdrr\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +302}\cell\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +Shutting Down}\cell\pard\plain \s21\noline\intbl\rtlch \ltrch\loch\lang1033 +\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx698\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx4113\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\clbrdrr\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +303}\cell\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +Restarting}\cell\pard\plain \s21\noline\intbl\rtlch \ltrch\loch\lang1033 +\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx698\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx4113\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\clbrdrr\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +305}\cell\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +Encoding Failure}\cell\pard\plain \s21\noline\intbl\rtlch \ltrch\loch\lang1033 +\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx698\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx4113\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\clbrdrr\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +306}\cell\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +SSL Error}\cell\pard\plain \s21\noline\intbl\rtlch \ltrch\loch\lang1033 +\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrt\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s3\ilvl2\outlinelevel2\sb240\sa120\keepn\b\hich\af6\dbch\af8\afs28\ab\loch\f4\fs28\intbl{\listtext\pard\plain \tab}\ls1 \li720\ri0\lin720\rin0\fi-720\sb240\sa120{\rtlch \ltrch\loch\lang1033 +500 - 900 client side}\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s4\ilvl3\outlinelevel3\sb240\sa120\keepn\i\b\hich\af6\dbch\af8\afs23\ai\ab\loch\f4\fs23\intbl{\listtext\pard\plain \tab}\ls1 \li864\ri0\lin864\rin0\fi-864\sb240\sa120{\rtlch \ltrch\loch\lang1033 +500 information}\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx698\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx4113\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\clbrdrr\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +501}\cell\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +OK}\cell\pard\plain \s21\noline\intbl\rtlch \ltrch\loch\lang1033 +\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx698\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx4113\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\clbrdrr\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +502}\cell\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +Client Version}\cell\pard\plain \s21\noline\intbl\rtlch \ltrch\loch\lang1033 +\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx698\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx4113\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\clbrdrr\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +503}\cell\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +Protocol Version}\cell\pard\plain \s21\noline\intbl\rtlch \ltrch\loch\lang1033 +\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrt\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s4\ilvl3\outlinelevel3\sb240\sa120\keepn\i\b\hich\af6\dbch\af8\afs23\ai\ab\loch\f4\fs23\intbl{\listtext\pard\plain \tab}\ls1 \li864\ri0\lin864\rin0\fi-864\sb240\sa120{\rtlch \ltrch\loch\lang1033 +600 authentication and maintenance}\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx698\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx4113\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\clbrdrr\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +601}\cell\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +Response}\cell\pard\plain \s21\noline\intbl\rtlch \ltrch\loch\lang1033 +\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx698\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx4113\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\clbrdrr\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +602}\cell\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +Failure}\cell\pard\plain \s21\noline\intbl\rtlch \ltrch\loch\lang1033 +\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrt\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s4\ilvl3\outlinelevel3\sb240\sa120\keepn\i\b\hich\af6\dbch\af8\afs23\ai\ab\loch\f4\fs23\intbl{\listtext\pard\plain \tab}\ls1 \li864\ri0\lin864\rin0\fi-864\sb240\sa120{\rtlch \ltrch\loch\lang1033 +700 command}\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx698\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx4113\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\clbrdrr\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +700}\cell\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +Request}\cell\pard\plain \s21\noline\intbl\rtlch \ltrch\loch\lang1033 +\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx698\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx4113\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\clbrdrr\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +701}\cell\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +Cancel}\cell\pard\plain \s21\noline\intbl\rtlch \ltrch\loch\lang1033 +\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrt\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s4\ilvl3\outlinelevel3\sb240\sa120\keepn\i\b\hich\af6\dbch\af8\afs23\ai\ab\loch\f4\fs23\intbl{\listtext\pard\plain \tab}\ls1 \li864\ri0\lin864\rin0\fi-864\sb240\sa120{\rtlch \ltrch\loch\lang1033 +800 Program}\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx698\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\cellx4113\clbrdrl\brdrhair\brdrw1\brdrcf1\clbrdrb\brdrhair\brdrw1\brdrcf1\clbrdrr\brdrhair\brdrw1\brdrcf1\cellx9638\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +801}\cell\pard\plain \s21\noline\intbl{\rtlch \ltrch\loch\lang1033 +SSL Error}\cell\pard\plain \s21\noline\intbl\rtlch \ltrch\loch\lang1033 +\cell\row\pard\pard\plain \s16\sb0\sa120\sb0\sa120\rtlch \ltrch\loch\lang1033 + +\par } \ No newline at end of file