Commit Graph

297 Commits

Author SHA1 Message Date
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
Kristóf Tóth
f354fd73dc Rename response -> message in ServerConnector classes 2018-03-14 16:11:27 +01:00
Kristóf Tóth
929ea905c5 Improve error handling in webide backend 2018-03-14 14:15:40 +01:00
Kristóf Tóth
a5d0359ab8 Add helper method to ServerUplinkConnector for EH -> EH communication 2018-03-14 14:09:30 +01:00
Kristóf Tóth
69f03f7615 Implement EventHandler command mirroring (EH -> EH communication) 2018-03-14 14:08:48 +01:00
Kristóf Tóth
3e0592c176 Remove Cenator :'( sorry to see you go 2018-03-14 09:25:42 +01:00
Kristóf Tóth
b955a570fd Fix DirectoryMonitor.stop() raising unhandled KeyError on rm -rf workdir 2018-03-09 09:50:13 +01:00
Kristóf Tóth
0e4be3c22f Refactor DirectoryMonitor handling in SourceCodeEventHandler 2018-03-09 09:37:48 +01:00
Kristóf Tóth
3b241a3930 Implement error handling in SourceCodeEventHandler.select_dir() 2018-03-09 09:11:52 +01:00
Kristóf Tóth
20895cb989 Add workind directory to SourceCodeEventHandler's default fileinfos 2018-03-09 08:52:13 +01:00
Kristóf Tóth
9e4fe87d84 Implement support to change working directories in SourceCodeEventHandler 2018-03-09 08:45:30 +01:00
Kristóf Tóth
7858caf51a Make excluded stuff in FileManager configurable from __init__() 2018-03-09 08:41:12 +01:00
Kristóf Tóth
b224ed519d Add support to FileManager to change working directory 2018-03-09 08:37:08 +01:00
Kristóf Tóth
491bbe5df6 Remove ambiguous log (already logged in networking) 2018-03-08 16:41:43 +01:00
Kristóf Tóth
af1a6261cc Refactor naming conventions: data_json -> message in TFW EventHandlers 2018-03-08 16:11:43 +01:00
Kristóf Tóth
36724c5c51 Implement 'tail' on stderr feedback 2018-03-08 16:05:44 +01:00
Kristóf Tóth
f874deff6e Implement stderr feedback on deployment failure (ProcessManagingEventHandler) 2018-03-08 16:04:35 +01:00
Kristóf Tóth
8588328a8f Improve handling of supervisor errors in ProcessManagingEventHandler 2018-03-07 16:35:55 +01:00
Kristóf Tóth
9b550f724d Extend ProcessManagingEventHander with deployment failure detection 2018-03-07 15:14:33 +01:00
Kristóf Tóth
d11d9a70cb Remove TFW antipattern I wrote without thinking 2018-03-07 14:47:24 +01:00
Kristóf Tóth
2c816d5a38 Implement error handling on EventHandler exposing APIs 2018-03-07 14:45:43 +01:00
Kristóf Tóth
6a6236e704 Refactor callback subscription stuff to a mixin 2018-03-07 11:45:57 +01:00
Bokros Bálint
6db4c80671
Merge pull request #17 from avatao-content/terminado_commands
Implement terminal manipulation via a new EventHandler
2018-03-07 11:43:02 +01:00
Kristóf Tóth
6d59762e2b Clean up confusing usage of data_json['data'] in TerminadoEventHandler 2018-03-07 11:37:52 +01:00
Kristóf Tóth
cb7e8c5663 Make DirectoryMonitor.ignore setter more pythonic 2018-03-07 11:36:21 +01:00
Kristóf Tóth
4e0f95acbd Rename JOHN CENA to avataobot as per business demands 2018-03-07 10:19:11 +01:00
Kristóf Tóth
3cf404ee9a Implement inotify event ignoration logic 2018-03-07 09:17:29 +01:00
Kristóf Tóth
1165fa4ec9 Refactor pty resetting logic to TerminadoMiniServer 2018-03-06 16:15:04 +01:00
Kristóf Tóth
e20a5dab23 Implement pty recovery 2018-03-06 14:33:01 +01:00
Kristóf Tóth
555d571112 Expose term_manager in TerminadoMiniServer as a property 2018-03-06 14:28:36 +01:00
Kristóf Tóth
021a122523 Stop HistoryMonitor in TerminadoEventHandler.cleanup() 2018-03-06 13:27:32 +01:00
Kristóf Tóth
02bc317009 Refactor CallbackEventHandler to be a PatternMatchingEventHandler 2018-03-06 13:27:32 +01:00
Kristóf Tóth
a4b07e549e Rename & expose as property TerminadoEventHandler.monitor 2018-03-06 13:27:32 +01:00
Kristóf Tóth
0a20cffa09 Implement callback subscription logic in HistoryMonitor 2018-03-06 13:27:32 +01:00
Kristóf Tóth
ab76e3d024 Store length of history list requested in every case 2018-03-06 13:27:32 +01:00
Kristóf Tóth
cc964fdf27 Strip newlines from stored history in HistoryMonitor 2018-03-06 13:27:32 +01:00
Kristóf Tóth
180cf41f85 Implement history reading API 2018-03-06 13:27:32 +01:00
Kristóf Tóth
5133806d33 Make Historymonitor.history a list instead of a deque (for slicing) 2018-03-06 13:27:32 +01:00
Kristóf Tóth
eea6a418a8 Start work on HistoryMonitor to read command history 2018-03-06 13:27:32 +01:00
Kristóf Tóth
6312e22117 Make TerminadoMiniServer compatible with an external IOLoop 2018-03-06 13:27:32 +01:00
Kristóf Tóth
4873bbf421 Implement simple pty writing API 2018-03-06 13:27:32 +01:00
Kristóf Tóth
c4c07a4c85 Add proof of concept for terminal pty writing 2018-03-06 13:27:32 +01:00
Kristóf Tóth
bddc10269b Replace UniqueTermManager with SingleTermManager to support pty manipulation 2018-03-06 13:27:32 +01:00
Kristóf Tóth
b7f9acd3b0 Expose pty reference from TerminadoMiniServer 2018-03-06 13:27:32 +01:00
Kristóf Tóth
cc2c6009dd Delegate ownership of terminado server to TerminadoEventHandler 2018-03-06 13:27:32 +01:00
Kristóf Tóth
207f984db1 Delete key instead of setting it to empty string value 2018-03-02 14:02:05 +01:00
Kristóf Tóth
3e06f5c196 Optimize write event responses by removing unused file content 2018-03-02 11:04:58 +01:00
Kristóf Tóth
715e39af0d Expose DirectoryMonitor instance from SourceCodeEventHandler 2018-03-02 10:23:10 +01:00
Kristóf Tóth
e451de2179 Implement DirectoryMonitor support in ProcessManagingEventHandler 2018-03-02 10:21:56 +01:00
Bokros Bálint
feb946a1bb
Merge pull request #15 from avatao-content/pmgeh
Rework TFW process management capabilities
2018-02-28 17:57:27 +01:00
Kristóf Tóth
e29b300925 Refactor ServerUplinkConnector to avoid passing redundant data 2018-02-28 15:57:44 +01:00
Kristóf Tóth
9eaced9f02 Remove unused __init__ attributes from pmgeh related classes 2018-02-27 16:51:10 +01:00
Kristóf Tóth
a6bbe6df55 Update SupervisorMixin users to support stateless API 2018-02-27 15:54:31 +01:00
Kristóf Tóth
789db7416d Refactor SupervisorMixin to be stateless 2018-02-27 15:54:10 +01:00
Kristóf Tóth
57bd2aec45 Implement uplink notifications in ProcessManagingEventHandler 2018-02-27 15:26:16 +01:00
Kristóf Tóth
b50a2e401f Update ProcessManagingEventHandler to support new architecture 2018-02-27 14:39:54 +01:00
Kristóf Tóth
3341e97ef6 Fix anchor->key refactor conflicts after rebase 2018-02-27 14:39:40 +01:00
Kristóf Tóth
387d07bc4a Remove SupervisorMixin from ProcessManagingEventHandler 2018-02-27 14:10:00 +01:00
Kristóf Tóth
3506f5abb4 Fix ProcessMonitor not being compatible with SupervisorMixin 2018-02-27 14:10:00 +01:00
Kristóf Tóth
69c998bfde Rename ProcessManager.__init__() arguments to be more specific 2018-02-27 14:10:00 +01:00
Kristóf Tóth
8d8b60d143 Refactor ProcessManagingEventHandler 2018-02-27 14:10:00 +01:00
Kristóf Tóth
a50a173f54 Implement ProcessManagingEventHandler 2018-02-27 14:10:00 +01:00
Bokros Bálint
58d2977731 Merge pull request #13 from avatao-content/bottomless_pit
Refactor TFW architecture to support stateless event handling
2018-02-27 14:09:44 +01:00
Kristóf Tóth
f21036091c Expose TFWServer.fsm_manager as a property 2018-02-27 13:39:31 +01:00
Kristóf Tóth
770123310a Refactor FSMManager.(un)?subscribe() family of methods to accept lists 2018-02-26 17:52:34 +01:00
Kristóf Tóth
5d7223779a Rework FSMManager predicate contract 2018-02-26 17:47:35 +01:00
Kristóf Tóth
250b9da6d6 Fix FSMManager.unsubscribe_predicate() 2018-02-26 17:24:56 +01:00
Kristóf Tóth
78b689f650 Rename FSMManager handler -> predicate so it actually makes some sense 2018-02-26 17:24:56 +01:00
Kristóf Tóth
7e8ea0c7ac Make FSM triggering dependent on FSMManager 2018-02-26 17:24:56 +01:00
Kristóf Tóth
50c940b21d FSMManager no longer owns the managed FSM 2018-02-26 17:24:56 +01:00
Kristóf Tóth
5776400990 Make FSMManager.fsm a property 2018-02-26 17:24:56 +01:00
Kristóf Tóth
25fd71a2b8 Add message argument to FSMManager.trigger() 2018-02-26 17:24:56 +01:00
Kristóf Tóth
47a4e078de Replace homemade hacky defaultdict with defaultdict ¯\_(ツ)_/¯ 2018-02-26 17:24:56 +01:00
Kristóf Tóth
5e9eb88bfc Implement crude FSMManager – wip 2018-02-26 17:24:56 +01:00
Kristóf Tóth
76456b36de Enable proxying of Triggerless messages in TFWServer 2018-02-23 15:14:23 +01:00
Kristóf Tóth
cf4a5bc09d Refactor FSMUpdate message sending logic to class FSMUpdater 2018-02-23 14:55:58 +01:00
Kristóf Tóth
940e74d6da Implement triggered and triggerless EventHandler base classes 2018-02-23 14:07:41 +01:00
Kristóf Tóth
fd1cb100ad Unify (key, response) ordering 2018-02-23 12:13:19 +01:00
Kristóf Tóth
38ca56fa9d Fix generate_fsm_update() not listing valid transitions properly 2018-02-23 12:08:14 +01:00
Kristóf Tóth
ecbb61a862 Overhaul WS->ZMQ proxying 2018-02-23 12:07:30 +01:00
Kristóf Tóth
26538a4ad9 Make ZMQWebSocketHandler "abstract" 2018-02-21 16:46:25 +01:00
Kristóf Tóth
31ba6cb623 Rename anchor -> key globally ¯\_(ツ)_/¯ 2018-02-21 15:28:16 +01:00
Bálint Bokros
609cd19589 Remove unnecessary super call 2018-02-19 10:02:42 +01:00
Kristóf Tóth
24fd753679 Implement support for multiple websockets connecting to TFW 2018-02-16 17:47:30 +01:00
Kristóf Tóth
3e54733033 Remove unused import 2018-02-16 11:09:58 +01:00
Kristóf Tóth
6e7e681602 Remove unnecessary call in FileManager 2018-02-15 16:32:41 +01:00
Kristóf Tóth
ade210c4fc Remove extension -> language mapping from backend (move to frontend) 2018-02-15 16:30:02 +01:00
Kristóf Tóth
c2e161dad3 Make DirectoryMonitor pausable using the with statement 2018-02-14 17:44:05 +01:00
Kristóf Tóth
0b3db0ae9e Implement pausing watchdog while webide files are being written 2018-02-14 16:09:09 +01:00