.
8 | .list-group {
9 | // No need to set list-style: none; since .list-group-item is block level
10 | margin-bottom: 20px;
11 | padding-left: 0; // reset padding because ul and ol
12 | }
13 |
14 | // Individual list items
15 | // -------------------------
16 |
17 | .list-group-item {
18 | position: relative;
19 | display: block;
20 | padding: 10px 15px;
21 | // Place the border on the list items and negative margin up for better styling
22 | margin-bottom: -1px;
23 | background-color: @list-group-bg;
24 | border: 1px solid @list-group-border;
25 |
26 | // Round the first and last items
27 | &:first-child {
28 | .border-top-radius(@list-group-border-radius);
29 | }
30 | &:last-child {
31 | margin-bottom: 0;
32 | .border-bottom-radius(@list-group-border-radius);
33 | }
34 |
35 | // Align badges within list items
36 | > .badge {
37 | float: right;
38 | }
39 | > .badge + .badge {
40 | margin-right: 5px;
41 | }
42 | }
43 |
44 | // Linked list items
45 | a.list-group-item {
46 | color: @list-group-link-color;
47 |
48 | .list-group-item-heading {
49 | color: @list-group-link-heading-color;
50 | }
51 |
52 | // Hover state
53 | &:hover,
54 | &:focus {
55 | text-decoration: none;
56 | background-color: @list-group-hover-bg;
57 | }
58 |
59 | // Active class on item itself, not parent
60 | &.active,
61 | &.active:hover,
62 | &.active:focus {
63 | z-index: 2; // Place active items above their siblings for proper border styling
64 | color: @list-group-active-color;
65 | background-color: @list-group-active-bg;
66 | border-color: @list-group-active-border;
67 |
68 | // Force color to inherit for custom content
69 | .list-group-item-heading {
70 | color: inherit;
71 | }
72 | .list-group-item-text {
73 | color: lighten(@list-group-active-bg, 40%);
74 | }
75 | }
76 | }
77 |
78 | // Custom content options
79 | // -------------------------
80 |
81 | .list-group-item-heading {
82 | margin-top: 0;
83 | margin-bottom: 5px;
84 | }
85 | .list-group-item-text {
86 | margin-bottom: 0;
87 | line-height: 1.3;
88 | }
89 |
--------------------------------------------------------------------------------
/less/media.less:
--------------------------------------------------------------------------------
1 | // Media objects
2 | // Source: http://stubbornella.org/content/?p=497
3 | // --------------------------------------------------
4 |
5 |
6 | // Common styles
7 | // -------------------------
8 |
9 | // Clear the floats
10 | .media,
11 | .media-body {
12 | overflow: hidden;
13 | zoom: 1;
14 | }
15 |
16 | // Proper spacing between instances of .media
17 | .media,
18 | .media .media {
19 | margin-top: 15px;
20 | }
21 | .media:first-child {
22 | margin-top: 0;
23 | }
24 |
25 | // For images and videos, set to block
26 | .media-object {
27 | display: block;
28 | }
29 |
30 | // Reset margins on headings for tighter default spacing
31 | .media-heading {
32 | margin: 0 0 5px;
33 | }
34 |
35 |
36 | // Media image alignment
37 | // -------------------------
38 |
39 | .media {
40 | > .pull-left {
41 | margin-right: 10px;
42 | }
43 | > .pull-right {
44 | margin-left: 10px;
45 | }
46 | }
47 |
48 |
49 | // Media list variation
50 | // -------------------------
51 |
52 | // Undo default ul/ol styles
53 | .media-list {
54 | padding-left: 0;
55 | list-style: none;
56 | }
57 |
--------------------------------------------------------------------------------
/less/modals.less:
--------------------------------------------------------------------------------
1 | //
2 | // Modals
3 | // --------------------------------------------------
4 |
5 | // .modal-open - body class for killing the scroll
6 | // .modal - container to scroll within
7 | // .modal-dialog - positioning shell for the actual modal
8 | // .modal-content - actual modal w/ bg and corners and shit
9 |
10 | // Kill the scroll on the body
11 | .modal-open {
12 | overflow: hidden;
13 | }
14 |
15 | // Container that the modal scrolls within
16 | .modal {
17 | display: none;
18 | overflow: auto;
19 | overflow-y: scroll;
20 | position: fixed;
21 | top: 0;
22 | right: 0;
23 | bottom: 0;
24 | left: 0;
25 | z-index: @zindex-modal-background;
26 |
27 | // When fading in the modal, animate it to slide down
28 | &.fade .modal-dialog {
29 | .translate(0, -25%);
30 | .transition-transform(~"0.3s ease-out");
31 | }
32 | &.in .modal-dialog { .translate(0, 0)}
33 | }
34 |
35 | // Shell div to position the modal with bottom padding
36 | .modal-dialog {
37 | position: relative;
38 | margin-left: auto;
39 | margin-right: auto;
40 | width: auto;
41 | padding: 10px;
42 | z-index: (@zindex-modal-background + 10);
43 | }
44 |
45 | // Actual modal
46 | .modal-content {
47 | position: relative;
48 | background-color: @modal-content-bg;
49 | border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)
50 | border: 1px solid @modal-content-border-color;
51 | border-radius: @border-radius-large;
52 | .box-shadow(0 3px 9px rgba(0,0,0,.5));
53 | background-clip: padding-box;
54 | // Remove focus outline from opened modal
55 | outline: none;
56 | }
57 |
58 | // Modal background
59 | .modal-backdrop {
60 | position: fixed;
61 | top: 0;
62 | right: 0;
63 | bottom: 0;
64 | left: 0;
65 | z-index: (@zindex-modal-background - 10);
66 | background-color: @modal-backdrop-bg;
67 | // Fade for backdrop
68 | &.fade { .opacity(0); }
69 | &.in { .opacity(.5); }
70 | }
71 |
72 | // Modal header
73 | // Top section of the modal w/ title and dismiss
74 | .modal-header {
75 | padding: @modal-title-padding;
76 | border-bottom: 1px solid @modal-header-border-color;
77 | min-height: (@modal-title-padding + @modal-title-line-height);
78 | }
79 | // Close icon
80 | .modal-header .close {
81 | margin-top: -2px;
82 | }
83 |
84 | // Title text within header
85 | .modal-title {
86 | margin: 0;
87 | line-height: @modal-title-line-height;
88 | }
89 |
90 | // Modal body
91 | // Where all modal content resides (sibling of .modal-header and .modal-footer)
92 | .modal-body {
93 | position: relative;
94 | padding: @modal-inner-padding;
95 | }
96 |
97 | // Footer (for actions)
98 | .modal-footer {
99 | margin-top: 15px;
100 | padding: (@modal-inner-padding - 1) @modal-inner-padding @modal-inner-padding;
101 | text-align: right; // right align buttons
102 | border-top: 1px solid @modal-footer-border-color;
103 | .clearfix(); // clear it in case folks use .pull-* classes on buttons
104 |
105 | // Properly space out buttons
106 | .btn + .btn {
107 | margin-left: 5px;
108 | margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs
109 | }
110 | // but override that for button groups
111 | .btn-group .btn + .btn {
112 | margin-left: -1px;
113 | }
114 | // and override it for block buttons as well
115 | .btn-block + .btn-block {
116 | margin-left: 0;
117 | }
118 | }
119 |
120 | // Scale up the modal
121 | @media screen and (min-width: @screen-sm-min) {
122 |
123 | .modal-dialog {
124 | width: 600px;
125 | padding-top: 30px;
126 | padding-bottom: 30px;
127 | }
128 | .modal-content {
129 | .box-shadow(0 5px 15px rgba(0,0,0,.5));
130 | }
131 |
132 | }
133 |
--------------------------------------------------------------------------------
/less/pager.less:
--------------------------------------------------------------------------------
1 | //
2 | // Pager pagination
3 | // --------------------------------------------------
4 |
5 |
6 | .pager {
7 | padding-left: 0;
8 | margin: @line-height-computed 0;
9 | list-style: none;
10 | text-align: center;
11 | .clearfix();
12 | li {
13 | display: inline;
14 | > a,
15 | > span {
16 | display: inline-block;
17 | padding: 5px 14px;
18 | background-color: @pagination-bg;
19 | border: 1px solid @pagination-border;
20 | border-radius: @pager-border-radius;
21 | }
22 |
23 | > a:hover,
24 | > a:focus {
25 | text-decoration: none;
26 | background-color: @pagination-hover-bg;
27 | }
28 | }
29 |
30 | .next {
31 | > a,
32 | > span {
33 | float: right;
34 | }
35 | }
36 |
37 | .previous {
38 | > a,
39 | > span {
40 | float: left;
41 | }
42 | }
43 |
44 | .disabled {
45 | > a,
46 | > a:hover,
47 | > a:focus,
48 | > span {
49 | color: @pager-disabled-color;
50 | background-color: @pagination-bg;
51 | cursor: not-allowed;
52 | }
53 | }
54 |
55 | }
56 |
--------------------------------------------------------------------------------
/less/pagination.less:
--------------------------------------------------------------------------------
1 | //
2 | // Pagination (multiple pages)
3 | // --------------------------------------------------
4 | .pagination {
5 | display: inline-block;
6 | padding-left: 0;
7 | margin: @line-height-computed 0;
8 | border-radius: @border-radius-base;
9 |
10 | > li {
11 | display: inline; // Remove list-style and block-level defaults
12 | > a,
13 | > span {
14 | position: relative;
15 | float: left; // Collapse white-space
16 | padding: @padding-base-vertical @padding-base-horizontal;
17 | line-height: @line-height-base;
18 | text-decoration: none;
19 | background-color: @pagination-bg;
20 | border: 1px solid @pagination-border;
21 | margin-left: -1px;
22 | }
23 | &:first-child {
24 | > a,
25 | > span {
26 | margin-left: 0;
27 | .border-left-radius(@border-radius-base);
28 | }
29 | }
30 | &:last-child {
31 | > a,
32 | > span {
33 | .border-right-radius(@border-radius-base);
34 | }
35 | }
36 | }
37 |
38 | > li > a,
39 | > li > span {
40 | &:hover,
41 | &:focus {
42 | background-color: @pagination-hover-bg;
43 | }
44 | }
45 |
46 | > .active > a,
47 | > .active > span {
48 | &,
49 | &:hover,
50 | &:focus {
51 | z-index: 2;
52 | color: @pagination-active-color;
53 | background-color: @pagination-active-bg;
54 | border-color: @pagination-active-bg;
55 | cursor: default;
56 | }
57 | }
58 |
59 | > .disabled {
60 | > span,
61 | > span:hover,
62 | > span:focus,
63 | > a,
64 | > a:hover,
65 | > a:focus {
66 | color: @pagination-disabled-color;
67 | background-color: @pagination-bg;
68 | border-color: @pagination-border;
69 | cursor: not-allowed;
70 | }
71 | }
72 | }
73 |
74 | // Sizing
75 | // --------------------------------------------------
76 |
77 | // Large
78 | .pagination-lg {
79 | .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @border-radius-large);
80 | }
81 |
82 | // Small
83 | .pagination-sm {
84 | .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @border-radius-small);
85 | }
86 |
--------------------------------------------------------------------------------
/less/panels.less:
--------------------------------------------------------------------------------
1 | //
2 | // Panels
3 | // --------------------------------------------------
4 |
5 |
6 | // Base class
7 | .panel {
8 | margin-bottom: @line-height-computed;
9 | background-color: @panel-bg;
10 | border: 1px solid transparent;
11 | border-radius: @panel-border-radius;
12 | .box-shadow(0 1px 1px rgba(0,0,0,.05));
13 | }
14 |
15 | // Panel contents
16 | .panel-body {
17 | padding: 15px;
18 | .clearfix();
19 | }
20 |
21 |
22 | // List groups in panels
23 | //
24 | // By default, space out list group content from panel headings to account for
25 | // any kind of custom content between the two.
26 |
27 | .panel {
28 | > .list-group {
29 | margin-bottom: 0;
30 |
31 | .list-group-item {
32 | border-width: 1px 0;
33 |
34 | // Remove border radius for top one
35 | &:first-child {
36 | .border-top-radius(0);
37 | }
38 | // But keep it for the last one
39 | &:last-child {
40 | border-bottom: 0;
41 | }
42 | }
43 | }
44 | }
45 | // Collapse space between when there's no additional content.
46 | .panel-heading + .list-group {
47 | .list-group-item:first-child {
48 | border-top-width: 0;
49 | }
50 | }
51 |
52 |
53 | // Tables in panels
54 | //
55 | // Place a non-bordered `.table` within a panel (not within a `.panel-body`) and
56 | // watch it go full width.
57 |
58 | .panel {
59 | > .table,
60 | > .table-responsive {
61 | margin-bottom: 0;
62 | }
63 | > .panel-body + .table,
64 | > .panel-body + .table-responsive {
65 | border-top: 1px solid @table-border-color;
66 | }
67 | > .table-bordered,
68 | > .table-responsive > .table-bordered {
69 | border: 0;
70 | > thead,
71 | > tbody,
72 | > tfoot {
73 | > tr {
74 | > th:first-child,
75 | > td:first-child {
76 | border-left: 0;
77 | }
78 | > th:last-child,
79 | > td:last-child {
80 | border-right: 0;
81 | }
82 |
83 | &:last-child > th,
84 | &:last-child > td {
85 | border-bottom: 0;
86 | }
87 | }
88 | }
89 | }
90 | }
91 |
92 |
93 | // Optional heading
94 | .panel-heading {
95 | padding: 10px 15px;
96 | border-bottom: 1px solid transparent;
97 | .border-top-radius(@panel-border-radius - 1);
98 |
99 | & > .dropdown .dropdown-toggle {
100 | color: inherit;
101 | }
102 | }
103 |
104 | // Within heading, strip any `h*` tag of it's default margins for spacing.
105 | .panel-title {
106 | margin-top: 0;
107 | margin-bottom: 0;
108 | font-size: ceil((@font-size-base * 1.125));
109 | > a {
110 | color: inherit;
111 | }
112 | }
113 |
114 | // Optional footer (stays gray in every modifier class)
115 | .panel-footer {
116 | padding: 10px 15px;
117 | background-color: @panel-footer-bg;
118 | border-top: 1px solid @panel-inner-border;
119 | .border-bottom-radius(@panel-border-radius - 1);
120 | }
121 |
122 |
123 | // Collapsable panels (aka, accordion)
124 | //
125 | // Wrap a series of panels in `.panel-group` to turn them into an accordion with
126 | // the help of our collapse JavaScript plugin.
127 |
128 | .panel-group {
129 | // Tighten up margin so it's only between panels
130 | .panel {
131 | margin-bottom: 0;
132 | border-radius: @panel-border-radius;
133 | overflow: hidden; // crop contents when collapsed
134 | + .panel {
135 | margin-top: 5px;
136 | }
137 | }
138 |
139 | .panel-heading {
140 | border-bottom: 0;
141 | + .panel-collapse .panel-body {
142 | border-top: 1px solid @panel-inner-border;
143 | }
144 | }
145 | .panel-footer {
146 | border-top: 0;
147 | + .panel-collapse .panel-body {
148 | border-bottom: 1px solid @panel-inner-border;
149 | }
150 | }
151 | }
152 |
153 |
154 | // Contextual variations
155 | .panel-default {
156 | .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border);
157 | }
158 | .panel-primary {
159 | .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border);
160 | }
161 | .panel-success {
162 | .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border);
163 | }
164 | .panel-warning {
165 | .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border);
166 | }
167 | .panel-danger {
168 | .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border);
169 | }
170 | .panel-info {
171 | .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border);
172 | }
173 |
--------------------------------------------------------------------------------
/less/popovers.less:
--------------------------------------------------------------------------------
1 | //
2 | // Popovers
3 | // --------------------------------------------------
4 |
5 |
6 | .popover {
7 | position: absolute;
8 | top: 0;
9 | left: 0;
10 | z-index: @zindex-popover;
11 | display: none;
12 | max-width: @popover-max-width;
13 | padding: 1px;
14 | text-align: left; // Reset given new insertion method
15 | background-color: @popover-bg;
16 | background-clip: padding-box;
17 | border: 1px solid @popover-fallback-border-color;
18 | border: 1px solid @popover-border-color;
19 | border-radius: @border-radius-large;
20 | .box-shadow(0 5px 10px rgba(0,0,0,.2));
21 |
22 | // Overrides for proper insertion
23 | white-space: normal;
24 |
25 | // Offset the popover to account for the popover arrow
26 | &.top { margin-top: -10px; }
27 | &.right { margin-left: 10px; }
28 | &.bottom { margin-top: 10px; }
29 | &.left { margin-left: -10px; }
30 | }
31 |
32 | .popover-title {
33 | margin: 0; // reset heading margin
34 | padding: 8px 14px;
35 | font-size: @font-size-base;
36 | font-weight: normal;
37 | line-height: 18px;
38 | background-color: @popover-title-bg;
39 | border-bottom: 1px solid darken(@popover-title-bg, 5%);
40 | border-radius: 5px 5px 0 0;
41 | }
42 |
43 | .popover-content {
44 | padding: 9px 14px;
45 | }
46 |
47 | // Arrows
48 | //
49 | // .arrow is outer, .arrow:after is inner
50 |
51 | .popover .arrow {
52 | &,
53 | &:after {
54 | position: absolute;
55 | display: block;
56 | width: 0;
57 | height: 0;
58 | border-color: transparent;
59 | border-style: solid;
60 | }
61 | }
62 | .popover .arrow {
63 | border-width: @popover-arrow-outer-width;
64 | }
65 | .popover .arrow:after {
66 | border-width: @popover-arrow-width;
67 | content: "";
68 | }
69 |
70 | .popover {
71 | &.top .arrow {
72 | left: 50%;
73 | margin-left: -@popover-arrow-outer-width;
74 | border-bottom-width: 0;
75 | border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback
76 | border-top-color: @popover-arrow-outer-color;
77 | bottom: -@popover-arrow-outer-width;
78 | &:after {
79 | content: " ";
80 | bottom: 1px;
81 | margin-left: -@popover-arrow-width;
82 | border-bottom-width: 0;
83 | border-top-color: @popover-arrow-color;
84 | }
85 | }
86 | &.right .arrow {
87 | top: 50%;
88 | left: -@popover-arrow-outer-width;
89 | margin-top: -@popover-arrow-outer-width;
90 | border-left-width: 0;
91 | border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback
92 | border-right-color: @popover-arrow-outer-color;
93 | &:after {
94 | content: " ";
95 | left: 1px;
96 | bottom: -@popover-arrow-width;
97 | border-left-width: 0;
98 | border-right-color: @popover-arrow-color;
99 | }
100 | }
101 | &.bottom .arrow {
102 | left: 50%;
103 | margin-left: -@popover-arrow-outer-width;
104 | border-top-width: 0;
105 | border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback
106 | border-bottom-color: @popover-arrow-outer-color;
107 | top: -@popover-arrow-outer-width;
108 | &:after {
109 | content: " ";
110 | top: 1px;
111 | margin-left: -@popover-arrow-width;
112 | border-top-width: 0;
113 | border-bottom-color: @popover-arrow-color;
114 | }
115 | }
116 |
117 | &.left .arrow {
118 | top: 50%;
119 | right: -@popover-arrow-outer-width;
120 | margin-top: -@popover-arrow-outer-width;
121 | border-right-width: 0;
122 | border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback
123 | border-left-color: @popover-arrow-outer-color;
124 | &:after {
125 | content: " ";
126 | right: 1px;
127 | border-right-width: 0;
128 | border-left-color: @popover-arrow-color;
129 | bottom: -@popover-arrow-width;
130 | }
131 | }
132 |
133 | }
134 |
--------------------------------------------------------------------------------
/less/print.less:
--------------------------------------------------------------------------------
1 | //
2 | // Basic print styles
3 | // --------------------------------------------------
4 | // Source: https://github.com/h5bp/html5-boilerplate/blob/master/css/main.css
5 |
6 | @media print {
7 |
8 | * {
9 | text-shadow: none !important;
10 | color: #000 !important; // Black prints faster: h5bp.com/s
11 | background: transparent !important;
12 | box-shadow: none !important;
13 | }
14 |
15 | a,
16 | a:visited {
17 | text-decoration: underline;
18 | }
19 |
20 | a[href]:after {
21 | content: " (" attr(href) ")";
22 | }
23 |
24 | abbr[title]:after {
25 | content: " (" attr(title) ")";
26 | }
27 |
28 | // Don't show links for images, or javascript/internal links
29 | a[href^="javascript:"]:after,
30 | a[href^="#"]:after {
31 | content: "";
32 | }
33 |
34 | pre,
35 | blockquote {
36 | border: 1px solid #999;
37 | page-break-inside: avoid;
38 | }
39 |
40 | thead {
41 | display: table-header-group; // h5bp.com/t
42 | }
43 |
44 | tr,
45 | img {
46 | page-break-inside: avoid;
47 | }
48 |
49 | img {
50 | max-width: 100% !important;
51 | }
52 |
53 | @page {
54 | margin: 2cm .5cm;
55 | }
56 |
57 | p,
58 | h2,
59 | h3 {
60 | orphans: 3;
61 | widows: 3;
62 | }
63 |
64 | h2,
65 | h3 {
66 | page-break-after: avoid;
67 | }
68 |
69 | // Chrome (OSX) fix for https://github.com/twbs/bootstrap/issues/11245
70 | // Once fixed, we can just straight up remove this.
71 | select {
72 | background: #fff !important;
73 | }
74 |
75 | // Bootstrap components
76 | .navbar {
77 | display: none;
78 | }
79 | .table {
80 | td,
81 | th {
82 | background-color: #fff !important;
83 | }
84 | }
85 | .btn,
86 | .dropup > .btn {
87 | > .caret {
88 | border-top-color: #000 !important;
89 | }
90 | }
91 | .label {
92 | border: 1px solid #000;
93 | }
94 |
95 | .table {
96 | border-collapse: collapse !important;
97 | }
98 | .table-bordered {
99 | th,
100 | td {
101 | border: 1px solid #ddd !important;
102 | }
103 | }
104 |
105 | }
106 |
--------------------------------------------------------------------------------
/less/progress-bars.less:
--------------------------------------------------------------------------------
1 | //
2 | // Progress bars
3 | // --------------------------------------------------
4 |
5 |
6 | // Bar animations
7 | // -------------------------
8 |
9 | // WebKit
10 | @-webkit-keyframes progress-bar-stripes {
11 | from { background-position: 40px 0; }
12 | to { background-position: 0 0; }
13 | }
14 |
15 | // Firefox
16 | @-moz-keyframes progress-bar-stripes {
17 | from { background-position: 40px 0; }
18 | to { background-position: 0 0; }
19 | }
20 |
21 | // Opera
22 | @-o-keyframes progress-bar-stripes {
23 | from { background-position: 0 0; }
24 | to { background-position: 40px 0; }
25 | }
26 |
27 | // Spec and IE10+
28 | @keyframes progress-bar-stripes {
29 | from { background-position: 40px 0; }
30 | to { background-position: 0 0; }
31 | }
32 |
33 |
34 |
35 | // Bar itself
36 | // -------------------------
37 |
38 | // Outer container
39 | .progress {
40 | overflow: hidden;
41 | height: @line-height-computed;
42 | margin-bottom: @line-height-computed;
43 | background-color: @progress-bg;
44 | border-radius: @border-radius-base;
45 | .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));
46 | }
47 |
48 | // Bar of progress
49 | .progress-bar {
50 | float: left;
51 | width: 0%;
52 | height: 100%;
53 | font-size: @font-size-small;
54 | line-height: @line-height-computed;
55 | color: @progress-bar-color;
56 | text-align: center;
57 | background-color: @progress-bar-bg;
58 | .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));
59 | .transition(width .6s ease);
60 | }
61 |
62 | // Striped bars
63 | .progress-striped .progress-bar {
64 | #gradient > .striped();
65 | background-size: 40px 40px;
66 | }
67 |
68 | // Call animation for the active one
69 | .progress.active .progress-bar {
70 | .animation(progress-bar-stripes 2s linear infinite);
71 | }
72 |
73 |
74 |
75 | // Variations
76 | // -------------------------
77 |
78 | .progress-bar-success {
79 | .progress-bar-variant(@progress-bar-success-bg);
80 | }
81 |
82 | .progress-bar-info {
83 | .progress-bar-variant(@progress-bar-info-bg);
84 | }
85 |
86 | .progress-bar-warning {
87 | .progress-bar-variant(@progress-bar-warning-bg);
88 | }
89 |
90 | .progress-bar-danger {
91 | .progress-bar-variant(@progress-bar-danger-bg);
92 | }
93 |
--------------------------------------------------------------------------------
/less/responsive-utilities.less:
--------------------------------------------------------------------------------
1 | //
2 | // Responsive: Utility classes
3 | // --------------------------------------------------
4 |
5 |
6 | // IE10 in Windows (Phone) 8
7 | //
8 | // Support for responsive views via media queries is kind of borked in IE10, for
9 | // Surface/desktop in split view and for Windows Phone 8. This particular fix
10 | // must be accompanied by a snippet of JavaScript to sniff the user agent and
11 | // apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at
12 | // our Getting Started page for more information on this bug.
13 | //
14 | // For more information, see the following:
15 | //
16 | // Issue: https://github.com/twbs/bootstrap/issues/10497
17 | // Docs: http://getbootstrap.com/getting-started/#browsers
18 | // Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/
19 |
20 | @-ms-viewport {
21 | width: device-width;
22 | }
23 |
24 |
25 | // Visibility utilities
26 |
27 | .visible-xs {
28 | .responsive-invisibility();
29 | @media (max-width: @screen-xs-max) {
30 | .responsive-visibility();
31 | }
32 | &.visible-sm {
33 | @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
34 | .responsive-visibility();
35 | }
36 | }
37 | &.visible-md {
38 | @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
39 | .responsive-visibility();
40 | }
41 | }
42 | &.visible-lg {
43 | @media (min-width: @screen-lg-min) {
44 | .responsive-visibility();
45 | }
46 | }
47 | }
48 | .visible-sm {
49 | .responsive-invisibility();
50 | &.visible-xs {
51 | @media (max-width: @screen-xs-max) {
52 | .responsive-visibility();
53 | }
54 | }
55 | @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
56 | .responsive-visibility();
57 | }
58 | &.visible-md {
59 | @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
60 | .responsive-visibility();
61 | }
62 | }
63 | &.visible-lg {
64 | @media (min-width: @screen-lg-min) {
65 | .responsive-visibility();
66 | }
67 | }
68 | }
69 | .visible-md {
70 | .responsive-invisibility();
71 | &.visible-xs {
72 | @media (max-width: @screen-xs-max) {
73 | .responsive-visibility();
74 | }
75 | }
76 | &.visible-sm {
77 | @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
78 | .responsive-visibility();
79 | }
80 | }
81 | @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
82 | .responsive-visibility();
83 | }
84 | &.visible-lg {
85 | @media (min-width: @screen-lg-min) {
86 | .responsive-visibility();
87 | }
88 | }
89 | }
90 | .visible-lg {
91 | .responsive-invisibility();
92 | &.visible-xs {
93 | @media (max-width: @screen-xs-max) {
94 | .responsive-visibility();
95 | }
96 | }
97 | &.visible-sm {
98 | @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
99 | .responsive-visibility();
100 | }
101 | }
102 | &.visible-md {
103 | @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
104 | .responsive-visibility();
105 | }
106 | }
107 | @media (min-width: @screen-lg-min) {
108 | .responsive-visibility();
109 | }
110 | }
111 |
112 | .hidden-xs {
113 | .responsive-visibility();
114 | @media (max-width: @screen-xs-max) {
115 | .responsive-invisibility();
116 | }
117 | &.hidden-sm {
118 | @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
119 | .responsive-invisibility();
120 | }
121 | }
122 | &.hidden-md {
123 | @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
124 | .responsive-invisibility();
125 | }
126 | }
127 | &.hidden-lg {
128 | @media (min-width: @screen-lg-min) {
129 | .responsive-invisibility();
130 | }
131 | }
132 | }
133 | .hidden-sm {
134 | .responsive-visibility();
135 | &.hidden-xs {
136 | @media (max-width: @screen-xs-max) {
137 | .responsive-invisibility();
138 | }
139 | }
140 | @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
141 | .responsive-invisibility();
142 | }
143 | &.hidden-md {
144 | @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
145 | .responsive-invisibility();
146 | }
147 | }
148 | &.hidden-lg {
149 | @media (min-width: @screen-lg-min) {
150 | .responsive-invisibility();
151 | }
152 | }
153 | }
154 | .hidden-md {
155 | .responsive-visibility();
156 | &.hidden-xs {
157 | @media (max-width: @screen-xs-max) {
158 | .responsive-invisibility();
159 | }
160 | }
161 | &.hidden-sm {
162 | @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
163 | .responsive-invisibility();
164 | }
165 | }
166 | @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
167 | .responsive-invisibility();
168 | }
169 | &.hidden-lg {
170 | @media (min-width: @screen-lg-min) {
171 | .responsive-invisibility();
172 | }
173 | }
174 | }
175 | .hidden-lg {
176 | .responsive-visibility();
177 | &.hidden-xs {
178 | @media (max-width: @screen-xs-max) {
179 | .responsive-invisibility();
180 | }
181 | }
182 | &.hidden-sm {
183 | @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
184 | .responsive-invisibility();
185 | }
186 | }
187 | &.hidden-md {
188 | @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
189 | .responsive-invisibility();
190 | }
191 | }
192 | @media (min-width: @screen-lg-min) {
193 | .responsive-invisibility();
194 | }
195 | }
196 |
197 | // Print utilities
198 | .visible-print {
199 | .responsive-invisibility();
200 | }
201 |
202 | @media print {
203 | .visible-print {
204 | .responsive-visibility();
205 | }
206 | .hidden-print {
207 | .responsive-invisibility();
208 | }
209 | }
210 |
--------------------------------------------------------------------------------
/less/scaffolding.less:
--------------------------------------------------------------------------------
1 | //
2 | // Scaffolding
3 | // --------------------------------------------------
4 |
5 |
6 | // Reset the box-sizing
7 |
8 | *,
9 | *:before,
10 | *:after {
11 | .box-sizing(border-box);
12 | }
13 |
14 |
15 | // Body reset
16 |
17 | html {
18 | font-size: 62.5%;
19 | -webkit-tap-highlight-color: rgba(0,0,0,0);
20 | }
21 |
22 | body {
23 | font-family: @font-family-base;
24 | font-size: @font-size-base;
25 | line-height: @line-height-base;
26 | color: @text-color;
27 | background-color: @body-bg;
28 | }
29 |
30 | // Reset fonts for relevant elements
31 | input,
32 | button,
33 | select,
34 | textarea {
35 | font-family: inherit;
36 | font-size: inherit;
37 | line-height: inherit;
38 | }
39 |
40 |
41 | // Links
42 |
43 | a {
44 | color: @link-color;
45 | text-decoration: none;
46 |
47 | &:hover,
48 | &:focus {
49 | color: @link-hover-color;
50 | text-decoration: underline;
51 | }
52 |
53 | &:focus {
54 | .tab-focus();
55 | }
56 | }
57 |
58 |
59 | // Images
60 |
61 | img {
62 | vertical-align: middle;
63 | }
64 |
65 | // Responsive images (ensure images don't scale beyond their parents)
66 | .img-responsive {
67 | .img-responsive();
68 | }
69 |
70 | // Rounded corners
71 | .img-rounded {
72 | border-radius: @border-radius-large;
73 | }
74 |
75 | // Image thumbnails
76 | //
77 | // Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.
78 | .img-thumbnail {
79 | padding: @thumbnail-padding;
80 | line-height: @line-height-base;
81 | background-color: @thumbnail-bg;
82 | border: 1px solid @thumbnail-border;
83 | border-radius: @thumbnail-border-radius;
84 | .transition(all .2s ease-in-out);
85 |
86 | // Keep them at most 100% wide
87 | .img-responsive(inline-block);
88 | }
89 |
90 | // Perfect circle
91 | .img-circle {
92 | border-radius: 50%; // set radius in percents
93 | }
94 |
95 |
96 | // Horizontal rules
97 |
98 | hr {
99 | margin-top: @line-height-computed;
100 | margin-bottom: @line-height-computed;
101 | border: 0;
102 | border-top: 1px solid @hr-border;
103 | }
104 |
105 |
106 | // Only display content to screen readers
107 | //
108 | // See: http://a11yproject.com/posts/how-to-hide-content/
109 |
110 | .sr-only {
111 | position: absolute;
112 | width: 1px;
113 | height: 1px;
114 | margin: -1px;
115 | padding: 0;
116 | overflow: hidden;
117 | clip: rect(0,0,0,0);
118 | border: 0;
119 | }
120 |
--------------------------------------------------------------------------------
/less/tables.less:
--------------------------------------------------------------------------------
1 | //
2 | // Tables
3 | // --------------------------------------------------
4 |
5 |
6 | table {
7 | max-width: 100%;
8 | background-color: @table-bg;
9 | }
10 | th {
11 | text-align: left;
12 | }
13 |
14 |
15 | // Baseline styles
16 |
17 | .table {
18 | width: 100%;
19 | margin-bottom: @line-height-computed;
20 | // Cells
21 | > thead,
22 | > tbody,
23 | > tfoot {
24 | > tr {
25 | > th,
26 | > td {
27 | padding: @table-cell-padding;
28 | line-height: @line-height-base;
29 | vertical-align: top;
30 | border-top: 1px solid @table-border-color;
31 | }
32 | }
33 | }
34 | // Bottom align for column headings
35 | > thead > tr > th {
36 | vertical-align: bottom;
37 | border-bottom: 2px solid @table-border-color;
38 | }
39 | // Remove top border from thead by default
40 | > caption + thead,
41 | > colgroup + thead,
42 | > thead:first-child {
43 | > tr:first-child {
44 | > th,
45 | > td {
46 | border-top: 0;
47 | }
48 | }
49 | }
50 | // Account for multiple tbody instances
51 | > tbody + tbody {
52 | border-top: 2px solid @table-border-color;
53 | }
54 |
55 | // Nesting
56 | .table {
57 | background-color: @body-bg;
58 | }
59 | }
60 |
61 |
62 | // Condensed table w/ half padding
63 |
64 | .table-condensed {
65 | > thead,
66 | > tbody,
67 | > tfoot {
68 | > tr {
69 | > th,
70 | > td {
71 | padding: @table-condensed-cell-padding;
72 | }
73 | }
74 | }
75 | }
76 |
77 |
78 | // Bordered version
79 | //
80 | // Add borders all around the table and between all the columns.
81 |
82 | .table-bordered {
83 | border: 1px solid @table-border-color;
84 | > thead,
85 | > tbody,
86 | > tfoot {
87 | > tr {
88 | > th,
89 | > td {
90 | border: 1px solid @table-border-color;
91 | }
92 | }
93 | }
94 | > thead > tr {
95 | > th,
96 | > td {
97 | border-bottom-width: 2px;
98 | }
99 | }
100 | }
101 |
102 |
103 | // Zebra-striping
104 | //
105 | // Default zebra-stripe styles (alternating gray and transparent backgrounds)
106 |
107 | .table-striped > tbody > tr:nth-child(odd) {
108 | > td,
109 | > th {
110 | background-color: @table-bg-accent;
111 | }
112 | }
113 |
114 |
115 | // Hover effect
116 | //
117 | // Placed here since it has to come after the potential zebra striping
118 |
119 | .table-hover > tbody > tr:hover {
120 | > td,
121 | > th {
122 | background-color: @table-bg-hover;
123 | }
124 | }
125 |
126 |
127 | // Table cell sizing
128 | //
129 | // Reset default table behavior
130 |
131 | table col[class*="col-"] {
132 | float: none;
133 | display: table-column;
134 | }
135 | table {
136 | td,
137 | th {
138 | &[class*="col-"] {
139 | float: none;
140 | display: table-cell;
141 | }
142 | }
143 | }
144 |
145 |
146 | // Table backgrounds
147 | //
148 | // Exact selectors below required to override `.table-striped` and prevent
149 | // inheritance to nested tables.
150 |
151 | .table > thead > tr,
152 | .table > tbody > tr,
153 | .table > tfoot > tr {
154 | > td.active,
155 | > th.active,
156 | &.active > td,
157 | &.active > th {
158 | background-color: @table-bg-active;
159 | }
160 | }
161 |
162 | // Generate the contextual variants
163 | .table-row-variant(success; @state-success-bg; @state-success-border);
164 | .table-row-variant(danger; @state-danger-bg; @state-danger-border);
165 | .table-row-variant(warning; @state-warning-bg; @state-warning-border);
166 |
167 |
168 | // Responsive tables
169 | //
170 | // Wrap your tables in `.table-responsive` and we'll make them mobile friendly
171 | // by enabling horizontal scrolling. Only applies <768px. Everything above that
172 | // will display normally.
173 |
174 | @media (max-width: @screen-xs-max) {
175 | .table-responsive {
176 | width: 100%;
177 | margin-bottom: (@line-height-computed * 0.75);
178 | overflow-y: hidden;
179 | overflow-x: scroll;
180 | -ms-overflow-style: -ms-autohiding-scrollbar;
181 | border: 1px solid @table-border-color;
182 | -webkit-overflow-scrolling: touch;
183 |
184 | // Tighten up spacing
185 | > .table {
186 | margin-bottom: 0;
187 |
188 | // Ensure the content doesn't wrap
189 | > thead,
190 | > tbody,
191 | > tfoot {
192 | > tr {
193 | > th,
194 | > td {
195 | white-space: nowrap;
196 | }
197 | }
198 | }
199 | }
200 |
201 | // Special overrides for the bordered tables
202 | > .table-bordered {
203 | border: 0;
204 |
205 | // Nuke the appropriate borders so that the parent can handle them
206 | > thead,
207 | > tbody,
208 | > tfoot {
209 | > tr {
210 | > th:first-child,
211 | > td:first-child {
212 | border-left: 0;
213 | }
214 | > th:last-child,
215 | > td:last-child {
216 | border-right: 0;
217 | }
218 | }
219 | }
220 |
221 | // Only nuke the last row's bottom-border in `tbody` and `tfoot` since
222 | // chances are there will be only one `tr` in a `thead` and that would
223 | // remove the border altogether.
224 | > tbody,
225 | > tfoot {
226 | > tr:last-child {
227 | > th,
228 | > td {
229 | border-bottom: 0;
230 | }
231 | }
232 | }
233 |
234 | }
235 | }
236 | }
237 |
--------------------------------------------------------------------------------
/less/thumbnails.less:
--------------------------------------------------------------------------------
1 | //
2 | // Thumbnails
3 | // --------------------------------------------------
4 |
5 |
6 | // Mixin and adjust the regular image class
7 | .thumbnail {
8 | .img-thumbnail();
9 | display: block; // Override the inline-block from `.img-thumbnail`
10 | margin-bottom: @line-height-computed;
11 |
12 | > img {
13 | .img-responsive();
14 | margin-left: auto;
15 | margin-right: auto;
16 | }
17 | }
18 |
19 |
20 | // Add a hover state for linked versions only
21 | a.thumbnail:hover,
22 | a.thumbnail:focus,
23 | a.thumbnail.active {
24 | border-color: @link-color;
25 | }
26 |
27 | // Image captions
28 | .thumbnail .caption {
29 | padding: @thumbnail-caption-padding;
30 | color: @thumbnail-caption-color;
31 | }
32 |
--------------------------------------------------------------------------------
/less/tooltip.less:
--------------------------------------------------------------------------------
1 | //
2 | // Tooltips
3 | // --------------------------------------------------
4 |
5 |
6 | // Base class
7 | .tooltip {
8 | position: absolute;
9 | z-index: @zindex-tooltip;
10 | display: block;
11 | visibility: visible;
12 | font-size: @font-size-small;
13 | line-height: 1.4;
14 | .opacity(0);
15 |
16 | &.in { .opacity(.9); }
17 | &.top { margin-top: -3px; padding: @tooltip-arrow-width 0; }
18 | &.right { margin-left: 3px; padding: 0 @tooltip-arrow-width; }
19 | &.bottom { margin-top: 3px; padding: @tooltip-arrow-width 0; }
20 | &.left { margin-left: -3px; padding: 0 @tooltip-arrow-width; }
21 | }
22 |
23 | // Wrapper for the tooltip content
24 | .tooltip-inner {
25 | max-width: @tooltip-max-width;
26 | padding: 3px 8px;
27 | color: @tooltip-color;
28 | text-align: center;
29 | text-decoration: none;
30 | background-color: @tooltip-bg;
31 | border-radius: @border-radius-base;
32 | }
33 |
34 | // Arrows
35 | .tooltip-arrow {
36 | position: absolute;
37 | width: 0;
38 | height: 0;
39 | border-color: transparent;
40 | border-style: solid;
41 | }
42 | .tooltip {
43 | &.top .tooltip-arrow {
44 | bottom: 0;
45 | left: 50%;
46 | margin-left: -@tooltip-arrow-width;
47 | border-width: @tooltip-arrow-width @tooltip-arrow-width 0;
48 | border-top-color: @tooltip-arrow-color;
49 | }
50 | &.top-left .tooltip-arrow {
51 | bottom: 0;
52 | left: @tooltip-arrow-width;
53 | border-width: @tooltip-arrow-width @tooltip-arrow-width 0;
54 | border-top-color: @tooltip-arrow-color;
55 | }
56 | &.top-right .tooltip-arrow {
57 | bottom: 0;
58 | right: @tooltip-arrow-width;
59 | border-width: @tooltip-arrow-width @tooltip-arrow-width 0;
60 | border-top-color: @tooltip-arrow-color;
61 | }
62 | &.right .tooltip-arrow {
63 | top: 50%;
64 | left: 0;
65 | margin-top: -@tooltip-arrow-width;
66 | border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;
67 | border-right-color: @tooltip-arrow-color;
68 | }
69 | &.left .tooltip-arrow {
70 | top: 50%;
71 | right: 0;
72 | margin-top: -@tooltip-arrow-width;
73 | border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;
74 | border-left-color: @tooltip-arrow-color;
75 | }
76 | &.bottom .tooltip-arrow {
77 | top: 0;
78 | left: 50%;
79 | margin-left: -@tooltip-arrow-width;
80 | border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;
81 | border-bottom-color: @tooltip-arrow-color;
82 | }
83 | &.bottom-left .tooltip-arrow {
84 | top: 0;
85 | left: @tooltip-arrow-width;
86 | border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;
87 | border-bottom-color: @tooltip-arrow-color;
88 | }
89 | &.bottom-right .tooltip-arrow {
90 | top: 0;
91 | right: @tooltip-arrow-width;
92 | border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;
93 | border-bottom-color: @tooltip-arrow-color;
94 | }
95 | }
96 |
--------------------------------------------------------------------------------
/less/utilities.less:
--------------------------------------------------------------------------------
1 | //
2 | // Utility classes
3 | // --------------------------------------------------
4 |
5 |
6 | // Floats
7 | // -------------------------
8 |
9 | .clearfix {
10 | .clearfix();
11 | }
12 | .center-block {
13 | .center-block();
14 | }
15 | .pull-right {
16 | float: right !important;
17 | }
18 | .pull-left {
19 | float: left !important;
20 | }
21 |
22 |
23 | // Toggling content
24 | // -------------------------
25 |
26 | // Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1
27 | .hide {
28 | display: none !important;
29 | }
30 | .show {
31 | display: block !important;
32 | }
33 | .invisible {
34 | visibility: hidden;
35 | }
36 | .text-hide {
37 | .text-hide();
38 | }
39 |
40 |
41 | // Hide from screenreaders and browsers
42 | //
43 | // Credit: HTML5 Boilerplate
44 |
45 | .hidden {
46 | display: none !important;
47 | visibility: hidden !important;
48 | }
49 |
50 |
51 | // For Affix plugin
52 | // -------------------------
53 |
54 | .affix {
55 | position: fixed;
56 | }
57 |
--------------------------------------------------------------------------------
/less/wells.less:
--------------------------------------------------------------------------------
1 | //
2 | // Wells
3 | // --------------------------------------------------
4 |
5 |
6 | // Base class
7 | .well {
8 | min-height: 20px;
9 | padding: 19px;
10 | margin-bottom: 20px;
11 | background-color: @well-bg;
12 | border: 1px solid darken(@well-bg, 7%);
13 | border-radius: @border-radius-base;
14 | .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));
15 | blockquote {
16 | border-color: #ddd;
17 | border-color: rgba(0,0,0,.15);
18 | }
19 | }
20 |
21 | // Sizes
22 | .well-lg {
23 | padding: 24px;
24 | border-radius: @border-radius-large;
25 | }
26 | .well-sm {
27 | padding: 9px;
28 | border-radius: @border-radius-small;
29 | }
30 |
--------------------------------------------------------------------------------
/login.php:
--------------------------------------------------------------------------------
1 | 0 && strlen($sess_port)>0 && strlen($sess_user)>0 && strlen($sess_pass)>0 && strlen($sess_token)>0 && strlen($sess_csrf)==64)
14 | {
15 | $allow = 1;
16 | }
17 | }
18 | if($allow==1)
19 | {
20 | header("Location: dashboard.php");
21 | }
22 |
23 | require_once("includes/functions.php");
24 |
25 | $status = "";
26 | if(isset($_POST["empire_ip"]) && isset($_POST["empire_port"]) && isset($_POST["empire_user"]) && isset($_POST["empire_pass"]))
27 | {
28 | $empire_ip = urldecode($_POST["empire_ip"]);
29 | $empire_port = urldecode($_POST["empire_port"]);
30 | $empire_user = urldecode($_POST["empire_user"]);
31 | $empire_pass = urldecode($_POST["empire_pass"]);
32 | if(strlen($empire_ip)>0 && strlen($empire_port)>0 && strlen($empire_user)>0 && strlen($empire_pass)>0)
33 | {
34 | $arr_result = authenticate_empire($empire_ip, $empire_port, $empire_user, $empire_pass);
35 | if(array_key_exists("token", $arr_result))
36 | {
37 | $empire_session_token = $arr_result["token"];
38 | $status = "
Login success. $empire_session_token
";
39 | @session_destroy();
40 | session_start();
41 | session_regenerate_id();
42 | //Create session values
43 | $_SESSION['empire_ip'] = $empire_ip;
44 | $_SESSION['empire_port'] = $empire_port;
45 | $_SESSION['empire_user'] = $empire_user;
46 | $_SESSION['empire_pass'] = $empire_pass;
47 | $_SESSION['empire_session_token'] = $empire_session_token;
48 | //For anti-csrf
49 | $_SESSION['csrf_token'] = substr("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",mt_rand(0,50),1).substr(hash("sha256",time().rand().rand()), 1);
50 | header("Location: dashboard.php");
51 | }
52 | else
53 | {
54 | $status = "
Failed login attempt.
";
55 | }
56 | }
57 | }
58 | ?>
59 |
60 |
61 |
62 |
63 |
EmPyre Web Login
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
98 | 0){ echo $status; } ?>
99 |
100 |
101 |
102 |
103 |
104 |
105 |
--------------------------------------------------------------------------------
/logout.php:
--------------------------------------------------------------------------------
1 |
13 |
14 |
15 |
16 |
EmPyre Web Logged Out
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 | You have been logged out.
'; ?>
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/remove-agent.php:
--------------------------------------------------------------------------------
1 | 0)
10 | {
11 | $remove_agent = html_entity_decode(urldecode($_POST['remove_agent']));
12 | $arr_result = remove_agent($sess_ip, $sess_port, $sess_token, $remove_agent);
13 | if(!empty($arr_result))
14 | {
15 | if(array_key_exists("success",$arr_result))
16 | {
17 | $resp = $arr_result["success"];
18 | if($resp)
19 | $empire_remove_agent = "