Commit Graph

385 Commits

Author SHA1 Message Date
Kristóf Tóth
bfa1bffbc5 Refactor YamlFSM 2018-07-04 17:48:31 +02:00
Kristóf Tóth
7a92d88b73 Refactor FSMBase to subclass transitions.Machine 2018-07-04 15:48:16 +02:00
Kristóf Tóth
91c257554f Simplify callback monkeypatching logic in YamlFSM 2018-07-03 20:09:47 +02:00
Kristóf Tóth
022a997dc2 Implement monkey patching callbacks in YamlFSM config 2018-07-03 19:06:54 +02:00
Kristóf Tóth
5e4303ac06 Add first version of YamlFSM 2018-07-03 15:14:00 +02:00
Kristóf Tóth
708c920784 Move FSM handling logic to an event handler 2018-06-29 22:03:19 +02:00
Kristóf Tóth
a6563bcd89 Implement event handler base class that broadcasts everything 2018-06-29 22:02:26 +02:00
Kristóf Tóth
196e753fb9 Fix typo in comment 2018-06-29 15:59:03 +02:00
Kristóf Tóth
427694623f Rename file to harmonize with new networking code structure 2018-06-29 15:40:07 +02:00
Kristóf Tóth
7ed0715f4c Reorder stuff to follow the teachings of Uncle Bob 2018-06-29 15:33:45 +02:00
Kristóf Tóth
b217ac59c8 Move message validation code to where it belongs 2018-06-29 12:06:08 +02:00
Kristóf Tóth
36a86b0454 Hide ZMQ serialization magic from EHConnector clients 2018-06-29 11:58:05 +02:00
Kristóf Tóth
934f8ec74c Hide ZMQ serialization magic from ServerConnector clients 2018-06-29 11:50:36 +02:00
Kristóf Tóth
1b65bd4d3d Implement message broadcasting 2018-06-29 10:54:08 +02:00
Kristóf Tóth
f8233d51a9 Completely rework TFWServer networking 🍰 2018-06-28 17:33:20 +02:00
Kristóf Tóth
3ba56a8096 Implement batch callback subscription in CallbackMixin 2018-06-28 17:31:55 +02:00
Kristóf Tóth
9eacf3f79c Add message queueing capabilities to MessageSender 2018-06-27 15:52:17 +02:00
Kristóf Tóth
83dd6ae836 Fix IdeEventHandler not working with arbitrary keys 2018-06-18 15:13:39 +02:00
Kristóf Tóth
2e3b49f8b5 Use update_wrapper in lazy_property update attribute info 2018-06-05 00:16:31 +02:00
Kristóf Tóth
d0667253c2 Harmonize code formatting style across project 2018-06-04 22:16:44 +02:00
Kristóf Tóth
afc84e1d1a Conciliate FileManager attribute names and formatting 2018-06-04 21:47:10 +02:00
Kristóf Tóth
92e9812776 Remove unnecessary additional_dirs IdeEH.__init__ argument 2018-06-04 21:20:36 +02:00
Kristóf Tóth
edc46a8ae6 Rename LazyInitialise to make IDEs recognise it as a property 2018-06-02 11:48:34 +02:00
Kristóf Tóth
d5b0bb4d32 Avoid potential TypeErrors using LazyInitialise 2018-06-02 11:25:48 +02:00
Kristóf Tóth
a743b01bcf Reduce line length to 120 2018-06-01 17:19:58 +02:00
Kristóf Tóth
e80cce00f3 Add sphinx API documentation 2018-06-01 16:20:20 +02:00
Kristóf Tóth
c0fb28c46c Stop LogMonitor on EventHandler.cleanup() in LogMonitoringEH 2018-06-01 15:15:07 +02:00
Kristóf Tóth
6f3db18146 Use power of LazyInitialise to replace CallbackMixin.__init__() 2018-06-01 14:21:32 +02:00
Kristóf Tóth
cebacb15e6 Use power of LazyInitialise to replace ObserverMixin.__init__() 2018-06-01 14:06:40 +02:00
Kristóf Tóth
9f3a3b501f Initialise supervisor xmlrpc client lazily to avoid globals 2018-06-01 14:01:32 +02:00
Kristóf Tóth
8817f991a5 Use power of LazyInitialise to murder TFW/TAOENV global state 2018-06-01 14:01:15 +02:00
Kristóf Tóth
06c2fc97ad Implement decorator to lazy initialise a property 2018-06-01 13:58:50 +02:00
Kristóf Tóth
e98c41d3cf Comply new API style in TerminalEH 2018-05-31 14:08:29 +02:00
Kristóf Tóth
ea251ef474 Document LogMonitoringEventHandler 2018-05-31 14:03:11 +02:00
Kristóf Tóth
b68ceeb394 Rework LogMonitoringEH API to adhere new conventions 2018-05-31 13:53:11 +02:00
Kristóf Tóth
2e953ea098 Implement LogMonitorEH API 2018-05-30 15:21:36 +02:00
Kristóf Tóth
211ae1e2d9 Allow changing MonitorManagerMixin.monitor_args dynamically 2018-05-30 15:19:59 +02:00
Kristóf Tóth
73f6c6635b Rename my bootiful threadlocalise.. SupervisorBaseMixin method 2018-05-30 14:07:40 +02:00
Kristóf Tóth
babb14288c Use contextlib.suppress() to suppress stuff in SupervisorLogMixin 2018-05-30 14:05:13 +02:00
Kristóf Tóth
3bb97a6dcc Implement LogMonitoringEventHandler to manage a LogMonitor via API 2018-05-30 13:14:25 +02:00
Kristóf Tóth
9e6cd57532 Refactor MonitorManagerMixin to allow arbitrary Monitor arguments 2018-05-30 13:06:09 +02:00
Kristóf Tóth
28c16e1127 Rework log deletion – use log_tail arguments instead 2018-05-29 17:59:16 +02:00
Kristóf Tóth
4815b97200 Fix shared xmlrpc client raising HTTP errors in LogMonitor 2018-05-29 16:40:58 +02:00
Kristóf Tóth
9f6418bf60 Support creating thread-local xmlrpc clients in SupervisorBaseMixin 2018-05-29 16:40:58 +02:00
Kristóf Tóth
780d6a9b3c Avoid pylint stupidity ¯\_(ツ)_/¯ 2018-05-29 16:40:58 +02:00
Kristóf Tóth
32e3c2860d Fix inotify event logs triggering themselves (infinite log recursion) 2018-05-29 16:40:58 +02:00
Kristóf Tóth
029f4a9eb2 Implement watchdog observer to watch the logs of a supervisor process 2018-05-29 16:40:58 +02:00
Kristóf Tóth
9723f98950 Rework ProcessManagingEH log API 2018-05-28 16:36:59 +02:00
Kristóf Tóth
1a93dad562 Separate log clearing from reading 2018-05-28 15:02:53 +02:00
Kristóf Tóth
44df95a434 Refactor supervisor logging logic to separate mixin 2018-05-28 14:32:11 +02:00
Kristóf Tóth
fd56f8ca63 Make it impossible for TerminalCommands commands to kill TFW 2018-05-26 22:48:28 +02:00
Kristóf Tóth
77fabf28f6 Fix TerminalCommands parsing unix-style arguments incorrectly 2018-05-26 22:39:27 +02:00
Kristóf Tóth
0038663bc6 Allow listening to inotify events in additional directories using IdeEH 2018-05-24 16:19:04 +02:00
Kristóf Tóth
6489e4452e Remove ambigous API for log reading (actions always reply with logs included) 2018-05-24 11:22:39 +02:00
Kristóf Tóth
bfd1efa9f9 Append deployment logs to every response of ProcessManagingEventHandler 2018-05-24 11:20:00 +02:00
Kristóf Tóth
293d7972f1 Document serialization module 2018-05-11 14:36:56 +02:00
Kristóf Tóth
d30226d55b Extend docstrings in server_connector 2018-05-11 14:07:59 +02:00
Kristóf Tóth
d1305bc879 Add step_next trigger to LinearFSM allowing stateless stepping 2018-05-04 17:45:16 +02:00
Kristóf Tóth
06e17a6591 Raise comprehendable exception from webide when no files are present 2018-04-26 11:09:31 +02:00
Kristóf Tóth
8396c10a7b Rename TerminadoEventHandler 2018-04-26 10:13:02 +02:00
Kristóf Tóth
3b30b333e5 Rename webide -> ide 2018-04-20 17:33:06 +02:00
Kristóf Tóth
0b651abb7d Nicen some EventHandler API docstrings 2018-04-19 10:47:20 +02:00
Kristóf Tóth
b1592e8ebb Use new f-strings where possible 2018-04-19 09:21:41 +02:00
Kristóf Tóth
db1b008fc9 Fix EventHandlerBase.event_handler_callback broken logic 2018-04-18 20:16:56 +02:00
Kristóf Tóth
9d93d055b8 Refactor EventHandlerBase to be more general 2018-04-18 20:07:41 +02:00
Kristóf Tóth
addd517ba7 Add a huge bunch of docstrings 2018-04-18 19:44:26 +02:00
Kristóf Tóth
690f9bb190 Move TriggerlessEventHandler logic to base class EventHandlerBase 2018-04-18 18:47:51 +02:00
Kristóf Tóth
c909317ca0 Make TerminalCommands alias nonexistent commands only 2018-04-18 16:22:01 +02:00
Kristóf Tóth
d8988ea097 Rename make_eventhandler_response in TFWServer to increase readibility 2018-04-16 12:57:08 +02:00
Kristóf Tóth
986a67f5db Simplify bool returning function 2018-04-16 12:51:44 +02:00
Kristóf Tóth
39243811dc Remove unnecessary variable 2018-04-16 12:51:01 +02:00
Kristóf Tóth
22cdbaac2c Fix typo 2018-04-16 12:50:08 +02:00
Kristóf Tóth
743fab366b Extract variable to silence retarded linter 2018-04-14 23:15:44 +02:00
Kristóf Tóth
a65d3127ba Refactor DirectoryMonitor managing code to a mixin 2018-04-14 23:00:43 +02:00
Kristóf Tóth
1c29b700c2 Move mixins and decorators to tfw module from tfw.components 2018-04-14 21:15:30 +02:00
Kristóf Tóth
e2bb126e6f Make simple not if condition more pythonic 2018-04-14 21:07:33 +02:00
Kristóf Tóth
586c435cc2 Refactor watchdog Observer handling to a mixin 2018-04-14 20:36:43 +02:00
Kristóf Tóth
b082279916 Implement message validation in TFW proxying 2018-04-14 10:45:23 +02:00
Kristóf Tóth
ecec1cde59 Root out remaining ambiguous key arguments in EventHandlers 2018-04-14 10:45:23 +02:00
Kristóf Tóth
0cd11f9d64 Remove ambiguous key parameter from proxy module 2018-04-14 10:45:23 +02:00
Kristóf Tóth
fe7bd4a678 Remove ambiguous key parameter from EventHanderConnector 2018-04-14 10:45:23 +02:00
Kristóf Tóth
3c12b5503e Mark old serialization methods as module internal 2018-04-14 10:45:23 +02:00
Kristóf Tóth
499b575adf Add module docstring to serialization.py 2018-04-14 10:45:23 +02:00
Kristóf Tóth
9eb6717972 Refactor 'mirror' message enveloping to use new serialization 2018-04-14 10:45:23 +02:00
Kristóf Tóth
aabaadc4c4 Refactor proxying to use new deserialization 2018-04-14 10:45:23 +02:00
Kristóf Tóth
cd36b6c22c Refactor ServerUplinkConnector to use new serializers 2018-04-14 10:45:23 +02:00
Kristóf Tóth
67a23166c6 Introduce [de]serialize_tfw_msg() methods to abstract away enveloping 2018-04-14 10:45:23 +02:00
Kristóf Tóth
18e9ee5f52 Rename make_response in networking to avoid confusion 2018-04-14 10:45:23 +02:00
Kristóf Tóth
d04479157d Refactor ServerUplinkConnector.send() signature 2018-04-14 10:45:23 +02:00
Kristóf Tóth
b8cdb30318 Add missing legal boilerplate to terminal_commands.py 2018-04-14 10:44:54 +02:00
Kristóf Tóth
512a965328 Update old logging code to use TFW global logging 2018-04-13 16:46:11 +02:00
Kristóf Tóth
7877e977ab Extract magic dict building to method in TerminalCommands 2018-04-13 10:01:45 +02:00
Kristóf Tóth
5d8d541394 Remove dead code from EventHandlerBase 2018-04-12 14:30:27 +02:00
Kristóf Tóth
16c1fe7b50 Implement appending command aliases to bashrc to avoid command not found 2018-04-12 11:07:56 +02:00
Kristóf Tóth
8caf879ffd Integrate terminal command magic class from test repo to TFW 2018-04-12 10:56:15 +02:00
Kristóf Tóth
73fa65c6e8 Implement triggering of FSM from ServerUplinkConnector 2018-04-11 15:22:54 +02:00
Kristóf Tóth
4842574cf3 Refactor LinearFSM triggers to have different names 2018-04-11 15:20:14 +02:00
Kristóf Tóth
6113149c58 Rework serialization module to work regardless of message format 2018-04-10 17:37:58 +02:00
Kristóf Tóth
87fa86d314 Refactor FSM triggering in TFWServer 2018-04-10 17:37:58 +02:00
Kristóf Tóth
dbe6fe0f92 Add license boilerplate to linear_fsm.py 2018-04-10 12:48:53 +02:00
Kristóf Tóth
29da0a7ca6 Implement first version of LinearFSM 2018-04-07 15:21:13 +02:00
Kristóf Tóth
1922050e87 Make semantics of whitelist and blacklist more explicit in webide 2018-04-07 15:00:31 +02:00
Kristóf Tóth
8bd6005b5d Refactor blacklisting into a method in webide 2018-04-07 14:35:42 +02:00
Kristóf Tóth
4a216d8875 Rename SourceCodeEventHandler to WebideEventHandler 2018-04-07 14:18:15 +02:00
Kristóf Tóth
de8c2ae6e2 Implement FSMUpdates to EventHandlers 2018-04-06 17:14:37 +02:00
Kristóf Tóth
b785b88af6 Pass processed message to FSM trigger predicates 2018-04-06 17:14:06 +02:00
Kristóf Tóth
96c322c17c Silence unjust critique by pylint 2018-04-06 16:52:23 +02:00
Kristóf Tóth
11743e830a Expose ServerUplinkConnector with a name understandable without TFW knowledge 2018-04-06 16:22:21 +02:00
Kristóf Tóth
0464acbdc4 Make error logs more explicit 2018-04-06 16:09:05 +02:00
Kristóf Tóth
64bd2f1ba0 Refactor handling of shared EventHandlerConnector ownership to nicen imports 2018-04-06 16:04:25 +02:00
Kristóf Tóth
1f2e1f0489 Refactor whole importing hell into a nice and clean API 2018-04-06 15:31:16 +02:00
Kristóf Tóth
bd84e4fe06 Improve code formatting in webide 2018-04-05 17:19:56 +02:00
Kristóf Tóth
bc340e2e19 Enforce webide whitelisting 2018-04-05 17:16:41 +02:00
Kristóf Tóth
b73b7307bd Improve webide whitelisting by enforcing stricter rules (fix symlink attack) 2018-04-05 17:01:50 +02:00
Kristóf Tóth
b74ff39438 Implement directory whitelisting in webide 2018-04-05 14:43:39 +02:00
Kristóf Tóth
35421649c9 Extract spawning bash as user to a variable 2018-04-05 14:43:07 +02:00
Kristóf Tóth
19f819c142 Implement TFW & challenge solver user separation 2018-04-04 17:43:18 +02:00
Kristóf Tóth
eaa0eee4ca Add LICENSE file and include copyright notice in source files 2018-04-03 14:49:14 +02:00
Kristóf Tóth
d850f55b86 Add pylint local excludes to silence false positives 2018-03-30 18:11:38 +02:00
Kristóf Tóth
3ae0995b95 Make project comply new coding standards and pylint 2018-03-30 17:50:20 +02:00
Kristóf Tóth
2087294510 Implement simple HistoryMonitor for GDB monitoring 2018-03-29 15:19:00 +02:00
Kristóf Tóth
ba41c0b505 Make initialization of historymonitor the responsibility of client 2018-03-29 11:34:08 +02:00
Kristóf Tóth
c973b17141 Refactor HistoryMonitor to be customisable 2018-03-29 11:23:38 +02:00
Kristóf Tóth
43c46a7af2 Integrate ABC module where we have abstract classes 2018-03-27 17:49:32 +02:00
Kristóf Tóth
1982a3c869 Rename TFWENV and TAOENV constants to use capital letters 2018-03-25 16:38:39 +02:00
Kristóf Tóth
ec469c6b75 Remove unnecessary super().__init__() call 2018-03-25 16:38:39 +02:00
Kristóf Tóth
8eded8cbac Make use of format string optimization in logging calls 2018-03-25 16:38:32 +02:00
Kristóf Tóth
73ed680298 Fix bad indentation 2018-03-25 16:20:49 +02:00
Kristóf Tóth
5c1431685e Remove unnecessary __init__() call 2018-03-25 16:10:55 +02:00
Kristóf Tóth
aacdbcb0d1 Standardize log constant naming and declaration placement 2018-03-25 16:06:59 +02:00
Kristóf Tóth
1e2ea0ed17 Standardize imports: standard newline package newline tfw 2018-03-25 15:43:59 +02:00
Kristóf Tóth
abcf490019 Strip controller from TFW 2018-03-23 11:37:01 +01:00
Kristóf Tóth
fda242d263 Fix EventHandlerConnector dying painfully on keyless messages 2018-03-21 17:23:18 +01:00
Kristóf Tóth
095c818a36 Move @with_monitor_paused decoartor to directory_monitor.py 2018-03-21 17:18:16 +01:00
Kristóf Tóth
6e391b6b2c Rename watchdog's EventHandlers to avoid confusion 2018-03-20 14:35:21 +01:00
Kristóf Tóth
c8dca5f33b Change order of classes in directory_monitor.py 2018-03-20 14:32:27 +01:00
Kristóf Tóth
359e478069 Move DirectoryManagingEventHandler to seperate module 2018-03-20 14:29:14 +01:00
Kristóf Tóth
598cf6218a Remove duplicate name from logging 2018-03-20 12:20:13 +01:00
Kristóf Tóth
6c5361846b Adjust DirectoryMonitor rate limiting to filter multi-inotify events 2018-03-20 11:40:20 +01:00
Kristóf Tóth
b1f4842dc7 Use now fixed DirectoryMonitor.ignore property in webide 2018-03-20 11:39:37 +01:00
Kristóf Tóth
08693d3ba2 Fix infinite recursive property in DirectoryMonitor 2018-03-20 11:31:29 +01:00
Kristóf Tóth
222143665c Implement DirManagingEH selectdir API 2018-03-20 09:02:05 +01:00
Kristóf Tóth
7b834f8f25 Expose DirManagingEH.directory as a property 2018-03-20 09:02:05 +01:00
Kristóf Tóth
aaaad9c459 Add untested DirectoryMonitoringEventHandler implementation 2018-03-20 09:02:05 +01:00
Kristóf Tóth
ccb076c885 Remove depecrated ioloop.install() calls 2018-03-15 16:11:53 +01:00
Kristóf Tóth
cc87540171 Implement SourceCodeEventHandler blacklist manipulating API 2018-03-15 15:54:07 +01:00
Kristóf Tóth
aa54e40f14 Refactor SourceCodeEventHandler blacklisting to use unix pattern matching 2018-03-15 15:50:52 +01:00
Kristóf Tóth
1b87863997 Refactor FileManager.select_file() to @filename.setter property 2018-03-15 12:18:39 +01:00
Kristóf Tóth
0ef502a680 Make property setup stuff in FileManager.__init__() more readable 2018-03-15 12:04:39 +01:00
Kristóf Tóth
4b8b71d967 Expose FileManager exclude as a property 2018-03-15 12:02:56 +01:00