From Fedora Project Wiki
No edit summary
No edit summary
Line 1: Line 1:
{{TNT|Draft}}


== Project Title : Shumgrepper ==
== Project Title : Shumgrepper ==
Line 52: Line 51:
| style="border: 0px solid white;" |
| style="border: 0px solid white;" |
The project will mainly be divided into 5 phases.
The project will mainly be divided into 5 phases.
<br/>
|- style="background-color: #e6e6e6;"
|- style="background-color: #e6e6e6;"
| style="border: 0px solid white;" |
| style="border: 0px solid white;" |
Line 70: Line 70:
|-  
|-  
| style="border: 0px solid white;" |
| style="border: 0px solid white;" |
The development in this part enable shumgrepper return json data when httpie request is made on terminal.  
The development in this part enable shumgrepper return json data when httpie request is made on terminal.This will be implemented using flask framework. It involves defining various end-points of the app.
This will be implemented using flask framework. It involves defining various end-points of the app.
 
|- style="background-color: #e6e6e6;"
| style="border: 0px solid white;" |
'''Phase 3: Web-Frontend'''
|-
| style="border: 0px solid white;" |
In this part I will use mako[1] template library to build the web-front end for end-points defined in the earlier phase.
Apart from this it will also involve making the index page and reference page of the app.
Index page is the front page to be displayed and reference page will describe various end-points and their arguments.
 
I will also take measures to mitigate DDoS attack, the main aim would be to distinguish between legitimate website visitors and automated or malicious clients.
 
This can be implemented in the following steps:
* Designing the front-end of the page and deciding what information to be displayed.
* Converting json data into human readable strings using fedmsg.meta[2] functions.
* Improving styling(css) of the page as per design.
* Index page may contain an odometer for count of different GPL Licence.
* Index page may also contain a graph (package name v/s number of times it is bundled). 
* Embed a challenge response(C/R)  mechanism in the form of CAPTCHA.
 
|- style="background-color: #e6e6e6;"
| style="border: 0px solid white;" |
'''Phase 4: Cross-platform testing'''
|-
| style="border: 0px solid white;" |
It involves integrating the app on other applications and testing it
* This may require making amendments in the app.
|- style="background-color: #e6e6e6;"
| style="border: 0px solid white;" |
'''Phase 5: Deployment'''
|-
| style="border: 0px solid white;" |
In this phase i will deploy the package Shumgrepper in fedora production environment. This will enable users to install it in other machines through yum.
 
It involves the following steps:
* Packaging of Shumgrepper as rpm
* Deploy the rpm file in fedora staging infrastructure to check if it works there.
* Push everything out to the fedora production environment.

Revision as of 09:38, 16 March 2014

Project Title : Shumgrepper

Personal Information


Goal

Shumgrepper is a web app built on the top of Summershum. Summershum is a project that collects md5sum, sha1sum and sha521sum of every file present in every package. This can be used to check how many packages have the full GPL license, how many files contains a particular hash sum in all Fedora or to check the database in taskotron test, etc.

I will develop the web-frontend and json/api for the data generated by summershum. It will integrate most of the features of datagrepper. It will involve UI improvement to it in order to display the data generated by summershum. Apart from this the website will be vulnerable to DDoS attack, it will involve taking appropriate measures to mitigate its effect. Also it contains secure hash keys which needs to be protected.


Project details

The project will mainly be divided into 5 phases.

Phase 1: Query building for Database

This includes linking shumgrepper with the database of summershum, reading and querying the database.

  • Deciding various arguments(filtering arguments, paging argument and formatting arguments) and their parameters.

-- One of the filtering arguments can be ‘filename’ which takes filename as value.
-- Some other arguments can be ‘pkgname’ (takes package_name as value), tarfile, date,md5sum, sha256sum, sha1sum.

  • Add methods in summershum that will return data according to argument requested.
  • Format returned data in machine readable output like csv, json

Phase 2: Web API Wrapper of the app

The development in this part enable shumgrepper return json data when httpie request is made on terminal.This will be implemented using flask framework. It involves defining various end-points of the app.

Phase 3: Web-Frontend

In this part I will use mako[1] template library to build the web-front end for end-points defined in the earlier phase. Apart from this it will also involve making the index page and reference page of the app. Index page is the front page to be displayed and reference page will describe various end-points and their arguments.

I will also take measures to mitigate DDoS attack, the main aim would be to distinguish between legitimate website visitors and automated or malicious clients.

This can be implemented in the following steps:

  • Designing the front-end of the page and deciding what information to be displayed.
  • Converting json data into human readable strings using fedmsg.meta[2] functions.
  • Improving styling(css) of the page as per design.
  • Index page may contain an odometer for count of different GPL Licence.
  • Index page may also contain a graph (package name v/s number of times it is bundled).
  • Embed a challenge response(C/R) mechanism in the form of CAPTCHA.

Phase 4: Cross-platform testing

It involves integrating the app on other applications and testing it

  • This may require making amendments in the app.

Phase 5: Deployment

In this phase i will deploy the package Shumgrepper in fedora production environment. This will enable users to install it in other machines through yum.

It involves the following steps:

  • Packaging of Shumgrepper as rpm
  • Deploy the rpm file in fedora staging infrastructure to check if it works there.
  • Push everything out to the fedora production environment.