├── Controller ├── Install.php ├── assets │ ├── css │ │ ├── console.css │ │ ├── desktop.css │ │ ├── filemanager.css │ │ ├── jquery-ui-1.8.18.custom.css │ │ ├── login.css │ │ ├── reset.css │ │ ├── selecthost.css │ │ ├── smartMenu.css │ │ └── taskmanager.css │ ├── img │ │ ├── Register_form_bg.jpg │ │ ├── bg_center.jpg │ │ ├── bg_tile.jpg │ │ ├── clean_form_bg1.jpg │ │ ├── click_here.png │ │ ├── icons │ │ │ ├── camera.png │ │ │ ├── clipboard.png │ │ │ ├── cmd.png │ │ │ ├── desktop.png │ │ │ ├── document.png │ │ │ ├── download.png │ │ │ ├── favicon.ico │ │ │ ├── home.png │ │ │ ├── janitor.png │ │ │ ├── js.png │ │ │ ├── keyboard.png │ │ │ ├── message.png │ │ │ ├── register.png │ │ │ ├── server.png │ │ │ └── tasks.png │ │ ├── login_form_bg.jpg │ │ └── ui │ │ │ ├── add_icon.png │ │ │ ├── bg.png │ │ │ ├── bg_task_b.png │ │ │ ├── default_appbtn_bg.png │ │ │ ├── developing.jpg │ │ │ ├── dock_b.png │ │ │ ├── dock_top.png │ │ │ ├── file.png │ │ │ ├── file_loading.gif │ │ │ ├── grid_dir.png │ │ │ ├── grid_dirempty.png │ │ │ ├── iconTextbg.png │ │ │ ├── iconTextbg_right.png │ │ │ ├── icon_over.png │ │ │ ├── item-child.png │ │ │ ├── loading.gif │ │ │ ├── lr_btn.png │ │ │ ├── repeat_x.png │ │ │ ├── show-desktop.png │ │ │ ├── start_item_bg.png │ │ │ ├── start_itembtn.png │ │ │ ├── taskHdBtn.png │ │ │ ├── titlebar_bg_cur.png │ │ │ ├── tools.png │ │ │ ├── tools_2.png │ │ │ ├── tools_mini.png │ │ │ └── windowBtn.png │ └── js │ │ ├── Decode.js │ │ ├── FileManager.js │ │ ├── TaskManager.js │ │ ├── console.js │ │ ├── desktop.js │ │ ├── jquery-1.6.4.js │ │ ├── jquery-smartMenu-min.js │ │ ├── jquery-ui-1.8.18.custom.min.js │ │ ├── jquery.hotkeys.min.js │ │ ├── jquery.jstree.js │ │ ├── jquery.winResize.js │ │ ├── login.js │ │ ├── myLib.js │ │ └── themes │ │ └── default │ │ ├── d.gif │ │ ├── d.png │ │ ├── style.css │ │ └── throbber.gif ├── control │ ├── CameraViewer.php │ ├── CommandShell.php │ ├── FileManager.php │ ├── GetUserHost.php │ ├── ScreenViewer.php │ ├── TaskManager.php │ ├── VirtualDesktop.php │ └── developing.htm ├── function │ ├── AddCommand.php │ ├── AddUserHost.php │ ├── ClientLogout.php │ ├── ConnectDB.php │ ├── ConnectMC.php │ ├── GetCommand.php │ ├── GetResult.php │ ├── Register.php │ ├── SelectHost.php │ ├── SubmitResult.php │ └── VerifyAccount.php ├── index.php ├── svn_add.bat └── svn_submit.bat ├── ImageSourceFiles ├── Document.zip └── LoginPanel_PSD.zip ├── Puppet └── SSWRC_Windows_Client │ ├── SSWRC_Windows_Client.sln │ └── SSWRC_Windows_Client │ ├── CommandHandler.cpp │ ├── CommandHandler.h │ ├── DatabaseSystemDevelopment_GUI.cpp │ ├── DatabaseSystemDevelopment_GUI.h │ ├── DatabaseSystemDevelopment_GUI1.rc │ ├── DirectShowVideoCapture.cpp │ ├── DirectShowVideoCapture.h │ ├── FileManager.cpp │ ├── FileManager.h │ ├── HttpMessenger.cpp │ ├── HttpMessenger.h │ ├── JsonCppLib │ ├── assertions.h │ ├── autolink.h │ ├── config.h │ ├── features.h │ ├── forwards.h │ ├── json.h │ ├── json_batchallocator.h │ ├── json_internalarray.inl │ ├── json_internalmap.inl │ ├── json_reader.cpp │ ├── json_tool.h │ ├── json_value.cpp │ ├── json_valueiterator.inl │ ├── json_writer.cpp │ ├── reader.h │ ├── value.h │ ├── writer.h │ └── 关于JsonCpp库.txt │ ├── MyStdAfx.h │ ├── Qedit.h │ ├── SSWRC_Windows_Client.vcxproj │ ├── SSWRC_Windows_Client.vcxproj.filters │ ├── SSWRC_Windows_Client.vcxproj.user │ ├── ScreenCapture.cpp │ ├── ScreenCapture.h │ ├── ScreenControl.cpp │ ├── ScreenControl.h │ ├── SystemTraySDK.cpp │ ├── SystemTraySDK.h │ ├── TaskManager.cpp │ ├── TaskManager.h │ ├── Transcoding.cpp │ ├── Transcoding.h │ ├── resource.h │ └── staroffice.ico ├── README.md ├── SinSoul Web远程控制的部署及编译.pdf └── 基于HTTP协议的计算机远程控制系统设计和实现.pdf /Controller/Install.php: -------------------------------------------------------------------------------- 1 | "; 29 | $queryresult=mysql_query($ar[$i],$database); 30 | if($queryresult==false) 31 | { 32 | echo '
Query Error:'.mysql_error()."
"; 33 | } 34 | else 35 | { 36 | echo "Success!!

"; 37 | } 38 | } 39 | } 40 | /* 41 | if($_GET[action] == install) 42 | { 43 | 44 | require("ConnectSAEDB.php"); 45 | $sql_file = file_get_contents("./Create.sql"); 46 | echo $sql_file; 47 | if(mysqli_multi_query($sql_file,$database)) 48 | { 49 | header("location:index.php"); 50 | exit; 51 | } 52 | else 53 | { 54 | die('Query Error:'.mysql_error()); 55 | } 56 | 57 | } 58 | */ 59 | ?> 60 | 61 | 62 | 63 | 64 | 安装程序 65 | 66 | 67 | 68 |
69 | 70 | 71 |
72 |
73 | 74 | 75 | -------------------------------------------------------------------------------- /Controller/assets/css/console.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/css/console.css -------------------------------------------------------------------------------- /Controller/assets/css/desktop.css: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | /*导入重置样式*/ 3 | @import url("reset.css"); 4 | /*页面基础样式*/ 5 | html{ 6 | overflow:hidden 7 | } 8 | body { 9 | font-size: 12px; 10 | font-family: Tahoma, Geneva, sans-serif; 11 | margin:0; 12 | padding:0; 13 | overflow:hidden 14 | } 15 | a { 16 | font-size: 12px; 17 | } 18 | a:link { 19 | text-decoration: none; 20 | color:#FFF; 21 | } 22 | a:visited { 23 | text-decoration: none; 24 | color:#FFF; 25 | } 26 | a:hover { 27 | text-decoration: none; 28 | color:#FFF; 29 | } 30 | a:active { 31 | text-decoration: none; 32 | color:#FFF; 33 | } 34 | .corner {/*只在支持css3的高级浏览器起作用*/ 35 | -moz-border-radius: 5px; 36 | -webkit-border-radius: 5px; 37 | border-radius: 5px; 38 | -moz-box-shadow: 1px 3px 6px #666; 39 | -webkit-box-shadow:1px 3px 6px #666; 40 | box-shadow:1px 3px 6px #666; 41 | } 42 | .loading { 43 | background:url(../img/ui/loading.gif) no-repeat center center 44 | } 45 | /*界面布局样式*/ 46 | .powered_by { 47 | width:160px; 48 | height:25px; 49 | line-height:25px; 50 | background:url(../img/ui/powered-by.png) no-repeat left center; 51 | color:#CCC; 52 | text-indent:26px; 53 | display:block; 54 | outline:none; 55 | position:absolute; 56 | right:20px; 57 | bottom:60px; 58 | } 59 | /*桌面导航按钮*/ 60 | #navBar{ 61 | width:140px; 62 | height:32px; 63 | line-height:32px; 64 | position:absolute; 65 | left:50%; 66 | margin-left:-100px; 67 | top:0px; 68 | background:url(../img/ui/navBg0.png) no-repeat center center; 69 | text-align:center; 70 | z-index:99; 71 | } 72 | #navBar a{ 73 | display:inline-block; 74 | width:24px; 75 | height:24px; 76 | background:url(../img/ui/navbg.png) no-repeat left top; 77 | margin:4px 3px 0 0; 78 | outline:none 79 | } 80 | 81 | #navBar a:hover{ 82 | background-position: -48px top; 83 | } 84 | #navBar a.currTab{ 85 | background-position:-24px top; 86 | } 87 | /*任务栏样式*/ 88 | #taskBarWrap{ 89 | width:100%; 90 | height:40px; 91 | line-height:40px; 92 | position:absolute; 93 | right:0; 94 | bottom:0; 95 | background: url(../img/ui/bg_task_b.png) repeat-x left bottom; 96 | z-index:60; 97 | } 98 | #taskBar { 99 | width:100%; 100 | height:40px; 101 | line-height:40px; 102 | float:right; 103 | } 104 | #leftBtn{ 105 | width:100px; 106 | height:40px; 107 | float:left; 108 | display:none; 109 | } 110 | #rightBtn{ 111 | width:100px; 112 | height:40px; 113 | float:right; 114 | display:none; 115 | } 116 | #leftBtn a,#rightBtn a{ 117 | display:block; 118 | width:100px; 119 | height:40px; 120 | outline:none; 121 | background-image:url(../img/ui/lr_btn.png); 122 | background-repeat:no-repeat; 123 | } 124 | #leftBtn a{ background-position:left top;} 125 | #rightBtn a{ background-position:right top;} 126 | #leftBtn a:hover{ background-position:left bottom} 127 | #rightBtn a:hover{ background-position:right bottom} 128 | 129 | #task_lb_wrap{ 130 | height:40px; 131 | line-height:40px; 132 | overflow:hidden; 133 | position:relative; 134 | } 135 | #task_lb { 136 | width:auto; 137 | height:auto; 138 | position:absolute; 139 | top:0; 140 | right:0; 141 | } 142 | #task_lb a { 143 | display:inline-block; 144 | outline:none; 145 | width:100px; 146 | height:40px; 147 | background-image:url(../img/ui/taskHdBtn.png); 148 | background-repeat:no-repeat; 149 | text-align:center; 150 | line-height:40px; 151 | float:right 152 | } 153 | #task_lb .defaultTab { 154 | background-position:right top; 155 | color:#ccc 156 | } 157 | #task_lb .defaultTab:hover { 158 | background-position:right bottom; 159 | } 160 | #task_lb .selectTab { 161 | background-position:left top; 162 | color:#FFF 163 | } 164 | #task_lb .selectTab:hover { 165 | background-position:left bottom 166 | } 167 | 168 | #shizhong_btn { 169 | background:url(../img/ui/timer.png) no-repeat center center 170 | 171 | } 172 | #weather_btn { 173 | background:url(../img/ui/wheather.png) no-repeat center center 174 | 175 | } 176 | #sound_btn { 177 | background:url(images/sound_open.png) no-repeat center center 178 | } 179 | #showZm_btn { 180 | background:url(../img/ui/show-desktop.png) no-repeat center center 181 | 182 | } 183 | #them_btn{ 184 | background:url(../img/ui/skin.png) no-repeat center center 185 | 186 | } 187 | /*侧边浮动栏*/ 188 | #lr_bar{ 189 | width:73px; 190 | height:auto; 191 | position:absolute; 192 | left:0; 193 | top:30px; 194 | background:url(../img/ui/dock_top.png) repeat-y left top; 195 | z-index:90; 196 | -moz-box-shadow: 0px 3px 15px #444; 197 | -webkit-box-shadow: 0px 3px 15px #444; 198 | box-shadow:0px 3px 15px #444; 199 | padding-top:5px;} 200 | 201 | /*开始按钮样式*/ 202 | #start_block { 203 | width:73px; 204 | height:56px; 205 | position:absolute; 206 | left:0; 207 | bottom:-56px; 208 | background:url(../img/ui/dock_b.png) no-repeat left bottom; 209 | -moz-box-shadow: 0px 5px 15px #444; 210 | -webkit-box-shadow: 0px 5px 15px #444; 211 | box-shadow:0px 5px 15px #444; 212 | } 213 | #start_btn { 214 | display:block; 215 | width:48px; 216 | height:48px; 217 | background:url(../img/ui/start-btn.png) no-repeat center bottom; 218 | margin:4px auto 0 auto; 219 | outline:none; 220 | z-index:501; 221 | cursor:pointer; 222 | } 223 | #start_btn:hover { 224 | background-position:center top 225 | } 226 | /*开始菜单样式*/ 227 | #start_item { 228 | width:180px; 229 | height:auto; 230 | padding:5px 0; 231 | background: url(../img/ui/start_item_bg.png) repeat; 232 | position:absolute; 233 | z-index:500; 234 | left:75px; 235 | bottom:0px; 236 | display:none; 237 | -moz-border-radius: 5px; 238 | -webkit-border-radius: 5px; 239 | border-radius: 5px; 240 | -moz-box-shadow: 2px 2px 5px #444; 241 | -webkit-box-shadow: 2px 2px 5px #444; 242 | box-shadow:2px 2px 5px #444; 243 | } 244 | #start_item .item { 245 | width:100%; 246 | height:auto; 247 | border-top:1px solid #999 248 | } 249 | #start_item .item li { 250 | width:98%; 251 | height:24px; 252 | overflow:hidden; 253 | zoom:-1; 254 | padding:6px 0; 255 | line-height:24px; 256 | margin:0 auto; 257 | color:#FFF; 258 | } 259 | #start_item .item li:hover { 260 | background:url(../img/ui/start_item_over.png) repeat-x left bottom; 261 | cursor:pointer 262 | } 263 | #start_item .item li span { 264 | display:inline-block; 265 | width:24px; 266 | height:24px; 267 | background-image:url(../img/ui/start_itembtn.png); 268 | background-repeat:no-repeat; 269 | margin:0 10px; 270 | float:left; 271 | } 272 | #start_item .item li b { 273 | width:10px; 274 | height:24px; 275 | background:url(../img/ui/item-child.png) no-repeat center center; 276 | display:inline-block; 277 | float:right; 278 | margin-right:10px; 279 | } 280 | #start_item .sitting_btn { 281 | background-position:left -140px; 282 | } 283 | #start_item .help_btn { 284 | background-position:left -44px; 285 | } 286 | #start_item .about_btn { 287 | background-position:left -164px; 288 | } 289 | #start_item .logout_btn { 290 | background-position:left -20px; 291 | } 292 | #start_item .admin { 293 | border-bottom:1px solid #444; 294 | padding:5px 0; 295 | border-top:none; 296 | } 297 | #start_item .item li .adminImg { 298 | border:1px solid #E0E0E0; 299 | background-position:left -92px; 300 | background-color:#FFF; 301 | } 302 | /*默认小工具*/ 303 | #default_tools{ 304 | width:71px; 305 | height:auto; 306 | overflow:hidden; 307 | zoom:-1; 308 | padding:5px 0; 309 | border-top:1px solid #555; 310 | margin:0 auto; 311 | } 312 | #default_tools span{ 313 | width:30px; 314 | height:30px; 315 | display:inline-block; 316 | margin:0 0 0 3px; 317 | cursor:pointer; 318 | float:left; 319 | } 320 | /*默认应用程序*/ 321 | #default_app{ 322 | width:73px; 323 | height:auto; 324 | padding:5px 0; 325 | position:relative; 326 | } 327 | #default_app li{ 328 | width:48px; 329 | height:48px; 330 | overflow:hidden; 331 | margin:3px auto; 332 | padding:6px; 333 | } 334 | #default_app li .text{ 335 | display:none; 336 | } 337 | #default_app li img{ 338 | width:48px; 339 | height:48px; 340 | cursor:pointer; 341 | outline:none; 342 | -moz-user-select:none; 343 | } 344 | #default_app .btnOver{ 345 | background:url(../img/ui/default_appbtn_bg.png) no-repeat center center 346 | 347 | } 348 | /*重写右键菜单样式*/ 349 | .smart_menu_box .smart_menu_a{ color:#333} 350 | .smart_menu_box .smart_menu_li_separate{border-bottom:1px solid #d6d5d5;} 351 | /*窗口样式*/ 352 | .windows { 353 | width:340px; 354 | height:300px; 355 | position:absolute; 356 | display:none; 357 | background-color:#CCC; 358 | border:1px solid #999; 359 | } 360 | .win_title { 361 | width:100%; 362 | height:26px; 363 | line-height:26px; 364 | background:#E0E0E0 url(../img/ui/titlebar_bg_cur.png) repeat-x left center; 365 | -moz-border-top-right-radius: 5px; 366 | -webkit-border-top-right-radius: 5px; 367 | border-top-right-radius: 5px; 368 | -moz-border-top-left-radius: 5px; 369 | -webkit-border-top-left-radius: 5px; 370 | border-top-left-radius: 5px; 371 | } 372 | .win_title b { 373 | color:#333; 374 | margin-left:10px; 375 | outline:none; 376 | -moz-user-select:none; 377 | float:left 378 | } 379 | .win_title .win_btnblock { 380 | width:auto; 381 | padding:0 5px; 382 | float:right; 383 | height:17px; 384 | margin:4px 3px 0 0; 385 | } 386 | .win_title .win_btnblock a { 387 | display:inline-block; 388 | width:26px; 389 | height:17px; 390 | background-image:url(../img/ui/windowBtn.png); 391 | background-repeat:no-repeat; 392 | float:left; 393 | margin:0 1px; 394 | outline:none; 395 | } 396 | .winMaximize { 397 | background-position:right bottom; 398 | } 399 | .winMaximize:hover { 400 | background-position:right top; 401 | } 402 | .winHyimize { 403 | background-position:-26px bottom; 404 | } 405 | .winHyimize:hover { 406 | background-position:-26px top; 407 | } 408 | .winClose { 409 | background-position:-52px top; 410 | } 411 | .winClose:hover { 412 | background-position:-52px bottom; 413 | } 414 | .winMinimize { 415 | background-position:left bottom; 416 | } 417 | .winMinimize:hover { 418 | background-position:left top; 419 | } 420 | .winframe { 421 | width:100%; 422 | height:auto; 423 | margin:0; 424 | padding:0; 425 | display:none 426 | } 427 | #wallpapers{ 428 | position: absolute; 429 | left:0; 430 | top:0; 431 | z-index:-100; 432 | width:100%; 433 | height:100%; 434 | overflow:hidden; 435 | } 436 | /*桌面图标*/ 437 | #desktopPanel{ 438 | width:100%; 439 | height:auto; 440 | position:relative; 441 | z-index:70; 442 | } 443 | #desktopInnerPanel{ 444 | position:relative; 445 | background:url(../img/ui/bg.png) repeat; 446 | } 447 | .deskIcon { 448 | width:100%; 449 | height:auto; 450 | position:relative; 451 | float:left; 452 | } 453 | .desktop_icon { 454 | width:86px; 455 | height:88px; 456 | cursor:pointer; 457 | margin-left:-1000px; 458 | text-align:center; 459 | } 460 | .desktop_icon span { 461 | display:block; 462 | } 463 | .desktop_icon .icon { 464 | width:50px; 465 | height:50px; 466 | margin:5px auto; 467 | outline:none; 468 | -moz-user-select:none; 469 | } 470 | .desktop_icon .icon img{ 471 | width:50px; 472 | height:50px; 473 | } 474 | .desktop_icon .text { 475 | display:inline-block; 476 | width:auto; 477 | height:22px; 478 | line-height:22px; 479 | text-align:center; 480 | color:#fff; 481 | background:url(../img/ui/iconTextbg.png) no-repeat left center; 482 | position:relative; 483 | padding-left:10px; 484 | margin-right:10px; 485 | outline:none; 486 | -moz-user-select:none; 487 | } 488 | .desktop_icon s{ 489 | display:inline-block; 490 | width:10px; 491 | height:22px; 492 | position:absolute; 493 | right:-10px; 494 | top:0; 495 | background:url(../img/ui/iconTextbg_right.png) left center no-repeat; 496 | } 497 | .desktop_icon_over { 498 | background:url(../img/ui/icon_over.png) no-repeat center center; 499 | } 500 | -------------------------------------------------------------------------------- /Controller/assets/css/login.css: -------------------------------------------------------------------------------- 1 | /*------------------------- 2 | Simple reset 3 | --------------------------*/ 4 | 5 | 6 | *{ 7 | margin:0; 8 | padding:0; 9 | } 10 | 11 | 12 | /*------------------------- 13 | General Styles 14 | --------------------------*/ 15 | 16 | 17 | html{ 18 | background:url('../img/bg_tile.jpg') #161718; 19 | } 20 | 21 | body{ 22 | background:url('../img/bg_center.jpg') no-repeat center center; 23 | min-height: 300px; 24 | padding: 200px 0 0; 25 | font:14px/1.3 'Segoe UI',Arial, sans-serif; 26 | } 27 | 28 | a, a:visited { 29 | text-decoration:none; 30 | outline:none; 31 | color:#54a6de; 32 | } 33 | 34 | a:hover{ 35 | text-decoration:underline; 36 | } 37 | 38 | section, footer{ 39 | display: block; 40 | } 41 | 42 | 43 | /*---------------------------- 44 | Styling the forms 45 | -----------------------------*/ 46 | 47 | 48 | #formContainer{ 49 | width:288px; 50 | height:321px; 51 | margin:0 auto; 52 | position:relative; 53 | z-index:1; 54 | 55 | -moz-perspective: 800px; 56 | -webkit-perspective: 800px; 57 | perspective: 800px; 58 | } 59 | 60 | #formContainer form{ 61 | width:100%; 62 | height:100%; 63 | position:absolute; 64 | top:0; 65 | left:0; 66 | 67 | /* Enabling 3d space for the transforms */ 68 | -moz-transform-style: preserve-3d; 69 | -webkit-transform-style: preserve-3d; 70 | transform-style: preserve-3d; 71 | 72 | /* When the forms are flipped, they will be hidden */ 73 | -moz-backface-visibility: hidden; 74 | -webkit-backface-visibility: hidden; 75 | backface-visibility: hidden; 76 | 77 | /* Enabling a smooth animated transition */ 78 | -moz-transition:0.8s; 79 | -webkit-transition:0.8s; 80 | transition:0.8s; 81 | 82 | /* Configure a keyframe animation for Firefox */ 83 | -moz-animation: pulse 2s infinite; 84 | 85 | /* Configure it for Chrome and Safari */ 86 | -webkit-animation: pulse 2s infinite; 87 | } 88 | 89 | 90 | /* Firefox Keyframe Animation */ 91 | @-moz-keyframes pulse{ 92 | 0%{ box-shadow:0 0 1px #008aff;} 93 | 50%{ box-shadow:0 0 8px #008aff;} 94 | 100%{ box-shadow:0 0 1px #008aff;} 95 | } 96 | 97 | /* Webkit keyframe animation */ 98 | @-webkit-keyframes pulse{ 99 | 0%{ box-shadow:0 0 1px #008aff;} 100 | 50%{ box-shadow:0 0 10px #008aff;} 101 | 100%{ box-shadow:0 0 1px #008aff;} 102 | } 103 | 104 | #login{ 105 | background:url('../img/login_form_bg.jpg') no-repeat; 106 | z-index:100; 107 | } 108 | 109 | #Register{ 110 | background:url('../img/Register_form_bg.jpg') no-repeat; 111 | z-index:1; 112 | opacity:0; 113 | 114 | /* Rotating the Register password form by default */ 115 | -moz-transform:rotateY(180deg); 116 | -webkit-transform:rotateY(180deg); 117 | transform:rotateY(180deg); 118 | } 119 | 120 | #formContainer.flipped #login{ 121 | 122 | opacity:0; 123 | 124 | /** 125 | * Rotating the login form when the 126 | * flipped class is added to the container 127 | */ 128 | 129 | -moz-transform:rotateY(-180deg); 130 | -webkit-transform:rotateY(-180deg); 131 | transform:rotateY(-180deg); 132 | } 133 | 134 | #formContainer.flipped #Register{ 135 | 136 | opacity:1; 137 | 138 | /* Rotating the Register div into view */ 139 | -moz-transform:rotateY(0deg); 140 | -webkit-transform:rotateY(0deg); 141 | transform:rotateY(0deg); 142 | } 143 | 144 | 145 | /*---------------------------- 146 | Inputs, Buttons & Links 147 | -----------------------------*/ 148 | 149 | 150 | #login .flipLink, 151 | #Register .flipLink{ 152 | 153 | /* The blue ribbon links */ 154 | 155 | height: 65px; 156 | overflow: hidden; 157 | position: absolute; 158 | right: 0; 159 | text-indent: -9999px; 160 | top: 0; 161 | width: 65px; 162 | } 163 | 164 | #Register .flipLink{ 165 | right:auto; 166 | left:0; 167 | } 168 | 169 | #login:after{ 170 | /* The "Click here" tooltip */ 171 | width:150px; 172 | height:25px; 173 | content:''; 174 | background:url('../img/click_here.png') no-repeat; 175 | position:absolute; 176 | right:-140px; 177 | top:22px; 178 | } 179 | input[type=text],input[type=password]{ 180 | /* The text fields */ 181 | font: 15px 'Segoe UI',Arial,sans-serif; 182 | border: none; 183 | background:none; 184 | height: 36px; 185 | left: 26px; 186 | position: absolute; 187 | top: 170px; 188 | width: 234px; 189 | text-indent: 8px; 190 | text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3); 191 | color:#eee; 192 | outline:none; 193 | } 194 | 195 | #loginPass{ 196 | top: 215px; 197 | } 198 | #RegisterUser 199 | { 200 | top: 90px; 201 | } 202 | #RegisterPass 203 | { 204 | top: 140px; 205 | } 206 | #RegisterRePass 207 | { 208 | top: 190px; 209 | } 210 | 211 | #RegisterEmail{ 212 | top: 235px; 213 | } 214 | .tips{ 215 | font: 15px 'Segoe UI',Arial,sans-serif; 216 | border: none; 217 | background:none; 218 | position: absolute; 219 | text-align:center; 220 | margin:0 auto; 221 | top: 255px; 222 | width: 260px; 223 | text-indent: 8px; 224 | text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3); 225 | color:#FFF; 226 | outline:none; 227 | } 228 | 229 | input[type=submit]{ 230 | 231 | /* Submit button */ 232 | 233 | opacity:0.9; 234 | position:absolute; 235 | top:280px; 236 | left:25px; 237 | width: 239px; 238 | height:36px; 239 | cursor:pointer; 240 | border-radius:6px; 241 | box-shadow:0 1px 1px #888; 242 | border:none; 243 | color:#fff; 244 | font:14px/36px 'Segoe UI Light','Segoe UI',Arial,sans-serif; 245 | 246 | /* CSS3 Gradients */ 247 | 248 | background-image: linear-gradient(bottom, rgb(80,102,127) 50%, rgb(87,109,136) 50%, rgb(106,129,155) 100%); 249 | background-image: -o-linear-gradient(bottom, rgb(80,102,127) 50%, rgb(87,109,136) 50%, rgb(106,129,155) 100%); 250 | background-image: -moz-linear-gradient(bottom, rgb(80,102,127) 50%, rgb(87,109,136) 50%, rgb(106,129,155) 100%); 251 | background-image: -webkit-linear-gradient(bottom, rgb(80,102,127) 50%, rgb(87,109,136) 50%, rgb(106,129,155) 100%); 252 | background-image: -ms-linear-gradient(bottom, rgb(80,102,127) 50%, rgb(87,109,136) 50%, rgb(106,129,155) 100%); 253 | 254 | background-image: -webkit-gradient( 255 | linear, 256 | left bottom, 257 | left top, 258 | color-stop(0.5, rgb(80,102,127)), 259 | color-stop(0.5, rgb(87,109,136)), 260 | color-stop(1, rgb(106,129,155)) 261 | ); 262 | } 263 | 264 | input[type=submit]:hover{ 265 | opacity:1; 266 | } 267 | 268 | input::-webkit-input-placeholder { 269 | color:#eee; 270 | } 271 | 272 | 273 | /*---------------------------- 274 | The Footer 275 | -----------------------------*/ 276 | 277 | 278 | footer{ 279 | background-color: #111111; 280 | bottom: 0; 281 | box-shadow: 0 -1px 2px #111111; 282 | height: 45px; 283 | left: 0; 284 | position: fixed; 285 | width: 100%; 286 | z-index: 100000; 287 | } 288 | 289 | footer h2{ 290 | color: #EEEEEE; 291 | font-size: 14px; 292 | font-weight: normal; 293 | left: 50%; 294 | margin-left: -400px; 295 | padding: 13px 0 0; 296 | position: absolute; 297 | width: 540px; 298 | } 299 | 300 | footer h2 i{ 301 | font-style:normal; 302 | color:#888; 303 | } 304 | 305 | footer a.tzine,a.tzine:visited{ 306 | color: #999999; 307 | font-size: 12px; 308 | left: 50%; 309 | margin: 16px 0 0 110px; 310 | position: absolute; 311 | text-decoration: none; 312 | top: 0; 313 | } 314 | 315 | footer a i{ 316 | color:#ccc; 317 | font-style: normal; 318 | } 319 | 320 | footer a i b{ 321 | color:#c92020; 322 | font-weight: normal; 323 | } 324 | -------------------------------------------------------------------------------- /Controller/assets/css/reset.css: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | /*重置样式*/ 3 | body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, form, fieldset, input, textarea, p, blockquote, th, td { 4 | margin:0; 5 | padding:0; 6 | } 7 | table { 8 | border-collapse:collapse; 9 | border-spacing:0; 10 | } 11 | fieldset, img { 12 | border:0; 13 | } 14 | address, caption, cite, code, dfn, em, strong, th, var { 15 | font-style:normal; 16 | font-weight:normal; 17 | } 18 | ol, ul,li { 19 | list-style:none; 20 | } 21 | caption, th { 22 | text-align:left; 23 | } 24 | h1, h2, h3, h4, h5, h6 { 25 | font-size:100%; 26 | font-weight:normal; 27 | } 28 | q:before, q:after { 29 | content:”; 30 | } 31 | abbr, acronym { 32 | border:0; 33 | } -------------------------------------------------------------------------------- /Controller/assets/css/selecthost.css: -------------------------------------------------------------------------------- 1 | html{ 2 | background:url('../img/bg_tile.jpg') #161718; 3 | } 4 | 5 | body { 6 | width: 600px; 7 | margin: 40px auto; 8 | font-family: 'trebuchet MS', 'Lucida sans', Arial; 9 | font-size: 14px; 10 | color: #2fe422; 11 | } 12 | 13 | table { 14 | *border-collapse: collapse; /* IE7 and lower */ 15 | border-spacing: 0; 16 | width: 100%; 17 | } 18 | 19 | .bordered { 20 | border: solid #ccc 1px; 21 | -moz-border-radius: 6px; 22 | -webkit-border-radius: 6px; 23 | border-radius: 6px; 24 | -webkit-box-shadow: 0 1px 1px #ccc; 25 | -moz-box-shadow: 0 1px 1px #ccc; 26 | box-shadow: 0 1px 1px #ccc; 27 | 28 | /* Enabling 3d space for the transforms */ 29 | -moz-transform-style: preserve-3d; 30 | -webkit-transform-style: preserve-3d; 31 | transform-style: preserve-3d; 32 | 33 | /* When the forms are flipped, they will be hidden */ 34 | -moz-backface-visibility: hidden; 35 | -webkit-backface-visibility: hidden; 36 | backface-visibility: hidden; 37 | 38 | /* Enabling a smooth animated transition */ 39 | -moz-transition:0.8s; 40 | -webkit-transition:0.8s; 41 | transition:0.8s; 42 | 43 | /* Configure a keyframe animation for Firefox */ 44 | -moz-animation: pulse 2s infinite; 45 | 46 | /* Configure it for Chrome and Safari */ 47 | -webkit-animation: pulse 2s infinite; 48 | } 49 | 50 | @-moz-keyframes pulse{ 51 | 0%{ box-shadow:0 0 5px #008aff;} 52 | 50%{ box-shadow:0 0 20px #008aff;} 53 | 100%{ box-shadow:0 0 5px #008aff;} 54 | } 55 | 56 | /* Webkit keyframe animation */ 57 | @-webkit-keyframes pulse{ 58 | 0%{ box-shadow:0 0 5px #008aff;} 59 | 50%{ box-shadow:0 0 20px #008aff;} 60 | 100%{ box-shadow:0 0 5px #008aff;} 61 | } 62 | 63 | .bordered tr:hover { 64 | background: #338aff; 65 | -o-transition: all 0.4s ease-in-out; 66 | -webkit-transition: all 0.4s ease-in-out; 67 | -moz-transition: all 0.4s ease-in-out; 68 | -ms-transition: all 0.4s ease-in-out; 69 | transition: all 0.4s ease-in-out; 70 | } 71 | 72 | .bordered td, .bordered th { 73 | border-left: 1px solid #ccc; 74 | border-top: 1px solid #ccc; 75 | padding: 10px; 76 | text-align: left; 77 | } 78 | 79 | .bordered th { 80 | background-color: #8b8b8b; 81 | background-image: -webkit-gradient(linear, left top, left bottom, from(#dfe0e0), to(#b3b3b3)); 82 | background-image: -webkit-linear-gradient(top, #dfe0e0, #b3b3b3); 83 | background-image: -moz-linear-gradient(top, #dfe0e0, #b3b3b3); 84 | background-image: -ms-linear-gradient(top, #dfe0e0, #b3b3b3); 85 | background-image: -o-linear-gradient(top, #dfe0e0, #b3b3b3); 86 | background-image: linear-gradient(top, #dfe0e0, #b3b3b3); 87 | -webkit-box-shadow: 0 1px 0 rgba(255,255,255,.8) inset; 88 | -moz-box-shadow:0 1px 0 rgba(255,255,255,.8) inset; 89 | box-shadow: 0 1px 0 rgba(255,255,255,.8) inset; 90 | border-top: none; 91 | text-shadow: 0 1px 0 rgba(255,255,255,.5); 92 | } 93 | 94 | .bordered td:first-child, .bordered th:first-child { 95 | border-left: none; 96 | } 97 | 98 | .bordered th:first-child { 99 | -moz-border-radius: 6px 0 0 0; 100 | -webkit-border-radius: 6px 0 0 0; 101 | border-radius: 6px 0 0 0; 102 | } 103 | 104 | .bordered th:last-child { 105 | -moz-border-radius: 0 6px 0 0; 106 | -webkit-border-radius: 0 6px 0 0; 107 | border-radius: 0 6px 0 0; 108 | } 109 | 110 | .bordered th:only-child{ 111 | -moz-border-radius: 6px 6px 0 0; 112 | -webkit-border-radius: 6px 6px 0 0; 113 | border-radius: 6px 6px 0 0; 114 | } 115 | 116 | .bordered tr:last-child td:first-child { 117 | -moz-border-radius: 0 0 0 6px; 118 | -webkit-border-radius: 0 0 0 6px; 119 | border-radius: 0 0 0 6px; 120 | } 121 | 122 | .bordered tr:last-child td:last-child { 123 | -moz-border-radius: 0 0 6px 0; 124 | -webkit-border-radius: 0 0 6px 0; 125 | border-radius: 0 0 6px 0; 126 | } 127 | 128 | 129 | 130 | /*----------------------*/ 131 | 132 | .zebra td, .zebra th { 133 | padding: 10px; 134 | border-bottom: 2px solid #f2f200; 135 | } 136 | 137 | .zebra tbody tr:nth-child(even) { 138 | background: #f5f5f5; 139 | -webkit-box-shadow: 0 1px 0 rgba(255,255,255,.8) inset; 140 | -moz-box-shadow:0 1px 0 rgba(255,255,255,.8) inset; 141 | box-shadow: 0 1px 0 rgba(255,255,255,.8) inset; 142 | } 143 | 144 | .zebra th { 145 | text-align: left; 146 | text-shadow: 0 1px 0 rgba(255,255,255,.5); 147 | border-bottom: 1px solid #ccc; 148 | background-color: #eee; 149 | background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#eee)); 150 | background-image: -webkit-linear-gradient(top, #f5f5f5, #eee); 151 | background-image: -moz-linear-gradient(top, #f5f5f5, #eee); 152 | background-image: -ms-linear-gradient(top, #f5f5f5, #eee); 153 | background-image: -o-linear-gradient(top, #f5f5f5, #eee); 154 | background-image: linear-gradient(top, #f5f5f5, #eee); 155 | } 156 | 157 | .zebra th:first-child { 158 | -moz-border-radius: 6px 0 0 0; 159 | -webkit-border-radius: 6px 0 0 0; 160 | border-radius: 6px 0 0 0; 161 | } 162 | 163 | .zebra th:last-child { 164 | -moz-border-radius: 0 6px 0 0; 165 | -webkit-border-radius: 0 6px 0 0; 166 | border-radius: 0 6px 0 0; 167 | } 168 | 169 | .zebra th:only-child{ 170 | -moz-border-radius: 6px 6px 0 0; 171 | -webkit-border-radius: 6px 6px 0 0; 172 | border-radius: 6px 6px 0 0; 173 | } 174 | 175 | .zebra tfoot td { 176 | border-bottom: 0; 177 | border-top: 1px solid #fff; 178 | background-color: #f1f1f1; 179 | } 180 | 181 | .zebra tfoot td:first-child { 182 | -moz-border-radius: 0 0 0 6px; 183 | -webkit-border-radius: 0 0 0 6px; 184 | border-radius: 0 0 0 6px; 185 | } 186 | 187 | .zebra tfoot td:last-child { 188 | -moz-border-radius: 0 0 6px 0; 189 | -webkit-border-radius: 0 0 6px 0; 190 | border-radius: 0 0 6px 0; 191 | } 192 | 193 | .zebra tfoot td:only-child{ 194 | -moz-border-radius: 0 0 6px 6px; 195 | -webkit-border-radius: 0 0 6px 6px 196 | border-radius: 0 0 6px 6px 197 | } -------------------------------------------------------------------------------- /Controller/assets/css/smartMenu.css: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | /* smartMenu.css by zhangxinxu */ 3 | .smart_menu_box{display:none; width:140px; position:absolute; z-index:201105;} 4 | .smart_menu_body{padding:1px; border:1px solid #B8CBCB; background-color:#fff; -moz-box-shadow:2px 2px 5px #666; -webkit-box-shadow:2px 2px 5px #666; box-shadow:2px 2px 5px #666;} 5 | .smart_menu_ul{margin:0; padding:0; list-style-type:none;} 6 | .smart_menu_li{position:relative;} 7 | .smart_menu_a{display:block; height:25px; line-height:24px; padding:0 5px 0 25px; color:#000; font-size:12px; text-decoration:none; overflow:hidden;} 8 | .smart_menu_a:hover, .smart_menu_a_hover{background-color:#348CCC; color:#fff; text-decoration:none;} 9 | .smart_menu_li_separate{line-height:0; margin:3px; border-bottom:1px solid #B8CBCB; font-size:0;} 10 | .smart_menu_triangle{width:0; height:0; border:5px dashed transparent; border-left:5px solid #666; overflow:hidden; position:absolute; top:7px; right:5px;} 11 | .smart_menu_a:hover .smart_menu_triangle, .smart_menu_a_hover .smart_menu_triangle{border-left-color:#fff;} 12 | .smart_menu_li_hover .smart_menu_box{top:-1px; left:130px;} 13 | 14 | 15 | -------------------------------------------------------------------------------- /Controller/assets/css/taskmanager.css: -------------------------------------------------------------------------------- 1 | .task-manager{position:absolute;left:0;top:0} 2 | .task-manager .ai-list tr td{cursor:pointer} 3 | 4 | .task-manager .ai-list i.icon-playing{float:left;margin-top:8px;display:none} 5 | .task-manager .ai-list tr td.name div.text{float:left} 6 | 7 | .ai-list{width:800px;table-layout: fixed;border:0} 8 | .ai-list tr td{padding:0 5px;width:800px;} 9 | 10 | .ai-list thead tr td{background:url("../img/ui/repeat_x.png") repeat-x 0 -42px;border-right:1px solid #CCC;line-height:20px;height:23px} 11 | .ai-list thead tr td.clickable{cursor:pointer} 12 | .ai-list thead tr div.column-title{width:100%;height:23px;position:relative;line-height:23px} 13 | 14 | .ai-list thead tr td.select{text-align:left;width:16px} 15 | .ai-list tbody tr td.select{text-align:left;width:16px} 16 | 17 | .ai-list thead tr td.name{text-align:left;width:180px} 18 | .ai-list tbody tr td.name{text-align:left;width:180px} 19 | 20 | .ai-list thead tr td.pid{text-align:left;width:70px} 21 | .ai-list tbody tr td.pid{text-align:left;width:70px} 22 | 23 | .ai-list thead tr td.user{text-align:left;width:160px} 24 | .ai-list tbody tr td.user{text-align:left;width:160px} 25 | 26 | .ai-list thead tr td.mem{text-align:left;width:80px} 27 | .ai-list tbody tr td.mem{text-align:left;width:80px} 28 | 29 | .ai-list thead tr td.path{text-align:left;width:202px} 30 | .ai-list tbody tr td.path{text-align:left;width:200px} 31 | 32 | .ai-list tbody tr{background:#f1f1f1} 33 | .ai-list tbody tr:nth-child(even){background:#ebecee} 34 | .ai-list tbody tr:hover{background:#FFF} 35 | .ai-list tbody tr td{line-height:34px;border-bottom:1px solid #ddd} 36 | .ai-list tbody td div.text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;-ms-text-overflow:ellipsis} 37 | .ai-list .select{width:16px;text-align:right;padding-left:5px} 38 | .ai-list .select div{vertical-align:middle;margin-bottom:2px} 39 | 40 | .checkbox,.checkbox_all{background:url("../img/ui/tools.png") no-repeat -349px -110px;cursor:pointer;display:inline-block;height:16px;width:16px} 41 | .checkbox.disabled,.checkbox_all.disabled{background-position:-349px -136px;cursor:default} 42 | .checkbox.checked,.checkbox_all.checked{background-position:-349px -162px} 43 | -------------------------------------------------------------------------------- /Controller/assets/img/Register_form_bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/Register_form_bg.jpg -------------------------------------------------------------------------------- /Controller/assets/img/bg_center.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/bg_center.jpg -------------------------------------------------------------------------------- /Controller/assets/img/bg_tile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/bg_tile.jpg -------------------------------------------------------------------------------- /Controller/assets/img/clean_form_bg1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/clean_form_bg1.jpg -------------------------------------------------------------------------------- /Controller/assets/img/click_here.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/click_here.png -------------------------------------------------------------------------------- /Controller/assets/img/icons/camera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/icons/camera.png -------------------------------------------------------------------------------- /Controller/assets/img/icons/clipboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/icons/clipboard.png -------------------------------------------------------------------------------- /Controller/assets/img/icons/cmd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/icons/cmd.png -------------------------------------------------------------------------------- /Controller/assets/img/icons/desktop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/icons/desktop.png -------------------------------------------------------------------------------- /Controller/assets/img/icons/document.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/icons/document.png -------------------------------------------------------------------------------- /Controller/assets/img/icons/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/icons/download.png -------------------------------------------------------------------------------- /Controller/assets/img/icons/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/icons/favicon.ico -------------------------------------------------------------------------------- /Controller/assets/img/icons/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/icons/home.png -------------------------------------------------------------------------------- /Controller/assets/img/icons/janitor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/icons/janitor.png -------------------------------------------------------------------------------- /Controller/assets/img/icons/js.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/icons/js.png -------------------------------------------------------------------------------- /Controller/assets/img/icons/keyboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/icons/keyboard.png -------------------------------------------------------------------------------- /Controller/assets/img/icons/message.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/icons/message.png -------------------------------------------------------------------------------- /Controller/assets/img/icons/register.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/icons/register.png -------------------------------------------------------------------------------- /Controller/assets/img/icons/server.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/icons/server.png -------------------------------------------------------------------------------- /Controller/assets/img/icons/tasks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/icons/tasks.png -------------------------------------------------------------------------------- /Controller/assets/img/login_form_bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/login_form_bg.jpg -------------------------------------------------------------------------------- /Controller/assets/img/ui/add_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/ui/add_icon.png -------------------------------------------------------------------------------- /Controller/assets/img/ui/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/ui/bg.png -------------------------------------------------------------------------------- /Controller/assets/img/ui/bg_task_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/ui/bg_task_b.png -------------------------------------------------------------------------------- /Controller/assets/img/ui/default_appbtn_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/ui/default_appbtn_bg.png -------------------------------------------------------------------------------- /Controller/assets/img/ui/developing.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/ui/developing.jpg -------------------------------------------------------------------------------- /Controller/assets/img/ui/dock_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/ui/dock_b.png -------------------------------------------------------------------------------- /Controller/assets/img/ui/dock_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/ui/dock_top.png -------------------------------------------------------------------------------- /Controller/assets/img/ui/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/ui/file.png -------------------------------------------------------------------------------- /Controller/assets/img/ui/file_loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/ui/file_loading.gif -------------------------------------------------------------------------------- /Controller/assets/img/ui/grid_dir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/ui/grid_dir.png -------------------------------------------------------------------------------- /Controller/assets/img/ui/grid_dirempty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/ui/grid_dirempty.png -------------------------------------------------------------------------------- /Controller/assets/img/ui/iconTextbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/ui/iconTextbg.png -------------------------------------------------------------------------------- /Controller/assets/img/ui/iconTextbg_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/ui/iconTextbg_right.png -------------------------------------------------------------------------------- /Controller/assets/img/ui/icon_over.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/ui/icon_over.png -------------------------------------------------------------------------------- /Controller/assets/img/ui/item-child.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/ui/item-child.png -------------------------------------------------------------------------------- /Controller/assets/img/ui/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/ui/loading.gif -------------------------------------------------------------------------------- /Controller/assets/img/ui/lr_btn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/ui/lr_btn.png -------------------------------------------------------------------------------- /Controller/assets/img/ui/repeat_x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/ui/repeat_x.png -------------------------------------------------------------------------------- /Controller/assets/img/ui/show-desktop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/ui/show-desktop.png -------------------------------------------------------------------------------- /Controller/assets/img/ui/start_item_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/ui/start_item_bg.png -------------------------------------------------------------------------------- /Controller/assets/img/ui/start_itembtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/ui/start_itembtn.png -------------------------------------------------------------------------------- /Controller/assets/img/ui/taskHdBtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/ui/taskHdBtn.png -------------------------------------------------------------------------------- /Controller/assets/img/ui/titlebar_bg_cur.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/ui/titlebar_bg_cur.png -------------------------------------------------------------------------------- /Controller/assets/img/ui/tools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/ui/tools.png -------------------------------------------------------------------------------- /Controller/assets/img/ui/tools_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/ui/tools_2.png -------------------------------------------------------------------------------- /Controller/assets/img/ui/tools_mini.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/ui/tools_mini.png -------------------------------------------------------------------------------- /Controller/assets/img/ui/windowBtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/img/ui/windowBtn.png -------------------------------------------------------------------------------- /Controller/assets/js/TaskManager.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function(){ 2 | Array.prototype.RemoveByValue=function(value) 3 | { 4 | for(var index=0;index
'); 19 | } 20 | 21 | function ShowDlg(dlgName,dlgLable,idYesBtn,promptNoBtn,oldVlue){ 22 | var inputBox; 23 | if(oldVlue) 24 | { 25 | inputBox=''; 26 | } 27 | else 28 | { 29 | inputBox="
"; 30 | } 31 | $("#task_grid").append( 32 | '

' 33 | +dlgName+ 34 | '

' 35 | +dlgLable+ 36 | ''+inputBox+'

'); 41 | } 42 | 43 | var SelectedTask=new Array(); 44 | 45 | function TaskOperator(cmd_content) 46 | { 47 | $.ajax({ 48 | "type": "POST", 49 | "url" : "../function/AddCommand.php", 50 | "data": {"cmd_type" : "12","cmd_content" : cmd_content}, 51 | "success" : function(cmdid){ 52 | $.ajax({ 53 | //async : false, 54 | "type": "POST", 55 | "url" : "../function/GetResult.php", 56 | "data": {"cmd_id" : cmdid}, 57 | "success": function(result) 58 | { 59 | if(Base64Decode(result)=="Success") 60 | { 61 | RefreshTaskList(); 62 | } 63 | else 64 | { 65 | alert(strAnsi2Unicode(Base64Decode(result))); 66 | RefreshTaskList(); 67 | } 68 | 69 | } 70 | }); 71 | } 72 | }); 73 | $("#confirm-overlay").detach(); 74 | $("#confirm-container").detach(); 75 | } 76 | 77 | $("#new").click(function(){ 78 | ShowDlg("运行","打开:","run_dlg_yes","run_dlg_no","程序路径"); 79 | $("#run_dlg_yes").bind("click",function(){ 80 | if($("#prompInput").attr("value")=="程序路径"||$("#prompInput").attr("value")=="") 81 | { 82 | $('[class="info"]').html("请输入程序名称或路径!"); 83 | return; 84 | } 85 | var cmd_content='{"operate":"run","path":"'+Base64Encode($("#prompInput").attr("value"))+'"}'; 86 | TaskOperator(cmd_content); 87 | 88 | }); 89 | 90 | $("#prompInput").bind("click",function(){ 91 | if($("#prompInput").attr("value")=="程序路径") 92 | { 93 | $("#prompInput").attr("value",""); 94 | } 95 | 96 | }); 97 | $("#run_dlg_no").bind("click",function(){ 98 | $("#confirm-overlay").detach(); 99 | $("#confirm-container").detach(); 100 | 101 | }); 102 | }); 103 | 104 | $("#msg_dlg_yes").live("click",function(){ 105 | $("#confirm-overlay").detach(); 106 | $("#confirm-container").detach(); 107 | 108 | }); 109 | $("#msg_dlg_no").live("click",function(){ 110 | $("#confirm-overlay").detach(); 111 | $("#confirm-container").detach(); 112 | 113 | }); 114 | 115 | $("#terminal").click(function(){ 116 | if(SelectedTask.length==0) 117 | { 118 | ShowDlg("未选中任何进程","请先选择你想要结束的进程,再执行此操作","msg_dlg_yes","msg_dlg_no",""); 119 | return; 120 | } 121 | var killlist=new Array(); 122 | for(var i=0;i
' 160 | +json[i].name+'
' 161 | +json[i].pid+'
' 162 | +json[i].user+'
' 163 | +json[i].mem+'
'+json[i].path+'
'); 165 | } 166 | 167 | 168 | } 169 | }); 170 | } 171 | }); 172 | } 173 | 174 | RefreshTaskList(); 175 | $("[class='process-item']").live("click",function(){ 176 | //alert($(this).attr("pid")); 177 | }); 178 | 179 | $("[class='checkbox']").live("click",function(){ 180 | $(this).attr("check","1"); 181 | $(this).addClass("checked"); 182 | SelectedTask.push({"pid":$(this).parent().parent().attr("pid"), 183 | "name":$(this).parent().parent().attr("name"), 184 | "path":$(this).parent().parent().attr("path")}); 185 | }); 186 | 187 | $("[class='checkbox checked']").live("click",function(){ 188 | $(this).attr("check","0"); 189 | $(this).removeClass("checked"); 190 | SelectedTask.RemoveByValue({"pid":$(this).parent().parent().attr("pid"), 191 | "name":$(this).parent().parent().attr("name"), 192 | "path":$(this).parent().parent().attr("path")}); 193 | }); 194 | }); -------------------------------------------------------------------------------- /Controller/assets/js/console.js: -------------------------------------------------------------------------------- 1 | //修改自LomoX的colin3dmax大侠的Js调试器,非常感谢 2 | var prompt; 3 | var version; 4 | var editor; 5 | var author; 6 | var title; 7 | var quit; 8 | var cursor; 9 | var echo; //是否显示提示符 10 | var historyCmd; //存放历史记录 11 | var sr_controller=new Array(); 12 | var first_cmd_id; 13 | var first_response=0; 14 | function changeCaret(){ 15 | if($("#caret").hasClass("light")){ 16 | $("#caret").removeClass("light"); 17 | $("#caret").addClass("unlight"); 18 | }else{ 19 | $("#caret").removeClass("unlight"); 20 | $("#caret").addClass("light"); 21 | } 22 | //$("#inputBuf").focus(); //这里导致在其它框架中输入时焦点被抢占 23 | } 24 | function lightCaret(){ 25 | setInterval("changeCaret()",500); 26 | } 27 | 28 | function createANewLine(){ 29 | $("#caret").remove(); 30 | $(".editBefore:first").removeClass("editBefore"); 31 | $(".editAfter:first").removeClass("editAfter"); 32 | 33 | if(typeof(prompt)==="function"){ 34 | $(".console").append("
"+(echo?prompt():"")+cursor); 35 | }else{ 36 | $(".console").append("
"+(echo?""+prompt+"":"")+cursor); 37 | } 38 | } 39 | function printErr(info){ 40 | print(info,"errorMessage"); 41 | } 42 | function printMsg(info,cmd_result){ 43 | print(info,"message",cmd_result); 44 | } 45 | function print(info,className,cmd_result) 46 | { 47 | $(".console").append("
"+info+""); 48 | } 49 | function clear(){ 50 | first_response=0; 51 | for (x in sr_controller) 52 | { 53 | clearInterval(sr_controller[x]); 54 | sr_controller[x]=null; 55 | } 56 | $(".console").empty(); 57 | $("#inputBuf").focus(); 58 | } 59 | 60 | 61 | function exit(){ 62 | window.close(); 63 | } 64 | 65 | function replace_code(textvalue) 66 | { 67 | var s = ""; 68 | if (textvalue.length == 0) return ""; 69 | s = textvalue.replace(/&/g, ">"); 70 | s = s.replace(//g, ">"); 72 | s = s.replace(/ /g, " "); 73 | // s = s.replace(/\'/g, "&#;"); 74 | s = s.replace(/\"/g, """); 75 | // s = s.replace(/\n/g, "
"); //替换后在Chrome下不好看,不替换IE下无换行 76 | return s; 77 | } 78 | 79 | function addcommand(cmd_content) 80 | { 81 | //$cmd_type = addslashes($_POST['cmd_type']); 82 | //$cmd_content = addslashes($_POST['cmd_content']); 83 | var cmd_post_data="cmd_type=0&cmd_content="+cmd_content; 84 | var ac_xmlhttp; 85 | if (window.XMLHttpRequest) 86 | { 87 | ac_xmlhttp=new XMLHttpRequest(); 88 | } 89 | else 90 | { 91 | ac_xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 92 | } 93 | ac_xmlhttp.onreadystatechange=function() 94 | { 95 | if (ac_xmlhttp.readyState==4 && ac_xmlhttp.status==200) 96 | { 97 | current_cmdid=ac_xmlhttp.responseText; 98 | if(first_response==0) 99 | { 100 | first_cmd_id=current_cmdid; 101 | first_response=1; 102 | } 103 | //showresult(current_cmdid); 104 | getresult(current_cmdid) 105 | printMsg("正在获取结果...",("cmd_result_lable_"+(current_cmdid-first_cmd_id))); 106 | createANewLine(); 107 | ac_xmlhttp=null; 108 | } 109 | } 110 | ac_xmlhttp.open("POST","../function/AddCommand.php",true); 111 | ac_xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 112 | ac_xmlhttp.send(cmd_post_data); 113 | } 114 | // function showresult(current_cmdid) 115 | // { 116 | // sr_controller[current_cmdid-first_cmd_id]=setInterval(_getresult(current_cmdid),200); 117 | // } 118 | // function _getresult(current_cmdid) 119 | // { 120 | // return function(){getresult(current_cmdid);} 121 | // }//短轮询时留下的 122 | function getresult(current_cmdid) 123 | { 124 | var gr_xmlhttp; 125 | if (window.XMLHttpRequest) 126 | { 127 | gr_xmlhttp=new XMLHttpRequest(); 128 | } 129 | else 130 | { 131 | gr_xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 132 | } 133 | gr_xmlhttp.onreadystatechange=function() 134 | { 135 | if (gr_xmlhttp.readyState==4 && gr_xmlhttp.status==200) 136 | { 137 | //document.getElementById("AddResult").innerHTML=gr_xmlhttp.responseText; 138 | //alert(gr_xmlhttp.responseText); 139 | var base64test = /[^A-Za-z0-9/+///=]/g; 140 | if (base64test.exec(gr_xmlhttp.responseText)||gr_xmlhttp.responseText=="TIMEOUT") 141 | { 142 | getresult(current_cmdid); 143 | } 144 | else 145 | { 146 | //alert(strAnsi2Unicode(Base64Decode(gr_xmlhttp.responseText))); 147 | //clearInterval(sr_controller[current_cmdid-first_cmd_id]); 148 | //printMsg(replace_code(strAnsi2Unicode(Base64Decode(gr_xmlhttp.responseText)))); 149 | cmd_selector="#"+("cmd_result_lable_"+(current_cmdid-first_cmd_id)); 150 | $(cmd_selector).html(replace_code(strAnsi2Unicode(Base64Decode(gr_xmlhttp.responseText)))); 151 | //alert($("#consoleClient").scrollTop()); 152 | $("#consoleClient").animate({scrollTop:$("#consoleClient").height()*1000},1000); 153 | gr_xmlhttp=null; 154 | //createANewLine(); 155 | $("#inputBuf").focus(); 156 | $(".editBefore:first").text($(".editBefore:first").text().substring(0,$(".editBefore:first").text().length-1)); 157 | 158 | } 159 | } 160 | } 161 | gr_xmlhttp.open("POST","../function/GetResult.php",true); 162 | gr_xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 163 | gr_xmlhttp.send("cmd_id="+current_cmdid); 164 | } 165 | 166 | function doCmd(){ 167 | var cmd=$(".editBefore:first").text()+$("#caret").text()+$(".editAfter:first").text(); 168 | // cmd=cmd.trim(); 169 | try{ 170 | if($.trim(cmd)==="cls" || $.trim(cmd)==="clear") 171 | { 172 | clear(); 173 | } 174 | else 175 | { 176 | if($.trim(cmd)==="") 177 | { 178 | return; 179 | } 180 | addcommand($.trim(cmd)); 181 | $("#consoleClient").animate({scrollTop:$("#consoleClient").height()*1000},1000); 182 | } 183 | }catch(e){ 184 | printErr(e.name+":"+e.message); 185 | }finally{ 186 | historyCmd.put(cmd); 187 | } 188 | } 189 | 190 | function init(){ 191 | 192 | $("#ClearBtn").click(function(event){ 193 | clear(); 194 | createANewLine(); 195 | }); 196 | $("#CloseBtn").click(function(event){ 197 | exit(); 198 | }); 199 | 200 | quit=false; 201 | echo=true; 202 | prompt=">"; 203 | version="0.0.1"; 204 | editor="Windows Command Emulator"; 205 | author="SinSoul"; 206 | title=editor+" [版本 "+version+" ]
版权所有(C) 2012 "+author+"。保留所有权利。" 207 | cursor=" "; 208 | historyCmd={ 209 | id:0, 210 | content:new Array(), 211 | put:function(str){ 212 | this.content.push(str); 213 | this.id=this.content.length; 214 | }, 215 | forward:function(){ 216 | if(this.id0)this.id--; 224 | var cmd = this.content[this.id]; 225 | return cmd; 226 | } 227 | }; 228 | 229 | 230 | $(".console").append(title); 231 | createANewLine(); 232 | lightCaret(); 233 | $("#inputBuf").bind("keyup",function(event){ 234 | if(event.keyCode===13){ 235 | $("#inputBuf").val(""); 236 | return; 237 | } 238 | var value = $(".editBefore:first").text()+$("#inputBuf").val(); 239 | $(".editBefore:first").text(value); 240 | $("#inputBuf").val(""); 241 | 242 | }); 243 | $("#inputBuf").bind("keypress",function(event){ 244 | event = (event)?event:((window.event)?window.event:" ") 245 | key = event.keyCode?event.keyCode:(event.which?ev.which:event.charCode); 246 | if(key===13){ 247 | doCmd(); 248 | var world=$("#caret").text(); 249 | if(world!=" "){ 250 | $(".editAfter:first").text(world+$(".editAfter:first").text()); 251 | } 252 | $("#inputBuf").val(""); 253 | return; 254 | } 255 | var value = $(".editBefore:first").text()+$("#inputBuf").val(); 256 | $(".editBefore:first").text(value); 257 | $("#inputBuf").val(""); 258 | switch(event.keyCode){ 259 | case 8: 260 | $(".editBefore:first").text($(".editBefore:first").text().substring(0,$(".editBefore:first").text().length-1)); 261 | break; 262 | case 37: 263 | if($(".editBefore:first").text().length > 0){ 264 | $(".editAfter:first").text($("#caret").text()+$(".editAfter:first").text()); 265 | var world=$(".editBefore:first").text().substring($(".editBefore:first").text().length-1); 266 | $("#caret").text(world); 267 | $(".editBefore:first").text($(".editBefore:first").text().substring(0,$(".editBefore:first").text().length-1)); 268 | } 269 | break; 270 | case 38: 271 | $(".editBefore:first").text(historyCmd.back()); 272 | $(".editAfter:first").text(""); 273 | $("#caret").text(" "); 274 | break; 275 | case 39: 276 | if($(".editAfter:first").text().length > 0){ 277 | $(".editBefore:first").text($(".editBefore:first").text()+$("#caret").text()); 278 | var world=$(".editAfter:first").text().substring(0,1); 279 | $("#caret").text(world); 280 | $(".editAfter:first").text($(".editAfter:first").text().substring(1,$(".editAfter:first").text().length)); 281 | } 282 | break; 283 | case 40: 284 | if(historyCmd.id 0){ 292 | var world=$(".editAfter:first").text().substring(0,1); 293 | $("#caret").text(world); 294 | $(".editAfter:first").text($(".editAfter:first").text().substring(1,$(".editAfter:first").text().length)); 295 | } 296 | break; 297 | } 298 | 299 | 300 | }); 301 | 302 | if(!$.browser.mozilla) 303 | $("#inputBuf").bind("keydown",function(event){ 304 | event = (event)?event:((window.event)?window.event:" ") 305 | key = event.keyCode?event.keyCode:(event.which?ev.which:event.charCode); 306 | switch(event.keyCode){ 307 | case 8: 308 | $(".editBefore:first").text($(".editBefore:first").text().substring(0,$(".editBefore:first").text().length-1)); 309 | break; 310 | case 37: 311 | if($(".editBefore:first").text().length > 0){ 312 | $(".editAfter:first").text($("#caret").text()+$(".editAfter:first").text()); 313 | var world=$(".editBefore:first").text().substring($(".editBefore:first").text().length-1); 314 | $("#caret").text(world); 315 | $(".editBefore:first").text($(".editBefore:first").text().substring(0,$(".editBefore:first").text().length-1)); 316 | } 317 | break; 318 | case 38: 319 | $(".editBefore:first").text(historyCmd.back()); 320 | $(".editAfter:first").text(""); 321 | $("#caret").text(" "); 322 | break; 323 | case 39: 324 | if($(".editAfter:first").text().length > 0){ 325 | $(".editBefore:first").text($(".editBefore:first").text()+$("#caret").text()); 326 | var world=$(".editAfter:first").text().substring(0,1); 327 | $("#caret").text(world); 328 | $(".editAfter:first").text($(".editAfter:first").text().substring(1,$(".editAfter:first").text().length)); 329 | } 330 | break; 331 | case 40: 332 | if(historyCmd.id 0){ 340 | var world=$(".editAfter:first").text().substring(0,1); 341 | $("#caret").text(world); 342 | $(".editAfter:first").text($(".editAfter:first").text().substring(1,$(".editAfter:first").text().length)); 343 | } 344 | break; 345 | } 346 | 347 | }); 348 | $("#inputBuf").focus(); 349 | $(".console").click(function(){ 350 | $("#inputBuf").focus(); 351 | }); 352 | } 353 | $(function(){ 354 | init(); 355 | }); -------------------------------------------------------------------------------- /Controller/assets/js/jquery-smartMenu-min.js: -------------------------------------------------------------------------------- 1 | (function(a){var b=a(document).data("func",{}),c=a("body");a.smartMenu=a.noop;a.fn.smartMenu=function(g,d){var h={name:"",offsetX:2,offsetY:2,textLimit:6,beforeShow:a.noop,afterShow:a.noop};var i=a.extend(h,d||{});var f=function(k){var m=k||g,j=k?Math.random().toString():i.name,o="",n="",l="smart_menu_";if(a.isArray(m)&&m.length){o='
    ';a.each(m,function(q,p){if(q){o=o+'
  •  
  • '}if(a.isArray(p)){a.each(p,function(s,v){var w=v.text,u="",r="",t=Math.random().toString().replace(".","");if(w){if(w.length>i.textLimit){w=w.slice(0,i.textLimit)+"…";r=' title="'+v.text+'"'}if(a.isArray(v.data)&&v.data.length){u='
  • '+f(v.data)+''+w+"
  • "}else{u='
  • '+w+"
  • "}o+=u;var x=b.data("func");x[t]=v.func;b.data("func",x)}})}});o=o+"
"}return o},e=function(){var j="#smartMenu_",l="smart_menu_",k=a(j+i.name);if(!k.size()){a("body").append(f());a(j+i.name+" a").bind("click",function(){var m=a(this).attr("data-key"),n=b.data("func")[m];if(a.isFunction(n)){n.call(b.data("trigger"))}a.smartMenu.hide();return false});a(j+i.name+" li").each(function(){var m=a(this).attr("data-hover"),n=l+"li_hover";if(m){a(this).hover(function(){a(this).addClass(n).children("."+l+"box").show();a(this).children("."+l+"a").addClass(l+"a_hover")},function(){a(this).removeClass(n).children("."+l+"box").hide();a(this).children("."+l+"a").removeClass(l+"a_hover")})}});return a(j+i.name)}return k};a(this).each(function(){this.oncontextmenu=function(l){if(a.isFunction(i.beforeShow)){i.beforeShow.call(this)}l=l||window.event;l.cancelBubble=true;if(l.stopPropagation){l.stopPropagation()}a.smartMenu.hide();var k=b.scrollTop();var j=e();if(j){j.css({display:"block",left:l.clientX+i.offsetX,top:l.clientY+k+i.offsetY});b.data("target",j);b.data("trigger",this);if(a.isFunction(i.afterShow)){i.afterShow.call(this)}return false}}});if(!c.data("bind")){c.bind("click",a.smartMenu.hide).data("bind",true)}};a.extend(a.smartMenu,{hide:function(){var d=b.data("target");if(d&&d.css("display")==="block"){d.hide()}},remove:function(){var d=b.data("target");if(d){d.remove()}}})})(jQuery); -------------------------------------------------------------------------------- /Controller/assets/js/jquery.hotkeys.min.js: -------------------------------------------------------------------------------- 1 | (function(jQuery){jQuery.fn.__bind__=jQuery.fn.bind;jQuery.fn.__unbind__=jQuery.fn.unbind;jQuery.fn.__find__=jQuery.fn.find;var hotkeys={version:'0.7.9',override:/keypress|keydown|keyup/g,triggersMap:{},specialKeys:{27:'esc',9:'tab',32:'space',13:'return',8:'backspace',145:'scroll',20:'capslock',144:'numlock',19:'pause',45:'insert',36:'home',46:'del',35:'end',33:'pageup',34:'pagedown',37:'left',38:'up',39:'right',40:'down',109:'-',112:'f1',113:'f2',114:'f3',115:'f4',116:'f5',117:'f6',118:'f7',119:'f8',120:'f9',121:'f10',122:'f11',123:'f12',191:'/'},shiftNums:{"`":"~","1":"!","2":"@","3":"#","4":"$","5":"%","6":"^","7":"&","8":"*","9":"(","0":")","-":"_","=":"+",";":":","'":"\"",",":"<",".":">","/":"?","\\":"|"},newTrigger:function(type,combi,callback){var result={};result[type]={};result[type][combi]={cb:callback,disableInInput:false};return result;}};hotkeys.specialKeys=jQuery.extend(hotkeys.specialKeys,{96:'0',97:'1',98:'2',99:'3',100:'4',101:'5',102:'6',103:'7',104:'8',105:'9',106:'*',107:'+',109:'-',110:'.',111:'/'});jQuery.fn.find=function(selector){this.query=selector;return jQuery.fn.__find__.apply(this,arguments);};jQuery.fn.unbind=function(type,combi,fn){if(jQuery.isFunction(combi)){fn=combi;combi=null;} 2 | if(combi&&typeof combi==='string'){var selectorId=((this.prevObject&&this.prevObject.query)||(this[0].id&&this[0].id)||this[0]).toString();var hkTypes=type.split(' ');for(var x=0;x 255)){ 32 | intLength=intLength+2; 33 | }else{ 34 | intLength=intLength+1; 35 | } 36 | } 37 | return intLength 38 | }, 39 | //加载进度条 40 | progressBar:function(){ 41 | $("
加载中......
").appendTo('body'); 42 | var w=$(window).width(),h=$(window).height(); 43 | $('#myCover').css({'width':'100%','height':h,'position':'absolute','background':'#fff','z-index':9999,'left':0,'top':0}).fadeTo('slow',0.8); 44 | $('#loadimg').css({'position':'absolute','background':'url(../assets/img/ui/loading.gif) no-repeat center center','z-index':10000,'width':'110px','height':'64px','left':(w-110)/2,'top':((h-64)/2)-50}).find('span').css({'position':'absolute','left':0,'bottom':'-40px','width':110,'display':'block','height':40,'text-align':'center'}); 45 | }, 46 | //停止进度条 47 | stopProgress:function(){ 48 | $('#myCover').remove(); 49 | $('#loadimg').remove(); 50 | }, 51 | getImgWh:function(url, callback) { 52 | var width, height, intervalId, check, div, img = new Image(), 53 | body = document.body; 54 | img.src = url; 55 | 56 | //从缓存中读取 57 | if (img.complete) { 58 | return callback(img.width, img.height); 59 | }; 60 | 61 | //通过占位提前获取图片头部数据 62 | if (body) { 63 | div = document.createElement('div'); 64 | div.style.cssText = 'visibility:hidden;position:absolute;left:0;top:0;width:1px;height:1px;overflow:hidden'; 65 | div.appendChild(img) 66 | body.appendChild(div); 67 | width = img.offsetWidth; 68 | height = img.offsetHeight; 69 | check = function() { 70 | if (img.offsetWidth !== width || img.offsetHeight !== height) { 71 | clearInterval(intervalId); 72 | callback(img.offsetWidth, img.clientHeight); 73 | img.onload = null; 74 | div.innerHTML = ''; 75 | div.parentNode.removeChild(div); 76 | }; 77 | }; 78 | intervalId = setInterval(check, 150); 79 | }; 80 | // 加载完毕后方式获取 81 | img.onload = function() { 82 | callback(img.width, img.height); 83 | img.onload = img.onerror = null; 84 | clearInterval(intervalId); 85 | body && img.parentNode.removeChild(img); 86 | }; 87 | }, 88 | //全屏 89 | fullscreen:function(){ 90 | var docElm = document.documentElement; 91 | if (docElm.requestFullscreen) { 92 | docElm.requestFullscreen(); 93 | } 94 | else if (docElm.mozRequestFullScreen) { 95 | docElm.mozRequestFullScreen(); 96 | } 97 | else if (docElm.webkitRequestFullScreen) { 98 | docElm.webkitRequestFullScreen(); 99 | } 100 | }, 101 | //退出全屏 102 | exitFullscreen:function(){ 103 | if (document.exitFullscreen) { 104 | document.exitFullscreen(); 105 | } 106 | else if (document.mozCancelFullScreen) { 107 | document.mozCancelFullScreen(); 108 | } 109 | else if (document.webkitCancelFullScreen) { 110 | document.webkitCancelFullScreen(); 111 | } 112 | }, 113 | //IE全屏 114 | fullscreenIE:function(){ 115 | if($.browser.msie){ 116 | var wsh = new ActiveXObject("WScript.Shell"); 117 | wsh.sendKeys("{F11}"); 118 | } 119 | } 120 | } 121 | 122 | /*------------------------------------------ 123 | *jquery扩展,加载技术文件和css文件 124 | -------------------------------------------*/ 125 | $.extend({ 126 | includePath: '', 127 | include: function(file) 128 | { 129 | var files = typeof file == "string" ? [file] : file; 130 | for (var i = 0; i < files.length; i++) 131 | { 132 | var name = files[i].replace(/^\s|\s$/g, ""); 133 | var att = name.split('.'); 134 | var ext = att[att.length - 1].toLowerCase(); 135 | var isCSS = ext == "css"; 136 | var tag = isCSS ? "link" : "script"; 137 | var attr = isCSS ? " type='text/css' rel='stylesheet' " : " language='javascript' type='text/javascript' "; 138 | var link = (isCSS ? "href" : "src") + "='" + $.includePath + name + "'"; 139 | if ($(tag + "[" + link + "]").length == 0) document.write("<" + tag + attr + link + ">"); 140 | } 141 | } 142 | }); -------------------------------------------------------------------------------- /Controller/assets/js/themes/default/d.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/js/themes/default/d.gif -------------------------------------------------------------------------------- /Controller/assets/js/themes/default/d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/js/themes/default/d.png -------------------------------------------------------------------------------- /Controller/assets/js/themes/default/style.css: -------------------------------------------------------------------------------- 1 | /* 2 | * jsTree default theme 1.0 3 | * Supported features: dots/no-dots, icons/no-icons, focused, loading 4 | * Supported plugins: ui (hovered, clicked), checkbox, contextmenu, search 5 | */ 6 | 7 | .jstree-default li, 8 | .jstree-default ins { background-image:url("d.png"); background-repeat:no-repeat; background-color:transparent; } 9 | .jstree-default li { background-position:-90px 0; background-repeat:repeat-y; } 10 | .jstree-default li.jstree-last { background:transparent; } 11 | .jstree-default .jstree-open > ins { background-position:-72px 0; } 12 | .jstree-default .jstree-closed > ins { background-position:-54px 0; } 13 | .jstree-default .jstree-leaf > ins { background-position:-36px 0; } 14 | 15 | .jstree-default .jstree-hovered { background:#e7f4f9; border:1px solid #d8f0fa; padding:0 2px 0 1px; } 16 | .jstree-default .jstree-clicked { background:#beebff; border:1px solid #99defd; padding:0 2px 0 1px; } 17 | .jstree-default a .jstree-icon { background-position:-56px -19px; } 18 | .jstree-default a.jstree-loading .jstree-icon { background:url("throbber.gif") center center no-repeat !important; } 19 | 20 | .jstree-default.jstree-focused { color:#000;background:#FFF } 21 | 22 | .jstree-default .jstree-no-dots li, 23 | .jstree-default .jstree-no-dots .jstree-leaf > ins { background:transparent; } 24 | .jstree-default .jstree-no-dots .jstree-open > ins { background-position:-18px 0; } 25 | .jstree-default .jstree-no-dots .jstree-closed > ins { background-position:0 0; } 26 | 27 | .jstree-default .jstree-no-icons a .jstree-icon { display:none; } 28 | 29 | .jstree-default .jstree-search { font-style:italic; } 30 | 31 | .jstree-default .jstree-no-icons .jstree-checkbox { display:inline-block; } 32 | .jstree-default .jstree-no-checkboxes .jstree-checkbox { display:none !important; } 33 | .jstree-default .jstree-checked > a > .jstree-checkbox { background-position:-38px -19px; } 34 | .jstree-default .jstree-unchecked > a > .jstree-checkbox { background-position:-2px -19px; } 35 | .jstree-default .jstree-undetermined > a > .jstree-checkbox { background-position:-20px -19px; } 36 | .jstree-default .jstree-checked > a > .jstree-checkbox:hover { background-position:-38px -37px; } 37 | .jstree-default .jstree-unchecked > a > .jstree-checkbox:hover { background-position:-2px -37px; } 38 | .jstree-default .jstree-undetermined > a > .jstree-checkbox:hover { background-position:-20px -37px; } 39 | 40 | #vakata-dragged.jstree-default ins { background:transparent !important; } 41 | #vakata-dragged.jstree-default .jstree-ok { background:url("d.png") -2px -53px no-repeat !important; } 42 | #vakata-dragged.jstree-default .jstree-invalid { background:url("d.png") -18px -53px no-repeat !important; } 43 | #jstree-marker.jstree-default { background:url("d.png") -41px -57px no-repeat !important; text-indent:-100px; } 44 | 45 | .jstree-default a.jstree-search { color:aqua; } 46 | .jstree-default .jstree-locked a { color:silver; cursor:default; } 47 | 48 | #vakata-contextmenu.jstree-default-context, 49 | #vakata-contextmenu.jstree-default-context li ul { background:#f0f0f0; border:1px solid #979797; -moz-box-shadow: 1px 1px 2px #999; -webkit-box-shadow: 1px 1px 2px #999; box-shadow: 1px 1px 2px #999; } 50 | #vakata-contextmenu.jstree-default-context li { } 51 | #vakata-contextmenu.jstree-default-context a { color:black; } 52 | #vakata-contextmenu.jstree-default-context a:hover, 53 | #vakata-contextmenu.jstree-default-context .vakata-hover > a { padding:0 5px; background:#e8eff7; border:1px solid #aecff7; color:black; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; } 54 | #vakata-contextmenu.jstree-default-context li.jstree-contextmenu-disabled a, 55 | #vakata-contextmenu.jstree-default-context li.jstree-contextmenu-disabled a:hover { color:silver; background:transparent; border:0; padding:1px 4px; } 56 | #vakata-contextmenu.jstree-default-context li.vakata-separator { background:white; border-top:1px solid #e0e0e0; margin:0; } 57 | #vakata-contextmenu.jstree-default-context li ul { margin-left:-4px; } 58 | 59 | /* IE6 BEGIN */ 60 | .jstree-default li, 61 | .jstree-default ins, 62 | #vakata-dragged.jstree-default .jstree-invalid, 63 | #vakata-dragged.jstree-default .jstree-ok, 64 | #jstree-marker.jstree-default { _background-image:url("d.gif"); } 65 | .jstree-default .jstree-open ins { _background-position:-72px 0; } 66 | .jstree-default .jstree-closed ins { _background-position:-54px 0; } 67 | .jstree-default .jstree-leaf ins { _background-position:-36px 0; } 68 | .jstree-default a ins.jstree-icon { _background-position:-56px -19px; } 69 | #vakata-contextmenu.jstree-default-context ins { _display:none; } 70 | #vakata-contextmenu.jstree-default-context li { _zoom:1; } 71 | .jstree-default .jstree-undetermined a .jstree-checkbox { _background-position:-20px -19px; } 72 | .jstree-default .jstree-checked a .jstree-checkbox { _background-position:-38px -19px; } 73 | .jstree-default .jstree-unchecked a .jstree-checkbox { _background-position:-2px -19px; } 74 | /* IE6 END */ -------------------------------------------------------------------------------- /Controller/assets/js/themes/default/throbber.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/assets/js/themes/default/throbber.gif -------------------------------------------------------------------------------- /Controller/control/CameraViewer.php: -------------------------------------------------------------------------------- 1 | "; 11 | echo "location='../index.php';"; 12 | echo ""; 13 | } 14 | ?> 15 | 16 | 17 | 18 | 19 | 20 | CameraViewer 21 | 22 | 23 | 24 | 25 |
26 | 27 |
28 |
29 | 30 | 170 |
171 |
172 |
173 | 174 | -------------------------------------------------------------------------------- /Controller/control/CommandShell.php: -------------------------------------------------------------------------------- 1 | "; 11 | echo "location='../index.php';"; 12 | echo ""; 13 | } 14 | ?> 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | Command Shell-<?php echo $_SESSION["user_name"];?> 26 | 27 | 28 |
29 |
Command Shell-
30 |
31 |
32 | 33 | 34 | 35 |
36 |
37 | 38 | -------------------------------------------------------------------------------- /Controller/control/FileManager.php: -------------------------------------------------------------------------------- 1 | "; 11 | echo "location='../index.php';"; 12 | echo ""; 13 | } 14 | ?> 15 | 16 | 17 | 18 | 19 | FileManager 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 |
29 | 35 | 36 |
37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 |
48 |
49 | 50 | 51 |
52 |
53 | 54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /Controller/control/GetUserHost.php: -------------------------------------------------------------------------------- 1 | ".$host_array['rc_host_id']." 48 | ".$host_array['user_name']." 49 | ".$host_array['update_time']." 50 | ".$host_array['rc_host_name']." 51 | ".$host_array['rc_host_os']." 52 | ".$host_status.""; 53 | } 54 | } 55 | else 56 | { 57 | $hostlist="

你目前没有可供控制的主机,请下载客户端在被控主机上运行

"; 58 | } 59 | } 60 | else 61 | { 62 | echo "Error:".mysql_error(); 63 | } 64 | } 65 | else 66 | { 67 | header("location:../index.php"); 68 | } 69 | ?> 70 | 71 | 72 | 73 | 74 | Select Host 75 | 76 | 77 | 78 | 129 | 130 | 131 | 132 |

选择要控制的主机

133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 |
#用户名在线时间主机名操作系统状态
146 |

147 | 148 | 149 | -------------------------------------------------------------------------------- /Controller/control/ScreenViewer.php: -------------------------------------------------------------------------------- 1 | "; 11 | echo "location='../index.php';"; 12 | echo ""; 13 | } 14 | ?> 15 | 16 | 17 | 18 | 19 | 20 | ScreenViewer 21 | 22 | 23 | 24 | 25 |
26 | 27 |
28 |
29 |
30 | 31 |
32 | 33 | 267 |
268 |
269 |
270 | 271 | 272 | -------------------------------------------------------------------------------- /Controller/control/TaskManager.php: -------------------------------------------------------------------------------- 1 | "; 11 | echo "location='../index.php';"; 12 | echo ""; 13 | } 14 | ?> 15 | 16 | 17 | 18 | 19 | TaskManager 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 |
29 | 30 | 31 | 32 | 33 | 34 |
35 |
36 |
37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 |
*
映像名称
PID
用户名
内存(KB)
路径
50 |
51 |
52 | 53 | 54 | 55 | 56 |
57 |
58 |
59 |
60 | 61 | -------------------------------------------------------------------------------- /Controller/control/VirtualDesktop.php: -------------------------------------------------------------------------------- 1 | "; 11 | echo "location='../index.php';"; 12 | echo ""; 13 | } 14 | ?> 15 | 16 | 17 | 18 | 19 | 20 | <?php echo $_SESSION["user_name"];?> -Virtual Desktop 21 | 22 | 23 | 113 | 114 | 115 |
116 | 117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
    127 |
  • 命令行
  • 128 |
  • 屏幕控制
  • 129 |
  • 摄像头
  • 130 |
  • 文件管理
  • 131 |
  • 进程管理
  • 132 |
  • 服务管理
  • 133 |
  • 注册表编辑
  • 134 |
  • 键盘记录
  • 135 |
  • 聊天消息
  • 136 |
  • 剪贴板操作
  • 137 |
  • 退出系统
  • 138 |
139 |
140 |
141 | 142 | 143 | 144 | -------------------------------------------------------------------------------- /Controller/control/developing.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Developing 6 | 7 | 8 | developing.jpg

9 | 10 | 11 | -------------------------------------------------------------------------------- /Controller/function/AddCommand.php: -------------------------------------------------------------------------------- 1 | "; 15 | echo "location='../index.php';"; 16 | echo ""; 17 | } 18 | require("ConnectDB.php"); 19 | require("ConnectMC.php"); 20 | // CREATE TABLE `rc_cmd` ( 21 | // `cmd_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, 22 | // `cmd_type` int(11) NOT NULL, 23 | // `cmd_time` datetime NOT NULL, 24 | // `cmd_content` text NOT NULL, 25 | // `cmd_status` tinyint(4) NOT NULL, 26 | // `rc_host_id` bigint(20) unsigned NOT NULL, 27 | // `user_name` varchar(20) NOT NULL, 28 | 29 | 30 | $cmd_type = addslashes($_POST['cmd_type']); 31 | $cmd_content = addslashes($_POST['cmd_content']); 32 | 33 | // $rc_host_id = addslashes($_POST['rc_host_id']); 34 | $rc_host_id = addslashes($_SESSION["rc_host_id"]); 35 | // $user_name = addslashes($_POST['user_name']); 36 | $user_name = addslashes($_SESSION["user_name"]); 37 | 38 | date_default_timezone_set('PRC'); 39 | $now = getdate(); 40 | $cmd_time=$now[year]."-".$now[mon]."-".$now[mday]." ".$now[hours].":".$now[minutes].":".$now[seconds]; 41 | 42 | $add_command="insert into `rc_cmd` (`cmd_type`,`cmd_time`,`cmd_content`,`cmd_status`,`cmd_read`,`rc_host_id`,`user_name`) values ('".$cmd_type."','".$cmd_time."','".$cmd_content."','0','0','".$rc_host_id."','".$user_name."');"; 43 | // echo $add_command."
"; 44 | $get_cmd_id="SELECT LAST_INSERT_ID()";//"select `cmd_id` from `rc_cmd` where (`cmd_type`='".$cmd_type."' and `cmd_time`='".$cmd_time."' and `cmd_content`='".$cmd_content."' and `rc_host_id`='".$rc_host_id."' and `user_name`='".$user_name."');"; 45 | //and `cmd_status`='0' 46 | // echo $get_cmd_id."
"; 47 | 48 | $mckey=$user_name."-".$rc_host_id; 49 | //die($mckey); 50 | $queryresult = mysql_query($add_command,$database); 51 | if($queryresult!=false) 52 | { 53 | $cmd_id=mysql_insert_id(); 54 | // $new_cmd_id = mysql_query($get_cmd_id,$database); 55 | // if($new_cmd_id) 56 | // { 57 | // if(mysql_num_rows($new_cmd_id)!=0) 58 | // { 59 | // $cmd_id=mysql_fetch_assoc($new_cmd_id); 60 | // echo $cmd_id[cmd_id]; 61 | echo $cmd_id; 62 | incrMC($memcache,$mckey); //通知有新命令被加入 63 | $memcache->set($cmd_id,0); //用于等待命令结果 64 | $memcache->close(); 65 | // } 66 | // else 67 | // { 68 | // echo "false"; 69 | // } 70 | //} 71 | // else 72 | // { 73 | // die('Query Error A1:'.mysql_error()); 74 | // } 75 | } 76 | else 77 | { 78 | die('Query Error A2:'.mysql_error()); 79 | } 80 | 81 | 82 | // $database=mysql_connect("localhost","root","initiald"); 83 | // if (!$database) 84 | // { 85 | // die('Could not connect: '.mysql_error()); 86 | // } 87 | // mysql_select_db("remotecontrol",$database); 88 | 89 | // $database=mysql_connect(SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS); 90 | //$database=mysql_connect("localhost","root","initiald"); 91 | // if (!$database) 92 | // { 93 | // die('Could not connect: '.mysql_error()); 94 | // } 95 | // mysql_select_db(SAE_MYSQL_DB,$link); 96 | //mysql_select_db("remotecontrol",$database); 97 | 98 | // $database=new mysqli("localhost","root","initiald","remotecontrol"); 99 | 100 | /* 101 | $existuser="select * from `Command` where (`cmd_user`='".$cmduser."');"; 102 | $exist=mysql_query($existuser,$database); 103 | if($exist!=false) 104 | { 105 | if(mysql_num_rows($exist)==0) 106 | { 107 | $sql_statement="INSERT INTO `Command` (`cmd_user`,`cmd_type`,`cmd_time`,`cmd_content`) VALUES ('".$cmduser."','".$cmdtype."','".$cmd_time."','".$command."');"; 108 | // echo $sql_statement; 109 | $queryresult = mysql_query($sql_statement,$database); 110 | if($queryresult!=false) 111 | { 112 | echo "Add Success!\r\n"; 113 | } 114 | else 115 | { 116 | die('Query Error:'.mysql_error()); 117 | } 118 | // echo $queryresult; 119 | } 120 | else 121 | { 122 | $updaterecord="UPDATE `Command` SET `cmd_time`='".$cmd_time."',`cmd_type`='".$cmdtype."',`cmd_content`='".$command."' WHERE (`cmd_user`='".$cmduser."');"; 123 | $queryresult = mysql_query($updaterecord,$database); 124 | if($queryresult!=false) 125 | { 126 | echo "Update Success!\r\n"; 127 | } 128 | else 129 | { 130 | die('Query Error:'.mysql_error()); 131 | } 132 | } 133 | } 134 | else 135 | { 136 | die('Query Error:'.mysql_error()); 137 | } 138 | */ 139 | mysql_close($database); 140 | ?> -------------------------------------------------------------------------------- /Controller/function/AddUserHost.php: -------------------------------------------------------------------------------- 1 | Host ID: ".$host_id[rc_host_id]; 100 | //echo $host_id[rc_host_id]; 101 | $_SESSION["rc_host_id"]=$host_id[rc_host_id]; 102 | $_SESSION["user_name"]=$user_name; 103 | echo "OK"; 104 | } 105 | else 106 | { 107 | echo "Update Error or Get Host ID Error!"; 108 | } 109 | 110 | } 111 | else 112 | { 113 | $addresult = mysql_query($add_host,$database); 114 | if($addresult) 115 | { 116 | $new_host_id = mysql_query($get_host_id,$database); 117 | if($new_host_id) 118 | { 119 | if(mysql_num_rows($new_host_id)!=0) 120 | { 121 | $host_id=mysql_fetch_assoc($new_host_id); 122 | //echo $host_id[rc_host_id]; 123 | $_SESSION["rc_host_id"]=$host_id[rc_host_id]; 124 | $_SESSION["user_name"]=$user_name; 125 | echo "OK"; 126 | } 127 | else 128 | { 129 | echo "Add Error or Get Host ID Error!"; 130 | } 131 | } 132 | else 133 | { 134 | die('Query Error:'.mysql_error()); 135 | } 136 | } 137 | else 138 | { 139 | die('Query Error:'.mysql_error()); 140 | } 141 | } 142 | } 143 | else 144 | { 145 | die('Query Error:'.mysql_error()); 146 | } 147 | //以“用户名-主机ID”为key,创建Memcache以进行命令通知,可加入salt防止仿冒MCkey 148 | $mckey=$user_name."-".$host_id[rc_host_id]; 149 | $memcache->set($mckey,0); 150 | $memcache->close(); 151 | $mark_as_read="update `rc_cmd` set `cmd_read`='1' where (`rc_host_id`='".$host_id[rc_host_id]."' and `user_name`='".$user_name."' and `cmd_read`='0');"; 152 | mysql_query($mark_as_read,$database); 153 | mysql_close($database); 154 | //echo "error:".$mark_as_read; 155 | ?> -------------------------------------------------------------------------------- /Controller/function/ClientLogout.php: -------------------------------------------------------------------------------- 1 | close(); 36 | @session_destroy(); 37 | die("OK"); 38 | ?> -------------------------------------------------------------------------------- /Controller/function/ConnectDB.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Controller/function/ConnectMC.php: -------------------------------------------------------------------------------- 1 | connect('localhost', 11211); 5 | 6 | //Memcache Init for SAE 7 | // $memcache=memcache_init(); 8 | 9 | //Memcache Init for BAE 10 | // require_once ('BaeMemcache.class.php'); 11 | // $memcache = new BaeMemcache(); 12 | 13 | //SAE KVDB Init 14 | // $sae_kvdb = new SaeKV(); 15 | // $sae_kvdb->init(); 16 | 17 | 18 | function incrMC($mc,$mckey) 19 | { 20 | // $MCvalue=$mc->get($mckey); 21 | // $MCvalue++; 22 | // $mc->set($mckey,$MCvalue); 23 | 24 | //$mc->incr($mckey); 25 | 26 | $mc->increment($mckey); 27 | } 28 | 29 | function decrMC($mc,$mckey) 30 | { 31 | $mc->decrement($mckey); 32 | 33 | // $MCvalue=$mc->get($mckey); 34 | // $MCvalue--; 35 | // if($MCvalue>1) 36 | // { 37 | // $mc->set($mckey,$MCvalue); 38 | 39 | // } 40 | // else 41 | // { 42 | // $MCvalue=0; 43 | // $mc->set($mckey,$MCvalue); 44 | // } 45 | } 46 | 47 | ?> -------------------------------------------------------------------------------- /Controller/function/GetCommand.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/function/GetCommand.php -------------------------------------------------------------------------------- /Controller/function/GetResult.php: -------------------------------------------------------------------------------- 1 | get($cmd_id)!="0")//if(memcache_get($memcache,$cmd_id)!="0") 26 | { 27 | $get_result="select `result_content` from `rc_result` where (`cmd_id`='".$cmd_id."');"; 28 | $del_result="delete from `rc_result` where (`cmd_id`='".$cmd_id."');"; 29 | require("ConnectDB.php"); 30 | $queryresult = mysql_query($get_result,$database); 31 | if($queryresult) 32 | { 33 | if(mysql_num_rows($queryresult)!=0) 34 | { 35 | $cmdarray=mysql_fetch_assoc($queryresult); 36 | // mysql_query($del_result,$database); //取出执行结果后将结果从数据库删除 37 | $memcache->delete($cmd_id,0); //删除以命令ID为key的MC,这货是一次性的。 38 | mysql_close($database); 39 | if($decode=="base64") 40 | { 41 | header("Content-Type: text/json; charset=utf-8"); 42 | echo base64_decode($cmdarray['result_content']); 43 | } 44 | else 45 | { 46 | echo $cmdarray['result_content'];//."\r\ncmd_time:".$cmdarray['cmd_time']."\r\ncmd_content:".$cmdarray['cmd_content']; 47 | } 48 | } 49 | else 50 | { 51 | mysql_close($database); 52 | echo "Error:Requested user id not found in database"; 53 | } 54 | } 55 | else 56 | { 57 | echo "Error:".mysql_error(); 58 | } 59 | $memcache->close(); 60 | exit(0); 61 | } 62 | 63 | //从SAE平台的KVDB获取执行结果 64 | // if($memcache->get($cmd_id)!="0") 65 | // { 66 | // $result_content = $sae_kvdb->get($cmd_id); 67 | // $sae_kvdb->delete($cmd_id); 68 | // $memcache->delete($cmd_id,0); 69 | 70 | // if($decode=="base64") 71 | // { 72 | // header("Content-Type: text/json; charset=utf-8"); 73 | // echo base64_decode($result_content); 74 | // } 75 | // else 76 | // { 77 | // echo $result_content; 78 | // } 79 | // $memcache->close(); 80 | // exit(0); 81 | // } 82 | usleep(100000); 83 | } 84 | $memcache->close(); 85 | echo "TIMEOUT"; 86 | ?> -------------------------------------------------------------------------------- /Controller/function/Register.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Controller/function/SelectHost.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Controller/function/SubmitResult.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/function/SubmitResult.php -------------------------------------------------------------------------------- /Controller/function/VerifyAccount.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Controller/index.php: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | 14 | 15 | SinSoul Web远程控制系统 16 | 17 | 18 | 19 | 22 | 23 | 24 | 25 | 26 | 27 |
28 |
29 | Register 30 | 31 | 32 | 33 | 34 |
35 |
36 |
37 | Login 38 | 39 | 40 | 41 | 42 | 43 |
44 |
45 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /Controller/svn_add.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/svn_add.bat -------------------------------------------------------------------------------- /Controller/svn_submit.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Controller/svn_submit.bat -------------------------------------------------------------------------------- /ImageSourceFiles/Document.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/ImageSourceFiles/Document.zip -------------------------------------------------------------------------------- /ImageSourceFiles/LoginPanel_PSD.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/ImageSourceFiles/LoginPanel_PSD.zip -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 11.00 3 | # Visual Studio 2010 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SSWRC_Windows_Client", "SSWRC_Windows_Client\SSWRC_Windows_Client.vcxproj", "{B0F04AEC-00EB-441D-B61B-931A7C0C0D18}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Win32 = Debug|Win32 9 | Release|Win32 = Release|Win32 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {B0F04AEC-00EB-441D-B61B-931A7C0C0D18}.Debug|Win32.ActiveCfg = Debug|Win32 13 | {B0F04AEC-00EB-441D-B61B-931A7C0C0D18}.Debug|Win32.Build.0 = Debug|Win32 14 | {B0F04AEC-00EB-441D-B61B-931A7C0C0D18}.Release|Win32.ActiveCfg = Release|Win32 15 | {B0F04AEC-00EB-441D-B61B-931A7C0C0D18}.Release|Win32.Build.0 = Release|Win32 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/CommandHandler.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/CommandHandler.cpp -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/CommandHandler.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/CommandHandler.h -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/DatabaseSystemDevelopment_GUI.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/DatabaseSystemDevelopment_GUI.cpp -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/DatabaseSystemDevelopment_GUI.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define WM_CMDRCVD_MESSAGE (WM_USER+416) 4 | #define WM_CMDPCSD_MESSAGE (WM_USER+417) 5 | #define WM_ONLINE_MESSAGE (WM_USER+418) 6 | //#define WM_CMDRCVD_MESSAGE (WM_USER+418) 7 | 8 | LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM); 9 | LRESULT CALLBACK EditProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); 10 | LRESULT CALLBACK SetServerAddr(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam); 11 | void PrintText(char * szBuff); 12 | char *U2A(LPCWSTR lpcwszStr); 13 | wchar_t * A2U(LPCSTR lpcszStr); 14 | bool GetThisUserName(); 15 | void Online(void *); 16 | void Logout(); 17 | 18 | extern char szClassName[11 ]; 19 | extern char *wndName; 20 | extern HWND hwndButton; 21 | extern HWND hwndEdit; 22 | extern HWND hwndLable_0; 23 | extern HWND hwnd; 24 | extern HWND hwndCheck; 25 | extern bool conn_status; 26 | extern CSystemTray TrayIcon; 27 | extern HINSTANCE hinst; -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/DatabaseSystemDevelopment_GUI1.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/DatabaseSystemDevelopment_GUI1.rc -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/DirectShowVideoCapture.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/DirectShowVideoCapture.cpp -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/DirectShowVideoCapture.h: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | 7 | #pragma comment(lib,"dxguid.lib") 8 | #pragma comment(lib,"d3d9.lib") 9 | #pragma comment(lib,"d3dx9.lib") 10 | 11 | #pragma include_alias( "dxtrans.h", "qedit.h" ) 12 | #define __IDxtCompositor_INTERFACE_DEFINED__ 13 | #define __IDxtAlphaSetter_INTERFACE_DEFINED__ 14 | #define __IDxtJpeg_INTERFACE_DEFINED__ 15 | #define __IDxtKey_INTERFACE_DEFINED__ 16 | #include "qedit.h" 17 | #pragma comment(lib,"Strmiids.lib") 18 | 19 | #include 20 | #include 21 | #pragma comment(lib,"gdiplus") 22 | 23 | HRESULT GetInterfaces(void); 24 | HRESULT CaptureVideo(); 25 | HRESULT FindCaptureDevice(IBaseFilter ** ppSrcFilter); 26 | HRESULT SetupVideoWindow(void); 27 | HRESULT ChangePreviewState(int nShow); 28 | HRESULT HandleGraphEvent(void); 29 | HRESULT AddGraphToRot(IUnknown *pUnkGraph, DWORD *pdwRegister); 30 | void RemoveGraphFromRot(DWORD pdwRegister); 31 | void Msg(TCHAR *szFormat, ...); 32 | void CloseInterfaces(void); 33 | void ResizeVideoWindow(void); 34 | 35 | //LPD3DXBUFFER lpdb; 36 | extern LPDIRECT3D9 g_pD3D; 37 | //extern D3DDISPLAYMODE ddm; 38 | //extern D3DPRESENT_PARAMETERS d3dpp; 39 | extern IDirect3DDevice9 *g_pd3dDevice; 40 | extern IDirect3DSurface9 *pSurface; 41 | 42 | bool InitialDX(); 43 | int DXScreenShot(); 44 | void UnloadDx(); 45 | 46 | bool StartCaptureDevice(HWND parent); 47 | void CaptureCurrentFrame(void * cmd); 48 | bool StopCaptureDevice(); 49 | 50 | 51 | enum PLAYSTATE {Stopped, Paused, Running, Init}; 52 | 53 | 54 | #define SAFE_RELEASE(x) { if (x) x->Release(); x = NULL; } 55 | 56 | #define JIF(x) if (FAILED(hr=(x))) \ 57 | {Msg(TEXT("FAILED(hr=0x%x) in ") TEXT(#x) TEXT("\n\0"), hr); return hr;} 58 | 59 | 60 | #define DEFAULT_VIDEO_WIDTH 640 61 | #define DEFAULT_VIDEO_HEIGHT 480 62 | 63 | #define APPLICATIONNAME TEXT("Video Capture\0") 64 | #define CLASSNAME TEXT("SinSoulVideoCapture\0") 65 | 66 | #define WM_GRAPHNOTIFY WM_APP+1 67 | 68 | #define IDI_VIDPREVIEW 100 69 | extern BOOL CameraStatus; 70 | extern DWORD g_dwGraphRegister; 71 | extern IVideoWindow * g_pVW; 72 | extern IMediaControl * g_pMC; 73 | extern IMediaEventEx * g_pME; 74 | extern IGraphBuilder * g_pGraph; 75 | extern ICaptureGraphBuilder2 * g_pCapture; 76 | extern PLAYSTATE g_psCurrent; 77 | extern IBaseFilter *pGrabberFilter; 78 | extern ISampleGrabber *pGrabber; 79 | extern HWND ghApp; -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/FileManager.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/FileManager.cpp -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/FileManager.h: -------------------------------------------------------------------------------- 1 | bool GetDirverInfo(Json::Value *root); 2 | DWORD Enum_Current_Drectory(LPSTR szPath,Json::Value *root); 3 | void Enum_Drectory(void *cmd); 4 | void Enum_All_File_in_Drectory(void *cmd); 5 | void FileOperate(void * cmd); 6 | bool Delete_Drectory(const char *dirName); 7 | void DelFileHiddenAndReadonly(const char *szFileName); -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/HttpMessenger.h: -------------------------------------------------------------------------------- 1 | #include "windows.h" 2 | #include 3 | #include 4 | //#include "winsock2.h" 5 | 6 | #pragma once 7 | #pragma comment(lib,"Ws2_32.lib") 8 | using namespace std; 9 | class HttpMessenger 10 | { 11 | public: 12 | HttpMessenger(char *szHostName="127.0.0.1",int nPort=80); 13 | virtual ~HttpMessenger() 14 | { 15 | MyCloseSocket(); 16 | } 17 | string m_RequestHeader; 18 | string m_ResponseHeader; 19 | string m_ResponseText; 20 | unsigned int m_ContentLength; 21 | bool m_bResponsed; 22 | bool m_bConnected; 23 | bool Chunked; 24 | string HttpMessenger::GetErrorLog(); 25 | bool CreateAndSendRequest(char *RequestType,char *ResourcePath,char *Host=NULL,char *PostData=NULL,bool OnlyGetLength=false,char *Save2File=NULL); 26 | bool SetTimeout(int nTime, int nType); 27 | int GetResponseState(); 28 | long HextoInt(string str,int length); 29 | bool GetConnectionState(); 30 | bool CreateConnection(); 31 | void UTF8ResponsetoANSI(); 32 | int GetCookie(char *cookie,int buf_len); 33 | static bool InitialSocket(); 34 | static bool SocketLoaded; 35 | protected: 36 | int ReceiveChunked(); 37 | bool CreateSocket(); 38 | long GetContentLength(); 39 | unsigned long Receive(bool OnlyGetLength=false,char *Save2File=NULL); 40 | bool MyCloseSocket(); 41 | int m_port; 42 | SOCKET m_socket; 43 | hostent *m_phostip; 44 | string m_Error; 45 | string server_addr; 46 | }; -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/JsonCppLib/assertions.h: -------------------------------------------------------------------------------- 1 | // Copyright 2007-2010 Baptiste Lepilleur 2 | // Distributed under MIT license, or public domain if desired and 3 | // recognized in your jurisdiction. 4 | // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE 5 | 6 | #ifndef CPPTL_JSON_ASSERTIONS_H_INCLUDED 7 | # define CPPTL_JSON_ASSERTIONS_H_INCLUDED 8 | 9 | #include 10 | 11 | #if !defined(JSON_IS_AMALGAMATION) 12 | # include "config.h" 13 | #endif // if !defined(JSON_IS_AMALGAMATION) 14 | 15 | #if JSON_USE_EXCEPTION 16 | #define JSON_ASSERT( condition ) assert( condition ); // @todo <= change this into an exception throw 17 | #define JSON_FAIL_MESSAGE( message ) throw std::runtime_error( message ); 18 | #else // JSON_USE_EXCEPTION 19 | #define JSON_ASSERT( condition ) assert( condition ); 20 | 21 | // The call to assert() will show the failure message in debug builds. In 22 | // release bugs we write to invalid memory in order to crash hard, so that a 23 | // debugger or crash reporter gets the chance to take over. We still call exit() 24 | // afterward in order to tell the compiler that this macro doesn't return. 25 | #define JSON_FAIL_MESSAGE( message ) { assert(false && message); strcpy(reinterpret_cast(666), message); exit(123); } 26 | 27 | #endif 28 | 29 | #define JSON_ASSERT_MESSAGE( condition, message ) if (!( condition )) { JSON_FAIL_MESSAGE( message ) } 30 | 31 | #endif // CPPTL_JSON_ASSERTIONS_H_INCLUDED 32 | -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/JsonCppLib/autolink.h: -------------------------------------------------------------------------------- 1 | // Copyright 2007-2010 Baptiste Lepilleur 2 | // Distributed under MIT license, or public domain if desired and 3 | // recognized in your jurisdiction. 4 | // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE 5 | 6 | #ifndef JSON_AUTOLINK_H_INCLUDED 7 | # define JSON_AUTOLINK_H_INCLUDED 8 | 9 | # include "config.h" 10 | 11 | # ifdef JSON_IN_CPPTL 12 | # include 13 | # endif 14 | 15 | # if !defined(JSON_NO_AUTOLINK) && !defined(JSON_DLL_BUILD) && !defined(JSON_IN_CPPTL) 16 | # define CPPTL_AUTOLINK_NAME "json" 17 | # undef CPPTL_AUTOLINK_DLL 18 | # ifdef JSON_DLL 19 | # define CPPTL_AUTOLINK_DLL 20 | # endif 21 | # include "autolink.h" 22 | # endif 23 | 24 | #endif // JSON_AUTOLINK_H_INCLUDED 25 | -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/JsonCppLib/config.h: -------------------------------------------------------------------------------- 1 | // Copyright 2007-2010 Baptiste Lepilleur 2 | // Distributed under MIT license, or public domain if desired and 3 | // recognized in your jurisdiction. 4 | // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE 5 | 6 | #ifndef JSON_CONFIG_H_INCLUDED 7 | # define JSON_CONFIG_H_INCLUDED 8 | 9 | /// If defined, indicates that json library is embedded in CppTL library. 10 | //# define JSON_IN_CPPTL 1 11 | 12 | /// If defined, indicates that json may leverage CppTL library 13 | //# define JSON_USE_CPPTL 1 14 | /// If defined, indicates that cpptl vector based map should be used instead of std::map 15 | /// as Value container. 16 | //# define JSON_USE_CPPTL_SMALLMAP 1 17 | /// If defined, indicates that Json specific container should be used 18 | /// (hash table & simple deque container with customizable allocator). 19 | /// THIS FEATURE IS STILL EXPERIMENTAL! There is know bugs: See #3177332 20 | //# define JSON_VALUE_USE_INTERNAL_MAP 1 21 | /// Force usage of standard new/malloc based allocator instead of memory pool based allocator. 22 | /// The memory pools allocator used optimization (initializing Value and ValueInternalLink 23 | /// as if it was a POD) that may cause some validation tool to report errors. 24 | /// Only has effects if JSON_VALUE_USE_INTERNAL_MAP is defined. 25 | //# define JSON_USE_SIMPLE_INTERNAL_ALLOCATOR 1 26 | 27 | // If non-zero, the library uses exceptions to report bad input instead of C 28 | // assertion macros. The default is to use exceptions. 29 | # ifndef JSON_USE_EXCEPTION 30 | # define JSON_USE_EXCEPTION 1 31 | # endif 32 | 33 | /// If defined, indicates that the source file is amalgated 34 | /// to prevent private header inclusion. 35 | /// Remarks: it is automatically defined in the generated amalgated header. 36 | // #define JSON_IS_AMALGAMATION 37 | 38 | 39 | # ifdef JSON_IN_CPPTL 40 | # include 41 | # ifndef JSON_USE_CPPTL 42 | # define JSON_USE_CPPTL 1 43 | # endif 44 | # endif 45 | 46 | # ifdef JSON_IN_CPPTL 47 | # define JSON_API CPPTL_API 48 | # elif defined(JSON_DLL_BUILD) 49 | # define JSON_API __declspec(dllexport) 50 | # elif defined(JSON_DLL) 51 | # define JSON_API __declspec(dllimport) 52 | # else 53 | # define JSON_API 54 | # endif 55 | 56 | // If JSON_NO_INT64 is defined, then Json only support C++ "int" type for integer 57 | // Storages, and 64 bits integer support is disabled. 58 | // #define JSON_NO_INT64 1 59 | 60 | #if defined(_MSC_VER) && _MSC_VER <= 1200 // MSVC 6 61 | // Microsoft Visual Studio 6 only support conversion from __int64 to double 62 | // (no conversion from unsigned __int64). 63 | #define JSON_USE_INT64_DOUBLE_CONVERSION 1 64 | #endif // if defined(_MSC_VER) && _MSC_VER < 1200 // MSVC 6 65 | 66 | #if defined(_MSC_VER) && _MSC_VER >= 1500 // MSVC 2008 67 | /// Indicates that the following function is deprecated. 68 | # define JSONCPP_DEPRECATED(message) __declspec(deprecated(message)) 69 | #endif 70 | 71 | #if !defined(JSONCPP_DEPRECATED) 72 | # define JSONCPP_DEPRECATED(message) 73 | #endif // if !defined(JSONCPP_DEPRECATED) 74 | 75 | namespace Json { 76 | typedef int Int; 77 | typedef unsigned int UInt; 78 | # if defined(JSON_NO_INT64) 79 | typedef int LargestInt; 80 | typedef unsigned int LargestUInt; 81 | # undef JSON_HAS_INT64 82 | # else // if defined(JSON_NO_INT64) 83 | // For Microsoft Visual use specific types as long long is not supported 84 | # if defined(_MSC_VER) // Microsoft Visual Studio 85 | typedef __int64 Int64; 86 | typedef unsigned __int64 UInt64; 87 | # else // if defined(_MSC_VER) // Other platforms, use long long 88 | typedef long long int Int64; 89 | typedef unsigned long long int UInt64; 90 | # endif // if defined(_MSC_VER) 91 | typedef Int64 LargestInt; 92 | typedef UInt64 LargestUInt; 93 | # define JSON_HAS_INT64 94 | # endif // if defined(JSON_NO_INT64) 95 | } // end namespace Json 96 | 97 | 98 | #endif // JSON_CONFIG_H_INCLUDED 99 | -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/JsonCppLib/features.h: -------------------------------------------------------------------------------- 1 | // Copyright 2007-2010 Baptiste Lepilleur 2 | // Distributed under MIT license, or public domain if desired and 3 | // recognized in your jurisdiction. 4 | // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE 5 | 6 | #ifndef CPPTL_JSON_FEATURES_H_INCLUDED 7 | # define CPPTL_JSON_FEATURES_H_INCLUDED 8 | 9 | #if !defined(JSON_IS_AMALGAMATION) 10 | # include "forwards.h" 11 | #endif // if !defined(JSON_IS_AMALGAMATION) 12 | 13 | namespace Json { 14 | 15 | /** \brief Configuration passed to reader and writer. 16 | * This configuration object can be used to force the Reader or Writer 17 | * to behave in a standard conforming way. 18 | */ 19 | class JSON_API Features 20 | { 21 | public: 22 | /** \brief A configuration that allows all features and assumes all strings are UTF-8. 23 | * - C & C++ comments are allowed 24 | * - Root object can be any JSON value 25 | * - Assumes Value strings are encoded in UTF-8 26 | */ 27 | static Features all(); 28 | 29 | /** \brief A configuration that is strictly compatible with the JSON specification. 30 | * - Comments are forbidden. 31 | * - Root object must be either an array or an object value. 32 | * - Assumes Value strings are encoded in UTF-8 33 | */ 34 | static Features strictMode(); 35 | 36 | /** \brief Initialize the configuration like JsonConfig::allFeatures; 37 | */ 38 | Features(); 39 | 40 | /// \c true if comments are allowed. Default: \c true. 41 | bool allowComments_; 42 | 43 | /// \c true if root must be either an array or an object value. Default: \c false. 44 | bool strictRoot_; 45 | }; 46 | 47 | } // namespace Json 48 | 49 | #endif // CPPTL_JSON_FEATURES_H_INCLUDED 50 | -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/JsonCppLib/forwards.h: -------------------------------------------------------------------------------- 1 | // Copyright 2007-2010 Baptiste Lepilleur 2 | // Distributed under MIT license, or public domain if desired and 3 | // recognized in your jurisdiction. 4 | // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE 5 | 6 | #ifndef JSON_FORWARDS_H_INCLUDED 7 | # define JSON_FORWARDS_H_INCLUDED 8 | 9 | #if !defined(JSON_IS_AMALGAMATION) 10 | # include "config.h" 11 | #endif // if !defined(JSON_IS_AMALGAMATION) 12 | 13 | namespace Json { 14 | 15 | // writer.h 16 | class FastWriter; 17 | class StyledWriter; 18 | 19 | // reader.h 20 | class Reader; 21 | 22 | // features.h 23 | class Features; 24 | 25 | // value.h 26 | typedef unsigned int ArrayIndex; 27 | class StaticString; 28 | class Path; 29 | class PathArgument; 30 | class Value; 31 | class ValueIteratorBase; 32 | class ValueIterator; 33 | class ValueConstIterator; 34 | #ifdef JSON_VALUE_USE_INTERNAL_MAP 35 | class ValueMapAllocator; 36 | class ValueInternalLink; 37 | class ValueInternalArray; 38 | class ValueInternalMap; 39 | #endif // #ifdef JSON_VALUE_USE_INTERNAL_MAP 40 | 41 | } // namespace Json 42 | 43 | 44 | #endif // JSON_FORWARDS_H_INCLUDED 45 | -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/JsonCppLib/json.h: -------------------------------------------------------------------------------- 1 | // Copyright 2007-2010 Baptiste Lepilleur 2 | // Distributed under MIT license, or public domain if desired and 3 | // recognized in your jurisdiction. 4 | // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE 5 | 6 | #ifndef JSON_JSON_H_INCLUDED 7 | # define JSON_JSON_H_INCLUDED 8 | 9 | # include "autolink.h" 10 | # include "value.h" 11 | # include "reader.h" 12 | # include "writer.h" 13 | # include "features.h" 14 | 15 | #endif // JSON_JSON_H_INCLUDED 16 | -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/JsonCppLib/json_batchallocator.h: -------------------------------------------------------------------------------- 1 | // Copyright 2007-2010 Baptiste Lepilleur 2 | // Distributed under MIT license, or public domain if desired and 3 | // recognized in your jurisdiction. 4 | // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE 5 | 6 | #ifndef JSONCPP_BATCHALLOCATOR_H_INCLUDED 7 | # define JSONCPP_BATCHALLOCATOR_H_INCLUDED 8 | 9 | # include 10 | # include 11 | 12 | # ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION 13 | 14 | namespace Json { 15 | 16 | /* Fast memory allocator. 17 | * 18 | * This memory allocator allocates memory for a batch of object (specified by 19 | * the page size, the number of object in each page). 20 | * 21 | * It does not allow the destruction of a single object. All the allocated objects 22 | * can be destroyed at once. The memory can be either released or reused for future 23 | * allocation. 24 | * 25 | * The in-place new operator must be used to construct the object using the pointer 26 | * returned by allocate. 27 | */ 28 | template 30 | class BatchAllocator 31 | { 32 | public: 33 | BatchAllocator( unsigned int objectsPerPage = 255 ) 34 | : freeHead_( 0 ) 35 | , objectsPerPage_( objectsPerPage ) 36 | { 37 | // printf( "Size: %d => %s\n", sizeof(AllocatedType), typeid(AllocatedType).name() ); 38 | assert( sizeof(AllocatedType) * objectPerAllocation >= sizeof(AllocatedType *) ); // We must be able to store a slist in the object free space. 39 | assert( objectsPerPage >= 16 ); 40 | batches_ = allocateBatch( 0 ); // allocated a dummy page 41 | currentBatch_ = batches_; 42 | } 43 | 44 | ~BatchAllocator() 45 | { 46 | for ( BatchInfo *batch = batches_; batch; ) 47 | { 48 | BatchInfo *nextBatch = batch->next_; 49 | free( batch ); 50 | batch = nextBatch; 51 | } 52 | } 53 | 54 | /// allocate space for an array of objectPerAllocation object. 55 | /// @warning it is the responsability of the caller to call objects constructors. 56 | AllocatedType *allocate() 57 | { 58 | if ( freeHead_ ) // returns node from free list. 59 | { 60 | AllocatedType *object = freeHead_; 61 | freeHead_ = *(AllocatedType **)object; 62 | return object; 63 | } 64 | if ( currentBatch_->used_ == currentBatch_->end_ ) 65 | { 66 | currentBatch_ = currentBatch_->next_; 67 | while ( currentBatch_ && currentBatch_->used_ == currentBatch_->end_ ) 68 | currentBatch_ = currentBatch_->next_; 69 | 70 | if ( !currentBatch_ ) // no free batch found, allocate a new one 71 | { 72 | currentBatch_ = allocateBatch( objectsPerPage_ ); 73 | currentBatch_->next_ = batches_; // insert at the head of the list 74 | batches_ = currentBatch_; 75 | } 76 | } 77 | AllocatedType *allocated = currentBatch_->used_; 78 | currentBatch_->used_ += objectPerAllocation; 79 | return allocated; 80 | } 81 | 82 | /// Release the object. 83 | /// @warning it is the responsability of the caller to actually destruct the object. 84 | void release( AllocatedType *object ) 85 | { 86 | assert( object != 0 ); 87 | *(AllocatedType **)object = freeHead_; 88 | freeHead_ = object; 89 | } 90 | 91 | private: 92 | struct BatchInfo 93 | { 94 | BatchInfo *next_; 95 | AllocatedType *used_; 96 | AllocatedType *end_; 97 | AllocatedType buffer_[objectPerAllocation]; 98 | }; 99 | 100 | // disabled copy constructor and assignement operator. 101 | BatchAllocator( const BatchAllocator & ); 102 | void operator =( const BatchAllocator &); 103 | 104 | static BatchInfo *allocateBatch( unsigned int objectsPerPage ) 105 | { 106 | const unsigned int mallocSize = sizeof(BatchInfo) - sizeof(AllocatedType)* objectPerAllocation 107 | + sizeof(AllocatedType) * objectPerAllocation * objectsPerPage; 108 | BatchInfo *batch = static_cast( malloc( mallocSize ) ); 109 | batch->next_ = 0; 110 | batch->used_ = batch->buffer_; 111 | batch->end_ = batch->buffer_ + objectsPerPage; 112 | return batch; 113 | } 114 | 115 | BatchInfo *batches_; 116 | BatchInfo *currentBatch_; 117 | /// Head of a single linked list within the allocated space of freeed object 118 | AllocatedType *freeHead_; 119 | unsigned int objectsPerPage_; 120 | }; 121 | 122 | 123 | } // namespace Json 124 | 125 | # endif // ifndef JSONCPP_DOC_INCLUDE_IMPLEMENTATION 126 | 127 | #endif // JSONCPP_BATCHALLOCATOR_H_INCLUDED 128 | -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/JsonCppLib/json_tool.h: -------------------------------------------------------------------------------- 1 | // Copyright 2007-2010 Baptiste Lepilleur 2 | // Distributed under MIT license, or public domain if desired and 3 | // recognized in your jurisdiction. 4 | // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE 5 | 6 | #ifndef LIB_JSONCPP_JSON_TOOL_H_INCLUDED 7 | # define LIB_JSONCPP_JSON_TOOL_H_INCLUDED 8 | 9 | /* This header provides common string manipulation support, such as UTF-8, 10 | * portable conversion from/to string... 11 | * 12 | * It is an internal header that must not be exposed. 13 | */ 14 | 15 | namespace Json { 16 | 17 | /// Converts a unicode code-point to UTF-8. 18 | static inline std::string 19 | codePointToUTF8(unsigned int cp) 20 | { 21 | std::string result; 22 | 23 | // based on description from http://en.wikipedia.org/wiki/UTF-8 24 | 25 | if (cp <= 0x7f) 26 | { 27 | result.resize(1); 28 | result[0] = static_cast(cp); 29 | } 30 | else if (cp <= 0x7FF) 31 | { 32 | result.resize(2); 33 | result[1] = static_cast(0x80 | (0x3f & cp)); 34 | result[0] = static_cast(0xC0 | (0x1f & (cp >> 6))); 35 | } 36 | else if (cp <= 0xFFFF) 37 | { 38 | result.resize(3); 39 | result[2] = static_cast(0x80 | (0x3f & cp)); 40 | result[1] = 0x80 | static_cast((0x3f & (cp >> 6))); 41 | result[0] = 0xE0 | static_cast((0xf & (cp >> 12))); 42 | } 43 | else if (cp <= 0x10FFFF) 44 | { 45 | result.resize(4); 46 | result[3] = static_cast(0x80 | (0x3f & cp)); 47 | result[2] = static_cast(0x80 | (0x3f & (cp >> 6))); 48 | result[1] = static_cast(0x80 | (0x3f & (cp >> 12))); 49 | result[0] = static_cast(0xF0 | (0x7 & (cp >> 18))); 50 | } 51 | 52 | return result; 53 | } 54 | 55 | 56 | /// Returns true if ch is a control character (in range [0,32[). 57 | static inline bool 58 | isControlCharacter(char ch) 59 | { 60 | return ch > 0 && ch <= 0x1F; 61 | } 62 | 63 | 64 | enum { 65 | /// Constant that specify the size of the buffer that must be passed to uintToString. 66 | uintToStringBufferSize = 3*sizeof(LargestUInt)+1 67 | }; 68 | 69 | // Defines a char buffer for use with uintToString(). 70 | typedef char UIntToStringBuffer[uintToStringBufferSize]; 71 | 72 | 73 | /** Converts an unsigned integer to string. 74 | * @param value Unsigned interger to convert to string 75 | * @param current Input/Output string buffer. 76 | * Must have at least uintToStringBufferSize chars free. 77 | */ 78 | static inline void 79 | uintToString( LargestUInt value, 80 | char *¤t ) 81 | { 82 | *--current = 0; 83 | do 84 | { 85 | *--current = char(value % 10) + '0'; 86 | value /= 10; 87 | } 88 | while ( value != 0 ); 89 | } 90 | 91 | } // namespace Json { 92 | 93 | #endif // LIB_JSONCPP_JSON_TOOL_H_INCLUDED 94 | -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/JsonCppLib/json_valueiterator.inl: -------------------------------------------------------------------------------- 1 | // Copyright 2007-2010 Baptiste Lepilleur 2 | // Distributed under MIT license, or public domain if desired and 3 | // recognized in your jurisdiction. 4 | // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE 5 | 6 | // included by json_value.cpp 7 | 8 | namespace Json { 9 | 10 | // ////////////////////////////////////////////////////////////////// 11 | // ////////////////////////////////////////////////////////////////// 12 | // ////////////////////////////////////////////////////////////////// 13 | // class ValueIteratorBase 14 | // ////////////////////////////////////////////////////////////////// 15 | // ////////////////////////////////////////////////////////////////// 16 | // ////////////////////////////////////////////////////////////////// 17 | 18 | ValueIteratorBase::ValueIteratorBase() 19 | #ifndef JSON_VALUE_USE_INTERNAL_MAP 20 | : current_() 21 | , isNull_( true ) 22 | { 23 | } 24 | #else 25 | : isArray_( true ) 26 | , isNull_( true ) 27 | { 28 | iterator_.array_ = ValueInternalArray::IteratorState(); 29 | } 30 | #endif 31 | 32 | 33 | #ifndef JSON_VALUE_USE_INTERNAL_MAP 34 | ValueIteratorBase::ValueIteratorBase( const Value::ObjectValues::iterator ¤t ) 35 | : current_( current ) 36 | , isNull_( false ) 37 | { 38 | } 39 | #else 40 | ValueIteratorBase::ValueIteratorBase( const ValueInternalArray::IteratorState &state ) 41 | : isArray_( true ) 42 | { 43 | iterator_.array_ = state; 44 | } 45 | 46 | 47 | ValueIteratorBase::ValueIteratorBase( const ValueInternalMap::IteratorState &state ) 48 | : isArray_( false ) 49 | { 50 | iterator_.map_ = state; 51 | } 52 | #endif 53 | 54 | Value & 55 | ValueIteratorBase::deref() const 56 | { 57 | #ifndef JSON_VALUE_USE_INTERNAL_MAP 58 | return current_->second; 59 | #else 60 | if ( isArray_ ) 61 | return ValueInternalArray::dereference( iterator_.array_ ); 62 | return ValueInternalMap::value( iterator_.map_ ); 63 | #endif 64 | } 65 | 66 | 67 | void 68 | ValueIteratorBase::increment() 69 | { 70 | #ifndef JSON_VALUE_USE_INTERNAL_MAP 71 | ++current_; 72 | #else 73 | if ( isArray_ ) 74 | ValueInternalArray::increment( iterator_.array_ ); 75 | ValueInternalMap::increment( iterator_.map_ ); 76 | #endif 77 | } 78 | 79 | 80 | void 81 | ValueIteratorBase::decrement() 82 | { 83 | #ifndef JSON_VALUE_USE_INTERNAL_MAP 84 | --current_; 85 | #else 86 | if ( isArray_ ) 87 | ValueInternalArray::decrement( iterator_.array_ ); 88 | ValueInternalMap::decrement( iterator_.map_ ); 89 | #endif 90 | } 91 | 92 | 93 | ValueIteratorBase::difference_type 94 | ValueIteratorBase::computeDistance( const SelfType &other ) const 95 | { 96 | #ifndef JSON_VALUE_USE_INTERNAL_MAP 97 | # ifdef JSON_USE_CPPTL_SMALLMAP 98 | return current_ - other.current_; 99 | # else 100 | // Iterator for null value are initialized using the default 101 | // constructor, which initialize current_ to the default 102 | // std::map::iterator. As begin() and end() are two instance 103 | // of the default std::map::iterator, they can not be compared. 104 | // To allow this, we handle this comparison specifically. 105 | if ( isNull_ && other.isNull_ ) 106 | { 107 | return 0; 108 | } 109 | 110 | 111 | // Usage of std::distance is not portable (does not compile with Sun Studio 12 RogueWave STL, 112 | // which is the one used by default). 113 | // Using a portable hand-made version for non random iterator instead: 114 | // return difference_type( std::distance( current_, other.current_ ) ); 115 | difference_type myDistance = 0; 116 | for ( Value::ObjectValues::iterator it = current_; it != other.current_; ++it ) 117 | { 118 | ++myDistance; 119 | } 120 | return myDistance; 121 | # endif 122 | #else 123 | if ( isArray_ ) 124 | return ValueInternalArray::distance( iterator_.array_, other.iterator_.array_ ); 125 | return ValueInternalMap::distance( iterator_.map_, other.iterator_.map_ ); 126 | #endif 127 | } 128 | 129 | 130 | bool 131 | ValueIteratorBase::isEqual( const SelfType &other ) const 132 | { 133 | #ifndef JSON_VALUE_USE_INTERNAL_MAP 134 | if ( isNull_ ) 135 | { 136 | return other.isNull_; 137 | } 138 | return current_ == other.current_; 139 | #else 140 | if ( isArray_ ) 141 | return ValueInternalArray::equals( iterator_.array_, other.iterator_.array_ ); 142 | return ValueInternalMap::equals( iterator_.map_, other.iterator_.map_ ); 143 | #endif 144 | } 145 | 146 | 147 | void 148 | ValueIteratorBase::copy( const SelfType &other ) 149 | { 150 | #ifndef JSON_VALUE_USE_INTERNAL_MAP 151 | current_ = other.current_; 152 | #else 153 | if ( isArray_ ) 154 | iterator_.array_ = other.iterator_.array_; 155 | iterator_.map_ = other.iterator_.map_; 156 | #endif 157 | } 158 | 159 | 160 | Value 161 | ValueIteratorBase::key() const 162 | { 163 | #ifndef JSON_VALUE_USE_INTERNAL_MAP 164 | const Value::CZString czstring = (*current_).first; 165 | if ( czstring.c_str() ) 166 | { 167 | if ( czstring.isStaticString() ) 168 | return Value( StaticString( czstring.c_str() ) ); 169 | return Value( czstring.c_str() ); 170 | } 171 | return Value( czstring.index() ); 172 | #else 173 | if ( isArray_ ) 174 | return Value( ValueInternalArray::indexOf( iterator_.array_ ) ); 175 | bool isStatic; 176 | const char *memberName = ValueInternalMap::key( iterator_.map_, isStatic ); 177 | if ( isStatic ) 178 | return Value( StaticString( memberName ) ); 179 | return Value( memberName ); 180 | #endif 181 | } 182 | 183 | 184 | UInt 185 | ValueIteratorBase::index() const 186 | { 187 | #ifndef JSON_VALUE_USE_INTERNAL_MAP 188 | const Value::CZString czstring = (*current_).first; 189 | if ( !czstring.c_str() ) 190 | return czstring.index(); 191 | return Value::UInt( -1 ); 192 | #else 193 | if ( isArray_ ) 194 | return Value::UInt( ValueInternalArray::indexOf( iterator_.array_ ) ); 195 | return Value::UInt( -1 ); 196 | #endif 197 | } 198 | 199 | 200 | const char * 201 | ValueIteratorBase::memberName() const 202 | { 203 | #ifndef JSON_VALUE_USE_INTERNAL_MAP 204 | const char *name = (*current_).first.c_str(); 205 | return name ? name : ""; 206 | #else 207 | if ( !isArray_ ) 208 | return ValueInternalMap::key( iterator_.map_ ); 209 | return ""; 210 | #endif 211 | } 212 | 213 | 214 | // ////////////////////////////////////////////////////////////////// 215 | // ////////////////////////////////////////////////////////////////// 216 | // ////////////////////////////////////////////////////////////////// 217 | // class ValueConstIterator 218 | // ////////////////////////////////////////////////////////////////// 219 | // ////////////////////////////////////////////////////////////////// 220 | // ////////////////////////////////////////////////////////////////// 221 | 222 | ValueConstIterator::ValueConstIterator() 223 | { 224 | } 225 | 226 | 227 | #ifndef JSON_VALUE_USE_INTERNAL_MAP 228 | ValueConstIterator::ValueConstIterator( const Value::ObjectValues::iterator ¤t ) 229 | : ValueIteratorBase( current ) 230 | { 231 | } 232 | #else 233 | ValueConstIterator::ValueConstIterator( const ValueInternalArray::IteratorState &state ) 234 | : ValueIteratorBase( state ) 235 | { 236 | } 237 | 238 | ValueConstIterator::ValueConstIterator( const ValueInternalMap::IteratorState &state ) 239 | : ValueIteratorBase( state ) 240 | { 241 | } 242 | #endif 243 | 244 | ValueConstIterator & 245 | ValueConstIterator::operator =( const ValueIteratorBase &other ) 246 | { 247 | copy( other ); 248 | return *this; 249 | } 250 | 251 | 252 | // ////////////////////////////////////////////////////////////////// 253 | // ////////////////////////////////////////////////////////////////// 254 | // ////////////////////////////////////////////////////////////////// 255 | // class ValueIterator 256 | // ////////////////////////////////////////////////////////////////// 257 | // ////////////////////////////////////////////////////////////////// 258 | // ////////////////////////////////////////////////////////////////// 259 | 260 | ValueIterator::ValueIterator() 261 | { 262 | } 263 | 264 | 265 | #ifndef JSON_VALUE_USE_INTERNAL_MAP 266 | ValueIterator::ValueIterator( const Value::ObjectValues::iterator ¤t ) 267 | : ValueIteratorBase( current ) 268 | { 269 | } 270 | #else 271 | ValueIterator::ValueIterator( const ValueInternalArray::IteratorState &state ) 272 | : ValueIteratorBase( state ) 273 | { 274 | } 275 | 276 | ValueIterator::ValueIterator( const ValueInternalMap::IteratorState &state ) 277 | : ValueIteratorBase( state ) 278 | { 279 | } 280 | #endif 281 | 282 | ValueIterator::ValueIterator( const ValueConstIterator &other ) 283 | : ValueIteratorBase( other ) 284 | { 285 | } 286 | 287 | ValueIterator::ValueIterator( const ValueIterator &other ) 288 | : ValueIteratorBase( other ) 289 | { 290 | } 291 | 292 | ValueIterator & 293 | ValueIterator::operator =( const SelfType &other ) 294 | { 295 | copy( other ); 296 | return *this; 297 | } 298 | 299 | } // namespace Json 300 | -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/JsonCppLib/reader.h: -------------------------------------------------------------------------------- 1 | // Copyright 2007-2010 Baptiste Lepilleur 2 | // Distributed under MIT license, or public domain if desired and 3 | // recognized in your jurisdiction. 4 | // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE 5 | 6 | #ifndef CPPTL_JSON_READER_H_INCLUDED 7 | # define CPPTL_JSON_READER_H_INCLUDED 8 | 9 | #if !defined(JSON_IS_AMALGAMATION) 10 | # include "features.h" 11 | # include "value.h" 12 | #endif // if !defined(JSON_IS_AMALGAMATION) 13 | # include 14 | # include 15 | # include 16 | 17 | namespace Json { 18 | 19 | /** \brief Unserialize a JSON document into a Value. 20 | * 21 | */ 22 | class JSON_API Reader 23 | { 24 | public: 25 | typedef char Char; 26 | typedef const Char *Location; 27 | 28 | /** \brief Constructs a Reader allowing all features 29 | * for parsing. 30 | */ 31 | Reader(); 32 | 33 | /** \brief Constructs a Reader allowing the specified feature set 34 | * for parsing. 35 | */ 36 | Reader( const Features &features ); 37 | 38 | /** \brief Read a Value from a JSON document. 39 | * \param document UTF-8 encoded string containing the document to read. 40 | * \param root [out] Contains the root value of the document if it was 41 | * successfully parsed. 42 | * \param collectComments \c true to collect comment and allow writing them back during 43 | * serialization, \c false to discard comments. 44 | * This parameter is ignored if Features::allowComments_ 45 | * is \c false. 46 | * \return \c true if the document was successfully parsed, \c false if an error occurred. 47 | */ 48 | bool parse( const std::string &document, 49 | Value &root, 50 | bool collectComments = true ); 51 | 52 | /** \brief Read a Value from a JSON document. 53 | * \param beginDoc Pointer on the beginning of the UTF-8 encoded string of the document to read. 54 | * \param endDoc Pointer on the end of the UTF-8 encoded string of the document to read. 55 | \ Must be >= beginDoc. 56 | * \param root [out] Contains the root value of the document if it was 57 | * successfully parsed. 58 | * \param collectComments \c true to collect comment and allow writing them back during 59 | * serialization, \c false to discard comments. 60 | * This parameter is ignored if Features::allowComments_ 61 | * is \c false. 62 | * \return \c true if the document was successfully parsed, \c false if an error occurred. 63 | */ 64 | bool parse( const char *beginDoc, const char *endDoc, 65 | Value &root, 66 | bool collectComments = true ); 67 | 68 | /// \brief Parse from input stream. 69 | /// \see Json::operator>>(std::istream&, Json::Value&). 70 | bool parse( std::istream &is, 71 | Value &root, 72 | bool collectComments = true ); 73 | 74 | /** \brief Returns a user friendly string that list errors in the parsed document. 75 | * \return Formatted error message with the list of errors with their location in 76 | * the parsed document. An empty string is returned if no error occurred 77 | * during parsing. 78 | * \deprecated Use getFormattedErrorMessages() instead (typo fix). 79 | */ 80 | JSONCPP_DEPRECATED("Use getFormattedErrorMessages instead") 81 | std::string getFormatedErrorMessages() const; 82 | 83 | /** \brief Returns a user friendly string that list errors in the parsed document. 84 | * \return Formatted error message with the list of errors with their location in 85 | * the parsed document. An empty string is returned if no error occurred 86 | * during parsing. 87 | */ 88 | std::string getFormattedErrorMessages() const; 89 | 90 | private: 91 | enum TokenType 92 | { 93 | tokenEndOfStream = 0, 94 | tokenObjectBegin, 95 | tokenObjectEnd, 96 | tokenArrayBegin, 97 | tokenArrayEnd, 98 | tokenString, 99 | tokenNumber, 100 | tokenTrue, 101 | tokenFalse, 102 | tokenNull, 103 | tokenArraySeparator, 104 | tokenMemberSeparator, 105 | tokenComment, 106 | tokenError 107 | }; 108 | 109 | class Token 110 | { 111 | public: 112 | TokenType type_; 113 | Location start_; 114 | Location end_; 115 | }; 116 | 117 | class ErrorInfo 118 | { 119 | public: 120 | Token token_; 121 | std::string message_; 122 | Location extra_; 123 | }; 124 | 125 | typedef std::deque Errors; 126 | 127 | bool expectToken( TokenType type, Token &token, const char *message ); 128 | bool readToken( Token &token ); 129 | void skipSpaces(); 130 | bool match( Location pattern, 131 | int patternLength ); 132 | bool readComment(); 133 | bool readCStyleComment(); 134 | bool readCppStyleComment(); 135 | bool readString(); 136 | void readNumber(); 137 | bool readValue(); 138 | bool readObject( Token &token ); 139 | bool readArray( Token &token ); 140 | bool decodeNumber( Token &token ); 141 | bool decodeString( Token &token ); 142 | bool decodeString( Token &token, std::string &decoded ); 143 | bool decodeDouble( Token &token ); 144 | bool decodeUnicodeCodePoint( Token &token, 145 | Location ¤t, 146 | Location end, 147 | unsigned int &unicode ); 148 | bool decodeUnicodeEscapeSequence( Token &token, 149 | Location ¤t, 150 | Location end, 151 | unsigned int &unicode ); 152 | bool addError( const std::string &message, 153 | Token &token, 154 | Location extra = 0 ); 155 | bool recoverFromError( TokenType skipUntilToken ); 156 | bool addErrorAndRecover( const std::string &message, 157 | Token &token, 158 | TokenType skipUntilToken ); 159 | void skipUntilSpace(); 160 | Value ¤tValue(); 161 | Char getNextChar(); 162 | void getLocationLineAndColumn( Location location, 163 | int &line, 164 | int &column ) const; 165 | std::string getLocationLineAndColumn( Location location ) const; 166 | void addComment( Location begin, 167 | Location end, 168 | CommentPlacement placement ); 169 | void skipCommentTokens( Token &token ); 170 | 171 | typedef std::stack Nodes; 172 | Nodes nodes_; 173 | Errors errors_; 174 | std::string document_; 175 | Location begin_; 176 | Location end_; 177 | Location current_; 178 | Location lastValueEnd_; 179 | Value *lastValue_; 180 | std::string commentsBefore_; 181 | Features features_; 182 | bool collectComments_; 183 | }; 184 | 185 | /** \brief Read from 'sin' into 'root'. 186 | 187 | Always keep comments from the input JSON. 188 | 189 | This can be used to read a file into a particular sub-object. 190 | For example: 191 | \code 192 | Json::Value root; 193 | cin >> root["dir"]["file"]; 194 | cout << root; 195 | \endcode 196 | Result: 197 | \verbatim 198 | { 199 | "dir": { 200 | "file": { 201 | // The input stream JSON would be nested here. 202 | } 203 | } 204 | } 205 | \endverbatim 206 | \throw std::exception on parse error. 207 | \see Json::operator<<() 208 | */ 209 | std::istream& operator>>( std::istream&, Value& ); 210 | 211 | } // namespace Json 212 | 213 | #endif // CPPTL_JSON_READER_H_INCLUDED 214 | -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/JsonCppLib/writer.h: -------------------------------------------------------------------------------- 1 | // Copyright 2007-2010 Baptiste Lepilleur 2 | // Distributed under MIT license, or public domain if desired and 3 | // recognized in your jurisdiction. 4 | // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE 5 | 6 | #ifndef JSON_WRITER_H_INCLUDED 7 | # define JSON_WRITER_H_INCLUDED 8 | 9 | #if !defined(JSON_IS_AMALGAMATION) 10 | # include "value.h" 11 | #endif // if !defined(JSON_IS_AMALGAMATION) 12 | # include 13 | # include 14 | 15 | namespace Json { 16 | 17 | class Value; 18 | 19 | /** \brief Abstract class for writers. 20 | */ 21 | class JSON_API Writer 22 | { 23 | public: 24 | virtual ~Writer(); 25 | 26 | virtual std::string write( const Value &root ) = 0; 27 | }; 28 | 29 | /** \brief Outputs a Value in JSON format without formatting (not human friendly). 30 | * 31 | * The JSON document is written in a single line. It is not intended for 'human' consumption, 32 | * but may be usefull to support feature such as RPC where bandwith is limited. 33 | * \sa Reader, Value 34 | */ 35 | class JSON_API FastWriter : public Writer 36 | { 37 | public: 38 | FastWriter(); 39 | virtual ~FastWriter(){} 40 | 41 | void enableYAMLCompatibility(); 42 | 43 | /** \brief Drop the "null" string from the writer's output for nullValues. 44 | * Strictly speaking, this is not valid JSON. But when the output is being 45 | * fed to a browser's Javascript, it makes for smaller output and the 46 | * browser can handle the output just fine. 47 | */ 48 | void dropNullPlaceholders(); 49 | 50 | public: // overridden from Writer 51 | virtual std::string write( const Value &root ); 52 | 53 | private: 54 | void writeValue( const Value &value ); 55 | 56 | std::string document_; 57 | bool yamlCompatiblityEnabled_; 58 | bool dropNullPlaceholders_; 59 | }; 60 | 61 | /** \brief Writes a Value in JSON format in a human friendly way. 62 | * 63 | * The rules for line break and indent are as follow: 64 | * - Object value: 65 | * - if empty then print {} without indent and line break 66 | * - if not empty the print '{', line break & indent, print one value per line 67 | * and then unindent and line break and print '}'. 68 | * - Array value: 69 | * - if empty then print [] without indent and line break 70 | * - if the array contains no object value, empty array or some other value types, 71 | * and all the values fit on one lines, then print the array on a single line. 72 | * - otherwise, it the values do not fit on one line, or the array contains 73 | * object or non empty array, then print one value per line. 74 | * 75 | * If the Value have comments then they are outputed according to their #CommentPlacement. 76 | * 77 | * \sa Reader, Value, Value::setComment() 78 | */ 79 | class JSON_API StyledWriter: public Writer 80 | { 81 | public: 82 | StyledWriter(); 83 | virtual ~StyledWriter(){} 84 | 85 | public: // overridden from Writer 86 | /** \brief Serialize a Value in JSON format. 87 | * \param root Value to serialize. 88 | * \return String containing the JSON document that represents the root value. 89 | */ 90 | virtual std::string write( const Value &root ); 91 | 92 | private: 93 | void writeValue( const Value &value ); 94 | void writeArrayValue( const Value &value ); 95 | bool isMultineArray( const Value &value ); 96 | void pushValue( const std::string &value ); 97 | void writeIndent(); 98 | void writeWithIndent( const std::string &value ); 99 | void indent(); 100 | void unindent(); 101 | void writeCommentBeforeValue( const Value &root ); 102 | void writeCommentAfterValueOnSameLine( const Value &root ); 103 | bool hasCommentForValue( const Value &value ); 104 | static std::string normalizeEOL( const std::string &text ); 105 | 106 | typedef std::vector ChildValues; 107 | 108 | ChildValues childValues_; 109 | std::string document_; 110 | std::string indentString_; 111 | int rightMargin_; 112 | int indentSize_; 113 | bool addChildValues_; 114 | }; 115 | 116 | /** \brief Writes a Value in JSON format in a human friendly way, 117 | to a stream rather than to a string. 118 | * 119 | * The rules for line break and indent are as follow: 120 | * - Object value: 121 | * - if empty then print {} without indent and line break 122 | * - if not empty the print '{', line break & indent, print one value per line 123 | * and then unindent and line break and print '}'. 124 | * - Array value: 125 | * - if empty then print [] without indent and line break 126 | * - if the array contains no object value, empty array or some other value types, 127 | * and all the values fit on one lines, then print the array on a single line. 128 | * - otherwise, it the values do not fit on one line, or the array contains 129 | * object or non empty array, then print one value per line. 130 | * 131 | * If the Value have comments then they are outputed according to their #CommentPlacement. 132 | * 133 | * \param indentation Each level will be indented by this amount extra. 134 | * \sa Reader, Value, Value::setComment() 135 | */ 136 | class JSON_API StyledStreamWriter 137 | { 138 | public: 139 | StyledStreamWriter( std::string indentation="\t" ); 140 | ~StyledStreamWriter(){} 141 | 142 | public: 143 | /** \brief Serialize a Value in JSON format. 144 | * \param out Stream to write to. (Can be ostringstream, e.g.) 145 | * \param root Value to serialize. 146 | * \note There is no point in deriving from Writer, since write() should not return a value. 147 | */ 148 | void write( std::ostream &out, const Value &root ); 149 | 150 | private: 151 | void writeValue( const Value &value ); 152 | void writeArrayValue( const Value &value ); 153 | bool isMultineArray( const Value &value ); 154 | void pushValue( const std::string &value ); 155 | void writeIndent(); 156 | void writeWithIndent( const std::string &value ); 157 | void indent(); 158 | void unindent(); 159 | void writeCommentBeforeValue( const Value &root ); 160 | void writeCommentAfterValueOnSameLine( const Value &root ); 161 | bool hasCommentForValue( const Value &value ); 162 | static std::string normalizeEOL( const std::string &text ); 163 | 164 | typedef std::vector ChildValues; 165 | 166 | ChildValues childValues_; 167 | std::ostream* document_; 168 | std::string indentString_; 169 | int rightMargin_; 170 | std::string indentation_; 171 | bool addChildValues_; 172 | }; 173 | 174 | # if defined(JSON_HAS_INT64) 175 | std::string JSON_API valueToString( Int value ); 176 | std::string JSON_API valueToString( UInt value ); 177 | # endif // if defined(JSON_HAS_INT64) 178 | std::string JSON_API valueToString( LargestInt value ); 179 | std::string JSON_API valueToString( LargestUInt value ); 180 | std::string JSON_API valueToString( double value ); 181 | std::string JSON_API valueToString( bool value ); 182 | std::string JSON_API valueToQuotedString( const char *value ); 183 | 184 | /// \brief Output using the StyledStreamWriter. 185 | /// \see Json::operator>>() 186 | std::ostream& operator<<( std::ostream&, const Value &root ); 187 | 188 | } // namespace Json 189 | 190 | 191 | 192 | #endif // JSON_WRITER_H_INCLUDED 193 | -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/JsonCppLib/关于JsonCpp库.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/JsonCppLib/关于JsonCpp库.txt -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/MyStdAfx.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "resource.h" 3 | #include "HttpMessenger.h" 4 | #include "Transcoding.h" 5 | #include "SystemTraySDK.h" 6 | #include "CommandHandler.h" 7 | #include "DatabaseSystemDevelopment_GUI.h" 8 | #include ".\JsonCppLib\json.h" 9 | #include "FileManager.h" 10 | #include "TaskManager.h" 11 | #include "ScreenCapture.h" 12 | #include "ScreenControl.h" 13 | #include "DirectShowVideoCapture.h" 14 | #include 15 | #include 16 | #include 17 | 18 | 19 | 20 | 21 | #if defined(_DEBUG) 22 | #pragma comment(lib,"libcmtd.lib") 23 | #pragma comment(linker,"/NODEFAULTLIB:LIBCMT") 24 | #endif 25 | 26 | using namespace std; 27 | 28 | -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/SSWRC_Windows_Client.vcxproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | 14 | {B0F04AEC-00EB-441D-B61B-931A7C0C0D18} 15 | Win32Proj 16 | SSWRC_Windows_Client 17 | 18 | 19 | 20 | Application 21 | true 22 | MultiByte 23 | 24 | 25 | Application 26 | false 27 | true 28 | MultiByte 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | true 42 | $(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include;;C:\Program Files\Parasoft\C++test for Visual Studio\9.2\engine\runtime\include;G:\Microsoft DirectX SDK (June 2010)\Include; 43 | $(VCInstallDir)lib;G:\Microsoft DirectX SDK (June 2010)\Lib\x86;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(FrameworkSDKDir)\lib 44 | 45 | 46 | false 47 | $(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include;;C:\Program Files\Parasoft\C++test for Visual Studio\9.2\engine\runtime\include;G:\Microsoft DirectX SDK (June 2010)\Include; 48 | $(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(FrameworkSDKDir)\lib;G:\Microsoft DirectX SDK (June 2010)\Lib\x86; 49 | 50 | 51 | 52 | 53 | 54 | Level3 55 | Disabled 56 | WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) 57 | MultiThreadedDebug 58 | 59 | 60 | Windows 61 | true 62 | 63 | 64 | 65 | 66 | Level3 67 | 68 | 69 | MaxSpeed 70 | true 71 | true 72 | WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) 73 | MultiThreaded 74 | 75 | 76 | Windows 77 | true 78 | true 79 | true 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/SSWRC_Windows_Client.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | {7d757c0b-aeb2-4187-b1c2-3a8e06817ae6} 18 | 19 | 20 | 21 | 22 | 源文件 23 | 24 | 25 | 源文件 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 | 52 | 源文件\JsonCppLib 53 | 54 | 55 | 源文件\JsonCppLib 56 | 57 | 58 | 源文件\JsonCppLib 59 | 60 | 61 | 62 | 63 | 头文件 64 | 65 | 66 | 头文件 67 | 68 | 69 | 头文件 70 | 71 | 72 | 头文件 73 | 74 | 75 | 头文件 76 | 77 | 78 | 头文件 79 | 80 | 81 | 头文件 82 | 83 | 84 | 头文件 85 | 86 | 87 | 头文件 88 | 89 | 90 | 头文件 91 | 92 | 93 | 头文件 94 | 95 | 96 | 头文件 97 | 98 | 99 | 源文件\JsonCppLib 100 | 101 | 102 | 源文件\JsonCppLib 103 | 104 | 105 | 源文件\JsonCppLib 106 | 107 | 108 | 源文件\JsonCppLib 109 | 110 | 111 | 源文件\JsonCppLib 112 | 113 | 114 | 源文件\JsonCppLib 115 | 116 | 117 | 源文件\JsonCppLib 118 | 119 | 120 | 源文件\JsonCppLib 121 | 122 | 123 | 源文件\JsonCppLib 124 | 125 | 126 | 源文件\JsonCppLib 127 | 128 | 129 | 源文件\JsonCppLib 130 | 131 | 132 | 头文件 133 | 134 | 135 | 136 | 137 | 源文件\JsonCppLib 138 | 139 | 140 | 源文件\JsonCppLib 141 | 142 | 143 | 源文件\JsonCppLib 144 | 145 | 146 | 147 | 148 | 资源文件 149 | 150 | 151 | -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/SSWRC_Windows_Client.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/ScreenCapture.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/ScreenCapture.cpp -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/ScreenCapture.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | #pragma comment(lib,"gdiplus") 5 | #pragma warning(disable:4244) 6 | 7 | extern CLSID codecClsid; 8 | extern Gdiplus::GdiplusStartupInput gdiplusStartupInput; 9 | extern ULONG gdiplusToken; 10 | void ScreenCapture(void *cmd); 11 | int GetCodecClsid(const WCHAR* format, CLSID* pClsid); 12 | void ConvertAndSubmitBMP(HGLOBAL *lpAddress,cmdinfo *pci); -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/ScreenControl.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/ScreenControl.cpp -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/ScreenControl.h: -------------------------------------------------------------------------------- 1 | void LeftClick(int x,int y); 2 | void LeftDoubleClick(int x,int y); 3 | void RightClick(int x,int y); 4 | 5 | void KeyDown(BYTE bVK); 6 | void KeyUp(BYTE bVK); -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/SystemTraySDK.h: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #pragma once 5 | 6 | #pragma warning(disable:4786) 7 | #include 8 | #include 9 | using namespace std; 10 | typedef vector ICONVECTOR; 11 | 12 | class CSystemTray 13 | { 14 | public: 15 | CSystemTray(); 16 | CSystemTray(HINSTANCE hInst, HWND hParent, UINT uCallbackMessage, 17 | LPCTSTR szTip, HICON icon, UINT uID, 18 | BOOL bhidden = FALSE, 19 | LPCTSTR szBalloonTip = NULL, LPCTSTR szBalloonTitle = NULL, 20 | DWORD dwBalloonIcon = NIIF_NONE, UINT uBalloonTimeout = 10); 21 | virtual ~CSystemTray(); 22 | 23 | // Operations 24 | public: 25 | BOOL Enabled() { return m_bEnabled; } 26 | BOOL Visible() { return !m_bHidden; } 27 | 28 | // Create the tray icon 29 | BOOL Create(HINSTANCE hInst, HWND hParent, UINT uCallbackMessage, LPCTSTR szTip, 30 | HICON icon, UINT uID, BOOL bHidden = FALSE, 31 | LPCTSTR szBalloonTip = NULL, LPCTSTR szBalloonTitle = NULL, 32 | DWORD dwBalloonIcon = NIIF_NONE, UINT uBalloonTimeout = 10); 33 | 34 | // Change or retrieve the Tooltip text 35 | BOOL SetTooltipText(LPCTSTR pszTooltipText); 36 | BOOL SetTooltipText(UINT nID); 37 | LPTSTR GetTooltipText() const; 38 | 39 | // Change or retrieve the icon displayed 40 | BOOL SetIcon(HICON hIcon); 41 | BOOL SetIcon(LPCTSTR lpszIconName); 42 | BOOL SetIcon(UINT nIDResource); 43 | BOOL SetStandardIcon(LPCTSTR lpIconName); 44 | BOOL SetStandardIcon(UINT nIDResource); 45 | HICON GetIcon() const; 46 | 47 | void SetFocus(); 48 | BOOL HideIcon(); 49 | BOOL ShowIcon(); 50 | BOOL AddIcon(); 51 | BOOL RemoveIcon(); 52 | BOOL MoveToRight(); 53 | 54 | BOOL ShowBalloon(LPCTSTR szText, LPCTSTR szTitle = NULL, 55 | DWORD dwIcon = NIIF_NONE, UINT uTimeout = 10); 56 | 57 | // For icon animation 58 | BOOL SetIconList(UINT uFirstIconID, UINT uLastIconID); 59 | BOOL SetIconList(HICON* pHIconList, UINT nNumIcons); 60 | BOOL Animate(UINT nDelayMilliSeconds, int nNumSeconds = -1); 61 | BOOL StepAnimation(); 62 | BOOL StopAnimation(); 63 | 64 | // Change menu default item 65 | void GetMenuDefaultItem(UINT& uItem, BOOL& bByPos); 66 | BOOL SetMenuDefaultItem(UINT uItem, BOOL bByPos); 67 | 68 | // Change or retrieve the window to send icon notification messages to 69 | BOOL SetNotificationWnd(HWND hNotifyWnd); 70 | HWND GetNotificationWnd() const; 71 | 72 | // Change or retrieve the window to send menu commands to 73 | BOOL SetTargetWnd(HWND hTargetWnd); 74 | HWND GetTargetWnd() const; 75 | 76 | // Change or retrieve notification messages sent to the window 77 | BOOL SetCallbackMessage(UINT uCallbackMessage); 78 | UINT GetCallbackMessage() const; 79 | 80 | HWND GetSafeHwnd() const { return (this)? m_hWnd : NULL; } 81 | UINT_PTR GetTimerID() const { return m_nTimerID; } 82 | 83 | // Static functions 84 | public: 85 | static void MinimiseToTray(HWND hWnd); 86 | static void MaximiseFromTray(HWND hWnd); 87 | 88 | public: 89 | // Default handler for tray notification message 90 | virtual LRESULT OnTrayNotification(WPARAM uID, LPARAM lEvent); 91 | 92 | // Static callback functions and data 93 | public: 94 | static LRESULT PASCAL WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); 95 | static CSystemTray* m_pThis; 96 | 97 | // Implementation 98 | protected: 99 | void Initialise(); 100 | void InstallIconPending(); 101 | ATOM RegisterClass(HINSTANCE hInstance); 102 | 103 | virtual void CustomizeMenu(HMENU) {} 104 | 105 | // Implementation 106 | protected: 107 | NOTIFYICONDATA m_tnd; 108 | HINSTANCE m_hInstance; 109 | HWND m_hWnd; 110 | HWND m_hTargetWnd; // Window that menu commands are sent 111 | 112 | BOOL m_bEnabled; // does O/S support tray icon? 113 | BOOL m_bHidden; // Has the icon been hidden? 114 | BOOL m_bRemoved; // Has the icon been removed? 115 | BOOL m_bShowIconPending; // Show the icon once tha taskbar has been created 116 | BOOL m_bWin2K; // Use new W2K features? 117 | 118 | ICONVECTOR m_IconList; 119 | UINT_PTR m_uIDTimer; 120 | int m_nCurrentIcon; 121 | time_t m_StartTime; 122 | int m_nAnimationPeriod; 123 | HICON m_hSavedIcon; 124 | UINT m_DefaultMenuItemID; 125 | BOOL m_DefaultMenuItemByPos; 126 | UINT m_uCreationFlags; 127 | 128 | // Static data 129 | protected: 130 | static BOOL RemoveTaskbarIcon(HWND hWnd); 131 | 132 | static const UINT_PTR m_nTimerID; 133 | static UINT m_nMaxTooltipLength; 134 | static const UINT m_nTaskbarCreatedMsg; 135 | static HWND m_hWndInvisible; 136 | 137 | static BOOL GetW2K(); 138 | 139 | static void GetTrayWndRect(LPRECT lprect); 140 | static BOOL GetDoWndAnimation(); 141 | 142 | // message map functions 143 | public: 144 | LRESULT OnTimer(UINT nIDEvent); 145 | LRESULT OnTaskbarCreated(WPARAM wParam, LPARAM lParam); 146 | 147 | LRESULT OnSettingChange(UINT uFlags, LPCTSTR lpszSection); 148 | 149 | }; 150 | -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/TaskManager.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/TaskManager.cpp -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/TaskManager.h: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #pragma comment (lib, "psapi.lib") 5 | #pragma comment (lib, "Wtsapi32.lib") 6 | 7 | void TaskList(void *cmd); 8 | void TaskOperate(void *cmd); 9 | int EnableDebugPrivilege(); 10 | void EnumProcess(Json::Value *tasks); 11 | char* GetUserNameFromUserSid(PSID pUserSid); -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/Transcoding.cpp: -------------------------------------------------------------------------------- 1 | #include "MyStdAfx.h" 2 | 3 | #define BUFF_SIZE 1024 4 | 5 | void ANSIToUTF8(const char* ansi_str,string *utf8_result) 6 | { 7 | long unicode_len ; 8 | wchar_t * unicode_buf; 9 | 10 | unicode_len = MultiByteToWideChar( CP_ACP, 0, ansi_str,-1, NULL,0 ); 11 | unicode_buf = (wchar_t *)malloc((unicode_len+1)*sizeof(wchar_t)); 12 | memset(unicode_buf,0,(unicode_len+1)*sizeof(wchar_t)); 13 | MultiByteToWideChar(CP_ACP, 0,ansi_str,-1,(LPWSTR)unicode_buf,unicode_len); 14 | 15 | long utf8_len = WideCharToMultiByte( CP_UTF8, 0,unicode_buf, -1, NULL, 0, NULL, NULL ); 16 | char *utf8_buf =(char *)malloc((utf8_len+1)*sizeof(char)); 17 | memset(utf8_buf, 0, sizeof(char) * ( utf8_len + 1 ) ); 18 | WideCharToMultiByte( CP_UTF8, 0, unicode_buf, -1, utf8_buf, utf8_len, NULL, NULL ); 19 | 20 | *utf8_result+=utf8_buf; 21 | free(unicode_buf); 22 | free(utf8_buf); 23 | } 24 | 25 | 26 | void UTF8ToANSI(const char* utf8_str,string *ansi_result) 27 | { 28 | int unicode_len ; 29 | wchar_t * unicode_buf; 30 | unicode_len = MultiByteToWideChar( CP_UTF8, 0, utf8_str,-1, NULL,0 ); 31 | unicode_buf = (wchar_t *)malloc((unicode_len+1)*sizeof(wchar_t)); 32 | memset(unicode_buf,0,(unicode_len+1)*sizeof(wchar_t)); 33 | MultiByteToWideChar(CP_UTF8, 0,utf8_str,-1,(LPWSTR)unicode_buf,unicode_len); 34 | 35 | char* ansi_buf; 36 | int ansi_len; 37 | ansi_len = WideCharToMultiByte( CP_ACP, 0, unicode_buf, -1, NULL, 0, NULL, NULL ); 38 | ansi_buf =(char *)malloc((ansi_len+1)*sizeof(char)); 39 | memset( ansi_buf, 0, sizeof(char) * ( ansi_len + 1 ) ); 40 | WideCharToMultiByte( CP_ACP, 0, unicode_buf, -1, ansi_buf, ansi_len, NULL, NULL ); 41 | 42 | *ansi_result+=ansi_buf; 43 | free(unicode_buf); 44 | free(ansi_buf); 45 | } -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/Transcoding.h: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | void ANSIToUTF8(const char* ansi_str,string *utf8_result); 4 | 5 | void UTF8ToANSI(const char* utf8_str,string *ansi_result); -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/resource.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/resource.h -------------------------------------------------------------------------------- /Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/staroffice.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/Puppet/SSWRC_Windows_Client/SSWRC_Windows_Client/staroffice.ico -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | SinSoulWebRemoteControl 2 | ======================= 3 | 4 | 在任何网络环境下通过任意设备打开网页对自己的计算设备进行远程控制和管理。 5 | 更多说明:http://www.sinsoul.com/?page_id=33 6 | 7 | -------------------------------------------------------------------------------- /SinSoul Web远程控制的部署及编译.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/SinSoul Web远程控制的部署及编译.pdf -------------------------------------------------------------------------------- /基于HTTP协议的计算机远程控制系统设计和实现.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sinsoul/SinSoulWebRemoteControl/9ca8a530dbc339504a29db0bbe87ab1b905583e1/基于HTTP协议的计算机远程控制系统设计和实现.pdf --------------------------------------------------------------------------------