1
82
.idea/workspace.xml
generated
@ -2,13 +2,37 @@
|
|||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="2d244493-7af1-4307-a64a-32ac4c2ea0a0" name="Default Changelist" comment="">
|
<list default="true" id="2d244493-7af1-4307-a64a-32ac4c2ea0a0" name="Default Changelist" comment="">
|
||||||
|
<change afterPath="$PROJECT_DIR$/dashmachine/static/images/apps/bitwarden.png" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/dashmachine/static/images/apps/jackett.png" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/dashmachine/static/images/apps/radarr.png" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/dashmachine/static/images/apps/sonarr.png" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/dashmachine/static/images/backgrounds/Boy4aow.png" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/dashmachine/static/images/backgrounds/Hk1KgQS.png" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/dashmachine/static/images/backgrounds/ZtkPKMg.jpg" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/dashmachine/static/images/backgrounds/aodvrziifxcjmgvqhbsg.png" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/dashmachine/static/images/backgrounds/avbtqymfykwfcjylgqql.jpg" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/dashmachine/static/images/backgrounds/fns7rzzwluh11.png" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/dashmachine/static/images/backgrounds/glWla8v.png" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/dashmachine/static/images/backgrounds/mKkaVVc.gif" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/dashmachine/static/images/backgrounds/wallpaper-hd-of-pixel-art-and-background-powerpoint-inspirations-picture-pics-desktop.jpg" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/dashmachine/static/images/backgrounds/xdWDtvx.png" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/dashmachine/static/images/backgrounds/xsxgvgayvfvekklkvwvf.png" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/dashmachine/user_data/config.ini" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/dashmachine/user_data/site.db" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/config.ini" beforeDir="false" afterPath="$PROJECT_DIR$/config.ini" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/config.ini" beforeDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/dashmachine/site.db" beforeDir="false" afterPath="$PROJECT_DIR$/dashmachine/site.db" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/dashmachine/__init__.py" beforeDir="false" afterPath="$PROJECT_DIR$/dashmachine/__init__.py" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/dashmachine/main/utils.py" beforeDir="false" afterPath="$PROJECT_DIR$/dashmachine/main/utils.py" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/dashmachine/settings_system/routes.py" beforeDir="false" afterPath="$PROJECT_DIR$/dashmachine/settings_system/routes.py" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/dashmachine/site.db" beforeDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/dashmachine/sources.py" beforeDir="false" afterPath="$PROJECT_DIR$/dashmachine/sources.py" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/dashmachine/static/css/global/dashmachine-theme.css" beforeDir="false" afterPath="$PROJECT_DIR$/dashmachine/static/css/global/dashmachine-theme.css" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/dashmachine/static/css/global/dashmachine.css" beforeDir="false" afterPath="$PROJECT_DIR$/dashmachine/static/css/global/dashmachine.css" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/dashmachine/static/css/global/dashmachine.css" beforeDir="false" afterPath="$PROJECT_DIR$/dashmachine/static/css/global/dashmachine.css" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/dashmachine/static/css/global/style.css" beforeDir="false" afterPath="$PROJECT_DIR$/dashmachine/static/css/global/style.css" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/dashmachine/static/js/global/dashmachine.js" beforeDir="false" afterPath="$PROJECT_DIR$/dashmachine/static/js/global/dashmachine.js" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/dashmachine/static/js/global/dashmachine.js" beforeDir="false" afterPath="$PROJECT_DIR$/dashmachine/static/js/global/dashmachine.js" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/dashmachine/templates/main/base.html" beforeDir="false" afterPath="$PROJECT_DIR$/dashmachine/templates/main/base.html" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/dashmachine/templates/main/home.html" beforeDir="false" afterPath="$PROJECT_DIR$/dashmachine/templates/main/home.html" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/dashmachine/templates/main/layout.html" beforeDir="false" afterPath="$PROJECT_DIR$/dashmachine/templates/main/layout.html" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/dashmachine/templates/main/layout.html" beforeDir="false" afterPath="$PROJECT_DIR$/dashmachine/templates/main/layout.html" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/dashmachine/templates/settings_system/settings.html" beforeDir="false" afterPath="$PROJECT_DIR$/dashmachine/templates/settings_system/settings.html" afterDir="false" />
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
@ -24,7 +48,9 @@
|
|||||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectId" id="1Vyp2sIL21mINKX6JBxGZr1SlH8" />
|
<component name="ProjectId" id="1Vyp2sIL21mINKX6JBxGZr1SlH8" />
|
||||||
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
|
<component name="ProjectLevelVcsManager" settingsEditedManually="true">
|
||||||
|
<ConfirmationsSetting value="2" id="Add" />
|
||||||
|
</component>
|
||||||
<component name="ProjectViewState">
|
<component name="ProjectViewState">
|
||||||
<option name="autoscrollFromSource" value="true" />
|
<option name="autoscrollFromSource" value="true" />
|
||||||
<option name="autoscrollToSource" value="true" />
|
<option name="autoscrollToSource" value="true" />
|
||||||
@ -33,6 +59,7 @@
|
|||||||
<option name="showLibraryContents" value="true" />
|
<option name="showLibraryContents" value="true" />
|
||||||
</component>
|
</component>
|
||||||
<component name="PropertiesComponent">
|
<component name="PropertiesComponent">
|
||||||
|
<property name="ASKED_ADD_EXTERNAL_FILES" value="true" />
|
||||||
<property name="NewWatcherDialog.advanced.open" value="true" />
|
<property name="NewWatcherDialog.advanced.open" value="true" />
|
||||||
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
|
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
|
||||||
<property name="WebServerToolWindowFactoryState" value="false" />
|
<property name="WebServerToolWindowFactoryState" value="false" />
|
||||||
@ -93,7 +120,8 @@
|
|||||||
<updated>1578234985306</updated>
|
<updated>1578234985306</updated>
|
||||||
<workItem from="1578234992218" duration="34772000" />
|
<workItem from="1578234992218" duration="34772000" />
|
||||||
<workItem from="1578313408670" duration="637000" />
|
<workItem from="1578313408670" duration="637000" />
|
||||||
<workItem from="1578359378893" duration="3688000" />
|
<workItem from="1578359378893" duration="4330000" />
|
||||||
|
<workItem from="1580169186784" duration="11024000" />
|
||||||
</task>
|
</task>
|
||||||
<task id="LOCAL-00001" summary="1">
|
<task id="LOCAL-00001" summary="1">
|
||||||
<created>1578313443241</created>
|
<created>1578313443241</created>
|
||||||
@ -102,13 +130,21 @@
|
|||||||
<option name="project" value="LOCAL" />
|
<option name="project" value="LOCAL" />
|
||||||
<updated>1578313443242</updated>
|
<updated>1578313443242</updated>
|
||||||
</task>
|
</task>
|
||||||
<option name="localTasksCounter" value="2" />
|
<task id="LOCAL-00002" summary="1">
|
||||||
|
<created>1578364236996</created>
|
||||||
|
<option name="number" value="00002" />
|
||||||
|
<option name="presentableId" value="LOCAL-00002" />
|
||||||
|
<option name="project" value="LOCAL" />
|
||||||
|
<updated>1578364236996</updated>
|
||||||
|
</task>
|
||||||
|
<option name="localTasksCounter" value="3" />
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
<component name="TypeScriptGeneratedFilesManager">
|
<component name="TypeScriptGeneratedFilesManager">
|
||||||
<option name="version" value="1" />
|
<option name="version" value="1" />
|
||||||
</component>
|
</component>
|
||||||
<component name="VcsManagerConfiguration">
|
<component name="VcsManagerConfiguration">
|
||||||
|
<option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
|
||||||
<MESSAGE value="1" />
|
<MESSAGE value="1" />
|
||||||
<option name="LAST_COMMIT_MESSAGE" value="1" />
|
<option name="LAST_COMMIT_MESSAGE" value="1" />
|
||||||
</component>
|
</component>
|
||||||
@ -121,10 +157,10 @@
|
|||||||
<screen x="0" y="28" width="1920" height="1052" />
|
<screen x="0" y="28" width="1920" height="1052" />
|
||||||
</state>
|
</state>
|
||||||
<state x="418" y="212" key="#com.intellij.execution.impl.EditConfigurationsDialog/0.28.1920.1052@0.28.1920.1052" timestamp="1578235072139" />
|
<state x="418" y="212" key="#com.intellij.execution.impl.EditConfigurationsDialog/0.28.1920.1052@0.28.1920.1052" timestamp="1578235072139" />
|
||||||
<state x="515" y="145" width="879" height="818" key="CommitChangelistDialog2" timestamp="1578313442792">
|
<state x="515" y="145" width="879" height="818" key="CommitChangelistDialog2" timestamp="1578364236672">
|
||||||
<screen x="0" y="28" width="1920" height="1052" />
|
<screen x="0" y="28" width="1920" height="1052" />
|
||||||
</state>
|
</state>
|
||||||
<state x="515" y="145" width="879" height="818" key="CommitChangelistDialog2/0.28.1920.1052@0.28.1920.1052" timestamp="1578313442792" />
|
<state x="515" y="145" width="879" height="818" key="CommitChangelistDialog2/0.28.1920.1052@0.28.1920.1052" timestamp="1578364236672" />
|
||||||
<state x="554" y="321" width="810" height="703" key="EditFileWatcherDialog" timestamp="1578246021501">
|
<state x="554" y="321" width="810" height="703" key="EditFileWatcherDialog" timestamp="1578246021501">
|
||||||
<screen x="0" y="28" width="1920" height="1052" />
|
<screen x="0" y="28" width="1920" height="1052" />
|
||||||
</state>
|
</state>
|
||||||
@ -133,40 +169,40 @@
|
|||||||
<screen x="0" y="28" width="1920" height="1052" />
|
<screen x="0" y="28" width="1920" height="1052" />
|
||||||
</state>
|
</state>
|
||||||
<state x="748" y="311" key="FileChooserDialogImpl/0.28.1920.1052@0.28.1920.1052" timestamp="1578235103537" />
|
<state x="748" y="311" key="FileChooserDialogImpl/0.28.1920.1052@0.28.1920.1052" timestamp="1578235103537" />
|
||||||
<state width="1870" height="117" key="GridCell.Tab.0.bottom" timestamp="1578364199120">
|
<state width="1870" height="117" key="GridCell.Tab.0.bottom" timestamp="1580176048036">
|
||||||
<screen x="0" y="28" width="1920" height="1052" />
|
<screen x="0" y="28" width="1920" height="1052" />
|
||||||
</state>
|
</state>
|
||||||
<state width="1870" height="117" key="GridCell.Tab.0.bottom/0.28.1920.1052@0.28.1920.1052" timestamp="1578364199120" />
|
<state width="1870" height="117" key="GridCell.Tab.0.bottom/0.28.1920.1052@0.28.1920.1052" timestamp="1580176048036" />
|
||||||
<state width="1870" height="117" key="GridCell.Tab.0.center" timestamp="1578364199120">
|
<state width="1870" height="117" key="GridCell.Tab.0.center" timestamp="1580176048036">
|
||||||
<screen x="0" y="28" width="1920" height="1052" />
|
<screen x="0" y="28" width="1920" height="1052" />
|
||||||
</state>
|
</state>
|
||||||
<state width="1870" height="117" key="GridCell.Tab.0.center/0.28.1920.1052@0.28.1920.1052" timestamp="1578364199120" />
|
<state width="1870" height="117" key="GridCell.Tab.0.center/0.28.1920.1052@0.28.1920.1052" timestamp="1580176048036" />
|
||||||
<state width="1870" height="117" key="GridCell.Tab.0.left" timestamp="1578364199120">
|
<state width="1870" height="117" key="GridCell.Tab.0.left" timestamp="1580176048036">
|
||||||
<screen x="0" y="28" width="1920" height="1052" />
|
<screen x="0" y="28" width="1920" height="1052" />
|
||||||
</state>
|
</state>
|
||||||
<state width="1870" height="117" key="GridCell.Tab.0.left/0.28.1920.1052@0.28.1920.1052" timestamp="1578364199120" />
|
<state width="1870" height="117" key="GridCell.Tab.0.left/0.28.1920.1052@0.28.1920.1052" timestamp="1580176048036" />
|
||||||
<state width="1870" height="117" key="GridCell.Tab.0.right" timestamp="1578364199120">
|
<state width="1870" height="117" key="GridCell.Tab.0.right" timestamp="1580176048036">
|
||||||
<screen x="0" y="28" width="1920" height="1052" />
|
<screen x="0" y="28" width="1920" height="1052" />
|
||||||
</state>
|
</state>
|
||||||
<state width="1870" height="117" key="GridCell.Tab.0.right/0.28.1920.1052@0.28.1920.1052" timestamp="1578364199120" />
|
<state width="1870" height="117" key="GridCell.Tab.0.right/0.28.1920.1052@0.28.1920.1052" timestamp="1580176048036" />
|
||||||
<state x="446" y="188" key="SettingsEditor" timestamp="1578245994652">
|
<state x="446" y="188" key="SettingsEditor" timestamp="1578245994652">
|
||||||
<screen x="0" y="28" width="1920" height="1052" />
|
<screen x="0" y="28" width="1920" height="1052" />
|
||||||
</state>
|
</state>
|
||||||
<state x="446" y="188" key="SettingsEditor/0.28.1920.1052@0.28.1920.1052" timestamp="1578245994652" />
|
<state x="446" y="188" key="SettingsEditor/0.28.1920.1052@0.28.1920.1052" timestamp="1578245994652" />
|
||||||
<state x="560" y="289" key="Vcs.Push.Dialog.v2" timestamp="1578313444881">
|
<state x="560" y="289" key="Vcs.Push.Dialog.v2" timestamp="1578364242204">
|
||||||
<screen x="0" y="28" width="1920" height="1052" />
|
<screen x="0" y="28" width="1920" height="1052" />
|
||||||
</state>
|
</state>
|
||||||
<state x="560" y="289" key="Vcs.Push.Dialog.v2/0.28.1920.1052@0.28.1920.1052" timestamp="1578313444881" />
|
<state x="560" y="289" key="Vcs.Push.Dialog.v2/0.28.1920.1052@0.28.1920.1052" timestamp="1578364242204" />
|
||||||
<state x="525" y="224" width="869" height="660" key="find.popup" timestamp="1578272445893">
|
<state x="525" y="224" width="869" height="660" key="find.popup" timestamp="1580178406392">
|
||||||
<screen x="0" y="28" width="1920" height="1052" />
|
<screen x="0" y="28" width="1920" height="1052" />
|
||||||
</state>
|
</state>
|
||||||
<state x="525" y="224" width="869" height="660" key="find.popup/0.28.1920.1052@0.28.1920.1052" timestamp="1578272445893" />
|
<state x="525" y="224" width="869" height="660" key="find.popup/0.28.1920.1052@0.28.1920.1052" timestamp="1580178406392" />
|
||||||
<state x="623" y="260" width="672" height="678" key="search.everywhere.popup" timestamp="1578362044385">
|
<state x="623" y="260" width="672" height="678" key="search.everywhere.popup" timestamp="1580213161556">
|
||||||
<screen x="0" y="28" width="1920" height="1052" />
|
<screen x="0" y="28" width="1920" height="1052" />
|
||||||
</state>
|
</state>
|
||||||
<state x="623" y="260" width="672" height="678" key="search.everywhere.popup/0.28.1920.1052@0.28.1920.1052" timestamp="1578362044385" />
|
<state x="623" y="260" width="672" height="678" key="search.everywhere.popup/0.28.1920.1052@0.28.1920.1052" timestamp="1580213161556" />
|
||||||
</component>
|
</component>
|
||||||
<component name="com.intellij.coverage.CoverageDataManagerImpl">
|
<component name="com.intellij.coverage.CoverageDataManagerImpl">
|
||||||
<SUITE FILE_PATH="coverage/DashMachine$DashMachine.coverage" NAME="DashMachine Coverage Results" MODIFIED="1578359407820" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
<SUITE FILE_PATH="coverage/DashMachine$DashMachine.coverage" NAME="DashMachine Coverage Results" MODIFIED="1580169229147" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
@ -18,7 +18,7 @@ avatars = Avatars(app)
|
|||||||
|
|
||||||
app.config["AVATARS_IDENTICON_BG"] = (255, 255, 255)
|
app.config["AVATARS_IDENTICON_BG"] = (255, 255, 255)
|
||||||
app.config["SECRET_KEY"] = "66532a62c4048f976e22a39638b6f10e"
|
app.config["SECRET_KEY"] = "66532a62c4048f976e22a39638b6f10e"
|
||||||
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///site.db"
|
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///user_data/site.db"
|
||||||
app.config["SEND_FILE_MAX_AGE_DEFAULT"] = 0
|
app.config["SEND_FILE_MAX_AGE_DEFAULT"] = 0
|
||||||
|
|
||||||
# scheduler config
|
# scheduler config
|
||||||
|
@ -15,7 +15,7 @@ def row2dict(row):
|
|||||||
def read_config():
|
def read_config():
|
||||||
config = ConfigParser()
|
config = ConfigParser()
|
||||||
try:
|
try:
|
||||||
config.read("config.ini")
|
config.read("dashmachine/user_data/config.ini")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return {"msg": f"Invalid Config: {e}."}
|
return {"msg": f"Invalid Config: {e}."}
|
||||||
|
|
||||||
@ -35,20 +35,40 @@ def read_config():
|
|||||||
|
|
||||||
for section in config.sections():
|
for section in config.sections():
|
||||||
if section != "Settings":
|
if section != "Settings":
|
||||||
try:
|
app = Apps()
|
||||||
app = Apps(
|
app.name = section
|
||||||
name=section,
|
if "prefix" in config[section]:
|
||||||
prefix=config[section]["prefix"],
|
app.prefix = config[section]["prefix"]
|
||||||
url=config[section]["url"],
|
else:
|
||||||
icon=config[section]["icon"],
|
return {"msg": f"Invalid Config: {section} does not contain prefix."}
|
||||||
sidebar_icon=config[section]["sidebar_icon"],
|
|
||||||
description=config[section]["description"],
|
if "url" in config[section]:
|
||||||
open_in=config[section]["open_in"],
|
app.url = config[section]["url"]
|
||||||
)
|
else:
|
||||||
db.session.add(app)
|
return {"msg": f"Invalid Config: {section} does not contain url."}
|
||||||
db.session.commit()
|
|
||||||
except KeyError as e:
|
if "icon" in config[section]:
|
||||||
return {"msg": f"Invalid Config: {section} does not contain {e}."}
|
app.icon = config[section]["icon"]
|
||||||
|
else:
|
||||||
|
app.icon = None
|
||||||
|
|
||||||
|
if "sidebar_icon" in config[section]:
|
||||||
|
app.sidebar_icon = config[section]["sidebar_icon"]
|
||||||
|
else:
|
||||||
|
app.sidebar_icon = app.icon
|
||||||
|
|
||||||
|
if "description" in config[section]:
|
||||||
|
app.description = config[section]["description"]
|
||||||
|
else:
|
||||||
|
app.description = None
|
||||||
|
|
||||||
|
if "open_in" in config[section]:
|
||||||
|
app.open_in = config[section]["open_in"]
|
||||||
|
else:
|
||||||
|
app.open_in = "this_tab"
|
||||||
|
|
||||||
|
db.session.add(app)
|
||||||
|
db.session.commit()
|
||||||
return {"msg": "success", "settings": row2dict(settings)}
|
return {"msg": "success", "settings": row2dict(settings)}
|
||||||
|
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ settings_system = Blueprint("settings_system", __name__)
|
|||||||
@settings_system.route("/settings", methods=["GET"])
|
@settings_system.route("/settings", methods=["GET"])
|
||||||
def settings():
|
def settings():
|
||||||
config_form = ConfigForm()
|
config_form = ConfigForm()
|
||||||
with open("config.ini", "r") as config_file:
|
with open("dashmachine/user_data/config.ini", "r") as config_file:
|
||||||
config_form.config.data = config_file.read()
|
config_form.config.data = config_file.read()
|
||||||
files_html = load_files_html()
|
files_html = load_files_html()
|
||||||
return render_template(
|
return render_template(
|
||||||
@ -22,7 +22,7 @@ def settings():
|
|||||||
|
|
||||||
@settings_system.route("/settings/save_config", methods=["POST"])
|
@settings_system.route("/settings/save_config", methods=["POST"])
|
||||||
def save_config():
|
def save_config():
|
||||||
with open("config.ini", "w") as config_file:
|
with open("dashmachine/user_data/config.ini", "w") as config_file:
|
||||||
config_file.write(request.form.get("config"))
|
config_file.write(request.form.get("config"))
|
||||||
msg = read_config()
|
msg = read_config()
|
||||||
return jsonify(data=msg)
|
return jsonify(data=msg)
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
import os
|
import os
|
||||||
|
import random
|
||||||
from jsmin import jsmin
|
from jsmin import jsmin
|
||||||
from dashmachine import app
|
from dashmachine import app
|
||||||
from dashmachine.main.models import Apps
|
from dashmachine.main.models import Apps
|
||||||
from dashmachine.settings_system.models import Settings
|
from dashmachine.settings_system.models import Settings
|
||||||
from dashmachine.paths import static_folder
|
from dashmachine.paths import static_folder, backgrounds_images_folder
|
||||||
from dashmachine.cssmin import cssmin
|
from dashmachine.cssmin import cssmin
|
||||||
|
|
||||||
"""This file establishes bundles of js and css sources, minifies them using jsmin and
|
"""This file establishes bundles of js and css sources, minifies them using jsmin and
|
||||||
@ -73,6 +74,11 @@ def process_css_sources(process_bundle=None, src=None, app_global=False):
|
|||||||
def context_processor():
|
def context_processor():
|
||||||
apps = Apps.query.all()
|
apps = Apps.query.all()
|
||||||
settings = Settings.query.first()
|
settings = Settings.query.first()
|
||||||
|
if settings.background == "random":
|
||||||
|
settings.background = (
|
||||||
|
f"static/images/backgrounds/"
|
||||||
|
f"{random.choice(os.listdir(backgrounds_images_folder))}"
|
||||||
|
)
|
||||||
return dict(
|
return dict(
|
||||||
test_key="test",
|
test_key="test",
|
||||||
process_js_sources=process_js_sources,
|
process_js_sources=process_js_sources,
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
:root {
|
:root {
|
||||||
--theme-background: #EBEEF0;
|
--theme-background: #EBEEF0;
|
||||||
--theme-surface: #fff;
|
--theme-surface: #fff;
|
||||||
|
--theme-surface-rgb: 255, 255, 255;
|
||||||
--theme-surface-1: #fcfcfc;
|
--theme-surface-1: #fcfcfc;
|
||||||
--theme-surface-2: #e0e0e0;
|
--theme-surface-2: #e0e0e0;
|
||||||
--theme-primary: #FF9966;
|
--theme-primary: #FF9966;
|
||||||
@ -15,6 +16,7 @@
|
|||||||
[data-theme="dark"] {
|
[data-theme="dark"] {
|
||||||
--theme-background: #1c1c1c;
|
--theme-background: #1c1c1c;
|
||||||
--theme-surface: #2f2f2f;
|
--theme-surface: #2f2f2f;
|
||||||
|
--theme-surface-rgb: 47, 47, 47;
|
||||||
--theme-surface-1: #434343;
|
--theme-surface-1: #434343;
|
||||||
--theme-surface-2: #575757;
|
--theme-surface-2: #575757;
|
||||||
--theme-color-font: #fff;
|
--theme-color-font: #fff;
|
||||||
@ -77,3 +79,9 @@
|
|||||||
.theme-muted2-text {
|
.theme-muted2-text {
|
||||||
color: var(--theme-color-font-muted2) !important;
|
color: var(--theme-color-font-muted2) !important;
|
||||||
}
|
}
|
||||||
|
.theme-surface-transparent {
|
||||||
|
background: rgba(var(--theme-surface-rgb), 0.8) !important;
|
||||||
|
}
|
||||||
|
.theme-surface-transparent1 {
|
||||||
|
background: rgba(var(--theme-surface-rgb), 0.9) !important;
|
||||||
|
}
|
@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
/* ELEMENT STLYES */
|
/* ELEMENT STLYES */
|
||||||
body {
|
body {
|
||||||
overflow: hidden !important;
|
overflow: scroll;
|
||||||
overflow-x: hidden !important;
|
overflow-x: hidden !important;
|
||||||
min-height: 100%;
|
min-height: 100%;
|
||||||
color: var(--theme-color-font);
|
color: var(--theme-color-font);
|
||||||
@ -614,6 +614,7 @@ input:disabled {
|
|||||||
|
|
||||||
.sidenav {
|
.sidenav {
|
||||||
background-color: var(--theme-surface);
|
background-color: var(--theme-surface);
|
||||||
|
top: unset;
|
||||||
}
|
}
|
||||||
|
|
||||||
.border-bottom-1 {
|
.border-bottom-1 {
|
||||||
|
@ -27,9 +27,6 @@ body
|
|||||||
|
|
||||||
#main
|
#main
|
||||||
{
|
{
|
||||||
min-height: -webkit-calc(100% - 116px);
|
|
||||||
min-height: -moz-calc(100% - 116px);
|
|
||||||
min-height: calc(100% - 116px);
|
|
||||||
padding-left: 0;
|
padding-left: 0;
|
||||||
|
|
||||||
-webkit-transition: .3s ease all;
|
-webkit-transition: .3s ease all;
|
||||||
|
BIN
dashmachine/static/images/apps/bitwarden.png
Normal file
After Width: | Height: | Size: 8.2 KiB |
BIN
dashmachine/static/images/apps/jackett.png
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
dashmachine/static/images/apps/radarr.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
dashmachine/static/images/apps/sonarr.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
dashmachine/static/images/backgrounds/Boy4aow.png
Normal file
After Width: | Height: | Size: 251 KiB |
BIN
dashmachine/static/images/backgrounds/Hk1KgQS.png
Normal file
After Width: | Height: | Size: 373 KiB |
BIN
dashmachine/static/images/backgrounds/ZtkPKMg.jpg
Normal file
After Width: | Height: | Size: 566 KiB |
BIN
dashmachine/static/images/backgrounds/aodvrziifxcjmgvqhbsg.png
Normal file
After Width: | Height: | Size: 892 KiB |
BIN
dashmachine/static/images/backgrounds/avbtqymfykwfcjylgqql.jpg
Normal file
After Width: | Height: | Size: 115 KiB |
BIN
dashmachine/static/images/backgrounds/fns7rzzwluh11.png
Normal file
After Width: | Height: | Size: 151 KiB |
BIN
dashmachine/static/images/backgrounds/glWla8v.png
Normal file
After Width: | Height: | Size: 291 KiB |
BIN
dashmachine/static/images/backgrounds/mKkaVVc.gif
Normal file
After Width: | Height: | Size: 638 KiB |
After Width: | Height: | Size: 99 KiB |
BIN
dashmachine/static/images/backgrounds/xdWDtvx.png
Normal file
After Width: | Height: | Size: 332 KiB |
BIN
dashmachine/static/images/backgrounds/xsxgvgayvfvekklkvwvf.png
Normal file
After Width: | Height: | Size: 29 KiB |
@ -336,6 +336,20 @@ function initTinyMCE(el){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function hide_sidenav() {
|
||||||
|
$("#main-sidenav").addClass('hide');
|
||||||
|
$("#main.main-full").css('padding-left', 0);
|
||||||
|
$("#show-sidenav").removeClass('hide');
|
||||||
|
localStorage.setItem('sidenav_hidden', 'true');
|
||||||
|
}
|
||||||
|
|
||||||
|
function show_sidenav(){
|
||||||
|
$("#main-sidenav").removeClass('hide');
|
||||||
|
$("#main.main-full").css('padding-left', 64);
|
||||||
|
$("#show-sidenav").addClass('hide');
|
||||||
|
localStorage.setItem('sidenav_hidden', null);
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------
|
||||||
// Document ready function
|
// Document ready function
|
||||||
//--------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------
|
||||||
@ -350,16 +364,16 @@ $(document).ready(function () {
|
|||||||
init_copy_btn();
|
init_copy_btn();
|
||||||
init_select();
|
init_select();
|
||||||
|
|
||||||
|
if (localStorage.getItem('sidenav_hidden') === 'true'){
|
||||||
|
hide_sidenav();
|
||||||
|
}
|
||||||
|
|
||||||
$("#hide-sidenav").on('click', function(e) {
|
$("#hide-sidenav").on('click', function(e) {
|
||||||
$("#main-sidenav").addClass('hide');
|
hide_sidenav();
|
||||||
$("#main.main-full").css('padding-left', 0);
|
|
||||||
$("#show-sidenav").removeClass('hide');
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#show-sidenav .material-icons-outlined").on('click', function(e) {
|
$("#show-sidenav .material-icons-outlined").on('click', function(e) {
|
||||||
$("#main-sidenav").removeClass('hide');
|
show_sidenav();
|
||||||
$("#main.main-full").css('padding-left', 64);
|
|
||||||
$("#show-sidenav").addClass('hide');
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$( "#show-sidenav" ).draggable({ axis: "y" });
|
$( "#show-sidenav" ).draggable({ axis: "y" });
|
||||||
|
@ -8,7 +8,8 @@
|
|||||||
#main {
|
#main {
|
||||||
background-image: url("{{ settings.background }}");
|
background-image: url("{{ settings.background }}");
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
height: 100vh;
|
background-attachment: fixed;
|
||||||
|
min-height: 100vh;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@ -21,7 +22,7 @@
|
|||||||
<div class="col s12 l4 input-field">
|
<div class="col s12 l4 input-field">
|
||||||
<span>
|
<span>
|
||||||
<i class="material-icons prefix card-search-icon">search</i>
|
<i class="material-icons prefix card-search-icon">search</i>
|
||||||
<input type="text" id="apps-filter" class="card-filter theme-surface" placeholder="Search apps">
|
<input type="text" id="apps-filter" class="card-filter theme-surface-transparent" placeholder="Search apps">
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -29,11 +30,13 @@
|
|||||||
{% for app in apps %}
|
{% for app in apps %}
|
||||||
{% if app.open_in == 'iframe' %}
|
{% if app.open_in == 'iframe' %}
|
||||||
<a href="{{ url_for('main.app_view', url=app.url) }}" class="app-a" data-name="{{ app.name }}" data-description="{{ app.description }}">
|
<a href="{{ url_for('main.app_view', url=app.url) }}" class="app-a" data-name="{{ app.name }}" data-description="{{ app.description }}">
|
||||||
|
{% elif app.open_in == 'this_tab' %}
|
||||||
|
<a href="{{ app.prefix }}{{ app.url }}" class="app-a" data-name="{{ app.name }}" data-description="{{ app.description }}">
|
||||||
{% elif app.open_in == "new_tab" %}
|
{% elif app.open_in == "new_tab" %}
|
||||||
<a href="{{ app.prefix }}{{ app.url }}" target="_blank" class="app-a" data-name="{{ app.name }}" data-description="{{ app.description }}">
|
<a href="{{ app.prefix }}{{ app.url }}" target="_blank" class="app-a" data-name="{{ app.name }}" data-description="{{ app.description }}">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="col s12 m6 l3">
|
<div class="col s12 m6 l3">
|
||||||
<div class="card">
|
<div class="card theme-surface-transparent">
|
||||||
<div class="card-content center-align">
|
<div class="card-content center-align">
|
||||||
<img src="{{ app.icon }}" height="64px">
|
<img src="{{ app.icon }}" height="64px">
|
||||||
</div>
|
</div>
|
||||||
|
@ -12,27 +12,13 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- BEGIN: SideNav-->
|
<!-- BEGIN: SideNav-->
|
||||||
<aside id="main-sidenav" class="sidenav-main nav-collapsed nav-collapsible sidenav-light sidenav-active-rounded z-depth-2">
|
<aside id="main-sidenav" class="sidenav-main nav-collapsed nav-collapsible sidenav-light sidenav-active-rounded z-depth-2">
|
||||||
<div class="brand-sidebar noselect" style="overflow: hidden;">
|
<ul class="sidenav sidenav-collapsible leftside-navigation collapsible sidenav-fixed menu-shadow pt-2 theme-surface-transparent1" id="slide-out" data-menu="menu-navigation" data-collapsible="accordion">
|
||||||
<h1 class="logo-wrapper hide-on-med-and-down"><a class="brand-logo darken-1" href="{{ url_for('main.home') }}"><img id="TCM-nav-logo" src="static/images/logo/logo.svg" alt="DashMachine logo"/><span class="logo-text theme-secondary-text"> </span></a></h1>
|
|
||||||
</div>
|
|
||||||
<ul class="sidenav sidenav-collapsible leftside-navigation collapsible sidenav-fixed menu-shadow" id="slide-out" data-menu="menu-navigation" data-collapsible="accordion">
|
|
||||||
<li class="bold"><a id="dashboard-sidenav" class="waves-effect waves-cyan" href="{{ url_for('main.home') }}">
|
<li class="bold"><a id="dashboard-sidenav" class="waves-effect waves-cyan" href="{{ url_for('main.home') }}">
|
||||||
<i class="material-icons-outlined">dashboard</i>
|
<i class="material-icons-outlined">dashboard</i>
|
||||||
<span class="menu-title" data-i18n="">Dashboard</span>
|
<span class="menu-title" data-i18n="">Dashboard</span>
|
||||||
</a></li>
|
</a></li>
|
||||||
|
|
||||||
{% for app in apps %}
|
|
||||||
<li class="bold">
|
|
||||||
{% if app.open_in == 'iframe' %}
|
|
||||||
<a id="dashboard-sidenav" class="waves-effect waves-cyan" href="{{ url_for('main.app_view', url=app.url) }}">
|
|
||||||
{% elif app.open_in == "new_tab" %}
|
|
||||||
<a id="dashboard-sidenav" class="waves-effect waves-cyan" href="{{ app.prefix }}{{ app.url }}" target="_blank">
|
|
||||||
{% endif %}
|
|
||||||
<img src="{{ app.sidebar_icon }}" style="position: relative; top: 5px; left: 2px; margin-right: 18px; height: 24px">
|
|
||||||
<span class="menu-title" data-i18n="">{{ app.name }}</span>
|
|
||||||
</a></li>
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
<li class="bold"><a id="settings-sidenav" class="waves-effect waves-cyan" href="{{ url_for('settings_system.settings') }}">
|
<li class="bold"><a id="settings-sidenav" class="waves-effect waves-cyan" href="{{ url_for('settings_system.settings') }}">
|
||||||
<i class="material-icons-outlined">settings</i>
|
<i class="material-icons-outlined">settings</i>
|
||||||
<span class="menu-title" data-i18n="">Settings</span>
|
<span class="menu-title" data-i18n="">Settings</span>
|
||||||
@ -48,6 +34,20 @@
|
|||||||
<span class="menu-title" data-i18n="">Hide Sidenav</span>
|
<span class="menu-title" data-i18n="">Hide Sidenav</span>
|
||||||
</a></li>
|
</a></li>
|
||||||
|
|
||||||
|
{% for app in apps %}
|
||||||
|
<li class="bold">
|
||||||
|
{% if app.open_in == 'iframe' %}
|
||||||
|
<a id="dashboard-sidenav" class="waves-effect waves-cyan" href="{{ url_for('main.app_view', url=app.url) }}">
|
||||||
|
{% elif app.open_in == "this_tab" %}
|
||||||
|
<a id="dashboard-sidenav" class="waves-effect waves-cyan" href="{{ app.prefix }}{{ app.url }}">
|
||||||
|
{% elif app.open_in == "new_tab" %}
|
||||||
|
<a id="dashboard-sidenav" class="waves-effect waves-cyan" href="{{ app.prefix }}{{ app.url }}" target="_blank">
|
||||||
|
{% endif %}
|
||||||
|
<img src="{{ app.sidebar_icon }}" style="position: relative; top: 5px; left: 2px; margin-right: 18px; height: 24px">
|
||||||
|
<span class="menu-title" data-i18n="">{{ app.name }}</span>
|
||||||
|
</a></li>
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
{# <div class="navigation-background"></div><a class="sidenav-trigger btn-sidenav-toggle btn-floating btn-medium waves-effect waves-light hide-on-large-only theme-primary" href="#" data-target="slide-out"><i class="material-icons-outlined">menu</i></a>#}
|
{# <div class="navigation-background"></div><a class="sidenav-trigger btn-sidenav-toggle btn-floating btn-medium waves-effect waves-light hide-on-large-only theme-primary" href="#" data-target="slide-out"><i class="material-icons-outlined">menu</i></a>#}
|
||||||
</aside>
|
</aside>
|
||||||
|
@ -5,6 +5,11 @@
|
|||||||
{% endblock page_vendor_css %}
|
{% endblock page_vendor_css %}
|
||||||
|
|
||||||
{% block page_lvl_css %}
|
{% block page_lvl_css %}
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
overflow: hidden !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
{% if settings.background %}
|
{% if settings.background %}
|
||||||
<style>
|
<style>
|
||||||
#main {
|
#main {
|
||||||
@ -28,6 +33,14 @@
|
|||||||
<h5>Config
|
<h5>Config
|
||||||
<i class="material-icons-outlined theme-secondary-text icon-btn ml-2 toggle-config-help" style="position: relative; top: 4px;">info</i>
|
<i class="material-icons-outlined theme-secondary-text icon-btn ml-2 toggle-config-help" style="position: relative; top: 4px;">info</i>
|
||||||
</h5>
|
</h5>
|
||||||
|
{{ button(
|
||||||
|
icon="save",
|
||||||
|
id="save-config-btn",
|
||||||
|
float="left",
|
||||||
|
class="ml-0 mt-1 mb-1",
|
||||||
|
data={'url': url_for('settings_system.save_config')},
|
||||||
|
text="save"
|
||||||
|
) }}
|
||||||
</div>
|
</div>
|
||||||
<div id="config-help-col" class="col s12 hide theme-surface-1 padding-2 border-radius-10">
|
<div id="config-help-col" class="col s12 hide theme-surface-1 padding-2 border-radius-10">
|
||||||
<h5>Settings Example</h5>
|
<h5>Settings Example</h5>
|
||||||
@ -38,7 +51,7 @@
|
|||||||
accent = static/images/backgrounds/background.png<br>
|
accent = static/images/backgrounds/background.png<br>
|
||||||
</code>
|
</code>
|
||||||
|
|
||||||
<table class="centered mt-4">
|
<table class="mt-4">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Variable</th>
|
<th>Variable</th>
|
||||||
@ -60,7 +73,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>background</td>
|
<td>background</td>
|
||||||
<td>Background image. can be either a local link (prefixed by /static/images/backgrounds/), or an external link</td>
|
<td>Background image. can be either a local link (prefixed by /static/images/backgrounds/) or an external link. Can also be set to random. If not set defaults to blank.</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
@ -76,7 +89,7 @@
|
|||||||
open_in = iframe<br>
|
open_in = iframe<br>
|
||||||
</code>
|
</code>
|
||||||
|
|
||||||
<table class="centered mt-4">
|
<table class="mt-4">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Variable</th>
|
<th>Variable</th>
|
||||||
@ -110,7 +123,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>open_in</td>
|
<td>open_in</td>
|
||||||
<td>open the app in an embedded iframe or a new tab, options are iframe, new_tab</td>
|
<td>open the app in the current tab, an iframe or a new tab, options are iframe, new_tab, or this_tab</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
@ -125,13 +138,6 @@
|
|||||||
id="config-textarea"
|
id="config-textarea"
|
||||||
) }}
|
) }}
|
||||||
</form>
|
</form>
|
||||||
{{ button(
|
|
||||||
icon="save",
|
|
||||||
id="save-config-btn",
|
|
||||||
float="left",
|
|
||||||
data={'url': url_for('settings_system.save_config')},
|
|
||||||
text="save"
|
|
||||||
) }}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,13 +1,12 @@
|
|||||||
[Settings]
|
[Settings]
|
||||||
theme = dark
|
theme = dark
|
||||||
accent=orange
|
accent=orange
|
||||||
background=static/images/backgrounds/background.png
|
background=random
|
||||||
|
|
||||||
[Home Assistant]
|
[Home Assistant]
|
||||||
prefix = https://
|
prefix = https://
|
||||||
url = hass.wolf-house.net
|
url = hass.wolf-house.net
|
||||||
icon =static/images/apps/home-assistant.png
|
icon =static/images/apps/home-assistant.png
|
||||||
sidebar_icon = static/images/apps/home-assistant.png
|
|
||||||
description = Home automation software.
|
description = Home automation software.
|
||||||
open_in = iframe
|
open_in = iframe
|
||||||
|
|
||||||
@ -15,7 +14,6 @@ open_in = iframe
|
|||||||
prefix = https://
|
prefix = https://
|
||||||
url = cloud.wolf-house.net
|
url = cloud.wolf-house.net
|
||||||
icon = static/images/apps/nextcloud.png
|
icon = static/images/apps/nextcloud.png
|
||||||
sidebar_icon = static/images/apps/nextcloud.png
|
|
||||||
description = File server and sync software.
|
description = File server and sync software.
|
||||||
open_in = new_tab
|
open_in = new_tab
|
||||||
|
|
||||||
@ -23,23 +21,27 @@ open_in = new_tab
|
|||||||
prefix = https://
|
prefix = https://
|
||||||
url = wolflix.wolf-house.net
|
url = wolflix.wolf-house.net
|
||||||
icon = static/images/apps/emby.png
|
icon = static/images/apps/emby.png
|
||||||
sidebar_icon = static/images/apps/emby.png
|
|
||||||
description = Movies and TV.
|
description = Movies and TV.
|
||||||
open_in = iframe
|
open_in = iframe
|
||||||
|
|
||||||
|
[Bitwarden]
|
||||||
|
prefix = https://
|
||||||
|
url = passwords.wolf-house.net
|
||||||
|
icon = static/images/apps/bitwarden.png
|
||||||
|
description = Password server.
|
||||||
|
open_in = this_tab
|
||||||
|
|
||||||
[Gitea]
|
[Gitea]
|
||||||
prefix = https://
|
prefix = https://
|
||||||
url = git.wolf-house.net
|
url = git.wolf-house.net
|
||||||
icon = static/images/apps/gitea.png
|
icon = static/images/apps/gitea.png
|
||||||
sidebar_icon = static/images/apps/gitea.png
|
|
||||||
description = Self hosted git repo.
|
description = Self hosted git repo.
|
||||||
open_in = new_tab
|
open_in = this_tab
|
||||||
|
|
||||||
[Black Pearl]
|
[Black Pearl]
|
||||||
prefix = https://
|
prefix = https://
|
||||||
url = blackpearl.wolf-house.net
|
url = blackpearl.wolf-house.net
|
||||||
icon = static/images/apps/deluge.png
|
icon = static/images/apps/deluge.png
|
||||||
sidebar_icon = static/images/apps/deluge.png
|
|
||||||
description = Containerized torrent server with vpn.
|
description = Containerized torrent server with vpn.
|
||||||
open_in = iframe
|
open_in = iframe
|
||||||
|
|
||||||
@ -47,7 +49,6 @@ open_in = iframe
|
|||||||
prefix = https://
|
prefix = https://
|
||||||
url = ssh.wolf-house.net
|
url = ssh.wolf-house.net
|
||||||
icon = static/images/apps/terminal.png
|
icon = static/images/apps/terminal.png
|
||||||
sidebar_icon = static/images/apps/terminal.png
|
|
||||||
description = Terminal access for WolfPrime.
|
description = Terminal access for WolfPrime.
|
||||||
open_in = iframe
|
open_in = iframe
|
||||||
|
|
||||||
@ -55,7 +56,6 @@ open_in = iframe
|
|||||||
prefix = https://
|
prefix = https://
|
||||||
url = port.wolf-house.net
|
url = port.wolf-house.net
|
||||||
icon = static/images/apps/portainer.png
|
icon = static/images/apps/portainer.png
|
||||||
sidebar_icon = static/images/apps/portainer.png
|
|
||||||
description = Manage docker containers.
|
description = Manage docker containers.
|
||||||
open_in = iframe
|
open_in = iframe
|
||||||
|
|
||||||
@ -63,6 +63,26 @@ open_in = iframe
|
|||||||
prefix = https://
|
prefix = https://
|
||||||
url = proxies.wolf-house.net
|
url = proxies.wolf-house.net
|
||||||
icon = static/images/apps/nginxproxymanager.png
|
icon = static/images/apps/nginxproxymanager.png
|
||||||
sidebar_icon = static/images/apps/nginxproxymanager.png
|
|
||||||
description = Manage the nginx reverse proxy.
|
description = Manage the nginx reverse proxy.
|
||||||
open_in = new_tab
|
open_in = new_tab
|
||||||
|
|
||||||
|
[Sonarr]
|
||||||
|
prefix = https://
|
||||||
|
url = sonarr.wolf-house.net
|
||||||
|
icon = static/images/apps/sonarr.png
|
||||||
|
description = TV Shows.
|
||||||
|
open_in = iframe
|
||||||
|
|
||||||
|
[Radarr]
|
||||||
|
prefix = https://
|
||||||
|
url = radarr.wolf-house.net
|
||||||
|
icon = static/images/apps/radarr.png
|
||||||
|
description = Movies.
|
||||||
|
open_in = iframe
|
||||||
|
|
||||||
|
[Jackett]
|
||||||
|
prefix = http://
|
||||||
|
url = 192.168.39.175:9117
|
||||||
|
icon = static/images/apps/jackett.png
|
||||||
|
description = Torrent indexer.
|
||||||
|
open_in = this_tab
|