Skip to content

Commit 229449a

Browse files
author
Ammara Yasin
committed
Fresh start
1 parent 722c8c2 commit 229449a

30 files changed

+11231
-620
lines changed

.eslintrc

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"extends": [
3+
"next",
4+
"next/core-web-vitals"
5+
],
6+
"rules": {
7+
// Other rules
8+
// https://stackoverflow.com/questions/68203582/error-do-not-use-img-use-image-from-next-image-instead-next-js-using-ht
9+
"@next/next/no-img-element": "off"
10+
}
11+
}

.github/workflows/deployment.yml

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# This workflow will do a clean install of node dependencies, cache/restore them, build the source code and run tests across different versions of node
2+
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
3+
# https://www.youtube.com/watch?v=yRz8D_oJMWQ
4+
5+
name: Node.js CI
6+
7+
on:
8+
push:
9+
branches: [ main ]
10+
pull_request:
11+
branches: [ main ]
12+
13+
jobs:
14+
build:
15+
16+
runs-on: macos-11
17+
18+
# env:
19+
# Repository name
20+
# https://www.linkedin.com/pulse/deploy-nextjs-app-github-pages-federico-antu%C3%B1a/
21+
# BASE_PATH: /${{ github.event.repository.name }}
22+
23+
strategy:
24+
matrix:
25+
node-version: [14.x]
26+
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
27+
28+
steps:
29+
- uses: actions/checkout@v2
30+
- name: Set Environment Variables
31+
run: echo "BASE_PATH=/${GITHUB_REPOSITORY#*/}" >> $GITHUB_ENV
32+
- name: Test Environment Variables
33+
run: echo ${{ env.BASE_PATH }}
34+
- name: Use Node.js ${{ matrix.node-version }}
35+
uses: actions/setup-node@v2
36+
with:
37+
node-version: ${{ matrix.node-version }}
38+
cache: 'npm'
39+
- run: npm ci
40+
# - run: npm run prebuild # build automatically runs prebuild
41+
- run: npm run build
42+
- run: npm run export
43+
- run: touch ./out/.nojekyll
44+
45+
# https://github.com/marketplace/actions/deploy-to-github-pages
46+
- name: Deploy 🚀
47+
uses: JamesIves/[email protected]
48+
with:
49+
branch: gh-pages # The branch the action should deploy to.
50+
folder: out # The folder the action should deploy.

.gitignore

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2+
3+
# dependencies
4+
/node_modules
5+
/.pnp
6+
.pnp.js
7+
8+
# testing
9+
/coverage
10+
11+
# next.js
12+
/.next/
13+
/out/
14+
15+
# production
16+
/build
17+
18+
# misc
19+
.DS_Store
20+
*.pem
21+
22+
# debug
23+
npm-debug.log*
24+
yarn-debug.log*
25+
yarn-error.log*
26+
27+
# local env files
28+
.env.local
29+
.env.development.local
30+
.env.test.local
31+
.env.production.local
32+
33+
# vercel
34+
.vercel

.vscode/settings.json

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"editor.tabSize": 2,
3+
"editor.formatOnSave": true,
4+
"editor.rulers": [
5+
100
6+
],
7+
}

LICENSE

+21-339
Large diffs are not rendered by default.

README.md

+125-39
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,149 @@
1-
# IoTrim
2-
Consumer IoT devices come with convenient services. However, since there are few strict privacy/security regulations and standards in the IoT context, device abuse is increasingly becoming a major privacy/security issue for consumers worldwide.
1+
<!-- PROJECT LOGO -->
2+
<br />
3+
<p align="center">
4+
<h1 align="center">Developer's Portfolio ✨</h1>
35

4-
IoTrim, automatically monitors and blocks non-essential network activities, and identifies IoT devices’ information exposure and security threats, using privacy-preserving AI techniques to build insights and behavioral models from devices.
5-
IoTrim components run on the home router, and can be controlled through a smartphone app, a computer or the user’s voice (It offers easy-to-use, plug and play protection).
6+
<p align="center">
7+
It is a personal static website/portfolio template hosted with GitHub Pages, built to showcase my recent projects.
8+
<br />
9+
<strong>Site URL / Demo » </strong>
10+
<a href="https://hashirshoaeb.github.io/portfolio"> hashirshoaeb.github.io/portfolio</a>
11+
<br />
12+
<br />
13+
<a href="https://hashirshoaeb.com">About Me</a>
14+
·
15+
<a href="https://github.com/hashirshoaeb/portfolio/issues">Report Bug</a>
16+
·
17+
<a href="https://github.com/hashirshoaeb/portfolio/issues">Request Feature</a>
18+
</p>
19+
</p>
620

7-
IoTrim prevents violations of individuals’ privacy by intercepting and blocking information exposure to third-party analytics and service providers, most of which are collecting personal data unbeknownst to the user and potentially breaking privacy regulations such as the GDPR and CCPA.
21+
[![GitHub forks](https://img.shields.io/github/forks/hashirshoaeb/portfolio?style=for-the-badge)](https://github.com/hashirshoaeb/portfolio/network)
22+
[![GitHub license](https://img.shields.io/github/license/hashirshoaeb/portfolio?style=for-the-badge)](https://github.com/hashirshoaeb/portfolio/blob/master/LICENSE)
23+
[![Twitter Follow](https://img.shields.io/twitter/follow/hashirshoaeb?color=ffcc66&logo=twitter&logoColor=ffffff&style=for-the-badge)](https://twitter.com/hashirshoaeb)
24+
[![Node Version](https://img.shields.io/static/v1?label=Node&message=16.16.0&color=026e00&style=for-the-badge)](https://nodejs.org)
25+
[![npm Version](https://img.shields.io/static/v1?label=npm&message=8.11.0&color=cb0000&style=for-the-badge)](https://nodejs.org)
826

9-
The design of the testing system (<a href="https://github.com/IoTrim/IoTrigger">IoTrigger</a>), the blocking system (<a href="https://github.com/IoTrim/IoTrimmer">IoTrimmer</a>), the <a href="https://github.com/IoTrim/ML">AI Engine</a>, and the <a href="https://github.com/IoTrim/iotrimlist">IoTrim list</a> have now been released!
1027

11-
## IoTrim List
28+
<!-- TABLE OF CONTENTS -->
29+
<details>
30+
<summary>Table of Contents</summary>
31+
<ol>
32+
<li>
33+
<a href="#about-the-project">About The Project</a>
34+
</li>
35+
<li>
36+
<a href="#getting-started">Getting Started</a>
37+
<ul>
38+
<li><a href="#prerequisites">Prerequisites</a></li>
39+
<li><a href="#setup">Setup</a></li>
40+
</ul>
41+
</li>
42+
<li><a href="#support-my-work">Support my work</a></li>
43+
<li><a href="#contributing">Contributing</a></li>
44+
<li><a href="#license">License</a></li>
45+
</ol>
46+
</details>
1247

13-
This site contains a <a href="https://github.com/IoTrim/iotrimlist">set of non-required destinations list</a> from 31 consumer IoT devices and the software for producing the list. The list is created using a methodology for determining non-required destinations by automatically executing IoT device functions and determining the execution outcome while blocking selected destinations.
14-
IoT devices offer multiple types of functionality; however, for this list, we select only the main functions for every IoT device under test. However, from preliminary experiments we have seen that most devices use the same destinations for different functions.
1548

16-
<a href="https://github.com/IoTrim/iotrimlist/"><img src="https://raw.githubusercontent.com/IoTrim/iotrimlist/master/iotrim.png" width="500"/></a>
1749

18-
The list contains 4 columns:
50+
<!-- ABOUT THE PROJECT -->
51+
# About The Project
1952

20-
* device: the device under test
21-
* destination: the non-required destination
22-
* party: destination’s party type (first party, third, support)
23-
- First party: destination related to the device manufacturer.
24-
- Support party: destination that is not a first party and is responsible for providing remote computation.
25-
- Third party: destination that is not a First party or a Support party.
26-
* grouped: to facilitate analysis and streamline blocklists, we developed a strategy to group destinations thet use different DNS names and IP addresses for each replica.
53+
[![Product Name Screen Shot](/READMEdocs/screenshot.gif)](https://example.com)
2754

28-
## IoTrigger
55+
There are many portfolio website templates available on Github, however, I didn't find one that really suit my needs so I created this one. A simple, easy to configure, lightweight, and responsive static portfolio website.
2956

30-
This site contains a <a href="https://github.com/IoTrim/IoTrigger"> command-line version of IoTrigger</a>, which includes a library of probes and triggers scripts that support the IoT devices we tested. IoTrigger manages the lifecycle of functionality experiments for each device, including the invocation of user-provided trigger and probe scripts, and to finally produce (non-)required destination lists.
31-
32-
## IoTrimmer
57+
I know one template doesn't fulfill everyone's needs. So I'll try adding more features in the near future. You may also suggest changes by forking this repo and creating a pull request or opening an issue.
3358

34-
This site contains a <a href="https://github.com/IoTrim/IoTrimmer"> version of IoTrimmer</a>. It comes preconfigured with the deny-listing blocking strategy and uses the blocklist of 62 non-required destinations we found for our set of 31 IoT devices.
35-
When a new device is connected to IoTrimmer its MAC address appears on the list.
36-
The user then chooses which device is connected to IoTrimmer. The blocklist (IoTrim) is regularly updated from the Internet and automatically applied to all connected devices. Users can click on a device to display the list of blocked destinations.
37-
38-
## AI Engine
59+
**Features**
3960

40-
This site contains a <a href="https://github.com/IoTrim/ML"> version of the AI Engine</a>. The IoTrim AI Engine allows to build and re-train ML models for device identification.
61+
- [x] Easy to configure
62+
- [x] SEO friendly
63+
- [x] Responsive
64+
- [x] Lightweight
65+
- [x] Linktree Page
4166

42-
## TEAM
43-
IoTrim leverages advanced privacy preserving AI techniques for creating the trim lists. The protection techniques behind IoTrimmer have been reviewed by experts in top academic institutions, resulting in research papers published in top tier scientific conferences and EU/US funded research projects. Our team won important awards and our research has been featured in the Financial Times, New York Times, USA Today and the BBC.
67+
**Built with** [Nextjs](https://nextjs.org/) & [Bootstrap5](https://getbootstrap.com).
4468

45-
* <a href="https://annamandalari.com/">Dr Anna Maria Mandalari</a> works as Associate Professor at University College London (UCL). She is affiliated with the Electronic & Electrical Engineering Department and member of the UCL’s Academic Center of Excellence in Cyber Security Research (ACE-CSR). She is Honorary Research Fellow at the Institute for Security Science and Technology at Imperial College London. Her research interests are related to IoT, privacy, large-scale Internet measurements, Internet measurement platforms, middleboxes and new Internet protocols.
4669

47-
* <a href="https://haddadi.github.io/">Professor Hamed Haddadi</a> is an Associate Professor in Human-Centred Systems at the Department of Computing at Imperial College London. He is part of the Networks and Systems Laboratory (NetSys) and Imperial-X (I-X) where he leads the Privacy and Security Research Area. He also serves as a Security Science Fellow of the Institute for Security Science and Technology. In his industrial role, he is the Chief Scientist at Brave.
4870

49-
* <a href="https://david.choffnes.com/">Professor David Choffnes</a> is an Associate Professor at Northeastern University, Executive Director of the Cybersecurity and Privacy Institute, and affiliate faculty at the Center for Law, Innovation and Creativity (CLIC). His research is primarily in the areas of distributed systems and networking, with a recent focus on privacy, security, transparency, and mobile systems.
71+
<!-- GETTING STARTED -->
72+
# Getting Started
5073

51-
* <a href="https://www.khoury.northeastern.edu/people/daniel-j-dubois/">Dr Daniel Dubois</a> is an Associate Research Scientist at Northeastern University, his research is rooted in software engineering, with a current focus on IoT privacy. He maintains the Mon(IoT)r Lab testbed, which provides an IoT monitoring infrastructure to four research institutions.
74+
Building your own personal website from this project can take as little as 30 minutes. Follow the setup instructions below. Please feel free to reach out to me by filing an [issue](https://github.com/hashirshoaeb/portfolio/issues) or emailing me at [email protected] for help configuring your project.
5275

76+
## Prerequisites
5377

54-
## NEWS
55-
* Our paper “Protected or Porous: A Comparative Analysis of Threat Detection Capability of IoT Safeguards” has been conditionally accepted to the 44th IEEE Symposium on Security and Privacy (Oakland 2023). More details [here.](https://iotrim.github.io/safeguards.html)
78+
You should have [Nodejs](https://nodejs.org/en/) and [Git](https://git-scm.com/downloads) installed on your PC. You should also own a GitHub account.
5679

57-
* Our paper, describing the methodology and results, “Blocking Without Breaking: Identification and Mitigation of Non-Essential IoT Traffic” has been accepted to the Privacy Enhancing Technologies Symposium <a href="https://petsymposium.org/2021/paperlist.php">(PETS 2021)</a>. More details [here.](https://moniotrlab.ccis.neu.edu/publications/pets21/)
80+
## Setup
5881

59-
* Our project won one of the Top 5 spots in the <a href="https://telekom-challenge.com/">Telekom Challenge</a> amongst 180 startup teams around the world.
82+
1. Fork this repoistory and clone it to your local machine.
83+
```sh
84+
git clone https://github.com/<your-username>/portfolio.git
85+
```
6086

61-
<a href="https://telekom-challenge.com/"><img src="https://raw.githubusercontent.com/IoTrim/iotrimlist/master/telekom.png" width="500"/></a>
87+
2. Edit the [config/config.js](https://github.com/hashirshoaeb/portfolio/blob/main/config/config.js) file. Replace [config/profile.png](https://github.com/hashirshoaeb/portfolio/blob/main/config/profile.png) with your image.
88+
>Note: You need to rename your image file as `profile.png`.
6289

90+
3. Run following scripts in terminal/command prompt to install dependencies.
91+
```sh
92+
npm install
93+
npm run build
94+
```
95+
## Testing
6396

97+
1. To test on your local server, run the following command:
98+
```sh
99+
npm run dev
100+
```
101+
102+
2. Open the browser to http://localhost:3000/
103+
104+
## Deployment
105+
106+
If it works locally, you can deploy your project to GitHub Pages. GitHub Pages provides two types of free domains, `<username>.github.io` and `<username>.github.io/<repository>`. You can choose the one that suits your needs. You can learn more about domain types from [here](https://docs.github.com/en/pages/getting-started-with-github-pages/about-github-pages#types-of-github-pages-sites).
107+
108+
### Deploy to \<your-username>.github.io/portfolio
109+
110+
Simply you just need to commit and push your changes to github. And [GitHub Actions](https://docs.github.com/en/actions/learn-github-actions/introduction-to-github-actions#overview) will take care of the deployment. Your site will be available at `https://<your-username>.github.io/portfolio`
111+
112+
### Deploy to \<your-username>.github.io
113+
114+
Create a new repository with your username as `<your-username>.github.io`. And let the following command do the job for you.
115+
116+
```sh
117+
npm run predeploy
118+
node scripts/pages.js <your-username> master
119+
```
120+
121+
Your site will be available at `https://<your-username>.github.io`
122+
123+
>Note: You need to replace `<your-username>` with your username. To add CNAME for custom domain, see [scripts/cname.js](https://github.com/hashirshoaeb/portfolio/blob/main/scripts/cname.js)
124+
125+
# Support my work
126+
127+
If you found this project valuable, please consider giving it a ⭐️ on GitHub. Your support keeps me motivated! If you'd like to further support my work, you can buy me a book. Thank you for your generosity!
128+
129+
<div>
130+
<a href="https://www.buymeacoffee.com/hashirshoaeb"><img src="https://img.buymeacoffee.com/button-api/?text=Buy me a book&emoji=📖&slug=hashirshoaeb&button_colour=5F7FFF&font_colour=ffffff&font_family=Cookie&outline_colour=000000&coffee_colour=FFDD00" /></a>
131+
</div>
132+
133+
<!-- CONTRIBUTING -->
134+
# Contributing
135+
136+
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contribution you make would be **appreciated**.
137+
138+
1. Fork the Project
139+
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
140+
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
141+
4. Push to the Branch (`git push origin feature/AmazingFeature`)
142+
5. Open a Pull Request
143+
144+
145+
146+
<!-- LICENSE -->
147+
# License
148+
149+
Distributed under the `MIT` License. See [LICENSE](https://github.com/hashirshoaeb/portfolio/blob/main/LICENSE) for more information.

READMEdocs/screenshot.gif

15.9 MB
Loading

components/Footer.js

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import React from 'react';
2+
import Link from 'next/link'
3+
4+
export const Contact = ({ title, description, buttons }) => {
5+
return (
6+
<div id="contact" className="bg-white py-5 px-5">
7+
<div className="container">
8+
<h1 className="text-primary fw-bold">{title}</h1>
9+
<div className="px-sm-5">
10+
<p>{description}</p>
11+
<div className="">
12+
{buttons.map((value, index) => (
13+
(value.isPrimary) ?
14+
<Link key={index} href={value.link}>
15+
<a className="btn btn-primary my-1 mx-3">
16+
{value.title}
17+
</a>
18+
</Link>
19+
:
20+
<Link key={index} href={value.link}>
21+
<a className="btn btn-outline-primary my-1 mx-3">
22+
{value.title}
23+
</a>
24+
</Link>
25+
))}
26+
</div>
27+
</div>
28+
</div>
29+
</div>
30+
);
31+
}
32+
33+
export const Footer = () => {
34+
return (
35+
<footer className="bg-secondary text-center py-2 px-5">
36+
<div className="container text-muted">
37+
<small>&copy; 2021 {" "}
38+
<Link href="https://github.com/hashirshoaeb">
39+
<a>hashirshoaeb</a>
40+
</Link>
41+
. Open sourced with love under {" "}
42+
<Link href="https://github.com/hashirshoaeb/portfolio/blob/main/LICENSE">
43+
<a>MIT</a>
44+
</Link>
45+
{" "} License
46+
</small>
47+
</div>
48+
</footer>
49+
);
50+
}

components/Header.js

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import Head from 'next/head'
2+
3+
export const Header = ({ seo }) => {
4+
return (
5+
<Head>
6+
<title>{seo.title}</title>
7+
<meta name="description" content={seo.description} />
8+
<meta property="og:title" content={seo.title} />
9+
<meta property="og:description" content={seo.description} />
10+
<meta property="og:image" content={seo.image} />
11+
<meta property="og:type" content="website" />
12+
</Head>
13+
)
14+
}

0 commit comments

Comments
 (0)