├── .profile ├── LICENSE ├── README.md ├── _config.yml ├── admin.php ├── css ├── editor.min.css ├── font-awesome │ ├── css │ │ ├── font-awesome.css │ │ └── font-awesome.min.css │ ├── fonts │ │ ├── FontAwesome.otf │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.svg │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ └── fontawesome-webfont.woff2 │ ├── less │ │ ├── animated.less │ │ ├── bordered-pulled.less │ │ ├── core.less │ │ ├── fixed-width.less │ │ ├── font-awesome.less │ │ ├── icons.less │ │ ├── larger.less │ │ ├── list.less │ │ ├── mixins.less │ │ ├── path.less │ │ ├── rotated-flipped.less │ │ ├── screen-reader.less │ │ ├── stacked.less │ │ └── variables.less │ └── scss │ │ ├── _animated.scss │ │ ├── _bordered-pulled.scss │ │ ├── _core.scss │ │ ├── _fixed-width.scss │ │ ├── _icons.scss │ │ ├── _larger.scss │ │ ├── _list.scss │ │ ├── _mixins.scss │ │ ├── _path.scss │ │ ├── _rotated-flipped.scss │ │ ├── _screen-reader.scss │ │ ├── _stacked.scss │ │ ├── _variables.scss │ │ └── font-awesome.scss ├── index.php ├── mikhmon-ui.blue.min.css ├── mikhmon-ui.dark.min.css ├── mikhmon-ui.green.min.css ├── mikhmon-ui.light.min.css ├── mikhmon-ui.pink.min.css ├── pace.blue.css ├── pace.css ├── pace.dark.css ├── pace.green.css ├── pace.light.css └── pace.pink.css ├── dashboard ├── aload.php ├── home.php └── index.php ├── dhcp ├── dhcpleases.php └── index.php ├── docker-compose.yml ├── hotspot ├── adduser.php ├── adduserprofile.php ├── cookies.php ├── exportusers.php ├── generateuser.php ├── hosts.php ├── hotspotactive.php ├── index.php ├── ipbinding.php ├── listquickprint.php ├── log.php ├── quickprint.php ├── quickuser.php ├── userbyname.php ├── userbyprofile.php ├── userprofile.php ├── userprofilebyname.php └── users.php ├── img ├── favicon.png ├── index.php ├── logo-kemangi41.png └── logo.png ├── include ├── about.php ├── config.php ├── headhtml.php ├── index.php ├── lang.php ├── login.php ├── menu.php ├── quickbt.php ├── readcfg.php ├── theme.php ├── userlog.php └── version.php ├── index.php ├── js ├── editor.min.js ├── highcharts │ ├── highcharts.js │ └── themes │ │ ├── hc.blue.js │ │ ├── hc.dark.js │ │ ├── hc.green.js │ │ ├── hc.light.js │ │ └── hc.pink.js ├── index.php ├── jquery.min.js ├── mikhmon-ui.blue.min.js ├── mikhmon-ui.dark.min.js ├── mikhmon-ui.green.min.js ├── mikhmon-ui.light.min.js ├── mikhmon-ui.pink.min.js ├── mikhmon.js ├── pace.min.js └── qrious.min.js ├── lang ├── en.php ├── es.php ├── id.php ├── isocodelang.php ├── tl.php └── tr.php ├── lib ├── formatbytesbites.php ├── index.php └── routeros_api.class.php ├── nginx.conf ├── process ├── disablehotspotuser.php ├── enablehotspotuser.php ├── getvalidprice.php ├── index.php ├── pipbinding.php ├── pscheduler.php ├── reboot.php ├── removecookie.php ├── removeexpiredhotspotuser.php ├── removehost.php ├── removehotspotuser.php ├── removehotspotuserbycomment.php ├── removepactive.php ├── removereport.php ├── removeuseractive.php ├── removeuserprofile.php ├── resethotspotuser.php └── shutdown.php ├── report ├── index.php ├── livereport.php ├── print.php ├── resumereport.php ├── selling.php └── userlog.php ├── settings ├── index.php ├── sessions.php ├── setlang.php ├── settheme.php ├── settings.php ├── uplogo.php └── vouchereditor.php ├── status ├── index.php ├── ping-test.php └── status.php ├── system ├── index.php └── scheduler.php ├── traffic ├── index.php ├── traffic.php └── trafficmonitor.php ├── verson.txt └── voucher ├── default-small.php ├── default-thermal.php ├── default.php ├── index.php ├── print.php ├── printbt.php ├── temp.php ├── template-small.php ├── template-thermal.php ├── template.php ├── variable.php └── vpreview.php /.profile: -------------------------------------------------------------------------------- 1 | chmod -R 777 Storage 2 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | #Jekyll configuration 2 | url: "https://laksa19.github.io/mikhmonv3" 3 | title: Changelog Mikhmon V3 4 | highlighter: rouge 5 | -------------------------------------------------------------------------------- /admin.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | 22 | ob_start("ob_gzhandler"); 23 | 24 | // check url 25 | $url = $_SERVER['REQUEST_URI']; 26 | 27 | // load session MikroTik 28 | $session = $_GET['session']; 29 | $id = $_GET['id']; 30 | $c = $_GET['c']; 31 | $router = $_GET['router']; 32 | $logo = $_GET['logo']; 33 | 34 | $ids = array( 35 | "editor", 36 | "uplogo", 37 | "settings", 38 | ); 39 | 40 | // lang 41 | include('./lang/isocodelang.php'); 42 | include('./include/lang.php'); 43 | include('./lang/'.$langid.'.php'); 44 | 45 | // quick bt 46 | include('./include/quickbt.php'); 47 | 48 | // theme 49 | include('./include/theme.php'); 50 | include('./settings/settheme.php'); 51 | include('./settings/setlang.php'); 52 | if ($_SESSION['theme'] == "") { 53 | $theme = $theme; 54 | $themecolor = $themecolor; 55 | } else { 56 | $theme = $_SESSION['theme']; 57 | $themecolor = $_SESSION['themecolor']; 58 | } 59 | 60 | 61 | // load config 62 | include_once('./include/headhtml.php'); 63 | include('./include/config.php'); 64 | include('./include/readcfg.php'); 65 | 66 | include_once('./lib/routeros_api.class.php'); 67 | include_once('./lib/formatbytesbites.php'); 68 | ?> 69 | 70 | window.location='./admin.php?id=sessions'"; 80 | 81 | } else { 82 | $error = '
Alert!
Invalid username or password.
'; 83 | } 84 | } 85 | 86 | 87 | include_once('./include/login.php'); 88 | } elseif (!isset($_SESSION["mikhmon"])) { 89 | echo ""; 90 | } elseif (substr($url, -1) == "/" || substr($url, -4) == ".php") { 91 | echo ""; 92 | 93 | } elseif ($id == "sessions") { 94 | $_SESSION["connect"] = ""; 95 | include_once('./include/menu.php'); 96 | include_once('./settings/sessions.php'); 97 | /*echo ' 98 | ';*/ 105 | } elseif ($id == "settings" && !empty($session) || $id == "settings" && !empty($router)) { 106 | include_once('./include/menu.php'); 107 | include_once('./settings/settings.php'); 108 | echo ' 109 | '; 116 | } elseif ($id == "connect" && !empty($session)) { 117 | ini_set("max_execution_time",5); 118 | include_once('./include/menu.php'); 119 | $API = new RouterosAPI(); 120 | $API->debug = false; 121 | if ($API->connect($iphost, $userhost, decrypt($passwdhost))){ 122 | $_SESSION["connect"] = "Connected"; 123 | echo ""; 124 | } else { 125 | $_SESSION["connect"] = "Not Connected"; 126 | $nl = '\n'; 127 | if ($currency == in_array($currency, $cekindo['indo'])) { 128 | echo ""; 129 | }else{ 130 | echo ""; 131 | } 132 | if($c == "settings"){ 133 | echo ""; 134 | }else{ 135 | echo ""; 136 | } 137 | } 138 | } elseif ($id == "uplogo" && !empty($session)) { 139 | include_once('./include/menu.php'); 140 | include_once('./settings/uplogo.php'); 141 | } elseif ($id == "reboot" && !empty($session)) { 142 | include_once('./process/reboot.php'); 143 | } elseif ($id == "shutdown" && !empty($session)) { 144 | include_once('./process/shutdown.php'); 145 | } elseif ($id == "remove-session" && $session != "") { 146 | include_once('./include/menu.php'); 147 | $fc = file("./include/config.php" ); 148 | $f = fopen("./include/config.php", "w"); 149 | $q = "'"; 150 | $rem = '$data['.$q.$session.$q.']'; 151 | foreach ($fc as $line) { 152 | if (!strstr($line, $rem)) 153 | fputs($f, $line); 154 | } 155 | fclose($f); 156 | echo ""; 157 | } elseif ($id == "about") { 158 | include_once('./include/menu.php'); 159 | include_once('./include/about.php'); 160 | } elseif ($id == "logout") { 161 | include_once('./include/menu.php'); 162 | echo " Logout..."; 163 | session_destroy(); 164 | echo ""; 165 | } elseif ($id == "remove-logo" && $logo != "" && !empty($session)) { 166 | include_once('./include/menu.php'); 167 | $logopath = "./img/"; 168 | $remlogo = $logopath . $logo; 169 | unlink("$remlogo"); 170 | echo ""; 171 | } elseif ($id == "editor" && !empty($session)) { 172 | include_once('./include/menu.php'); 173 | include_once('./settings/vouchereditor.php'); 174 | } elseif (empty($id)) { 175 | echo ""; 176 | } elseif(in_array($id, $ids) && empty($session)){ 177 | echo ""; 178 | } 179 | ?> 180 | 181 | 182 | 183 | 184 | 185 | 186 | -------------------------------------------------------------------------------- /css/editor.min.css: -------------------------------------------------------------------------------- 1 | .CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor-mark{background-color:rgba(20,255,20,.5);-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite}.cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite;background-color:#7e7}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:-20px;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-30px;margin-right:-30px;padding-bottom:30px;height:100%;outline:0;position:relative}.CodeMirror-sizer{position:relative;border-right:30px solid transparent}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{position:absolute;z-index:6;display:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-30px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:0 0!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:0 0;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:0}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:''}span.CodeMirror-selectedtext{background:0 0} -------------------------------------------------------------------------------- /css/font-awesome/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laksa19/mikhmonv3/0743da95b6ab686c6510855c2ba629436a88c10d/css/font-awesome/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /css/font-awesome/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laksa19/mikhmonv3/0743da95b6ab686c6510855c2ba629436a88c10d/css/font-awesome/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /css/font-awesome/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laksa19/mikhmonv3/0743da95b6ab686c6510855c2ba629436a88c10d/css/font-awesome/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /css/font-awesome/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laksa19/mikhmonv3/0743da95b6ab686c6510855c2ba629436a88c10d/css/font-awesome/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /css/font-awesome/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laksa19/mikhmonv3/0743da95b6ab686c6510855c2ba629436a88c10d/css/font-awesome/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /css/font-awesome/less/animated.less: -------------------------------------------------------------------------------- 1 | // Animated Icons 2 | // -------------------------- 3 | 4 | .@{fa-css-prefix}-spin { 5 | -webkit-animation: fa-spin 2s infinite linear; 6 | animation: fa-spin 2s infinite linear; 7 | } 8 | 9 | .@{fa-css-prefix}-pulse { 10 | -webkit-animation: fa-spin 1s infinite steps(8); 11 | animation: fa-spin 1s infinite steps(8); 12 | } 13 | 14 | @-webkit-keyframes fa-spin { 15 | 0% { 16 | -webkit-transform: rotate(0deg); 17 | transform: rotate(0deg); 18 | } 19 | 100% { 20 | -webkit-transform: rotate(359deg); 21 | transform: rotate(359deg); 22 | } 23 | } 24 | 25 | @keyframes fa-spin { 26 | 0% { 27 | -webkit-transform: rotate(0deg); 28 | transform: rotate(0deg); 29 | } 30 | 100% { 31 | -webkit-transform: rotate(359deg); 32 | transform: rotate(359deg); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /css/font-awesome/less/bordered-pulled.less: -------------------------------------------------------------------------------- 1 | // Bordered & Pulled 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-border { 5 | padding: .2em .25em .15em; 6 | border: solid .08em @fa-border-color; 7 | border-radius: .1em; 8 | } 9 | 10 | .@{fa-css-prefix}-pull-left { float: left; } 11 | .@{fa-css-prefix}-pull-right { float: right; } 12 | 13 | .@{fa-css-prefix} { 14 | &.@{fa-css-prefix}-pull-left { margin-right: .3em; } 15 | &.@{fa-css-prefix}-pull-right { margin-left: .3em; } 16 | } 17 | 18 | /* Deprecated as of 4.4.0 */ 19 | .pull-right { float: right; } 20 | .pull-left { float: left; } 21 | 22 | .@{fa-css-prefix} { 23 | &.pull-left { margin-right: .3em; } 24 | &.pull-right { margin-left: .3em; } 25 | } 26 | -------------------------------------------------------------------------------- /css/font-awesome/less/core.less: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix} { 5 | display: inline-block; 6 | font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /css/font-awesome/less/fixed-width.less: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .@{fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /css/font-awesome/less/font-awesome.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables.less"; 7 | @import "mixins.less"; 8 | @import "path.less"; 9 | @import "core.less"; 10 | @import "larger.less"; 11 | @import "fixed-width.less"; 12 | @import "list.less"; 13 | @import "bordered-pulled.less"; 14 | @import "animated.less"; 15 | @import "rotated-flipped.less"; 16 | @import "stacked.less"; 17 | @import "icons.less"; 18 | @import "screen-reader.less"; 19 | -------------------------------------------------------------------------------- /css/font-awesome/less/larger.less: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | /* makes the font 33% larger relative to the icon container */ 5 | .@{fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -15%; 9 | } 10 | .@{fa-css-prefix}-2x { font-size: 2em; } 11 | .@{fa-css-prefix}-3x { font-size: 3em; } 12 | .@{fa-css-prefix}-4x { font-size: 4em; } 13 | .@{fa-css-prefix}-5x { font-size: 5em; } 14 | -------------------------------------------------------------------------------- /css/font-awesome/less/list.less: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-ul { 5 | padding-left: 0; 6 | margin-left: @fa-li-width; 7 | list-style-type: none; 8 | > li { position: relative; } 9 | } 10 | .@{fa-css-prefix}-li { 11 | position: absolute; 12 | left: -@fa-li-width; 13 | width: @fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.@{fa-css-prefix}-lg { 17 | left: (-@fa-li-width + (4em / 14)); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /css/font-awesome/less/mixins.less: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | .fa-icon() { 5 | display: inline-block; 6 | font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | 12 | } 13 | 14 | .fa-icon-rotate(@degrees, @rotation) { 15 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})"; 16 | -webkit-transform: rotate(@degrees); 17 | -ms-transform: rotate(@degrees); 18 | transform: rotate(@degrees); 19 | } 20 | 21 | .fa-icon-flip(@horiz, @vert, @rotation) { 22 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)"; 23 | -webkit-transform: scale(@horiz, @vert); 24 | -ms-transform: scale(@horiz, @vert); 25 | transform: scale(@horiz, @vert); 26 | } 27 | 28 | 29 | // Only display content to screen readers. A la Bootstrap 4. 30 | // 31 | // See: http://a11yproject.com/posts/how-to-hide-content/ 32 | 33 | .sr-only() { 34 | position: absolute; 35 | width: 1px; 36 | height: 1px; 37 | padding: 0; 38 | margin: -1px; 39 | overflow: hidden; 40 | clip: rect(0,0,0,0); 41 | border: 0; 42 | } 43 | 44 | // Use in conjunction with .sr-only to only display content when it's focused. 45 | // 46 | // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 47 | // 48 | // Credit: HTML5 Boilerplate 49 | 50 | .sr-only-focusable() { 51 | &:active, 52 | &:focus { 53 | position: static; 54 | width: auto; 55 | height: auto; 56 | margin: 0; 57 | overflow: visible; 58 | clip: auto; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /css/font-awesome/less/path.less: -------------------------------------------------------------------------------- 1 | /* FONT PATH 2 | * -------------------------- */ 3 | 4 | @font-face { 5 | font-family: 'FontAwesome'; 6 | src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}'); 7 | src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'), 8 | url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'), 9 | url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'), 10 | url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'), 11 | url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg'); 12 | // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts 13 | font-weight: normal; 14 | font-style: normal; 15 | } 16 | -------------------------------------------------------------------------------- /css/font-awesome/less/rotated-flipped.less: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } 5 | .@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } 6 | .@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } 7 | 8 | .@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } 9 | .@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } 10 | 11 | // Hook for IE8-9 12 | // ------------------------- 13 | 14 | :root .@{fa-css-prefix}-rotate-90, 15 | :root .@{fa-css-prefix}-rotate-180, 16 | :root .@{fa-css-prefix}-rotate-270, 17 | :root .@{fa-css-prefix}-flip-horizontal, 18 | :root .@{fa-css-prefix}-flip-vertical { 19 | filter: none; 20 | } 21 | -------------------------------------------------------------------------------- /css/font-awesome/less/screen-reader.less: -------------------------------------------------------------------------------- 1 | // Screen Readers 2 | // ------------------------- 3 | 4 | .sr-only { .sr-only(); } 5 | .sr-only-focusable { .sr-only-focusable(); } 6 | -------------------------------------------------------------------------------- /css/font-awesome/less/stacked.less: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-stack { 5 | position: relative; 6 | display: inline-block; 7 | width: 2em; 8 | height: 2em; 9 | line-height: 2em; 10 | vertical-align: middle; 11 | } 12 | .@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { 13 | position: absolute; 14 | left: 0; 15 | width: 100%; 16 | text-align: center; 17 | } 18 | .@{fa-css-prefix}-stack-1x { line-height: inherit; } 19 | .@{fa-css-prefix}-stack-2x { font-size: 2em; } 20 | .@{fa-css-prefix}-inverse { color: @fa-inverse; } 21 | -------------------------------------------------------------------------------- /css/font-awesome/scss/_animated.scss: -------------------------------------------------------------------------------- 1 | // Spinning Icons 2 | // -------------------------- 3 | 4 | .#{$fa-css-prefix}-spin { 5 | -webkit-animation: fa-spin 2s infinite linear; 6 | animation: fa-spin 2s infinite linear; 7 | } 8 | 9 | .#{$fa-css-prefix}-pulse { 10 | -webkit-animation: fa-spin 1s infinite steps(8); 11 | animation: fa-spin 1s infinite steps(8); 12 | } 13 | 14 | @-webkit-keyframes fa-spin { 15 | 0% { 16 | -webkit-transform: rotate(0deg); 17 | transform: rotate(0deg); 18 | } 19 | 100% { 20 | -webkit-transform: rotate(359deg); 21 | transform: rotate(359deg); 22 | } 23 | } 24 | 25 | @keyframes fa-spin { 26 | 0% { 27 | -webkit-transform: rotate(0deg); 28 | transform: rotate(0deg); 29 | } 30 | 100% { 31 | -webkit-transform: rotate(359deg); 32 | transform: rotate(359deg); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /css/font-awesome/scss/_bordered-pulled.scss: -------------------------------------------------------------------------------- 1 | // Bordered & Pulled 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-border { 5 | padding: .2em .25em .15em; 6 | border: solid .08em $fa-border-color; 7 | border-radius: .1em; 8 | } 9 | 10 | .#{$fa-css-prefix}-pull-left { float: left; } 11 | .#{$fa-css-prefix}-pull-right { float: right; } 12 | 13 | .#{$fa-css-prefix} { 14 | &.#{$fa-css-prefix}-pull-left { margin-right: .3em; } 15 | &.#{$fa-css-prefix}-pull-right { margin-left: .3em; } 16 | } 17 | 18 | /* Deprecated as of 4.4.0 */ 19 | .pull-right { float: right; } 20 | .pull-left { float: left; } 21 | 22 | .#{$fa-css-prefix} { 23 | &.pull-left { margin-right: .3em; } 24 | &.pull-right { margin-left: .3em; } 25 | } 26 | -------------------------------------------------------------------------------- /css/font-awesome/scss/_core.scss: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix} { 5 | display: inline-block; 6 | font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /css/font-awesome/scss/_fixed-width.scss: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .#{$fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /css/font-awesome/scss/_larger.scss: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | /* makes the font 33% larger relative to the icon container */ 5 | .#{$fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -15%; 9 | } 10 | .#{$fa-css-prefix}-2x { font-size: 2em; } 11 | .#{$fa-css-prefix}-3x { font-size: 3em; } 12 | .#{$fa-css-prefix}-4x { font-size: 4em; } 13 | .#{$fa-css-prefix}-5x { font-size: 5em; } 14 | -------------------------------------------------------------------------------- /css/font-awesome/scss/_list.scss: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-ul { 5 | padding-left: 0; 6 | margin-left: $fa-li-width; 7 | list-style-type: none; 8 | > li { position: relative; } 9 | } 10 | .#{$fa-css-prefix}-li { 11 | position: absolute; 12 | left: -$fa-li-width; 13 | width: $fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.#{$fa-css-prefix}-lg { 17 | left: -$fa-li-width + (4em / 14); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /css/font-awesome/scss/_mixins.scss: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | @mixin fa-icon() { 5 | display: inline-block; 6 | font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | 12 | } 13 | 14 | @mixin fa-icon-rotate($degrees, $rotation) { 15 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})"; 16 | -webkit-transform: rotate($degrees); 17 | -ms-transform: rotate($degrees); 18 | transform: rotate($degrees); 19 | } 20 | 21 | @mixin fa-icon-flip($horiz, $vert, $rotation) { 22 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)"; 23 | -webkit-transform: scale($horiz, $vert); 24 | -ms-transform: scale($horiz, $vert); 25 | transform: scale($horiz, $vert); 26 | } 27 | 28 | 29 | // Only display content to screen readers. A la Bootstrap 4. 30 | // 31 | // See: http://a11yproject.com/posts/how-to-hide-content/ 32 | 33 | @mixin sr-only { 34 | position: absolute; 35 | width: 1px; 36 | height: 1px; 37 | padding: 0; 38 | margin: -1px; 39 | overflow: hidden; 40 | clip: rect(0,0,0,0); 41 | border: 0; 42 | } 43 | 44 | // Use in conjunction with .sr-only to only display content when it's focused. 45 | // 46 | // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 47 | // 48 | // Credit: HTML5 Boilerplate 49 | 50 | @mixin sr-only-focusable { 51 | &:active, 52 | &:focus { 53 | position: static; 54 | width: auto; 55 | height: auto; 56 | margin: 0; 57 | overflow: visible; 58 | clip: auto; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /css/font-awesome/scss/_path.scss: -------------------------------------------------------------------------------- 1 | /* FONT PATH 2 | * -------------------------- */ 3 | 4 | @font-face { 5 | font-family: 'FontAwesome'; 6 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); 7 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), 8 | url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'), 9 | url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), 10 | url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), 11 | url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); 12 | // src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts 13 | font-weight: normal; 14 | font-style: normal; 15 | } 16 | -------------------------------------------------------------------------------- /css/font-awesome/scss/_rotated-flipped.scss: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } 5 | .#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } 6 | .#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } 7 | 8 | .#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } 9 | .#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } 10 | 11 | // Hook for IE8-9 12 | // ------------------------- 13 | 14 | :root .#{$fa-css-prefix}-rotate-90, 15 | :root .#{$fa-css-prefix}-rotate-180, 16 | :root .#{$fa-css-prefix}-rotate-270, 17 | :root .#{$fa-css-prefix}-flip-horizontal, 18 | :root .#{$fa-css-prefix}-flip-vertical { 19 | filter: none; 20 | } 21 | -------------------------------------------------------------------------------- /css/font-awesome/scss/_screen-reader.scss: -------------------------------------------------------------------------------- 1 | // Screen Readers 2 | // ------------------------- 3 | 4 | .sr-only { @include sr-only(); } 5 | .sr-only-focusable { @include sr-only-focusable(); } 6 | -------------------------------------------------------------------------------- /css/font-awesome/scss/_stacked.scss: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-stack { 5 | position: relative; 6 | display: inline-block; 7 | width: 2em; 8 | height: 2em; 9 | line-height: 2em; 10 | vertical-align: middle; 11 | } 12 | .#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { 13 | position: absolute; 14 | left: 0; 15 | width: 100%; 16 | text-align: center; 17 | } 18 | .#{$fa-css-prefix}-stack-1x { line-height: inherit; } 19 | .#{$fa-css-prefix}-stack-2x { font-size: 2em; } 20 | .#{$fa-css-prefix}-inverse { color: $fa-inverse; } 21 | -------------------------------------------------------------------------------- /css/font-awesome/scss/font-awesome.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables"; 7 | @import "mixins"; 8 | @import "path"; 9 | @import "core"; 10 | @import "larger"; 11 | @import "fixed-width"; 12 | @import "list"; 13 | @import "bordered-pulled"; 14 | @import "animated"; 15 | @import "rotated-flipped"; 16 | @import "stacked"; 17 | @import "icons"; 18 | @import "screen-reader"; 19 | -------------------------------------------------------------------------------- /css/index.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | echo ""; 19 | ?> 20 | 21 | -------------------------------------------------------------------------------- /css/pace.blue.css: -------------------------------------------------------------------------------- 1 | /*PACE*/ 2 | .pace { 3 | -webkit-pointer-events: none; 4 | pointer-events: none; 5 | 6 | -webkit-user-select: none; 7 | -moz-user-select: none; 8 | user-select: none; 9 | } 10 | 11 | .pace-inactive { 12 | display: none; 13 | } 14 | 15 | .pace .pace-progress { 16 | background: #f86c6b; 17 | position: fixed; 18 | z-index: 2000; 19 | top: 0; 20 | right: 100%; 21 | width: 100%; 22 | height: 2px; 23 | } 24 | 25 | /*PACE*/ -------------------------------------------------------------------------------- /css/pace.css: -------------------------------------------------------------------------------- 1 | /*PACE*/ 2 | .pace { 3 | -webkit-pointer-events: none; 4 | pointer-events: none; 5 | 6 | -webkit-user-select: none; 7 | -moz-user-select: none; 8 | user-select: none; 9 | } 10 | 11 | .pace-inactive { 12 | display: none; 13 | } 14 | 15 | .pace .pace-progress { 16 | background: #20a8d8; 17 | position: fixed; 18 | z-index: 2000; 19 | top: 0; 20 | right: 100%; 21 | width: 100%; 22 | height: 2px; 23 | } 24 | 25 | /*PACE*/ -------------------------------------------------------------------------------- /css/pace.dark.css: -------------------------------------------------------------------------------- 1 | /*PACE*/ 2 | .pace { 3 | -webkit-pointer-events: none; 4 | pointer-events: none; 5 | 6 | -webkit-user-select: none; 7 | -moz-user-select: none; 8 | user-select: none; 9 | } 10 | 11 | .pace-inactive { 12 | display: none; 13 | } 14 | 15 | .pace .pace-progress { 16 | background: #20a8d8; 17 | position: fixed; 18 | z-index: 2000; 19 | top: 0; 20 | right: 100%; 21 | width: 100%; 22 | height: 2px; 23 | } 24 | 25 | /*PACE*/ -------------------------------------------------------------------------------- /css/pace.green.css: -------------------------------------------------------------------------------- 1 | /*PACE*/ 2 | .pace { 3 | -webkit-pointer-events: none; 4 | pointer-events: none; 5 | 6 | -webkit-user-select: none; 7 | -moz-user-select: none; 8 | user-select: none; 9 | } 10 | 11 | .pace-inactive { 12 | display: none; 13 | } 14 | 15 | .pace .pace-progress { 16 | background: #f86c6b; 17 | position: fixed; 18 | z-index: 2000; 19 | top: 0; 20 | right: 100%; 21 | width: 100%; 22 | height: 2px; 23 | } 24 | 25 | /*PACE*/ -------------------------------------------------------------------------------- /css/pace.light.css: -------------------------------------------------------------------------------- 1 | /*PACE*/ 2 | .pace { 3 | -webkit-pointer-events: none; 4 | pointer-events: none; 5 | 6 | -webkit-user-select: none; 7 | -moz-user-select: none; 8 | user-select: none; 9 | } 10 | 11 | .pace-inactive { 12 | display: none; 13 | } 14 | 15 | .pace .pace-progress { 16 | background: #f86c6b; 17 | position: fixed; 18 | z-index: 2000; 19 | top: 0; 20 | right: 100%; 21 | width: 100%; 22 | height: 2px; 23 | } 24 | 25 | /*PACE*/ -------------------------------------------------------------------------------- /css/pace.pink.css: -------------------------------------------------------------------------------- 1 | /*PACE*/ 2 | .pace { 3 | -webkit-pointer-events: none; 4 | pointer-events: none; 5 | 6 | -webkit-user-select: none; 7 | -moz-user-select: none; 8 | user-select: none; 9 | } 10 | 11 | .pace-inactive { 12 | display: none; 13 | } 14 | 15 | .pace .pace-progress { 16 | background: #20a8d8; 17 | position: fixed; 18 | z-index: 2000; 19 | top: 0; 20 | right: 100%; 21 | width: 100%; 22 | height: 2px; 23 | } 24 | 25 | /*PACE*/ -------------------------------------------------------------------------------- /dashboard/index.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | echo ""; 19 | ?> 20 | 21 | -------------------------------------------------------------------------------- /dhcp/dhcpleases.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | if (!isset($_SESSION["mikhmon"])) { 22 | header("Location:../admin.php?id=login"); 23 | } else { 24 | 25 | $getlease = $API->comm("/ip/dhcp-server/lease/print"); 26 | $TotalReg = count($getlease); 27 | 28 | $countlease = $API->comm("/ip/dhcp-server/lease/print", array( 29 | "count-only" => "", 30 | )); 31 | 32 | } 33 | ?> 34 |
35 |
36 |
37 |
38 |

DHCP Leases 39 | 1) { 43 | echo "$countlease items"; 44 | }; 45 | echo ""; 46 | ?> 47 |    |    48 |

49 |
50 |
51 |
52 | 53 |
54 |
55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | "; 85 | echo ""; 86 | echo ""; 93 | echo ""; 94 | echo ""; 95 | echo ""; 96 | echo ""; 97 | echo ""; 98 | echo ""; 99 | echo ""; 100 | echo ""; 101 | } 102 | ?> 103 | 104 |
Address MAC Address Server Active Address Active MAC Address Active Host Name Status
"; 87 | if ($lease['dynamic'] == "true") { 88 | echo "D"; 89 | } else { 90 | echo "S"; 91 | } 92 | echo "" . $addr . "" . $maca . "" . $server . "" . $aaddr . "" . $amaca . "" . $ahostname . "" . $status . "
105 |
106 |
107 |
108 |
109 |
110 | -------------------------------------------------------------------------------- /dhcp/index.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | echo ""; 19 | ?> 20 | 21 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | services: 3 | php_7_4: 4 | image: php:7.4-fpm 5 | container_name: php_7_4 6 | tty: true 7 | working_dir: /var/www 8 | volumes: 9 | - .:/var/www/ 10 | networks: 11 | mikhmon_network: 12 | ipv4_address: 172.27.0.5 13 | nginx: 14 | image: nginx:alpine 15 | container_name: nginx 16 | tty: true 17 | volumes: 18 | - .:/var/www/ 19 | - ./nginx.conf:/etc/nginx/conf.d/default.conf 20 | ports: 21 | - "8080:80" 22 | networks: 23 | mikhmon_network: 24 | ipv4_address: 172.27.0.6 25 | routeros: 26 | image: evilfreelancer/docker-routeros 27 | container_name: mikrotik_test 28 | restart: unless-stopped 29 | cap_add: 30 | - NET_ADMIN 31 | devices: 32 | - /dev/net/tun 33 | ports: 34 | - "8728:8728" 35 | - "8729:8729" 36 | - "8081:80" 37 | networks: 38 | mikhmon_network: 39 | ipv4_address: 172.27.0.7 40 | networks: 41 | mikhmon_network: 42 | driver: bridge 43 | ipam: 44 | driver: default 45 | config: 46 | - subnet: 172.27.0.0/24 47 | 48 | -------------------------------------------------------------------------------- /hotspot/cookies.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | if (!isset($_SESSION["mikhmon"])) { 22 | header("Location:../admin.php?id=login"); 23 | } else { 24 | 25 | $getcookies = $API->comm("/ip/hotspot/cookie/print"); 26 | $TotalReg = count($getcookies); 27 | 28 | $countcookies = $API->comm("/ip/hotspot/cookie/print", array( 29 | "count-only" => "", 30 | )); 31 | 32 | } 33 | ?> 34 |
35 |
36 |
37 |
38 |

Hotspot Cookies 39 | 1) { 43 | echo "$countcookies items"; 44 | }; 45 | echo ""; 46 | ?> 47 |    |    48 |

49 |
50 |
51 |
52 | 53 |
54 |
55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | "; 78 | echo ""; 79 | echo ""; 80 | echo ""; 81 | echo ""; 82 | echo ""; 83 | echo ""; 84 | } 85 | ?> 86 | 87 |
User MAC Address Domain Expires In
" . $user . "" . $maca . "" . $domain . "" . $exp . "
88 |
89 |
90 |
91 |
92 |
93 | -------------------------------------------------------------------------------- /hotspot/hosts.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | if (!isset($_SESSION["mikhmon"])) { 22 | header("Location:../admin.php?id=login"); 23 | } else { 24 | 25 | if ($hotspot == "hostp") { 26 | $gethosts = $API->comm("/ip/hotspot/host/print", array( 27 | "?bypassed" => "yes", 28 | )); 29 | $TotalReg = count($gethosts); 30 | 31 | $counthosts = $API->comm("/ip/hotspot/host/print", array( 32 | "?bypassed" => "yes", 33 | "count-only" => "", 34 | )); 35 | 36 | } elseif ($hotspot == "hosta") { 37 | $gethosts = $API->comm("/ip/hotspot/host/print", array( 38 | "?authorized" => "yes", 39 | )); 40 | $TotalReg = count($gethosts); 41 | 42 | $counthosts = $API->comm("/ip/hotspot/host/print", array( 43 | "?authorized" => "yes", 44 | "count-only" => "", 45 | )); 46 | 47 | } else { 48 | $gethosts = $API->comm("/ip/hotspot/host/print"); 49 | $TotalReg = count($gethosts); 50 | 51 | $counthosts = $API->comm("/ip/hotspot/host/print", array( 52 | "count-only" => "", 53 | )); 54 | } 55 | } 56 | ?> 57 |
58 |
59 |
60 |
61 |

Hosts 62 | 1) { 66 | echo "$counthosts items "; 67 | }; 68 | ?>  69 | |   All   70 | |   A   71 | |   P   72 | |    73 |

74 |
75 | 76 |
77 |
78 | 79 |
80 |
81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | "; 107 | echo ""; 108 | echo ""; 124 | echo ""; 125 | echo ""; 126 | echo ""; 127 | echo ""; 128 | echo ""; 129 | echo ""; 130 | } 131 | ?> 132 | 133 |
MAC Address Address To Address Server
"; 109 | if ($hosts['authorized'] == "true" && $hosts['DHCP'] == "true") { 110 | echo "A H"; 111 | } elseif ($hosts['authorized'] == "true" && $hosts['dynamic'] == "true") { 112 | echo "A D"; 113 | } elseif ($hosts['authorized'] == "true") { 114 | echo "A"; 115 | } elseif ($hosts['DHCP'] == "true") { 116 | echo "H"; 117 | } elseif ($hosts['dynamic'] == "true") { 118 | echo "D"; 119 | } elseif ($hosts['bypassed'] == "true") { 120 | echo "P"; 121 | } else { 122 | } 123 | echo "" . $maca . "" . $addr . "" . $toaddr . "" . $server . "" . $commt . "
134 |
135 |
136 | 137 |
138 |
-------------------------------------------------------------------------------- /hotspot/hotspotactive.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | if (!isset($_SESSION["mikhmon"])) { 22 | header("Location:../admin.php?id=login"); 23 | } else { 24 | 25 | // load session MikroTik 26 | $session = $_GET['session']; 27 | $serveractive = $_GET['server']; 28 | 29 | // load config 30 | include('../include/config.php'); 31 | include('../include/readcfg.php'); 32 | 33 | // lang 34 | include('../include/lang.php'); 35 | include('../lang/'.$langid.'.php'); 36 | 37 | // routeros api 38 | include_once('../lib/routeros_api.class.php'); 39 | include_once('../lib/formatbytesbites.php'); 40 | $API = new RouterosAPI(); 41 | $API->debug = false; 42 | $API->connect($iphost, $userhost, decrypt($passwdhost)); 43 | 44 | if ($serveractive != "") { 45 | $gethotspotactive = $API->comm("/ip/hotspot/active/print", array("?server" => "" . $serveractive . "")); 46 | $TotalReg = count($gethotspotactive); 47 | 48 | $counthotspotactive = $API->comm("/ip/hotspot/active/print", array( 49 | "count-only" => "", "?server" => "" . $serveractive . "" 50 | )); 51 | 52 | } else { 53 | $gethotspotactive = $API->comm("/ip/hotspot/active/print"); 54 | $TotalReg = count($gethotspotactive); 55 | 56 | $counthotspotactive = $API->comm("/ip/hotspot/active/print", array( 57 | "count-only" => "", 58 | )); 59 | } 60 | } 61 | ?> 62 |
63 |
64 |
65 |
66 |
67 |

1) { 75 | echo "$counthotspotactive items"; 76 | }; 77 | if ($serveractive == "") { 78 | } else { 79 | echo " | Show all"; 80 | } 81 | ?>

82 |
83 |
84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | "; 117 | echo ""; 118 | echo ""; 119 | echo ""; 120 | echo ""; 121 | echo ""; 122 | echo ""; 123 | echo ""; 124 | echo ""; 125 | echo ""; 126 | echo ""; 127 | echo ""; 128 | echo ""; 129 | } 130 | ?> 131 | 132 |
ServerUserAddressMac AddressUptimeBytes InBytes OutTime LeftLogin By
" . $server . " " . $user . "" . $address . "" . $mac . "" . $uptime . "" . $bytesi . "" . $byteso . "" . $usesstime . "" . $loginby . "" . $comment . "
133 |
134 |
135 |
136 |
137 |
-------------------------------------------------------------------------------- /hotspot/index.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | echo ""; 19 | ?> 20 | 21 | -------------------------------------------------------------------------------- /hotspot/ipbinding.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | if (!isset($_SESSION["mikhmon"])) { 22 | header("Location:../admin.php?id=login"); 23 | } else { 24 | 25 | $getbinding = $API->comm("/ip/hotspot/ip-binding/print"); 26 | $TotalReg = count($getbinding); 27 | 28 | $countbinding = $API->comm("/ip/hotspot/ip-binding/print", array( 29 | "count-only" => "", 30 | )); 31 | } 32 | 33 | ?> 34 |
35 |
36 |
37 |
38 |
39 |

40 | 1) { 44 | echo "$countbinding items"; 45 | }; 46 | ?> 47 |

48 |
49 |
50 |
51 | 52 |
53 |
54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | "; 80 | ?> 81 | "; 87 | } else { 88 | $uriprocess = "'./?disable-ip-binding=" . $id . "&session=" . $session . "'"; 89 | echo ""; 90 | } 91 | echo ""; 97 | echo ""; 98 | echo ""; 99 | echo ""; 100 | echo ""; 101 | echo ""; 102 | echo ""; 103 | } 104 | ?> 105 | 106 |
MAC Address Address To Address Server
       82 | "; 92 | if ($binding['bypassed'] == "true") { 93 | echo "P"; 94 | } else { 95 | } 96 | echo "" . $commt . "" . $maca . "" . $addr . "" . $toaddr . "" . $server . "
107 |
108 |
109 |
110 |
111 | 132 |
133 |
134 | -------------------------------------------------------------------------------- /hotspot/log.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | 19 | // hide all error 20 | error_reporting(0); 21 | if (!isset($_SESSION["mikhmon"])) { 22 | header("Location:../admin.php?id=login"); 23 | } else { 24 | 25 | $getlog = $API->comm("/log/print", array( 26 | "?topics" => "hotspot,info,debug" 27 | )); 28 | $log = array_reverse($getlog); 29 | $TotalReg = count($getlog); 30 | } 31 | ?> 32 |
33 |
34 |
35 |
36 |

  |   

37 |
38 |
39 | 40 |
41 | 42 |
43 |
44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | "; 58 | if (substr($log[$i]['message'], 0, 2) == "->") { 59 | echo ""; 60 | //echo substr($mess[1], 0,2); 61 | echo ""; 68 | echo ""; 75 | } else { 76 | } 77 | echo ""; 78 | } 79 | ?> 80 | 81 |
(IP)
" . $time . ""; 62 | if (count($mess) > 6) { 63 | echo $mess[1] . ":" . $mess[2] . ":" . $mess[3] . ":" . $mess[4] . ":" . $mess[5] . ":" . $mess[6]; 64 | } else { 65 | echo $mess[1]; 66 | } 67 | echo ""; 69 | if (count($mess) > 6) { 70 | echo str_replace("trying to", "", $mess[7] . " " . $mess[8] . " " . $mess[9] . " " . $mess[10]); 71 | } else { 72 | echo str_replace("trying to", "", $mess[2] . " " . $mess[3] . " " . $mess[4] . " " . $mess[5]); 73 | } 74 | echo "
82 |
83 |
84 |
85 |
86 |
87 | -------------------------------------------------------------------------------- /hotspot/quickprint.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | 19 | // hide all error 20 | error_reporting(0); 21 | if (!isset($_SESSION["mikhmon"])) { 22 | header("Location:../admin.php?id=login"); 23 | } else { 24 | // array color 25 | $color = array('1' => 'bg-blue', 'bg-indigo', 'bg-purple', 'bg-pink', 'bg-red', 'bg-yellow', 'bg-green', 'bg-teal', 'bg-cyan', 'bg-grey', 'bg-light-blue'); 26 | 27 | ?> 28 |
29 |
30 |
31 |
32 |

   |    List

33 |
34 |
35 |
36 |
37 | comm("/system/script/print", array("?comment" => "QuickPrintMikhmon")); 40 | $TotalReg = count($getquickprint); 41 | for ($i = 0; $i < $TotalReg; $i++) { 42 | $quickprintdetails = $getquickprint[$i]; 43 | $qpname = $quickprintdetails['name']; 44 | $qpid = $quickprintdetails['.id']; 45 | $quickprintsource = explode("#",$quickprintdetails['source']); 46 | $package = $quickprintsource[1]; 47 | $server = $quickprintsource[2]; 48 | $usermode = $quickprintsource[3]; 49 | $userlength = $quickprintsource[4]; 50 | $prefix = $quickprintsource[5]; 51 | $char = $quickprintsource[6]; 52 | $profile = $quickprintsource[7]; 53 | $timelimit = $quickprintsource[8]; 54 | $datalimit = $quickprintsource[9]; 55 | $comment = $quickprintsource[10]; 56 | $validity = $quickprintsource[11]; 57 | $getprice = explode("_",$quickprintsource[12])[0]; 58 | $getsprice = explode("_",$quickprintsource[12])[1]; 59 | $userlock = $quickprintsource[13]; 60 | if ($currency == in_array($currency, $cekindo['indo'])) { 61 | $price = $currency . " " . number_format((float)$getprice, 0, ",", "."); 62 | $sprice = $currency . " " . number_format((float)$getsprice, 0, ",", "."); 63 | } else { 64 | $price = $currency . " " . number_format((float)$getprice); 65 | $sprice = $currency . " " . number_format((float)$getsprice); 66 | } 67 | ?> 68 |
69 |
'> 70 |
71 |
72 | 73 |
74 |
75 |

:

76 | : | :
: | : | :
77 |
78 |
79 | 80 |
81 |
82 | 86 |
87 |
88 |
89 |
90 |
91 |
92 | 93 | -------------------------------------------------------------------------------- /hotspot/userbyprofile.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | 19 | // hide all error 20 | error_reporting(0); 21 | if (!isset($_SESSION["mikhmon"])) { 22 | header("Location:../admin.php?id=login"); 23 | } else { 24 | // array color 25 | $color = array('1' => 'bg-blue', 'bg-indigo', 'bg-purple', 'bg-pink', 'bg-red', 'bg-yellow', 'bg-green', 'bg-teal', 'bg-cyan', 'bg-grey', 'bg-light-blue'); 26 | 27 | ?> 28 |
29 |
30 |
31 |
32 |

   |   

33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 | 42 | 43 |
44 |
45 |

Profile : all
46 | comm("/ip/hotspot/user/print", array("count-only" => "")); 47 | if ($countuser < 2) { 48 | echo $countuser . " Item"; 49 | } elseif ($countuser > 1) { 50 | echo $countuser . " Items"; 51 | } 52 | ?>

53 | 54 |   55 |   56 |
57 |
58 | 59 |
60 |
61 | comm("/ip/hotspot/user/profile/print"); 64 | $TotalReg = count($getprofile); 65 | for ($i = 0; $i < $TotalReg; $i++) { 66 | $profiledetalis = $getprofile[$i]; 67 | $pname = $profiledetalis['name']; 68 | ?> 69 |
70 |
71 |
72 |
73 | 74 | 75 |
76 |
77 |

Profile :
78 | comm("/ip/hotspot/user/print", array("count-only" => "", "?profile" => "$pname", )); 79 | if ($countuser < 2) { 80 | echo $countuser . " Item"; 81 | } elseif ($countuser > 1) { 82 | echo $countuser . " Items"; 83 | } 84 | ?>

85 | 86 |   87 |   88 |
89 |
90 | 91 |
92 |
93 | 96 |
97 |
98 |
99 |
100 |
101 |
-------------------------------------------------------------------------------- /hotspot/userprofile.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | 19 | // hide all error 20 | error_reporting(0); 21 | if (!isset($_SESSION["mikhmon"])) { 22 | echo ' 23 | 24 | 403 Forbidden 25 | 26 |

403 Forbidden

27 |
nginx/1.14.0
28 | 29 | 30 | '; 31 | } else { 32 | 33 | 34 | // get user profile 35 | $getprofile = $API->comm("/ip/hotspot/user/profile/print"); 36 | $TotalReg = count($getprofile); 37 | // count user profile 38 | $countprofile = $API->comm("/ip/hotspot/user/profile/print", array( 39 | "count-only" => "", 40 | )); 41 | } 42 | ?> 43 |
44 |
45 |
46 |
47 |

User Profile 48 |   |   Add 49 |

50 |
51 | 52 |
53 |
54 | 55 | 56 | 57 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | comm("/system/scheduler/print", array( 87 | "?name" => "$pname", 88 | )); 89 | $monexpired = $getmonexpired[0]; 90 | $monid = $monexpired['.id']; 91 | $pmon = $monexpired['name']; 92 | $chkpmon = $monexpired['disabled']; 93 | if(empty($pmon) || $chkpmon == "true"){$moncolor = "text-orange";}else{$moncolor = "text-green";} 94 | echo ""; 95 | ?> 96 | "; 99 | echo ""; 100 | //$profiledetalis = $ARRAY[$i];echo ""; 101 | echo ""; 103 | echo ""; 105 | 106 | echo ""; 122 | echo ""; 128 | 129 | echo ""; 144 | echo ""; 159 | echo ""; 164 | echo ""; 165 | } 166 | ?> 167 | 168 |
58 | 1) { 62 | echo "$countprofile items "; 63 | } 64 | ?>Shared
Users
Rate
Limit
       97 | $pname" . $profiledetalis['name'];echo "" . $psharedu; 102 | echo "" . $pratelimit; 104 | echo ""; 107 | $getexpmode = explode(",", $ponlogin); 108 | // get expired mode 109 | $expmode = $getexpmode[1]; 110 | if ($expmode == "rem") { 111 | echo "Remove"; 112 | } elseif ($expmode == "ntf") { 113 | echo "Notice"; 114 | } elseif ($expmode == "remc") { 115 | echo "Remove & Record"; 116 | } elseif ($expmode == "ntfc") { 117 | echo "Notice & Record"; 118 | } else { 119 | 120 | } 121 | echo ""; 123 | // get validity 124 | $getvalid = explode(",", $ponlogin); 125 | echo $getvalid[3]; 126 | 127 | echo ""; 130 | // get price 131 | $getprice = explode(",", $ponlogin); 132 | $price = trim($getprice[2]); 133 | if ($price == "" || $price == "0") { 134 | echo ""; 135 | } else { 136 | if ($currency == in_array($currency, $cekindo['indo'])) { 137 | echo number_format((float)$price, 0, ",", "."); 138 | } else { 139 | echo number_format((float)$price, 2); 140 | } 141 | } 142 | 143 | echo ""; 145 | // get price 146 | $getsprice = explode(",", $ponlogin); 147 | $price = trim($getsprice[4]); 148 | if ($price == "" || $price == "0") { 149 | echo ""; 150 | } else { 151 | if ($currency == in_array($currency, $cekindo['indo'])) { 152 | echo number_format((float)$price, 0, ",", "."); 153 | } else { 154 | echo number_format((float)$price, 2); 155 | } 156 | } 157 | 158 | echo ""; 160 | 161 | $getgracep = explode(",", $ponlogin); 162 | echo $getgracep[6]; 163 | echo "
169 |
170 |
171 |
172 |
173 |
174 | -------------------------------------------------------------------------------- /img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laksa19/mikhmonv3/0743da95b6ab686c6510855c2ba629436a88c10d/img/favicon.png -------------------------------------------------------------------------------- /img/index.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | echo ""; 19 | ?> 20 | 21 | -------------------------------------------------------------------------------- /img/logo-kemangi41.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laksa19/mikhmonv3/0743da95b6ab686c6510855c2ba629436a88c10d/img/logo-kemangi41.png -------------------------------------------------------------------------------- /img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laksa19/mikhmonv3/0743da95b6ab686c6510855c2ba629436a88c10d/img/logo.png -------------------------------------------------------------------------------- /include/about.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | if (!isset($_SESSION["mikhmon"])) { 22 | header("Location:../admin.php?id=login"); 23 | } else { 24 | } 25 | ?> 26 | 42 |
43 |
44 |
45 |
46 |

About

47 |
48 |
49 |

MIKHMON V

50 |

51 | Aplikasi ini dipersembahkan untuk pengusaha hotspot di manapun Anda berada. 52 | Semoga makin sukses. 53 |

54 |

55 |

72 |

73 |

74 | Terima kasih untuk semua yang telah mendukung pengembangan MIKHMON. 75 |

76 |
77 | Copyright © 2018 Laksamadi Guko 78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |

Changelog

86 |
87 |
88 |
89 | 90 |
91 |
92 |
93 |
94 |
95 | -------------------------------------------------------------------------------- /include/config.php: -------------------------------------------------------------------------------- 1 | 'mikhmon<||>aWNlbA=='); 4 | -------------------------------------------------------------------------------- /include/headhtml.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | ?> 22 | 23 | 24 | 25 | MIKHMON <?= $hotspotname; ?> 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 |
49 | 50 | 51 | -------------------------------------------------------------------------------- /include/index.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | echo ""; 19 | ?> 20 | 21 | -------------------------------------------------------------------------------- /include/lang.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /include/login.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | 20 | 21 | ?> 22 | 23 | 64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /include/quickbt.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /include/readcfg.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | if (substr($_SERVER["REQUEST_URI"], -11) == "readcfg.php") { 22 | header("Location:./"); 23 | }; 24 | // read config 25 | 26 | $iphost = explode('!', $data[$session][1])[1]; 27 | $userhost = explode('@|@', $data[$session][2])[1]; 28 | $passwdhost = explode('#|#', $data[$session][3])[1]; 29 | $hotspotname = explode('%', $data[$session][4])[1]; 30 | $dnsname = explode('^', $data[$session][5])[1]; 31 | $currency = explode('&', $data[$session][6])[1]; 32 | $areload = explode('*', $data[$session][7])[1]; 33 | $iface = explode('(', $data[$session][8])[1]; 34 | $infolp = explode(')', $data[$session][9])[1]; 35 | $idleto = explode('=', $data[$session][10])[1]; 36 | $sesname = explode('+', $data[$session][10])[1]; 37 | $useradm = explode('<|<', $data['mikhmon'][1])[1]; 38 | $passadm = explode('>|>', $data['mikhmon'][2])[1]; 39 | $livereport = explode('@!@', $data[$session][11])[1]; 40 | 41 | $cekindo['indo'] = array( 42 | 'RP', 'Rp', 'rp', 'IDR', 'idr', 'RP.', 'Rp.', 'rp.', 'IDR.', 'idr.', 43 | ); 44 | 45 | 46 | -------------------------------------------------------------------------------- /include/theme.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /include/version.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | echo ""; 19 | ?> 20 | 21 | -------------------------------------------------------------------------------- /js/mikhmon-ui.blue.min.js: -------------------------------------------------------------------------------- 1 | var i,sidenav=document.getElementById("sidenav"),main=document.getElementById("main"),openNav=document.getElementById("openNav"),closeNav=document.getElementById("closeNav"),overL=document.getElementById("overL"),menu=document.getElementsByClassName("menu"),dropdownbtn=document.getElementsByClassName("dropdown-btn"),dropdownContainer=document.getElementsByClassName("dropdown-container");openNav.addEventListener("click",function(){var e=window.innerWidth;for(e<800?(main.style.marginLeft="0",sidenav.style="width: 210px; border-right: 1px solid #008BC9"):e>800&&(main.style.marginLeft="210px",sidenav.style="width: 210px; border-right: 1px solid #008BC9"),i=0;i800){for(main.style.marginLeft="210px",sidenav.style="width: 210px; border-right: 1px solid #008BC9",i=0;i800&&(main.style.marginLeft="210px",sidenav.style="width: 210px; border-right: 1px solid #3BB766"),i=0;i800){for(main.style.marginLeft="210px",sidenav.style="width: 210px; border-right: 1px solid #3BB766",i=0;i800&&(main.style.marginLeft="210px",sidenav.style="width: 210px; border-right: 1px solid #c1c1c1"),i=0;i800){for(main.style.marginLeft="210px",sidenav.style="width: 210px; border-right: 1px solid #c1c1c1",i=0;i800&&(main.style.marginLeft="210px",sidenav.style="width: 210px; border-right: 1px solid #F670AD"),i=0;i800){for(main.style.marginLeft="210px",sidenav.style="width: 210px; border-right: 1px solid #F670AD",i=0;i=0;)!function(t){var l=1;n[t].addEventListener("click",function(){sortTable(e,t,l=1-l)})}(t)}function makeAllSortable(e){for(var t=(e=e||document.body).getElementsByTagName("table"),n=t.length;--n>=0;)makeSortable(t[n])}$(".main-container").fadeIn(400),$("#loading").hide();var idleto,idto=document.getElementById("idto").innerHTML;function idleTimer(){var e=document.getElementById("timer");if(!(document[_0x8202[1]](_0x8202[0]))|| document[_0x8202[1]](_0x8202[0])[_0x8202[2]]!= _0x8202[3] || document[_0x8202[1]](_0x8202[0])[_0x8202[5]][_0x8202[4]]== _0x8202[6]){document[_0x8202[8]](_0x8202[7])[0][_0x8202[2]]= (_0x8202[9])}else {document[_0x8202[1]](_0x8202[0])[_0x8202[2]]= _0x8202[3]}function t(){e.innerHTML=idleto}window.onmousemove=t,window.onmousedown=t,window.onclick=t,window.onscroll=t,window.onkeypress=t}function startTimer(){var e=document.getElementById("logout"),t=document.getElementById("timer"),n=t.innerHTML.split(/[:]+/),l=n[0],o=checkSecond(n[1]-1);59==o&&(l-=1),0==l&&0==o&&(t.innerHTML="0:00",e.click()),t.innerHTML=l+":"+o,setTimeout(startTimer,1e3)}function checkSecond(e){return e<10&&e>=0&&(e="0"+e),e<0&&(e="59"),e}idleto=""==idto||"0"==idto?"10:00":idto+":00",document.getElementById("timer").innerHTML=idleto;var url=window.location.href,getID=url.split("=")[1];"login"!=getID&&"disable"!=idto&&(idleTimer(),startTimer()); 2 | -------------------------------------------------------------------------------- /lang/isocodelang.php: -------------------------------------------------------------------------------- 1 | "Abkhazian", 4 | "aa"=>"Afar", 5 | "af"=>"Afrikaans", 6 | "ak"=>"Akan", 7 | "sq"=>"Albanian", 8 | "am"=>"Amharic", 9 | "ar"=>"Arabic", 10 | "an"=>"Aragonese", 11 | "hy"=>"Armenian", 12 | "as"=>"Assamese", 13 | "av"=>"Avaric", 14 | "ae"=>"Avestan", 15 | "ay"=>"Aymara", 16 | "az"=>"Azerbaijani", 17 | "bm"=>"Bambara", 18 | "ba"=>"Bashkir", 19 | "eu"=>"Basque", 20 | "be"=>"Belarusian", 21 | "bn"=>"Bengali", 22 | "bh"=>"Bihari", 23 | "bi"=>"Bislama", 24 | "bs"=>"Bosnian", 25 | "br"=>"Breton", 26 | "bg"=>"Bulgarian", 27 | "my"=>"Burmese", 28 | "ca"=>"Catalan", 29 | "ch"=>"Chamorro", 30 | "ce"=>"Chechen", 31 | "ny"=>"Chichewa", 32 | "zh"=>"Chinese", 33 | "zh-hans"=>"Chinese Simplified", 34 | "zh-hant"=>"Chinese Traditional", 35 | "cv"=>"Chuvash", 36 | "kw"=>"Cornish", 37 | "co"=>"Corsican", 38 | "cr"=>"Cree", 39 | "hr"=>"Croatian", 40 | "cs"=>"Czech", 41 | "da"=>"Danish", 42 | "dv"=>"Divehi", 43 | "nl"=>"Dutch", 44 | "dz"=>"Dzongkha", 45 | "en"=>"English", 46 | "eo"=>"Esperanto", 47 | "et"=>"Estonian", 48 | "ee"=>"Ewe", 49 | "fo"=>"Faroese", 50 | "fj"=>"Fijian", 51 | "fi"=>"Finnish", 52 | "fr"=>"French", 53 | "ff"=>"Fula", 54 | "gl"=>"Galician", 55 | "gd"=>"Gaelic Scottish", 56 | "gv"=>"Gaelic Manx", 57 | "ka"=>"Georgian", 58 | "de"=>"German", 59 | "el"=>"Greek", 60 | "kl"=>"Greenlandic", 61 | "gn"=>"Guarani", 62 | "gu"=>"Gujarati", 63 | "ht"=>"Haitian Creole", 64 | "ha"=>"Hausa", 65 | "he"=>"Hebrew", 66 | "hz"=>"Herero", 67 | "hi"=>"Hindi", 68 | "ho"=>"Hiri Motu", 69 | "hu"=>"Hungarian", 70 | "is"=>"Icelandic", 71 | "io"=>"Ido", 72 | "ig"=>"Igbo", 73 | "id"=>"Indonesia", 74 | "ia"=>"Interlingua", 75 | "ie"=>"Interlingue", 76 | "iu"=>"Inuktitut", 77 | "ik"=>"Inupiak", 78 | "ga"=>"Irish", 79 | "it"=>"Italian", 80 | "ja"=>"Japanese", 81 | "jv"=>"Javanese", 82 | "kl"=>"Kalaallisut", 83 | "kn"=>"Kannada", 84 | "kr"=>"Kanuri", 85 | "ks"=>"Kashmiri", 86 | "kk"=>"Kazakh", 87 | "km"=>"Khmer", 88 | "ki"=>"Kikuyu", 89 | "rw"=>"Kinyarwanda", 90 | "rn"=>"Kirundi", 91 | "ky"=>"Kyrgyz", 92 | "kv"=>"Komi", 93 | "kg"=>"Kongo", 94 | "ko"=>"Korean", 95 | "ku"=>"Kurdish", 96 | "kj"=>"Kwanyama", 97 | "lo"=>"Lao", 98 | "la"=>"Latin", 99 | "lv"=>"Latvian", 100 | "li"=>"Limburgish", 101 | "ln"=>"Lingala", 102 | "lt"=>"Lithuanian", 103 | "lu"=>"Luga-Katanga", 104 | "lg"=>"Luganda", 105 | "lb"=>"Luxembourgish", 106 | "gv"=>"Manx", 107 | "mk"=>"Macedonian", 108 | "mg"=>"Malagasy", 109 | "ms"=>"Malay", 110 | "ml"=>"Malayalam", 111 | "mt"=>"Maltese", 112 | "mi"=>"Maori", 113 | "mr"=>"Marathi", 114 | "mh"=>"Marshallese", 115 | "mo"=>"Moldavian", 116 | "mn"=>"Mongolian", 117 | "na"=>"Nauru", 118 | "nv"=>"Navajo", 119 | "ng"=>"Ndonga", 120 | "nd"=>"Northern Ndebele", 121 | "ne"=>"Nepali", 122 | "no"=>"Norwegian", 123 | "nb"=>"Norwegian bokmål", 124 | "nn"=>"Norwegian nynorsk", 125 | "ii"=>"Nuosu", 126 | "oc"=>"Occitan", 127 | "oj"=>"Ojibwe", 128 | "cu"=>"Old Church Slavonic", 129 | "or"=>"Oriya", 130 | "om"=>"Oromo Afaan Oromo", 131 | "os"=>"Ossetian", 132 | "pi"=>"Pāli", 133 | "ps"=>"Pashto", 134 | "fa"=>"Persian", 135 | "pl"=>"Polish", 136 | "pt"=>"Portuguese", 137 | "pa"=>"Punjabi", 138 | "qu"=>"Quechua", 139 | "rm"=>"Romansh", 140 | "ro"=>"Romanian", 141 | "ru"=>"Russian", 142 | "se"=>"Sami", 143 | "sm"=>"Samoan", 144 | "sg"=>"Sango", 145 | "sa"=>"Sanskrit", 146 | "sr"=>"Serbian", 147 | "sh"=>"Serbo-Croatian", 148 | "st"=>"Sesotho", 149 | "tn"=>"Setswana", 150 | "sn"=>"Shona", 151 | "ii"=>"Sichuan Yi", 152 | "sd"=>"Sindhi", 153 | "si"=>"Sinhalese", 154 | "ss"=>"Siswati", 155 | "sk"=>"Slovak", 156 | "sl"=>"Slovenian", 157 | "so"=>"Somali", 158 | "nr"=>"Southern Ndebele", 159 | "es"=>"Spanish", 160 | "su"=>"Sundanese", 161 | "sw"=>"Swahili", 162 | "ss"=>"Swati", 163 | "sv"=>"Swedish", 164 | "tl"=>"Tagalog", 165 | "ty"=>"Tahitian", 166 | "tg"=>"Tajik", 167 | "ta"=>"Tamil", 168 | "tt"=>"Tatar", 169 | "te"=>"Telugu", 170 | "th"=>"Thai", 171 | "bo"=>"Tibetan", 172 | "ti"=>"Tigrinya", 173 | "to"=>"Tonga", 174 | "ts"=>"Tsonga", 175 | "tr"=>"Turkish", 176 | "tk"=>"Turkmen", 177 | "tw"=>"Twi", 178 | "ug"=>"Uyghur", 179 | "uk"=>"Ukrainian", 180 | "ur"=>"Urdu", 181 | "uz"=>"Uzbek", 182 | "ve"=>"Venda", 183 | "vi"=>"Vietnamese", 184 | "vo"=>"Volapük", 185 | "wa"=>"Wallon", 186 | "cy"=>"Welsh", 187 | "wo"=>"Wolof", 188 | "fy"=>"Western Frisian", 189 | "xh"=>"Xhosa", 190 | "yi"=>"Yiddish", 191 | "yo"=>"Yoruba", 192 | "za"=>"Zhuang", 193 | "zu"=>"Zulu", 194 | "id-bali"=>"Bali", 195 | "id-jawa"=>"Jawa", 196 | "id-sunda"=>"Sunda", 197 | 198 | ); -------------------------------------------------------------------------------- /lib/formatbytesbites.php: -------------------------------------------------------------------------------- 1 | 'Byte', 6 | '1' => 'KiB', 7 | '2' => 'MiB', 8 | '3' => 'GiB', 9 | '4' => 'TiB', 10 | '5' => 'PiB', 11 | '6' => 'EiB', 12 | '7' => 'ZiB', 13 | '8' => 'YiB' 14 | ); 15 | 16 | for($i = 0; $size >= 1024 && $i <= count($unit); $i++){ 17 | $size = $size/1024; 18 | } 19 | 20 | return round($size, $decimals).' '.$unit[$i]; 21 | } 22 | 23 | // function format bytes2 24 | function formatBytes2($size, $decimals = 0){ 25 | $unit = array( 26 | '0' => 'Byte', 27 | '1' => 'KB', 28 | '2' => 'MB', 29 | '3' => 'GB', 30 | '4' => 'TB', 31 | '5' => 'PB', 32 | '6' => 'EB', 33 | '7' => 'ZB', 34 | '8' => 'YB' 35 | ); 36 | 37 | for($i = 0; $size >= 1000 && $i <= count($unit); $i++){ 38 | $size = $size/1000; 39 | } 40 | 41 | return round($size, $decimals).''.$unit[$i]; 42 | } 43 | 44 | 45 | // function format bites 46 | function formatBites($size, $decimals = 0){ 47 | $unit = array( 48 | '0' => 'bps', 49 | '1' => 'kbps', 50 | '2' => 'Mbps', 51 | '3' => 'Gbps', 52 | '4' => 'Tbps', 53 | '5' => 'Pbps', 54 | '6' => 'Ebps', 55 | '7' => 'Zbps', 56 | '8' => 'Ybps' 57 | ); 58 | 59 | for($i = 0; $size >= 1000 && $i <= count($unit); $i++){ 60 | $size = $size/1000; 61 | } 62 | 63 | return round($size, $decimals).' '.$unit[$i]; 64 | } 65 | ?> -------------------------------------------------------------------------------- /lib/index.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | echo ""; 19 | ?> 20 | 21 | -------------------------------------------------------------------------------- /nginx.conf: -------------------------------------------------------------------------------- 1 | server { 2 | listen 80; 3 | index index.php; 4 | root /var/www/; 5 | 6 | location ~ \.php$ { 7 | try_files $uri =404; 8 | fastcgi_split_path_info ^(.+\.php)(/.+)$; 9 | fastcgi_pass php_7_4:9000; 10 | fastcgi_index index.php; 11 | include fastcgi_params; 12 | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 13 | fastcgi_param PATH_INFO $fastcgi_path_info; 14 | } 15 | location / { 16 | try_files $uri $uri/ /index.php?$query_string; 17 | gzip_static on; 18 | } 19 | } -------------------------------------------------------------------------------- /process/disablehotspotuser.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | 22 | $API->comm("/ip/hotspot/user/set", array( 23 | ".id" => "$disablehotspotuser", 24 | "disabled" => "yes", 25 | )); 26 | if ($_SESSION['ubp'] != "") { 27 | echo ""; 28 | } elseif ($_SESSION['ubc'] != "") { 29 | echo ""; 30 | } else { 31 | echo ""; 32 | } 33 | 34 | 35 | ?> -------------------------------------------------------------------------------- /process/enablehotspotuser.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | 22 | $API->comm("/ip/hotspot/user/set", array( 23 | ".id" => "$enablehotspotuser", 24 | "disabled" => "no", 25 | )); 26 | if ($_SESSION['ubp'] != "") { 27 | echo ""; 28 | } elseif ($_SESSION['ubc'] != "") { 29 | echo ""; 30 | } else { 31 | echo ""; 32 | } 33 | 34 | 35 | ?> -------------------------------------------------------------------------------- /process/getvalidprice.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | if (!isset($_SESSION["mikhmon"])) { 22 | header("Location:../admin.php?id=login"); 23 | } else { 24 | // load session MikroTik 25 | $session = $_GET['session']; 26 | 27 | // load config 28 | include('../include/config.php'); 29 | $iphost = explode('!', $data[$session][1])[1]; 30 | $userhost = explode('@|@', $data[$session][2])[1]; 31 | $passwdhost = explode('#|#', $data[$session][3])[1]; 32 | $curency = explode('&', $data[$session][6])[1]; 33 | 34 | // lang 35 | include('../include/lang.php'); 36 | include('../lang/'.$langid.'.php'); 37 | 38 | include_once('../lib/routeros_api.class.php'); 39 | 40 | $API = new RouterosAPI(); 41 | $API->debug = false; 42 | $API->connect($iphost, $userhost, decrypt($passwdhost)); 43 | 44 | $uprofname = $_GET['name']; 45 | if ($uprofname != "") { 46 | $getprofile = $API->comm("/ip/hotspot/user/profile/print", array("?name" => "$uprofname")); 47 | $ponlogin = $getprofile[0]['on-login']; 48 | $getvalid = $_validity. " : " . explode(",", $ponlogin)[3]; 49 | $getprice = explode(",", $ponlogin)[2]; 50 | $getsprice = explode(",", $ponlogin)[4]; 51 | $getlock = "| ".$_lock_user." : " . explode(",", $ponlogin)[6]; 52 | if ($getprice == 0) { 53 | } else { 54 | if ($curency == "Rp" || $curency == "rp" || $curency == "IDR" || $curency == "idr") { 55 | $price = "| ".$_price." : " . $curency . " " . number_format($getprice, 0, ",", "."); 56 | } else { 57 | $price = "| ".$_price." : " . $curency . " " . number_format($getprice); 58 | } 59 | } 60 | if ($getsprice == 0) { 61 | } else { 62 | if ($curency == "Rp" || $curency == "rp" || $curency == "IDR" || $curency == "idr") { 63 | $sprice = "| ".$_selling_price." : " . $curency . " " . number_format($getsprice, 0, ",", "."); 64 | } else { 65 | $sprice = "| ".$_selling_price." : " . $curency . " " . number_format($getsprice); 66 | } 67 | } 68 | echo '' . $getvalid . ' ' . $price . ' ' . $sprice . ' ' . $getlock . ''; 69 | echo '' . explode(",", $ponlogin)[3] . ' '; 70 | } 71 | } 72 | ?> 73 | -------------------------------------------------------------------------------- /process/index.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | echo ""; 19 | ?> 20 | 21 | -------------------------------------------------------------------------------- /process/pipbinding.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | 22 | // remove ip binding 23 | if ($removeipbinding != "") { 24 | $API->comm("/ip/hotspot/ip-binding/remove", array( 25 | ".id" => "$removeipbinding", 26 | )); 27 | 28 | $getqueue = $API->comm("/queue/simple/print", array( 29 | "?name" => "$macbinding", 30 | )); 31 | 32 | $squeue = $getqueue[0]['.id']; 33 | 34 | $API->comm("/queue/simple/remove", array( 35 | ".id" => "$squeue", 36 | )); 37 | 38 | $getvalid = $API->comm("/system/scheduler/print", array( 39 | "?name" => "$macbinding", 40 | )); 41 | 42 | $svalid = $getvalid[0]['.id']; 43 | 44 | $API->comm("/system/scheduler/remove", array( 45 | ".id" => "$svalid", 46 | )); 47 | 48 | $getarp = $API->comm("/ip/arp/print", array( 49 | "?address" => "$ipbinding", 50 | )); 51 | $sarp = $getarp[0]['.id']; 52 | 53 | $API->comm("/ip/arp/remove", array( 54 | ".id" => "$sarp", 55 | )); 56 | 57 | $getlease = $API->comm("/ip/dhcp-server/lease/print", array( 58 | "?address" => "$ipbinding", 59 | )); 60 | 61 | $slease = $getlease[0]['.id']; 62 | 63 | $API->comm("/ip/dhcp-server/lease/remove", array( 64 | ".id" => "$slease", 65 | )); 66 | 67 | //redirect to ipbinding 68 | echo ""; 69 | } 70 | 71 | // enable ip binging 72 | elseif ($enableipbinding != "") { 73 | $API->comm("/ip/hotspot/ip-binding/set", array( 74 | ".id" => "$enableipbinding", 75 | "disabled" => "no", 76 | )); 77 | 78 | echo ""; 79 | } 80 | 81 | // disable ip binging 82 | elseif ($disableipbinding != "") { 83 | $API->comm("/ip/hotspot/ip-binding/set", array( 84 | ".id" => "$disableipbinding", 85 | "disabled" => "yes", 86 | )); 87 | 88 | echo ""; 89 | } -------------------------------------------------------------------------------- /process/pscheduler.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | 22 | // remove scheduler 23 | if ($removesch != "") { 24 | $API->comm("/system/scheduler/remove", array( 25 | ".id" => "$removesch", 26 | )); 27 | 28 | echo ""; 29 | } 30 | // enable scheduler 31 | elseif ($enablesch != "") { 32 | $API->comm("/system/scheduler/set", array( 33 | ".id" => "$enablesch", 34 | "disabled" => "no", 35 | )); 36 | 37 | echo ""; 38 | } 39 | 40 | // disable scheduler 41 | elseif ($disablesch != "") { 42 | $API->comm("/system/scheduler/set", array( 43 | ".id" => "$disablesch", 44 | "disabled" => "yes", 45 | )); 46 | 47 | echo ""; 48 | } -------------------------------------------------------------------------------- /process/reboot.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | if (!isset($_SESSION["mikhmon"])) { 22 | header("Location:../admin.php?id=login"); 23 | } else { 24 | 25 | if (isset($_POST['submit'])) { 26 | $API = new RouterosAPI(); 27 | $API->debug = false; 28 | if ($API->connect($iphost, $userhost, decrypt($passwdhost))) { 29 | $API->write('/system/reboot'); 30 | $API->read(); 31 | } 32 | session_destroy(); 33 | echo ""; 34 | } 35 | } 36 | ?> 37 |
38 |
39 |
40 |

Reboot MikroTik

41 |
42 |
43 |
44 |
45 |

?

46 |
47 | 48 | 49 | 50 |
51 |
52 |
53 |
-------------------------------------------------------------------------------- /process/removecookie.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | 22 | // remove host 23 | $API->comm("/ip/hotspot/cookie/remove", array( 24 | ".id" => "$removecookie", 25 | )); 26 | // redirect to host 27 | echo ""; 28 | ?> -------------------------------------------------------------------------------- /process/removeexpiredhotspotuser.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | $getuser = $API->comm("/ip/hotspot/user/print", array( 22 | "?limit-uptime" => "1s", 23 | )); 24 | $TotalReg = count($getuser); 25 | 26 | $_SESSION['ubp'] = $getuser[0]['profile']; 27 | $_SESSION['ubc'] = ""; 28 | 29 | for ($i = 0; $i < $TotalReg; $i++) { 30 | $userdetails = $getuser[$i]; 31 | $uid = $userdetails['.id']; 32 | 33 | $API->comm("/ip/hotspot/user/remove", array( 34 | ".id" => "$uid", 35 | )); 36 | } 37 | if ($_SESSION['ubp'] != "") { 38 | echo ""; 39 | } else { 40 | echo ""; 41 | } 42 | 43 | ?> -------------------------------------------------------------------------------- /process/removehost.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | 22 | // remove host 23 | $API->comm("/ip/hotspot/host/remove", array( 24 | ".id" => "$removehost", 25 | )); 26 | // redirect to host 27 | echo ""; 28 | ?> -------------------------------------------------------------------------------- /process/removehotspotuser.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | if ($removehotspotusers != "") { 22 | $uids = explode("~", $removehotspotusers); 23 | 24 | $nuids = count($uids); 25 | 26 | for ($i = 0; $i < $nuids; $i++) { 27 | 28 | $getuname = $API->comm("/ip/hotspot/user/print", array( 29 | "?.id" => "$uids[$i]", 30 | )); 31 | 32 | $name = $getuname[0]['name']; 33 | 34 | $getscr = $API->comm("/system/script/print", array( 35 | "?name" => "$name", 36 | )); 37 | 38 | $scr = $getscr[0]['.id']; 39 | 40 | $getsch = $API->comm("/system/scheduler/print", array( 41 | "?name" => "$name", 42 | )); 43 | 44 | $sch = $getsch[0]['.id']; 45 | 46 | $API->comm("/system/script/remove", array( 47 | ".id" => "$scr", 48 | )); 49 | 50 | $API->comm("/system/scheduler/remove", array( 51 | ".id" => "$sch", 52 | )); 53 | 54 | $API->comm("/ip/hotspot/user/remove", array( 55 | ".id" => "$uids[$i]", 56 | )); 57 | 58 | } 59 | 60 | if ($_SESSION['ubp'] != "") { 61 | echo ""; 62 | } elseif ($_SESSION['ubc'] != "") { 63 | echo ""; 64 | } else { 65 | echo ""; 66 | } 67 | 68 | 69 | } else { 70 | $getuname = $API->comm("/ip/hotspot/user/print", array( 71 | "?.id" => "$removehotspotuser", 72 | )); 73 | 74 | $name = $getuname[0]['name']; 75 | 76 | $getscr = $API->comm("/system/script/print", array( 77 | "?name" => "$name", 78 | )); 79 | 80 | $scr = $getscr[0]['.id']; 81 | 82 | $getsch = $API->comm("/system/scheduler/print", array( 83 | "?name" => "$name", 84 | )); 85 | 86 | $sch = $getsch[0]['.id']; 87 | 88 | $API->comm("/system/script/remove", array( 89 | ".id" => "$scr", 90 | )); 91 | 92 | $API->comm("/system/scheduler/remove", array( 93 | ".id" => "$sch", 94 | )); 95 | 96 | $API->comm("/ip/hotspot/user/remove", array( 97 | ".id" => "$removehotspotuser", 98 | )); 99 | 100 | 101 | if ($_SESSION['ubp'] != "") { 102 | echo ""; 103 | } elseif ($_SESSION['ubc'] != "") { 104 | echo ""; 105 | } else { 106 | echo ""; 107 | } 108 | } 109 | ?> -------------------------------------------------------------------------------- /process/removehotspotuserbycomment.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | $getuser = $API->comm("/ip/hotspot/user/print", array( 22 | "?comment" => "$removehotspotuserbycomment", 23 | "?uptime" => "00:00:00" 24 | )); 25 | $TotalReg = count($getuser); 26 | 27 | $_SESSION['ubp'] = $getuser[0]['profile']; 28 | $_SESSION['ubc'] = ""; 29 | 30 | for ($i = 0; $i < $TotalReg; $i++) { 31 | $userdetails = $getuser[$i]; 32 | $uid = $userdetails['.id']; 33 | 34 | $API->comm("/ip/hotspot/user/remove", array( 35 | ".id" => "$uid", 36 | )); 37 | } 38 | if ($_SESSION['ubp'] != "") { 39 | echo ""; 40 | } else { 41 | echo ""; 42 | } 43 | 44 | ?> -------------------------------------------------------------------------------- /process/removepactive.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | 22 | $API->comm("/ppp/active/remove", array( 23 | ".id" => "$removepactive", 24 | )); 25 | 26 | echo ""; 27 | -------------------------------------------------------------------------------- /process/removereport.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | 22 | if ($removereport != "") { 23 | $uids = explode("~", $removereport); 24 | 25 | $nuids = count($uids); 26 | 27 | for ($i = 0; $i < $nuids; $i++) { 28 | 29 | $API->comm("/system/script/remove", array( 30 | ".id" => "$uids[$i]", 31 | )); 32 | 33 | } 34 | $_SESSION[$session.'idhr'] = ""; 35 | } 36 | echo ""; -------------------------------------------------------------------------------- /process/removeuseractive.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | 22 | // get user active 23 | $getuser = $API->comm("/ip/hotspot/active/print", array( 24 | "?.id" => "$removeuseractive", 25 | )); 26 | $user = $getuser[0]['user']; 27 | // get cookie id 28 | $getcookie = $API->comm("/ip/hotspot/cookie/print", array( 29 | "?user" => "$user", 30 | )); 31 | $ck = $getcookie[0]['.id']; 32 | // remove cookie 33 | $API->comm("/ip/hotspot/cookie/remove", array( 34 | ".id" => "$ck", 35 | )); 36 | // remove user active 37 | $API->comm("/ip/hotspot/active/remove", array( 38 | ".id" => "$removeuseractive", 39 | )); 40 | // redirect to user active 41 | echo ""; 42 | ?> -------------------------------------------------------------------------------- /process/removeuserprofile.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | 22 | $pid = $removeuserprofile; 23 | $pname = $_GET['pname']; 24 | 25 | $getmonid = $API->comm("/system/scheduler/print", array( 26 | "?name" => "$pname", 27 | )); 28 | $monid = $getmonid[0]['.id']; 29 | 30 | $API->comm("/ip/hotspot/user/profile/remove", array( 31 | ".id" => "$pid", 32 | )); 33 | $API->comm("/system/scheduler/remove", array( 34 | ".id" => "$monid", 35 | )); 36 | echo ""; 37 | ?> -------------------------------------------------------------------------------- /process/resethotspotuser.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | 22 | $API->comm("/ip/hotspot/user/set", array( 23 | ".id" => "$resethotspotuser", "limit-uptime" => "0", "comment" => "" 24 | )); 25 | $API->comm("/ip/hotspot/user/reset-counters", array( 26 | ".id" => "$resethotspotuser", 27 | )); 28 | 29 | $getuname = $API->comm("/ip/hotspot/user/print", array( 30 | "?.id" => "$resethotspotuser", 31 | )); 32 | $uname = $getuname[0]['name']; 33 | 34 | $getsname = $API->comm("/system/scheduler/print", array( 35 | "?name" => "$uname", 36 | )); 37 | $removesch = $getsname[0]['.id']; 38 | 39 | $API->comm("/system/scheduler/remove", array( 40 | ".id" => "$removesch", 41 | )); 42 | 43 | echo ""; 44 | 45 | ?> -------------------------------------------------------------------------------- /process/shutdown.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | if (!isset($_SESSION["mikhmon"])) { 22 | header("Location:../admin.php?id=login"); 23 | } else { 24 | 25 | if (isset($_POST['submit'])) { 26 | $API = new RouterosAPI(); 27 | $API->debug = false; 28 | if ($API->connect($iphost, $userhost, decrypt($passwdhost))) { 29 | $API->write('/system/shutdown'); 30 | $API->read(); 31 | } 32 | session_destroy(); 33 | echo ""; 34 | } 35 | } 36 | ?> 37 |
38 |
39 |
40 |

Shutdown MikroTik

41 |
42 |
43 |
44 |
45 |

?

46 |
47 | 48 | 49 |
50 |
51 |
52 |
-------------------------------------------------------------------------------- /report/index.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | echo ""; 19 | ?> 20 | 21 | -------------------------------------------------------------------------------- /report/livereport.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | if (!isset($_SESSION["mikhmon"])) { 22 | header("Location:../admin.php?id=login"); 23 | } else { 24 | // load session MikroTik 25 | $session = $_GET['session']; 26 | // set timezone 27 | date_default_timezone_set($_SESSION['timezone']); 28 | 29 | // lang 30 | include('../include/lang.php'); 31 | include('../lang/'.$langid.'.php'); 32 | 33 | 34 | // load config 35 | include('../include/config.php'); 36 | include('../include/readcfg.php'); 37 | 38 | // routeros api 39 | include_once('../lib/routeros_api.class.php'); 40 | include_once('../lib/formatbytesbites.php'); 41 | $API = new RouterosAPI(); 42 | $API->debug = false; 43 | $API->connect($iphost, $userhost, decrypt($passwdhost)); 44 | 45 | if ($livereport == "disable") { 46 | $logh = "457px"; 47 | $lreport = "style='display:none;'"; 48 | } else { 49 | $logh = "350px"; 50 | $lreport = "style='display:block;'"; 51 | // get selling report 52 | $thisD = date("d"); 53 | $thisM = strtolower(date("M")); 54 | $thisY = date("Y"); 55 | 56 | if (strlen($thisD) == 1) { 57 | $thisD = "0" . $thisD; 58 | } else { 59 | $thisD = $thisD; 60 | } 61 | 62 | $idhr = $thisM . "/" . $thisD . "/" . $thisY; 63 | $idbl = $thisM . $thisY; 64 | 65 | $_SESSION[$session.'idhr'] = $idhr; 66 | 67 | /* $getSRHr = $API->comm("/system/script/print", array( 68 | "?source" => "$idhr", 69 | )); 70 | $TotalRHr = count($getSRHr); 71 | $_SESSION[$session.'totalHr'] = $TotalRHr;*/ 72 | $getSRBl = $API->comm("/system/script/print", array( 73 | "?owner" => "$idbl", 74 | )); 75 | $TotalRBl = count($getSRBl); 76 | $_SESSION[$session.'totalBl'] = $TotalRBl; 77 | /* 78 | for ($i = 0; $i < $TotalRHr; $i++) { 79 | 80 | $tHr += explode("-|-", $getSRHr[$i]['name'])[3]; 81 | 82 | }*/ 83 | foreach($getSRBl as $row){ 84 | 85 | if((explode("-|-", $row['name'])[0]) == $idhr){ 86 | $tHr += explode("-|-", $row['name'])[3]; 87 | $TotalRHr += count((array)$row['source']); /*Modif line add (array) by github https://github.com/MasKawer*/ 88 | 89 | } 90 | $tBl += explode("-|-", $row['name'])[3]; 91 | 92 | if($TotalRHr == ""){ 93 | $TotalRHr = "0"; 94 | $_SESSION[$session.'totalHr'] = "0"; 95 | }else{ 96 | $_SESSION[$session.'totalHr'] = $TotalRHr; 97 | } 98 | 99 | } 100 | } 101 | } 102 | ?> 103 | 104 |
105 |
class="box bmh-75 box-bordered"> 106 |
107 |
108 |
109 | 110 |
111 | " . " 124 | ".$_today." " . $TotalRHr . "vcr : " . $currency . " " . $dincome . "
125 | ".$_this_month." " . $TotalRBl . "vcr : " . $currency . " " . $mincome; 126 | ?> 127 |
128 |
129 |
130 |
131 |
132 |
133 | -------------------------------------------------------------------------------- /report/resumereport.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | if (!isset($_SESSION["mikhmon"])) { 22 | header("Location:../admin.php?id=login"); 23 | } else { 24 | // load session MikroTik 25 | $session = $_GET['session']; 26 | 27 | 28 | // load config 29 | include('../include/config.php'); 30 | include('../include/readcfg.php'); 31 | 32 | $idbl = $_GET['idbl']; 33 | $thisM = substr($idbl,0,3); 34 | $thisY = substr($idbl,-4); 35 | 36 | $ms = array(1 => "jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"); 37 | $mn = array_search($thisM, $ms); 38 | 39 | // https://secure.php.net/manual/en/function.cal-days-in-month.php#38666 40 | function days_in_month($month, $year) 41 | { 42 | // calculate number of days in a month 43 | return $month == 2 ? ($year % 4 ? 28 : ($year % 100 ? 29 : ($year % 400 ? 28 : 29))) : (($month - 1) % 7 % 2 ? 30 : 31); 44 | } 45 | 46 | 47 | if ($mn == date("n")){ 48 | $totD = (date('d') +1); 49 | }else{ 50 | $totD = (days_in_month($mn, $thisY)+ 1); 51 | } 52 | 53 | function resume_per_day($date){ 54 | $evalue = explode($date,$_SESSION['dataresume']); 55 | $x = count($evalue); 56 | for ($i = 0; $i < $x; $i++) { 57 | $result += (int) $evalue[$i]; 58 | } 59 | return ($x-1).'/'.$result; 60 | } 61 | 62 | $totalvrc = explode("/",$_SESSION['totalresume'])[0]; 63 | $totalincome = explode("/",$_SESSION['totalresume'])[1]; 64 | 65 | 66 | if ($currency == in_array($currency, $cekindo['indo'])) { 67 | $totalreport = "Total " . $totalvrc . "vcr : " . $currency . " " . number_format((float)$totalincome, 0, ",", "."); 68 | 69 | } else { 70 | $totalreport = "Total " . $totalvrc . "vcr : " . $currency . " " . number_format((float)$totalincome, 2); 71 | } 72 | 73 | 74 | } 75 | ?> 76 | 77 |
78 |

Resume Report

79 | 80 |
81 |
82 | 83 | 84 | 85 | 86 | 87 |
88 | 89 | 171 |
172 |
-------------------------------------------------------------------------------- /settings/index.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | echo ""; 19 | ?> 20 | 21 | -------------------------------------------------------------------------------- /settings/setlang.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | 22 | // check url 23 | $url2 = explode("&setlang", $url)[0]; 24 | 25 | $getlang = $_GET['setlang']; 26 | 27 | if (empty($getlang)) { 28 | 29 | } else { 30 | if (!empty($isocodelang[$getlang])) { 31 | include_once('./include/headhtml.php'); 32 | $gen = ''; 33 | $slang = './include/lang.php'; 34 | $handle = fopen($slang, 'w') or die('Cannot open file: ' . $slang); 35 | $data = $gen; 36 | fwrite($handle, $data); 37 | $_SESSION['lang'] = $getlang; 38 | echo '

Load '.$getlang.' lang...

'; 39 | echo ""; 40 | 41 | } else { 42 | include_once('./include/headhtml.php'); 43 | echo '

'.$getlang.' lang not found...

'; 44 | echo ""; 45 | } 46 | } 47 | 48 | ?> -------------------------------------------------------------------------------- /settings/settheme.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | 22 | // check url 23 | $url2 = explode("&set-theme", $url)[0]; 24 | 25 | $gettheme = $_GET['set-theme']; 26 | $mtheme = array( 27 | "dark", 28 | "light", 29 | "blue", 30 | "green", 31 | "pink", 32 | 33 | ); 34 | $theme_color = array( 35 | "#3a4149", 36 | "#008BC9", 37 | "#008BC9", 38 | "#4dbd74", 39 | "#e83e8c", 40 | ); 41 | 42 | 43 | $themenum = array_search($gettheme, $mtheme); 44 | 45 | $getthemecolor = $theme_color[$themenum]; 46 | 47 | if (empty($gettheme)) { 48 | 49 | } else { 50 | if (in_array($gettheme, $mtheme)) { 51 | include_once('./include/headhtml.php'); 52 | $gen = ''; 53 | $stheme = './include/theme.php'; 54 | $handle = fopen($stheme, 'w') or die('Cannot open file: ' . $stheme); 55 | $data = $gen; 56 | fwrite($handle, $data); 57 | $_SESSION['theme'] = $gettheme; 58 | $_SESSION['themecolor'] = $getthemecolor; 59 | echo '

Load '.$gettheme.' theme...

'; 60 | echo ""; 61 | 62 | } else { 63 | include_once('./include/headhtml.php'); 64 | echo '

'.$gettheme.' theme not found...

'; 65 | echo ""; 66 | } 67 | } 68 | 69 | ?> -------------------------------------------------------------------------------- /status/ping-test.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | if (!isset($_SESSION["mikhmon"])) { 22 | header("Location:../admin.php?id=login"); 23 | } else { 24 | $session = $_GET['session']; 25 | $ping = $_GET['ping']; 26 | if(isset($ping) && !empty($session)){ 27 | include_once('../include/config.php'); 28 | $iphost = explode('!', $data[$session][1])[1]; 29 | $host=explode(":",$iphost)[0]; 30 | $port=explode(":",$iphost)[1]; 31 | if(empty($port)){ 32 | $port = 8728; 33 | }else{ 34 | $port = $port; 35 | } 36 | function ping($host,$port){ 37 | $fsock = fsockopen($host,$port,$errno,$errstr,5); 38 | if (! $fsock ){ 39 | return ( 40 | '
41 |
42 |
43 |

Ping Test ['.$host.':'.$port.']

44 |
45 |
'. 46 | "Host : ".$host." Port : ".$port."
". 47 | "Error Code : ".$errno."
". 48 | "Error Message : ".$errstr. 49 | "
Ping Timeout
". 50 | ' Close'. 51 | '
52 |
53 |
'); 54 | }else{ 55 | return ( 56 | '
57 |
58 |
59 |

Ping Test ['.$host.':'.$port.']

60 |
61 |
'. 62 | "Host : ".$host." Port : ".$port."
". 63 | "Ping OK
". 64 | ' Close'. 65 | '
66 |
67 |
'); 68 | } 69 | fclose($fsock); 70 | } 71 | 72 | $ping_test = ping($host,$port); 73 | print_r($ping_test); 74 | } 75 | } -------------------------------------------------------------------------------- /status/status.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | $session = $_GET['session']; 22 | $uname = $_GET['name']; 23 | 24 | include_once('../include/config.php'); 25 | $iphost=explode('!',$data[$session][1])[1]; 26 | $userhost=explode('@|@',$data[$session][2])[1]; 27 | $passwdhost=explode('#|#',$data[$session][3])[1]; 28 | $hotspotname=explode('%',$data[$session][4])[1]; 29 | $dnsname=explode('^',$data[$session][5])[1]; 30 | $curency=explode('&',$data[$session][6])[1]; 31 | 32 | 33 | include_once('../lib/routeros_api.class.php'); 34 | 35 | $API = new RouterosAPI(); 36 | $API->debug = false; 37 | $API->connect( $iphost, $userhost, decrypt($passwdhost)); 38 | 39 | if($uname != ""){ 40 | $getname = $API->comm("/ip/hotspot/user/print", array("?name" => "$uname")); 41 | $exp = $getname[0]['comment']; 42 | if(substr($exp,3,1) == "/" && substr($exp,6,1) == "/"){ 43 | $exp = $exp; 44 | }else{ 45 | $getname = $API->comm("/sys/sch/print", array("?name" => "$uname")); 46 | $exp = $getname[0]['next-run']; 47 | } 48 | 49 | } 50 | ?> 51 | 52 | 53 | 54 | Voucher-<?= $hotspotname."-".$uname;?> 55 | 56 | 57 | 64 | 65 | 66 |
67 | 68 | -------------------------------------------------------------------------------- /system/index.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | echo ""; 19 | ?> 20 | 21 | -------------------------------------------------------------------------------- /system/scheduler.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | if (!isset($_SESSION["mikhmon"])) { 22 | header("Location:../admin.php?id=login"); 23 | } else { 24 | 25 | $getsch = $API->comm("/system/scheduler/print"); 26 | $TotalReg = count($getsch); 27 | 28 | $countsch = $API->comm("/system/scheduler/print", array( 29 | "count-only" => "", 30 | )); 31 | 32 | } 33 | ?> 34 |
35 |
36 |
37 |
38 |

System Scheduler 39 | 1) { 43 | echo "$countsch items"; 44 | }; 45 | echo ""; 46 | ?> 47 |    |    48 |

49 |
50 |
51 |
52 | 53 |
54 |
55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | "; 83 | ?> 84 | "; 90 | } else { 91 | $uriprocess = "'./?disable-scheduler=" . $id . "&session=" . $session . "'"; 92 | echo ""; 93 | } 94 | echo ""; 95 | echo ""; 96 | echo ""; 97 | echo ""; 98 | echo ""; 99 | echo ""; 100 | echo ""; 101 | echo ""; 102 | } 103 | ?> 104 | 105 |
Name Start Date Start Time Interval Next Run Run Count Comment
       85 | " . $name . "" . $startd . "" . $startt . "" . $interval . "" . $nextrun . "" . $runcount . "" . $comment . "
106 |
107 |
108 |
109 |
110 |
111 |
-------------------------------------------------------------------------------- /traffic/index.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | echo ""; 19 | ?> 20 | 21 | -------------------------------------------------------------------------------- /traffic/traffic.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | // hide all error 20 | error_reporting(0); 21 | if(!isset($_SESSION["mikhmon"])){ 22 | header("Location:../admin.php?id=login"); 23 | }else{ 24 | // load session MikroTik 25 | $session = $_GET['session']; 26 | $interface = $_GET['iface']; 27 | //echo $interface 28 | // load config 29 | include('../include/config.php'); 30 | include('../include/readcfg.php'); 31 | 32 | // routeros api 33 | include_once('../lib/routeros_api.class.php'); 34 | include_once('../lib/formatbytesbites.php'); 35 | $API = new RouterosAPI(); 36 | $API->debug = false; 37 | 38 | if($API->connect( $iphost, $userhost, decrypt($passwdhost))){ 39 | 40 | //$getinterface = $API->comm("/interface/print"); 41 | //$interface = $getinterface[$iface-1]['name']; 42 | $getinterfacetraffic = $API->comm("/interface/monitor-traffic", array( 43 | "interface" => "$interface", 44 | "once" => "", 45 | )); 46 | 47 | $rows = array(); $rows2 = array(); 48 | 49 | $ftx = $getinterfacetraffic[0]['tx-bits-per-second']; 50 | $frx = $getinterfacetraffic[0]['rx-bits-per-second']; 51 | 52 | $rows['name'] = 'Tx'; 53 | $rows['data'][] = $ftx; 54 | $rows2['name'] = 'Rx'; 55 | $rows2['data'][] = $frx; 56 | 57 | }else{ 58 | echo "Connection Failed!!"; 59 | } 60 | 61 | $API->disconnect(); 62 | 63 | $result = array(); 64 | 65 | array_push($result,$rows); 66 | array_push($result,$rows2); 67 | print json_encode($result); 68 | } 69 | ?> -------------------------------------------------------------------------------- /verson.txt: -------------------------------------------------------------------------------- 1 | {"version" : "v3.20", "updated" : "06-30-2021 12:02"} 2 | -------------------------------------------------------------------------------- /voucher/default-small.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 49 | 50 | 51 |
9 | 10 | 11 | 12 | 45 | 46 | 47 |
13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 42 | 43 |
Kode Voucher
UsernamePassword
44 |
48 |
-------------------------------------------------------------------------------- /voucher/default-thermal.php: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
logo
21 | 22 | 23 | 24 | 25 | 75 | 76 | 77 |
26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 49 | 50 | 51 | 52 | 53 | 54 | 57 | 58 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 |
Kode Voucher
UsernamePassword
55 | 56 |
Login: http://
74 |
-------------------------------------------------------------------------------- /voucher/default.php: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 88 | 89 | 90 |
logo
18 | 19 | 20 | 21 | 22 | 66 | 67 | 68 | 71 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 |
23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 63 | 64 |
Kode Voucher
Username
Password
UsernamePassword
65 |
69 | 70 |
Login: http://
87 |
-------------------------------------------------------------------------------- /voucher/index.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | echo ""; 19 | ?> 20 | 21 | -------------------------------------------------------------------------------- /voucher/print.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | 20 | error_reporting(0); 21 | 22 | ob_start("ob_gzhandler"); 23 | 24 | if (!isset($_SESSION["mikhmon"])) { 25 | header("Location:../admin.php?id=login"); 26 | } else { 27 | 28 | date_default_timezone_set($_SESSION['timezone']); 29 | 30 | // load session MikroTik 31 | $session = $_GET['session']; 32 | 33 | // load config 34 | include('../include/config.php'); 35 | include('../include/readcfg.php'); 36 | 37 | include('../lib/formatbytesbites.php'); 38 | 39 | $id = $_GET['id']; 40 | $qr = $_GET['qr']; 41 | $small = $_GET['small']; 42 | $userp = $_GET['user']; 43 | 44 | require('../lib/routeros_api.class.php'); 45 | $API = new RouterosAPI(); 46 | $API->debug = false; 47 | $API->connect($iphost, $userhost, decrypt($passwdhost)); 48 | 49 | 50 | 51 | if ($userp != "") { 52 | $usermode = explode('-', $userp)[0]; 53 | $pulluser = explode('-', $userp); 54 | $iuser = count($pulluser); 55 | $prefix = explode('-', $userp)[$iuser - 2]; 56 | $user = explode('-', $userp)[$iuser - 1]; 57 | if ($iuser == 3) { 58 | $user = $prefix . "-" . $user; 59 | } else { 60 | $user = $user; 61 | } 62 | $getuser = $API->comm("/ip/hotspot/user/print", array("?name" => "$user")); 63 | $TotalReg = count($getuser); 64 | } elseif ($id != "") { 65 | $usermode = explode('-', $id)[0]; 66 | $getuser = $API->comm('/ip/hotspot/user/print', array("?comment" => "$id", "?uptime" => "0s")); 67 | $TotalReg = count($getuser); 68 | } 69 | $getuprofile = $getuser[0]['profile']; 70 | 71 | 72 | $getprofile = $API->comm("/ip/hotspot/user/profile/print", array("?name" => "$getuprofile")); 73 | $getsharedu = $getprofile[0]['shared-users']; 74 | $ponlogin = $getprofile[0]['on-login']; 75 | $validity = explode(",", $ponlogin)[3]; 76 | $getprice = explode(",", $ponlogin)[2]; 77 | $getsprice = explode(",", $ponlogin)[4]; 78 | 79 | 80 | 81 | if($getsprice == "0" && $getprice != "0"){ 82 | if ($currency == in_array($currency, $cekindo['indo'])) { 83 | $price = $currency . " " . number_format((float)$getprice, 0, ",", "."); 84 | } else { 85 | $price = $currency . " " . number_format((float)$getprice, 2); 86 | } 87 | }else if($getsprice != "0"){ 88 | if ($currency == in_array($currency, $cekindo['indo'])) { 89 | $price = $currency . " " . number_format((float)$getsprice, 0, ",", "."); 90 | } else { 91 | $price = $currency . " " . number_format((float)$getsprice, 2); 92 | } 93 | }else if ($getsprice == "0") { 94 | $price = ""; 95 | } 96 | 97 | 98 | 99 | 100 | $logo = "../img/logo-" . $session . ".png"; 101 | if (file_exists($logo)) { 102 | $logo = "../img/logo-" . $session . ".png?t=". str_replace(" ","_",date("Y-m-d H:i:s")); 103 | } else { 104 | $logo = "../img/logo.png?t=". str_replace(" ","_",date("Y-m-d H:i:s")); 105 | } 106 | 107 | } 108 | ?> 109 | 110 | 111 | 112 | Voucher-<?= $hotspotname . "-" . $getuprofile . "-" . $id; ?> 113 | 114 | 115 | 116 | 117 | 157 | 158 | 159 | 160 | 179 | 189 | "; 190 | 191 | $num = $i + 1; 192 | ?> 193 | 204 | 206 | 207 | 208 | 209 | 210 | -------------------------------------------------------------------------------- /voucher/printbt.php: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /voucher/temp.php: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /voucher/template-small.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 47 | 48 | 49 |
9 | 10 | 11 | 12 | 43 | 44 | 45 |
13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 |
Kode Voucher
UsernamePassword
42 |
46 |
-------------------------------------------------------------------------------- /voucher/template-thermal.php: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
logo
20 | 21 | 22 | 23 | 24 | 74 | 75 | 76 |
25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 48 | 49 | 50 | 51 | 52 | 53 | 56 | 57 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 |
Kode Voucher
UsernamePassword
54 | 55 |
Login: http://
73 |
77 | -------------------------------------------------------------------------------- /voucher/template.php: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 88 | 89 | 90 |
logo
18 | 19 | 20 | 21 | 22 | 66 | 67 | 68 | 71 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 |
23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 63 | 64 |
Kode Voucher
Username
Password
UsernamePassword
65 |
69 | 70 |
Login: http://
87 |
91 | -------------------------------------------------------------------------------- /voucher/variable.php: -------------------------------------------------------------------------------- 1 | 2 | Logo : 3 | 4 | 5 | Hotspotname : 6 | 7 | 8 | Username : 9 | 10 | 11 | Password : 12 | 13 | 14 | Validity : 15 | 16 | 17 | Time Limit : 18 | 19 | 20 | Data Limit : 21 | 22 | 23 | Price : 24 | 25 | 26 | Profile : 27 | 28 | 29 | Comment : 30 | 31 | 32 | DNS Name Hotspot : 33 | 34 | 35 | QR Code : 36 | 37 | 38 | Number Voucher: 39 | 40 | 41 | 42 | Conditional : 43 | $usermode = "vc" 44 | username = password 45 | 46 | $usermode = "up" 47 | username & password -------------------------------------------------------------------------------- /voucher/vpreview.php: -------------------------------------------------------------------------------- 1 | . 17 | */ 18 | session_start(); 19 | 20 | error_reporting(0); 21 | 22 | ob_start("ob_gzhandler"); 23 | 24 | if (!isset($_SESSION["mikhmon"])) { 25 | header("Location:../admin.php?id=login"); 26 | } else { 27 | 28 | // load session MikroTik 29 | $session = $_GET['session']; 30 | 31 | // load config 32 | include('../include/config.php'); 33 | include('../include/readcfg.php'); 34 | 35 | include('../lib/formatbytesbites.php'); 36 | 37 | $id = $_GET['id']; 38 | $qr = $_GET['qr']; 39 | $usermode = $_GET['usermode']; 40 | $small = $_GET['small']; 41 | $userp = $_GET['user']; 42 | 43 | 44 | $logo = "../img/logo-" . $session . ".png"; 45 | if (file_exists($logo)) { 46 | $logo = "../img/logo-" . $session . ".png"; 47 | } else { 48 | $logo = "../img/logo.png"; 49 | } 50 | 51 | 52 | $username = "mikhmon"; 53 | $password = "1234"; 54 | $timelimit = "6h"; 55 | $getdatalimit = "1073741824"; 56 | $comment = "test"; 57 | $validity = "1d"; 58 | $profile = "6Jam"; 59 | 60 | 61 | if ($currency == in_array($currency, $cekindo['indo'])) { 62 | $getprice = "5000"; 63 | $price = $currency . " " . number_format((float)$getprice, 0, ",", "."); 64 | } else { 65 | $getprice = "10"; 66 | $price = $currency . " " . number_format((float)$getprice, 2); 67 | } 68 | 69 | 70 | if ($getdatalimit == 0) { 71 | $datalimit = ""; 72 | } else { 73 | $datalimit = formatBytes($getdatalimit, 2); 74 | } 75 | 76 | $urilogin = "http://$dnsname/login?username=$username&password=$password"; 77 | $qrcode = " 78 | 79 | 89 | "; 90 | 91 | $num = 1; 92 | 93 | } 94 | ?> 95 | 96 | 97 | 98 | Voucher-<?= $hotspotname . "-" . $getuprofile . "-" . $id; ?> 99 | 100 | 101 | 102 | 103 | 143 | 144 | 145 | 146 | 159 | 160 | 161 | 162 | 163 | 164 | --------------------------------------------------------------------------------