79 | | === Web-based GUI for GRASS GIS === |
80 | | |
81 | | |
82 | | This idea will consist in building a web application "WebGRASS" which allows to run GRASS modules on modern browsers. [[BR]] |
83 | | The user interface for WebGRASS will be built using [http://www.webtoolkit.eu/wt Wt] , Web Toolkit .[[BR]] |
84 | | WT provides C++ API and python bindings (available on [https://github.com/wdu/pywt github]) for developing web widgets. [[BR]] |
85 | | Each grass module is described by an XML file generated the module's ''--interface-description'' parameter, the xml file is then parsed to generate the Module Form interface. [[BR]] |
86 | | Parsing of the xml file and generating tokens is already available in GRASS GIS. [[BR]] |
87 | | |
88 | | The main User Interface will be composed by : |
89 | | * Auth-module (user log-in) |
90 | | * mapset-location wizard |
91 | | * map canvas (based on openlayers) |
92 | | * menu bar with same layout of grass desktop |
93 | | * toolbar with: |
94 | | - pan |
95 | | - query |
96 | | - zoom in - out - to bbox - to layer - to region |
97 | | - save to img mapcanvas |
98 | | - save display extent to region |
99 | | |
100 | | * Command line prompt (a GRASS shell based on IPython Notebook) |
101 | | |
102 | | '''Security concerns''' |
103 | | |
104 | | By default Web-GRASS is designed to allow access to trusted users. [[BR]] |
105 | | Each user will be an UNIX user on the server with his own home. [[BR]] |
106 | | The web-grass UI interface will be accessible through an opportune registration/auth/login framework.[[BR]] |
107 | | The communication over the network will be encrypted using HTTPS.[[BR]] |
108 | | The imput parameters will be parsed and sanitized, this will be part of the UI itself, based on the [http://grass.osgeo.org/programming7/gislib_cmdline_parsing.html GRASS command-line parsing] [[BR]] |
109 | | Will be choice of deployment team to decide to adopt any 'Extra security layer'. This can be achieved using tools like : |
110 | | * [https://www.docker.io/ docker] |
111 | | * [https://linuxcontainers.org/ lxc] |
112 | | * [http://supervisord.org/ supervisors] |
113 | | * [http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.cmds/doc/aixcmds5/ulimit.htm ulimit] |
114 | | |
115 | | |
116 | | Discussion on the grass-dev mailing-list [http://lists.osgeo.org/pipermail/grass-dev/2014-March/067665.html GRASS GIS Web UI] |
117 | | |
118 | | Detailed [http://www.google-melange.com/gsoc/proposal/public/google/gsoc2014/massimo_di_stefano/5685265389584384 Idea description] |
119 | | |
120 | | * Language requirements: C++, Python |
121 | | * Mentor: Mohammed Rashad |
122 | | * Co-Mentor: KS Rajan |
123 | | * Student: [http://wiki.osgeo.org/wiki/User:Epifanio Massimo Di Stefano] |
124 | | |
125 | | Sample PyWt implementation to call GRASS commands from a PyWT web-UI |
126 | | |
127 | | * [http://144.76.93.231:8080 Test page] |
128 | | * [https://github.com/epifanio/wgrass source code] |