All Projects → cds-snc → report-a-cybercrime

cds-snc / report-a-cybercrime

Licence: MIT license
Report a computer crime or scam / Signaler un crime informatique ou une fraude

Programming Languages

javascript
184084 projects - #8 most used programming language
Gherkin
971 projects
shell
77523 projects
HTML
75241 projects
CSS
56736 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to report-a-cybercrime

deep-learning-intro
Learn Deep Learning with Python
Stars: ✭ 23 (-17.86%)
Mutual labels:  beta
writefreely
A clean, Markdown-based publishing platform made for writers. Write together and build a community.
Stars: ✭ 2,866 (+10135.71%)
Mutual labels:  beta
DirtMultiversion
Proxy that allows connecting older servers using newer client. Work in progress
Stars: ✭ 68 (+142.86%)
Mutual labels:  beta
collaborated
Social chat and productivity app primarily for developers (and maybe gamers)
Stars: ✭ 12 (-57.14%)
Mutual labels:  beta
PS OPNsense
PowerShell Module for OPNsense REST api
Stars: ✭ 27 (-3.57%)
Mutual labels:  beta
YouP3
Android app for downloading media from YouTube with 4K Support (Beta)
Stars: ✭ 51 (+82.14%)
Mutual labels:  beta
altstore
AltStore source with more stuff
Stars: ✭ 44 (+57.14%)
Mutual labels:  beta
Glaedr
An extensive, modular functional scoreboard library for the Bukkit/Spigot API.
Stars: ✭ 23 (-17.86%)
Mutual labels:  beta
zello-channel-api
WebSocket-based API and SDKs to connect to Zello channels (BETA)
Stars: ✭ 59 (+110.71%)
Mutual labels:  beta
Open-Mam
Open Source Mobile Application Management (WORK IN PROGRESS)
Stars: ✭ 28 (+0%)
Mutual labels:  beta
docker-introduction
Reproducible Computational Environments using Containers
Stars: ✭ 34 (+21.43%)
Mutual labels:  beta
python-aos-lesson
Python for Atmosphere and Ocean Scientists
Stars: ✭ 78 (+178.57%)
Mutual labels:  beta
Datscan
DatScan is an initiative to build an open-source CMS that will have the capability to solve any problem using data Analysis just with the help of various modules and a vast standardized module library
Stars: ✭ 13 (-53.57%)
Mutual labels:  beta
infy-scroll
A web extension for Chrome, Edge, and Firefox. Add customized infinite scrolling to websites and auto load the next page. Supports the AutoPagerize Database. (Beta)
Stars: ✭ 70 (+150%)
Mutual labels:  beta
firebase-auth-rails
firebase authorization rails
Stars: ✭ 66 (+135.71%)
Mutual labels:  beta
pluralsight-downloader-chrome-extension
[WIP] A chrome extension to download and track Pluralsight courses. 😈
Stars: ✭ 227 (+710.71%)
Mutual labels:  beta
Simple-Social-Network
Micro Social Network developed in PHP, MySQL, BOOTSTRAP 3 and VUE.JS 2
Stars: ✭ 18 (-35.71%)
Mutual labels:  beta
Windows-Whistler
A port of the Whistler theme that eventually got replaced by Luna in Windows 2001 (XP)
Stars: ✭ 24 (-14.29%)
Mutual labels:  beta
lc-spreadsheets
Tidy data for librarians
Stars: ✭ 17 (-39.29%)
Mutual labels:  beta
hnn
The Human Neocortical Neurosolver (HNN) is a software tool that gives researchers/clinicians the ability to develop/test hypotheses on circuit mechanisms underlying EEG/MEG data.
Stars: ✭ 62 (+121.43%)
Mutual labels:  beta

Report a cybercrime / Signalez un crime informatique

Exploring a service that makes it easier for Canadians and businesses to report when they encounter or are victims of a cybercrime and that helps police analyze and investigate reports.

Explorer la possibilité de mettre en place un service permettant aux Canadiens et aux entreprises de signaler plus aisément les crimes informatiques et facilitant le travail d'analyse et d'enquête de la police.

Installation

Requires node.

cd f2
npm install

Configuration

A number of environment variables are used to configure different parts of the back end. These can be set locally in a .env file. As in .env.example we have the following.

Data storage

As our app is currently running in Microsoft Azure, we are using storing the reports in Azure CosmosDB (using a mongodb api) and uploaded files in Azure Blob Storage. Set the following environment variables:

# database for reports
COSMOSDB_NAME=
COSMOSDB_KEY=

# Blob Storage for files
BLOB_STORAGE_NAME=
BLOB_STORAGE_KEY=

Self harm words

We use a comma separated list of keywords to attempt to detect any user in serious crisis.

# self harm words
SELF_HARM_WORDS=

File scanning

Files are scanned with Clam AV, an open source virus scanner we are running in the cloud. We also use Azure Content Moderator to detect adult images.

# file scanning
CLAM_URL=
CONTENT_MODERATOR_SERVICE_KEY=

Encrypting the reports for the RCMP analysts

Currently the reports are sent to the RCMP via encrypted email. We use the HERMIS IDs of the RCMP staff to fetch their public key certificates.

# encrypting email to intake analyst
LDAP_URL=
LDAP_UID=

Sending the encrypted reports to RCMP analysts

We use an SMTP server directly to send out reports.

# sending encrypted emails
MAIL_HOST=
MAIL_USER=
MAIL_PASS=
MAIL_FROM=

Notify

We are using the Government of Canada's Notify tool to send confirmation emails to users as well as to send feedback to the team developing the app.

# Notify configuration
NOTIFY_API_BASE_URL=
NOTIFY_API_KEY=
NOTIFY_ENGLISH_CONFIRMATION_TEMPLATE_ID=
NOTIFY_FRENCH_CONFIRMATION_TEMPLATE_ID=
NOTIFY_FEEDBACK_TEMPLATE_ID=
FEEDBACK_EMAIL=

Google Analytics

Google Analytics is being used to help us get insight into how the different parts of the app are being used.

# Google Analytics
GOOGLE_ANALYTICS_ID=
REACT_APP_GOOGLE_GTM_ID=

Rate limiting

Finally, we are currently soft launching the app and so are rate limiting how many reports it generates.

# rate limiting
SUBMISSIONS_PER_DAY=
SECONDS_BETWEEN_REQUESTS=

Running locally

Note that you must be in the f2 directory to run the code.

Just the frontend

npm run dev

Frontend and backend

npm run prod

Run project with Docker

docker build -t rac .
docker run -p 3000:3000 rac

Getting the analyst email yourself

It is often useful to quickly see what the analyst email looks like. If the LDAP_UID environment variable is not set and the user provides their email address on the contact info screen then the server will send the analyst email unencrypted to the user. This is solely for development purposes. Note that the review apps are configured this way.

To do this locally:

  • ensure that LDAP_UID is not set in your terminal environment nor in your .env file
  • run npm run prod
  • fill out the report and include your email address on http://localhost:3000/contactinfo
  • you should receive the generated report email

Load testing the frontend

There are simple scripts to load test the frontend. They use the k6 package, which must first be installed (see (https://docs.k6.io/docs/installation)

To run the tests, set the environment variable LOAD_TESTING_BASE_URL to the url of the website, for example

LOAD_TESTING_BASE_URL=https://report-a-scam.azurewebsites.net

and then from the root repo directory run

k6 run -vu 150 -d10s utils/loadTesting.js

Notes:

  • the http_req_duration line shows how long the requests took (from sending request to receiving response)
  • the iterations line shows the number of requests per second (should be approximately 100/s bor both)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].