{"id":21195287,"url":"https://github.com/szapp/lanseeker","last_synced_at":"2026-04-28T19:33:51.251Z","repository":{"id":202345203,"uuid":"64068860","full_name":"szapp/LANSeeker","owner":"szapp","description":"Software installation over LAN via a light weight web interface.","archived":false,"fork":false,"pushed_at":"2016-07-24T14:23:06.000Z","size":1277,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-21T14:14:44.294Z","etag":null,"topics":["lan-party","local-area-network","setup-server","webapp"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/szapp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2016-07-24T14:20:35.000Z","updated_at":"2024-01-31T10:25:33.000Z","dependencies_parsed_at":null,"dependency_job_id":"199890f2-9c4f-43f1-94f7-b2e39534efce","html_url":"https://github.com/szapp/LANSeeker","commit_stats":null,"previous_names":["szapp/lanseeker"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/szapp%2FLANSeeker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/szapp%2FLANSeeker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/szapp%2FLANSeeker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/szapp%2FLANSeeker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/szapp","download_url":"https://codeload.github.com/szapp/LANSeeker/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243652602,"owners_count":20325590,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["lan-party","local-area-network","setup-server","webapp"],"created_at":"2024-11-20T19:27:01.338Z","updated_at":"2025-12-29T19:03:22.461Z","avatar_url":"https://github.com/szapp.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"Web-based LAN Seeker\n====================\n\nSoftware installation over LAN-connection via a light weight web interface.\n\nThis interface was created for user-friendly software distribution in a local network. Previous versions consisted of\nexecutables on each client machine with hard coded network paths the software setups. When the host (distributing\nmachine) changed, all executables on all client machines had to be updated. This iteration of the **LAN Seeker** is\nweb-based and does not require software on the client machines\u003csup\u003e[1](#footnoteClientSoftware)\u003c/sup\u003e. It may be freely\nmodified and updated without requiring software upgrades on the client machines.\n\n**Note:** This software was built with the installation of games in mind. That is why classes are named and documented\naccordingly. Nevertheless, it is not limited to games but can be used with any kind of software.\n\n**Note:** Although, this framework may be hosted on a computer running any kind of operating system. the client machines\nare assumed to be running windows.\n\nPreview\n-------\n\n*Click for animated preview*\n\n[![Click for animated preview](http://i.imgur.com/7x7mcOC.jpg)](http://i.imgur.com/j5pM8RE.gif)\n\n**Note:** The front-end UI language is German. All code documentation and log entries are in English, however. Changing\nthe UI language should be not too much effort, since there is not much text output in the front-end. There is no\ndedicated language file.\n\nInstallation\n------------\n\nThis software neither supplies a dedicated back-end nor is an automatic database configuration included. Software like\n`phpMyAdmin` should suffice as back-end. To run this software, set up an SQL database of the following structure.\nAdditionally the [config.php](af/inc/config.php) needs to be adjusted with database connection details.\n\n```\nDatabase\n |\n +-- distributors               Network machines from which the software may be installed\n |    |\n |    +-- id           int        ID\n |    +-- name         varchar    Description of distributor PC\n |    +-- drive        varchar    Network name of PC (e.g. \\\\PC-ONE\\)\n |    +-- path         varchar    Path where the software is found\n |    +-- utilization  float      Preference order (higher numbers are preferred, zero is ignored)\n |\n +-- games                      Table of software that is available\n |    |\n |    +-- id           int        ID\n |    +-- name         varchar    Display name of the software\n |    +-- cover        varchar    Cover image (png-file of the dimensions 93x302 pixels)\n |    +-- exe          varchar    Executable on the distributor machine (should be the setup)\n |    +-- order        decimal    Ordering: sorted left-to-right display position, small-to-large numbers\n |\n +-- profiles                   Different lists of download options\n |    |\n |    +-- id           int        ID\n |    +-- name         varchar    Descriptor (only visible in back-end)\n |    +-- games        varchar    IDs of the games-table separated with commas (specify all for all)\n |    +-- active       tinyint    Boolean, whether active or not\n |\n +-- protocols                  The web-protocol which is used to start an executable from the browser\n |    |\n |    +-- protocol     varchar    Browser appurl, initialize to: appurl\n |    +-- versionlist  varchar    List of available versions, initialize to: |7.0.0.1|7.0.0.2|7.0.0.3|\n |\n +-- protocal_appurl            Log of web-protocols installed on client machines. Related to appurl\n      |\n      +-- client       varchar    Lower case network name\n      +-- version      varchar    Installed version of appurl\n\n```\n\nHere is SQL code to create the necessary table structure (along with some data).\n\n``` SQL\nSET SQL_MODE = \"NO_AUTO_VALUE_ON_ZERO\";\nSET time_zone = \"+00:00\";\nCREATE TABLE IF NOT EXISTS `distributors` (`id` int(11) NOT NULL, `name` varchar(64) NOT NULL, `drive` varchar(32) NOT NULL, `path` varchar(1248) NOT NULL, `utilization` float NOT NULL) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;\nCREATE TABLE IF NOT EXISTS `games` (`id` int(10) unsigned NOT NULL, `name` varchar(64) NOT NULL, `cover` varchar(64) NOT NULL, `exe` varchar(64) NOT NULL, `order` decimal(10,0) unsigned NOT NULL) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;\nCREATE TABLE IF NOT EXISTS `profiles` (`id` int(10) unsigned NOT NULL, `name` varchar(64) NOT NULL, `games` varchar(265) NOT NULL, `active` tinyint(1) NOT NULL DEFAULT '0') ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;\nCREATE TABLE IF NOT EXISTS `protocols` (`protocol` varchar(32) NOT NULL, `versionlist` varchar(128) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;\nINSERT INTO `protocols` (`protocol`, `versionlist`) VALUES ('appurl', '|7.0.0.1|7.0.0.2|7.0.0.3|');\nCREATE TABLE IF NOT EXISTS `protocol_appurl` (`client` varchar(64) NOT NULL, `version` varchar(32) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;\nALTER TABLE `distributors` ADD PRIMARY KEY (`id`);\nALTER TABLE `games` ADD PRIMARY KEY (`id`);\nALTER TABLE `profiles` ADD PRIMARY KEY (`id`);\nALTER TABLE `protocols` ADD UNIQUE KEY `protocol` (`protocol`);\nALTER TABLE `protocol_appurl` ADD UNIQUE KEY `client` (`client`);\nALTER TABLE `distributors` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=1;\nALTER TABLE `games` MODIFY `id` int(10) unsigned NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=1;\nALTER TABLE `profiles` MODIFY `id` int(10) unsigned NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=1;\n```\n\nAppURL\n------\n\nIn order to launch executables from the web-interface, a **URL protocol** is necessary.\n\u003e \"You can type appurl://path/to/myapp.exe in the address bar of your browser to launch the application\"\n\nInstalling the **LAN Seeker**-specific URL protocol is done easily from the web-interface with a dedicated setup. This\nsetup is writing to windows registry and adds browser specific rules. The dedicated setup is marked with a version\nnumber and its installation is logged for each client. This way the web-interface will inform the client of a new\nversion and will prompt for install.\n\nThe setup is written in [AutoHotkey](http://autohotkey.com) and the host-name should be adjusted in\n[`appurl_inst.ahk`](af/dev/appurl_inst.ahk).\n\n```AutoHotkey\n      ...\n  16  Progress, 10\n  17\n\u003e 18  host := \"PC-HOST\" ; Enter host here: Network-name of the machine running the web-interface\n  19  Author := \"szapp\"\n  20  Version = 7.0.0.3\n      ...\n```\n\n**Warning** `Installing an URL protocol introduces high security risks. Use with caution!`\n\n**Build**\n\nAfter adjusting the host-name as indicated above, [`appurl_inst.ahk`](af/dev/appurl_inst.ahk) needs to be compiled. The\ncompiled [`appurl.exe`](af/exec) must be in the same directory as [`appurl_inst.ahk`](af/dev/appurl_inst.ahk) for the\ncompiler to find and pack it into the resulting setup.\n\nWhen altering the code in [`appurl.ahk`](af/dev/appurl.ahk), both [`appurl.ahk`](af/dev/appurl.ahk) **and**\n[`appurl_inst.ahk`](af/dev/appurl_inst.ahk) need to be re-compiled.\n\nFurther information\n-------------------\n\nThe initial goal of the LAN Seeker was to offer a stand-alone tool aiming to be as lightweight as possible.\nWith increasing demand of complex features, it grew into a more rigid framework and eventually ran into implementation\nconstraints.\nWhile the previous `LAN Seeker` and `Game Installer` were two distinct tools mostly working individually from different\nmachines, the **LAN Seeker** now combines and centralizes them into one web interfaces. By keeping the code and\ndistribution on one machine, the tool stays flexible and up-to-date without any client downloads or compatibility\nissues. With access to one network node only, the distribution of software can be administrated more efficiently.\nA web-based interface is even more lightweight than the initial version, though adding a lot more features. The greatest\nof which is its flexibility.\n\nAcknowledgements\n----------------\n\nUsed scripts\n\njQuery\n- **[jQuery v1.10.2](http://jquery.com/)** authored by *[jQuery Foundation, Inc.](https://jquery.org/)*\n- **[jScrollPane](http://jscrollpane.kelvinluck.com/)** authored by *[Kelvin Luck](http://www.kelvinluck.com/)*\n- **[Mouse Wheel Data Collector](https://github.com/brandonaaron/mousewheel-data-collector)** authored by\n*[Brandon Aaron](http://brandon.aaron.sh)*\n\nAutoHotkey\n- **[Application URL](http://www.autohotkey.com/forum/viewtopic.php?t=76997)** authored by *Jeff \"jsherk\" Sherk*\n\n-------------\n\n\u003ca name=\"footnoteClientSoftware\"\u003e1\u003c/a\u003e: Actually there software is installed on the client machine (appurl protocol for\nstarting executables from browser). However, it can be easily maintained and updated through the web-interface.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fszapp%2Flanseeker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fszapp%2Flanseeker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fszapp%2Flanseeker/lists"}