Windows NT DGPENSV2LPKMN 10.0 build 14393 (Windows Server 2016) AMD64
Apache/2.4.46 (Win64) OpenSSL/1.1.1h PHP/7.3.25
: 172.16.0.66 | : 172.16.0.254
Cant Read [ /etc/named.conf ]
7.3.25
SYSTEM
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
BLACK DEFEND!
README
+ Create Folder
+ Create File
[ A ]
[ C ]
[ D ]
C: /
laragon /
bin /
git /
mingw64 /
libexec /
git-core /
[ HOME SHELL ]
Name
Size
Permission
Action
mergetools
[ DIR ]
drwxrwxrwx
Atlassian.Bitbucket.UI.Shared....
22.41
KB
-rw-rw-rw-
Atlassian.Bitbucket.dll
54.91
KB
-rw-rw-rw-
GitHub.UI.Shared.dll
29.41
KB
-rw-rw-rw-
GitHub.dll
83.91
KB
-rw-rw-rw-
GitLab.UI.Shared.dll
24.41
KB
-rw-rw-rw-
GitLab.dll
38.91
KB
-rw-rw-rw-
Microsoft.AzureRepos.dll
60.91
KB
-rw-rw-rw-
Microsoft.Identity.Client.Desk...
106.91
KB
-rw-rw-rw-
Microsoft.Identity.Client.Exte...
61.91
KB
-rw-rw-rw-
Microsoft.Identity.Client.dll
1.45
MB
-rw-rw-rw-
Microsoft.Web.WebView2.Core.dl...
217.91
KB
-rw-rw-rw-
Microsoft.Web.WebView2.WinForm...
32.91
KB
-rw-rw-rw-
Microsoft.Web.WebView2.Wpf.dll
36.91
KB
-rw-rw-rw-
Newtonsoft.Json.dll
685.91
KB
-rw-rw-rw-
System.Buffers.dll
21.41
KB
-rw-rw-rw-
System.CommandLine.dll
211.41
KB
-rw-rw-rw-
System.Memory.dll
138.91
KB
-rw-rw-rw-
System.Numerics.Vectors.dll
107.41
KB
-rw-rw-rw-
System.Runtime.CompilerService...
17.41
KB
-rw-rw-rw-
WebView2Loader.dll
108.92
KB
-rw-rw-rw-
edit.dll
53
KB
-rw-rw-rw-
gcmcore.dll
269.91
KB
-rw-rw-rw-
gcmcoreui.dll
23.41
KB
-rw-rw-rw-
gcmcoreuiwpf.dll
36.41
KB
-rw-rw-rw-
git-add--interactive
48.16
KB
-rw-rw-rw-
git-add.exe
44.55
KB
-rwxrwxrwx
git-am.exe
44.55
KB
-rwxrwxrwx
git-annotate.exe
44.55
KB
-rwxrwxrwx
git-apply.exe
44.55
KB
-rwxrwxrwx
git-archive.exe
44.55
KB
-rwxrwxrwx
git-bisect
2.09
KB
-rw-rw-rw-
git-bisect--helper.exe
44.55
KB
-rwxrwxrwx
git-blame.exe
44.55
KB
-rwxrwxrwx
git-branch.exe
44.55
KB
-rwxrwxrwx
git-bugreport.exe
44.55
KB
-rwxrwxrwx
git-bundle.exe
44.55
KB
-rwxrwxrwx
git-cat-file.exe
44.55
KB
-rwxrwxrwx
git-check-attr.exe
44.55
KB
-rwxrwxrwx
git-check-ignore.exe
44.55
KB
-rwxrwxrwx
git-check-mailmap.exe
44.55
KB
-rwxrwxrwx
git-check-ref-format.exe
44.55
KB
-rwxrwxrwx
git-checkout--worker.exe
44.55
KB
-rwxrwxrwx
git-checkout-index.exe
44.55
KB
-rwxrwxrwx
git-checkout.exe
44.55
KB
-rwxrwxrwx
git-cherry-pick.exe
44.55
KB
-rwxrwxrwx
git-cherry.exe
44.55
KB
-rwxrwxrwx
git-citool
687
B
-rw-rw-rw-
git-clean.exe
44.55
KB
-rwxrwxrwx
git-clone.exe
44.55
KB
-rwxrwxrwx
git-column.exe
44.55
KB
-rwxrwxrwx
git-commit-graph.exe
44.55
KB
-rwxrwxrwx
git-commit-tree.exe
44.55
KB
-rwxrwxrwx
git-commit.exe
44.55
KB
-rwxrwxrwx
git-config.exe
44.55
KB
-rwxrwxrwx
git-count-objects.exe
44.55
KB
-rwxrwxrwx
git-credential-cache--daemon.e...
44.55
KB
-rwxrwxrwx
git-credential-cache.exe
44.55
KB
-rwxrwxrwx
git-credential-store.exe
44.55
KB
-rwxrwxrwx
git-credential-wincred.exe
57.08
KB
-rwxrwxrwx
git-credential.exe
44.55
KB
-rwxrwxrwx
git-daemon.exe
2.05
MB
-rwxrwxrwx
git-describe.exe
44.55
KB
-rwxrwxrwx
git-diff-files.exe
44.55
KB
-rwxrwxrwx
git-diff-index.exe
44.55
KB
-rwxrwxrwx
git-diff-tree.exe
44.55
KB
-rwxrwxrwx
git-diff.exe
44.55
KB
-rwxrwxrwx
git-difftool--helper
2.44
KB
-rw-rw-rw-
git-difftool.exe
44.55
KB
-rwxrwxrwx
git-env--helper.exe
44.55
KB
-rwxrwxrwx
git-fast-export.exe
44.55
KB
-rwxrwxrwx
git-fast-import.exe
44.55
KB
-rwxrwxrwx
git-fetch-pack.exe
44.55
KB
-rwxrwxrwx
git-fetch.exe
44.55
KB
-rwxrwxrwx
git-filter-branch
15.49
KB
-rw-rw-rw-
git-fmt-merge-msg.exe
44.55
KB
-rwxrwxrwx
git-for-each-ref.exe
44.55
KB
-rwxrwxrwx
git-for-each-repo.exe
44.55
KB
-rwxrwxrwx
git-format-patch.exe
44.55
KB
-rwxrwxrwx
git-fsck-objects.exe
44.55
KB
-rwxrwxrwx
git-fsck.exe
44.55
KB
-rwxrwxrwx
git-fsmonitor--daemon.exe
44.55
KB
-rwxrwxrwx
git-gc.exe
44.55
KB
-rwxrwxrwx
git-get-tar-commit-id.exe
44.55
KB
-rwxrwxrwx
git-grep.exe
44.55
KB
-rwxrwxrwx
git-gui
687
B
-rw-rw-rw-
git-gui--askpass
1.8
KB
-rw-rw-rw-
git-gui--askyesno
1.57
KB
-rw-rw-rw-
git-gui.tcl
104.12
KB
-rw-rw-rw-
git-hash-object.exe
44.55
KB
-rwxrwxrwx
git-help.exe
44.55
KB
-rwxrwxrwx
git-hook.exe
44.55
KB
-rwxrwxrwx
git-http-backend.exe
2.05
MB
-rwxrwxrwx
git-http-fetch.exe
2.07
MB
-rwxrwxrwx
git-http-push.exe
2.08
MB
-rwxrwxrwx
git-imap-send.exe
2.08
MB
-rwxrwxrwx
git-index-pack.exe
44.55
KB
-rwxrwxrwx
git-init-db.exe
44.55
KB
-rwxrwxrwx
git-init.exe
44.55
KB
-rwxrwxrwx
git-instaweb
21.65
KB
-rw-rw-rw-
git-interpret-trailers.exe
44.55
KB
-rwxrwxrwx
git-log.exe
44.55
KB
-rwxrwxrwx
git-ls-files.exe
44.55
KB
-rwxrwxrwx
git-ls-remote.exe
44.55
KB
-rwxrwxrwx
git-ls-tree.exe
44.55
KB
-rwxrwxrwx
git-mailinfo.exe
44.55
KB
-rwxrwxrwx
git-mailsplit.exe
44.55
KB
-rwxrwxrwx
git-maintenance.exe
44.55
KB
-rwxrwxrwx
git-merge-base.exe
44.55
KB
-rwxrwxrwx
git-merge-file.exe
44.55
KB
-rwxrwxrwx
git-merge-index.exe
44.55
KB
-rwxrwxrwx
git-merge-octopus
2.42
KB
-rw-rw-rw-
git-merge-one-file
3.61
KB
-rw-rw-rw-
git-merge-ours.exe
44.55
KB
-rwxrwxrwx
git-merge-recursive.exe
44.55
KB
-rwxrwxrwx
git-merge-resolve
944
B
-rw-rw-rw-
git-merge-subtree.exe
44.55
KB
-rwxrwxrwx
git-merge-tree.exe
44.55
KB
-rwxrwxrwx
git-merge.exe
44.55
KB
-rwxrwxrwx
git-mergetool
11.29
KB
-rw-rw-rw-
git-mergetool--lib
9.69
KB
-rw-rw-rw-
git-mktag.exe
44.55
KB
-rwxrwxrwx
git-mktree.exe
44.55
KB
-rwxrwxrwx
git-multi-pack-index.exe
44.55
KB
-rwxrwxrwx
git-mv.exe
44.55
KB
-rwxrwxrwx
git-name-rev.exe
44.55
KB
-rwxrwxrwx
git-notes.exe
44.55
KB
-rwxrwxrwx
git-p4
168.59
KB
-rw-rw-rw-
git-pack-objects.exe
44.55
KB
-rwxrwxrwx
git-pack-redundant.exe
44.55
KB
-rwxrwxrwx
git-pack-refs.exe
44.55
KB
-rwxrwxrwx
git-patch-id.exe
44.55
KB
-rwxrwxrwx
git-prune-packed.exe
44.55
KB
-rwxrwxrwx
git-prune.exe
44.55
KB
-rwxrwxrwx
git-pull.exe
44.55
KB
-rwxrwxrwx
git-push.exe
44.55
KB
-rwxrwxrwx
git-quiltimport
3.61
KB
-rw-rw-rw-
git-range-diff.exe
44.55
KB
-rwxrwxrwx
git-read-tree.exe
44.55
KB
-rwxrwxrwx
git-rebase.exe
44.55
KB
-rwxrwxrwx
git-receive-pack.exe
44.55
KB
-rwxrwxrwx
git-reflog.exe
44.55
KB
-rwxrwxrwx
git-remote-ext.exe
44.55
KB
-rwxrwxrwx
git-remote-fd.exe
44.55
KB
-rwxrwxrwx
git-remote-ftp.exe
2.09
MB
-rwxrwxrwx
git-remote-ftps.exe
2.09
MB
-rwxrwxrwx
git-remote-http.exe
2.09
MB
-rwxrwxrwx
git-remote-https.exe
2.09
MB
-rwxrwxrwx
git-remote.exe
44.55
KB
-rwxrwxrwx
git-repack.exe
44.55
KB
-rwxrwxrwx
git-replace.exe
44.55
KB
-rwxrwxrwx
git-request-pull
4.03
KB
-rw-rw-rw-
git-rerere.exe
44.55
KB
-rwxrwxrwx
git-reset.exe
44.55
KB
-rwxrwxrwx
git-restore.exe
44.55
KB
-rwxrwxrwx
git-rev-list.exe
44.55
KB
-rwxrwxrwx
git-rev-parse.exe
44.55
KB
-rwxrwxrwx
git-revert.exe
44.55
KB
-rwxrwxrwx
git-rm.exe
44.55
KB
-rwxrwxrwx
git-send-email
62.44
KB
-rw-rw-rw-
git-send-pack.exe
44.55
KB
-rwxrwxrwx
git-sh-i18n
1.67
KB
-rw-rw-rw-
git-sh-i18n--envsubst.exe
2.04
MB
-rwxrwxrwx
git-sh-setup
8.92
KB
-rw-rw-rw-
git-shortlog.exe
44.55
KB
-rwxrwxrwx
git-show-branch.exe
44.55
KB
-rwxrwxrwx
git-show-index.exe
44.55
KB
-rwxrwxrwx
git-show-ref.exe
44.55
KB
-rwxrwxrwx
git-show.exe
44.55
KB
-rwxrwxrwx
git-sparse-checkout.exe
44.55
KB
-rwxrwxrwx
git-stage.exe
44.55
KB
-rwxrwxrwx
git-stash.exe
44.55
KB
-rwxrwxrwx
git-status.exe
44.55
KB
-rwxrwxrwx
git-stripspace.exe
44.55
KB
-rwxrwxrwx
git-submodule
11.02
KB
-rw-rw-rw-
git-submodule--helper.exe
44.55
KB
-rwxrwxrwx
git-subtree
23.01
KB
-rw-rw-rw-
git-svn
64.26
KB
-rw-rw-rw-
git-switch.exe
44.55
KB
-rwxrwxrwx
git-symbolic-ref.exe
44.55
KB
-rwxrwxrwx
git-tag.exe
44.55
KB
-rwxrwxrwx
git-unpack-file.exe
44.55
KB
-rwxrwxrwx
git-unpack-objects.exe
44.55
KB
-rwxrwxrwx
git-update
218
B
-rw-rw-rw-
git-update-index.exe
44.55
KB
-rwxrwxrwx
git-update-ref.exe
44.55
KB
-rwxrwxrwx
git-update-server-info.exe
44.55
KB
-rwxrwxrwx
git-upload-archive.exe
44.55
KB
-rwxrwxrwx
git-upload-pack.exe
44.55
KB
-rwxrwxrwx
git-var.exe
44.55
KB
-rwxrwxrwx
git-verify-commit.exe
44.55
KB
-rwxrwxrwx
git-verify-pack.exe
44.55
KB
-rwxrwxrwx
git-verify-tag.exe
44.55
KB
-rwxrwxrwx
git-web--browse
4.3
KB
-rw-rw-rw-
git-whatchanged.exe
44.55
KB
-rwxrwxrwx
git-worktree.exe
44.55
KB
-rwxrwxrwx
git-write-tree.exe
44.55
KB
-rwxrwxrwx
git.exe
3.43
MB
-rwxrwxrwx
headless-git.exe
32.05
KB
-rwxrwxrwx
libbrotlicommon.dll
140.04
KB
-rw-rw-rw-
libbrotlidec.dll
50.64
KB
-rw-rw-rw-
libbz2-1.dll
96.82
KB
-rw-rw-rw-
libcares-5.dll
122.1
KB
-rw-rw-rw-
libcrypto-1_1-x64.dll
2.67
MB
-rw-rw-rw-
libcurl-4.dll
664.15
KB
-rw-rw-rw-
libexpat-1.dll
198.82
KB
-rw-rw-rw-
libffi-8.dll
31.14
KB
-rw-rw-rw-
libgcc_s_seh-1.dll
105.17
KB
-rw-rw-rw-
libgmp-10.dll
641.51
KB
-rw-rw-rw-
libhogweed-6.dll
268.31
KB
-rw-rw-rw-
libiconv-2.dll
1.06
MB
-rw-rw-rw-
libidn2-0.dll
230.63
KB
-rw-rw-rw-
libintl-8.dll
133.52
KB
-rw-rw-rw-
libjansson-4.dll
77.08
KB
-rw-rw-rw-
libjemalloc.dll
674.46
KB
-rw-rw-rw-
liblzma-5.dll
147.65
KB
-rw-rw-rw-
libnettle-8.dll
308.12
KB
-rw-rw-rw-
libnghttp2-14.dll
185.59
KB
-rw-rw-rw-
libp11-kit-0.dll
1.03
MB
-rw-rw-rw-
libpcre-1.dll
275.09
KB
-rw-rw-rw-
libpcre2-8-0.dll
624.85
KB
-rw-rw-rw-
libpcreposix-0.dll
40.77
KB
-rw-rw-rw-
libssh2-1.dll
263.79
KB
-rw-rw-rw-
libssl-1_1-x64.dll
539.65
KB
-rw-rw-rw-
libssp-0.dll
42.41
KB
-rw-rw-rw-
libstdc++-6.dll
1.93
MB
-rw-rw-rw-
libtasn1-6.dll
101.04
KB
-rw-rw-rw-
libtre-5.dll
90.15
KB
-rw-rw-rw-
libunistring-2.dll
1.84
MB
-rw-rw-rw-
libwinpthread-1.dll
56.75
KB
-rw-rw-rw-
libxml2-2.dll
1.28
MB
-rw-rw-rw-
libzstd.dll
810.89
KB
-rw-rw-rw-
tcl86.dll
1.6
MB
-rw-rw-rw-
tk86.dll
1.44
MB
-rw-rw-rw-
zlib1.dll
116.24
KB
-rw-rw-rw-
Delete
Unzip
Zip
${this.title}
Close
Code Editor : git-instaweb
#!/bin/sh # # Copyright (c) 2006 Eric Wong # PERL='/usr/bin/perl' OPTIONS_KEEPDASHDASH= OPTIONS_STUCKLONG= OPTIONS_SPEC="\ git instaweb [options] (--start | --stop | --restart) -- l,local only bind on 127.0.0.1 p,port= the port to bind to d,httpd= the command to launch b,browser= the browser to launch m,module-path= the module path (only needed for apache2) Action stop stop the web server start start the web server restart restart the web server " SUBDIRECTORY_OK=Yes . git-sh-setup fqgitdir="$GIT_DIR" local="$(git config --bool --get instaweb.local)" httpd="$(git config --get instaweb.httpd)" root="$(git config --get instaweb.gitwebdir)" port=$(git config --get instaweb.port) module_path="$(git config --get instaweb.modulepath)" action="browse" conf="$GIT_DIR/gitweb/httpd.conf" # Defaults: # if installed, it doesn't need further configuration (module_path) test -z "$httpd" && httpd='lighttpd -f' # Default is /mingw64/share/gitweb test -z "$root" && root='/mingw64/share/gitweb' # any untaken local port will do... test -z "$port" && port=1234 resolve_full_httpd () { case "$httpd" in *apache2*|*lighttpd*|*httpd*) # yes, *httpd* covers *lighttpd* above, but it is there for clarity # ensure that the apache2/lighttpd command ends with "-f" if ! echo "$httpd" | grep -- '-f *$' >/dev/null 2>&1 then httpd="$httpd -f" fi ;; *plackup*) # server is started by running via generated gitweb.psgi in $fqgitdir/gitweb full_httpd="$fqgitdir/gitweb/gitweb.psgi" httpd_only="${httpd%% *}" # cut on first space return ;; *webrick*) # server is started by running via generated webrick.rb in # $fqgitdir/gitweb full_httpd="$fqgitdir/gitweb/webrick.rb" httpd_only="${httpd%% *}" # cut on first space return ;; *python*) # server is started by running via generated gitweb.py in # $fqgitdir/gitweb full_httpd="$fqgitdir/gitweb/gitweb.py" httpd_only="${httpd%% *}" # cut on first space return ;; esac httpd_only="$(echo $httpd | cut -f1 -d' ')" if case "$httpd_only" in /*) : ;; *) which $httpd_only >/dev/null 2>&1;; esac then full_httpd=$httpd else # many httpds are installed in /usr/sbin or /usr/local/sbin # these days and those are not in most users $PATHs # in addition, we may have generated a server script # in $fqgitdir/gitweb. for i in /usr/local/sbin /usr/sbin "$root" "$fqgitdir/gitweb" do if test -x "$i/$httpd_only" then full_httpd=$i/$httpd return fi done echo >&2 "$httpd_only not found. Install $httpd_only or use" \ "--httpd to specify another httpd daemon." exit 1 fi } start_httpd () { if test -f "$fqgitdir/pid"; then say "Instance already running. Restarting..." stop_httpd fi # here $httpd should have a meaningful value resolve_full_httpd mkdir -p "$fqgitdir/gitweb/$httpd_only" conf="$fqgitdir/gitweb/$httpd_only.conf" # generate correct config file if it doesn't exist test -f "$conf" || configure_httpd test -f "$fqgitdir/gitweb/gitweb_config.perl" || gitweb_conf # don't quote $full_httpd, there can be arguments to it (-f) case "$httpd" in *mongoose*|*plackup*|*python*) #These servers don't have a daemon mode so we'll have to fork it $full_httpd "$conf" & #Save the pid before doing anything else (we'll print it later) pid=$! if test $? != 0; then echo "Could not execute http daemon $httpd." exit 1 fi cat > "$fqgitdir/pid" <<EOF $pid EOF ;; *) $full_httpd "$conf" if test $? != 0; then echo "Could not execute http daemon $httpd." exit 1 fi ;; esac } stop_httpd () { test -f "$fqgitdir/pid" && kill $(cat "$fqgitdir/pid") rm -f "$fqgitdir/pid" } httpd_is_ready () { "$PERL" -MIO::Socket::INET -e " local \$| = 1; # turn on autoflush exit if (IO::Socket::INET->new('127.0.0.1:$port')); print 'Waiting for \'$httpd\' to start ..'; do { print '.'; sleep(1); } until (IO::Socket::INET->new('127.0.0.1:$port')); print qq! (done)\n!; " } while test $# != 0 do case "$1" in --stop|stop) action="stop" ;; --start|start) action="start" ;; --restart|restart) action="restart" ;; -l|--local) local=true ;; -d|--httpd) shift httpd="$1" ;; -b|--browser) shift browser="$1" ;; -p|--port) shift port="$1" ;; -m|--module-path) shift module_path="$1" ;; --) ;; *) usage ;; esac shift done mkdir -p "$GIT_DIR/gitweb/tmp" GIT_EXEC_PATH="$(git --exec-path)" GIT_DIR="$fqgitdir" GITWEB_CONFIG="$fqgitdir/gitweb/gitweb_config.perl" export GIT_EXEC_PATH GIT_DIR GITWEB_CONFIG webrick_conf () { # webrick seems to have no way of passing arbitrary environment # variables to the underlying CGI executable, so we wrap the # actual gitweb.cgi using a shell script to force it wrapper="$fqgitdir/gitweb/$httpd/wrapper.sh" cat > "$wrapper" <<EOF #!/bin/sh # we use this shell script wrapper around the real gitweb.cgi since # there appears to be no other way to pass arbitrary environment variables # into the CGI process GIT_EXEC_PATH=$GIT_EXEC_PATH GIT_DIR=$GIT_DIR GITWEB_CONFIG=$GITWEB_CONFIG export GIT_EXEC_PATH GIT_DIR GITWEB_CONFIG exec $root/gitweb.cgi EOF chmod +x "$wrapper" # This assumes _ruby_ is in the user's $PATH. that's _one_ # portable way to run ruby, which could be installed anywhere, really. # generate a standalone server script in $fqgitdir/gitweb. cat >"$fqgitdir/gitweb/$httpd.rb" <<EOF #!/usr/bin/env ruby require 'webrick' require 'logger' options = { :Port => $port, :DocumentRoot => "$root", :Logger => Logger.new('$fqgitdir/gitweb/error.log'), :AccessLog => [ [ Logger.new('$fqgitdir/gitweb/access.log'), WEBrick::AccessLog::COMBINED_LOG_FORMAT ] ], :DirectoryIndex => ["gitweb.cgi"], :CGIInterpreter => "$wrapper", :StartCallback => lambda do File.open("$fqgitdir/pid", "w") { |f| f.puts Process.pid } end, :ServerType => WEBrick::Daemon, } options[:BindAddress] = '127.0.0.1' if "$local" == "true" server = WEBrick::HTTPServer.new(options) ['INT', 'TERM'].each do |signal| trap(signal) {server.shutdown} end server.start EOF chmod +x "$fqgitdir/gitweb/$httpd.rb" # configuration is embedded in server script file, webrick.rb rm -f "$conf" } lighttpd_conf () { cat > "$conf" <<EOF server.document-root = "$root" server.port = $port server.modules = ( "mod_setenv", "mod_cgi" ) server.indexfiles = ( "gitweb.cgi" ) server.pid-file = "$fqgitdir/pid" server.errorlog = "$fqgitdir/gitweb/$httpd_only/error.log" # to enable, add "mod_access", "mod_accesslog" to server.modules # variable above and uncomment this #accesslog.filename = "$fqgitdir/gitweb/$httpd_only/access.log" setenv.add-environment = ( "PATH" => env.PATH, "GITWEB_CONFIG" => env.GITWEB_CONFIG ) cgi.assign = ( ".cgi" => "" ) # mimetype mapping mimetype.assign = ( ".pdf" => "application/pdf", ".sig" => "application/pgp-signature", ".spl" => "application/futuresplash", ".class" => "application/octet-stream", ".ps" => "application/postscript", ".torrent" => "application/x-bittorrent", ".dvi" => "application/x-dvi", ".gz" => "application/x-gzip", ".pac" => "application/x-ns-proxy-autoconfig", ".swf" => "application/x-shockwave-flash", ".tar.gz" => "application/x-tgz", ".tgz" => "application/x-tgz", ".tar" => "application/x-tar", ".zip" => "application/zip", ".mp3" => "audio/mpeg", ".m3u" => "audio/x-mpegurl", ".wma" => "audio/x-ms-wma", ".wax" => "audio/x-ms-wax", ".ogg" => "application/ogg", ".wav" => "audio/x-wav", ".gif" => "image/gif", ".jpg" => "image/jpeg", ".jpeg" => "image/jpeg", ".png" => "image/png", ".xbm" => "image/x-xbitmap", ".xpm" => "image/x-xpixmap", ".xwd" => "image/x-xwindowdump", ".css" => "text/css", ".html" => "text/html", ".htm" => "text/html", ".js" => "text/javascript", ".asc" => "text/plain", ".c" => "text/plain", ".cpp" => "text/plain", ".log" => "text/plain", ".conf" => "text/plain", ".text" => "text/plain", ".txt" => "text/plain", ".dtd" => "text/xml", ".xml" => "text/xml", ".mpeg" => "video/mpeg", ".mpg" => "video/mpeg", ".mov" => "video/quicktime", ".qt" => "video/quicktime", ".avi" => "video/x-msvideo", ".asf" => "video/x-ms-asf", ".asx" => "video/x-ms-asf", ".wmv" => "video/x-ms-wmv", ".bz2" => "application/x-bzip", ".tbz" => "application/x-bzip-compressed-tar", ".tar.bz2" => "application/x-bzip-compressed-tar", "" => "text/plain" ) EOF test x"$local" = xtrue && echo 'server.bind = "127.0.0.1"' >> "$conf" } apache2_conf () { for candidate in \ /etc/httpd \ /usr/lib/apache2 \ /usr/lib/httpd ; do if test -d "$candidate/modules" then module_path="$candidate/modules" break fi done bind= test x"$local" = xtrue && bind='127.0.0.1:' echo 'text/css css' > "$fqgitdir/mime.types" cat > "$conf" <<EOF ServerName "git-instaweb" ServerRoot "$root" DocumentRoot "$root" ErrorLog "$fqgitdir/gitweb/$httpd_only/error.log" CustomLog "$fqgitdir/gitweb/$httpd_only/access.log" combined PidFile "$fqgitdir/pid" Listen $bind$port EOF for mod in mpm_event mpm_prefork mpm_worker do if test -e $module_path/mod_${mod}.so then echo "LoadModule ${mod}_module " \ "$module_path/mod_${mod}.so" >> "$conf" # only one mpm module permitted break fi done for mod in mime dir env log_config authz_core unixd do if test -e $module_path/mod_${mod}.so then echo "LoadModule ${mod}_module " \ "$module_path/mod_${mod}.so" >> "$conf" fi done cat >> "$conf" <<EOF TypesConfig "$fqgitdir/mime.types" DirectoryIndex gitweb.cgi EOF if test -f "$module_path/mod_perl.so" then # favor mod_perl if available cat >> "$conf" <<EOF LoadModule perl_module $module_path/mod_perl.so PerlPassEnv GIT_DIR PerlPassEnv GIT_EXEC_PATH PerlPassEnv GITWEB_CONFIG <Location /gitweb.cgi> SetHandler perl-script PerlResponseHandler ModPerl::Registry PerlOptions +ParseHeaders Options +ExecCGI </Location> EOF else # plain-old CGI resolve_full_httpd list_mods=$(echo "$full_httpd" | sed 's/-f$/-l/') $list_mods | grep 'mod_cgi\.c' >/dev/null 2>&1 || \ if test -f "$module_path/mod_cgi.so" then echo "LoadModule cgi_module $module_path/mod_cgi.so" >> "$conf" else $list_mods | grep 'mod_cgid\.c' >/dev/null 2>&1 || \ if test -f "$module_path/mod_cgid.so" then echo "LoadModule cgid_module $module_path/mod_cgid.so" \ >> "$conf" else echo "You have no CGI support!" exit 2 fi echo "ScriptSock logs/gitweb.sock" >> "$conf" fi cat >> "$conf" <<EOF PassEnv GIT_DIR PassEnv GIT_EXEC_PATH PassEnv GITWEB_CONFIG AddHandler cgi-script .cgi <Location /gitweb.cgi> Options +ExecCGI </Location> EOF fi } mongoose_conf() { cat > "$conf" <<EOF # Mongoose web server configuration file. # Lines starting with '#' and empty lines are ignored. # For detailed description of every option, visit # http://code.google.com/p/mongoose/wiki/MongooseManual root $root ports $port index_files gitweb.cgi #ssl_cert $fqgitdir/gitweb/ssl_cert.pem error_log $fqgitdir/gitweb/$httpd_only/error.log access_log $fqgitdir/gitweb/$httpd_only/access.log #cgi setup cgi_env PATH=$PATH,GIT_DIR=$GIT_DIR,GIT_EXEC_PATH=$GIT_EXEC_PATH,GITWEB_CONFIG=$GITWEB_CONFIG cgi_interp $PERL cgi_ext cgi,pl # mimetype mapping mime_types .gz=application/x-gzip,.tar.gz=application/x-tgz,.tgz=application/x-tgz,.tar=application/x-tar,.zip=application/zip,.gif=image/gif,.jpg=image/jpeg,.jpeg=image/jpeg,.png=image/png,.css=text/css,.html=text/html,.htm=text/html,.js=text/javascript,.c=text/plain,.cpp=text/plain,.log=text/plain,.conf=text/plain,.text=text/plain,.txt=text/plain,.dtd=text/xml,.bz2=application/x-bzip,.tbz=application/x-bzip-compressed-tar,.tar.bz2=application/x-bzip-compressed-tar EOF } plackup_conf () { # generate a standalone 'plackup' server script in $fqgitdir/gitweb # with embedded configuration; it does not use "$conf" file cat > "$fqgitdir/gitweb/gitweb.psgi" <<EOF #!$PERL # gitweb - simple web interface to track changes in git repositories # PSGI wrapper and server starter (see http://plackperl.org) use strict; use IO::Handle; use Plack::MIME; use Plack::Builder; use Plack::App::WrapCGI; use CGI::Emulate::PSGI 0.07; # minimum version required to work with gitweb # mimetype mapping (from lighttpd_conf) Plack::MIME->add_type( ".pdf" => "application/pdf", ".sig" => "application/pgp-signature", ".spl" => "application/futuresplash", ".class" => "application/octet-stream", ".ps" => "application/postscript", ".torrent" => "application/x-bittorrent", ".dvi" => "application/x-dvi", ".gz" => "application/x-gzip", ".pac" => "application/x-ns-proxy-autoconfig", ".swf" => "application/x-shockwave-flash", ".tar.gz" => "application/x-tgz", ".tgz" => "application/x-tgz", ".tar" => "application/x-tar", ".zip" => "application/zip", ".mp3" => "audio/mpeg", ".m3u" => "audio/x-mpegurl", ".wma" => "audio/x-ms-wma", ".wax" => "audio/x-ms-wax", ".ogg" => "application/ogg", ".wav" => "audio/x-wav", ".gif" => "image/gif", ".jpg" => "image/jpeg", ".jpeg" => "image/jpeg", ".png" => "image/png", ".xbm" => "image/x-xbitmap", ".xpm" => "image/x-xpixmap", ".xwd" => "image/x-xwindowdump", ".css" => "text/css", ".html" => "text/html", ".htm" => "text/html", ".js" => "text/javascript", ".asc" => "text/plain", ".c" => "text/plain", ".cpp" => "text/plain", ".log" => "text/plain", ".conf" => "text/plain", ".text" => "text/plain", ".txt" => "text/plain", ".dtd" => "text/xml", ".xml" => "text/xml", ".mpeg" => "video/mpeg", ".mpg" => "video/mpeg", ".mov" => "video/quicktime", ".qt" => "video/quicktime", ".avi" => "video/x-msvideo", ".asf" => "video/x-ms-asf", ".asx" => "video/x-ms-asf", ".wmv" => "video/x-ms-wmv", ".bz2" => "application/x-bzip", ".tbz" => "application/x-bzip-compressed-tar", ".tar.bz2" => "application/x-bzip-compressed-tar", "" => "text/plain" ); my \$app = builder { # to be able to override \$SIG{__WARN__} to log build time warnings use CGI::Carp; # it sets \$SIG{__WARN__} itself my \$logdir = "$fqgitdir/gitweb/$httpd_only"; open my \$access_log_fh, '>>', "\$logdir/access.log" or die "Couldn't open access log '\$logdir/access.log': \$!"; open my \$error_log_fh, '>>', "\$logdir/error.log" or die "Couldn't open error log '\$logdir/error.log': \$!"; \$access_log_fh->autoflush(1); \$error_log_fh->autoflush(1); # redirect build time warnings to error.log \$SIG{'__WARN__'} = sub { my \$msg = shift; # timestamp warning like in CGI::Carp::warn my \$stamp = CGI::Carp::stamp(); \$msg =~ s/^/\$stamp/gm; print \$error_log_fh \$msg; }; # write errors to error.log, access to access.log enable 'AccessLog', format => "combined", logger => sub { print \$access_log_fh @_; }; enable sub { my \$app = shift; sub { my \$env = shift; \$env->{'psgi.errors'} = \$error_log_fh; \$app->(\$env); } }; # gitweb currently doesn't work with $SIG{CHLD} set to 'IGNORE', # because it uses 'close $fd or die...' on piped filehandle $fh # (which causes the parent process to wait for child to finish). enable_if { \$SIG{'CHLD'} eq 'IGNORE' } sub { my \$app = shift; sub { my \$env = shift; local \$SIG{'CHLD'} = 'DEFAULT'; local \$SIG{'CLD'} = 'DEFAULT'; \$app->(\$env); } }; # serve static files, i.e. stylesheet, images, script enable 'Static', path => sub { m!\.(js|css|png)\$! && s!^/gitweb/!! }, root => "$root/", encoding => 'utf-8'; # encoding for 'text/plain' files # convert CGI application to PSGI app Plack::App::WrapCGI->new(script => "$root/gitweb.cgi")->to_app; }; # make it runnable as standalone app, # like it would be run via 'plackup' utility if (caller) { return \$app; } else { require Plack::Runner; my \$runner = Plack::Runner->new(); \$runner->parse_options(qw(--env deployment --port $port), "$local" ? qw(--host 127.0.0.1) : ()); \$runner->run(\$app); } __END__ EOF chmod a+x "$fqgitdir/gitweb/gitweb.psgi" # configuration is embedded in server script file, gitweb.psgi rm -f "$conf" } python_conf() { # Python's builtin http.server and its CGI support is very limited. # CGI handler is capable of running CGI script only from inside a directory. # Trying to set cgi_directories=["/"] will add double slash to SCRIPT_NAME # and that in turn breaks gitweb's relative link generation. # create a simple web root where $fqgitdir/gitweb/$httpd_only is our root mkdir -p "$fqgitdir/gitweb/$httpd_only/cgi-bin" # Python http.server follows the symlinks ln -sf "$root/gitweb.cgi" "$fqgitdir/gitweb/$httpd_only/cgi-bin/gitweb.cgi" ln -sf "$root/static" "$fqgitdir/gitweb/$httpd_only/" # generate a standalone 'python http.server' script in $fqgitdir/gitweb # This asumes that python is in user's $PATH # This script is Python 2 and 3 compatible cat > "$fqgitdir/gitweb/gitweb.py" <<EOF #!/usr/bin/env python import os import sys # Open log file in line buffering mode accesslogfile = open("$fqgitdir/gitweb/access.log", 'a', buffering=1) errorlogfile = open("$fqgitdir/gitweb/error.log", 'a', buffering=1) # and replace our stdout and stderr with log files # also do a lowlevel duplicate of the logfile file descriptors so that # our CGI child process writes any stderr warning also to the log file _orig_stdout_fd = sys.stdout.fileno() sys.stdout.close() os.dup2(accesslogfile.fileno(), _orig_stdout_fd) sys.stdout = accesslogfile _orig_stderr_fd = sys.stderr.fileno() sys.stderr.close() os.dup2(errorlogfile.fileno(), _orig_stderr_fd) sys.stderr = errorlogfile from functools import partial if sys.version_info < (3, 0): # Python 2 from CGIHTTPServer import CGIHTTPRequestHandler from BaseHTTPServer import HTTPServer as ServerClass else: # Python 3 from http.server import CGIHTTPRequestHandler from http.server import HTTPServer as ServerClass # Those environment variables will be passed to the cgi script os.environ.update({ "GIT_EXEC_PATH": "$GIT_EXEC_PATH", "GIT_DIR": "$GIT_DIR", "GITWEB_CONFIG": "$GITWEB_CONFIG" }) class GitWebRequestHandler(CGIHTTPRequestHandler): def log_message(self, format, *args): # Write access logs to stdout sys.stdout.write("%s - - [%s] %s\n" % (self.address_string(), self.log_date_time_string(), format%args)) def do_HEAD(self): self.redirect_path() CGIHTTPRequestHandler.do_HEAD(self) def do_GET(self): if self.path == "/": self.send_response(303, "See Other") self.send_header("Location", "/cgi-bin/gitweb.cgi") self.end_headers() return self.redirect_path() CGIHTTPRequestHandler.do_GET(self) def do_POST(self): self.redirect_path() CGIHTTPRequestHandler.do_POST(self) # rewrite path of every request that is not gitweb.cgi to out of cgi-bin def redirect_path(self): if not self.path.startswith("/cgi-bin/gitweb.cgi"): self.path = self.path.replace("/cgi-bin/", "/") # gitweb.cgi is the only thing that is ever going to be run here. # Ignore everything else def is_cgi(self): result = False if self.path.startswith('/cgi-bin/gitweb.cgi'): result = CGIHTTPRequestHandler.is_cgi(self) return result bind = "127.0.0.1" if "$local" == "true": bind = "0.0.0.0" # Set our http root directory # This is a work around for a missing directory argument in older Python versions # as this was added to SimpleHTTPRequestHandler in Python 3.7 os.chdir("$fqgitdir/gitweb/$httpd_only/") GitWebRequestHandler.protocol_version = "HTTP/1.0" httpd = ServerClass((bind, $port), GitWebRequestHandler) sa = httpd.socket.getsockname() print("Serving HTTP on", sa[0], "port", sa[1], "...") httpd.serve_forever() EOF chmod a+x "$fqgitdir/gitweb/gitweb.py" } gitweb_conf() { cat > "$fqgitdir/gitweb/gitweb_config.perl" <<EOF #!/usr/bin/perl our \$projectroot = "$(dirname "$fqgitdir")"; our \$git_temp = "$fqgitdir/gitweb/tmp"; our \$projects_list = \$projectroot; \$feature{'remote_heads'}{'default'} = [1]; EOF } configure_httpd() { case "$httpd" in *lighttpd*) lighttpd_conf ;; *apache2*|*httpd*) apache2_conf ;; webrick) webrick_conf ;; *mongoose*) mongoose_conf ;; *plackup*) plackup_conf ;; *python*) python_conf ;; *) echo "Unknown httpd specified: $httpd" exit 1 ;; esac } case "$action" in stop) stop_httpd exit 0 ;; start) start_httpd exit 0 ;; restart) stop_httpd start_httpd exit 0 ;; esac gitweb_conf resolve_full_httpd mkdir -p "$fqgitdir/gitweb/$httpd_only" conf="$fqgitdir/gitweb/$httpd_only.conf" configure_httpd start_httpd url=http://127.0.0.1:$port if test -n "$browser"; then httpd_is_ready && git web--browse -b "$browser" $url || echo $url else httpd_is_ready && git web--browse -c "instaweb.browser" $url || echo $url fi
Close