forked from pawelmalak/flame
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request pawelmalak#12 from fdarveau/merge_upstream_2-1-1
Merge upstream v2.1.1
- Loading branch information
Showing
269 changed files
with
13,528 additions
and
7,018 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
## Adding new config key | ||
|
||
1. Edit utils/init/initialConfig.json | ||
2. Edit client/src/interfaces/Config.ts | ||
3. Edit client/src/utility/templateObjects/configTemplate.ts | ||
|
||
If config value will be used in a form: | ||
|
||
4. Edit client/src/interfaces/Forms.ts | ||
5. Edit client/src/utility/templateObjects/settingsTemplate.ts |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,166 @@ | ||
import sqlite3 | ||
from bs4 import BeautifulSoup | ||
from PIL import Image, UnidentifiedImageError | ||
from io import BytesIO | ||
import re | ||
import base64 | ||
from datetime import datetime, timezone | ||
import os | ||
import argparse | ||
|
||
|
||
""" | ||
Imports html bookmarks file into Flame. | ||
Tested only on Firefox html exports so far. | ||
Usage: | ||
python3 bookmarks_importer.py --bookmarks <path to bookmarks file> --data <path to flame data dir> | ||
""" | ||
|
||
parser = argparse.ArgumentParser() | ||
parser.add_argument('--bookmarks', type=str, required=True) | ||
parser.add_argument('--data', type=str, required=True) | ||
args = parser.parse_args() | ||
|
||
bookmarks_path = args.bookmarks | ||
data_path = args.data | ||
created = datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3] + datetime.now().astimezone().strftime(" %z") | ||
updated = created | ||
if data_path[-1] != '/': | ||
data_path = data_path + '/' | ||
|
||
|
||
|
||
|
||
def Base64toPNG(codec, name): | ||
|
||
""" | ||
Convert base64 encoded image to png file | ||
Reference: https://github.com/python-pillow/Pillow/issues/3400#issuecomment-428104239 | ||
Parameters: | ||
codec (str): icon in html bookmark format.e.g. 'data:image/png;base64,<image encoding>' | ||
name (str): name for export file | ||
Returns: | ||
icon_name(str): name of png output E.g. 1636473849374--mybookmark.png | ||
None: if image not produced successfully | ||
""" | ||
|
||
try: | ||
unix_t = str(int(datetime.now(tz=timezone.utc).timestamp() * 1000)) | ||
icon_name = unix_t + '--' + re.sub(r'\W+', '', name).lower() + '.png' | ||
image_path = data_path + 'uploads/' + icon_name | ||
if os.path.exists(image_path): | ||
return image_path | ||
base64_data = re.sub('^data:image/.+;base64,', '', codec) | ||
byte_data = base64.b64decode(base64_data) | ||
image_data = BytesIO(byte_data) | ||
img = Image.open(image_data) | ||
img.save(image_path, "PNG") | ||
return icon_name | ||
except UnidentifiedImageError: | ||
return None | ||
|
||
|
||
|
||
|
||
def FlameBookmarkParser(bookmarks_path): | ||
|
||
""" | ||
Parses HTML bookmarks file | ||
Reference: https://stackoverflow.com/questions/68621107/extracting-bookmarks-and-folder-hierarchy-from-google-chrome-with-beautifulsoup | ||
Parameters: | ||
bookmarks_path (str): path to bookmarks.html | ||
Returns: | ||
None | ||
""" | ||
|
||
soup = BeautifulSoup() | ||
with open(bookmarks_path) as f: | ||
soup = BeautifulSoup(f.read(), 'lxml') | ||
|
||
dt = soup.find_all('dt') | ||
folder_name ='' | ||
for i in dt: | ||
n = i.find_next() | ||
if n.name == 'h3': | ||
folder_name = n.text | ||
continue | ||
else: | ||
url = n.get("href") | ||
website_name = n.text | ||
icon = n.get("icon") | ||
if icon != None: | ||
icon_name = Base64toPNG(icon, website_name) | ||
cat_id = AddFlameCategory(folder_name) | ||
AddFlameBookmark(website_name, url, cat_id, icon_name) | ||
|
||
|
||
|
||
|
||
def AddFlameCategory(cat_name): | ||
""" | ||
Parses HTML bookmarks file | ||
Parameters: | ||
cat_name (str): category name | ||
Returns: | ||
cat_id (int): primary key id of cat_name | ||
""" | ||
|
||
|
||
|
||
con = sqlite3.connect(data_path + 'db.sqlite') | ||
cur = con.cursor() | ||
count_sql = ("SELECT count(*) FROM categories WHERE name = ?;") | ||
cur.execute(count_sql, [cat_name]) | ||
count = int(cur.fetchall()[0][0]) | ||
if count > 0: | ||
getid_sql = ("SELECT id FROM categories WHERE name = ?;") | ||
cur.execute(getid_sql, [cat_name]) | ||
cat_id = int(cur.fetchall()[0][0]) | ||
return cat_id | ||
|
||
is_pinned = 1 | ||
|
||
insert_sql = "INSERT OR IGNORE INTO categories(name, isPinned, createdAt, updatedAt) VALUES (?, ?, ?, ?);" | ||
cur.execute(insert_sql, (cat_name, is_pinned, created, updated)) | ||
con.commit() | ||
|
||
getid_sql = ("SELECT id FROM categories WHERE name = ?;") | ||
cur.execute(getid_sql, [cat_name]) | ||
cat_id = int(cur.fetchall()[0][0]) | ||
return cat_id | ||
|
||
|
||
|
||
|
||
def AddFlameBookmark(website_name, url, cat_id, icon_name): | ||
con = sqlite3.connect(data_path + 'db.sqlite') | ||
cur = con.cursor() | ||
if icon_name == None: | ||
insert_sql = "INSERT OR IGNORE INTO bookmarks(name, url, categoryId, createdAt, updatedAt) VALUES (?, ?, ?, ?, ?);" | ||
cur.execute(insert_sql, (website_name, url, cat_id, created, updated)) | ||
con.commit() | ||
else: | ||
insert_sql = "INSERT OR IGNORE INTO bookmarks(name, url, categoryId, icon, createdAt, updatedAt) VALUES (?, ?, ?, ?, ?, ?);" | ||
cur.execute(insert_sql, (website_name, url, cat_id, icon_name, created, updated)) | ||
con.commit() | ||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
if __name__ == "__main__": | ||
FlameBookmarkParser(bookmarks_path) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
// Script to get all icon names from materialdesignicons.com | ||
const getMdi = () => { | ||
const icons = document.querySelectorAll('#icons div span'); | ||
const names = [...icons].map((icon) => icon.textContent.replace('mdi-', '')); | ||
const output = names.map((name) => ({ name })); | ||
output.pop(); | ||
const json = JSON.stringify(output); | ||
console.log(json); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,16 +1,26 @@ | ||
FROM node:lts-alpine as build-front | ||
|
||
RUN apk add --no-cache curl | ||
|
||
WORKDIR /app | ||
|
||
COPY ./client . | ||
|
||
RUN npm install --production \ | ||
&& npm run build | ||
|
||
FROM node:lts-alpine | ||
|
||
WORKDIR /app | ||
|
||
RUN mkdir -p ./public | ||
|
||
COPY --from=build-front /app/build/ ./public | ||
|
||
COPY package*.json ./ | ||
|
||
RUN npm install | ||
|
||
COPY . . | ||
CMD ["npm", "run", "skaffold"] | ||
|
||
CMD ["npm", "run", "skaffold"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,27 +1,31 @@ | ||
FROM node:14-alpine | ||
|
||
RUN apk update && apk add --no-cache nano curl | ||
FROM node:16-alpine3.11 as builder | ||
|
||
WORKDIR /app | ||
|
||
COPY package*.json ./ | ||
|
||
RUN apk --no-cache --virtual build-dependencies add python make g++ \ | ||
RUN apk --no-cache --virtual build-dependencies add python python3 make g++ \ | ||
&& npm install --production | ||
|
||
COPY . . | ||
COPY . . | ||
|
||
RUN mkdir -p ./public ./data \ | ||
&& cd ./client \ | ||
&& npm install --production \ | ||
&& npm run build \ | ||
&& cd .. \ | ||
&& mv ./client/build/* ./public \ | ||
&& rm -rf ./client \ | ||
&& apk del build-dependencies | ||
&& rm -rf ./client | ||
|
||
FROM node:16-alpine3.11 | ||
|
||
COPY --from=builder /app /app | ||
|
||
WORKDIR /app | ||
|
||
EXPOSE 5005 | ||
|
||
ENV NODE_ENV=production | ||
ENV PASSWORD=flame_password | ||
|
||
CMD ["node", "server.js"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
version: '3.6' | ||
|
||
services: | ||
flame: | ||
image: pawelmalak/flame | ||
container_name: flame | ||
volumes: | ||
- /path/to/host/data:/app/data | ||
# - /var/run/docker.sock:/var/run/docker.sock # optional but required for Docker integration | ||
ports: | ||
- 5005:5005 | ||
# secrets: | ||
# - password # optional but required for (1) | ||
environment: | ||
- PASSWORD=flame_password | ||
# - PASSWORD_FILE=/run/secrets/password # optional but required for (1) | ||
restart: unless-stopped | ||
|
||
# optional but required for Docker secrets (1) | ||
# secrets: | ||
# password: | ||
# file: /path/to/secrets/password |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,5 @@ | ||
node_modules | ||
github | ||
.github | ||
public | ||
build.sh | ||
k8s | ||
skaffold.yaml | ||
skaffold.yaml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,5 @@ | ||
PORT=5005 | ||
NODE_ENV=development | ||
VERSION=1.7.0 | ||
VERSION=2.1.1 | ||
PASSWORD=flame_password | ||
SECRET=e02eb43d69953658c6d07311d6313f2d4467672cb881f96b29368ba1f3f4da4b |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
--- | ||
name: Bug report | ||
about: Create a bug report | ||
title: "[BUG] " | ||
labels: '' | ||
assignees: '' | ||
|
||
--- | ||
|
||
**Deployment details:** | ||
- App version [e.g. v1.7.4]: | ||
- Platform [e.g. amd64, arm64, arm/v7]: | ||
- Docker image tag [e.g. latest, multiarch]: | ||
|
||
--- | ||
|
||
**Bug description:** | ||
|
||
A clear and concise description of what the bug is. | ||
|
||
--- | ||
|
||
**Steps to reproduce:** | ||
|
||
1. Go to '...' | ||
2. Click on '....' | ||
3. Scroll down to '....' |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,5 @@ | ||
node_modules | ||
data | ||
public | ||
!client/public | ||
build.sh |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,2 @@ | ||
*.md | ||
*.md | ||
docker-compose.yml |
Oops, something went wrong.