github.com/status-im/status-go@v1.1.0/_assets/systemd/bootnode/Makefile (about)

     1  export GIT_ROOT := $(shell git rev-parse --show-toplevel)
     2  # Useful for showing enode address
     3  PUBLIC_IP ?= $(shell curl -s https://ipecho.net/plain)
     4  
     5  RED := $(shell tput -Txterm setaf 1)
     6  GRN := $(shell tput -Txterm setaf 2)
     7  YLW := $(shell tput -Txterm setaf 3)
     8  RST := $(shell tput -Txterm sgr0)
     9  BLD := $(shell tput bold)
    10  
    11  # by default we run the service as user
    12  SCTL_OPTS   := --user
    13  JRNL_OPTS   := --user-unit
    14  SERVICE_DIR := $(HOME)/.config/systemd/user/
    15  # with sudo it will run as a system service
    16  ifeq ($(USER), root)
    17  SCTL_OPTS   := 
    18  JRNL_OPTS   := --unit
    19  SERVICE_DIR := /etc/systemd/system/
    20  endif
    21  
    22  # Settings
    23  export SERVICE_NAME ?= status-go-bootnode
    24  export SERVICE_PATH ?= $(SERVICE_DIR)/$(SERVICE_NAME).service
    25  export DATA_PATH    ?= /var/tmp/$(SERVICE_NAME)
    26  export KEY_PATH     ?= $(DATA_PATH)/nodekey
    27  export ADDR_PATH    ?= $(DATA_PATH)/nodeaddr
    28  export LOG_LEVEL    ?= 3
    29  export LISTEN_PORT  ?= 30301
    30  
    31  # Info
    32  STATUS     = $(shell systemctl $(SCTL_OPTS) is-active $(SERVICE_NAME))
    33  NODE_ADDR  = $(shell cat $(ADDR_PATH))
    34  ENODE_ADDR = enode://$(NODE_ADDR)@$(PUBLIC_IP):$(LISTEN_PORT)
    35  
    36  define INFO_MSG
    37   * $(GRN)Your bootnode is listening on:$(RST) $(BLD)$(PUBLIC_IP):$(LISTEN_PORT)$(RST)
    38   * $(GRN)Your enode address is:$(RST)
    39  $(ENODE_ADDR)
    40  
    41  $(YLW)Make sure that IP and TCP port are available from the internet!$(RST)
    42  endef
    43  export INFO_MSG
    44  
    45  all: checks build genkey save-address service enable restart info
    46  
    47  clean: stop disable rm-service forget 
    48  
    49  checks:
    50  # this setup wont work without an os with systemd
    51  ifeq (, $(shell which systemctl))
    52  	$(error $(RED)Your system does not have systemd$(RST))
    53  endif
    54  # if the service is already up just show some info
    55  ifeq (active, $(STATUS))
    56  	$(info $(INFO_MSG))
    57  	$(error $(YLW)Service already started$(RST))
    58  endif
    59  
    60  genkey: $(DATA_PATH)
    61  	@$(GIT_ROOT)/build/bin/bootnode -genkey=$(KEY_PATH)
    62  
    63  address: save-address
    64  	echo "$(NODE_ADDR)"
    65  
    66  save-address:
    67  	@$(GIT_ROOT)/build/bin/bootnode -nodekey=$(KEY_PATH) -writeaddress > $(ADDR_PATH)
    68  
    69  status:
    70  	systemctl $(SCTL_OPTS) status --no-pager $(SERVICE_NAME)
    71  
    72  logs:
    73  	journalctl $(JRNL_OPTS) statusd
    74  
    75  info:
    76  	@echo "$$INFO_MSG"
    77  
    78  enode:
    79  	@echo "$(ENODE)"
    80  
    81  enable:
    82  	@echo " * $(GRN)Enabling '$(SERVICE_NAME)' service...$(RST)"
    83  	systemctl $(SCTL_OPTS) enable $(SERVICE_NAME)
    84  
    85  disable:
    86  	@echo " * $(YLW)Disabling '$(SERVICE_NAME)' service...$(RST)"
    87  	systemctl $(SCTL_OPTS) disable "${SERVICE_NAME}"
    88  
    89  start:
    90  	@echo " * $(GRN)Starting '$(SERVICE_NAME)' service...$(RST)"
    91  	systemctl $(SCTL_OPTS) start $(SERVICE_NAME)
    92  
    93  restart:
    94  	@echo " * $(YLW)Restarting '$(SERVICE_NAME)' service...$(RST)"
    95  	systemctl $(SCTL_OPTS) restart $(SERVICE_NAME)
    96  
    97  stop:
    98  	@echo " * $(YLW)Stopping '$(SERVICE_NAME)' service...$(RST)"
    99  	systemctl $(SCTL_OPTS) stop "${SERVICE_NAME}"
   100  
   101  forget:
   102  	@echo " * $(YLW)Stopping '$(SERVICE_NAME)' service...$(RST)"
   103  	systemctl $(SCTL_OPTS) daemon-reload
   104  	systemctl $(SCTL_OPTS) reset-failed
   105  
   106  $(GIT_ROOT)/build/bin/bootnode:
   107  	@echo " * $(GRN)Building bootnode binary...$(RST)"
   108  	@cd "$(GIT_ROOT)" && make bootnode
   109  
   110  build: $(GIT_ROOT)/build/bin/bootnode
   111  .PHONY: build
   112  
   113  $(SERVICE_DIR):
   114  	echo $(SERVICE_DIR)
   115  	@mkdir -p $(SERVICE_DIR)
   116  
   117  service: $(SERVICE_DIR)
   118  	@echo " * $(GRN)Generating '$(SERVICE_NAME)' service...$(RST)"
   119  	@envsubst < ./service.template > $(SERVICE_PATH)
   120  
   121  $(DATA_PATH):
   122  	@mkdir -p $(DATA_PATH)
   123  
   124  rm-service:
   125  	rm -f $(SERVICE_PATH)