Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,16 @@ option(OPENLOCK_BUILD_TESTS "Build unit tests" ON)
option(OPENLOCK_ENABLE_WAYLAND "Enable Wayland/Cage kiosk support" ON)
option(OPENLOCK_ENABLE_VM_DETECTION "Enable VM detection (can be disabled for dev)" ON)

# Standard install paths
include(GNUInstallDirs)

# i18n support
find_package(Gettext REQUIRED)
set(GETTEXT_PACKAGE "${PROJECT_NAME}")

# configure locale path
configure_file(src/localepath.h.in ${CMAKE_BINARY_DIR}/src/localepath.h)

# Find Qt6
find_package(Qt6 REQUIRED COMPONENTS
Core
Expand Down Expand Up @@ -85,6 +95,7 @@ add_library(openlock_core STATIC

target_include_directories(openlock_core PUBLIC
${CMAKE_SOURCE_DIR}/src
${CMAKE_BINARY_DIR}/src
)

target_link_libraries(openlock_core PUBLIC
Expand Down Expand Up @@ -133,6 +144,9 @@ file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/share/openlock)
configure_file(config/blocklist.json ${CMAKE_BINARY_DIR}/share/openlock/blocklist.json COPYONLY)
configure_file(config/default.openlock ${CMAKE_BINARY_DIR}/share/openlock/default.openlock COPYONLY)

# Desktop file
set(DESKTOP_FILE ${PROJECT_NAME}.desktop)

# Install
install(TARGETS openlock RUNTIME DESTINATION bin)
install(FILES config/default.openlock DESTINATION share/openlock)
Expand Down Expand Up @@ -168,3 +182,6 @@ set(CPACK_PACKAGE_LICENSE "MPL-2.0")
set(CPACK_GENERATOR "DEB;RPM")
set(CPACK_DEBIAN_PACKAGE_DEPENDS "qt6-webengine (>= 6.2)")
include(CPack)

add_subdirectory(data)
add_subdirectory(po)
13 changes: 13 additions & 0 deletions data/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Configure and translate .desktop file
configure_file(${DESKTOP_FILE}.in.in ${CMAKE_CURRENT_BINARY_DIR}/${DESKTOP_FILE}.in)
add_custom_target(${DESKTOP_FILE} ALL
COMMENT "Merging translations into ${DESKTOP_FILE}"
COMMAND ${GETTEXT_MSGFMT_EXECUTABLE}
--desktop --template=${CMAKE_CURRENT_BINARY_DIR}/${DESKTOP_FILE}.in
-o ${DESKTOP_FILE}
-d ${CMAKE_SOURCE_DIR}/po
)

install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${DESKTOP_FILE}
DESTINATION ${CMAKE_INSTALL_FULL_DATADIR}/applications
)
13 changes: 13 additions & 0 deletions data/OpenLock.desktop.in.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
[Desktop Entry]
Version=1.0
Name=OpenLock Browser
GenericName=OpenLock Web Browser
Comment=Secure kiosk-mode web browser for exams
Keywords=Internet;WWW;Browser;Web;Explorer;Kiosk;SEB;Exam;
Type=Application
Icon=web-browser
#Icon=@CMAKE_INSTALL_FULL_DATADIR@/openlock/openlock.svg
Exec=openlock %u
Terminal=false
Categories=Network;WebBrowser;
MimeType=text/html;text/xml;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;
47 changes: 47 additions & 0 deletions po/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
find_program(GETTEXT_XGETTEXT_EXECUTABLE xgettext)

set(DOMAIN ${PROJECT_NAME})
set(POT_FILE ${DOMAIN}.pot)

file(STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/LINGUAS LINGUAS
REGEX "^[^#].*")
string(REGEX MATCHALL "[^ \t]+" LANGS "${LINGUAS}")

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/POTFILES.in
${CMAKE_CURRENT_BINARY_DIR}/POTFILES COPYONLY
)

# Creates the .pot file containing the translations template
add_custom_target(${POT_FILE} ALL
COMMENT "Generating translation template"
# Extract the translatable messages from the desktop file
COMMAND ${GETTEXT_XGETTEXT_EXECUTABLE} -o ${POT_FILE}
--from-code=UTF-8
--language=Desktop
--package-name='${GETTEXT_PACKAGE}'
-D ${CMAKE_BINARY_DIR}/data
${DESKTOP_FILE}.in
COMMAND ${GETTEXT_XGETTEXT_EXECUTABLE} -o ${POT_FILE}
--from-code=UTF-8
--c++
--qt
--add-comments=TRANSLATORS
--keyword=tr
--keyword=tr:1,2
--keyword=N_
--keyword=_
--package-name='${PROJECT_NAME}'
-D ${CMAKE_SOURCE_DIR}
-D ${CMAKE_CURRENT_SOURCE_DIR}
-D ${CMAKE_CURRENT_BINARY_DIR}
--join-existing
--files-from=${CMAKE_CURRENT_BINARY_DIR}/POTFILES)

foreach(LANG ${LANGS})
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${LANG}.po
${CMAKE_CURRENT_BINARY_DIR}/${LANG}.po
COPYONLY)
endforeach(LANG)
gettext_process_pot_file(${POT_FILE} ALL
INSTALL_DESTINATION ${CMAKE_INSTALL_LOCALEDIR}
LANGUAGES ${LANGS})
149 changes: 149 additions & 0 deletions po/LINGUAS
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
aa
am
ar
ast
az
be
bem
bg
bn
bn_BD
br
bs
ca
ca@valencia
ckb
cs
cy
da
de
dv
el
en_AU
en_CA
en_GB
en_US
eo
es
et
eu
fa
fi
fr
fr_CA
fr_CH
frp
fur
ga
gd
gl
gu
he
hi
hr
hu
hy
ia
id
io
is
it
ja
jbo
ka
kab
km
kmr
kn
ko
lb
ln
lo
lt
lv
mg
mi
mk
ml
mr
ms
my
nan
nb
ne
nl
ny
oc
om
pa
pam
pl
ps
pt
pt_BR
ro
ru
sa
sc
sco
sd
sdh
shn
si
sk
sl
sq
sr
sv
ta
te
tet
tg
th
tk
tr
ug
uk
ur
uz
vi
zh_CN
zh_HK
zh_TW
sw
tt
bo
or
mhr
ce
kl
fil
se
st
wo
ta_LK
as
af
csb
nn
szl
ht
an
it_CARES
gv
crh
os
zh_LATN@pinyin
ku
fo
xh
cv
la
vec
kw
ti
co
ky
wae
kk
fy
50 changes: 50 additions & 0 deletions po/OpenLock.pot
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the OpenLock package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: OpenLock\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-06-25 13:00+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: OpenLock.desktop.in:3
msgid "OpenLock Browser"
msgstr ""

#: OpenLock.desktop.in:4
msgid "OpenLock Web Browser"
msgstr ""

#: OpenLock.desktop.in:5
msgid "Secure kiosk-mode web browser for exams"
msgstr ""

#: OpenLock.desktop.in:6
msgid "Internet;WWW;Browser;Web;Explorer;Kiosk;SEB;Exam;"
msgstr ""

#: src/browser/SecureBrowser.cpp:284
msgid "Back"
msgstr ""

#: src/browser/SecureBrowser.cpp:285
msgid "Forward"
msgstr ""

#: src/browser/SecureBrowser.cpp:286
msgid "Reload"
msgstr ""

#: src/browser/SecureBrowser.cpp:287
msgid "Stop"
msgstr ""
30 changes: 30 additions & 0 deletions po/POTFILES.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
src/browser/DevToolsBlocker.cpp
src/browser/DownloadBlocker.cpp
src/browser/NavigationFilter.cpp
src/browser/SecureBrowser.cpp
src/core/Config.cpp
src/core/LockdownEngine.cpp
src/guard/CGroupIsolator.cpp
src/guard/ProcessBlocklist.cpp
src/guard/ProcessGuard.cpp
src/input/ClipboardGuard.cpp
src/input/InputLockdown.cpp
src/input/PrintBlocker.cpp
src/input/ShortcutBlocker.cpp
src/integrity/DebugDetector.cpp
src/integrity/SelfVerifier.cpp
src/integrity/SystemIntegrity.cpp
src/integrity/VMDetector.cpp
src/kiosk/KioskShell.cpp
src/kiosk/PlatformKiosk.cpp
src/kiosk/WaylandKiosk.cpp
src/kiosk/X11Kiosk.cpp
src/lms/BlackboardAdapter.cpp
src/lms/CanvasAdapter.cpp
src/lms/MoodleAdapter.cpp
src/main.cpp
src/protocol/BrowserExamKey.cpp
src/protocol/ConfigKeyGenerator.cpp
src/protocol/SEBConfigParser.cpp
src/protocol/SEBProtocol.cpp
src/protocol/SEBRequestInterceptor.cpp
49 changes: 49 additions & 0 deletions po/aa.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Afar translations for PACKAGE package.
# Copyright (C) 2026 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Automatically generated, 2026.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-06-25 13:00+0200\n"
"PO-Revision-Date: 2026-06-25 12:54+0200\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: aa\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: src/browser/SecureBrowser.cpp:284
msgid "Back"
msgstr ""

#: src/browser/SecureBrowser.cpp:285
msgid "Forward"
msgstr ""

#: OpenLock.desktop.in:6
msgid "Internet;WWW;Browser;Web;Explorer;Kiosk;SEB;Exam;"
msgstr ""

#: OpenLock.desktop.in:3
msgid "OpenLock Browser"
msgstr ""

#: OpenLock.desktop.in:4
msgid "OpenLock Web Browser"
msgstr ""

#: src/browser/SecureBrowser.cpp:286
msgid "Reload"
msgstr ""

#: OpenLock.desktop.in:5
msgid "Secure kiosk-mode web browser for exams"
msgstr ""

#: src/browser/SecureBrowser.cpp:287
msgid "Stop"
msgstr ""
Loading