after migration to new svn server

master
Marc Wäckerlin 8 years ago
parent dc16466027
commit 8b040e1144
  1. 26
      ChangeLog
  2. 27
      ax_init_standard_project.m4
  3. 13
      bootstrap.sh
  4. 180
      build-in-docker.sh
  5. 15
      makefile.am
  6. 10
      resolve-debbuilddeps.sh
  7. 27
      src/qbrowserlib/browser.hxx
  8. 2
      src/qbrowserlib/browser.ui
  9. 2
      src/qbrowserlib/errorlog.hxx
  10. 52
      src/qbrowserlib/resources.qrc
  11. BIN
      src/qbrowserlib/resources/icons/128x128/SW_Surfer_128x128x32.png
  12. BIN
      src/qbrowserlib/resources/icons/16x16/butt16_01.png
  13. BIN
      src/qbrowserlib/resources/icons/16x16/butt16_02.png
  14. BIN
      src/qbrowserlib/resources/icons/16x16/butt16_03.png
  15. BIN
      src/qbrowserlib/resources/icons/16x16/butt16_04.png
  16. BIN
      src/qbrowserlib/resources/icons/16x16/butt16_05.png
  17. BIN
      src/qbrowserlib/resources/icons/16x16/butt16_06.png
  18. BIN
      src/qbrowserlib/resources/icons/16x16/butt16_07.png
  19. BIN
      src/qbrowserlib/resources/icons/16x16/butt16_08.png
  20. BIN
      src/qbrowserlib/resources/icons/16x16/butt16_09.png
  21. BIN
      src/qbrowserlib/resources/icons/16x16/butt16_09_sw.png
  22. BIN
      src/qbrowserlib/resources/icons/16x16/butt16_10.png
  23. BIN
      src/qbrowserlib/resources/icons/16x16/butt16_10_sw.png
  24. BIN
      src/qbrowserlib/resources/icons/16x16/butt16_11.png
  25. BIN
      src/qbrowserlib/resources/icons/16x16/butt16_49.png
  26. BIN
      src/qbrowserlib/resources/icons/16x16/favicon.ico
  27. BIN
      src/qbrowserlib/resources/icons/16x16/surfer.png
  28. BIN
      src/qbrowserlib/resources/icons/256x256/SW_Surfer_256x256x32.png
  29. BIN
      src/qbrowserlib/resources/icons/32x32/butt32_01.png
  30. BIN
      src/qbrowserlib/resources/icons/32x32/butt32_02.png
  31. BIN
      src/qbrowserlib/resources/icons/32x32/butt32_03.png
  32. BIN
      src/qbrowserlib/resources/icons/32x32/butt32_04.png
  33. BIN
      src/qbrowserlib/resources/icons/32x32/butt32_05.png
  34. BIN
      src/qbrowserlib/resources/icons/32x32/butt32_06.png
  35. BIN
      src/qbrowserlib/resources/icons/32x32/butt32_07.png
  36. BIN
      src/qbrowserlib/resources/icons/32x32/butt32_08.png
  37. BIN
      src/qbrowserlib/resources/icons/32x32/butt32_09.png
  38. BIN
      src/qbrowserlib/resources/icons/32x32/butt32_09_sw.png
  39. BIN
      src/qbrowserlib/resources/icons/32x32/butt32_10.png
  40. BIN
      src/qbrowserlib/resources/icons/32x32/butt32_10_sw.png
  41. BIN
      src/qbrowserlib/resources/icons/32x32/butt32_11.png
  42. BIN
      src/qbrowserlib/resources/icons/32x32/butt32_49.png
  43. BIN
      src/qbrowserlib/resources/icons/32x32/favicon.ico
  44. BIN
      src/qbrowserlib/resources/icons/32x32/surfer.png
  45. BIN
      src/qbrowserlib/resources/icons/48x48/SW_Surfer_48x48x32.png
  46. BIN
      src/qbrowserlib/resources/icons/512x512/SW_Surfer_512x512x32.png
  47. 58
      src/qbrowserlib/resources/icons/PICOL_icon_Zoom_in.svg
  48. 58
      src/qbrowserlib/resources/icons/PICOL_icon_Zoom_out.svg
  49. BIN
      src/qbrowserlib/resources/surfer.png
  50. 27
      src/qbrowserlib/settings.hxx
  51. 106
      src/qbrowserlib/settings.ui
  52. 46
      src/qbrowserlib/smartcardauth.hxx
  53. BIN
      surfer-icon.png
  54. BIN
      surfer-logo.png

@ -1,3 +1,29 @@
2015-11-16 12:37 marc
* doc/doxyfile.in: SVG must not be interactive for embedding in
redmine
2015-11-12 13:38 marc
* ax_init_standard_project.m4, bootstrap.sh, configure.ac,
debian/surfer-dev.install, debian/surfer-dev.install.in,
sql-to-dot.sed, surfer.desktop.in: flexible qt plugin path
2015-11-12 10:45 marc
* ChangeLog, bootstrap.sh, debian/surfer-dev.install,
sql-to-dot.sed: add designer plugins to installation
2015-11-11 15:25 marc
* src/qbrowserlib/downloadmanager.hxx: qt designer crashed when
loading WebViewWidget plugin
2015-11-10 14:42 marc
* debian/control.in: libqt4-webkit is named libqtwebkit-dev in
precise
2015-11-09 13:26 marc
* ChangeLog, ax_init_standard_project.m4, bootstrap.sh,

@ -90,16 +90,19 @@ AC_DEFUN([AX_ADD_MAKEFILE_TARGET_DEP], [
fi
])
# Same as AC_SUBST, but adds -Dname="value" option to CPPFLAGS
# Same as AC_SUBST, but adds -Dname="value" option to CPPFLAGS and a
# notz only a @name@ replacement, but also a @name_ENCODED@ one to be
# used in code.
# - parameters:
# $1 = variable name
AC_DEFUN([AX_SUBST], [
[$1]_ENCODED=$(echo "${$1}" | awk 1 ORS='\\n' | sed 's,\\n$,,')
[$1]_ENCODED=${[$1]_ENCODED//\"/\\\"}
[$1]_ENCODED=${[$1]_ENCODED//\'/\'\"\'\"\'}
[$1]_ENCODED=${[$1]_ENCODED//#/\\#}
AM_CPPFLAGS+=" '-D$1=\"${[$1]_ENCODED}\"'"
AC_SUBST([$1])
tmp_var=$(echo "${$1}" | awk 1 ORS='\\n' | sed 's,\\n$,,')
tmp_var=${tmp_var//\"/\\\"}
tmp_var=${tmp_var//\'/\'\"\'\"\'}
tmp_var=${tmp_var//#/\\#}
AM_CPPFLAGS+=" '-D$1=\"${tmp_var}\"'"
AC_SUBST([$1]_ENCODED)
AC_SUBST(AM_CPPFLAGS)
])
@ -167,16 +170,22 @@ AC_DEFUN([AX_INIT_STANDARD_PROJECT], [
AX_SUBST(BUILD_NUMBER)
BUILD_DATE=$(LANG= date +"%a, %d %b %Y %H:%M:%S %z")
AX_SUBST(BUILD_DATE)
if test -f "${PACKAGE_NAME}.dektop.in"; then
PACKAGE_DESKTOP="${PACKAGE_NAME}.dektop"
if test -f "${PACKAGE_NAME}.desktop.in"; then
PACKAGE_DESKTOP="${PACKAGE_NAME}.desktop"
fi
AX_SUBST(PACKAGE_DESKTOP)
if test -f "${PACKAGE_NAME}-logo.png"; then
PACKAGE_LOGO="${PACKAGE_NAME}-logo.png"
fi
AX_SUBST(PACKAGE_LOGO)
if test -f "${PACKAGE_NAME}-icon.png"; then
if test -f "${PACKAGE_NAME}-icon.svg"; then
PACKAGE_ICON="${PACKAGE_NAME}-icon.svg"
elif test -f "${PACKAGE_NAME}-icon.png"; then
PACKAGE_ICON="${PACKAGE_NAME}-icon.png"
elif test -f "${PACKAGE_NAME}.svg"; then
PACKAGE_ICON="${PACKAGE_NAME}.svg"
elif test -f "${PACKAGE_NAME}.png"; then
PACKAGE_ICON="${PACKAGE_NAME}.png"
fi
AX_SUBST(PACKAGE_ICON)

@ -20,7 +20,7 @@ DEFAULT_PROJECT_NAME=${PROJECT_PATH##*/}
configure=0
build=0
docker=0
buildtarget="distcheck"
buildtarget=""
overwrite=0
rebuild=0
rebuildfiles=()
@ -28,8 +28,9 @@ while test $# -gt 0; do
case "$1" in
(--configure|-c) configure=1;;
(--docker|-d) docker=1;;
(--build|-b) configure=1; build=1;;
(--target|-t) shift; configure=1; build=1; buildtarget="$1";;
(--build|-b) configure=1; build=1; buildtarget+=" distcheck";;
(--target|-t) shift; configure=1; build=1; buildtarget+=" $1";;
(--clean) shift; configure=1; build=1; buildtarget+=" maintainer-clean";;
(--overwrite|-o) overwrite=1;;
(--rebuild|-r) rebuild=1;;
(--rebuild-file|-f) shift; rebuildfiles+=("$1");;
@ -1043,10 +1044,10 @@ done
to makefile.am<<EOF
${HEADER}SUBDIRS =${SUBDIRS}
desktopdir = ${datadir}/applications
desktopdir = \${datadir}/applications
desktop_DATA = @PACKAGE_DESKTOP@
pkgdata_DATA = @PACKAGE_ICON@
doc_DATA = AUTHORS NEWS README COPYING INSTALL ChangeLog
dist_pkgdata_DATA = @PACKAGE_ICON@
dist_doc_DATA = AUTHORS NEWS README COPYING INSTALL ChangeLog
MAINTAINERCLEANFILES = makefile.in
EOF

@ -1,15 +1,177 @@
#! /bin/bash -ex
#! /bin/bash -e
set -o errtrace
# build and test everything in a fresh docker installation
img="ubuntu:latest"
repos=()
keys=()
envs=()
dirs=("-v $(pwd):/workdir")
packages=()
targets="all check distcheck"
commands=()
if test -e ./build-in-docker.conf; then
# you can preconfigure the variables in file build-in-docker.conf
# if you do so, add the file to EXTRA_DIST in makefile.am
source ./build-in-docker.conf
fi
while test $# -gt 0; do
case "$1" in
(-h|--help)
echo "$0 [OPTIONS]"
echo
echo "OPTIONS:"
echo
echo " -h, --help show this help"
echo " -i, --image <image> use given docker image instead of ${img}"
echo " -t, --targets targets specify build targets, default: ${targets}"
echo " -r, --repo <url> add given apt repository"
echo " -k, --key <url> add public key from url"
echo " -e, --env <var>=<val> set environment variable in docker"
echo " -d, --dir <dir> access given directory read only"
echo " -p, --package <pkg> install extra debian packages"
echo " -c, --cmd <command> execute commands as root in docker"
echo
echo " The options -r -k -e -d -p -c can be repeated several times."
echo
echo " The options -r -p -c allow an if-then-else contruct"
echo " depending on the operating system:"
echo " <os>:::<A>:::<B>"
echo " <os>:::<A>"
echo " Read as: On linux type <os> use <A> else use <B>"
echo " That means: If the distributer ID or codename in lsb_release"
echo " matches regular expression <os>, then <A> is replaced, else <B> is replaced."
echo " The three colons are for splitting <os> from <A> and <B> part."
echo " E.g.: Install package curl on wheezy and npm on olter systems:"
echo " $0 -p Debian|precise:::curl:::npm"
echo
echo "EXAMPLE:"
echo
echo "$0 -i mwaeckerlin/ubuntu:trusty-i386 \\"
echo " -t deb \\"
echo " -e ANDROID_HOME=/opt/local/android \\"
echo " -d /opt/local/android \\"
echo " -r universe \\"
echo " -r https://dev.marc.waeckerlin.org/repository \\"
echo " -k https://dev.marc.waeckerlin.org/repository/PublicKey \\"
echo " -p mrw-c++"
echo
exit 0
;;
(-i|--image) shift;
img="$1"
;;
(-t|--targets) shift;
targets="$1"
;;
(-r|--repo) shift;
repos+=("$1")
;;
(-k|--key) shift;
keys+=("$1")
;;
(-e|--env) shift;
envs+=("-e $1")
;;
(-d|--dirs) shift;
dirs+=("-v $1:$1:ro")
;;
(-p|--package) shift;
packages+=("$1")
;;
(-c|--cmd) shift;
commands+=("$1")
;;
(*)
echo "**** ERROR: unknown option '$1', try --help" 1>&2
exit 1
;;
esac
if test $# -eq 0; then
echo "**** ERROR: missing value, try --help" 2>61
exit 1
fi
shift
done
DOCKER_ID=$(docker run -d -v $(pwd):/workdir -w /workdir ubuntu sleep infinity)
trap "docker rm -f ${DOCKER_ID}" INT TERM EXIT
docker exec ${DOCKER_ID} apt-get install -y software-properties-common apt-transport-https dpkg-dev
docker exec ${DOCKER_ID} apt-add-repository universe
docker exec ${DOCKER_ID} apt-add-repository https://dev.marc.waeckerlin.org/repository
wget -O- https://dev.marc.waeckerlin.org/repository/PublicKey \
| docker exec -i ${DOCKER_ID} apt-key add -
function traperror() {
set +x
local DOCKER_ID="$1"
local err=($2) # error status
local line="$3" # LINENO
local linecallfunc="$4"
local command="$5"
local funcstack="$6"
for e in ${err[@]}; do
if test -n "$e" -a "$e" != "0"; then
echo "<---"
echo "ERROR: line $line - command '$command' exited with status: $e (${err[@]})"
if [ "${funcstack}" != "main" -o "$linecallfunc" != "0" ]; then
echo -n " ... Error at ${funcstack} "
if [ "$linecallfunc" != "" ]; then
echo -n "called at line $linecallfunc"
fi
echo
fi
echo -n " ... cleanup docker: "
docker rm -f "${DOCKER_ID}"
echo "returning status: $e"
echo "--->"
exit $e
fi
done
echo -n " SUCCESS ... cleanup docker: "
docker rm -f "${DOCKER_ID}"
exit 0
}
function ifthenelse() {
arg="$1"
shift
cmd="$*"
if test "${arg/:::/}" = "${arg}"; then
docker exec ${DOCKER_ID} bash -c "${cmd//ARG/${arg}}"
else
os="${arg%%:::*}"
thenpart="${arg#*:::}"
if test "${thenpart/:::/}" = "${thenpart}"; then
docker exec ${DOCKER_ID} bash -c 'os="'$os'"; if [[ "$(lsb_release -is)-$(lsb_release -cs)-$(dpkg --print-architecture)" =~ ${os} ]]; then '"${cmd//ARG/${thenpart}}"'; fi'
else
elsepart="${thenpart##*:::}"
thenpart="${thenpart%:::*}"
if test -n "${thenpart}"; then
docker exec ${DOCKER_ID} bash -c 'os="'$os'"; if [[ "$(lsb_release -is)-$(lsb_release -cs)-$(dpkg --print-architecture)" =~ ${os} ]]; then '"${cmd//ARG/${thenpart}}"'; else '"${cmd//ARG/${elsepart}}"'; fi'
else
docker exec ${DOCKER_ID} bash -c 'os="'$os'"; if [[ "$(lsb_release -is)-$(lsb_release -cs)-$(dpkg --print-architecture)" =~ ${os} ]]; then true; else '"${cmd//ARG/${elsepart}}"'; fi'
fi
fi
fi
}
set -x
docker pull $img
DOCKER_ID=$(docker run -d ${dirs[@]} ${envs[@]} -w /workdir $img sleep infinity)
trap 'traperror '"${DOCKER_ID}"' "$? ${PIPESTATUS[@]}" $LINENO $BASH_LINENO "$BASH_COMMAND" "${FUNCNAME[@]}" "${FUNCTION}"' SIGINT INT TERM EXIT
docker exec ${DOCKER_ID} apt-get update
docker exec ${DOCKER_ID} apt-get upgrade -y
docker exec ${DOCKER_ID} apt-get install -y python-software-properties software-properties-common apt-transport-https dpkg-dev lsb-release || \
docker exec ${DOCKER_ID} apt-get install -y software-properties-common apt-transport-https dpkg-dev lsb-release || \
docker exec ${DOCKER_ID} apt-get install -y python-software-properties apt-transport-https dpkg-dev lsb-release;
for repo in "${repos[@]}"; do
ifthenelse "${repo}" "apt-add-repository ARG"
done
for key in "${keys[@]}"; do
wget -O- "$key" \
| docker exec -i ${DOCKER_ID} apt-key add -
done
docker exec ${DOCKER_ID} apt-get update
for package in "${packages[@]}"; do
ifthenelse "${package}" "apt-get install -y --force-yes ARG"
done
for command in "${commands[@]}"; do
ifthenelse "${command}" "ARG"
done
docker exec ${DOCKER_ID} ./resolve-debbuilddeps.sh
docker exec -u $(id -u) ${DOCKER_ID} svn upgrade || true
docker exec -u $(id -u) ${DOCKER_ID} ./bootstrap.sh -t "all check distcheck"
docker exec -u $(id -u) ${DOCKER_ID} ./bootstrap.sh -t "${targets}"

@ -1,13 +1,18 @@
## @id $Id$
#
# This file has been added by bootstrap.sh on Wed, 09 September 2015 15:45:15 +0200
# Feel free to change it or even remove and rebuild it, up to your needs
#
##
## This file has been added:
## - by bootstrap.sh
## - on Mon, 04 January 2016 10:52:26 +0100
## Feel free to change it or even remove and rebuild it, up to your needs
##
## 1 2 3 4 5 6 7 8
## 45678901234567890123456789012345678901234567890123456789012345678901234567890
SUBDIRS = src doc examples
doc_DATA = AUTHORS NEWS README COPYING INSTALL ChangeLog
desktopdir = ${datadir}/applications
desktop_DATA = @PACKAGE_DESKTOP@
dist_pkgdata_DATA = @PACKAGE_ICON@
dist_doc_DATA = AUTHORS NEWS README COPYING INSTALL ChangeLog
MAINTAINERCLEANFILES = makefile.in

@ -16,7 +16,11 @@ if test -n "${SCHROOTNAME}"; then
SUDO="schroot -c "${SCHROOTNAME}" -u root -d / --"
else
DO=""
SUDO="sudo"
if grep -q '/docker/' /proc/1/cgroup; then
SUDO=""
else
SUDO="sudo"
fi
fi
function install() {
@ -31,7 +35,7 @@ TO_INSTALL=
if test -e debian/control.in -a ! -e debian/control; then
for f in $(sed -n 's, *AX_DEB_DEPEND_IFEXISTS(\([^)]*\)).*,\1,p' configure.ac); do
if test -n "$(${DO} apt-cache policy -q ${f})" && ! ${DO} dpkg -l "${f}"; then
if test -n "$(${DO} apt-cache policy -q ${f})" && ! "$(${DO} apt-cache policy ${f} 2>&1 | grep -q 'N: Unable to locate package')" && ! ${DO} dpkg -l "${f}"; then
TO_INSTALL+=" ${f}"
fi
done
@ -41,7 +45,7 @@ if test -e debian/control.in -a ! -e debian/control; then
fi
install dpkg-dev
DEPS=$(${DO} dpkg-checkbuilddeps 2>&1 || true)
DEPS=$(LANG= ${DO} dpkg-checkbuilddeps 2>&1 || true)
DEPS=$(echo "$DEPS" | sed -n '/Unmet build dependencies/ { s,.*Unmet build dependencies: ,,g; s, ([^)]*),,g; s, *| *,|,g; p}')
for pa in ${DEPS}; do

@ -91,13 +91,6 @@ class Browser: public QMainWindow, protected Ui::Browser {
actionStop->setVisible(false);
actionReload->setVisible(false);
show();
try {
_networkManager.scAuth
(new SmartCardAuth(suisseid::Scanner(actlib.toStdString()).scan(),
this, login));
} catch (const std::exception& x) {
LOG<<"No SmartCard Support:"<<x.what();
}
statusBar()->addPermanentWidget(_find);
_find->add(actionUnFind);
_find->add(actionClearFind);
@ -107,10 +100,10 @@ class Browser: public QMainWindow, protected Ui::Browser {
sp.setHorizontalPolicy(QSizePolicy::Minimum);
_progress->setSizePolicy(sp);
QPushButton* btn(0);
statusBar()->addPermanentWidget(btn=new QPushButton("-"));
statusBar()->addPermanentWidget(btn=new QPushButton(QIcon(":/icons/zoom-out"), ""));
assert(connect(btn, SIGNAL(clicked(bool)), SLOT(smaller())));
statusBar()->addPermanentWidget(_zoom = new QSlider(Qt::Horizontal));
statusBar()->addPermanentWidget(btn=new QPushButton("+"));
statusBar()->addPermanentWidget(btn=new QPushButton(QIcon(":/icons/zoom-in"), ""));
assert(connect(btn, SIGNAL(clicked(bool)), SLOT(larger())));
sp = _zoom->sizePolicy();
sp.setHorizontalPolicy(QSizePolicy::Minimum);
@ -195,6 +188,7 @@ class Browser: public QMainWindow, protected Ui::Browser {
if (!_kiosk) _toolbar->addAction(actionAddBookmark);
_toolbar->addAction(actionHome);
}
newSettings();
(*_downloadManager)+=&_networkManager;
assert(connect(&qbrowserlib::ErrorLog::instance(),
SIGNAL(reset()), SLOT(errorReset())));
@ -212,7 +206,6 @@ class Browser: public QMainWindow, protected Ui::Browser {
SLOT(metaDataChanged(QNetworkReply*))));
assert(connect(&qbrowserlib::Settings::instance(),
SIGNAL(newSettings()), SLOT(newSettings())));
newSettings();
on_actionNewTab_triggered();
if (!settings || _kiosk) {
@ -607,6 +600,17 @@ class Browser: public QMainWindow, protected Ui::Browser {
_searchEngines->addItem(QIcon(":/icons/gg"), tr("gg"),
tr("http://www.google.com/search?hl=%2&q=%1"));
_searchEngines->setVisible(_searchEngines->count()>1);
if (qbrowserlib::Settings::instance().flag("SuisseID")) try {
_networkManager.scAuth
(new SmartCardAuth(suisseid::Scanner(qbrowserlib::Settings::instance()
.text("PKCS#11-Path").toStdString())
.scan(),
this, true));
} catch (const std::exception& x) {
qbrowserlib::ErrorLog::instance().append(tr("Error Loading SuisseID: %1")
.arg(QString::fromStdString(x.what())));
statusBar()->showMessage(tr("Error Loading SuisseID"));
}
}
void on_actionAddBookmark_triggered() {
@ -841,7 +845,8 @@ class Browser: public QMainWindow, protected Ui::Browser {
}
void on_actionCommandline_triggered() {
QMessageBox::information(this, tr("Commandline Arguments"), _helptext);
QMessageBox::information(this, tr("Commandline Arguments"),
"<pre>"+_helptext+"</pre>");
}
void on_actionAbout_triggered() {

@ -70,7 +70,7 @@
<x>0</x>
<y>0</y>
<width>1009</width>
<height>22</height>
<height>20</height>
</rect>
</property>
<widget class="QMenu" name="menuDatei">

@ -38,7 +38,7 @@ namespace qbrowserlib {
TRC;
setupUi(this);
}
public:
public Q_SLOTS:
void append(QString text) {
TRC; LOG<<text;
_errors->append(text);

@ -1,5 +1,8 @@
<RCC>
<qresource prefix="icons">
<file alias="suisseid.png">resources/icons/suisseid.png</file>
<file alias="zoom-in.svg">resources/icons/PICOL_icon_Zoom_in.svg</file>
<file alias="zoom-out.svg">resources/icons/PICOL_icon_Zoom_out.svg</file>
<file alias="tel.png">resources/icons/tel.png</file>
<file alias="wp.png">resources/icons/wp.png</file>
<file alias="surfer_32x32x32.png">resources/icons/surfer_32x32x32.png</file>
@ -39,52 +42,5 @@
<file alias="error.svg">resources/icons/error.svg</file>
<file alias="surfer.png">resources/icons/surfer.png</file>
</qresource>
<qresource prefix="icons/48x48">
<file alias="SW_Surfer_48x48x32.png">resources/icons/48x48/SW_Surfer_48x48x32.png</file>
</qresource>
<qresource prefix="icons/32x32">
<file alias="butt32_02.png">resources/icons/32x32/butt32_02.png</file>
<file alias="butt32_05.png">resources/icons/32x32/butt32_05.png</file>
<file alias="butt32_09.png">resources/icons/32x32/butt32_09.png</file>
<file alias="butt32_09_sw.png">resources/icons/32x32/butt32_09_sw.png</file>
<file alias="favicon.ico">resources/icons/32x32/favicon.ico</file>
<file alias="butt32_11.png">resources/icons/32x32/butt32_11.png</file>
<file alias="butt32_06.png">resources/icons/32x32/butt32_06.png</file>
<file alias="butt32_10_sw.png">resources/icons/32x32/butt32_10_sw.png</file>
<file alias="butt32_01.png">resources/icons/32x32/butt32_01.png</file>
<file alias="butt32_03.png">resources/icons/32x32/butt32_03.png</file>
<file alias="butt32_07.png">resources/icons/32x32/butt32_07.png</file>
<file alias="butt32_49.png">resources/icons/32x32/butt32_49.png</file>
<file alias="butt32_10.png">resources/icons/32x32/butt32_10.png</file>
<file alias="butt32_04.png">resources/icons/32x32/butt32_04.png</file>
<file alias="butt32_08.png">resources/icons/32x32/butt32_08.png</file>
<file alias="surfer.png">resources/icons/32x32/surfer.png</file>
</qresource>
<qresource prefix="icons/16x16">
<file alias="favicon.ico">resources/icons/16x16/favicon.ico</file>
<file alias="butt16_11.png">resources/icons/16x16/butt16_11.png</file>
<file alias="butt16_06.png">resources/icons/16x16/butt16_06.png</file>
<file alias="butt16_10_sw.png">resources/icons/16x16/butt16_10_sw.png</file>
<file alias="butt16_01.png">resources/icons/16x16/butt16_01.png</file>
<file alias="butt16_03.png">resources/icons/16x16/butt16_03.png</file>
<file alias="butt16_07.png">resources/icons/16x16/butt16_07.png</file>
<file alias="butt16_49.png">resources/icons/16x16/butt16_49.png</file>
<file alias="butt16_10.png">resources/icons/16x16/butt16_10.png</file>
<file alias="butt16_04.png">resources/icons/16x16/butt16_04.png</file>
<file alias="butt16_08.png">resources/icons/16x16/butt16_08.png</file>
<file alias="surfer.png">resources/icons/16x16/surfer.png</file>
<file alias="butt16_09_sw.png">resources/icons/16x16/butt16_09_sw.png</file>
<file alias="butt16_02.png">resources/icons/16x16/butt16_02.png</file>
<file alias="butt16_05.png">resources/icons/16x16/butt16_05.png</file>
<file alias="butt16_09.png">resources/icons/16x16/butt16_09.png</file>
</qresource>
<qresource prefix="icons/512x512">
<file alias="SW_Surfer_512x512x32.png">resources/icons/512x512/SW_Surfer_512x512x32.png</file>
</qresource>
<qresource prefix="icons/128x128">
<file alias="SW_Surfer_128x128x32.png">resources/icons/128x128/SW_Surfer_128x128x32.png</file>
</qresource>
<qresource prefix="icons/256x256">
<file alias="SW_Surfer_256x256x32.png">resources/icons/256x256/SW_Surfer_256x256x32.png</file>
</qresource>
<qresource prefix="newPrefix"/>
</RCC>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 527 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 591 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 422 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 425 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 445 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 521 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 475 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 546 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 569 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 521 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 550 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 512 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 412 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 577 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 942 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 651 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 805 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 433 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 441 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 518 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 640 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 628 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 662 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 798 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 657 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 729 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 620 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 482 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
x="0px"
y="0px"
width="32px"
height="32px"
viewBox="0 0 32 32"
enable-background="new 0 0 32 32"
xml:space="preserve"
id="svg2"
inkscape:version="0.48.4 r9939"
sodipodi:docname="zoom_in.svg"><defs
id="defs3394" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="640"
inkscape:window-height="480"
id="namedview3392"
showgrid="false"
inkscape:zoom="7.375"
inkscape:cx="16"
inkscape:cy="16"
inkscape:window-x="53"
inkscape:window-y="24"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" /><metadata
id="metadata3380"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>PICOL Icon</dc:title><dc:date>2009-03-15</dc:date><dc:creator><cc:Agent><dc:title>Melih Bilgil</dc:title></cc:Agent></dc:creator><dc:rights><cc:Agent><dc:title>Creative Commons BY-SA</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>PICOL - Pictorial Communication Language</dc:title></cc:Agent></dc:publisher><dc:identifier>http://blog.picol.org</dc:identifier><dc:source>http://blog.picol.org</dc:source><dc:language>en</dc:language><dc:subject><rdf:Bag><rdf:li>PICOL</rdf:li><rdf:li>icon</rdf:li><rdf:li>icons</rdf:li><rdf:li>sign</rdf:li><rdf:li>GUI</rdf:li><rdf:li>vector</rdf:li><rdf:li>interface</rdf:li></rdf:Bag></dc:subject><dc:description>This is one icon out of all PICOL icons</dc:description><dc:contributor><cc:Agent><dc:title>Melih Bilgil (www.lonja.de), Christopher Adjei (www.boffer.net)</dc:title></cc:Agent></dc:contributor><cc:license
rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/" /></cc:Work><cc:License
rdf:about="http://creativecommons.org/licenses/by-sa/3.0/"><cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires
rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires
rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires
rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><g
id="background"><rect
fill="none"
width="32"
height="32"
id="rect3383" /></g><path
id="path3390"
d="M 30,26 19.085,15.085 c 0.622,-1.229 0.98,-2.614 0.981,-4.086 -0.002,-5.008 -4.058,-9.066 -9.067,-9.066 -5.008,0 -9.066,4.058 -9.066,9.066 0,5.01 4.058,9.065 9.066,9.067 1.472,-10e-4 2.857,-0.359 4.086,-0.981 L 26,30 30,26 z M 4.066,10.999 c 0.008,-3.83 3.104,-6.925 6.933,-6.933 3.832,0.008 6.927,3.104 6.933,6.933 -0.006,3.832 -3.101,6.927 -6.933,6.933 C 7.169,17.926 4.074,14.831 4.066,10.999 z M 10,10 l -4,0 0,2 4,0 0,4 2.002,0 0,-4 3.998,0 0,-2 -3.998,0 0,-4 L 10,6 z" /></svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
x="0px"
y="0px"
width="32px"
height="32px"
viewBox="0 0 32 32"
enable-background="new 0 0 32 32"
xml:space="preserve"
id="svg2"
inkscape:version="0.48.4 r9939"
sodipodi:docname="zoom_out.svg"><defs
id="defs3411" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="640"
inkscape:window-height="480"
id="namedview3409"
showgrid="false"
inkscape:zoom="7.375"
inkscape:cx="16"
inkscape:cy="16"
inkscape:window-x="53"
inkscape:window-y="24"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" /><metadata
id="metadata3397"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>PICOL Icon</dc:title><dc:date>2009-03-15</dc:date><dc:creator><cc:Agent><dc:title>Melih Bilgil</dc:title></cc:Agent></dc:creator><dc:rights><cc:Agent><dc:title>Creative Commons BY-SA</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>PICOL - Pictorial Communication Language</dc:title></cc:Agent></dc:publisher><dc:identifier>http://blog.picol.org</dc:identifier><dc:source>http://blog.picol.org</dc:source><dc:language>en</dc:language><dc:subject><rdf:Bag><rdf:li>PICOL</rdf:li><rdf:li>icon</rdf:li><rdf:li>icons</rdf:li><rdf:li>sign</rdf:li><rdf:li>GUI</rdf:li><rdf:li>vector</rdf:li><rdf:li>interface</rdf:li></rdf:Bag></dc:subject><dc:description>This is one icon out of all PICOL icons</dc:description><dc:contributor><cc:Agent><dc:title>Melih Bilgil (www.lonja.de), Christopher Adjei (www.boffer.net)</dc:title></cc:Agent></dc:contributor><cc:license
rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/" /></cc:Work><cc:License
rdf:about="http://creativecommons.org/licenses/by-sa/3.0/"><cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires
rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires
rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires
rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><g
id="background"><rect
fill="none"
width="32"
height="32"
id="rect3400" /></g><path
id="path3407"
d="M 30,26 19.085,15.085 c 0.622,-1.229 0.98,-2.614 0.981,-4.086 -0.002,-5.008 -4.058,-9.066 -9.067,-9.066 -5.008,0 -9.066,4.058 -9.066,9.066 0,5.01 4.058,9.065 9.066,9.067 1.472,-10e-4 2.857,-0.359 4.086,-0.981 L 26,30 30,26 z M 4.066,10.999 c 0.008,-3.83 3.104,-6.925 6.933,-6.933 3.832,0.008 6.927,3.104 6.933,6.933 -0.006,3.832 -3.101,6.927 -6.933,6.933 C 7.169,17.926 4.074,14.831 4.066,10.999 z M 6,10 l 10,0 0,2 -10,0 z" /></svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

@ -125,6 +125,12 @@ namespace qbrowserlib {
std::make_pair(_saveWindowState, _saveWindowState->isChecked());
_checkboxes["CloseApps"] =
std::make_pair(_closeApps, _closeApps->isChecked());
_checkboxes["SuisseID"] =
std::make_pair(_suisseid, _suisseid->isChecked());
// LineEdits
_lineedits["PKCS#11-Path"] =
std::make_pair(_p11path, _p11path->text());
load(!_mimetypes.size());
on__buttons_rejected();
@ -384,9 +390,28 @@ namespace qbrowserlib {
_searchEngineTable->removeRow(begin);
}
void on__addSuisseidServer_pressed() {
_suisseidServers->setRowCount(_suisseidServers->rowCount()+1);
_suisseidServers->setItem(_suisseidServers->rowCount()-1, 0,
new QTableWidgetItem);
_suisseidServers->setItem(_suisseidServers->rowCount()-1, 1,
new QTableWidgetItem);
_suisseidServers->setItem(_suisseidServers->rowCount()-1, 2,
new QTableWidgetItem);
}
void on__removeSuisseidServer_pressed() {
QList<QTableWidgetSelectionRange> ranges
(_suisseidServers->selectedRanges());
if (ranges.isEmpty()) return;
for (int begin(ranges.at(0).topRow()), count(ranges.at(0).rowCount());
count; --count)
_suisseidServers->removeRow(begin);
}
private:
typedef std::map<QWebSettings::WebAttribute, QCheckBox*> Attributes ;
typedef std::map<QWebSettings::WebAttribute, QCheckBox*> Attributes;
Attributes _attributes;
typedef std::map<QString, std::pair<QCheckBox*, bool> > CheckBoxes;
CheckBoxes _checkboxes;

@ -17,7 +17,7 @@
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>0</number>
<number>5</number>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
@ -647,7 +647,7 @@ p, li { white-space: pre-wrap; }
<item>
<widget class="QCheckBox" name="_saveWindowState">
<property name="text">
<string>save window state when opened withiut URL</string>
<string>save window state when opened without URL</string>
</property>
</widget>
</item>
@ -682,6 +682,103 @@ p, li { white-space: pre-wrap; }
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_6">
<attribute name="title">
<string>SuisseID</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_14">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QCheckBox" name="_suisseid">
<property name="text">
<string>Use SuisseID</string>
</property>
<property name="icon">
<iconset resource="resources.qrc">
<normaloff>:/icons/suisseid.png</normaloff>:/icons/suisseid.png</iconset>
</property>
<property name="iconSize">
<size>
<width>64</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>PKCS#11 Library Path:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="_p11path">
<property name="text">
<string>libcvP11.so</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QTableWidget" name="_suisseidServers">
<attribute name="horizontalHeaderCascadingSectionResizes">
<bool>true</bool>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
<attribute name="verticalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
<column>
<property name="text">
<string>Servers that are allowed to require SuisseID</string>
</property>
</column>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="_addSuisseidServer">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>+</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="_removeSuisseidServer">
<property name="text">
<string>-</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</widget>
</item>
<item>
@ -711,7 +808,6 @@ p, li { white-space: pre-wrap; }
<tabstop>_settingPrintElementBackgrounds</tabstop>
<tabstop>_settingAcceleratedCompositingEnabled</tabstop>
<tabstop>_settingTiledBackingStoreEnabled</tabstop>
<tabstop>tabWidget</tabstop>
<tabstop>_settingFrameFlatteningEnabled</tabstop>
<tabstop>_settingSiteSpecificQuirksEnabled</tabstop>
<tabstop>_settingJavascriptEnabled</tabstop>
@ -726,7 +822,9 @@ p, li { white-space: pre-wrap; }
<tabstop>_settingLocalContentCanAccessRemoteUrls</tabstop>
<tabstop>_settingLocalContentCanAccessFileUrls</tabstop>
</tabstops>
<resources/>
<resources>
<include location="resources.qrc"/>
</resources>
<connections>
<connection>
<sender>_buttons</sender>

@ -115,15 +115,51 @@ class CryptokiEngine: public QObject, public openssl::Engine {
virtual std::string rsaSign(const std::string& in, unsigned int type) try {
TRC; LOG<<"log; type="<<type<<"; size="<<in.size();
LOG<<crypto::readable(in).c_str();
if (type != NID_md5_sha1) throw std::runtime_error("wrong sign type");
if (in.size() != 36) throw std::runtime_error("wrong msg size to sign");
LOG<<"ready to sign";
/* std::string data;
switch (type) {
case NID_sha1:
data += QString(QByteArray::fromHex("3021300906052b0e03021a05000414"))
.toStdString();
break;
case NID_sha224:
data += QString(QByteArray::fromHex("302d300d06096086480165030402040500041c"))
.toStdString();
break;
case NID_sha256:
data += QString(QByteArray::fromHex("3031300d060960864801650304020105000420"))
.toStdString();
break;
case NID_sha384:
data += QString(QByteArray::fromHex("3041300d060960864801650304020205000430"))
.toStdString();
break;
case NID_sha512:
data += QString(QByteArray::fromHex("3051300d060960864801650304020305000440"))
.toStdString();
break;
default:
break;
}
data += in; */
unsigned int algo(CKM_RSA_PKCS);
switch (type) {
case NID_md5_sha1: algo = CKM_RSA_PKCS; break;
case NID_md2: algo = CKM_MD2_RSA_PKCS; break;
case NID_md5: algo = CKM_MD5_RSA_PKCS; break;
case NID_sha1: algo = CKM_SHA1_RSA_PKCS; break;
case NID_sha256: algo = CKM_SHA256_RSA_PKCS; break;
case NID_sha384: algo = CKM_SHA384_RSA_PKCS; break;
case NID_sha512: algo = CKM_SHA512_RSA_PKCS; break;
case NID_ripemd160: algo = CKM_RIPEMD160_RSA_PKCS; break;
default: throw std::runtime_error("unknown sign mechanism");
}
LOG<<"ready to sign with algorith "<<algo;
try {
return _privateKey->sign(in, CKM_RSA_PKCS);
return _privateKey->sign(in, algo);
} catch (const std::exception& x) {
LOG<<"signature failed, reason: "<<x.what();
certRequired(); // get new certificate
return _privateKey->sign(in, CKM_RSA_PKCS); // try again
return _privateKey->sign(in, algo); // try again
}
} catch (const std::exception& x) {
TRC; LOG<<"rsaSign failed, reason: "<<x.what();

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Loading…
Cancel
Save