# You can get the latest commit using this commands: # git pull # git log --oneline | head -n 1 | awk '{print $1}' %define gitv ffa6674 %define webd %{_var}/www %define gopath $(pwd)/go %define domain echoip.dsteiner.ch %define protocol https %define port 443 Name: echoip Version: 1.0 Release: 3.%{gitv}%{?dist} Summary: A simple service for looking up your IP address. %define debug_package %{nil} Group: Applications/System License: BSD 3-Clause license URL: https://github.com/mpolden/%{name} Source0: %name-%{version}.%{gitv}.tgz Source1: %name.service Source2: %name-index.html Source3: %name.cfg BuildRequires: golang #BuildRequires: go-compilers-golang-compiler BuildRequires: go-srpm-macros Requires: httpd-filesystem Requires: geoipupdate-cron Requires: GeoIP %description A simple service for looking up your IP address. This is the code that powers https://echoip.daniel-steiner.org. %prep %setup -q -n %{name}-%{version}.%{gitv} %build mkdir go bin # save system PATH environment: SAVEPATH=$PATH # prepare go environment: export GOPATH=%{gopath} #export GOPATH=$(go env GOPATH) # it's the same like above line! export PATH=$PATH:%{gopath}/bin # build go project: go get ./... # bash -c "diff --line-format='%L' <(echo -n) <(gofmt -d -s .)" # test fails with exit code 1! # go test ./... go install ./... # restore system PATH environment: export PATH=$SAVEPATH %install # modifying index.html file for required settings: sed -i -e 's|.. .Host ..|%{protocol}://%{domain}|g' html/index.html sed -i -e 's/8080/%{port}/g' html/index.html install -d -m 0770 %{buildroot}%{_rundir}/%{name} install -D -m 0775 %{gopath}/bin/echoip %{buildroot}%{_bindir}/%{name} install -D -m 0644 html/index.html %{buildroot}%{webd}/%{name}/orig-index.html install -D -m 0644 %{SOURCE2} %{buildroot}%{webd}/%{name}/index.html sed -i -e 's|.. .Host ..|%{protocol}://%{domain}|g' %{buildroot}%{webd}/%{name}/index.html sed -i -e 's/8080/%{port}/g' %{buildroot}%{webd}/%{name}/index.html install -D -m 0644 %{SOURCE1} %{buildroot}%{_unitdir}/%{name}.service install -D -m 0644 %{SOURCE3} %{buildroot}%{_sysconfdir}/sysconfig/%{name} %clean [ "%{buildroot}" != "/" ] && [ -d "%{buildroot}" ] && rm -rf %{buildroot} [ "%{_builddir}" != "/" ] && [ -d "%{_builddir}" ] && rm -rf %{_builddir}/* %pre getent group %{name} > /dev/null || groupadd -r %{name} getent passwd %{name} > /dev/null || \ useradd -m -g %{name} -s /bin/bash \ -c "Echo IP account" %{name} %post %if 0%{?using_systemd} %if 0%{?systemd_macro_scriptlet} if [ $1 -eq 1 ]; then %systemd_post %{name}.service firewall-cmd --permanent --add-port=8080/tcp fi %firewalld_reload %endif %endif %preun %if 0%{?using_systemd} if [ $1 -eq 0 ]; then systectl stop %{name}.service fi %endif %postun %if 0%{?using_systemd} %if 0%{?systemd_macro_scriptlet} if [ $1 -eq 1 ]; then %systemd_postun_with_restart %{name}.service firewall-cmd --permanent --delete-port=8080/tcp %firewalld_reload fi %endif %endif %files %defattr(-,root,root,-) %doc README.md %license LICENSE %{_bindir}/%{name} %config(noreplace) %{_sysconfdir}/sysconfig/%{name} %dir %attr(-,%{name},%{name}) %{webd}/%{name} %attr(-,%{name},%{name}) %{webd}/%{name}/index.html %attr(-,%{name},%{name}) %{webd}/%{name}/orig-index.html %{_unitdir}/%{name}.service %dir %attr(-,%{name},%{name}) %{_rundir}/%{name} %changelog * Tue May 24 2022 Daniel Steiner - First build on Fedora 35. - Domain pattern changed and upated to latest git version. * Fri May 11 2021 Daniel Steiner - First build on Fedora 34. * Sat Oct 31 2019 Daniel Steiner - First build on Fedora 33. * Sun Jan 20 2019 Daniel Steiner - All options are now in sysconfig file. * Sun Jan 20 2019 Daniel Steiner - More flexible systemd config added. * Sat Jan 19 2019 Daniel Steiner - First build for Fedora 29 using git master commit 58fd8a6.