Add custom QZ Tray fork with pairing key authentication

- Custom fork of QZ Tray 2.2.x with certificate validation bypassed
- Implemented pairing key (HMAC) authentication as replacement
- Modified files: PrintSocketClient.java (certificate check disabled)
- New files: PairingAuth.java, PairingConfigDialog.java
- Excluded build artifacts (out/, lib/javafx*) from repository
- Library JARs included for dependency management
This commit is contained in:
2025-10-02 02:27:45 +03:00
parent 755400a269
commit c7266c32ee
444 changed files with 63195 additions and 1 deletions

7199
tray/css/bootstrap.min.css vendored Normal file

File diff suppressed because it is too large Load Diff

2101
tray/css/font-awesome.min.css vendored Normal file

File diff suppressed because it is too large Load Diff

7
tray/css/gh-fork-ribbon.min.css vendored Normal file
View File

@@ -0,0 +1,7 @@
/*!
* "Fork me on GitHub" CSS ribbon v0.2.3 | MIT License
* https://github.com/simonwhitaker/github-fork-ribbon-css
*/.github-fork-ribbon{width:12.1em;height:12.1em;position:absolute;overflow:hidden;top:0;right:0;z-index:9999;pointer-events:none;font-size:13px;text-decoration:none;text-indent:-999999px}.github-fork-ribbon.fixed{position:fixed}.github-fork-ribbon:active,.github-fork-ribbon:hover{background-color:rgba(0,0,0,0)}.github-fork-ribbon:after,.github-fork-ribbon:before{position:absolute;display:block;width:15.38em;height:1.54em;top:3.23em;right:-3.23em;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.github-fork-ribbon:before{content:"";padding:.38em 0;background-color:#a00;background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(rgba(0,0,0,.15)));background-image:-webkit-linear-gradient(top,rgba(0,0,0,0),rgba(0,0,0,.15));background-image:-moz-linear-gradient(top,rgba(0,0,0,0),rgba(0,0,0,.15));background-image:-ms-linear-gradient(top,rgba(0,0,0,0),rgba(0,0,0,.15));background-image:-o-linear-gradient(top,rgba(0,0,0,0),rgba(0,0,0,.15));background-image:linear-gradient(to bottom,rgba(0,0,0,0),rgba(0,0,0,.15));-webkit-box-shadow:0 .15em .23em 0 rgba(0,0,0,.5);-moz-box-shadow:0 .15em .23em 0 rgba(0,0,0,.5);box-shadow:0 .15em .23em 0 rgba(0,0,0,.5);pointer-events:auto}.github-fork-ribbon:after{content:attr(data-ribbon);color:#fff;font:700 1em "Helvetica Neue",Helvetica,Arial,sans-serif;line-height:1.54em;text-decoration:none;text-shadow:0 -.08em rgba(0,0,0,.5);text-align:center;text-indent:0;padding:.15em 0;margin:.15em 0;border-width:.08em 0;border-style:dotted;border-color:#fff;border-color:rgba(255,255,255,.7)}.github-fork-ribbon.left-bottom,.github-fork-ribbon.left-top{right:auto;left:0}.github-fork-ribbon.left-bottom,.github-fork-ribbon.right-bottom{top:auto;bottom:0}.github-fork-ribbon.left-bottom:after,.github-fork-ribbon.left-bottom:before,.github-fork-ribbon.left-top:after,.github-fork-ribbon.left-top:before{right:auto;left:-3.23em}.github-fork-ribbon.left-bottom:after,.github-fork-ribbon.left-bottom:before,.github-fork-ribbon.right-bottom:after,.github-fork-ribbon.right-bottom:before{top:auto;bottom:3.23em}.github-fork-ribbon.left-top:after,.github-fork-ribbon.left-top:before,.github-fork-ribbon.right-bottom:after,.github-fork-ribbon.right-bottom:before{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}
/*# sourceMappingURL=gh-fork-ribbon.min.css.map */
/* QZ Colors */
.github-fork-ribbon:before { background-color: #3D994A; }

427
tray/css/style.css Normal file
View File

@@ -0,0 +1,427 @@
.btn-default {
color: #333;
background-color: #FFF;
border-color: #CCC;
}
.btn-primary {
color: #FFFFFF;
background-color: #44AB53;
border-color: #3D994A;
}
.btn-success {
color: #FFF;
background-color: #33658A;
border-color: #2C5777;
}
.btn-warning {
color: #FFF;
background-color: #F6AE2D;
border-color: #F5A515;
}
.btn-danger {
color: #FFF;
background-color: #F26419;
border-color: #E5570D;
}
.btn-info {
color: #FFF;
background-color: #3680A8;
border-color: #307195;
}
.btn-default:hover {
background-color: #E6E6E6;
border-color: #B3B3B3;
}
.btn-primary:hover {
background-color: #358741;
border-color: #2E7438;
}
.btn-success:hover {
background-color: #254A65;
border-color: #1E3C52;
}
.btn-warning:hover {
background-color: #E6970A;
border-color: #CE8709;
}
.btn-danger:hover {
background-color: #CC4E0C;
border-color: #B4450A;
}
.btn-info:hover {
background-color: #2A6382;
border-color: #24546E;
}
.btn-default:focus {
background-color: #F2F2F2;
border-color: #BFBFBF;
}
.btn-primary:focus {
background-color: #3D994A;
border-color: #358741;
}
.btn-success:focus {
background-color: #2C5777;
border-color: #254A65;
}
.btn-warning:focus {
background-color: #F5A515;
border-color: #E6970A;
}
.btn-danger:focus {
background-color: #E5570D;
border-color: #CC4E0C;
}
.btn-info:focus {
background-color: #307195;
border-color: #2A6382;
}
.btn-default:active {
background-color: #E6E6E6;
border-color: #B3B3B3;
}
.btn-primary:active {
background-color: #358741;
border-color: #2E7438;
}
.btn-success:active {
background-color: #254A65;
border-color: #1E3C52;
}
.btn-warning:active {
background-color: #E6970A;
border-color: #CE8709;
}
.btn-danger:active {
background-color: #CC4E0C;
border-color: #B4450A;
}
.btn-info:active {
background-color: #2A6382;
border-color: #24546E;
}
.btn-default.disabled {
background-color: #FFFFFF;
border-color: #CFCFCF;
}
.btn-primary.disabled {
background-color: #45AF55;
border-color: #3E9C4C;
}
.btn-success.disabled {
background-color: #34688E;
border-color: #2D5A7B;
}
.btn-warning.disabled {
background-color: #F6B032;
border-color: #F5A619;
}
.btn-danger.disabled {
background-color: #F2671E;
border-color: #E9590D;
}
.btn-info.disabled {
background-color: #3783AC;
border-color: #317499;
}
a {
color: #3680A8;
}
a:hover,
a:focus {
color: #24546E;
}
.text-primary {
color: #44AB53;
}
.text-danger {
color: #F26419;
}
.form-control .has-error {
border-color: #EED3D7;
}
.form-control .has-success {
border-color: #D6E9C6;
}
.navbar-default {
background-color: #44AB53;
}
.navbar-default .navbar-nav > li > a,
.navbar-default .navbar-nav > li > a:hover,
.navbar-default .navbar-header .navbar-brand {
color: #FFF;
}
@media (max-width: 768px) {
.navbar-default .navbar-nav .open .dropdown-menu > li > a {
color: #FFF;
}
}
.navbar-default .navbar-nav > li > a:hover {
background-color: #3D994A;
}
.navbar-default .navbar-toggle > .icon-bar {
background-color: #FFF;
}
.navbar-default .navbar-toggle:focus > .icon-bar {
background-color: #555;
color: #24546E;
}
.navbar-default .navbar-toggle:hover > .icon-bar {
background-color: #FFF;
}
.navbar-default .navbar-toggle:hover {
background-color: #3D994A;
}
.panel.panel-primary {
border-color: #3D994A;
}
.panel.panel-primary .panel-heading {
border-color: #3D994A;
background-color: #3D994A;
}
.alert.alert-warning a {
color: #68522C;
}
.alert.alert-danger a {
color: #B4450A;
}
html {
position: relative;
min-height: 100%;
}
body {
padding-bottom: 80px;
}
table {
font-size: inherit;
}
.versiontable > tbody > tr > th {
text-align: right;
}
.versiontable > thead > tr > th {
vertical-align: top;
}
.homesection + .homesection {
border-top: solid 1px #EEE;
}
.homesection {
text-align: center;
margin: 40px 0;
padding: 40px 0;
}
img.jumbo {
margin-top: -40px;
margin-left: -60px;
}
h1.jumbo {
margin-top: 0;
}
footer {
text-align: center;
height: 80px;
position: absolute;
bottom: 0;
width: 100%;
}
@media (min-width: 768px) {
h1.jumbo,
h3.jumbo {
text-align: right;
}
}
@media (max-width: 767px) {
h1.jumbo,
h3.jumbo {
text-align: center;
}
}
@media (min-width: 1200px) {
h1.jumbo {
margin-top: 40px;
}
}
@media (min-width: 768px) {
h3.jumbo {
margin-top: -6px;
}
}
.vertical-align {
display: flex;
align-items: center;
}
.hide_ {
display: none;
}
.dropdown-submenu {
position: relative;
}
.dropdown-submenu > .dropdown-menu {
top: 0;
left: 100%;
margin-top: -6px;
margin-left: 10px;
-webkit-border-radius: 0 6px 6px 6px;
-moz-border-radius: 0 6px 6px 6px;
border-radius: 0 6px 6px 6px;
}
.drag-target {
/* color: white; */
background: repeating-linear-gradient(
45deg,
#dbf0de,
#dbf0de 10px,
#a5d9ad 10px,
#a5d9ad 20px
);
}
input[type="file"] {
display: none;
}
button > .fa-caret-down {
height: 100%;
display: inline;
margin-left: -.75em;
margin-right: -1em;
}
@media (min-width: 768px) {
.dropdown-submenu:hover > .dropdown-menu {
display: block;
}
.dropdown-submenu > .dropdown-menu {
margin-left: -1px;
}
}
.dropdown-submenu > a:after {
display: block;
content: " ";
float: right;
width: 0;
height: 0;
border-color: transparent;
border-style: solid;
border-width: 5px 0 5px 5px;
border-left-color: #CCCCCC;
margin-top: 5px;
margin-right: -10px;
}
.dropdown-submenu:hover > a:after {
border-left-color: #FFFFFF;
}
.dropdown-submenu.pull-left {
float: none;
}
.dropdown-submenu.pull-left > .dropdown-menu {
left: -100%;
margin-left: 10px;
-webkit-border-radius: 6px 0 6px 6px;
-moz-border-radius: 6px 0 6px 6px;
border-radius: 6px 0 6px 6px;
}
.tip {
border-bottom: 1px dashed;
}
summary {
cursor: pointer;
}
code {
color: #31708F;
background-color: #D9EDF7;
}
input[type='radio'] {
margin-left: .5em;
}
#printersLog {
max-height: 20em;
overflow: auto;
}
#printersLog .INFO {
color: #303030;
}
#printersLog .WARN {
color: #9F7435;
}
#printersLog .FATAL {
color: #9F3535;
}